|
SMSLib 3.5.3 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.smslib.Service
public class Service
This is main library class. Your primary interface with SMSLib is via methods defined in this class.
| Nested Class Summary | |
|---|---|
static class |
Service.ServiceStatus
|
| Field Summary | |
|---|---|
Settings |
S
|
| Method Summary | |
|---|---|
void |
addGateway(AGateway gateway)
Adds a gateway to the list of gateways managed by the Service class. |
boolean |
addToGroup(java.lang.String groupName,
java.lang.String number)
Adds a number to the specified group. |
boolean |
checkInGroup(java.lang.String groupName,
java.lang.String number)
Checks if a number belongs to a group. |
boolean |
createGroup(java.lang.String groupName)
Creates a destination group. |
boolean |
deleteMessage(InboundMessage msg)
Deletes the specified message. |
java.util.ArrayList<java.lang.String> |
expandGroup(java.lang.String groupName)
Expands a group to its recipient numbers. |
AGateway |
findGateway(java.lang.String gatewayId)
Find and return a gateway by its ID. |
ICallNotification |
getCallNotification()
Returns the call notification method. |
AGateway |
getGateway(java.lang.String gatewayId)
Returns the gateway object based on the provided id. |
java.util.Collection<AGateway> |
getGateways()
Returns the list of defined gateways. |
AGateway[] |
getGatewaysNET()
.NET bridge method. |
IGatewayStatusNotification |
getGatewayStatusNotification()
Returns the gateway status notification method. |
int |
getInboundMessageCount()
Returns the total number of messages received by all gateways. |
int |
getInboundMessageCount(AGateway gateway)
Returns the total number of messages received by the specified gateway. |
int |
getInboundMessageCount(java.lang.String gatewayId)
Returns the total number of messages received by the specified gateway. |
IInboundMessageNotification |
getInboundMessageNotification()
Returns the notification method set for inbound messages. |
static Service |
getInstance()
|
KeyManager |
getKeyManager()
|
LoadBalancer |
getLoadBalancer()
Returns the active Load Balancer class. |
org.smslib.notify.NotifyQueueManager |
getNotifyQueueManager()
|
IOrphanedMessageNotification |
getOrphanedMessageNotification()
Returns the orphaned message notification method, or null if no-one is set. |
int |
getOutboundMessageCount()
Returns the total number of messages sent via all gateways. |
int |
getOutboundMessageCount(AGateway gateway)
Returns the total number of messages sent via the specified gateway. |
int |
getOutboundMessageCount(java.lang.String gatewayId)
Returns the total number of messages sent via the specified gateway. |
IOutboundMessageNotification |
getOutboundMessageNotification()
Returns the notification method set for outbound messages. |
AbstractQueueManager |
getQueueManager()
|
IQueueSendingNotification |
getQueueSendingNotification()
Returns the notification method set for Queue sending operation. |
Router |
getRouter()
Returns the active Router class. |
Service.ServiceStatus |
getServiceStatus()
|
Settings |
getSettings()
Returns the Settings object, holding SMSLib run-time values. |
long |
getStartMillis()
|
IUSSDNotification |
getUSSDNotification()
Returns the USSD notification method. |
static void |
main(java.lang.String[] args)
|
boolean |
queueMessage(OutboundMessage msg)
Queues a message for sending. |
boolean |
queueMessage(OutboundMessage msg,
java.lang.String gatewayId)
Queues a message for sending from the specific gateway. |
boolean |
queueMessageAt(OutboundMessage msg,
java.util.Date at)
Queues a message for sending at a specific time. |
boolean |
queueMessageAt(OutboundMessage msg,
long delayMillis)
Queues a message for sending with a specific delay. |
int |
queueMessages(java.util.Collection<OutboundMessage> msgList)
Queues a list of messages for sending. |
int |
queueMessages(java.util.Collection<OutboundMessage> msgList,
java.lang.String gatewayId)
Queues a list of messages for sending from the specific gateway. |
int |
queueMessages(OutboundMessage[] msgArray)
.NET bridge method. |
int |
queueMessages(OutboundMessage[] msgArray,
java.lang.String gatewayId)
.NET bridge method. |
InboundMessage |
readMessage(java.lang.String gatewayId,
java.lang.String memLoc,
int memIndex)
Reads a specific gateway for a message matching the given Memory Location and Memory Index. |
int |
readMessages(java.util.Collection<InboundMessage> msgList,
InboundMessage.MessageClasses msgClass)
Reads inbound messages from ALL gateways with the Inbound attribute set. |
int |
readMessages(java.util.Collection<InboundMessage> msgList,
InboundMessage.MessageClasses msgClass,
AGateway gateway)
Reads inbound messages from the SPECIFIC gateway. |
int |
readMessages(java.util.Collection<InboundMessage> msgList,
InboundMessage.MessageClasses msgClass,
java.lang.String gatewayId)
Reads inbound messages from the SPECIFIC gateway. |
InboundMessage[] |
readMessages(InboundMessage.MessageClasses msgClass)
.NET bridge method. |
InboundMessage[] |
readMessages(InboundMessage.MessageClasses msgClass,
AGateway gateway)
.NET bridge method. |
InboundMessage[] |
readMessages(InboundMessage.MessageClasses msgClass,
java.lang.String gatewayId)
.NET bridge method. |
int |
readPhonebook(Phonebook phonebook,
java.lang.String gatewayId)
Loads the phonebook from the specified gateway into a Phonebook class. |
boolean |
removeFromGroup(java.lang.String groupName,
java.lang.String number)
Removes a number from the specified group. |
boolean |
removeGateway(AGateway gateway)
Removes a gateway from the list of gateways managed by the Service class. |
boolean |
removeGroup(java.lang.String groupName)
Removes a group. |
boolean |
removeMessage(OutboundMessage msg)
Attempts to remove the specified message from the background sending queue. |
boolean |
removeMessage(java.lang.String messageId)
Attempts to remove the message with the specified ID from the background queue. |
AGateway |
routeMessage(OutboundMessage msg)
Find best suitable gateway to send specific message through Router and Load Balancer. |
boolean |
sendMessage(OutboundMessage msg)
Sends a single message. |
boolean |
sendMessage(OutboundMessage msg,
java.lang.String gatewayId)
Sends a single message from the specified gateway. |
int |
sendMessages(java.util.Collection<OutboundMessage> msgList)
Sends a list of messages. |
int |
sendMessages(java.util.Collection<OutboundMessage> msgList,
java.lang.String gatewayId)
Sends a list of messages from the specified gateway. |
int |
sendMessages(OutboundMessage[] msgArray)
.NET bridge method. |
int |
sendMessages(OutboundMessage[] msgArray,
java.lang.String gatewayId)
.NET bridge method. |
boolean |
sendUSSDRequest(USSDRequest request,
java.lang.String gatewayId)
|
void |
setCallNotification(ICallNotification callNotification)
Sets the call notification method. |
void |
setGatewayStatusNotification(IGatewayStatusNotification gatewayStatusNotification)
Sets the gateway status notification method. |
void |
setInboundMessageNotification(IInboundMessageNotification inboundNotification)
Sets the inbound message notification method. |
void |
setLoadBalancer(LoadBalancer loadBalancer)
Sets a new Load Balancer. |
void |
setOrphanedMessageNotification(IOrphanedMessageNotification orphanedMessageNotification)
Sets the orphaned message notification. |
void |
setOutboundMessageNotification(IOutboundMessageNotification outboundNotification)
Sets the outbound notification method. |
boolean |
setQueueManager(AbstractQueueManager myQueueManager)
|
void |
setQueueSendingNotification(IQueueSendingNotification queueSendingNotification)
Sets the Queue sending notification method. |
void |
setRouter(Router router)
Sets a new Router. |
void |
setUSSDNotification(IUSSDNotification ussdNotification)
Sets the USSD notification method. |
void |
startService()
Initializes and starts the SMSLib service. |
void |
startService(boolean startAllGateways)
Initializes and starts the SMSLib service. |
void |
stopService()
Stops all gateways - does not remove them from Service's internal list. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public Settings S
| Method Detail |
|---|
public static Service getInstance()
public void addGateway(AGateway gateway) throws GatewayException
gateway
- The gateway to be added.
GatewayException
- You tried to add a gateway while the Service is started.removeGateway(AGateway)
,
getGateways()
public boolean removeGateway(AGateway gateway) throws GatewayException
gateway
- The gateway to be removed.
GatewayException
- You tried to remove a gateway while the Service is started.addGateway(AGateway)
,
getGateways()
public AGateway getGateway(java.lang.String gatewayId)
gatewayId
- The gateway id to search for.
public void startService() throws SMSLibException, TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
SMSLibException
- No Gateways are defined.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.stopService()
public void startService(boolean startAllGateways) throws SMSLibException, TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
startAllGateways
- True if all gateways should be started, False if some gateways
are allowed to fail.
SMSLibException
- No Gateways are defined.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.stopService()
public void stopService() throws SMSLibException, TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
SMSLibException
- No Gateways are defined.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.startService()
public int readMessages(java.util.Collection<InboundMessage> msgList, InboundMessage.MessageClasses msgClass) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msgList
- A (probably empty) list that will be populated with Inbound
messages read.msgClass
- Filtering: Class of messages that need to be read.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.InboundMessage.MessageClasses
public InboundMessage[] readMessages(InboundMessage.MessageClasses msgClass) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
TimeoutException
GatewayException
java.io.IOException
java.lang.InterruptedException
public int readMessages(java.util.Collection<InboundMessage> msgList, InboundMessage.MessageClasses msgClass, java.lang.String gatewayId) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msgList
- A (probably empty) list that will be populated with Inbound
messages read.msgClass
- Filtering: Class of messages that need to be read.gatewayId
- The identifier of the gateway from which to read messages.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.InboundMessage.MessageClasses
,
AGateway
public InboundMessage[] readMessages(InboundMessage.MessageClasses msgClass, java.lang.String gatewayId) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
TimeoutException
GatewayException
java.io.IOException
java.lang.InterruptedException
public int readMessages(java.util.Collection<InboundMessage> msgList, InboundMessage.MessageClasses msgClass, AGateway gateway) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msgList
- A (probably empty) list that will be populated with inbound
messages read.msgClass
- Filtering: Class of messages that need to be read.gateway
- The gateway object from which to read messages.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.InboundMessage.MessageClasses
,
AGateway
public InboundMessage[] readMessages(InboundMessage.MessageClasses msgClass, AGateway gateway) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
TimeoutException
GatewayException
java.io.IOException
java.lang.InterruptedException
public InboundMessage readMessage(java.lang.String gatewayId, java.lang.String memLoc, int memIndex) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
This is a "dummy" approach. It does not implement the CGMR command, rather it reads all messages and searches for a match.
gatewayId
- The Gateway ID of the gateway to read from.memLoc
- The memory location string.memIndex
- The memory index.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.public boolean sendMessage(OutboundMessage msg) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msg
- An OutboundMessage object.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.queueMessage(OutboundMessage)
public boolean sendMessage(OutboundMessage msg, java.lang.String gatewayId) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msg
- An OutboundMessage object.gatewayId
- The id of the gateway that will be used for sending.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.sendMessage(OutboundMessage)
public int sendMessages(java.util.Collection<OutboundMessage> msgList) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msgList
- A list of OutboundMessage objects.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.sendMessage(OutboundMessage)
public int sendMessages(OutboundMessage[] msgArray) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
TimeoutException
GatewayException
java.io.IOException
java.lang.InterruptedException
public int sendMessages(java.util.Collection<OutboundMessage> msgList, java.lang.String gatewayId) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msgList
- A list of OutboundMessage objects.gatewayId
- The id of the gateway that will be used for sending.
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.sendMessage(OutboundMessage)
public int sendMessages(OutboundMessage[] msgArray, java.lang.String gatewayId) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
TimeoutException
GatewayException
java.io.IOException
java.lang.InterruptedException
public boolean queueMessage(OutboundMessage msg)
msg
- Message to be sent
queueMessageAt(OutboundMessage, Date)
,
sendMessage(OutboundMessage)
,
IOutboundMessageNotification
public boolean queueMessage(OutboundMessage msg, java.lang.String gatewayId)
msg
- A OutboundMessage object.gatewayId
- The id of the gateway that will be used for sending.
queueMessage(OutboundMessage)
public int queueMessages(java.util.Collection<OutboundMessage> msgList)
msgList
- A list of OutboundMessage objects.
queueMessage(OutboundMessage)
public int queueMessages(OutboundMessage[] msgArray)
public int queueMessages(java.util.Collection<OutboundMessage> msgList, java.lang.String gatewayId)
msgList
- A list of OutboundMessage objects.gatewayId
- The id of the gateway to be used for sending.
queueMessage(OutboundMessage)
public int queueMessages(OutboundMessage[] msgArray, java.lang.String gatewayId)
public boolean queueMessageAt(OutboundMessage msg, java.util.Date at)
msg
- The message to be sent.at
- The date/time that the message should be sent at.
queueMessageAt(OutboundMessage, long)
,
queueMessage(OutboundMessage)
public boolean queueMessageAt(OutboundMessage msg, long delayMillis)
msg
- The message to be sent.delayMillis
- The delay (ms) that the message should be sent after.
queueMessageAt(OutboundMessage, Date)
,
queueMessage(OutboundMessage)
public boolean removeMessage(OutboundMessage msg)
msg
- The outbound message to be removed.
public boolean removeMessage(java.lang.String messageId)
messageId
- The ID of the message to be removed.
public boolean deleteMessage(InboundMessage msg) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
msg
- The message to be deleted. It must be a valid InboundMessage
object. DO NOT PASS invalid objects to the method!
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.public boolean sendUSSDRequest(USSDRequest request, java.lang.String gatewayId) throws GatewayException, TimeoutException, java.io.IOException, java.lang.InterruptedException
GatewayException
TimeoutException
java.io.IOException
java.lang.InterruptedException
public int readPhonebook(Phonebook phonebook, java.lang.String gatewayId) throws TimeoutException, GatewayException, java.io.IOException, java.lang.InterruptedException
phonebook
- An already instantiated, empty Phonebook class.gatewayId
- The gateway id for which the phonebook should be loaded
TimeoutException
- The gateway did not respond in a timely manner.
GatewayException
- A Gateway error occurred.
java.io.IOException
- An IO error occurred.
java.lang.InterruptedException
- The call was interrupted.public int getInboundMessageCount(java.lang.String gatewayId)
gatewayId
- The id of the gateway to query.
public int getInboundMessageCount(AGateway gateway)
gateway
- The AGateway object to query.
public int getOutboundMessageCount(java.lang.String gatewayId)
gatewayId
- The id of the gateway to query.
public int getOutboundMessageCount(AGateway gateway)
gateway
- The AGateway object to query.
public int getInboundMessageCount()
public int getOutboundMessageCount()
public AGateway findGateway(java.lang.String gatewayId)
gatewayId
- The ID of gateway to find.
public java.util.Collection<AGateway> getGateways()
public AGateway[] getGatewaysNET()
public LoadBalancer getLoadBalancer()
LoadBalancer
public void setLoadBalancer(LoadBalancer loadBalancer)
loadBalancer
- The Load Balancer that will take effect.LoadBalancer
public Router getRouter()
Router
public void setRouter(Router router)
router
- The Router that will take effect.Router
public AGateway routeMessage(OutboundMessage msg)
msg
- Message to be routed
null
if no suitable gateway
is found.public IInboundMessageNotification getInboundMessageNotification()
setInboundMessageNotification(IInboundMessageNotification)
public void setInboundMessageNotification(IInboundMessageNotification inboundNotification)
inboundNotification
- The method to be called.getInboundMessageNotification()
,
IInboundMessageNotification
public IOutboundMessageNotification getOutboundMessageNotification()
setOutboundMessageNotification(IOutboundMessageNotification)
public void setOutboundMessageNotification(IOutboundMessageNotification outboundNotification)
outboundNotification
- getOutboundMessageNotification()
,
IOutboundMessageNotification
public ICallNotification getCallNotification()
setCallNotification(ICallNotification)
public void setCallNotification(ICallNotification callNotification)
callNotification
- getCallNotification()
,
ICallNotification
public IUSSDNotification getUSSDNotification()
setUSSDNotification(IUSSDNotification)
public void setUSSDNotification(IUSSDNotification ussdNotification)
ussdNotification
- getUSSDNotification()
,
IUSSDNotification
public IGatewayStatusNotification getGatewayStatusNotification()
setGatewayStatusNotification(IGatewayStatusNotification)
public void setGatewayStatusNotification(IGatewayStatusNotification gatewayStatusNotification)
gatewayStatusNotification
- getGatewayStatusNotification()
,
IGatewayStatusNotification
public IQueueSendingNotification getQueueSendingNotification()
setQueueSendingNotification(IQueueSendingNotification)
public void setQueueSendingNotification(IQueueSendingNotification queueSendingNotification)
queueSendingNotification
- getQueueSendingNotification()
,
IQueueSendingNotification
public IOrphanedMessageNotification getOrphanedMessageNotification()
setOrphanedMessageNotification(IOrphanedMessageNotification)
public void setOrphanedMessageNotification(IOrphanedMessageNotification orphanedMessageNotification)
orphanedMessageNotification
- getOrphanedMessageNotification()
public long getStartMillis()
public Service.ServiceStatus getServiceStatus()
public Settings getSettings()
Settings
public boolean createGroup(java.lang.String groupName)
groupName
- The group name.
removeGroup(String)
public boolean removeGroup(java.lang.String groupName)
groupName
- The name of the group to be removed.
createGroup(String)
public java.util.ArrayList<java.lang.String> expandGroup(java.lang.String groupName)
groupName
- The group name to be expanded.
addToGroup(String, String)
,
removeFromGroup(String, String)
public boolean addToGroup(java.lang.String groupName, java.lang.String number)
groupName
- The group to which the number is to be added.number
- The number to add.
createGroup(String)
,
removeFromGroup(String, String)
public boolean removeFromGroup(java.lang.String groupName, java.lang.String number)
groupName
- The group from which the number is to be removed.number
- The number to remove.
removeGroup(String)
,
addToGroup(String, String)
public boolean checkInGroup(java.lang.String groupName, java.lang.String number)
groupName
- The group in which the number is to be searched.number
- The number to search.
public boolean setQueueManager(AbstractQueueManager myQueueManager)
public AbstractQueueManager getQueueManager()
public org.smslib.notify.NotifyQueueManager getNotifyQueueManager()
public KeyManager getKeyManager()
public static void main(java.lang.String[] args)
|
SMSLib 3.5.3 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


{% extends "oauth_api/base.html" %} {% load i18n %} {% block content%}
{% blocktrans with name=application.name %} The app {{ name }} would like have following permissions on your data: {% endblocktrans %}


Below is the list of languages and their codes that can be used for user interface and email texts, parameter and event names, as well as online help and FAQs:
| Language Code | Language |
|---|---|
| az | Azerbaijani |
| be | Belarusian |
| bg | Bulgarian |
| bn | Bengali |
| br | Breton |
| bs | Bosnian |
| ca | Catalan |
| ch | Chamorro |
| cs | Czech |
| cy | Welsh |
| da | Danish |
| de | German |
| el | Greek |
| en | English |
| es | Spanish |
| et | Estonian |
| fi | Finnish |
| fr | French |
| gl | Gallegan |
| gu | Gujarati |
| hi | Hindi |
| hr | Croatian |
| hu | Hungarian |
| ia | Interlingua |
| in | Indonesian |
| ii | Sichuan Yi |
| is | Icelandic |
| it | Italian |
| ja | Japanese |
| ko | Korean |
| lt | Lithuanian |
| lv | Latvian |
| mk | Macedonian |
| ml | Malayalam |
| mn | Mongolian |
| ms | Malay |
| nb | Norwegian Bokmål |
| nl | Dutch |
| nn | Norwegian Nynorsk |
| no | Norwegian |
| pl | Polish |
| pt | Portuguese |
| ro | Romanian |
| ru | Russian |
| sc | Sardinian |
| se | Northern Sami |
| si | Sinhalese |
| sk | Slovak |
| sl | Slovenian |
| sq | Albanian |
| sr | Serbian |
| sv | Swedish |
| ta | Tamil |
| te | Telugu |
| th | Thai |
| tr | Turkish |
| tt | Tatar |
| tw | Twi |
| uk | Ukrainian |
| vi | Vietnamese |
| zh | Chinese |


Dashboard
Home
LOGOUT
LCTRS
Lecture Summarizer
{{login}}
Transcript:
{{prefill}}
Summarize to:
%
Summarize
Summary:
{{data}}


--- title: Adventures in x86 ASM with rx86 author: Jonathan Carroll date: '2021-12-23' slug: adventures-in-x86-asm categories: [R] tags: [rstats, assembly, x86, commandline] type: '' subtitle: '' image: '' ---
I just finished ‘Code: The Hidden Language of Computer Hardware and Software’ by Charles Petzold which was a really well-written (in my opinion) guided journey from flashing a light in morse code through to building a whole computer, and everything needed along the way.
The section on encoding instructions for the processor (built up from logic gates) - assembly instructions as a human readable version of the machine code - was particularly interesting to me, and as I was describing this to a colleague I remembered that it’s not the first time I’ve played with assembly…
I just finished ‘Code: The Hidden Language of Computer Hardware and Software’ by Charles Petzold which was a really well-written (in my opinion) guided journey from flashing a light in morse code through to building a whole computer, and everything needed along the way.
The section on encoding instructions for the processor (built up from logic gates) - assembly instructions as a human readable version of the machine code - was particularly interesting to me, and as I was describing this to a colleague I remembered that it’s not the first time I’ve played with assembly…
Years and years ago (I don’t recall how it actually started) I spent some time trying to solve a puzzle. I don’t recall whether I saw the puzzle or a solution first, but I do remember wanting to be able to understand it properly, and ideally be able to use some software I wrote to reach the solution.
The puzzle was just a set of characters on a poster for the (then named) Australian Defence Signals Directorate (now the Australian Signals Directorate - one of our Secret Squirrel orgs) at ruxcon in 2011
Yes, that was a long time ago, but I never wrote up what I did, and now seems like a good enough time to get really distracted.
I would be surprised if I understood it well enough at the time, so I suspect I was aware of this blogpost which walks through the solution (spoilers). Nonetheless, I wanted to be able to do that myself, not just follow some instructions - I was confident that I could write enough code (of some sort) to go from this sequence of letters and symbols to the final solution.
My attempts at the time were mostly command-line attempts; the blog post linked above uses only web services, so that felt like I could make it ‘my own’. I first needed to get the characters into my computer - that’s just writing them out to a text file, say, a file called dsd
# dsd:
6AAAAABbi8uDwx4zwDPSigOK
ETLCiAM8AHQrg8EBg8MB6+wz
/7/z+TEct0SlpGf5dRyl53US
YQEE56Ri7Kdkj8IAABkcOsw=
Knowing that this is base-64 encoded, I can decode it with hexdump
cat dsd | base64 -d | hexdump -C
00000000 e8 00 00 00 00 5b 8b cb 83 c3 1e 33 c0 33 d2 8a |.....[.....3.3..|
00000010 03 8a 11 32 c2 88 03 3c 00 74 2b 83 c1 01 83 c3 |...2...<.t+.....|
00000020 01 eb ec 33 ff bf f3 f9 31 1c b7 44 a5 a4 67 f9 |...3....1..D..g.|
00000030 75 1c a5 e7 75 12 61 01 04 e7 a4 62 ec a7 64 8f |u...u.a....b..d.|
00000040 c2 00 00 19 1c 3a cc |.....:.|
00000047
To just get the bytecode, I used some different options and saved the file as dsd.hex
cat dsd | base64 -d | hexdump -v -e '/1 %02X ' > dsd.hex
# dsd.hex:
E8 00 00 00 00 5B 8B CB 83 C3 1E 33 C0 33 D2 8A 03 8A 11 32 C2 88 03 3C 00 74 2B 83 C1 01 83 C3 01 EB EC 33 FF BF F3 F9 31 1C B7 44 A5 A4 67 F9 75 1C A5 E7 75 12 61 01 04 E7 A4 62 EC A7 64 8F C2 00 00 19 1C 3A CC
I did go a similar route to the linked blogpost and converted these bytes to shellcode, wrapped them in a C program and disassembled it with gdb
, but much simpler was to use a better tool, in this case udis which I needed to install separately. This
gives the same result as the blogpost, which was nice
udcli -x dsd.hex > dsd.hex.asm
# dsd.hex.asm:
0000000000000000 e800000000 call 0x5
0000000000000005 5b pop ebx
0000000000000006 8bcb mov ecx, ebx
0000000000000008 83c31e add ebx, 0x1e
000000000000000b 33c0 xor eax, eax
000000000000000d 33d2 xor edx, edx
000000000000000f 8a03 mov al, [ebx]
0000000000000011 8a11 mov dl, [ecx]
0000000000000013 32c2 xor al, dl
0000000000000015 8803 mov [ebx], al
0000000000000017 3c00 cmp al, 0x0
0000000000000019 742b jz 0x46
000000000000001b 83c101 add ecx, 0x1
000000000000001e 83c301 add ebx, 0x1
0000000000000021 ebec jmp 0xf
0000000000000023 33ff xor edi, edi
0000000000000025 bff3f9311c mov edi, 0x1c31f9f3
000000000000002a b744 mov bh, 0x44
000000000000002c a5 movsd
000000000000002d a4 movsb
000000000000002e 67f9 a16 stc
0000000000000030 751c jnz 0x4e
0000000000000032 a5 movsd
0000000000000033 e775 out 0x75, eax
0000000000000035 126101 adc ah, [ecx+0x1]
0000000000000038 04e7 add al, 0xe7
000000000000003a a4 movsb
000000000000003b 62ec invalid
000000000000003d a7 cmpsd
000000000000003e 648fc2 pop edx
0000000000000041 0000 add [eax], al
0000000000000043 191c3a sbb [edx+edi], ebx
0000000000000046 cc int3
At this point, I got a bit lost (at the time) because I didn’t understand assembly well enough (or at all), so, continuing with the logic presented in the linked blogpost, I considered just working with the bytes directly.
All we really need to do it take the bytes starting at 0x5
and 0x23
and xor
them. I figured I’ll need the decimal value of these addresses; 0x5
is just 5, but 0x23
= 16*2 + 3 = 35. We can of course get this via printf
printf "%d\n" 0x23
## 35
or less simply with the built-in calculator tool bc
, going from (input) base 16 to (output) base 10
echo "obase=10;ibase=16; 23" | bc
## 35
I placed the bytes in sequence (removing spaces) with
str=$(cat dsd.hex | sed 's/ //g')
echo $str
## E8000000005B8BCB83C31E33C033D28A038A1132C288033C00742B83C10183C301EBEC33FFBFF3F9311CB744A5A467F9751CA5E77512610104E7A462ECA7648FC20000191C3ACC
Since I have 2 characters per hex, 0x5
starts at character 10, and 0x23
starts at character 70, so we define our strings as
astr=${str:70} # 0x23 to end
echo $astr
## 33FFBFF3F9311CB744A5A467F9751CA5E77512610104E7A462ECA7648FC20000191C3ACC
and
$ bstr=${str:10} # 0x5 to end
$ echo $bstr
## 5B8BCB83C31E33C033D28A038A1132C288033C00742B83C10183C301EBEC33FFBFF3F9311CB744A5A467F9751CA5E77512610104E7A462ECA7648FC20000191C3ACC
There is overlap here, which we will have to deal with when we get to it. For now, we want to xor
these. Let’s cut these down to 60 characters (where they start to overlap)
trimastr=${astr:0:60}
echo $trimastr
## 33FFBFF3F9311CB744A5A467F9751CA5E77512610104E7A462ECA7648FC2
trimbstr=${bstr:0:60}
echo $trimbstr
## 5B8BCB83C31E33C033D28A038A1132C288033C00742B83C10183C301EBEC
The command xor
(^
) chokes on this many digits (in fact, any more than about 8) so I’ve written a script to xor
the characters one at a time:
for i in {0..59} ; do echo $(( 0x${astr:$i:1} ^ 0x${bstr:$i:1} )) | awk '{printf "%X",$0}' ; done > xor.dat
# xor.dat:
687474703A2F2F7777772E6473642E676F762E61752F6465636F6465642E
What about that bit that overlapped? we only xored the first 60 characters, but the length of the string is
echo ${#astr}
## 72
so we need those first 12 (72-12) characters (6 hex) of overlap
olap1=${astr:60:12}
echo $olap1
## 0000191C3ACC
The assembly code would have overwritten the overlapped part by the time it reached there, so we need to xor
with the xor
’d part, i.e. the first 12 characters of xor.dat
olap2=$(cat xor.dat | cut -c -12)
echo $olap2
## 687474703A2F
Now, finally, do the last xor
(^
)
for i in {0..11} ; do echo $(( 0x${olap1:$i:1} ^ 0x${olap2:$i:1} )) | awk '{printf "%X",$0}' ; done > xorolap.dat
# xorolap.dat:
68746D6C00E3
so this needs to go at the end of our xor.dat
cat xor.dat xorolap.dat > xorfinal.dat
# xorfinal.dat:
687474703A2F2F7777772E6473642E676F762E61752F6465636F6465642E68746D6C00E3
The final 00
and after is useless, so let’s drop it. Finally, we just need to convert this back to text using xxd -r
cat xorfinal.dat | sed 's/[0]\{2\}.*//' | xxd -r -p > dsd.sol
Phew. I’m not going to reveal the solution just yet, because this isn’t the end of the story (but I did get the right answer).
So, that’s a commandline solution to (at least this part) of the puzzle. But now I know R!
Learning more about assembly from the book ‘Code’, it occurred to me that the
operations - which could be implemented with something as simple as telegraph relays (or crabs) - were just operations on data. Given an input, produce an output (sort of). A MOV
operation just moved some value stored at some address to another address (or to/from a register). This felt like it could be simple enough to encode in some R functions. Perhaps not some “pure” R functions, because I want the side-effect of altering a global memory bank, but surely I could do simple things like ADD
.
I looked around to see if someone else had done this before. As is usually the case with odd requests, Mike (a.k.a. @coolbutuseless) has done something similar in the form of r64 which I didn’t appreciate was a sufficiently distinct flavour of assembly (I never had a Commodore64, we had an Amstrad CPC664 on which I really only played games). After a quick PR to bring that repo up to date with other changes by the author (a migration of one dependency) I realised this wasn’t what I needed, but did learn a lot from how it was structured.
Okay, on to building something myself. I knew I’d need some memory and some registers. The registers seemed easy - they wouldn’t hold a lot and I could address them by name, e.g. eax
. An environment seemed natural, both because of the named list structure, and because I knew it would be mutable. That seemed like a benefit for this use-case - having a global set of registers I could move data in and out of without making copies of the thing or passing it around everywhere.
Next I’d need memory. I figured a vector of hex value made sense, but I wanted to be able to refer to the first one as 0x00
. Now, the names of a vector need to be a character vector - you can’t use the actual hex values
memory <- c(0x00 = 0x19, 0x01 = 0x1a, 0x02 = 0x1b)
## Error: <text>:1:18: unexpected '='
## 1: memory <- c(0x00 =
## ^
so we need to use character strings
memory <- c("0x00" = 0x19, "0x01" = 0x1a, "0x02" = 0x1b)
memory
## 0x00 0x01 0x02
## 25 26 27
More importantly, we’ll need to ensure we only refer to these by the character
strings because [
first tries a coercion to integer, which, side-note, is why this works
(1:10)[2.3] # since as.integer(2.3) == 2
## [1] 2
(1:10)[4.7] # since as.integer(4.7) == 4
## [1] 4
The risk is that we use a hex value to extract an element, in which case we might accidentally try to get the first value with
memory[0x00]
## named numeric(0)
Instead, we want
memory["0x00"]
## 0x00
## 25
In order to make sure we always do this, we need a sanitize()
function which
always returns the string.
We can convert a value to hexmode with as.hexmode
, but that’s a lot of typing, so I added an alias as
hex <- as.hexmode
For processing assembly instructions, we might see something like
mov eax, 0x5
which should move the value 0x5
into the register eax
… so we’ll need a way
to distinguish direct addresses from registers. Worse still, we might refer to the address stored in a register, as [eax]
. A reg_or_val()
function would identify anything which points to an address (containing a [
), any of the named registers, or a value, and would return the address (or where that points).
With all of those pieces, the only thing left is to actually be able to run code.
Assembly runs sequentially through the instructions, unless we encounter some flow
control opcodes (e.g. JMP
- jump to address - I’ll keep calling them opcodes but mnemonics is a more correct term). The basic process would then be to
read in the instruction, identify the opcode and the arguments, and execute, modifying the memory and registers in-place. Once that’s done, we move to the next instruction.
With flow control we might need to identify a different address to go to next, and that might depend on the status of the registers, for example JNZ 0x00
jumps to address 0x00
if the zero flag is not set. So, we can execute the current instruction but then apply any flag-based logic to see if we need to go to a new address, and go wherever we should go go next. This is implemented as runasm()
That takes care of running the code, but what are we running? Oh, operations. Right. Well, we need some of those. Going through the opcodes I need for the puzzle, I’ll need the following:
call
pop
mov
add
xor
cmp
jz
jmp
halt
CALL
just pushes a value onto the stack (register esp
), POP
retrieves it and
stores it at an address, MOV
as we said moves a value from place to place, ADD
adds two values, XOR
does what it suggests, and so on. These don’t seem tricky to implement, for example
mov <- function(x, y) {
# copy y into x
res <- hex(reg_or_val(y))
if (x %in% names(registers)) {
assign(x, res, envir = registers)
} else {
mem[sanitize(x)] <<- sanitize(res)
}
return(invisible(NULL))
}
The wrinkle will be that particular instructions also update registers, for
example an ADD
stores whether the result was 0x00
in the zero-flag register
function(x, y) {
# add y to x and save in x
res <- hex(reg_or_val(x)) + hex(reg_or_val(y))
if (x %in% names(registers)) {
assign(x, res, envir = registers)
} else {
mem[sanitize(x)] <<- sanitize(res)
}
assign("zf", hex(as.integer(res == 0x00)), envir = registers)
return(invisible(x))
}
A JMP
(or other jump) will check this register and jump (or not) accordingly.
With these pieces in place, an R package was a natural home for the code, so I can now present the {rx86}
package: https://github.com/jonocarroll/rx86
Let’s use it to solve the puzzle!!!
Starting with the puzzle string
dsd <- "6AAAAABbi8uDwx4zwDPSigOK
ETLCiAM8AHQrg8EBg8MB6+wz
/7/z+TEct0SlpGf5dRyl53US
YQEE56Ri7Kdkj8IAABkcOsw="
we decode it (this time in R)
(b64 <- base64enc::base64decode(dsd))
## [1] e8 00 00 00 00 5b 8b cb 83 c3 1e 33 c0 33 d2 8a 03 8a 11 32 c2 88 03 3c 00
## [26] 74 2b 83 c1 01 83 c3 01 eb ec 33 ff bf f3 f9 31 1c b7 44 a5 a4 67 f9 75 1c
## [51] a5 e7 75 12 61 01 04 e7 a4 62 ec a7 64 8f c2 00 00 19 1c 3a cc
This will be the only non-R part: we still need to disassemble the bytecode into assembly, but we can do that from R with a system()
call to udcli
(disas <- system("udcli -x", input = paste(b64, collapse = " "), intern = TRUE))
## [1] "0000000000000000 e800000000 call 0x5 "
## [2] "0000000000000005 5b pop ebx "
## [3] "0000000000000006 8bcb mov ecx, ebx "
## [4] "0000000000000008 83c31e add ebx, 0x1e "
## [5] "000000000000000b 33c0 xor eax, eax "
## [6] "000000000000000d 33d2 xor edx, edx "
## [7] "000000000000000f 8a03 mov al, [ebx] "
## [8] "0000000000000011 8a11 mov dl, [ecx] "
## [9] "0000000000000013 32c2 xor al, dl "
## [10] "0000000000000015 8803 mov [ebx], al "
## [11] "0000000000000017 3c00 cmp al, 0x0 "
## [12] "0000000000000019 742b jz 0x46 "
## [13] "000000000000001b 83c101 add ecx, 0x1 "
## [14] "000000000000001e 83c301 add ebx, 0x1 "
## [15] "0000000000000021 ebec jmp 0xf "
## [16] "0000000000000023 33ff xor edi, edi "
## [17] "0000000000000025 bff3f9311c mov edi, 0x1c31f9f3 "
## [18] "000000000000002a b744 mov bh, 0x44 "
## [19] "000000000000002c a5 movsd "
## [20] "000000000000002d a4 movsb "
## [21] "000000000000002e 67f9 a16 stc "
## [22] "0000000000000030 751c jnz 0x4e "
## [23] "0000000000000032 a5 movsd "
## [24] "0000000000000033 e775 out 0x75, eax "
## [25] "0000000000000035 126101 adc ah, [ecx+0x1] "
## [26] "0000000000000038 04e7 add al, 0xe7 "
## [27] "000000000000003a a4 movsb "
## [28] "000000000000003b 62ec invalid "
## [29] "000000000000003d a7 cmpsd "
## [30] "000000000000003e 648fc2 pop edx "
## [31] "0000000000000041 0000 add [eax], al "
## [32] "0000000000000043 191c3a sbb [edx+edi], ebx "
## [33] "0000000000000046 cc int3 "
We then read this back into R as a data.frame
asm <- suppressWarnings(
readr::read_fwf(paste(disas, collapse = "\n"),
col_types = "ccc",
col_positions = readr::fwf_widths(c(16, 16, 21)))
)
colnames(asm) <- c("addr", "bytecode", "instr")
# trim the leading 0s from addr since this is all we're using
asm$addr <- substr(asm$addr, nchar(asm$addr)-1, nchar(asm$addr))
asm
## # A tibble: 33 x 3
## addr bytecode instr
## <chr> <chr> <chr>
## 1 00 e800000000 call 0x5
## 2 05 5b pop ebx
## 3 06 8bcb mov ecx, ebx
## 4 08 83c31e add ebx, 0x1e
## 5 0b 33c0 xor eax, eax
## 6 0d 33d2 xor edx, edx
## 7 0f 8a03 mov al, [ebx]
## 8 11 8a11 mov dl, [ecx]
## 9 13 32c2 xor al, dl
## 10 15 8803 mov [ebx], al
## # … with 23 more rows
The last instruction, int3
, is an interrupt, but let’s generalise it to a halt
because we’ll be done
asm[33, "instr"] <- "halt"
We can run this with {rx86}
… we need a memory array and some registers
mem <- create_mem()
registers <- create_reg()
Then we can run the code
runasm(asm)
As we saw earlier, the ‘code’ part of the asm is stored in 0x00
to 0x21
with the remaining addresses being used for temporary storage, from 0x23
. The operations encoded
perform an XOR
between the values stored at 0x05
through to 0x21
with those starting at 0x23
, storing the results starting at 0x23
.
 I’ve added a helper which achieves this, dropping everything after the first null-terminating byte (0x00
) then
hex2string(mem_offset)
## [1] "http://www.dsd.gov.au/decoded.html"
TADA!
This example is stored along with the package as a vignette, so
vignette("dsd_ruxcon_challenge", package = "rx86")
The link in this solution just redirects to the ASD frontpage since the puzzle is now over 10 years old, but when it was active it led to a page with some binary
0100 0011 0100 1111 0100 1110 0100 0111 0101 0010 0100 0001 0101 0100 0101
0101 0100 1100 0100 0001 0101 0100 0100 1001 0100 1111 0100 1110 0101 0011
Originally, I solved this part at the command line by storing this code in a file named decoded
and running a similar bc
conversion to before, but this time from binary (ibase=2) to hex (obase=16), storing the result in decoded.hex
for bin in $(cat decoded) ; do echo "obase=16;ibase=2; $bin" | bc >> decoded.hex ; done
From there, removing the line breaks and spaces, and passing through xxd
in reverse (similar to hexdump
but reverse works on my machine)
cat decoded.hex | tr '\n' ' ' | sed 's/ //g' | xxd -r -p
Again, I’ll hold off showing the answer, but it was correct.
It would be satisfying to also do this in R, so I added another helper in {rx86}
that does this conversion - it’s not terribly complex, but involves splitting a string into pairs of strings (split at some point) and a conversion
split_pairs <- function(x, split = "") {
sst <- strsplit(x, split)[[1]]
out <- paste0(sst[c(TRUE, FALSE)], sst[c(FALSE, TRUE)])
paste0(out, collapse = ",")
}
bin2ascii <- function(bin) {
nolb <- gsub("\n", " ", bin)
split <- strsplit(split_pairs(paste(nolb, collapse = " "), split = " "), ",")[[1]]
ints <- strtoi(split, base = 2)
intToUtf8(ints)
}
It appears to do the job
binary <- "0100 0011 0100 1111 0100 1110 0100 0111 0101 0010 0100 0001 0101 0100 0101
0101 0100 1100 0100 0001 0101 0100 0100 1001 0100 1111 0100 1110 0101 0011"
bin2ascii(binary)
## [1] "CONGRATULATIONS"
There, an (almost) entirely R solution to the puzzle, and all it took was writing my own x86 assembly parser.
I did want to see if I’d made my parser too specific and it only worked with this one example around which I’d designed it, so I wanted to add another example. This
journey started with the book ‘Code’, so it felt fitting to use an example from there. In the book, an example of multiplying two 8-bit numbers is used, which
involved an ADC
(add with carry) operation to handle overflow. This seemed like a good candidate, and I started coding it, but soon realised that the exact routine
relied on an add al, 0xff
which has the effect of adding -1 in 8-bit, but on my machine
as.integer(0xff)
## [1] 255
and
as.hexmode(-1)
## [1] "ffffffff"
which isn’t compatible. I could instead code a SUB
opcode and sub al, 0x01
(which I did) but at this point I decided to abandon the 8-bit idea and simplify down to just doing essential part of the program which multiplies 127 and 28 through repeated additions (via a loop). The asm for this is also stored in the package, and executing it is as simple as
mult_asm <- suppressWarnings(
readr::read_fwf(system.file("asm", "mult.asm", package = "rx86"),
col_types = "ccc",
col_positions = readr::fwf_widths(c(3, 6, 20)))
)
colnames(mult_asm) <- c("addr", "bytecode", "instr")
print(mult_asm)
## # A tibble: 14 x 3
## addr bytecode instr
## <chr> <chr> <chr>
## 1 00 101005 mov al, [0x22]
## 2 03 201001 add al, [0x20]
## 3 06 111005 mov [0x22], al
## 4 09 101004 mov al, [0x21]
## 5 0c 221000 sub al, 0x01
## 6 0f 111004 mov 0x21, al
## 7 12 101003 jnz 0x00
## 8 15 20001e halt
## 9 18 111003 invalid
## 10 1b 330000 invalid
## 11 1e ff00 invalid
## 12 20 a7 data 167
## 13 21 1c data 28
## 14 22 00 result
Again, we need a new memory array and some registers
mem <- create_mem(len = 64)
registers <- create_reg()
Then run the code
runasm(mult_asm)
The final result can be extracted but it is still a hex value
mem[sanitize(0x22)]
## 0x22
## "0x1244"
Converting it to an integer gives the expected result
as.integer(mem[sanitize(0x22)])
## [1] 4676
167*28
## [1] 4676
This, too, is stored as a vignette in the package, and can be found with
vignette("mult_code_petzold", package = "rx86")
The package is far from perfect, and only supports what I needed it to, but I’ve learned a lot about assembly and got to build something I’ve always wanted to. Plus I’ve finally written up my process for this puzzle that has been sitting on a disused laptop for a decade.
That’s not quite the end, though - I really wanted to test out what I’ve learned so far, and what good is a new programming ability without a “Hello, world!” example?
Almost all of the examples I found floating around use ‘modern’ asm (without the bytecode) and allow such luxuries as “storing a string” and “system calls” - none of that here, thank you. Instead, I added a new opcode mnemonic int 0x80
which sort of does what it should - it writes to screen the value (converted to character) of whatever is in the register eax
. That’s helpful, but I still need
the assembly that will use that. This is where I feel I’ve actually hand-programmed something myself. This is a piece of code that could literally have been punched into a card
The whole thing works, of course
hello_asm <- suppressWarnings(
readr::read_fwf(system.file("asm", "helloworld.asm", package = "rx86"),
col_types = "ccc",
col_positions = readr::fwf_widths(c(3, 3, 20)))
)
colnames(hello_asm) <- c("addr", "bytecode", "instr")
print(hello_asm)
## # A tibble: 23 x 3
## addr bytecode instr
## <chr> <chr> <chr>
## 1 00 10 mov ecx, 0x0e
## 2 01 10 mov al, 0x08
## 3 02 10 mov eax, [al]
## 4 03 cc int 0x80
## 5 04 28 sub ecx, 0x01
## 6 05 70 jz 0x17
## 7 06 05 add al, 0x01
## 8 07 e9 jmp 0x02
## 9 08 48 data
## 10 09 65 data
## # … with 13 more rows
mem <- create_mem()
registers <- create_reg()
runasm(hello_asm)
## Hello, world!
and I find that honestly, ridiculously pleasing.
This, too, is included in the package as
vignette("helloworld", package = "rx86")
I’m satisfied that {rx86}
works, at least in some sense.
I’ve learned a lot along the way, and who knows, maybe I’ll add some more opcodes to the package.


| Overview | Module | Use | Devguide | Index |
| Constants | Constants' Details |
:: com :: sun :: star :: accessibility :: |
| constants group AccessibleEventId |
|
| Constants | |
| NAME_CHANGED | Use this event type to indicate a change of the name string of an accessible object. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the name before and after the change. |
| DESCRIPTION_CHANGED | Use this event type to indicate a change of the description string of an accessible object. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the description before and after the change. |
| ACTION_CHANGED | The change of the number or attributes of actions of an accessible object is signaled by events of this type. |
| STATE_CHANGED | State changes are signaled with this event type. Use one event for every state that is set or reset. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new value respectively. To set a state put the state id into the AccessibleEventObject::NewValue field and leave AccessibleEventObject::OldValue empty. To reset a state put the state id into the AccessibleEventObject::OldValue field and leave AccessibleEventObject::NewValue empty. |
| ACTIVE_DESCENDANT_CHANGED | Constant used to determine when the active descendant of a component has changed. The active descendant is used in objects with transient children. The AccessibleEventObject::NewValue contains the now active object. The AccessibleEventObject::OldValue contains the previously active child. Empty references indicate that no child has been respectively is currently active. |
| BOUNDRECT_CHANGED | This event indicates a change of the bounding rectangle of an accessible object with respect only to its size or relative position. If the absolute position changes but not the relative position then its is not necessary to send an event. |
| CHILD | A child event indicates the addition of a new or the removal of an existing child. The contents of the AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields determines which of both has taken place. |
| INVALIDATE_ALL_CHILDREN | Use this event to tell the listeners to re-retrieve the whole set of children. This should be used by a parent object which exchanges all or most of its children. It is a short form of first sending one CHILD event for every old child indicating that this child is about to be removed and then sending one CHILD for every new child indicating that this child has been added to the list of children. |
| SELECTION_CHANGED | Events of this type indicate changes of the selection. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields remain empty. |
| VISIBLE_DATA_CHANGED | A visibile data event indicates the change of the visual appearance of an accessible object. This includes for example most of the attributes available over the XAccessibleComponent and XAccessibleExtendedComponent interfaces. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields are left empty. |
| VALUE_CHANGED | This constant indicates changes of the value of an XAccessibleValue interface. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue field contain the old and new value as a number. Its exact type is implementation dependant but has to be the same as is returned by the XAccessibleValue::getCurrentValue function. |
| CONTENT_FLOWS_FROM_RELATION_CHANGED | Identifies the change of a relation set: The content flow has changed. |
| CONTENT_FLOWS_TO_RELATION_CHANGED | Identifies the change of a relation set: The content flow has changed. |
| CONTROLLED_BY_RELATION_CHANGED | Identifies the change of a relation set: The target object that is doing the controlling has changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new controlling objects. |
| CONTROLLER_FOR_RELATION_CHANGED | Identifies the change of a relation set: The controller for the target object has changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new number of controlled objects. |
| LABEL_FOR_RELATION_CHANGED | Identifies the change of a relation set: The target group for a label has changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new number labeled objects. |
| LABELED_BY_RELATION_CHANGED | Identifies the change of a relation set: The objects that are doing the labeling have changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new accessible label. |
| MEMBER_OF_RELATION_CHANGED | Identifies the change of a relation set: The group membership has changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new number of members. |
| SUB_WINDOW_OF_RELATION_CHANGED | Identifies the change of a relation set: The sub-window-of relation has changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new accessible parent window objects. |
| CARET_CHANGED | Events of this type are sent when the caret has moved to a new position. The old and new position can be found in the AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields. |
| TEXT_SELECTION_CHANGED | Events of this type signal changes of the selection. The old or new selection is not available through the event object. You have to query the XAccessibleText interface of the event source for this information. The type of content of the AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields is not specified at the moment. This may change in the future. |
| TEXT_CHANGED | Use this id to indicate general text changes, i.e. changes to text that is exposed through the XAccessibleText and XAccessibleEditableText interfaces. |
| TEXT_ATTRIBUTE_CHANGED | This entry is reserved for future extension. Don't use it right now. |
| HYPERTEXT_CHANGED | Constant used to indicate that a hypertext element has received focus. The AccessibleEventObject::OldValue field contains the start index of previously focused element. The AccessibleEventObject::NewValue field holds the start index in the document of the current element that has focus. A value of -1 indicates that an element does not or did not have focus. |
| TABLE_CAPTION_CHANGED | Constant used to indicate that the table caption has changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new accessible objects representing the table caption. |
| TABLE_COLUMN_DESCRIPTION_CHANGED | Constant used to indicate that the column description has changed. The AccessibleEventObject::NewValue field contains the column index. The AccessibleEventObject::OldValue is left empty. |
| TABLE_COLUMN_HEADER_CHANGED | Constant used to indicate that the column header has changed. The AccessibleEventObject::OldValue is empty, the AccessibleEventObject::NewValue field contains an AccessibleTableModelChange representing the header change. |
| TABLE_MODEL_CHANGED | Constant used to indicate that the table data has changed. The AccessibleEventObject::OldValue is empty, the AccessibleEventObject::NewValue field contains an AccessibleTableModelChange representing the data change. |
| TABLE_ROW_DESCRIPTION_CHANGED | Constant used to indicate that the row description has changed. The AccessibleEventObject::NewValue field contains the row index. The AccessibleEventObject::OldValue is left empty. |
| TABLE_ROW_HEADER_CHANGED | Constant used to indicate that the row header has changed. The AccessibleEventObject::OldValue is empty, the AccessibleEventObject::NewValue field contains an AccessibleTableModelChange representing the header change. |
| TABLE_SUMMARY_CHANGED | Constant used to indicate that the table summary has changed. The AccessibleEventObject::OldValue and AccessibleEventObject::NewValue fields contain the old and new accessible objects representing the table summary. |
| LISTBOX_ENTRY_EXPANDED | Constant used to indicate that a list box entry has been expanded. AccessibleEventObject::OldValue is empty. AccessibleEventObject::NewValue contains the expanded list box entry. |
| LISTBOX_ENTRY_COLLAPSED | Constant used to indicate that a list box entry has been collapsed. AccessibleEventObject::OldValue is empty. AccessibleEventObject::NewValue contains the collapsed list box entry. |
| Constants' Details | |
NAME_CHANGED
|
|
DESCRIPTION_CHANGED
|
|
ACTION_CHANGED
|
|
STATE_CHANGED
|
|
ACTIVE_DESCENDANT_CHANGED
|
|
BOUNDRECT_CHANGED
|
|
CHILD
|
|
INVALIDATE_ALL_CHILDREN
|
|
SELECTION_CHANGED
|
|
VISIBLE_DATA_CHANGED
|
|
VALUE_CHANGED
|
|
CONTENT_FLOWS_FROM_RELATION_CHANGED
|
|
CONTENT_FLOWS_TO_RELATION_CHANGED
|
|
CONTROLLED_BY_RELATION_CHANGED
|
|
CONTROLLER_FOR_RELATION_CHANGED
|
|
LABEL_FOR_RELATION_CHANGED
|
|
LABELED_BY_RELATION_CHANGED
|
|
MEMBER_OF_RELATION_CHANGED
|
|
SUB_WINDOW_OF_RELATION_CHANGED
|
|
CARET_CHANGED
|
|
TEXT_SELECTION_CHANGED
|
|
TEXT_CHANGED
|
|
TEXT_ATTRIBUTE_CHANGED
|
|
HYPERTEXT_CHANGED
|
|
TABLE_CAPTION_CHANGED
|
|
TABLE_COLUMN_DESCRIPTION_CHANGED
|
|
TABLE_COLUMN_HEADER_CHANGED
|
|
TABLE_MODEL_CHANGED
|
|
TABLE_ROW_DESCRIPTION_CHANGED
|
|
TABLE_ROW_HEADER_CHANGED
|
|
TABLE_SUMMARY_CHANGED
|
|
LISTBOX_ENTRY_EXPANDED
|
|
LISTBOX_ENTRY_COLLAPSED
|
Copyright © 2013, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache, the Apache feather logo, Apache OpenOffice and OpenOffice.org are trademarks of The Apache Software Foundation. Other names may be trademarks of their respective owners.


Dad dies after eating 42 hard boiled eggs in bizarre bet with pal
The 42-year-old collapsed after trying to imitate the scene from classic movie Cool Hand Luke starring Paul Newman.
by Keith McLeod, https://www.dailyrecord.co.uk/authors/keith-mcleod/A dad-of-four has died after scoffing more than 40 hard-boiled eggs in a bizarre - and tragic - bet with a friend.
Subhash Yadav, 42, who was expecting his fifth child, was rushed to hospital but could not be saved - with doctors ruling his death was down to overeating.
The bet was a tragic copy of a scene in the movie Cool Hand Luke where star Paul Newman accepts an egg-eating bet - but survives.
Subhash was about to take a bite out of the 42nd one when he dropped to the ground.
After being rushed to hospital he never regained consciousness and died a few hours later.
Police said that Subhash and his friend had gone to a market area in Jaunpur, India, when an argument broke out between the pair.
They then challenged each other to eat 50 eggs for 2,000 rupees (£21).
Subhash accepted the bet and managed to scoff 41 before he collapsed and fell unconscious, reports Gulf News.
Doctors ruled that his death was due to overeating.
His family have not publicly commented on the incident.
Subhash is understood to have had four daughters from his first marriage.
He married again just nine months ago and was set to became a father for the fifth time.
Local people who witnessed his collapse rushed him to the district hospital from where he was referred to the Sanjay Gandhi Post Graduate Institute of Medical Sciences. He died hours later.
While the doctors claimed that Subhash died due to over-eating, family members refused to comment on the incident, police added.

Mother-of-one Bethan Gaskin got the snacks lodged in her throat as she desperately tried to spit them out.
The 24-year-old collapsed at home in Bourne, Lincolnshire, on Friday, February 22 and was rushed to hospital.
The beauty therapist suffered a heart attack and died five days later at Peterborough City Hospital.
Her devastated adoptive mum Michele spoke out to warn other people of the dangers of extreme food challenges.
In August Dana Hutchings, 41, collapsed while taking part in the amateur competition at the Fresno Grizzlies stadium in California.
It is thought he hit his face on a table as he collapsed.
Medical staff attempted to clear his airway of food but he died less than half an hour after arriving at hospital.
Witnesses who saw the incident on giant screens said that Mr Hutchings appeared to be eating much quicker than the other contestants.
In 2017 student Caitlin Nelson, died at a college-sanctioned on-campus pancake eating contest for charity at Sacred Heart University in Connecticut, USA.
She collapsed just minutes into the contest and later died.


Module rx.disposable
This module defines the concept of Disposable.
Functions
| Name | Description |
|---|---|
disposableObject(disposable)
|
Wraps dispose method in virtual functions. |
Interfaces
| Name | Description |
|---|---|
Cancelable
|
Wrapper for cancelable objects. |
Disposable
|
Wrapper for disposable objects. |
Classes
| Name | Description |
|---|---|
AnonymousDisposable
|
|
CancelableObject
|
Class that implements the Cancelable interface and wraps the isDisposed property in virtual functions. |
CancellationToken
|
Simply implements for Cancelable interface. Its propagates notification that operations should be canceled. |
CompositeDisposable
|
|
DisposableObject
|
Class that implements the Disposable interface and wraps the dispose methods in virtual functions. |
NopDisposable
|
Defines a instance property that return NOP Disposable. |
RefCountDisposable
|
|
SerialDisposable
|
|
SignalDisposable
|
|
SingleAssignmentDisposable
|
Manifest constants
| Name | Type | Description |
|---|---|---|
isCancelable
|
Tests if something is a Cancelable | |
isDisposable
|
Tests if something is a Disposable. |


tau.cf.target package¶
Target hardware and software detection and defaults.
-
class
tau.cf.target.
Architecture
(name, description)[source]¶ Bases:
tau.cf.KeyedRecord
Information about a target architecture.
-
name
¶ str
Short string identifying this architecture.
-
description
¶ str
Description of the architecture.
-
-
class
tau.cf.target.
OperatingSystem
(name, description)[source]¶ Bases:
tau.cf.KeyedRecord
Information about a target operating system.
-
name
¶ str
Short string identifying this operating system.
-
description
¶ str
Description of the operating system.
-
-
class
tau.cf.target.
TauArch
(name, architecture, operating_system)[source]¶ Bases:
tau.cf.KeyedRecord
Maps (operating system, architecture pairs) to TAU’s magic words.
-
name
¶ str
Name of the TAU architecture (the magic word)
-
architecture
¶ str
Architecture object for this TAU architecture.
-
operating_system
¶ str
OperatingSystem object for this TAU architecture.
-
classmethod
get
(targ_arch, targ_os)[source]¶ Look up the TAU magic word matching an architecture and operating system.
Parameters: - targ_arch –
Architecture
or string name identifying the target architecture. - targ_os –
OperatingSystem
or string name identifying the target operating system.
Returns: The TAU magic word for the target.
Return type: - targ_arch –
-
Submodules¶
tau.cf.target.device module¶
Target device hardware and software detection and defaults.
tau.cf.target.host module¶
Target host hardware and software detection and defaults.
-
tau.cf.target.host.
architecture
()[source]¶ Detect the host’s architecture.
Mostly relies on Python’s platform module but may also probe environment variables and file systems in cases where the arch isn’t immediately known to Python. These tests may be expensive so the detected value is cached to improve performance.
Returns: The matching architecture description. Return type: Architecture Raises: ConfigurationError
– Host architecture not supported.
-
tau.cf.target.host.
default_compiler
(role)[source]¶ Get the default compiler on this host for a given role.
Parameters: role (CompilerRole) – The role we need to fill. Returns: The installed compiler that can fill the role. Return type: InstalledCompiler Raises: ConfigurationError
– No installed compiler can fill the role.
-
tau.cf.target.host.
default_compilers
()[source]¶ Get the default installed compilers for the host.
This is most likely the installation of the host’s preferred compilers, (see
preferred_compilers
) but if those compilers are not installed then it will be an installation of any known compiler family. May probe environment variables and file systems in cases where the arch isn’t immediately known to Python. These tests may be expensive so the detected value is cached to improve performance.Raises: ConfigurationError
– No recognized compilers are installed.Returns: The default compilers. Return type: InstalledCompilerFamily
-
tau.cf.target.host.
default_mpi_compilers
()[source]¶ Get the default installed MPI compilers for the host.
This is most likely the installation of the host’s preferred MPI compilers, (see
preferred_mpi_compilers
) but if those compilers are not installed then it will be an installation of any known compiler family. May probe environment variables and file systems in cases where the arch isn’t immediately known to Python. These tests may be expensive so the detected value is cached to improve performance.Raises: ConfigurationError
– No recognized compilers are installed.Returns: The default compilers. Return type: InstalledCompilerFamily
-
tau.cf.target.host.
operating_system
()[source]¶ Detect the host’s operating system.
Mostly relies on Python’s platform module but may also probe environment variables and file systems in cases where the arch isn’t immediately known to Python. These tests may be expensive so the detected value is cached to improve performance.
Returns: The matching operating system description. Return type: OperatingSystem Raises: ConfigurationError
– Host operating system not supported.
-
tau.cf.target.host.
preferred_compilers
()[source]¶ Get the preferred compiler family for the host architecture.
May probe environment variables and file systems in cases where the arch isn’t immediately known to Python. These tests may be expensive so the detected value is cached to improve performance.
Returns: The host’s preferred compiler family. Return type: CompilerFamily
-
tau.cf.target.host.
preferred_mpi_compilers
()[source]¶ Get the preferred MPI compiler family for the host architecture.
May probe environment variables and file systems in cases where the arch isn’t immediately known to Python. These tests may be expensive so the detected value is cached to improve performance.
Returns: The host’s preferred compiler family. Return type: MpiCompilerFamily
-
tau.cf.target.host.
tau_arch
()[source]¶ Detect the TAU architecture “magic keyword” that matches the host.
Mostly relies on Python’s platform module but may also probe environment variables and file systems in cases where the arch isn’t immediately known to Python. These tests may be expensive so the detected value is cached to improve performance.
Returns: The matching tau architecture description. Return type: TauArch Raises: ConfigurationError
– Host architecture or operating system not supported.


EUG human cells skin ear NCEUG Figure contact control cell dermatitis mice TPA effect {border-style anti-inflammatory neutrophil px;} topical #ffffff;} activity compared drug edema induced neutrophils treatment effects irritant group inflammatory using < concentrations keratinocytes ROS eugenol incubated membrane nanocapsules release used did significantly studies . ± ., MPO application containing measured mice. polymeric reduction results showed (. ... . ± . Human IL- MTT administration animals antioxidant flow inhibited inhibition mean mouse reduced treated viability vivo μg/mL) (ANOVA . mg/ear), Toxicology activation allergic cytometry oil present production properties px; test). thickness tissue {font-family (., Cell European Evaluation NCB Neutrophils acetone chemiluminescence cytotoxicity delivery efficacy essential expressed font-size formulation formulations group; incubation levels model performed phase potential related reported significant species study study, superoxide surface test °C. min (. ± ., (DMSO (mm) .%, Data Oxidative PMA Pharmaceutics SEM Swiss acute assay biological cellular determined dexamethasone double; group. left lucigenin myeloperoxidase reaction reactive represent room solution vehicle (. × (vehicle . mg/ear) Also, Chemical DMSO EUG, Ear Eugenol However, International Pharmacology Sciences TPA-induced Triton Values active added better border-color border-width cells. content diseases high inhibitions luminol minutes nanocarriers nanoencapsulation neutrophils. observed oxygen penetration polymer prepared presented produce promote respectively) shown solid; standard stimulated stress target temperature topically {font-style {font-weight μg/ear) μg/mL (DEXA; (HaCaT) (NCB: (NCEUG) . mg/ear . ± .%) Anti-inflammatory Biopharmaceutics Despite Dexamethasone HaCaT Lee PMA-stimulated Research So, Tukey Tukey's addition analysis anion article assessed bold caused cells/mL) changes concentration control) controlled courier; culture degranulation demonstrated dermatitis. detection drugs em; expression formation hoc integrity isoeugenol nontreated normal obtained order plate plates post proinflammatory proliferation promoted provided pt;} rats reduce research samples. suspension systems terpene toxicity use vitro μg/mL), g) ∗vs.


---
layout: default
title: Dashboard
bodyID: dashboardPage
---
{{ page.title }}
Wallet Balance
$3,567.53
asdfadf
Wallet Balance
$3,567.53
asdfadf
Wallet Balance
$3,567.53
asdfadf
Top Selling Products
Overview of Top Selling Items
| Products |
License |
Support Agent |
Technology |
Tickets |
Sales |
Earnings |
|
|
Single Use |
John Doe |
|
46 |
356 |
$2850.06
|
|
|
Single Use |
Venessa Fern |
|
46 |
356 |
$2850.06
|
|
|
Single Use |
John Doe |
|
46 |
356 |
$2850.06
|
|
|
Single Use |
John Doe |
|
46 |
356 |
$2850.06
|
Recent Comments
| Product |
Date |
State |
Price |
|
|
iPhone X
|
today
|
Pending..
|
$999,99
|
|
|
MacBook Pro 15"
|
today
|
Pending..
|
$2.299,00
|
|
|
Nvidia GTX 1080 Ti
|
today
|
Pending..
|
$1200,00
|
|
|
Playstation 4 Pro
|
today
|
Cancelled
|
$399,00
|
|
|
Nintendo Switch
|
yesterday
|
Completed
|
$349,00
|
|
|
iPhone X
|
yesterday
|
Completed
|
$999,00
|
|
|
Echo Dot
|
yesterday
|
Completed
|
$39,99
|
|
|
Xbox One X
|
yesterday
|
Completed
|
$499,00
|
|
File Tree
- Project
- Opened Folder - 15kb
- css
- Folder close - 10kb
- index.html
- favicon.ico
- Folder close - 420kb
Stocks
| APPL |
$ 9,500 |
+ 458 |
| GOOG |
$ 15,425 |
- 1,632 |
| AMD |
$ 11,540 |
+ 8,326 |
| HGM |
$ 15,855 |
+ 11,326 |
| MKR |
$ 18,500 |
- 6,586 |
| APPL |
$ 9,500 |
+ 458 |
| GOOG |
$ 15,425 |
- 1,632 |
| AMD |
$ 11,540 |
+ 8,326 |
| HGM |
$ 15,855 |
+ 11,326 |
| MKR |
$ 18,500 |
- 6,586 |
Recent Comments
| Image |
Product |
Customer |
Purchased On |
Status |
Tracking No# |
|
|
iMac |
Russell |
22/08/2018 |
Paid
|
#98BC85SD84 |
|
|
iPhone |
Carol |
15/07/2018 |
Pending
|
#98SA3C9SC |
|
|
Apple Watch |
Austin Pena |
10/07/2018 |
Paid
|
#98BC85SD84 |
|
|
Headphones |
Randy |
22/04/2018 |
Failed
|
#98SA3C9SC |


| Time | Session |
|---|---|
| 7:45 - 7:55 PDT 10:45 - 10:55 ET 16:45 - 16:55 GMT+2 |
Opening remarks JOIN LIVE Join the replay session in Zoom WATCH OFFLINE on youtube. |
| 7:55 - 8:50 PDT 11:00 - 11:50 ET 17:00 - 17:50 GMT+2 |
Debate 1 - Why Sim2Real? JOIN LIVE Join the replay session in Zoom WATCH OFFLINE on youtube. VOTE in our poll before and after |
| 8:50 - 9:10 PDT 11:50 - 12:10 ET 17:50 - 18:10 GMT+2 |
Contributed Papers: Q&A 1 LIVE Join the live Q&A session on Zoom |
| 9:10 - 10:00 PDT 12:10 - 13:00 ET 18:10 - 19:00 GMT+2 |
Debate 2 - What Is Sim2Real? JOIN LIVE the replay session in Zoom WATCH OFFLINE on youtube. VOTE in our poll before and after |
| 10:00 - 10:20 PDT 13:00 - 13:20 ET 19:00 - 19:20 GMT+2 |
Contributed Papers: Q&A 2 LIVE Join the live Q&A session on Zoom |
| 10:20 - 11:10 PDT 13:20 - 14:10 ET 19:20 - 20:10 GMT+2 |
Debate 3 - How to Sim2Real? JOIN LIVE the replay session in Zoom WATCH OFFLINE on youtube. VOTE in our poll before and after |
| 11:10 - 11:30 PDT 14:10 - 14:30 ET 20:10 - 20:30 GMT+2 |
Contributed Papers: Q&A 3 LIVE Join the live Q&A session on Zoom |
| 11:30 - 12:30 PDT 14:30 - 15:30 ET 20:30 - 21:30 GMT+2 |
Closing Panel LIVE Join the live panel discussion with all speakers on Zoom |
| Theme: Why sim2real? Controversial statement: “Investing into Sim2Real is a waste of time and money” |
In favor: Chris Atkeson, Abhinav Gupta Against: Peter Welinder, Ken Goldberg |
[YouTube] |
| Theme: What is sim2real? Controversial statement: “Sim2Real is old news. It’s just X (X=model-based RL, X=domain randomization, X=system identification)” |
In favor: Martha White, Jan Peters Against: John Leonard, Gregory Dudek |
[YouTube] |
| Theme: How to sim2real? Controversial statement: “Sim2Real requires highly accurate physical simulators and photorealistic rendering” |
In favor: Karen Liu, Dieter Fox Against: Anca Dragan, Shuran Song |
[YouTube] |


SC dismisses ED plea challenging Shivakumar's bail in money laundering case
The Delhi High Court had on October 23 granted bail to Shivakumar
by Press Trust of IndiaThe Supreme Court on Friday dismissed the Enforcement Directorate's plea challenging the Delhi High Court order granting bail to Karnataka Congress leader D K Shivakumar in a money laundering case.
A bench comprising Justices R F Nariman and S Ravindra Bhat rejected the request of the Solicitor General, appearing for the Enforcement Directorate (ED), to issue a notice to the other side on the appeal.
The Delhi High Court had on October 23 granted bail to Shivakumar.


One dies as tipper rams into tricycle, SUV in Ogun
by Agency ReportThe Ogun State Traffic Compliance and Enforcement Corps, on Friday, said that one person died while three others sustained various degrees of injuries in a road accident along Idiroko Road.
Sango-Ota Area Commander of TRACE, Adekunle Ajibade, made this known to the News Agency of Nigeria in Ota, Ogun.
Ajibade said that the accident which happened at about 9:59 a.m. on Friday, around Iyana-Iyesi on Idiroko Road, involved a tipper, a jeep and a tricycle.
He explained that a tipper with registration number MUS 217 YL suffered a brake failure and rammed into a tricycle marked LAR 304 VD and an Acura Jeep with registration number KTU 636 DQ.
He said that four persons comprising three males and a female were involved in the accident which resulted in the death of one person, while three others sustained injuries.
“The corpse of the male victim has been deposited at the morgue of State Hospital Ota in Ogun, while the survivors are also receiving treatment at the same hospital,” Ajibade said.
He said that normalcy had been restored and the vehicles towed to the Onipanu Police, Ogun to ensure the free flow of traffic in the area.
Ajibade advised motorists and other road users to always exercise patience as the yuletide period approaches to avoid loss of lives and property.
(NAN)


| Package | Description |
|---|---|
| javax.imageio.metadata |
A package of the Java Image I/O API dealing with reading and writing
metadata.
|
| javax.xml.bind.annotation |
Defines annotations for customizing Java program elements to XML Schema mapping.
|
| javax.xml.crypto.dom |
DOM-specific classes for the
javax.xml.crypto package. |
| javax.xml.soap |
Provides the API for creating and building SOAP messages.
|
| javax.xml.ws |
This package contains the core JAX-WS APIs.
|
| javax.xml.ws.spi |
This package defines SPIs for JAX-WS.
|
| javax.xml.ws.wsaddressing |
This package defines APIs related to WS-Addressing.
|
| org.w3c.dom |
Provides the interfaces for the Document Object Model (DOM) which is a
component API of the Java API for XML
Processing.
|
| org.w3c.dom.ls |
| Modifier and Type | Class and Description |
|---|---|
class |
IIOMetadataNode
A class representing a node in a meta-data tree, which implements
the
org.w3c.dom.Element interface and additionally allows
for the storage of non-textual objects via the
getUserObject and setUserObject methods. |
| Modifier and Type | Method and Description |
|---|---|
Element |
W3CDomHandler.getElement(DOMResult r) |
| Modifier and Type | Method and Description |
|---|---|
Source |
W3CDomHandler.marshal(Element element,
ValidationEventHandler errorHandler) |
| Modifier and Type | Method and Description |
|---|---|
Element |
DOMCryptoContext.getElementById(String idValue)
Returns the
Element with the specified ID attribute value. |
| Modifier and Type | Method and Description |
|---|---|
void |
DOMCryptoContext.setIdAttributeNS(Element element,
String namespaceURI,
String localName)
Registers the element's attribute specified by the namespace URI and
local name to be of type ID.
|
| Modifier and Type | Interface and Description |
|---|---|
interface |
Detail
A container for
DetailEntry objects. |
interface |
DetailEntry
The content for a
Detail object, giving details for
a SOAPFault object. |
interface |
SOAPBody
An object that represents the contents of the SOAP body
element in a SOAP message.
|
interface |
SOAPBodyElement
A
SOAPBodyElement object represents the contents in
a SOAPBody object. |
interface |
SOAPElement
An object representing an element of a SOAP message that is allowed but not
specifically prescribed by a SOAP specification.
|
interface |
SOAPEnvelope
The container for the SOAPHeader and SOAPBody portions of a
SOAPPart object. |
interface |
SOAPFault
An element in the
SOAPBody object that contains
error and/or status information. |
interface |
SOAPFaultElement
A representation of the contents in
a
SOAPFault object. |
interface |
SOAPHeader
A representation of the SOAP header
element.
|
interface |
SOAPHeaderElement
An object representing the contents in the SOAP header part of the
SOAP envelope.
|
| Modifier and Type | Method and Description |
|---|---|
SOAPElement |
SOAPFactory.createElement(Element domElement)
Creates a
SOAPElement object from an existing DOM
Element . |
| Modifier and Type | Method and Description |
|---|---|
abstract <T extends EndpointReference> |
Endpoint.getEndpointReference(Class<T> clazz,
Element... referenceParameters)
Returns the
EndpointReference associated with
this Endpoint instance. |
<T extends EndpointReference> |
WebServiceContext.getEndpointReference(Class<T> clazz,
Element... referenceParameters)
Returns the
EndpointReference associated with
this endpoint. |
abstract EndpointReference |
Endpoint.getEndpointReference(Element... referenceParameters)
Returns the
EndpointReference associated with
this Endpoint instance. |
EndpointReference |
WebServiceContext.getEndpointReference(Element... referenceParameters)
Returns the
EndpointReference for this
endpoint. |
| Modifier and Type | Method and Description |
|---|---|
abstract W3CEndpointReference |
Provider.createW3CEndpointReference(String address,
QName serviceName,
QName portName,
List<Element> metadata,
String wsdlDocumentLocation,
List<Element> referenceParameters)
Factory method to create a
W3CEndpointReference . |
abstract W3CEndpointReference |
Provider.createW3CEndpointReference(String address,
QName serviceName,
QName portName,
List<Element> metadata,
String wsdlDocumentLocation,
List<Element> referenceParameters)
Factory method to create a
W3CEndpointReference . |
W3CEndpointReference |
Provider.createW3CEndpointReference(String address,
QName interfaceName,
QName serviceName,
QName portName,
List<Element> metadata,
String wsdlDocumentLocation,
List<Element> referenceParameters,
List<Element> elements,
Map<QName,String> attributes)
Factory method to create a
W3CEndpointReference . |
W3CEndpointReference |
Provider.createW3CEndpointReference(String address,
QName interfaceName,
QName serviceName,
QName portName,
List<Element> metadata,
String wsdlDocumentLocation,
List<Element> referenceParameters,
List<Element> elements,
Map<QName,String> attributes)
Factory method to create a
W3CEndpointReference . |
W3CEndpointReference |
Provider.createW3CEndpointReference(String address,
QName interfaceName,
QName serviceName,
QName portName,
List<Element> metadata,
String wsdlDocumentLocation,
List<Element> referenceParameters,
List<Element> elements,
Map<QName,String> attributes)
Factory method to create a
W3CEndpointReference . |
| Modifier and Type | Method and Description |
|---|---|
W3CEndpointReferenceBuilder |
W3CEndpointReferenceBuilder.element(Element element)
Adds an extension element to the
W3CEndpointReference instance's
wsa:EndpointReference element. |
W3CEndpointReferenceBuilder |
W3CEndpointReferenceBuilder.metadata(Element metadataElement)
Adds the
metadataElement to the
W3CEndpointReference instance's
wsa:Metadata element. |
W3CEndpointReferenceBuilder |
W3CEndpointReferenceBuilder.referenceParameter(Element referenceParameter)
Adds the
referenceParameter to the
W3CEndpointReference instance
wsa:ReferenceParameters element. |
| Modifier and Type | Method and Description |
|---|---|
Element |
Document.createElement(String tagName)
Creates an element of the type specified.
|
Element |
Document.createElementNS(String namespaceURI,
String qualifiedName)
Creates an element of the given qualified name and namespace URI.
|
Element |
Document.getDocumentElement()
This is a convenience attribute that allows direct access to the child
node that is the document element of the document.
|
Element |
Document.getElementById(String elementId)
Returns the
Element that has an ID attribute with the
given value. |
Element |
Attr.getOwnerElement()
The
Element node this attribute is attached to or
null if this attribute is not in use. |
| Modifier and Type | Method and Description |
|---|---|
short |
LSParserFilter.startElement(Element elementArg)
The parser will call this method after each
Element start
tag has been scanned, but before the remainder of the
Element is processed. |
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2015, Oracle and/or its affiliates. All rights reserved.


Glad you are here! This post is not avalaible yet here, but as you know you can read it in my Github.


Robot, start with your hands at your sides and your feet together. Then, jump up and spread your legs until your feet are 18 inches apart while you're raising your arms to the side until they're at a 45 degree angle to your shoulers. Reverse the motion to your starting point, then repeat 10 times


{{post.publishedDate|date:"d"}} {{post.publishedDate|date:"M"}} {{post.title}} {{post.text|truncatechars:200}} Travel, Lifestyle {{post.approvedComment.count }} Comments


Sarah Lopriore
About
Portfolio
Contact
Portfolio
Project 1
Project
Code
Preview
Train Scheduler
Project
Code
Preview
Gif Generator
Project
Code
Preview
National Park Trivia Game
Project
Code
Preview
Crystal Collector Game
Project
Code
Preview
LIRI
Project
Code
Preview
Bamazon
Project
Code
Preview
Friend Finder
Project
Code
Preview
Eat the Burger
Project
Code
Preview


We're sorry, but we were unable to service your request. It's possible that the problem is a temporary condition.
We apologise for the inconvenience.


This paragraph does not establish a containing block for any of its descendant elements that are absolutely positioned. Therefore, the absolutely positioned boldface element it contains will be positioned with respect to the initial containing block.
Thanks to position: relative
, this paragraph establishes a containing
block for any of its descendant elements that are absolutely positioned.
Since there is such an element-- that is to say, a boldfaced element
that is absolutely positioned, placed with respect to its containing
block (the paragraph), it will appear within the element box generated
by the paragraph.


Main Hall
Hi!
Someplace, USA
The evening of November 27th, 2012
Johnny Doe
Story tool
www.burningtomato.com


First, make a URL pattern:
(r'^overlay/(?P<z>\d{1,2})_(?P<x>\d{1,5})_(?P<y>\d{1,5}).png$', 'my_app.views.overlay'),
# matches all requests that look like this: http://domain.com/overlay/23_34_54.png
Now create a view like so:
def overlay(request, z, x, y):
from overlay.overlays import GTileOverlay as GTO
qs = MyModel.objects.all()
qs2 = MyOtherModel.objects.all()
ov = GTO(z,x,y,
queryset=qs,
field='location') # Name of the PointField which contains the lat/long information
icon="/path/to/icon.png")
ov2 = GTO(z,x,y,
queryset=qs2,
fields=('lat', 'lng'), # name of the two FloatFields containing the lat/longs
hard_limit=500, # limit the amount of icons per square to 500 items.
image=ov.output(), # output overtop the previous overlay
)
# This will output the queryset of the images that would have
#been placed on the image, also the bounds will not be expanded
new_qs2 = ov2.output(expand=False, just_queryset=True)
# boilerplate below, this can be made into a decorator for ease of use
response = HttpResponse(mimetype="image/png")
ov2.output().save(response, "PNG")
return response
Add the following code to your google maps page:
<script type="text/javascript">
var MyOverlay = new GTileLayerOverlay(
new GTileLayer(null, null, null, {
tileUrlTemplate: '/overlay/{Z}_{X}_{Y}.png/', //must match your urlpattern
isPng:true,
opacity:1.0}
)
);
map.addOverlay(MyOverlay);
</script>


Playground
Based on the excellent
DoT.js
website
NPM
npm install squirrelly --global npm install squirrelly --save-dev
Yarn
PNPM


I love you
I love you with
the love that will die
Till the sun grow cold and
the moon grow cold
thousands of maiden
there may be
ten of thousands of damsels
millions of girls
my love, you are unique
you're the sweetest
you're the finest
you're the greatest
I love you with love that will never die


{% extends "base.html" %} {% import "bootstrap/wtf.html" as wtf %} {% import "_macros.html" as macros %} {% block title %}Pipeline Control{% endblock %} {% block page_content %}


playerctl play-pause- Next media:
playerctl next- Previous media:
playerctl previous- List all players:
playerctl --list-all- Send a command to a specific player:
playerctl --player=player_name command- Send a command to all players:
playerctl --all-players command- Show now playing:
playerctl metadata --format "Now playing: artist - album - title"


{{selectedRoom.title}} ( {{usersList.length}} {{usersList.length == 1 ? 'person' : 'people'}})
Type a Nickname
and pick a chat room
Coming soon
Contact saladatododia@hotmail to donate and help us funding new features
and pick a chat room
Contact saladatododia@hotmail to donate and help us funding new features


Primary backend Ruby and Ruby on Rails developer on the following succesfully funded services.
Privia Health, Lead Developer
A complete concierge healthcare platform including nutrition tracking, lab test result integration, and doctor
patient bi-directional messaging.
Bypass, Lead Developer
HTML5 mobile web app that lets you skip the concession line at a stadium venue by ordering food on your
phone.
Comprised of a mobile ordering application, touch screen fulfillment interface, and an administration application
that services over 15 stadium venues.
Develop multi-tier application using MSSQL, NHibernate, C#, and ASP.Net in order to streamline a lengthy paper
and mail-based process.
Focus on applying design patterns and an object-oriented architecture to handle multiple core system upgrades
over a 3-year period.
Community Contributions
Founder of Ruby
Hacknight
Organized monthly meetups from 2009-2011 with a user base of over 250 members.
Hackday
Helped plan and lead a series of free 1/2 day workshops on various Ruby and Ruby on Rails topics such as
Refactoring Rails Controllers, Test-Driven Development in Rails, and Ruby Meta-Programming.
Open Source
simple_importer: Simple API for
importing from csv, tsv and xml
crags: Search across multiple craigslist
locations


Bocas del Toro is on the north eastern coast of Panama, about 20nm from the border with Costa Rica, outside the hurricane zone. This is a beautiful, un-crowded cruising ground, with many unspoilt anchoarges and three good marinas to choose from.
Position 9°20'N, 82°14.5'W.
The old commercial channel is located between Isla Bastimentos and Isla Carenero. Charts show buoys marking this channel. HOWEVER, this channel is no longer used by commercial traffic and there are NO BUOYS marking this channel now. It remains navigable and is still the primary channel used by non-commercial traffic.
The new commercial channel is now located northwest of the above channel, between the mainland and Bocas del Drago. It is well marked and well lit.
See this noonsite report for Latest Updates from Cruisers for Bocas del Toro.
For full details on clearing into and out of Panama see the noonsite page Panama Formalities.
Port Captain, Customs and Immigration are located in Bocas Town.
If you have already cleared into Panama with Immigration, Customs and a Port Captain, and you have a zarpe, then you only need to give the zarpe to the Bocas Port Captain when you go to town (closes at 3pm, Monday to Friday).
A zarpe is required in Panama when leaving the country of Panama, or when leaving the waters controlled by one Port Captain and entering waters controlled by another Port Captain (i.e., moving between different jurisdictions). Bocas del Toro has a different Port Captain from the one that controls the Shelter Bay area.
If you are arriving from outside of Panama, then the Port Captain will come to your boat with the Customs, Immigration and Health officers and clear you in (around 6 officials).
Non-overtime costs to clear in here:
Boarding Services $170.00
Cruising Permit (Valid one year/12 Months) $193.00
Panama VISA per person (Valid one year/12 Months) $105.00
Non-overtime costs to clear out here:
Exit Zarpe - approx. US$5
Customs and Immigration charge - US$40 per person
Note however that overtime charges (arriving at the weekend and after 3pm week days) have been reported as being as much as US$60.
Payment must be made ashore at the port office.
Last updated January 2015.
There are three marina choices in Bocas, plus over 50 unspoiled anchorages in the area.
Bocas Marina has been popular for over a decade and still receives glowing reports from cruisers. It is a short dinghy ride from Bocas town.
Marina Carenero sits on an island that looks across to Bocas Town. It is the least expensive of the local marinas.
Red Frog Marina is quite a distance from town, located on Isla Bastimentos and is now part of the Island Global Yachting (IGY) network of marinas. It is only a few years old and nicely maintained. Aside from cruising boats, they are also trying to attract mega-yachts.
Take care at night as many of the water taxis do not display running lights in the evening and travel at speed.
The boatyard here - Bocas Yacht Services - has haulout facilities up to 60 tons and is located next to Almirante on the mainland. See boatyards for more information.
Bocas town is a relaxed, fun place, with easy provisioning, hardware stores, repair shops, restaurants and bars.
Every morning at 0745 there is a Cruisers and Expats Net on VHF channel 68. There is also a 24/7 emergency radio network if anyone is in difficulty or injured.
Last updated January 2015.


| Package | Description |
|---|---|
| com.itextpdf.awt.geom |
| Modifier and Type | Class and Description |
|---|---|
class |
Point |
static class |
Point2D.Double |
static class |
Point2D.Float |
| Modifier and Type | Method and Description |
|---|---|
Point2D |
AffineTransform.deltaTransform(Point2D src,
Point2D dst) |
abstract Point2D |
CubicCurve2D.getCtrlP1() |
Point2D |
CubicCurve2D.Float.getCtrlP1() |
Point2D |
CubicCurve2D.Double.getCtrlP1() |
abstract Point2D |
CubicCurve2D.getCtrlP2() |
Point2D |
CubicCurve2D.Float.getCtrlP2() |
Point2D |
CubicCurve2D.Double.getCtrlP2() |
abstract Point2D |
QuadCurve2D.getCtrlPt() |
Point2D |
QuadCurve2D.Float.getCtrlPt() |
Point2D |
QuadCurve2D.Double.getCtrlPt() |
Point2D |
GeneralPath.getCurrentPoint() |
abstract Point2D |
QuadCurve2D.getP1() |
Point2D |
QuadCurve2D.Float.getP1() |
Point2D |
QuadCurve2D.Double.getP1() |
abstract Point2D |
Line2D.getP1() |
Point2D |
Line2D.Float.getP1() |
Point2D |
Line2D.Double.getP1() |
abstract Point2D |
CubicCurve2D.getP1() |
Point2D |
CubicCurve2D.Float.getP1() |
Point2D |
CubicCurve2D.Double.getP1() |
abstract Point2D |
QuadCurve2D.getP2() |
Point2D |
QuadCurve2D.Float.getP2() |
Point2D |
QuadCurve2D.Double.getP2() |
abstract Point2D |
Line2D.getP2() |
Point2D |
Line2D.Float.getP2() |
Point2D |
Line2D.Double.getP2() |
abstract Point2D |
CubicCurve2D.getP2() |
Point2D |
CubicCurve2D.Float.getP2() |
Point2D |
CubicCurve2D.Double.getP2() |
Point2D |
AffineTransform.inverseTransform(Point2D src,
Point2D dst) |
Point2D |
AffineTransform.transform(Point2D src,
Point2D dst) |
| Modifier and Type | Method and Description |
|---|---|
void |
Rectangle2D.add(Point2D p) |
boolean |
Shape.contains(Point2D point) |
boolean |
RectangularShape.contains(Point2D point) |
boolean |
QuadCurve2D.contains(Point2D p) |
boolean |
Line2D.contains(Point2D p) |
boolean |
GeneralPath.contains(Point2D p) |
boolean |
CubicCurve2D.contains(Point2D p) |
Point2D |
AffineTransform.deltaTransform(Point2D src,
Point2D dst) |
double |
Point2D.distance(Point2D p) |
double |
Point2D.distanceSq(Point2D p) |
Point2D |
AffineTransform.inverseTransform(Point2D src,
Point2D dst) |
int |
Rectangle2D.outcode(Point2D p) |
double |
Line2D.ptLineDist(Point2D p) |
double |
Line2D.ptLineDistSq(Point2D p) |
double |
Line2D.ptSegDist(Point2D p) |
double |
Line2D.ptSegDistSq(Point2D p) |
int |
Line2D.relativeCCW(Point2D p) |
void |
QuadCurve2D.setCurve(Point2D[] points,
int offset) |
void |
CubicCurve2D.setCurve(Point2D[] points,
int offset) |
void |
QuadCurve2D.setCurve(Point2D p1,
Point2D cp,
Point2D p2) |
void |
CubicCurve2D.setCurve(Point2D p1,
Point2D cp1,
Point2D cp2,
Point2D p2) |
void |
RectangularShape.setFrame(Point2D loc,
Dimension2D size) |
void |
RectangularShape.setFrameFromCenter(Point2D center,
Point2D corner) |
void |
RectangularShape.setFrameFromDiagonal(Point2D p1,
Point2D p2) |
void |
Line2D.setLine(Point2D p1,
Point2D p2) |
void |
Point2D.setLocation(Point2D p) |
void |
AffineTransform.transform(Point2D[] src,
int srcOff,
Point2D[] dst,
int dstOff,
int length) |
void |
AffineTransform.transform(Point2D[] src,
int srcOff,
Point2D[] dst,
int dstOff,
int length) |
Point2D |
AffineTransform.transform(Point2D src,
Point2D dst) |
| Constructor and Description |
|---|
Line2D.Double(Point2D p1,
Point2D p2) |
Line2D.Float(Point2D p1,
Point2D p2) |
Copyright © 2014. All Rights Reserved.


PROJECTS
HOME ↠
Jubliee Austen Project
Rogue Pickings
Recipe Card Project
Vision Board
Portfolio V1.0
Unplugged


Sarcasm from the Canadian Press
The CP's take on the 360:
Also available are walks in the park, books, films, time with the family ...
Bravo!
(Yes, they were sold out by the time I got there)
About this entry
You"re currently reading "Sarcasm from the Canadian Press," an entry on ♥♥♥ OMG!!1! PONIES!!! ♥♥♥
- Published:
- 11.22.05 / 9pm
- Category:
- Gamering


This section has an aria-labelledby that is correct.
This section has an aria-labelledby that is correct.
This section has an aria-labelledby that is, again, correct.
This section has an aria-labelledby that incorrect! Notice how the aria-labelledby
and id
attributes don't match. This is what causes accessibility problems. If you have multiple section
tags on a page, each respective section tag must have a valid aria-labelledby
or aria-label
attribute. We should also only use aria-label
as a last resort.


ʀoToᴙ.js
rotate3d manipulation library - lightweight and extensible
Documentation
Download
Fork me on Github
by
@Louis_remi


Resizable Table Columns Demo
Try to resize columns in tables below1. Guess how to do this... ;)
| cell 11 |
cell 12 |
cell 13 |
| cell 21 |
cell 22 |
cell 23 |
| cell 31 |
cell 32 |
cell 33 |
| cell 11 |
cell 12 |
cell 13 |
| cell 21 |
cell 22 |
cell 23 |
| cell 31 |
cell 32 |
cell 33 |
and another table:
| cell 11 |
cell 12 |
cell 13 |
cell 14 |
cell 15 |
cell 16 |
cell 17 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 31 |
cell 32 |
cell 33 |
cell 34 |
cell 35 |
cell 36 |
cell 37 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
| cell 21 |
sdfsdfsdfsdfsdfsdfsdfdsfsdfd cell 22 |
cell 23 |
cell 24 |
cell 25 |
cell 26 |
cell 27 |
|
Did you enjoy?
To use it on page you just need to add 'class=resizable' in table tag and
include resizable-tables.js script somewhere.
valid CSS
valid XHTML
© 2006, bz


This page will be replaced with links to RSS feeds, once your digital repository has items and collections.


Etsy
Search
Sell on Etsy
Register
Sign In
Cart
Clothing & Accessories
Jewelry
Crafting Supplies & Tools
Weddings
Entertainment
Home & Living
Kids & Baby
Vintage
Show results for:
All categories
>
"Cowboy Bebop" (358 Results)
Sort by:
Relevancy
All Categories
Art & Collectables
Clothing
Home & Living
Accessories
Electronics & Accessories
Bags & Purses
Jewelry
Toys & games
Books, Movies & Music
Craft Supplies & Tools
Weddings
Shoes
<
1
2
3
4
5
6
8
>
Get top trends and fresh editors' picks in your inbox with Etsy Finds.
Subscribe
Turn your passion into a business
Open a shop
Sell on Etsy
Open a shop
Seller Handbook
Etsy credit card reader
Manufacturing
Join the community
Teams
Forums
Upcoming events
Affiliates
Etsy Local
Discover and shop
Gift cards
Blog
Mobile apps
Gift registeries
Wholesale
Search
Editors' Picks
Get to know us
About
Policies
Careers
Press
Developers
Investors
Follow Etsy
Facebook
Twitter
Pinterest
Instagram
United States
|
English
|
$ (USD)
2017 Etsy, Inc.
Legal
Privacy
Interest-based ads
Help


GUI.SetDefault
Syntax
GUI.SetDefault (widgetID : int, default : boolean)
Description
Sets the "default status" of a button specified by widgetID.
If a button is the default button, then it is drawn with a heavy
outline and it is activated when the user presses ENTER.
Only one button can be the default button per window. If a button
is set to be the default button, then the previous default button
has its "default status" removed.
Status
Exported qualified.
This means that you can only call the procedures by calling
GUI.SetDefault, not by calling SetDefault.
See also
GUI.CreateButton.