diff --git a/docs/html/training/wearables/data-layer/index.jd b/docs/html/training/wearables/data-layer/index.jd index b49ea4d45c3e1..df7c216a743dd 100644 --- a/docs/html/training/wearables/data-layer/index.jd +++ b/docs/html/training/wearables/data-layer/index.jd @@ -91,6 +91,17 @@ devices. For instance, don't try to open low-level sockets to create a communica channel.
+Android Wear supports multiple wearables connected to a handheld device. For example, when the +user saves a note on a handheld, it automatically appears on both of the user's Wear devices. To +synchronize data between devices, Google’s servers host a cloud node in the network of devices. The +system synchronizes data to directly connected devices, the cloud node, and to wearable devices +connected to the cloud node via Wi-Fi.
+ +
+Figure 1. A sample network of nodes with +handheld and wearable devices.
+ +Multiple wearable devices can be connected to a user’s handheld device. Each connected device in +the network is considered a node. With multiple connected devices, you must consider which +nodes receive the messages. For example, In a voice transcription app that receives voice data on +the wearable device, you should send the message to a node with the processing power and battery +capacity to handle the request, such as a handheld device.
-The following example shows how to send a message that indicates to the other -side of the connection to start an activity. -This call is synchronous and blocks processing until the message is received or until the request -times out:
- -Note: Read more about asynchronous and synchronous calls -to Google Play services and when to use each in -Communicate with Google Play Services. +
Note: +With versions of Google Play services prior to 7.3.0, only one wearable device could be connected to +a handheld device at a time. You may need to update your existing code to take the multiple +connected nodes feature into consideration. If you don’t implement the changes, your messages may +not get delivered to intended devices.
+A wearable app can provide functionality for users such as voice +transcription. Users can speak into their wearable device's microphone, and have a transcription +saved to a note. Since a wearable device typically does not have the processing power and battery +capacity required to handle the voice transcription activity, the app should offload this work to a +more capable, connected device.
+ +The following sections show you how to advertise device nodes that can process activity +requests, discover the nodes capable of fulfilling a requested need, and send messages to those +nodes. +
+ +To launch an activity on a handheld device from a wearable device, use the
+MessageApi
+class to send the request. Since multiple wearables can be connected to the handheld device, the
+wearable app needs to determine that a connected node is capable of launching the activity. In your
+handheld app, advertise that the node it runs on provides specific capabilities.
To advertise the capabilities of your handheld app:
+ +res/values/ directory of your project and
+ name it wear.xml.
+ android_wear_capabilities to wear.xml.
+ Note: +Capabilities are custom strings that you define and must be unique within your app. +
+ +The following example shows how to add a capability named voice_transcription to
+wear.xml:
-GoogleApiClient mGoogleApiClient; -public static final String START_ACTIVITY_PATH = "/start/MainActivity"; +<resources> + <string-array name="android_wear_capabilities"> + <item>voice_transcription</item> + </string-array> +</resources> ++ +
Initially, you can detect the capable nodes by calling the CapabilityApi.getCapability()
+method.
+The following example shows how to manually retrieve the results of reachable nodes with the
+voice_transcription capability:
+private static final String
+ VOICE_TRANSCRIPTION_CAPABILITY_NAME = "voice_transcription";
+
+private GoogleApiClient mGoogleApiClient;
+
...
-private void sendStartActivityMessage(String nodeId) {
- Wearable.MessageApi.sendMessage(
- mGoogleApiClient, nodeId, START_ACTIVITY_PATH, new byte[0]).setResultCallback(
- new ResultCallback<SendMessageResult>() {
- @Override
- public void onResult(SendMessageResult sendMessageResult) {
- if (!sendMessageResult.getStatus().isSuccess()) {
- Log.e(TAG, "Failed to send message with status code: "
- + sendMessageResult.getStatus().getStatusCode());
- }
- }
- }
- );
+private void setupVoiceTranscription() {
+ CapabilityApi.GetCapabilityResult result =
+ Wearable.CapabilityApi.getCapability(
+ mGoogleApiClient, VOICE_TRANSCRIPTION_CAPABILITY_NAME,
+ CapabilityApi.FILTER_REACHABLE).await();
+
+ updateTranscriptionCapability(result.getCapability());
}
--Here's a simple way to get a list of connected nodes that you can potentially -send messages to:
+To detect capable nodes as they connect to the wearable device, register a CapabilityApi.CapabilityListener()
+instance to your GoogleApiClient.
+The following example shows how to register the listener and retrieve the results of reachable nodes
+with the voice_transcription capability:
+private void setupVoiceTranscription() {
+ ...
+
+ CapabilityApi.CapabilityListener capabilityListener =
+ new CapabilityApi.CapabilityListener() {
+ @Override
+ public void onCapabilityChanged(CapabilityInfo capabilityInfo) {
+ updateTranscriptionCapability(capabilityInfo);
+ }
+ };
+
+ Wearable.CapabilityApi.addCapabilityListener(
+ mGoogleApiClient,
+ capabilityListener,
+ VOICE_TRANSCRIPTION_CAPABILITY_NAME);
+}
+
+
+After detecting the capable nodes, determine where to send the message. You should pick a node
+that is in close proximity to your wearable device to
+minimize message routing through multiple nodes. A nearby node is defined as one that is directly
+connected to the device. To determine if a node is nearby, call the Node.isNearby()
+method.
The following example shows how you might determine the best node to use:
+ +
+private String transcriptionNodeId = null;
+
+private void updateTranscriptionCapability(CapabilityInfo capabilityInfo) {
+ Set<Node> connectedNodes = capabilityInfo.getNodes();
+
+ transcriptionNodeId = pickBestNodeId(connectedNodes);
+}
+
+private String pickBestNodeId(Set<Node> nodes) {
+ String bestNodeId = null;
+ // Find a nearby node or pick one arbitrarily
+ for (Node node : nodes) {
+ if (node.isNearby()) {
+ return node.getId();
+ }
+ bestNodeId = node.getId();
+ }
+ return bestNodeId;
+}
+
+
+Once you’ve identified the best node to use, send the message using the
+MessageApi
+class.
The following example shows how to send a message to the transcription-capable node from a +wearable device. Verify that the node is available before you attempt to send the message. This call +is synchronous and blocks processing until the message is received or until the request times out. +
+ +
+
+public static final String VOICE_TRANSCRIPTION_MESSAGE_PATH = "/voice_transcription";
+
+private void requestTranscription(byte[] voiceData) {
+ if (transcriptionNodeId != null) {
+ Wearable.MessageApi.sendMessage(googleApiClient, transcriptionNodeId,
+ VOICE_TRANSCRIPTION_MESSAGE_PATH, voiceData).setResultCallback(
+ new ResultCallback() {
+ @Override
+ public void onResult(SendMessageResult sendMessageResult) {
+ if (!sendMessageResult.getStatus().isSuccess()) {
+ // Failed to send message
+ }
+ }
+ }
+ );
+ } else {
+ // Unable to retrieve node with transcription capability
+ }
+}
+
+
+Note: To learn more about asynchronous and synchronous calls +to Google Play services and when to use each, see +Communicate with Google Play +Services. +
+ +You can also broadcast messages to all connected nodes. To retrieve all of the +connected nodes that you can send messages to, implement the following code:
private Collection<String> getNodes() {
@@ -78,22 +227,24 @@ private Collection<String> getNodes() {
Receive a Message
-To be notified of received messages, you implement the
+To be notified of received messages, implement the
-MessageListener interface to provide a listener for message events. Then you register your
-listener with the
+MessageListener interface to provide a listener for message events. Then,
+register the listener with the
-MessageApi.addListener() method. This example shows how you might implement the listener
-to check the START_ACTIVITY_PATH that the previous example used to send the message.
-If this condition is true, a specific activity is started.
+MessageApi.addListener() method. This example shows how you might implement the
+listener to check the VOICE_TRANSCRIPTION_MESSAGE_PATH. If this condition is
+true, start an activity to process the voice
+data.
@Override
public void onMessageReceived(MessageEvent messageEvent) {
- if (messageEvent.getPath().equals(START_ACTIVITY_PATH)) {
+ if (messageEvent.getPath().equals(VOICE_TRANSCRIPTION_MESSAGE_PATH)) {
Intent startIntent = new Intent(this, MainActivity.class);
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startIntent.putExtra("VOICE_DATA", messageEvent.getData());
startActivity(startIntent);
}
}
diff --git a/docs/html/wear/images/wear_cloud_node.png b/docs/html/wear/images/wear_cloud_node.png
new file mode 100644
index 0000000000000..602e2476521b3
Binary files /dev/null and b/docs/html/wear/images/wear_cloud_node.png differ
diff --git a/docs/image_sources/training/wear/wear_cloud_node.graffle b/docs/image_sources/training/wear/wear_cloud_node.graffle
new file mode 100644
index 0000000000000..8a3e4b5ff8c90
--- /dev/null
+++ b/docs/image_sources/training/wear/wear_cloud_node.graffle
@@ -0,0 +1,4333 @@
+
+
+
+
+ ApplicationVersion
+
+ com.omnigroup.OmniGraffle6
+ 156.11.0.206384
+
+ CreationDate
+ 2015-04-10 16:36:28 +0000
+ Creator
+ Luan Nguyen
+ FileType
+ flat
+ GraphDocumentVersion
+ 11
+ GuidesLocked
+ NO
+ GuidesVisible
+ YES
+ ImageCounter
+ 3
+ LinksVisible
+ NO
+ MagnetsVisible
+ NO
+ MasterSheets
+
+ ModificationDate
+ 2015-04-15 20:46:45 +0000
+ Modifier
+ Luan Nguyen
+ NotesVisible
+ NO
+ OriginVisible
+ NO
+ PageBreaks
+ NO
+ PrintInfo
+
+ NSBottomMargin
+
+ float
+ 40
+
+ NSLeftMargin
+
+ float
+ 18
+
+ NSPaperSize
+
+ size
+ {612, 792}
+
+ NSRightMargin
+
+ float
+ 18
+
+ NSTopMargin
+
+ float
+ 18
+
+
+ ReadOnly
+ NO
+ Sheets
+
+
+ ActiveLayerIndex
+ 0
+ AutoAdjust
+
+ BackgroundGraphic
+
+ Bounds
+ {{0, 0}, {330, 375}}
+ Class
+ SolidGraphic
+ ID
+ 2
+ Style
+
+ stroke
+
+ Draws
+ NO
+
+
+
+ BaseZoom
+ 0
+ CanvasOrigin
+ {0, 0}
+ CanvasSize
+ {330, 375}
+ ColumnAlign
+ 1
+ ColumnSpacing
+ 36
+ DisplayScale
+ 1.0 pt = 1.0 px
+ GraphicsList
+
+
+ Bounds
+ {{66.75, 134.93730967886808}, {109.5, 28.169700000000034}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 10
+
+ ID
+ 1976
+ Layer
+ 0
+ Line
+
+ ID
+ 1893
+ Position
+ 0.61324973965300955
+ RotationType
+ 0
+
+ Magnets
+
+ {1, 1}
+ {1, -1}
+ {-1, -1}
+ {-1, 1}
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+ {-0.5, -0.233518}
+ {-0.49144199999999999, 0.26006299999999999}
+ {0.50711799999999996, -0.22408600000000001}
+ {0.50711799999999996, 0.267179}
+ {-0.27431, -0.474028}
+ {0.27977999999999997, -0.47847800000000001}
+ {0.29393799999999998, 0.54304399999999997}
+ {-0.28623199999999999, 0.55380399999999996}
+
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ b
+ 0.938075
+ g
+ 0.938269
+ r
+ 0.938154
+
+
+ shadow
+
+ Color
+
+ a
+ 0.35
+ b
+ 0.328823
+ g
+ 0.328823
+ r
+ 0.328823
+
+ Fuzziness
+ 1.5349206924438477
+ ShadowVector
+ {0, 1}
+
+ stroke
+
+ Color
+
+ b
+ 0.472997
+ g
+ 0.473094
+ r
+ 0.473036
+
+ CornerRadius
+ 2
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Mobile data/Wi-Fi}
+ VerticalPad
+ 0
+
+
+
+ Bounds
+ {{234, 92.968750000000014}, {49, 28.169700000000034}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 10
+
+ ID
+ 1975
+ Layer
+ 0
+ Magnets
+
+ {1, 1}
+ {1, -1}
+ {-1, -1}
+ {-1, 1}
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+ {-0.5, -0.233518}
+ {-0.49144199999999999, 0.26006299999999999}
+ {0.50711799999999996, -0.22408600000000001}
+ {0.50711799999999996, 0.267179}
+ {-0.27431, -0.474028}
+ {0.27977999999999997, -0.47847800000000001}
+ {0.29393799999999998, 0.54304399999999997}
+ {-0.28623199999999999, 0.55380399999999996}
+
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ b
+ 0.938075
+ g
+ 0.938269
+ r
+ 0.938154
+
+
+ shadow
+
+ Color
+
+ a
+ 0.35
+ b
+ 0.328823
+ g
+ 0.328823
+ r
+ 0.328823
+
+ Fuzziness
+ 1.5349206924438477
+ ShadowVector
+ {0, 1}
+
+ stroke
+
+ Color
+
+ b
+ 0.472997
+ g
+ 0.473094
+ r
+ 0.473036
+
+ CornerRadius
+ 2
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Wi-Fi}
+ VerticalPad
+ 0
+
+
+
+ Bounds
+ {{85.5, 252.41406223966777}, {72, 28.169700000000034}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 10
+
+ ID
+ 155
+ Layer
+ 0
+ Line
+
+ ID
+ 1895
+ Position
+ 0.48590017216177767
+ RotationType
+ 0
+
+ Magnets
+
+ {1, 1}
+ {1, -1}
+ {-1, -1}
+ {-1, 1}
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+ {-0.5, -0.233518}
+ {-0.49144199999999999, 0.26006299999999999}
+ {0.50711799999999996, -0.22408600000000001}
+ {0.50711799999999996, 0.267179}
+ {-0.27431, -0.474028}
+ {0.27977999999999997, -0.47847800000000001}
+ {0.29393799999999998, 0.54304399999999997}
+ {-0.28623199999999999, 0.55380399999999996}
+
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ b
+ 0.938075
+ g
+ 0.938269
+ r
+ 0.938154
+
+
+ shadow
+
+ Color
+
+ a
+ 0.35
+ b
+ 0.328823
+ g
+ 0.328823
+ r
+ 0.328823
+
+ Fuzziness
+ 1.5349206924438477
+ ShadowVector
+ {0, 1}
+
+ stroke
+
+ Color
+
+ b
+ 0.472997
+ g
+ 0.473094
+ r
+ 0.473036
+
+ CornerRadius
+ 2
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Bluetooth}
+ VerticalPad
+ 0
+
+
+
+ Class
+ Group
+ Graphics
+
+
+ Bounds
+ {{42.947532278010186, 15.40233227120396}, {169.1049769052272, 11.625478289816014}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ a
+ 0.65
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-Condensed
+ Size
+ 12
+
+ ID
+ 1972
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+ Text
+
+ Pad
+ 2
+ RTFD
+
+ BAtzdHJlYW10
+ eXBlZIHoA4QB
+ QISEhBJOU0F0
+ dHJpYnV0ZWRT
+ dHJpbmcAhIQI
+ TlNPYmplY3QA
+ hZKEhIQITlNT
+ dHJpbmcBlIQB
+ Kw5Hb29nbGUg
+ U2VydmVyc4aE
+ AmlJAQ6ShISE
+ DE5TRGljdGlv
+ bmFyeQCUhAFp
+ A5KElpYHTlND
+ b2xvcoaShISE
+ B05TQ29sb3IA
+ lIQBYwOEAmZm
+ AINmZiY/hpKE
+ lpYQTlNQYXJh
+ Z3JhcGhTdHls
+ ZYaShISEEE5T
+ UGFyYWdyYXBo
+ U3R5bGUAlIQE
+ Q0NAUwIAhISE
+ B05TQXJyYXkA
+ lJkMkoSEhAlO
+ U1RleHRUYWIA
+ lIQCQ2YAHIaS
+ hKKhADiGkoSi
+ oQBUhpKEoqEA
+ cIaShKKhAIGM
+ AIaShKKhAIGo
+ AIaShKKhAIHE
+ AIaShKKhAIHg
+ AIaShKKhAIH8
+ AIaShKKhAIEY
+ AYaShKKhAIE0
+ AYaShKKhAIFQ
+ AYaGAIaShJaW
+ Bk5TRm9udIaS
+ hISEBk5TRm9u
+ dB6UmRyEBVsy
+ OGNdBgAAABQA
+ AAD//kgAZQBs
+ AHYAZQB0AGkA
+ YwBhAIQBZgyb
+ AJsBmwCbAIaG
+ hg==
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+
+\f0\fs24 \cf2 Google Servers}
+ alpha
+
+
+ 0
+ 14
+ 0.64999997615814209
+
+
+
+
+
+ Bounds
+ {{27.500000000000043, 31.027813195885251}, {199.99999999999991, 96.972186804114742}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ a
+ 0.65
+ w
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 12
+
+ ID
+ 1973
+ Magnets
+
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Draws
+ NO
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Color
+
+ b
+ 0.578326
+ g
+ 0.578615
+ r
+ 0.578453
+
+ CornerRadius
+ 5
+ Pattern
+ 1
+
+
+ Text
+
+ VerticalPad
+ 10
+
+ TextPlacement
+ 0
+
+
+ ID
+ 1971
+ Layer
+ 0
+
+
+ Class
+ LineGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 12
+
+ Head
+
+ ID
+ 251
+
+ ID
+ 1895
+ Layer
+ 0
+ OrthogonalBarAutomatic
+
+ OrthogonalBarPoint
+ {293, 271.5}
+ OrthogonalBarPosition
+ -1
+ Points
+
+ {121.5, 232}
+ {121.5, 303}
+
+ Style
+
+ stroke
+
+ Color
+
+ a
+ 0.7
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ CornerRadius
+ 4
+ HeadArrow
+ FilledArrow
+ Legacy
+
+ LineType
+ 2
+ TailArrow
+ FilledArrow
+
+
+ Tail
+
+ ID
+ 250
+
+
+
+ Class
+ LineGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 12
+
+ Head
+
+ ID
+ 252
+
+ ID
+ 198
+ Layer
+ 0
+ OrthogonalBarAutomatic
+
+ OrthogonalBarPoint
+ {0, 0}
+ OrthogonalBarPosition
+ -1
+ Points
+
+ {180.49999999999997, 71.915149999999997}
+ {257.5, 104.58485}
+ {257.5, 181.83030000000002}
+
+ Style
+
+ stroke
+
+ Color
+
+ a
+ 0.7
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ CornerRadius
+ 4
+ HeadArrow
+ FilledArrow
+ Legacy
+
+ LineType
+ 2
+ TailArrow
+ FilledArrow
+
+
+ Tail
+
+ ID
+ 158
+ Info
+ 7
+
+
+
+ Class
+ LineGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 12
+
+ Head
+
+ ID
+ 250
+
+ ID
+ 1893
+ Layer
+ 0
+ OrthogonalBarAutomatic
+
+ OrthogonalBarPoint
+ {293, 271.5}
+ OrthogonalBarPosition
+ -1
+ Points
+
+ {121.5, 97}
+ {121.5, 181.83029999999999}
+
+ Style
+
+ stroke
+
+ Color
+
+ a
+ 0.7
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ CornerRadius
+ 4
+ HeadArrow
+ FilledArrow
+ Legacy
+
+ LineType
+ 2
+ TailArrow
+ FilledArrow
+
+
+ Tail
+
+ ID
+ 158
+
+
+
+ Bounds
+ {{212.5, 181.83029999999999}, {90, 50.169699999999999}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 10
+
+ ID
+ 252
+ Layer
+ 0
+ Magnets
+
+ {1, 1}
+ {1, -1}
+ {-1, -1}
+ {-1, 1}
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+ {-0.5, -0.233518}
+ {-0.49144199999999999, 0.26006299999999999}
+ {0.50711799999999996, -0.22408600000000001}
+ {0.50711799999999996, 0.267179}
+ {-0.27431, -0.474028}
+ {0.27977999999999997, -0.47847800000000001}
+ {0.29393799999999998, 0.54304399999999997}
+ {-0.28623199999999999, 0.55380399999999996}
+
+ Shape
+ RoundRect
+ Style
+
+ fill
+
+ Color
+
+ b
+ 0
+ g
+ 0.8
+ r
+ 0.6
+
+
+ shadow
+
+ Color
+
+ a
+ 0.35
+ b
+ 0.328823
+ g
+ 0.328823
+ r
+ 0.328823
+
+ Fuzziness
+ 1.5349206924438477
+ ShadowVector
+ {0, 1}
+
+ stroke
+
+ Color
+
+ b
+ 0
+ g
+ 0.6
+ r
+ 0.4
+
+ CornerRadius
+ 3
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Watch 2}
+ VerticalPad
+ 0
+
+
+
+ Bounds
+ {{76.5, 303}, {90, 50.169699999999999}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 10
+
+ ID
+ 251
+ Layer
+ 0
+ Magnets
+
+ {1, 1}
+ {1, -1}
+ {-1, -1}
+ {-1, 1}
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+ {-0.5, -0.233518}
+ {-0.49144199999999999, 0.26006299999999999}
+ {0.50711799999999996, -0.22408600000000001}
+ {0.50711799999999996, 0.267179}
+ {-0.27431, -0.474028}
+ {0.27977999999999997, -0.47847800000000001}
+ {0.29393799999999998, 0.54304399999999997}
+ {-0.28623199999999999, 0.55380399999999996}
+
+ Shape
+ RoundRect
+ Style
+
+ fill
+
+ Color
+
+ b
+ 0
+ g
+ 0.8
+ r
+ 0.6
+
+
+ shadow
+
+ Color
+
+ a
+ 0.35
+ b
+ 0.328823
+ g
+ 0.328823
+ r
+ 0.328823
+
+ Fuzziness
+ 1.5349206924438477
+ ShadowVector
+ {0, 1}
+
+ stroke
+
+ Color
+
+ b
+ 0
+ g
+ 0.6
+ r
+ 0.4
+
+ CornerRadius
+ 3
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Watch 1}
+ VerticalPad
+ 0
+
+
+
+ Bounds
+ {{62.5, 181.83029999999999}, {118, 50.169699999999999}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 10
+
+ ID
+ 250
+ Layer
+ 0
+ Magnets
+
+ {1, 1}
+ {1, -1}
+ {-1, -1}
+ {-1, 1}
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+ {-0.5, -0.233518}
+ {-0.49144199999999999, 0.26006299999999999}
+ {0.50711799999999996, -0.22408600000000001}
+ {0.50711799999999996, 0.267179}
+ {-0.27431, -0.474028}
+ {0.27977999999999997, -0.47847800000000001}
+ {0.29393799999999998, 0.54304399999999997}
+ {-0.28623199999999999, 0.55380399999999996}
+
+ Shape
+ RoundRect
+ Style
+
+ fill
+
+ Color
+
+ b
+ 0
+ g
+ 0.8
+ r
+ 0.6
+
+
+ shadow
+
+ Color
+
+ a
+ 0.35
+ b
+ 0.328823
+ g
+ 0.328823
+ r
+ 0.328823
+
+ Fuzziness
+ 1.5349206924438477
+ ShadowVector
+ {0, 1}
+
+ stroke
+
+ Color
+
+ b
+ 0
+ g
+ 0.6
+ r
+ 0.4
+
+ CornerRadius
+ 3
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Phone}
+ VerticalPad
+ 0
+
+
+
+ Bounds
+ {{62.5, 46.830299999999994}, {118, 50.169699999999999}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ Font
+ Roboto-BoldCondensed
+ Size
+ 12
+
+ ID
+ 158
+ Layer
+ 0
+ Magnets
+
+ {1, 1}
+ {1, -1}
+ {-1, -1}
+ {-1, 1}
+ {0, 1}
+ {0, -1}
+ {1, 0}
+ {-1, 0}
+ {-0.5, -0.233518}
+ {-0.49144199999999999, 0.26006299999999999}
+ {0.50711799999999996, -0.22408600000000001}
+ {0.50711799999999996, 0.267179}
+ {-0.27431, -0.474028}
+ {0.27977999999999997, -0.47847800000000001}
+ {0.29393799999999998, 0.54304399999999997}
+ {-0.28623199999999999, 0.55380399999999996}
+
+ Shape
+ RoundRect
+ Style
+
+ fill
+
+ Color
+
+ b
+ 0.898039
+ g
+ 0.709804
+ r
+ 0.2
+
+
+ shadow
+
+ Color
+
+ a
+ 0.35
+ b
+ 0.328823
+ g
+ 0.328823
+ r
+ 0.328823
+
+ Fuzziness
+ 1.5349206924438477
+ ShadowVector
+ {0, 1}
+
+ stroke
+
+ Color
+
+ b
+ 0.8
+ g
+ 0.6
+ r
+ 0
+
+ CornerRadius
+ 3
+ Draws
+ NO
+
+
+ Text
+
+ Text
+ {\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Cloud Node}
+ VerticalPad
+ 0
+
+
+
+ Class
+ Group
+ Graphics
+
+
+ Bounds
+ {{890, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 45
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{810, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 46
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{730, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 47
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{650, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 48
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{570, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 49
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{490, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 50
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{410, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 51
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{330, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 52
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{250, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 53
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{170, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 54
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{90, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 55
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{10, 0}, {60, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 56
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ ID
+ 44
+ Layer
+ 1
+
+
+ GridInfo
+
+ GridSpacing
+ 1
+ MajorGridColor
+
+ a
+ 0.15
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ MajorGridSpacing
+ 10
+ ShowsGrid
+ YES
+ SnapsToGrid
+ YES
+
+ HPages
+ 1
+ KeepToScale
+
+ Layers
+
+
+ Lock
+ NO
+ Name
+ Layer 1
+ Print
+ YES
+ View
+ YES
+
+
+ Lock
+ YES
+ Name
+ 12 Column Grid
+ Print
+ YES
+ View
+ NO
+
+
+ LayoutInfo
+
+ Animate
+ NO
+ circoMinDist
+ 18
+ circoSeparation
+ 0.0
+ layoutEngine
+ dot
+ neatoLineLength
+ 0.20000000298023224
+ neatoSeparation
+ 0.0
+ twopiSeparation
+ 0.0
+
+ Orientation
+ 2
+ PrintOnePage
+
+ RowAlign
+ 1
+ RowSpacing
+ 24
+ SheetTitle
+ 12 Columns
+ UniqueID
+ 1
+ VPages
+ 1
+ VerticalGuides
+
+ 10
+ 70
+ 90
+ 149
+ 170
+ 230
+ 250
+ 310
+ 330
+ 390
+ 410
+ 470
+ 490
+ 550
+ 570
+ 630
+ 650
+ 710
+ 730
+ 790
+ 810
+ 870
+ 890
+ 950
+
+
+
+ ActiveLayerIndex
+ 0
+ AutoAdjust
+
+ BackgroundGraphic
+
+ Bounds
+ {{0, 0}, {960, 1172}}
+ Class
+ SolidGraphic
+ ID
+ 2
+ Style
+
+ stroke
+
+ Draws
+ NO
+
+
+
+ BaseZoom
+ 0
+ CanvasOrigin
+ {0, 0}
+ CanvasSize
+ {960, 1172}
+ ColumnAlign
+ 1
+ ColumnSpacing
+ 20
+ DisplayScale
+ 1.0 pt = 1.0 px
+ GraphicsList
+
+
+ Class
+ Group
+ Graphics
+
+
+ Bounds
+ {{910, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 165
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{850, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 166
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{790, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 167
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{730, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 168
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{670, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 169
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{610, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 170
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{550, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 171
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{490, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 172
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{430, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 173
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{370, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 174
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{310, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 175
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{250, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 176
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{190, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 177
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{130, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 178
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{70, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 179
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{10, 0}, {40, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 180
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ ID
+ 164
+ Layer
+ 1
+
+
+ GridInfo
+
+ GridSpacing
+ 1
+ MajorGridColor
+
+ a
+ 0.15
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ MajorGridSpacing
+ 10
+ ShowsGrid
+ YES
+ SnapsToGrid
+ YES
+
+ HPages
+ 2
+ KeepToScale
+
+ Layers
+
+
+ Lock
+ NO
+ Name
+ Layer 1
+ Print
+ YES
+ View
+ YES
+
+
+ Lock
+ YES
+ Name
+ 16 Column Grid
+ Print
+ YES
+ View
+ YES
+
+
+ LayoutInfo
+
+ Animate
+ NO
+ circoMinDist
+ 18
+ circoSeparation
+ 0.0
+ layoutEngine
+ dot
+ neatoLineLength
+ 0.20000000298023224
+ neatoSeparation
+ 0.0
+ twopiSeparation
+ 0.0
+
+ Orientation
+ 2
+ PrintOnePage
+
+ RowAlign
+ 1
+ RowSpacing
+ 24
+ SheetTitle
+ 16 Columns
+ UniqueID
+ 2
+ VPages
+ 2
+ VerticalGuides
+
+ 10
+ 50
+ 70
+ 110
+ 130
+ 170
+ 190
+ 230
+ 250
+ 290
+ 310
+ 350
+ 370
+ 410
+ 430
+ 470
+ 490
+ 530
+ 550
+ 590
+ 610
+ 650
+ 670
+ 710
+ 730
+ 770
+ 790
+ 830
+ 850
+ 890
+ 910
+ 950
+
+
+
+ ActiveLayerIndex
+ 0
+ AutoAdjust
+
+ BackgroundGraphic
+
+ Bounds
+ {{0, 0}, {960, 1172}}
+ Class
+ SolidGraphic
+ ID
+ 2
+ Style
+
+ stroke
+
+ Draws
+ NO
+
+
+
+ BaseZoom
+ 0
+ CanvasOrigin
+ {0, 0}
+ CanvasSize
+ {960, 1172}
+ ColumnAlign
+ 1
+ ColumnSpacing
+ 10
+ DisplayScale
+ 1.0 pt = 1.0 px
+ GraphicsList
+
+
+ Class
+ Group
+ Graphics
+
+
+ Bounds
+ {{925, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 193
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{885, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 194
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{845, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 195
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{805, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 196
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{765, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 197
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{725, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 198
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{685, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 199
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{645, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 200
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{605, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 201
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{565, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 202
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{525, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 203
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{485, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 204
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{445, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 205
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{405, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 206
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{365, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 207
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{325, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 208
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{285, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 209
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{245, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 210
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{205, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 211
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{165, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 212
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{125, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 213
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{85, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 214
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{45, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 215
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ Bounds
+ {{5, 0}, {30, 1172}}
+ Class
+ ShapedGraphic
+ FontInfo
+
+ Color
+
+ w
+ 0
+
+ Font
+ Helvetica
+ Size
+ 12
+
+ ID
+ 216
+ Shape
+ Rectangle
+ Style
+
+ fill
+
+ Color
+
+ a
+ 0.1
+ b
+ 1
+ g
+ 0
+ r
+ 1
+
+
+ shadow
+
+ Draws
+ NO
+
+ stroke
+
+ Draws
+ NO
+
+
+
+
+ ID
+ 192
+ Layer
+ 1
+
+
+ GridInfo
+
+ GridSpacing
+ 1
+ MajorGridColor
+
+ a
+ 0.15
+ b
+ 0
+ g
+ 0
+ r
+ 0
+
+ MajorGridSpacing
+ 5
+ ShowsGrid
+ YES
+ SnapsToGrid
+ YES
+
+ HPages
+ 2
+ KeepToScale
+
+ Layers
+
+
+ Lock
+ NO
+ Name
+ Layer 1
+ Print
+ YES
+ View
+ YES
+
+
+ Lock
+ YES
+ Name
+ 24 Column Grid
+ Print
+ YES
+ View
+ YES
+
+
+ LayoutInfo
+
+ Animate
+ NO
+ circoMinDist
+ 18
+ circoSeparation
+ 0.0
+ layoutEngine
+ dot
+ neatoLineLength
+ 0.20000000298023224
+ neatoSeparation
+ 0.0
+ twopiSeparation
+ 0.0
+
+ Orientation
+ 2
+ PrintOnePage
+
+ RowAlign
+ 1
+ RowSpacing
+ 24
+ SheetTitle
+ 24 Columns
+ UniqueID
+ 3
+ VPages
+ 2
+ VerticalGuides
+
+ 5
+ 35
+ 45
+ 75
+ 85
+ 115
+ 125
+ 155
+ 165
+ 195
+ 205
+ 235
+ 245
+ 275
+ 285
+ 315
+ 325
+ 355
+ 365
+ 395
+ 405
+ 435
+ 445
+ 475
+ 485
+ 515
+ 525
+ 555
+ 565
+ 595
+ 605
+ 635
+ 645
+ 675
+ 685
+ 715
+ 725
+ 755
+ 765
+ 795
+ 805
+ 835
+ 845
+ 875
+ 885
+ 915
+ 925
+ 955
+
+
+
+ SmartAlignmentGuidesActive
+ YES
+ SmartDistanceGuidesActive
+ YES
+ UseEntirePage
+
+ WindowInfo
+
+ BottomSlabHeight
+ 471
+ CurrentSheet
+ 0
+ Expanded_Canvases
+
+ ShowInfo
+
+ ShowRuler
+
+ Sidebar
+
+ SidebarWidth
+ 230
+ VisibleRegion
+ {{0, 0}, {893, 674}}
+ Zoom
+ 1
+ ZoomValues
+
+
+ 12 Columns
+ 1
+ 1
+
+
+
+
+