Can't sleep. Fingers keep hitting keys.
"And as the full moon began to rise, accompanied by the light of a thousand stars singing like angels in the heaven’s choir, I could almost see its smile."


| Account nickname ^ | Account number | Current balance* |
| CURRENT ACCOUNT | ||
| MASTERCARD | ||
| SAVINGS |
* This balance may include uncleared funds e.g. a deposited cheque.
* Personal Loan balances may exclude fees and interest charges on any overdue installments. If you require an up to date settlement figure please contact us.
| Total credit balance: | |
| Total debit balance: | |
| Net position: |


At Saratoga Springs we strive to support the needs of each group and individual. Please complete the form below with as many specifics as possible and we will respond with details on how we can best serve you or your group. We will also send you rate information and a brochure.


Content-type: text/html; charset=UTF-8
Man page of DDPT_SGL
DDPT_SGL
Section: DDPT (8)
Updated: April 2021
Index
Return to Main Contents
NAME
ddpt_sgl - helper for ddpt utility's scatter gather lists
SYNOPSIS
ddpt_sgl
[--action=ACT] [--a-sgl=SGL] [--b-sgl=SGL]
[--chs=CHS] [--degen=DV] [--document]
[--elem=SE[,LE]] [--extension=FNE] [--flexible]
[--help] [--hex] [--iaf=IAF] [--index=IA]
[--interleave=IL] [--non-overlap] [--out=O_SGL]
[--quiet] [--round=RB] [--sort-cmp=SC]
[--stats] [--verbose] [--version]
DESCRIPTION
This utility is a scatter gather list helper for the ddpt utility which
copies data between or within SCSI devices (logical units). While ddpt's
command line syntax is modelled on that of the POSIX dd command, this
utility has a more standard Unix command line syntax with both short and
long variants of each option.
Scatter gather lists (sgl_s) are made up of scatter gather elements. Each
element is made up a starting logical block address (LBA) and a number of
blocks (NUM) from and including that LBA.
The scatter gather lists can also be viewed as arrays in which elements can
be accessed by an index. Multiple sgl elements can be accessed with an
array of indexes, hence index arrays. Indexes in this utility start at 0
and run to (n - 1) where n is the number of elements in the sgl. Also
negative indexes are permitted where -1 is the index of the last sgl
element, -2 is the index of the second last sgl element, etc.
For "twin" actions there is an assumed relationship between a-sgl and
b-sgl as there is between two sgl_s used as the gather list (e.g. skip=)
and the scatter list (e.g. seek=) in the ddpt utility. Breaking it down
to individual logical blocks: LBAr0 is read and its data is written to
LBAw0, LBAr1-->LBAw1, LBAr2-->LBAw2, etc; or more generally
LBAr_n-->LNAw_n. Many actions will change the order in which
those "read-write" items are performed, the twin portion of the action
attempts to maintain the LBAr_n-->LNAw_n mapping. Generally speaking,
copies are the same no matter what order the LBAs are read and written. One
exception is an overlapping scatter list (i.e. on the write side) in which
case the order of writes onto the same LBA does matter, hence there is an
option to check sgl_s are well-formed in that respect:
--non-overlap.
For background on scatter gather lists see the section of that name in the
ddpt(8) manpage found in this package. There is a web page at
https://sg.danny.cz/sg/ddpt.html .
OPTIONS
Arguments to long options are mandatory for short options as well.
- -a, --action=ACT
-
ACT is some action to perform on the given scatter gather list(s).
To list the available actions set ACT to 'xxx' (or 'enum'). The
available actions are listed in the ACTIONS section below.
- -A, --a-sgl=SGL
-
SGL is a scatter gather list, a sequence of comma separated unsigned
integers (up to 64 bits each). SGL has several forms, the simplest
is: LBA0,NUM0,LBA1,NUM1,LBA2,NUM2... and there should be an even number
of values with the exception of LBA0 appearing by itself. In this case NUM0 is
assumed to be 0. Other SGL forms are '@<filename>' and 'H@<filename>'
where the contents of the <filename> is parsed as a scatter gather list.
Since there are two options for inputting SGLs, this one is termed as
the 'a-sgl'.
See the section on FILE FORMATS below and the section on SCATTER GATHER
LISTS in the ddpt(8) manpage for more information on sgl_s and their
associated terminology.
- -B, --b-sgl=SGL
-
SGL is a scatter gather list, a second list termed as the 'b-sgl' to
differentiate it from the other sgl (a-sgl).
- -C, --chs=CHS
-
CHS is a 3 element tuple, separated by commas. Currently 16 bit values
from 1 to 0xffff are accepted (the cylinder can be one more: 0x10000 (or
65536)). The first value is the number of cylinders, the second value is the
number of heads (limited to 16), and the final value is the number
of sectors per track (limited to 255). Sectors are counted origin 1 according
to CHS conventions (cf. normal LBAs which nearly always count from 0).
- -D, --degen=DV
-
DV of 0 (the default) means that all degenerate elements (apart from
the last) are ignored (and dropped from the internal representation which may
later be written to an output file). If DV is odd then a degenerate
element's LBA is taken into account when calculating the highest and lowest
LBA in a sgl (and may be included in an output file). If DV is even
(apart from a DV of 0) then a degenerate element's LBA it taken into
account when determining if a sgl is monotonic increasing, decreasing or
neither (and may be included in an output file).
- -d, --document
-
this option causes information about the a sgl or index array to be written
as comments (i.e. lines starting with '#') to the beginning of output
file(s) created by this utility.
If this option is given twice then the command line that caused the output
is added to the file as a comment (before any numbers are output).
- -E, --elem=SE[,LE]
-
this option allows a single sgl element (at position SE (starting
element index)) to be output to O_SGL or O_SGL.FNE (or
IAF). SE is origin 0. If LE (last element index) is given
then a range of sgl elements are output starting at index SE to index
LE inclusive. If a "twin" operation is being performed then this
option only applies to the "a" side output, not the "twin" side. This
option is ignored by the output of the split_n and tsplit_n actions.
Negative values for either SE or LE count from the end of
sgl. For example --elem=0,-1 refers to the whole of the list.
If LE is less than SE (after any negative indexes are
converted to their equivalent positive index) then that range is output
in reverse.
- -e, --extension=FNE
-
FNE is the filename extension used when output filenames are
generated. For non-split actions the generated filenames are of the form:
O_SGL.FNE . For the split_n action the generated filenames
are of the form: O_SGL[1..n].FNE . For the tsplit_n action
the a-sg is named as per the previous sentence, while for the b-sgl
the generated filenames are of the form: O_SGL[1..n]_t.FNE .
If O_SGL is '-' (by itself) then all output is sent to stdout and
this option is ignored.
- -f, --flexible
-
this option effects the parsing (reading) of sgl_s and index arrays that
are in files which are in hexadecimal. Such files should have a leading
line (i.e. before any numbers) with 'HEX' on it. Without this option any
such file must be invoked with 'H@' before the filename; in other words
the 'H' in the invocation needs to match the 'HEX' in the file. With this
option a file can be invoked with '@' and if a line with 'HEX' is parsed
before any numbers then it switches to hexadecimal mode; so that all the
parsed numbers are assumed to be in hexadecimal.
- -h, --help
-
outputs the usage message summarizing command line options then exits.
- -H, --hex
-
used to define the numeric format of sgl and index array elements written to
output (often a file named O_SGL or stdout). If not given then only
decimal values are written to output. If this option is given once then
hexadecimal values, prefixed with '0x', are written. If this option is
given twice then a line with the string 'HEX' is written to output, before
any values, and those values are implicitly hexadecimal (i.e. no
leading '0x' nor 'h' suffix).
- -I, --iaf=IAF
-
where IAF is a filename (or '-' for stdout) to write an index array
to. The only action that generates an index array currently is
--action=sort (and tsort). This option can be together used with, or
in place of, the --out=O_SGL option.
The --document, --elem=SE[,LE] and --hex options
effect what is written. See the section on FILE FORMATS below.
- -x, --index=IA
-
where IA is one or more indexes, comma separated or, if prefixed
by "@" or "H@", a filename containing a list of indexes. These indexes are
used by the --action=select and --action=tselect to
select elements from the 'a-sgl'. Positive and negative indexes that are
too large (in absolute terms) are ignored and create noise if the
--verbose option is given. See the section on FILE FORMATS below.
- -i, --interleave=IL
-
IL is an integer, starting from 0. When IL is 0 (the default)
there is no interleave. The interleave only effects the split_n and tsplit_n
actions and when greater than zero is the maximum number of logical blocks
written in each segment in the output file, prior to moving to the next
output file.
For the case where IL is 1 and --action=split_1 is given
then the output file will have every LBA (given by the a-sgl) as a
separate sgl element (and thus each will have a NUM of 1).
For the tsplit_n action the interleave is only applied to the a-sgl
but it does effect the twin sgl files.
- -N, --non-overlap
-
Checks any given sgl and any resulting sgl (from an action) to see if
any portion of the sgl overlaps. This is done by first sorting each
sgl by the LBA field, then checking every element against the previous
one to determine if there is overlap. SCSI commands that accept sgl_s
process degenerate elements without error but if two elements in a
WRITE command overlap then it is the storage device's choice which one
to WRITE first. The last one to be written will be the one read in
subsequent read operations.
If no errors are detected then if (all) are non-overlapping then 0 is
returned. If no errors are detected then if (any) are overlapping then 36
is returned.
- -o, --out=O_SGL
-
O_SGL is the name of a file to write a resultant scatter gather
list to. If O_SGL is '-' then the output is directed to stdout.
If O_SGL starts with '+' then the output is appended to the file
whose name follows the '+'.
For the split and tsplit actions, the leading '+' is interpreted as appended
to all files that meet the template and exist, otherwise the file is
created. If '-' is given then all output is directed to stdout (and the
--extension=FNE option, if given, is ignored).
- -q, --quiet
-
suppresses warning and messages announcing an action has succeeded. When
this option is given, actions that have a logical (boolean) result don't
output messages but still yield an indicative exit status. The exit status
will typically be either 0 for true or 36 for false.
are typically sent to stderr.
- -r, --round=RB
-
RB is the number of round blocks. Without the option the split_n action
will divide the number of blocks to be split by '<n>' (or use IL) to
get a nominal value. This value is the number of blocks taken from the a-sgl
before moving to the next output file. The RB value (default 0) is
the maximum number of blocks the nominal value may be changed by to align
with an existing element boundary in the a-sgl.
If the number of blocks in 'a-sgl is less than 10 or RB is greater
than one third of the nominal value, then RB is ignored (with a
notification written to stderr).
For the tsplit_n action this option only applies to the a-sgl.
- -S, --sort-cmp=SC
-
where SC is a value indicating what the sort action's comparison will
be. When SC is 0 (the default) the sort is ascending based on the LBA;
when it is 1 the sort is descending based on LBA. When SC is 2 the
sort is ascending based on NUM; when it is 3 the sort is descending based
on NUM. Any other value is mapped to 0. All sorts are stable which means
that sgl elements with the same LBA (in the case of SC being 0 or 1)
keep their same relative position. A side effect of this is that the
ascending and descending sorts are not always reversals of one another.
- -s, --stats
-
print out sgl statistics on any given sgl and any resultant sgl.
- -v, --verbose
-
increase the level of verbosity, (i.e. debug output).
- -V, --version
-
print the version string and then exit.
ACTIONS
Actions are given on the command line as part of the --action=ACT
option. Currently only one action is allowed per invocation. If more are
allowed in the future, they will be comma separated and performed in the
order in which they appear (i.e. left to right).
If no action is given and the --a-sgl=SGL and --out=O_SGL
options (with no --b-sgl=SGL option) are given then the a-sgl
is copied to O_SGL (or O_SGL.FNE if the
--extension=FNE option is given).
The actions are listed below in alphabetical order.
- append-b2a
-
appends the b-sgl to the end of the a-sgl and outputs the result to
O_SGL (or O_SGL.FNE if the --extension=FNE option
is given). Requires the --a-sgl=SGL, --b-sgl=SGL and
--out=O_SGL options.
- divisible<n>[,L|N] or divisible_<n>[,L|N]
-
where <n> is an integer, 1 or higher. This action checks if each LBA and NUM
in a-sgl is divisible by <n> (where 'is divisible' is equivalent to having a
remainder of zero). If all are divisible then true is returned (i.e. the exit
status 0); otherwise false is returned (i.e. exit status 36).
If the optional ",L" suffix (or ",LBA") is given then only each LBA element
in a-sgl is checked for divisibility. If the optional ",N" suffix (or ",NUM")
then only each NUM element in a-sgl is checked for divisibility.
The output of the string to stderr announcing divisibility, or lack of it, can
be suppressed by the --quiet option.
- enum
-
prints out the list of supported actions then exits. Giving the action 'xxx'
has the same effect.
- equal
-
this action compares the sgl_s given to --a-sgl=SGL and
--b-sgl=SGL. If the same LBAs are in the same order with the same
overall number of blocks (but not necessarily the same number of elements)
then true is returned (i.e. the exit status 0); otherwise false is
returned (i.e. exit status 36). For example the two element
sgl "0x10,0x5, 0x15,0x2" is 'equal' to the one element sgl "0x10, 0x7".
The output of the string to stderr announcing equality, or lack of it, can
be suppressed by the --quiet option.
- none
-
this action does nothing. This is the default action. If --a-sgl=SGL
and --out=O_SGL options are given and no other action, then a-sgl
is copied to O_SGL.
It is a placeholder.
- part-equal
-
this action is similar to the equal action but relaxes the condition
that both lists must have the same overall number of blocks. For example the
two element sgl "0x10,0x5, 0x15,0x2" is 'part-equal' to the one element
sgl "0x10, 0x12".
- part-same
-
this action is similar to the same action but relaxes the condition
that both lists must have the same overall number of blocks. For example the
two element sgl "0x15,0x2,0x10,0x5" is 'part-same' as the one element
sgl "0x10, 0x12".
- same
-
this action is similar to the equal action but relaxes the condition
that both lists must be in the same order. The implementation sorts both
given lists before comparing them. For example the two element
sgl "0x15,0x2, 0x10,0x5" is the 'same' as the one element sgl "0x10, 0x7".
- scale<n> or scale_<n>
-
where <n> is an integer, positive or negative but not zero. When <n> is
positive then the starting LBA and the NUM in each a-sgl element is
multiplied by <n> . The new (scaled) sgl is written to O_SGL (or
O_SGL.FNE if the --extension=FNE option is given).
When <n> is negative then the absolute value of <n> is used as a divisor
for each starting LBA and NUM in each a-sgl element.
As an example: converting a 512 byte logical block (LB) size sgl to a 4096
byte LB size and vice versa is relatively common. To convert from 4096 -->
512 byte LB size then --action=scale_8 is appropriate. To convert
from 512 --> 4096 byte LB size then --action=scale_-8 is
appropriate.
Note: because an integer division is used (that rounds 'towards zero')
when <n> is negative then LBs or NUMs may be "lost" in this conversion. This
can be checked beforehand with the --action=divisible<n>[,L|N]
option. For example: for 512 --> 4096 conversions:
--action=divisible_8 will report if any starting LBAs or NUMs are
not divisible be 8 and hence are not able to be precisely represented as
4096 byte LB addresses or number of 4096 byte blocks.
- select
-
this action can be used to select a subset (or superset) of the a-sgl in the
specified order. Alternatively it can be seen as re-ordering the elements
in a-sgl such as is done toward the end of a sort operation. Assuming all
the indexes in IA are valid, then the O_SGL file will have the
same number of elements as there are indexes in IA.
This option requires non-empty --a-sgl=SGL and --index=IA
options, plus the --out=O_SGL option.
- sort
-
this action will sort the sgl given by --a-sgl=SGL in ascending
order by LBA. The resulting sgl is output to O_SGL (or
O_SGL.FNE if the --extension=FNE option is given).
The sort is "stable", so if two elements have the same starting LBA then
they will appear in the same relative order in the output.
- split<n> or split_<n>
-
where <n> is an integer, 1 or higher. This action divides
--a-sgl=SGL into <n> roughly equal length (i.e. number of blocks)
output sgl_s. The output files are named "O_SGL<1..n>"
or "O_SGL<1..n>.FNE". Both the --interleave=IL and
--round=RB options are taken into account during the split process.
- to-chs
-
this action takes the 'flat' LBA SGL given to --a-sgl=SGL and
converts it into CHS (cylinder/head/sector) based SGL which is written
out as directed to --out=O_SGL. This action requires the
--chs=CHS option as well as the --a-sgl=SGL and
--out=O_SGL options.
- tselect
-
this is a "twin select" action that selects from
--a-sgl=SGL (a-sgl) then re-orders --b-sgl=SGL (b-sgl)
in unison. The select from a-sgl is the same as described under the
select action above. Additionally b-sgl is is broken up so it has "breaks"
at the same positions (i.e. number of blocks from the start of the sgl) as
a-sgl does; plus the "breaks" b-sgl has already got. So the "broken up"
b-sgl will have at least as many elements as a-sgl. The output of the
re-ordered b-sgl is then written to O_SGL_t or
O_SGL_t.FNE if the --extension=FNE option is given.
- tsort
-
this is a "twin sort" action that sorts --a-sgl=SGL (a-sgl) and
re-orders --b-sgl=SGL (b-sgl) in unison. The sort of a-sgl is
the same as described under the sort action above. Additionally b-sgl is
is broken up so it has "breaks" at the same positions (i.e. number of blocks
from the start of the sgl) as a-sgl does; plus the "breaks" b-sgl has
already got. So the "broken up" b-sgl will have at least as many elements
as a-sgl. The re-ordering vector generated by the stable sort of a-sgl
is then applied to the broken up b-sgl. The output of the re-ordered
b-sgl is then written to O_SGL_t or O_SGL_t.FNE if the
--extension=FNE option is given.
- tsplit<n> or tsplit_<n>
-
this is a "twin split" action that splits the --a-sgl=SGL and
--b-sgl=SGL into separate series of output files. These separate
series maintain the LBA to LBA correspondence of the original a_sgl and
b_sgl lists. <n> is an integer, 1 or higher. This action divides
--a-sgl=SGL into <n> roughly equal length (i.e. number of blocks)
output sgl_s. The "roughly equal length" is influenced by the
--interleave=IL and --round=RB options. The output filenames
are generated the same way as described for the split action. The sgl
from --a-sgl=SGL is expected to be a "hard" sgl which means its
last element should not be degenerate (i.e. have a NUM of 0).
The second half of the "twin split" is to split the --b-sgl=SGL
sgl. The same number of output files are used as for the 'A' side but
the filenames have a slightly different form: "O_SGL<1..n>_t"
or "O_SGL<1..n>_t.FNE" (if the --extension=FNE option
is given). The critical point of this split is that it moves in lockstep
with the 'A' side split in the sense that whatever block count an 'A'
side segment uses, the following 'B' side segment split uses the same
block count. The sgl from --b-sgl=SGL may be a "hard" or "soft"
sgl. In the simplest case the 'B' side sgl can be just '0' which gets
expanded to '0,0' (i.e. degenerate list starting at LBA 0); this will use
the overall block count from the 'A' side.
FILE FORMATS
Both sgl_s and index arrays can be read from, or written to, files.
The options that supply sgl_s or index arrays to be read (e.g.
--a-sgl=SGL, --b-sgl=SGL and --index=IA) by
default allow them to be given directly on the command line. These
will typically be comma separated lists (although space and tab could be
used as separators if they were appropriately escaped). So with these
options when reading sgl_s and index arrays, a leading "@" or "H@" is
needed to indicate that a file name follows.
By default, numbers given in this utility and other utilities in this
package are assumed to be in decimal. Hexadecimal (hex) numbers can be given
with either a leading "0x" or trailing "h". A whole file can be flagged
as containing hex numbers (and thus not needing a leading "0x" nor
trailing "h" on each number) by using "H@" on the command line before the
filename. The file itself may contain a line with 'HEX' in it, prior to any
numbers that are to be parsed. If the --flexible option is given
then "@" can be used before the filename and when 'HEX' is detected in the
file (before any numbers) the code switches to hex mode. Without the
--flexible option "H@" must be use before the filename. As a
convenience the 'HEX' string may appear after hex numbers have been
decoded and it will be ignored. This is to allow hex sgl_s files to
be concatenated together and still be parsed without error.
A file being parsed may contain comments following a "#" symbols.
Everything from and include the hash mark to the end of a line is
ignored. Blank lines and "whitespace" (spaces, tabs, CRs and LFs) are
also ignored.
If large sgl_s or index arrays are being used it is better to have one
element per line in the file to be read. This is because a line is not
expected to be over 1024 bytes long with more than 254 parsable items on
it. This utility imposes no limit on the number of lines a file to be
parsed may have.
Files to be written out by this utility have their names specified by the
--out=O_SGL (optionally together with --extension=FNE) and
the --iaf=IAF options. Unlike the file reading options, no "@"
character should be placed in front of the filename on the command line. If
a filename of "-" is given then output is written to stdout instead of a
file. stdout is normally the console. If the filename starts with "+" then
that character is skipped the output will be appended to that file, if
it exists. If the filename starts with "+" and the file does not exist
then it is created. If "+" is not given and the file already exists then
it is truncated (to 0) then overwritten. Some output file names have
numbers (e.g. as a result of the --action=spilt_<n> option)
or "_t" (e.g. as a result of "twin" actions) appended to them (before the
extension, if any). Sgl elements are output one per line, with a comma
separating the LBA and the NUM. Index arrays are output one element (an
index) per line. The --hex option controls the form of those
numbers output. If --hex is not given, the numbers are output in
decimal. If the --hex option is given one the number are output
in hex with a "0x" prefix. If the --hex option is given twice then
the line 'HEX' is written to the file before any numbers and those numbers
are in hex without any adornment (i.e. with no leading "0x").
If the --document option is given then some information including
a date timestamp of generation is placed as comments at the beginning of
files that are written out by this utility. If the --document option
is given twice then the invocation line of this utility that caused the
output is placed in the written file as an additional comment.
The written file format is compatible with the read file format. So, for
example, a sgl generated by a invocation of this utility can later be used
as a file to be read by another invocation of this utility.
EXIT STATUS
The exit status of ddpt_sgl is 0 when it is successful. Note that some
options and actions that return a boolean value return 0 for true and
36 for false. Otherwise the exit status for this utility is the same as
that for ddpt. See the EXIT STATUS section in the ddpt man page.
EXAMPLES
Examples are needed. See testing/test_sgl.sh script in this package. That
script can be run without root permissions and places its work file (sgl_s)
in the /tmp directory.
AUTHORS
Written by Douglas Gilbert.
REPORTING BUGS
Report bugs to <dgilbert at interlog dot com>.
COPYRIGHT
Copyright © 2020-2021 Douglas Gilbert
This software is distributed under a FreeBSD license. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
SEE ALSO
ddpt(8), ddptctl(8)
Index
- NAME
-
- SYNOPSIS
-
- DESCRIPTION
-
- OPTIONS
-
- ACTIONS
-
- FILE FORMATS
-
- EXIT STATUS
-
- EXAMPLES
-
- AUTHORS
-
- REPORTING BUGS
-
- COPYRIGHT
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 15:27:20 GMT, April 23, 2021


Protein Chroma
Description:
Every single bar represents an amino acid.
The height of a bar stands for the molecular weight of the amino acid.
The color of a bar stands for the group of the amino acid, following the scheme below.
Small nonpolar
G, A, S, T
Orange
Hydrophobic
C, V, I, L, P, F, Y, M, W
Green
Polar
N, Q, H
Magenta
Negatively charged
D, E
Red
Positively charged
K, R
Blue
Example 1
Example 2
Example 3
Please input your protein sequence below!
Generate


Eldead [ad6z], city, in Mosquito Fens [ao64], in Imperia
Last updated Turn #98
Eldead [ad6z], city, in Mosquito Fens [ao64], in Imperia
------------------------------------------------------------------------
0: Elmar [d7q] recruited 12 peasants.
0: Audrey [j9v] recruited 13 peasants.
1: Audrey [j9v], Pen, with 65 peasants, 36 lt. xbowmen, 11 soldiers,
1: entered Public tower [o18].
1: Audrey [j9v], Pen, with 65 peasants, 36 lt. xbowmen, 11 soldiers,
1: arrived from Eldead General Store [o18].
20: Audrey [j9v] recruited 20 peasants.
20: Elmar [d7q] recruited ten peasants.
21: Audrey [j9v], Pen, with 85 peasants, 36 lt. xbowmen, 11 soldiers,
21: exited Eldead [ad6z], accompanied by:
21: Elmar [d7q], Pen, with ten peasants, 30 workers, 37 pikemen,
21: one skirmisher
Routes leaving Eldead:
Out, swamp, to Mosquito Fens [ao64], 1 day
Garrison [cz7k], garrison, Imperial Empire, with ten soldiers
Cities rumored to be nearby:
Thorbardin [ad7b], in Thorbardin Mountains [ao69]
Chronos [ad8z], in Forest of the Lost [aq61]
Market report (tax of 15%):
trade who price qty wt/ea item
----- --- ----- --- ----- ----
buy ad6z 75 12 1 nazgul tail [319]
buy ad6z 30 8 2 gorgon livers [332]
buy ad6z 9 15 10 fish oil [97]
buy ad6z 9 19 5 wolf hides [333]
buy ad6z 7 9 5 clay pots [95]
Inner locations:
Flaghouse [f20], tower, defense 20
Dragon's eye [r46], Stealth Guild, defense 20
Public tower [j60], tower, defense 20
Eldead General Store [o18], Trading Guild, defense 20
It is raining.
It is windy.


description = "Feature Posts" [proBlogList] postsPerPage = 5 filter_type = "tag" filter_value = "feature" searchpage = "blog" render = "specific" specific = "post" == {% for post in blogPosts %}


#include <boost/qvm/deduce_mat.hpp>
namespace boost { namespace qvm { template < class M, int Rows=mat_traits<Matrix>::rows, int Cols=mat_traits<Matrix>::cols> struct deduce_mat { typedef /*unspecified*/ type; }; } }
is_mat<M>::value is true.
This template is used by Boost QVM whenever it needs to deduce a copyable matrix type of certain dimensions from a single user-supplied function parameter of matrix type. The returned type must have accessible copy constructor. Note that M itself may be non-copyable.
The main template definition returns an unspecified copyable matrix type of size Rows x Cols, except if mat_traits<M>::rows==Rows && mat_traits<M>::cols==Cols, in which case it returns M, which is suitable only if M is a copyable type. Boost QVM also defines (partial) specializations for the non-copyable matrix types it produces. Users can define other (partial) specializations for their own types.
A typical use of the deduce_mat template is for specifying the preferred matrix type to be returned by the generic function template overloads in Boost QVM depending on the type of their arguments.


Configure your build for EAP
If you create new projects using the EAP version of Kotlin, you don’t need to perform any additional steps. The Kotlin Plugin will do everything for you!
You only need to configure your build manually for existing projects — projects that were created before installing the EAP version.
To configure your build to use the EAP version of Kotlin, you need to:
- Specify the EAP version of Kotlin. Available EAP versions are listed here.
- Add the EAP repository to the build – https://dl.bintray.com/kotlin/kotlin-eap.
- Change the versions of dependencies to EAP ones. The EAP version of Kotlin may not work with the libraries of the previously released version.
The following procedures describe how to configure your build in Gradle and Maven:
Configure in Gradle
This section describes how you can:
Adjust the Kotlin version and add the EAP repository
Depending on your configuration approach, you need to perform different steps in your build files. This section describes common options, but if you use a different approach, you can refer to Gradle documentation for assistance.
This section covers:
Option 1. Configure in the build and settings files
- In the
plugins
block withinbuild.gradle
(build.gradle.kts
), change theKOTLIN-EAP-VERSION
to the actual EAP version, such as1.4.20-RC
. Available EAP versions are listed here.
Alternatively, you can specify the EAP version in thepluginManagement
block insettings.gradle
(settings.gradle.kts
) – see Gradle documentation for details. - In the
repositories
block, specify the EAP repository – https://dl.bintray.com/kotlin/kotlin-eap – for dependencies.
Here is an example for the Multiplatform project.
plugins {
id 'java'
id 'org.jetbrains.kotlin.multiplatform' version 'KOTLIN-EAP-VERSION'
}
repositories {
mavenCentral()
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
maven { url 'https://kotlin.bintray.com/kotlinx' }
}
plugins {
java
kotlin("multiplatform") version "KOTLIN-EAP-VERSION"
}
repositories {
mavenCentral()
maven ("https://dl.bintray.com/kotlin/kotlin-eap")
maven ("https://kotlin.bintray.com/kotlinx")
}
- In the
pluginManagement
block withinsettings.gradle
(settings.gradle.kts
), specify the EAP repository – https://dl.bintray.com/kotlin/kotlin-eap.
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' }
}
}
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
maven ("https://dl.bintray.com/kotlin/kotlin-eap")
}
}
Option 2. Configure in the build file only
- In
build.gradle
(build.gradle.kts
), change theKOTLIN-EAP-VERSION
in thebuildscript
block to the actual EAP version, such as1.4.20-RC
.
Available EAP versions are listed here. - Add the EAP repository – https://dl.bintray.com/kotlin/kotlin-eap – to the
buildscript
block. - In the
repositories
block, specify the EAP repository for dependencies.
buildscript {
repositories {
mavenCentral()
gradlePluginPortal()
maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:KOTLIN-EAP-VERSION"
}
}
apply plugin: "kotlin"
repositories {
maven { url "https://dl.bintray.com/kotlin/kotlin-eap" }
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib"
}
Adjust versions in dependencies
If you use kotlinx libraries in your project, your versions of the libraries may not be compatible with the EAP version of Kotlin.
To resolve this issue, you need to specify the version of a compatible library in dependencies. For a list of compatible libraries, see EAP build details.
In most cases we create libraries only for the first EAP version of a specific release and these libraries work with the subsequent EAP versions for this release.
If there are incompatible changes in next EAP versions, we release a new version of the library.
Here is an example.
For the kotlinx.coroutines library, add the version number – 1.3.9
– that is compatible with 1.4.20-RC
.
dependencies {
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
}
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9")
}
Configure in Maven
In the sample Maven project definition, replace KOTLIN-EAP-VERSION
with the actual version, such as 1.4.20-RC
.
Available EAP versions are listed here.
<project ...>
<properties>
<kotlin.version>KOTLIN-EAP-VERSION</kotlin.version>
</properties>
<repositories>
<repository>
<id>bintray.kotlin.eap</id>
<name>Bintray Kotlin EAP Repository</name>
<url>https://dl.bintray.com/kotlin/kotlin-eap</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>bintray.kotlin.eap</id>
<name>Bintray Kotlin EAP Repository</name>
<url>https://dl.bintray.com/kotlin/kotlin-eap</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
...
</plugin>
</plugins>
</build>
</project>


Our Sponsors
The UWRT would not be possible without the generous support of our sponsors. Thank you!


HELLO...
I'm Amanda Jung, an incoming senior at the University of Michigan pursuing a double major in Psychology and Statistics. My interests lie in UX Design and Research. During my free time, you'll catch me coding, taking photos, and traveling.


Toggle navigation
{{ name }}
DevAAC
About
Who is online?
Comunidades
Houses
Guilds List
Guilds Wars
Highscores
Guilds
Guilds List
Guilds Wars
Biblioteca
Items
Monsters
Houses
Shop
Shop
Doação
Register
Login
Account name:
Password:
Log in
Forgot password?
Welcome {{account.name}}!
My account
Logout
Log in
Toggle Dropdown
Register
Lost password?
×
Close
Lost your account name or password?
Email address
L O A D I N G
{{info.players_online_count}} / {{info.maxPlayers}} online
{{searchError}}
Top 5 players by level
Name
Level
{{$index+1}}.
{{player.name}}
{{player.level}}
Server Information
Loading...
IP
{{info.ip}}
Port
{{info.loginProtocolPort}}
World Type:
{{info.worldType | uppercase}}
Download IP Changer


WITNESS LIST Urban Affairs Committee (Subcommittee on HB 818, 1507, 1508, 1510, 1530, 1531) March 27, 2001-2:00P HB 818 For: Villarreal, Johnny (Houston Professional Fire Fighters Local 341) Williams, Steven (Houston Professional Fire Fighters Union Local 341) Against: Connealy, Chris (City of Houston) Haines, Al (City of Houston) Vara, Lonnie (City of Houston) Registering, but not testifying: For: Bailey, Ken (Texas State Association of Fire Fighters) Boriskie, Phil (Houston Professional Fire Fighters) Rouse, Pete (Houston Professional Fire Fighters Local 341) Against: Trevino, Hector (City of Houston)


frappe.website.router.build_route (path)
No docs
frappe.website.router.clear_sitemap ()
No docs
frappe.website.router.get_generator_route (path)
No docs
frappe.website.router.get_generator_routes ()
No docs
frappe.website.router.get_page_route (path)
No docs
frappe.website.router.get_pages ()
No docs
frappe.website.router.get_route_info (path)
No docs
frappe.website.router.process_generators (func)
No docs
frappe.website.router.resolve_route (path)
Returns the page route object based on searching in pages and generators.
The www
folder is also a part of generator Web Page.
The only exceptions are /about
and /contact
these will be searched in Web Pages
first before checking the standard pages.


|
Curtain's
Close
(Eminem) |
|
(Eminem)
Is this thing on? Where'd everybody go? Guess who's back? Back again·.  Eh·.Wait·..Hello? Eh·..Goodnight |


UAPush
Objective-C
@interface UAPush : UAComponent
Swift
class UAPush : UAComponent
This singleton provides an interface to the functionality provided by the Airship iOS Push API.
-
Enables/disables background remote notifications on this device through Airship. Defaults to
YES
.Declaration
Objective-C
@property (nonatomic) BOOL backgroundPushNotificationsEnabled;
Swift
var backgroundPushNotificationsEnabled: Bool { get set }
-
Sets the default value for backgroundPushNotificationsEnabled. The default is
YES
. After the backgroundPushNotificationsEnabled value has been directly set, this value has no effect.Declaration
Objective-C
@property (nonatomic) BOOL backgroundPushNotificationsEnabledByDefault;
Swift
var backgroundPushNotificationsEnabledByDefault: Bool { get set }
-
Enables/disables user notifications on this device through Airship. Defaults to
NO
. Once set toYES
, the user will be prompted for remote notifications.Declaration
Objective-C
@property (nonatomic) BOOL userPushNotificationsEnabled;
Swift
var userPushNotificationsEnabled: Bool { get set }
-
Enables/disables sending the device token during channel registration. Defaults to
UAirship.isDataCollectionEnabled
. If set toNO
, the app will not be able to receive push notifications.Declaration
Objective-C
@property (nonatomic) BOOL pushTokenRegistrationEnabled;
Swift
var pushTokenRegistrationEnabled: Bool { get set }
-
Sets the default value for userPushNotificationsEnabled. The default is
NO
. After the userPushNotificationsEnabled value has been directly set, this value has no effect.Declaration
Objective-C
@property (nonatomic) BOOL userPushNotificationsEnabledByDefault;
Swift
var userPushNotificationsEnabledByDefault: Bool { get set }
-
Enables/disables extended App Clip user notifications on this device through Airship. Defaults to
NO
. Once set toYES
, the user will be prompted for remote notifications.Warning
This property should only be set in an App Clip context. In all other cases, setting it to any value will have no effect. If userPushNotificationsEnabled is set to ‘NO’ , setting this property will have no effect.Declaration
Objective-C
@property (nonatomic) BOOL extendedPushNotificationPermissionEnabled;
Swift
var extendedPushNotificationPermissionEnabled: Bool { get set }
-
The device token for this device, as a hex string.
Declaration
Objective-C
@property (nonatomic, copy, readonly, nullable) NSString *deviceToken;
Swift
var deviceToken: String? { get }
-
User Notification options this app will request from APNS. Changes to this value will not take effect until the next time the app registers with updateRegistration.
Defaults to alert, sound and badge.
Declaration
Objective-C
@property (nonatomic) UANotificationOptions notificationOptions;
Swift
var notificationOptions: UANotificationOptions { get set }
-
Custom notification categories. Airship default notification categories will be unaffected by this field.
Changes to this value will not take effect until the next time the app registers with updateRegistration.
Declaration
Objective-C
@property (nonatomic, copy) NSSet<UANotificationCategory *> *_Nonnull customCategories;
Swift
var customCategories: Set<AnyHashable> { get set }
-
The combined set of notification categories from
customCategories
set by the app and the Airship provided categories.Declaration
Objective-C
@property (nonatomic, readonly) NSSet<UANotificationCategory *> *_Nonnull combinedCategories;
Swift
var combinedCategories: Set<AnyHashable> { get }
-
Sets authorization required for the default Airship categories. Only applies to background user notification actions.
Changes to this value will not take effect until the next time the app registers with updateRegistration.
Declaration
Objective-C
@property (nonatomic) BOOL requireAuthorizationForDefaultCategories;
Swift
var requireAuthorizationForDefaultCategories: Bool { get set }
-
Set a delegate that implements the UAPushNotificationDelegate protocol.
Declaration
Objective-C
@property (nonatomic, weak, nullable) id<UAPushNotificationDelegate> pushNotificationDelegate;
Swift
weak var pushNotificationDelegate: UAPushNotificationDelegate? { get set }
-
Set a delegate that implements the UARegistrationDelegate protocol.
Declaration
Objective-C
@property (nonatomic, weak, nullable) id<UARegistrationDelegate> registrationDelegate;
Swift
weak var registrationDelegate: UARegistrationDelegate? { get set }
-
Notification response that launched the application.
Declaration
Objective-C
@property (nonatomic, strong, readonly, nullable) UANotificationResponse *launchNotificationResponse;
Swift
var launchNotificationResponse: UANotificationResponse? { get }
-
The current authorized notification settings.
Note: this value reflects all the notification settings currently enabled in the Settings app and does not take into account which options were originally requested.
Declaration
Objective-C
@property (nonatomic, readonly) UAAuthorizedNotificationSettings authorizedNotificationSettings;
Swift
var authorizedNotificationSettings: UAAuthorizedNotificationSettings { get }
-
The current authorization status.
Declaration
Objective-C
@property (nonatomic, readonly) UAAuthorizationStatus authorizationStatus;
Swift
var authorizationStatus: UAAuthorizationStatus { get }
-
Indicates whether the user has been prompted for notifications or not.
Declaration
Objective-C
@property (nonatomic, readonly) BOOL userPromptedForNotifications;
Swift
var userPromptedForNotifications: Bool { get }
-
The default presentation options to use for foreground notifications.
Declaration
Objective-C
@property (nonatomic) UNNotificationPresentationOptions defaultPresentationOptions;
Swift
var defaultPresentationOptions: UNNotificationPresentationOptions { get set }
-
The current badge number used by the device and on the Airship server.
Note
This property must be accessed on the main thread.Declaration
Objective-C
@property (nonatomic) NSInteger badgeNumber;
Swift
var badgeNumber: Int { get set }
-
Toggle the Airship auto-badge feature. Defaults to
NO
If enabled, this will update the badge number stored by Airship every time the app is started or foregrounded.Declaration
Objective-C
@property (nonatomic, assign, unsafe_unretained, readwrite, getter=isAutobadgeEnabled) BOOL autobadgeEnabled;
Swift
var isAutobadgeEnabled: Bool { get set }
-
Resets the badge to zero (0) on both the device and on Airships servers. This is a convenience method for
setBadgeNumber:0
.Note
This method must be called on the main thread.Declaration
Objective-C
- (void)resetBadge;
Swift
func resetBadge()
-
Enables user notifications on this device through Airship.
Note: The completion handler will return the success state of system push authorization as it is defined by the user’s response to the push authorization prompt. The completion handler success state does NOT represent the state of the userPushNotificationsEnabled flag, which will be invariably set to YES after the completion of this call.
Declaration
Objective-C
- (void)enableUserPushNotifications:(nonnull void (^)(BOOL))completionHandler;
Swift
func enableUserPushNotifications(_ completionHandler: @escaping (Bool) -> Void)
Parameters
completionHandler
The completion handler with success flag representing the system authorization state.
-
Quiet time settings for this device.
Declaration
Objective-C
@property (nonatomic, copy, readonly, nullable) NSDictionary *quietTime;
Swift
var quietTime: [AnyHashable : Any]? { get }
-
Time Zone for quiet time. If the time zone is not set, the current local time zone is returned.
Declaration
Objective-C
@property (nonatomic, strong) NSTimeZone *_Nonnull timeZone;
Swift
var timeZone: TimeZone { get set }
-
Enables/Disables quiet time
Declaration
Objective-C
@property (nonatomic, assign, unsafe_unretained, readwrite, getter=isQuietTimeEnabled) BOOL quietTimeEnabled;
Swift
var isQuietTimeEnabled: Bool { get set }
-
Sets the quiet time start and end time. The start and end time does not change if the time zone changes. To set the time zone, see ‘timeZone’.
Update the server after making changes to the quiet time with the
updateRegistration
call. Batching these calls improves API and client performance.Warning
This method does not automatically enable quiet time and does not automatically update the server. Please refer to
quietTimeEnabled
andupdateRegistration
methods for more information.Declaration
Objective-C
- (void)setQuietTimeStartHour:(NSUInteger)startHour startMinute:(NSUInteger)startMinute endHour:(NSUInteger)endHour endMinute:(NSUInteger)endMinute;
Swift
func setQuietTimeStartHour(_ startHour: UInt, startMinute: UInt, endHour: UInt, endMinute: UInt)
Parameters
startHour
Quiet time start hour. Only 0-23 is valid.
startMinute
Quiet time start minute. Only 0-59 is valid.
endHour
Quiet time end hour. Only 0-23 is valid.
endMinute
Quiet time end minute. Only 0-59 is valid.
-
Registers or updates the current registration with an API call. If push notifications are not enabled, this unregisters the device token.
Add a
UARegistrationDelegate
toUAPush
to receive success and failure callbacks.Declaration
Objective-C
- (void)updateRegistration;
Swift
func updateRegistration()


Get the Provisional Frequency Assignment of all Circles
Get the daily status of bid prices of all Circles during Auction 2016
Get detailed information about what happened in Auction 2016
Get detailed information about what happened in Auction 2015 and get the daily status of bid prices of all Circles
See how your favourite operator is doing? You can see current spectrum holdings not only operator wise but also band wise
You are at the right place if you are really curious about how much each operato hasr paid per MHz in the 2015 auction across various dimensions
Get worldwide information about price per MHz per population
Get worldwide information about price per MHz per population
Visualize the spectrum data on the India Map
In this section you will get complete mobile subscriber information, across circles and operators
A comparative view of the current spectrum holdings of operators across circles
Project Guide
Developer
Developer
Developer
Developer
Developer
Developer


{% extends "layout.html" %} {% block content %}
{{ details.blurb }}
{%- if details.registrationopen %}Please register for the workshop, dinner, and talks using this registration form.
{%- else %}Sorry, but registration is now closed.
{%- endif %}{{ dinnerinfo.blurb }}


Select the track in which you want to publish the new build on Goolge play. Google play provides an
Alpha, a Beta and a Production Track for distributing new builds.
In case you are publishing in Production Track, Google play supports Staged Rollouts which means you
can distribute to a subset of your users by specifying a Quota.
In Order to specify Users which get access to the Alpha or Beta Track you need to specify Google
Groups or Google+ Communities which gain access to this Tracks.
Read '
Use alpha/beta testing & staged rollouts' for more details.


Detects usages of JCenter repository to resolve dependencies. Builds will no longer be able to resolve artifacts from JCenter after February 1st 2022.


November 2
In the beginning [before all time] was the Word [Christ], and the Word was with
God, and the Word was God Himself.... And the Word [Christ] became flesh (human, incarnate) and tabernacled --fixed His tent of flesh, lived awhile-among us.... John 1:1,14
The deity of the Lord Jesus Christ is something that can never be brought into question by any born again believer. Our very salvation rests on the fact that Jesus Christ is divine, the second person of the Godhead, God--the Son. The beloved disciple and apostle, John, forever puts to rest any doubt about that in John 1:1,14. Anyone who doubts what those verses say could not possibly have been born of the kingdom of God. For the deity of Jesus forms the very foundation of our faith in Him.
Yet, if you'll search the Gospels, you'll see that Jesus didn't go around
proclaiming Himself as God during His 33 years on earth. He acknowledged that He was the Son of God, the Messiah. He referred to God as His Father (which enraged the Pharisees), but He never made the assertion that He was the most high God. In fact, He told His disciples that the Father God was greater and mightier than He (John 14:28).
The reason is simple. He hadn't come to earth just as God. He'd come also as man. The Word says He set aside His divine power and took the form of a human being--with all its limitations. Since God was His Father, He was not born with the sin nature that had been passed along to the sons of Adam. But by being born of a woman, in all other respects He became a man and called Himself the Son of Man or, literally, the Son of Adam.
How, then, did He do all those mighty works? The same way He expects us to do them today--by the anointing and the power of the Holy Spirit (Acts 10:38). He said, "It's the Father within Me who does the work." What does that mean to you? It means that Jesus meant exactly what He said when He said that you, as a believer, would be able to do the works that He did! (John 14:12). It means that you, as a reborn child of God, filled with the same Holy Spirit as Jesus was, have the opportunity to live as He lived when He was on earth. In fact, that is exactly what He intends. He went before you, as a man, and opened the way. Don't just admire Him for it. Follow Him in it today!
Scripture Reading: John 14:1-15


Money Play. How should Red play 63?
pips Red=155 White=152
(CorrectAnswer= 0/0, ErrorScore= 0)
After hitting with the three 13/10* it seems natural to run with 24/18.
However, that gives White good sixes (which he cannot use to enter from the bar) and that might steal a vital tempo from Red’s attack. The prosaic 13/10*/4 is the correct move here, hoping to be able to continue the attack next turn.
24/18, 13/10* is a small error but the key here is to understand the thinking behind 13/10*/4 so that the concept can be reused in later games.
However, that gives White good sixes (which he cannot use to enter from the bar) and that might steal a vital tempo from Red’s attack. The prosaic 13/10*/4 is the correct move here, hoping to be able to continue the attack next turn.
24/18, 13/10* is a small error but the key here is to understand the thinking behind 13/10*/4 so that the concept can be reused in later games.
1. Cubeful 2-ply 13/10*/4 Eq.: +0.205 0.546 0.190 0.008 - 0.454 0.119 0.004 2. Cubeful 2-ply 24/18 13/10* Eq.: +0.190 (-0.015) 0.549 0.174 0.009 - 0.451 0.130 0.005 3. Cubeful 2-ply 13/10* 13/7 Eq.: +0.076 (-0.129) 0.514 0.175 0.009 - 0.486 0.143 0.009 4. Cubeful 0-ply 13/10* 8/2 Eq.: -0.043 (-0.247) 0.486 0.158 0.009 - 0.514 0.158 0.012 5. Cubeful 0-ply 13/4 Eq.: -0.099 (-0.304) 0.462 0.147 0.005 - 0.538 0.136 0.005


Goodsaltz is a family restaurant filled with good food and friendly vibe. The menu offers familiar, comfort food with unusual combinations in taste and technique sparking excitement from the usual fare.
In a space that is inspired by an eclectic family home - a collection of old family pieces, garage sale collectibles and found objects recycled with a purpose. Goodsaltz is about authenticity, taking the most basic ingredients (and things) and making it tasty and special.


We now distribute a -symbols.zip file containing the precise debugging symbols corresponding to each released binary distribution. For the typical user, there is no need to download these archives.
These -symbols.zip packages contain the .pdb diagnostic symbol files (which correpsond to the distributed binary release) and can be used by nearly all modern Windows debugging tools, including the freely available WinDbg utility. They are most useful for the core developers to review crash dumps generated by Dr. Watson if Apache experiences a General Protection Fault. They also provide additional backtrace details in Dr. Watson crash log files, if they are installed into the Apache directory which is experiencing General Protection Fault or other crash issues.
If you don't understand a word of this, and a developer did not personally ask you to install them to help troubleshoot a problem, please trust that you do not need these files to install or run Apache Tomcat Connectors.


Where Creative Design + Code Meet
Find Out MoreMy name is Kimberly Jonasse and I am a freelance graphic designer / web developer based in Harrisburg, NC - right outside of Charlotte. Starting off as a graphic designer in 1999, I have recently jumped into the world of digital design by completing the Full Stack Web Development Program at UNCC. I have since been creating user-friendly digital designs ranging from web to mobile. I am always trying to stay up to date on new digital technologies and latest design practices. I am currently taking on new projects - please contact me to get started!
I have almost 20 years of experience using Adobe Creative Suite - InDesign, Illustrator and Photoshop.
I use CSS to customize the design of your website through layout, color and fonts.
HTML allows me to build your website exactly how you envision it!
I create user friendly digital designs to meet your needs - from web to mobile. I have experience with both front end and back end development.
Ready to start your next project with me? Awesome! Give me a call or send me an email and I will get back to you as soon as possible!
704-608-5886


This post is a follow-up from the usability test from last week on Lime by testing the usability for users on a mobile device.
My analysis from last week can be revisted at the following link: Design Analysis: Usability Testing.
I modified my script to inform the three new users that this test was going to be conducted on a mobile phone rather than a laptop. Since I was recording their voice and the test using a laptop, this confused most of the participants at first. I recorded three usability tests from last week using my personal laptop and planned to do the same this week to ensure validity with the test in terms of recording to help guarantee the biggest variance was testing the website on a mobile phone rather than a laptop.
At first the main issue was my personal laptop is a 2018 MacBook Pro that only supports USB-C ports that are still uncommon, and most people don’t have cords that support this connection for their mobile phones. I took the action to buy a USB-C to Lightning cord cord to ensure my iPhone would work, and I informed all three users before the testing started that due to this constraint that they would be unable to use an Android device for this test.
I felt this was important to disclose since people are familiar with their preferred Operating Systems on their mobile devices and this may have caused undue stress or frustration during the test for typical Android users.
As stated this round of testing, I was able to use three different participants from last week. Two were female and one was male, all three were between the ages of 30-40 and currently employed.
I kept to the same four tasks from last week for consistency and ensuring the only difference was using a mobile device.
Tasks
- The Home Page Tour: I showed the participant the home page and asked them to say aloud the following: what strikes you about it, whose site you think it is, what can you do here, what it’s for?
- Question 1: Let’s assume that you are interested in learning more about Lime, can you find out if Lime is available in your area or residence and/or employment?
- Question 2: Now that you’ve seen Lime is available in Seattle, are you able to find the options available for riders in Seattle?
- Question 3: Are you able to locate any information on how to get a safety helmet for users?
- Question 4: Are you able to find the download button for your mobile device?
Testing Results
My testing revealed similarities for the participants with certain aspects of the website across both laptop testing and mobile testing that also confirmed my recommendations on how to improve the website.
The main usability problem for mobile testing was:
- The site doesn’t appear to be responsive to user click and touch. The users typically had to touch/press a link several times for it to redirect the user.
The main usability problem for mobile testing was:
- Website doesn’t have a search bar
- Users want to be able to click Seattle under locations to view local information about Lime
Recommendations
To increase usability for Lime across all platforms I would recommend Lime add a Search bar to their website since Krug mentions there are people who are “search-dominant” users and may immediately lose all goodwill by not being able to use a search bar.
I also would be alarmed on visiting a website and not seeing a search bar option since it seems like a fundamental component for all websites. Additionally, being able to use a search bar was a method two of the participants looked to when the links they were clicking didn’t redirect them immediately.
I noticed that clicking links and no event occurring instantly frustrated participants more than being unable to located information to complete a task.
Another recommendation from last week’s testing is worthwhile to consider since it was common across both mobile testing and laptop testing.
- Add local information for each city listed in the locations page (informs visitor of services offered in their area)


Monitoring Airbnb reviews over COVID-19 with folium HeatMapWithTime
Introduction
This artile will walk through visualizing the fluctuations of Airbnb busineess affected by COVID-19 pandemic. Intuitively, we might have a rough guess what the curves will be looking like, however, I thought this would be interesting to practice both data processing and visulization when time-series attributes involved, what’s more important, to better explore the data and express the insight to a wide variety of audience in a more approachable manner, an interactive visulization significantly helps.
Data
The dataset was downloaded from InsideAirbnb-Hawaii-data, the analysis results were based on a span of two year from July, 2019 to July, 2021.
Prerequisite
In addition to commonly used python data science packages(numpy, pandas, matplotlib, seaborn), here we also need install plotly
, folium
, chart-studio
, those can be easily installed via pip under conda environment:
$ pip install plotly
$ pip install folium
$ pip install chart-studio
Part 1. Visualizing with matplotlib
and plotly
Inspecting Data
I will mainly working on reviews.csv
and listings.csv
, merging operations will be included later for visulization.
df_review = pd.read_csv('reviews.csv')
df_listing = pd.read_csv('listings.csv')
df_listing contains all the metadata for all the listings and df_review has all the review information for each review associated with its list id. Noticed listing_id
in df_review is id
in df_listing, it will be the key for our merging.
Data processing: the number of reviews
Apparently, there is no obvious feature indicating the fluctuations of Airbnb busineess activity, however, from df_review we can tell that each listing has received multiple comments in various time, with that being said, we can get all the listings that have received any comment on different dates, then the count of the total comments on each date will be good enough to indicate the change of business activity. In addition, we can add any metadata associated with listing based on our needs, for instance, we may consider adding geographic features(neighbourhood
,latitude
,longitude
) since we are creating a folium map later, also this kind of feature helps to segragate the data to better examine the change focusing on a particular area.
Inspect the number of reviews over time
def process_count(df_review, df_listing):
df1 = df_review.drop(['reviewer_id', 'reviewer_name', 'comments'], axis=1)
df2 = df_listing[['id', 'neighbourhood_group_cleansed']]
df3 = pd.merge(df2, df1, left_on='id', right_on='listing_id')
df3 = df3[['date', 'listing_id', 'neighbourhood_group_cleansed']]
df3.date = pd.to_datetime(df3.date, format="%Y-%m-%d")
df3 = df3[df3['date'].isin(pd.date_range("2019-07-10", "2021-07-10"))]
df3 = df3.set_index(df3.date).drop('date', axis=1)
#df3.to_pickle("ts.pkl")
return df3
listing_reveived_review = process_count(df_review, df_listing)
listing_reveived_review
output:
| listing_id | neighbourhood_group_cleansed | |
|---|---|---|
| date | ||
| 2019-08-19 | 5065 | Hawaii |
| 2020-02-16 | 5065 | Hawaii |
| 2020-02-19 | 5065 | Hawaii |
| 2020-02-28 | 5065 | Hawaii |
| 2020-03-09 | 5065 | Hawaii |
| ... | ... | ... |
| 2021-07-08 | 50599343 | Hawaii |
| 2021-07-08 | 50682739 | Honolulu |
| 2021-07-08 | 50710529 | Hawaii |
| 2021-07-03 | 50736557 | Honolulu |
| 2021-07-07 | 50752275 | Kauai |
271528 rows × 2 columns
Then we specify the area to Honolulu and count how many listings that have received comments on each date.
def count_listings(df, loc='Honolulu'):
df = df[df.neighbourhood_group_cleansed == loc]
df = df.groupby('date', sort=True)['listing_id'].count().rename('review_count').reset_index().set_index('date')
return df
count_per_day_honolulu = count_listings(listing_reveived_review, loc='Honolulu')
count_per_day_honolulu
output:
| review_count | |
|---|---|
| date | |
| 2019-07-10 | 163 |
| 2019-07-11 | 151 |
| 2019-07-12 | 145 |
| 2019-07-13 | 164 |
| 2019-07-14 | 208 |
| ... | ... |
| 2021-07-04 | 95 |
| 2021-07-05 | 142 |
| 2021-07-06 | 71 |
| 2021-07-07 | 48 |
| 2021-07-08 | 24 |
729 rows × 1 columns
Create time variable
# define time variable
ts = count_per_day_honolulu.review_count
Fit moving average
def fit_moving_avg(series, window=5):
"""calculate moving average number of reviews
"""
return series.rolling(window, center=True).mean()
avg_ts = fit_moving_avg(ts)
Visualization
via matplotlib
# plot time variable
ts.plot(figsize=(16, 4), label='Number of reviews', title='Number of Reviews over time', fontsize=14, alpha=0.6)
# plot moving average
avg_ts.plot(label='Average number of reviews', fontsize=14)
plt.legend(fontsize=14)
#plt.savefig('moving_avg.png')
output:
Insights
- This analysis takes the number of reviews per day as an indicator of Airbnb business activity. It dramaticly decreased after outbreak of COVID-19 in March, 2020.
- The number of reviews keeps increasing which indicates the popularity of Airbnb was thriving before the pandemic. Meanwhile there is a clear seasonality pattern before the mid of Feb, 2020.
Interactive visualization with Plotly
# set up for plotly
r = go.Scatter(x=ts.index, y=ts.values,
line=go.scatter.Line(color='red', width = 1), opacity=0.8,
name='Reviews', text=[f'Reviews: {x}' for x in ts.values])
layout = go.Layout(title='Number of Reviews over time', xaxis=dict(title='Date'),
yaxis=dict(title='Count'))
fig1 = go.Figure(data=[r],layout=layout)
iplot(fig1)
output:
Following snippet is used to push the plotly object to plotly express
, which generates embedding information for hosting the interactive image on web pages.
username = '' # your username
api_key = '' # your api key for plotly express - go to profile > settings > regenerate key
chart_studio.tools.set_credentials_file(username=username, api_key=api_key)
py.plot(fig1, filename = 'review_over_time', auto_open=True)
Part 2. Reviews via folium HeatMapWithTime
plugin
Data processing
Count reviews received for each listing each month
As you probably already know, folium
creates great interactive maps for visualization, here I am going to create a heat map along with time stamp by using its HeatMapWithTime
plugin, before that there still some processing work need to complete in order to fit our data to the plugin. A simple Demo.
First, count how many reviews each listing received each day, then change the time range to Month, that is to record how many reviews each listing received each month. The reason that change time range from day to month is we don’t want the final display moving too frequently so that we can clearly spot the moving trend.
Also, features like latitude
and longitude
will be kept for rendering the map.
def process_listing_total_count(df_review, df_listing):
# process data for timestamped folium map
df2 = df_review.groupby(['listing_id', 'date'])['id'].count().rename('review_count').reset_index()
df2['date'] = pd.to_datetime(df2['date'])
df2 = df2[df2['date'].isin(pd.date_range("2019-07-10", "2021-07-10"))]
df2 = df2.groupby(['listing_id', pd.Grouper(key='date', freq='M')])['review_count'] \
.sum().reset_index()
merged = pd.merge(df_listing, df2, left_on='id', right_on='listing_id')
#merged.to_pickle("timestamped_review.pkl")
return merged
listings_with_total_review_count = process_listing_total_count(df_review, df_listing)
listings_with_total_review_count[['id','date','review_count','latitude','longitude']]
output:
| id | date | review_count | latitude | longitude | |
|---|---|---|---|---|---|
| 0 | 5065 | 2019-08-31 | 1 | 20.042660 | -155.432590 |
| 1 | 5065 | 2020-02-29 | 3 | 20.042660 | -155.432590 |
| 2 | 5065 | 2020-03-31 | 2 | 20.042660 | -155.432590 |
| 3 | 5269 | 2019-07-31 | 1 | 20.027400 | -155.702000 |
| 4 | 5269 | 2019-09-30 | 3 | 20.027400 | -155.702000 |
| ... | ... | ... | ... | ... | ... |
| 116719 | 50599343 | 2021-07-31 | 2 | 19.607210 | -155.976120 |
| 116720 | 50682739 | 2021-07-31 | 1 | 21.286110 | -157.840150 |
| 116721 | 50710529 | 2021-07-31 | 1 | 19.700066 | -155.073502 |
| 116722 | 50736557 | 2021-07-31 | 1 | 21.360280 | -158.048220 |
| 116723 | 50752275 | 2021-07-31 | 1 | 22.220010 | -159.476470 |
116724 rows × 5 columns
Transform data to the form that folium
can take
For next step, our dataframe should be looking like below:
| time-index | latitude | longitude | review_count |
|---|---|---|---|
| 2019-7-31 | a list of latitudes | a list of longitude | a list of review_count |
| 2019-8-30 | a list of latitudes | a list of longitude | a list of review_count |
| ... | ... | ... | ... |
| 2021-7-31 | a list of latitudes | a list of longitude | a list of review_count |
review_count_time_map = listings_with_total_review_count.drop(['neighbourhood_group_cleansed', 'listing_id'], axis=1)
review_count_time_map = review_count_time_map.groupby('date').agg(lambda x: list(x))
review_count_time_map[['latitude','longitude','review_count']]
output:
| latitude | longitude | review_count | |
|---|---|---|---|
| date | |||
| 2019-07-31 | [20.0274, 19.43081, 21.88151, 22.2208, 21.8813... | [-155.702, -155.88069, -159.47346, -159.46989,... | [1, 1, 4, 1, 3, 3, 1, 1, 2, 3, 1, 2, 1, 2, 1, ... |
| 2019-08-31 | [20.04266, 19.56604, 21.88151, 22.2208, 21.881... | [-155.43259, -155.96199, -159.47346, -159.4698... | [1, 2, 4, 2, 3, 5, 2, 3, 3, 3, 1, 1, 2, 1, 1, ... |
| 2019-09-30 | [20.0274, 21.88151, 22.2208, 21.88139, 19.6066... | [-155.702, -159.47346, -159.46989, -159.47248,... | [3, 4, 1, 3, 5, 4, 6, 4, 2, 2, 2, 3, 2, 1, 1, ... |
| 2019-10-31 | [20.0274, 19.43081, 19.56604, 21.88151, 22.220... | [-155.702, -155.88069, -155.96199, -159.47346,... | [2, 2, 1, 2, 1, 2, 4, 3, 1, 4, 3, 3, 4, 2, 1, ... |
| 2019-11-30 | [19.43081, 19.56604, 21.88151, 22.2208, 21.881... | [-155.88069, -155.96199, -159.47346, -159.4698... | [1, 1, 5, 1, 6, 1, 3, 2, 2, 2, 1, 2, 1, 3, 1, ... |
| 2019-12-31 | [19.43081, 19.56604, 21.88151, 22.2208, 21.881... | [-155.88069, -155.96199, -159.47346, -159.4698... | [1, 1, 1, 1, 4, 5, 2, 3, 1, 2, 1, 1, 2, 2, 2, ... |
| 2020-01-31 | [19.43081, 19.56604, 21.88151, 22.2208, 21.881... | [-155.88069, -155.96199, -159.47346, -159.4698... | [2, 1, 2, 2, 3, 1, 4, 2, 2, 1, 3, 1, 1, 4, 4, ... |
| 2020-02-29 | [20.04266, 19.43081, 21.88151, 21.88139, 19.60... | [-155.43259, -155.88069, -159.47346, -159.4724... | [3, 2, 2, 2, 1, 3, 2, 3, 2, 3, 4, 2, 1, 2, 2, ... |
| 2020-03-31 | [20.04266, 20.0274, 19.43081, 19.56604, 21.881... | [-155.43259, -155.702, -155.88069, -155.96199,... | [2, 1, 1, 1, 1, 1, 2, 4, 1, 1, 2, 1, 1, 2, 2, ... |
| 2020-04-30 | [20.89861, 19.60885, 21.58052, 20.76291, 20.76... | [-156.68151, -155.96764, -158.10854, -156.4573... | [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... |
| 2020-05-31 | [19.57365, 20.72916, 20.76291, 20.87319, 19.72... | [-155.96716, -156.45055, -156.45734, -156.6745... | [1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, ... |
| 2020-06-30 | [19.57365, 21.28334, 20.72916, 19.43428, 19.81... | [-155.96716, -157.8379, -156.45055, -155.21609... | [2, 2, 2, 1, 1, 1, 1, 1, 1, 3, 1, 1, 2, 1, 2, ... |
| 2020-07-31 | [21.88151, 19.60668, 20.89861, 19.39402, 19.52... | [-159.47346, -155.97585, -156.68151, -154.9306... | [3, 2, 3, 2, 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, ... |
| 2020-08-31 | [21.88151, 19.52067, 21.27437, 19.48092, 21.28... | [-159.47346, -154.84706, -157.82043, -155.9064... | [2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 3, 1, 1, 3, ... |
| 2020-09-30 | [19.39402, 19.45962, 21.27918, 21.64094, 19.48... | [-154.9306, -155.88118, -157.82846, -158.06281... | [1, 1, 2, 1, 2, 2, 1, 1, 1, 2, 4, 1, 1, 1, 2, ... |
| 2020-10-31 | [20.72413, 19.52373, 19.57365, 19.59802, 19.48... | [-156.44767, -154.84746, -155.96716, -154.9389... | [1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, ... |
| 2020-11-30 | [21.88151, 22.2208, 22.21789, 20.89861, 20.757... | [-159.47346, -159.46989, -159.47184, -156.6815... | [1, 1, 1, 1, 2, 2, 1, 1, 2, 1, 3, 2, 2, 1, 1, ... |
| 2020-12-31 | [19.56604, 21.88151, 22.2208, 19.39402, 19.520... | [-155.96199, -159.47346, -159.46989, -154.9306... | [1, 1, 1, 2, 2, 4, 4, 2, 2, 2, 3, 1, 1, 3, 1, ... |
| 2021-01-31 | [20.0274, 19.56604, 20.72413, 19.39402, 20.757... | [-155.702, -155.96199, -156.44767, -154.9306, ... | [1, 2, 2, 1, 3, 2, 1, 1, 1, 1, 4, 3, 2, 3, 1, ... |
| 2021-02-28 | [19.43081, 19.56604, 19.60668, 20.72413, 20.89... | [-155.88069, -155.96199, -155.97585, -156.4476... | [2, 1, 3, 1, 1, 1, 3, 2, 2, 3, 2, 2, 3, 1, 1, ... |
| 2021-03-31 | [19.43081, 19.56604, 22.2208, 19.60668, 22.217... | [-155.88069, -155.96199, -159.46989, -155.9758... | [3, 2, 1, 3, 1, 3, 5, 4, 2, 1, 2, 3, 3, 3, 3, ... |
| 2021-04-30 | [20.0274, 19.43081, 19.56604, 21.88151, 22.220... | [-155.702, -155.88069, -155.96199, -159.47346,... | [1, 1, 1, 1, 1, 1, 2, 3, 2, 1, 3, 3, 3, 2, 1, ... |
| 2021-05-31 | [19.43081, 19.56604, 21.88151, 22.2208, 21.881... | [-155.88069, -155.96199, -159.47346, -159.4698... | [1, 1, 2, 5, 3, 3, 4, 2, 2, 4, 4, 2, 3, 2, 1, ... |
| 2021-06-30 | [19.43081, 19.56604, 21.88151, 22.2208, 21.881... | [-155.88069, -155.96199, -159.47346, -159.4698... | [1, 3, 2, 3, 2, 1, 4, 2, 1, 2, 2, 3, 1, 2, 2, ... |
| 2021-07-31 | [22.21789, 19.39402, 19.59074, 19.52067, 22.22... | [-159.47184, -154.9306, -155.97143, -154.84706... | [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, ... |
Lastly, we just extract the repective latitude
, longitude
, and review_count
to a final form for pass in to the plugin.
# transform data for folium
def generate_location_points(all_points):
# all_points = pd.read_pickle("timestamped_review.pkl")
# loc_points = all_points[all_points.neighbourhood_group_cleansed == location]
loc_points = all_points.drop(['neighbourhood_group_cleansed', 'listing_id'], axis=1)
loc_points = loc_points.groupby('date').agg(lambda x: list(x))
to_draw = []
for i in range(loc_points.shape[0]):
single_draw = []
for j in list(zip(loc_points.iloc[i].latitude, loc_points.iloc[i].longitude, loc_points.iloc[i].review_count)):
single_draw.append(list(j))
to_draw.append(single_draw)
time_index = []
for t in loc_points.index:
time_index.append(t.strftime("%Y-%m-%d"))
return to_draw, time_index
points, indices = generate_location_points(listings_with_total_review_count)[0], \
generate_location_points(listings_with_total_review_count)[1]
Visualization - click display button
# create folium object and add timestamp object
time_map = folium.Map([21.3487, -157.944], zoom_start=10.5)
hm = plugins.HeatMapWithTime(points, index=indices, auto_play=True, max_opacity=0.6)
hm.add_to(time_map)
# display map
#time_map
#time_map.save("index.html")
output:
Insight
- The heat map above indicates how the number of reviews of Airbnb listings changed on Oahu island during 2019-7 to 2021-7
- Time variable is incremented by month, this can be adjusted to a bigger of smaller increment.
- The trend showed from above matches the result acquired by matplotlib.
- Moreover, timestamped visualization delivers a more approachable result to a variaty of audiences.
- By taking advantage of geographaic information, we could monitor many other attributes as long as we render them with suitable weights.


{
LESS
}
The dynamic stylesheet language
Apache License
Nested Rules
Hello
World
Welcome to Less!
Variables
Hello World
Welcome to Less!
Mixins
Hello World
Operations
Less
is
FUN!
>
Functions
Hello World
http://lesscss.org/
Rouben Meschian
rmeschian@gmail.com


| Opcode/Instruction | Op/En | 64/32-bit Mode | CPUID Feature Flag | Description |
| 0F 12 /r MOVLPS xmm, m64 | RM | V/V | SSE | Move two packed single-precision floatingpoint values from m64 to low quadword of xmm. |
| 0F 13 /r MOVLPS m64, xmm | MR | V/V | SSE | Move two packed single-precision floatingpoint values from low quadword of xmm to m64. |
| VEX.NDS.128.0F.WIG 12 /r VMOVLPS xmm2, xmm1, m64 | RVM | V/V | AVX | Merge two packed single-precision floatingpoint values from m64 and the high quadword of xmm1. |
| VEX.128.0F.WIG 13/r VMOVLPS m64, xmm1 | MR | V/V | AVX | Move two packed single-precision floatingpoint values from low quadword of xmm1 to m64. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM | ModRM:reg (r, w) | ModRM:r/m (r) | NA | NA |
| MR | ModRM:r/m (w) | ModRM:reg (r) | NA | NA |
| RVM | ModRM:reg (w) | VEX.vvvv (r) | ModRM:r/m (r) | NA |
This instruction cannot be used for register to register or memory to memory moves. 128-bit Legacy SSE load: Moves two packed single-precision floating-point values from the source 64-bit memory operand and stores them in the low 64-bits of the destination XMM register. The upper 64bits of the XMM register are preserved. The upper 128-bits of the corresponding YMM destination register are preserved.
In 64-bit mode, use of the REX.R prefix permits this instruction to access additional registers (XMM8-XMM15). VEX.128 encoded load: Loads two packed single-precision floating-point values from the source 64-bit memory operand (third operand), merges them with the upper 64-bits of the first source XMM register (second operand), and stores them in the low 128-bits of the destination XMM register (first operand). The upper 128-bits of the destination YMM register are zeroed. 128-bit store: Loads two packed single-precision floating-point values from the low 64-bits of the XMM register source (second operand) to the 64-bit memory location (first operand). Note: VMOVLPS (store) (VEX.128.0F 13 /r) is legal and has the same behavior as the existing 0F 13 store. For VMOVLPS (store) (VEX.128.0F 13 /r) instruction version, VEX.vvvv is reserved and must be 1111b otherwise instruction will #UD.
If VMOVLPS is encoded with VEX.L= 1, an attempt to execute the instruction encoded with VEX.L= 1 will cause an #UD exception.
MOVLPS (128-bit Legacy SSE load) DEST[63:0] ← SRC[63:0] DEST[VLMAX-1:64] (Unmodified) VMOVLPS (VEX.128 encoded load) DEST[63:0] ← SRC2[63:0] DEST[127:64] ← SRC1[127:64] DEST[VLMAX-1:128] ← 0 VMOVLPS (store) DEST[63:0] ← SRC[63:0]
| MOVLPS: | __m128 _mm_loadl_pi ( __m128 a, __m64 *p) |
| MOVLPS: | void _mm_storel_pi (__m64 *p, __m128 a) |
None.
See Exceptions Type 5; additionally
| #UD | If VEX.L= 1. If VEX.vvvv != 1111B. |


Improve this Doc
Menu is a side-menu navigation that can be dragged out or toggled to show. The content of a menu will be hidden when the menu is closed.
Menu adapts to the appropriate style based on the platform.
_For more information, Check out the [API docs](../api/components/menu/Menu)._


Last Updated
Update
Now
Manual only
After 10 minutes
After 15 minutes
After 20 minutes
After 30 minutes
After 1 hour
AFter 90 minutes
After 2 hours
After 4 hours
After 12 hours
After 1 day
Get Earlier Data


| Package | Description |
|---|---|
| com.veeva.vault.vapil.api.client |
HTTPS Client for the Vault API
|
| com.veeva.vault.vapil.api.model.response |
Models for Vault API responses
|
| com.veeva.vault.vapil.api.request |
Methods to perform Vault API calls, with each method mapping to a Vault API endpoint
|
| Class and Description |
|---|
| AuthenticationResponse
Model for the following API calls responses:
|
| Class and Description |
|---|
| ApiVersionResponse
Model for the following API calls responses:
|
| AuditMetadataResponse
Model for the following API calls responses:
|
| AuditTypesResponse
Model for the following API calls responses:
|
| AuthenticationResponse
Model for the following API calls responses:
|
| BinderExportResponse
Model for Retrieve Binder Export Results
GET /api/{version}/objects/binders/batch/actions/export/{jobid}/results |
| BinderResponse
Model for the binder response
|
| BinderSectionResponse
Model for the binder section response, needed to handle:
1. |
| BinderTemplateBulkResponse
Model for the Template responses
|
| BinderTemplateMetadataResponse
Model for the following API calls responses:
|
| BinderTemplateNodeBulkResponse
Model for the Template responses
|
| BinderTemplateResponse
Model for the Binder Template responses
|
| BulkWorkflowActionDetailsResponse
Model for the following API calls responses:
|
| BulkWorkflowActionsResponse
Model for the following API calls responses:
|
| BulkWorkflowJobStartResponse |
| ComponentContentResponse
Response model for the Component Content Files
|
| DiscoveryResponse
Model for the following API calls responses:
|
| DocumentActionEntryCriteriaResponse
Retrieve the entry criteria for a workflow.
|
| DocumentActionInitiateResponse
Response model for the following API calls:
|
| DocumentActionResponse
Response model for the following API calls:
|
| DocumentAnnotationResponse
Model for the document annotation response
|
| DocumentAttachmentBulkResponse
Model for the document response
|
| DocumentAttachmentResponse
Model for the document response
|
| DocumentAuditResponse
Model for the following API calls responses:
|
| DocumentBulkResponse
Model for document create API response
|
| DocumentClassificationResponse
Model for the document classification response
|
| DocumentDeletionResponse
Model for document deletions API response
|
| DocumentEventResponse
Model for the following API calls responses:
|
| DocumentEventSubtypeResponse
Model for the following API calls responses:
|
| DocumentEventTypeResponse
Model for the following API calls responses:
|
| DocumentExportResponse
Model for document export API response
|
| DocumentFieldResponse
Model for the document field response
|
| DocumentLifecycleDeleteOverrideRulesResponse
Model for lifecycle Role Assignment Rules Response API
|
| DocumentLifecycleRoleAssignmentResponse
Model for the Document Lifecycle Role Assignment response
|
| DocumentLifecycleRoleAssignmentRulesResponse
Model for lifecycle Role Assignment Rules Response API
|
| DocumentLockResponse
Response model for the following API calls:
|
| DocumentRelationshipBulkResponse
Model for the Document Relationship Bulk responses
|
| DocumentRelationshipMetadataResponse
Model for the following API calls responses:
|
| DocumentRelationshipResponse
Model for the Document/Binder relationship response endpoints:
POST /api/{version}/objects/documents/{document_id}/versions/{major_version_number_v}/{minor_version_number_v}/relationships DELETE /api/{version}/objects/documents/{document_id}/versions/{major_version_number__v}/{minor_version_number__v}/relationships/{relationship_id} |
| DocumentRelationshipRetrieveResponse
Model for the Document/Binder relationship response endpoints:
GET /api/{version}/objects/documents/{doc_id}/versions/{major_version}/{minor_version}/relationships GET /api/{version}/objects/documents/{doc_id}/versions/{major_version}/{minor_version}/relationships/{relationship_id} GET /api/{version}/objects/binders/{binder_id}/versions/{major_version}/{minor_version}/relationships GET /api/{version}/objects/binders/{binder_id}/versions/{major_version}/{minor_version}/relationships/{relationship_id} |
| DocumentRenditionResponse
Model for the following API calls responses:
|
| DocumentResponse
Model for the document response
|
| DocumentRoleChangeBulkResponse
Model for responses to bulk Document Role Requests
|
| DocumentRoleChangeResponse
Model for responses to single Document Role Update and Delete requests
|
| DocumentRoleRetrieveResponse
Model for responses to Document Role GET requests
|
| DocumentsResponse
Model for all documents API Response
|
| DocumentSubtypeResponse
Model for the document subtype response
|
| DocumentTemplateBulkResponse
Model for the Template responses
|
| DocumentTemplateMetadataResponse
Model for the following API calls responses:
|
| DocumentTemplateResponse
Model for the document template response
|
| DocumentTemplatesResponse
Model for the document templates response
|
| DocumentTokenResponse
Response model for the following API calls:
|
| DocumentTypeResponse
Model for the document type response
|
| DocumentTypesResponse
Model for the all document types response
|
| DocumentVersionResponse
Response model for the following API calls:
|
| DocumentWorkflowMetadataResponse
Model for the document response
|
| DomainResponse
Model for the following API calls responses:
|
| EDLResponse
Response model for an EDL API response
|
| FileStagingItemBulkResponse |
| FileStagingItemResponse |
| FileStagingJobResponse
Response model for the following API calls:
|
| FileStagingSessionBulkResponse |
| FileStagingSessionResponse |
| GroupResponse
Model for the following API calls responses:
|
| GroupRetrieveResponse
Model for the following API calls responses:
|
| InitiateMultiDocumentWorkflowResponse
Model for the following API calls responses:
|
| JobCreateResponse
Response model for the following API calls:
|
| JobHistoryResponse
Response model for the API Job History response
|
| JobMonitorResponse
Response model for the API Job Monitor response
|
| JobStatusResponse
Response model for the API Job Status response
|
| JobTaskResponse
Response model for the API Job Task response
|
| LoaderResponse
Model for the following API calls responses:
|
| MdlResponse
Response model for the following API calls:
|
| MetaDataComponentRecordResponse
Response model for the following API calls:
|
| MetaDataComponentTypeBulkResponse
Response model for the following API calls:
|
| MetaDataComponentTypeResponse
Response model for the following API calls:
|
| MetaDataDocumentLockResponse |
| MetaDataGroupResponse
Response model for the following API call:
|
| MetaDataObjectBulkResponse
Response model for the following API calls:
|
| MetaDataObjectFieldResponse
Response model for the following API calls:
|
| MetaDataObjectResponse
Response model for the following API calls:
|
| MetaDataUserResponse |
| MultiDocumentWorkflowDetailsResponse
Model for the following API calls responses:
|
| MultiDocumentWorkflowsResponse
Model for the following API calls responses:
|
| ObjectAuditResponse
Model for the following API calls responses:
|
| ObjectRecordActionBulkResponse
Model for the following API calls responses for the Object Workflow Action
operations:
|
| ObjectRecordActionResponse
Model for the following API calls responses:
|
| ObjectRecordAttachmentResponse
Model for the following API calls responses:
|
| ObjectRecordBulkResponse
Model for the following API calls responses for the Object Record
CUD operations:
|
| ObjectRecordCollectionResponse
Model for the following API calls responses for the Object Record CRUD
operations:
|
| ObjectRecordDeletedResponse
Model for Deleted Object Records recycle bin endpoint:
|
| ObjectRecordResponse
Model for the following API calls responses for the Object Record CRUD
operations:
|
| ObjectRecordRoleChangeResponse
Model for the Object Record Role API responses:
|
| ObjectRecordRoleResponse
Model for the Object Record Role API responses:
|
| ObjectRecordTypeResponse
Model for the Object Record Type or Object describe API responses:
|
| ObjectWorkflowActionDetailsResponse
Model for the following API calls responses for the Object Workflow Action Details
operations:
|
| ObjectWorkflowActionResponse
Model for the following API calls responses for the Object Workflow Action
operations:
|
| ObjectWorkflowResponse
Model for the following API calls responses for the Object workflow
operations:
|
| ObjectWorkflowTaskActionDetailsResponse
Model for the following API calls responses for the Object Workflow Task Action Details
operations:
|
| ObjectWorkflowTaskResponse
Model for the following API calls responses for the Object WorkflowTask
operations:
|
| PackageResultsResponse
Model for the following API calls responses:
|
| PicklistResponse
Model for the following API calls
|
| PicklistValueResponse
Model for the following API calls
GET /api/{version}/objects/picklists/{picklist_name} |
| QueryResponse
Model for VQL query API calls
|
| QueueResponse
Response model for the following API calls:
|
| SandboxEntitlementResponse |
| SandboxResponse |
| SCIMResponse |
| SCIMUserBulkResponse |
| SCIMUserResponse |
| SDKResponse
Response model for the following API calls:
|
| SecurityPoliciesResponse
Model for response to requests to the Retrieve Security Policies endpoint
|
| SecurityPolicyResponse
Model for response to requests to the Retrieve Security Policy endpoint
|
| UserBulkResponse |
| UserPermissionResponse |
| UserResponse |
| UserRetrieveResponse |
| ValidatePackageResponse
Response model for the following API calls:
|
| VaultResponse
Base Vault API response message
|
Copyright © 2021. All rights reserved.


These crispy sweet potato fries recipe is made with fresh sweet potatoes and baked in the oven to give perfect crispy fry that has an amazing sweet and salty flavor that makes the perfect snack or side dish!
If you are looking for an amazing Baked Sweet Potato Fries recipe you are in luck! This healthy sweet potato fries recipe is one that goes well with so many different dishes. Crispy baked sweet potato fries are easy to make and they taste amazing!
These easy fries are perfectly crispy! Like the best crispy fry that you are dreaming of you will get with this easy fry recipe!
With a few tricks that I am going to tell you about you are going to have the crispiest sweet potato fries ever that will disappear just about as soon as you take them out of the oven! Trust me on this and plan ahead to double or triple the recipe if you plan on feeding lots of people!


Kristina is a skilled change strategist and intuitive leadership coach. She brings collaborative, outcome-focused, and results-oriented thought leadership to the people-side of change, blending strategy with practical and accessible solutions.
Work With Me Free Download


Delivery Address:
All pizzas come with tomato sauce. All toppings are $1 each (including cheese):
Your order is on the way!


Call Render Abhi8
Unmount Component Abhi8
Call Render Abhi9
Unmount Component Abhi9
Call Render Abhi12
Unmount Component Abhi12