active_rest_client 0.9.75 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38b0f0e4a23d6db8a525a38e0ee49e6514dffc50
4
- data.tar.gz: 2df46c685aba909268ba5aad7c0c99491c997e90
3
+ metadata.gz: 8a08be2e09a1d1735079f01e268c5ac7754ac833
4
+ data.tar.gz: ea067f45bc4cf459dfb48a149db5ef9c93e2b2b0
5
5
  SHA512:
6
- metadata.gz: 7cf6e65cf69fa56b970ed6223fdb5b485e0c2977a6d8f33455d1cc9ddb0c908b4b2d74b776d3447379fb35c87bf741d4d547b9460724dd0a0a224fca50f9266e
7
- data.tar.gz: ca5f1b7c7957b877a0fd20563dc6c5182cf567d9d388f7f213983645941203a2053f23e3eae4e997e6586576a4c55a34d360bda0d2c1c3a0feec1880472187b9
6
+ metadata.gz: 816c956a1ccb86051b880b4e3896d189b3953a0d8de0ba35ab05278b783d57ef267a3cb9550f1fff319e5609169f446ce1ddadd0d1ce3c6664e5c9913f82c743
7
+ data.tar.gz: 13004f6d21ada93a9c0d3b1eaf57c69d16c08ef9aac1fc90eefc8feb54b04106537712c7a699ae5c3b1dd01bce6c1666cf7287c1154f9ac39079f81dfd6622cf
data/.gitignore CHANGED
@@ -7,7 +7,6 @@ Gemfile.lock
7
7
  InstalledFiles
8
8
  _yardoc
9
9
  coverage
10
- doc/
11
10
  lib/bundler/man
12
11
  pkg
13
12
  rdoc
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,62 @@
1
+ # ActiveRestClient (ARC) Contributing Guide
2
+
3
+ ## Introduction
4
+
5
+ This project was built at Which? Ltd in the UK, but was released as open source in 2014 under the MIT Licence.
6
+
7
+ We're happy to receive contributions from the community for features and bugfixes and hopefully this guide helps new developers to the project to understand how to get started with the internals of ActiveRestClient.
8
+
9
+ ## Overview
10
+
11
+ ![Component Overview Diagram](https://raw.githubusercontent.com/whichdigital/active-rest-client/master/doc/ActiveRestClient%20Internals.png)
12
+
13
+ ## Components
14
+
15
+ ### Base
16
+ The main class in ARC is `ActiveRestClient::Base`. This includes a number of modules to provide a basic object ready to inherit from to form your own API classes.
17
+
18
+ **Configuration** includes all of the functionality for class and library level configuration (base_url, verbose logging, request format, etc).
19
+
20
+ **Mapping** provides the class methods `get`, `post`, `put`, `delete`, etc and it dynamically defines a method with the given name.
21
+
22
+ **Request Filtering** allows for all/any outbound requests to be altered before transmission. It maintains a list of filters in a class instance variable and applies each one in the defined order to every request.
23
+
24
+ **Validation** implements some very basic ActiveRecord-like validations to field values (presence, numericality, length and custom-blocks).
25
+
26
+ **Caching** adds low level caching functionality to the base class - registering a default cache store and adds the ability to read and write a cached response (which are called from the request).
27
+
28
+ **Recording** allows for developers to record API responses to a file/database for use when creating mock servers.
29
+
30
+ ### Logger
31
+
32
+ This is a simple class that either uses a plain text file or Rails' logger if being used within a Rails project.
33
+
34
+ ### Connection Manager/Connection
35
+
36
+ The principle is that ARC keeps a cached `Connection` to each unique API server and these are kept open using [persistent connections](https://en.wikipedia.org/wiki/HTTP_persistent_connection). The connection for a given `base_url` is created or retrieved from the pool by the `ConnectionManager`.
37
+
38
+ ### Request
39
+
40
+ `ActiveRestClient::Base` instantiates a new `ActiveRestClient::Request` object for each request, and it's up to this object to format the request body, make the request, parse the response, etc.
41
+
42
+ ### HeaderList
43
+
44
+ A `Request` has a list of headers associated, but if the same header is set with different capitalisation (e.g. during a `before_request` filter or in a `proxy`) then it should set the same header, not add a new one. I believe there is a class called something like Rack::Headers which is supposed to do the same thing, but when I came to implement it, it didn't work for me. *This is a candidate for removal/replacement*.
45
+
46
+ ### Lazy *
47
+
48
+ `LazyLoader` is a simple proxy class that takes an `ActiveRestClient::Request` object, has a `method_missing` and `respond_to` pair that when called actually calls `#request` on the request object to make the API call. This is useful if you want to prepare an API object that doesn't make the call unless it's needed (i.e. like ActiveRecord scopes don't execute if they're used within a cached fragment).
49
+
50
+ `LazyAssociationLoader` is a completely different beast. This is used in HAL responses where the association
51
+
52
+ ### ProxyBase
53
+
54
+ Proxying functionality allows authors of an API class to change any aspect of the request on the way out and the response on the way in. It means that you can work with an old code base but interact with a new API, or write your code base to use a new API that isn't available yet and proxy to the old API.
55
+
56
+ It maintains a mapping of method type and URL (either a string for an exact match, or a regular expression for changeable URLs) and executes the first matching mapping.
57
+
58
+ The `passthrough` method initially rebuilds the url (if the URL itself has been changed or any parameters have been changed) and then makes the original request with the new URL/body.
59
+
60
+ ### ResultIterator
61
+
62
+ This acts like a simple `Array` where the JSON response was an array, but it adds in a `parallelise` method for if you need request all the elements of an array (if they're lazy loaded for example) in multiple threads.
data/README.md CHANGED
@@ -42,7 +42,7 @@ class Person < ActiveRestClient::Base
42
42
  end
43
43
  ```
44
44
 
45
- Note I've specified the base_url in the class above. This is useful where you want to be explicit or use different APIs for some classes and be explicit. If you have one server that's generally used, you can set it once with a simple line in the application.rb/production.rb:
45
+ Note I've specified the base_url in the class above. This is useful where you want to be explicit or use different APIs for some classes and be explicit. If you have one server that's generally used, you can set it once with a simple line in a `config/initializer/{something}.rb` file:
46
46
 
47
47
  ```ruby
48
48
  ActiveRestClient::Base.base_url = "https://www.example.com/api/v1"
@@ -0,0 +1,1236 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>ActiveLayerIndex</key>
6
+ <integer>0</integer>
7
+ <key>ApplicationVersion</key>
8
+ <array>
9
+ <string>com.omnigroup.OmniGraffle</string>
10
+ <string>139.18.0.187838</string>
11
+ </array>
12
+ <key>AutoAdjust</key>
13
+ <true/>
14
+ <key>BackgroundGraphic</key>
15
+ <dict>
16
+ <key>Bounds</key>
17
+ <string>{{0, 0}, {558.99997329711914, 783}}</string>
18
+ <key>Class</key>
19
+ <string>SolidGraphic</string>
20
+ <key>ID</key>
21
+ <integer>2</integer>
22
+ <key>Style</key>
23
+ <dict>
24
+ <key>shadow</key>
25
+ <dict>
26
+ <key>Draws</key>
27
+ <string>NO</string>
28
+ </dict>
29
+ <key>stroke</key>
30
+ <dict>
31
+ <key>Draws</key>
32
+ <string>NO</string>
33
+ </dict>
34
+ </dict>
35
+ </dict>
36
+ <key>BaseZoom</key>
37
+ <integer>0</integer>
38
+ <key>CanvasOrigin</key>
39
+ <string>{0, 0}</string>
40
+ <key>ColumnAlign</key>
41
+ <integer>1</integer>
42
+ <key>ColumnSpacing</key>
43
+ <real>36</real>
44
+ <key>CreationDate</key>
45
+ <string>2014-03-24 09:32:25 +0000</string>
46
+ <key>Creator</key>
47
+ <string>Andy Jeffries</string>
48
+ <key>DisplayScale</key>
49
+ <string>1 0/72 in = 1.0000 in</string>
50
+ <key>GraphDocumentVersion</key>
51
+ <integer>8</integer>
52
+ <key>GraphicsList</key>
53
+ <array>
54
+ <dict>
55
+ <key>Class</key>
56
+ <string>LineGraphic</string>
57
+ <key>Head</key>
58
+ <dict>
59
+ <key>ID</key>
60
+ <integer>41</integer>
61
+ <key>Info</key>
62
+ <integer>2</integer>
63
+ </dict>
64
+ <key>ID</key>
65
+ <integer>42</integer>
66
+ <key>Points</key>
67
+ <array>
68
+ <string>{84.5, 587}</string>
69
+ <string>{84.5, 628}</string>
70
+ </array>
71
+ <key>Style</key>
72
+ <dict>
73
+ <key>stroke</key>
74
+ <dict>
75
+ <key>HeadArrow</key>
76
+ <string>FilledArrow</string>
77
+ <key>Legacy</key>
78
+ <true/>
79
+ <key>LineType</key>
80
+ <integer>1</integer>
81
+ <key>TailArrow</key>
82
+ <string>0</string>
83
+ </dict>
84
+ </dict>
85
+ <key>Tail</key>
86
+ <dict>
87
+ <key>ID</key>
88
+ <integer>23</integer>
89
+ <key>Info</key>
90
+ <integer>1</integer>
91
+ </dict>
92
+ </dict>
93
+ <dict>
94
+ <key>Bounds</key>
95
+ <string>{{20, 628}, {129, 50}}</string>
96
+ <key>Class</key>
97
+ <string>ShapedGraphic</string>
98
+ <key>ID</key>
99
+ <integer>41</integer>
100
+ <key>Magnets</key>
101
+ <array>
102
+ <string>{0, 1}</string>
103
+ <string>{0, -1}</string>
104
+ <string>{1, 0}</string>
105
+ <string>{-1, 0}</string>
106
+ </array>
107
+ <key>Shape</key>
108
+ <string>Rectangle</string>
109
+ <key>Style</key>
110
+ <dict>
111
+ <key>stroke</key>
112
+ <dict>
113
+ <key>Pattern</key>
114
+ <integer>1</integer>
115
+ </dict>
116
+ </dict>
117
+ <key>Text</key>
118
+ <dict>
119
+ <key>Text</key>
120
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
121
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
122
+ {\colortbl;\red255\green255\blue255;}
123
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
124
+
125
+ \f0\fs20 \cf0 Rails.logger\
126
+ (by default)}</string>
127
+ </dict>
128
+ </dict>
129
+ <dict>
130
+ <key>Class</key>
131
+ <string>LineGraphic</string>
132
+ <key>Head</key>
133
+ <dict>
134
+ <key>ID</key>
135
+ <integer>25</integer>
136
+ </dict>
137
+ <key>ID</key>
138
+ <integer>40</integer>
139
+ <key>Points</key>
140
+ <array>
141
+ <string>{369, 178}</string>
142
+ <string>{160, 96}</string>
143
+ </array>
144
+ <key>Style</key>
145
+ <dict>
146
+ <key>stroke</key>
147
+ <dict>
148
+ <key>HeadArrow</key>
149
+ <string>FilledArrow</string>
150
+ <key>Legacy</key>
151
+ <true/>
152
+ <key>LineType</key>
153
+ <integer>1</integer>
154
+ <key>TailArrow</key>
155
+ <string>0</string>
156
+ </dict>
157
+ </dict>
158
+ <key>Tail</key>
159
+ <dict>
160
+ <key>ID</key>
161
+ <integer>19</integer>
162
+ </dict>
163
+ </dict>
164
+ <dict>
165
+ <key>Class</key>
166
+ <string>LineGraphic</string>
167
+ <key>Head</key>
168
+ <dict>
169
+ <key>ID</key>
170
+ <integer>18</integer>
171
+ </dict>
172
+ <key>ID</key>
173
+ <integer>39</integer>
174
+ <key>Points</key>
175
+ <array>
176
+ <string>{160, 96}</string>
177
+ <string>{369, 71}</string>
178
+ </array>
179
+ <key>Style</key>
180
+ <dict>
181
+ <key>stroke</key>
182
+ <dict>
183
+ <key>HeadArrow</key>
184
+ <string>FilledArrow</string>
185
+ <key>Legacy</key>
186
+ <true/>
187
+ <key>LineType</key>
188
+ <integer>1</integer>
189
+ <key>TailArrow</key>
190
+ <string>0</string>
191
+ </dict>
192
+ </dict>
193
+ <key>Tail</key>
194
+ <dict>
195
+ <key>ID</key>
196
+ <integer>25</integer>
197
+ <key>Info</key>
198
+ <integer>3</integer>
199
+ </dict>
200
+ </dict>
201
+ <dict>
202
+ <key>Class</key>
203
+ <string>LineGraphic</string>
204
+ <key>Head</key>
205
+ <dict>
206
+ <key>ID</key>
207
+ <integer>21</integer>
208
+ <key>Info</key>
209
+ <integer>4</integer>
210
+ </dict>
211
+ <key>ID</key>
212
+ <integer>38</integer>
213
+ <key>Points</key>
214
+ <array>
215
+ <string>{357.49998664855957, 354.5}</string>
216
+ <string>{389, 429.5}</string>
217
+ </array>
218
+ <key>Style</key>
219
+ <dict>
220
+ <key>stroke</key>
221
+ <dict>
222
+ <key>HeadArrow</key>
223
+ <string>FilledArrow</string>
224
+ <key>Legacy</key>
225
+ <true/>
226
+ <key>LineType</key>
227
+ <integer>1</integer>
228
+ <key>TailArrow</key>
229
+ <string>0</string>
230
+ </dict>
231
+ </dict>
232
+ <key>Tail</key>
233
+ <dict>
234
+ <key>ID</key>
235
+ <integer>11</integer>
236
+ </dict>
237
+ </dict>
238
+ <dict>
239
+ <key>Class</key>
240
+ <string>LineGraphic</string>
241
+ <key>Head</key>
242
+ <dict>
243
+ <key>ID</key>
244
+ <integer>20</integer>
245
+ <key>Info</key>
246
+ <integer>4</integer>
247
+ </dict>
248
+ <key>ID</key>
249
+ <integer>37</integer>
250
+ <key>Points</key>
251
+ <array>
252
+ <string>{357.49998664855957, 354.5}</string>
253
+ <string>{389, 366.5}</string>
254
+ </array>
255
+ <key>Style</key>
256
+ <dict>
257
+ <key>stroke</key>
258
+ <dict>
259
+ <key>HeadArrow</key>
260
+ <string>FilledArrow</string>
261
+ <key>Legacy</key>
262
+ <true/>
263
+ <key>LineType</key>
264
+ <integer>1</integer>
265
+ <key>TailArrow</key>
266
+ <string>0</string>
267
+ </dict>
268
+ </dict>
269
+ <key>Tail</key>
270
+ <dict>
271
+ <key>ID</key>
272
+ <integer>11</integer>
273
+ <key>Info</key>
274
+ <integer>3</integer>
275
+ </dict>
276
+ </dict>
277
+ <dict>
278
+ <key>Class</key>
279
+ <string>LineGraphic</string>
280
+ <key>Head</key>
281
+ <dict>
282
+ <key>ID</key>
283
+ <integer>24</integer>
284
+ </dict>
285
+ <key>ID</key>
286
+ <integer>36</integer>
287
+ <key>Points</key>
288
+ <array>
289
+ <string>{201.49998664855957, 354.5}</string>
290
+ <string>{149, 297}</string>
291
+ </array>
292
+ <key>Style</key>
293
+ <dict>
294
+ <key>stroke</key>
295
+ <dict>
296
+ <key>HeadArrow</key>
297
+ <string>FilledArrow</string>
298
+ <key>Legacy</key>
299
+ <true/>
300
+ <key>LineType</key>
301
+ <integer>1</integer>
302
+ <key>TailArrow</key>
303
+ <string>0</string>
304
+ </dict>
305
+ </dict>
306
+ <key>Tail</key>
307
+ <dict>
308
+ <key>ID</key>
309
+ <integer>11</integer>
310
+ </dict>
311
+ </dict>
312
+ <dict>
313
+ <key>Class</key>
314
+ <string>LineGraphic</string>
315
+ <key>Head</key>
316
+ <dict>
317
+ <key>ID</key>
318
+ <integer>23</integer>
319
+ </dict>
320
+ <key>ID</key>
321
+ <integer>35</integer>
322
+ <key>Points</key>
323
+ <array>
324
+ <string>{201.49998664855957, 354.5}</string>
325
+ <string>{84.5, 537}</string>
326
+ </array>
327
+ <key>Style</key>
328
+ <dict>
329
+ <key>stroke</key>
330
+ <dict>
331
+ <key>HeadArrow</key>
332
+ <string>FilledArrow</string>
333
+ <key>Legacy</key>
334
+ <true/>
335
+ <key>LineType</key>
336
+ <integer>1</integer>
337
+ <key>TailArrow</key>
338
+ <string>0</string>
339
+ </dict>
340
+ </dict>
341
+ <key>Tail</key>
342
+ <dict>
343
+ <key>ID</key>
344
+ <integer>11</integer>
345
+ </dict>
346
+ </dict>
347
+ <dict>
348
+ <key>Class</key>
349
+ <string>LineGraphic</string>
350
+ <key>Head</key>
351
+ <dict>
352
+ <key>ID</key>
353
+ <integer>27</integer>
354
+ </dict>
355
+ <key>ID</key>
356
+ <integer>34</integer>
357
+ <key>Points</key>
358
+ <array>
359
+ <string>{453.5, 567}</string>
360
+ <string>{453.5, 619}</string>
361
+ </array>
362
+ <key>Style</key>
363
+ <dict>
364
+ <key>stroke</key>
365
+ <dict>
366
+ <key>HeadArrow</key>
367
+ <string>FilledArrow</string>
368
+ <key>Legacy</key>
369
+ <true/>
370
+ <key>LineType</key>
371
+ <integer>1</integer>
372
+ <key>TailArrow</key>
373
+ <string>0</string>
374
+ </dict>
375
+ </dict>
376
+ <key>Tail</key>
377
+ <dict>
378
+ <key>ID</key>
379
+ <integer>22</integer>
380
+ <key>Info</key>
381
+ <integer>1</integer>
382
+ </dict>
383
+ </dict>
384
+ <dict>
385
+ <key>Class</key>
386
+ <string>LineGraphic</string>
387
+ <key>Head</key>
388
+ <dict>
389
+ <key>ID</key>
390
+ <integer>22</integer>
391
+ </dict>
392
+ <key>ID</key>
393
+ <integer>33</integer>
394
+ <key>Points</key>
395
+ <array>
396
+ <string>{279.49998664855957, 484}</string>
397
+ <string>{389, 542}</string>
398
+ </array>
399
+ <key>Style</key>
400
+ <dict>
401
+ <key>stroke</key>
402
+ <dict>
403
+ <key>HeadArrow</key>
404
+ <string>FilledArrow</string>
405
+ <key>Legacy</key>
406
+ <true/>
407
+ <key>LineType</key>
408
+ <integer>1</integer>
409
+ <key>TailArrow</key>
410
+ <string>0</string>
411
+ </dict>
412
+ </dict>
413
+ <key>Tail</key>
414
+ <dict>
415
+ <key>ID</key>
416
+ <integer>11</integer>
417
+ <key>Info</key>
418
+ <integer>1</integer>
419
+ </dict>
420
+ </dict>
421
+ <dict>
422
+ <key>Class</key>
423
+ <string>LineGraphic</string>
424
+ <key>Head</key>
425
+ <dict>
426
+ <key>ID</key>
427
+ <integer>28</integer>
428
+ <key>Info</key>
429
+ <integer>2</integer>
430
+ </dict>
431
+ <key>ID</key>
432
+ <integer>32</integer>
433
+ <key>Points</key>
434
+ <array>
435
+ <string>{279.49998664855957, 484}</string>
436
+ <string>{268, 537}</string>
437
+ </array>
438
+ <key>Style</key>
439
+ <dict>
440
+ <key>stroke</key>
441
+ <dict>
442
+ <key>HeadArrow</key>
443
+ <string>FilledArrow</string>
444
+ <key>Legacy</key>
445
+ <true/>
446
+ <key>LineType</key>
447
+ <integer>1</integer>
448
+ <key>TailArrow</key>
449
+ <string>0</string>
450
+ </dict>
451
+ </dict>
452
+ <key>Tail</key>
453
+ <dict>
454
+ <key>ID</key>
455
+ <integer>11</integer>
456
+ <key>Info</key>
457
+ <integer>1</integer>
458
+ </dict>
459
+ </dict>
460
+ <dict>
461
+ <key>Class</key>
462
+ <string>LineGraphic</string>
463
+ <key>Head</key>
464
+ <dict>
465
+ <key>ID</key>
466
+ <integer>25</integer>
467
+ <key>Info</key>
468
+ <integer>1</integer>
469
+ </dict>
470
+ <key>ID</key>
471
+ <integer>31</integer>
472
+ <key>Points</key>
473
+ <array>
474
+ <string>{279.49998664855957, 225}</string>
475
+ <string>{95.5, 121}</string>
476
+ </array>
477
+ <key>Style</key>
478
+ <dict>
479
+ <key>stroke</key>
480
+ <dict>
481
+ <key>HeadArrow</key>
482
+ <string>FilledArrow</string>
483
+ <key>Legacy</key>
484
+ <true/>
485
+ <key>LineType</key>
486
+ <integer>1</integer>
487
+ <key>TailArrow</key>
488
+ <string>0</string>
489
+ </dict>
490
+ </dict>
491
+ <key>Tail</key>
492
+ <dict>
493
+ <key>ID</key>
494
+ <integer>11</integer>
495
+ </dict>
496
+ </dict>
497
+ <dict>
498
+ <key>Class</key>
499
+ <string>LineGraphic</string>
500
+ <key>Head</key>
501
+ <dict>
502
+ <key>ID</key>
503
+ <integer>19</integer>
504
+ </dict>
505
+ <key>ID</key>
506
+ <integer>30</integer>
507
+ <key>Points</key>
508
+ <array>
509
+ <string>{433.5, 96}</string>
510
+ <string>{433.5, 153}</string>
511
+ </array>
512
+ <key>Style</key>
513
+ <dict>
514
+ <key>stroke</key>
515
+ <dict>
516
+ <key>HeadArrow</key>
517
+ <string>FilledArrow</string>
518
+ <key>Legacy</key>
519
+ <true/>
520
+ <key>LineType</key>
521
+ <integer>1</integer>
522
+ <key>TailArrow</key>
523
+ <string>0</string>
524
+ </dict>
525
+ </dict>
526
+ <key>Tail</key>
527
+ <dict>
528
+ <key>ID</key>
529
+ <integer>18</integer>
530
+ <key>Info</key>
531
+ <integer>1</integer>
532
+ </dict>
533
+ </dict>
534
+ <dict>
535
+ <key>Class</key>
536
+ <string>LineGraphic</string>
537
+ <key>Head</key>
538
+ <dict>
539
+ <key>ID</key>
540
+ <integer>26</integer>
541
+ <key>Info</key>
542
+ <integer>2</integer>
543
+ </dict>
544
+ <key>ID</key>
545
+ <integer>29</integer>
546
+ <key>Points</key>
547
+ <array>
548
+ <string>{95.5, 121}</string>
549
+ <string>{95.5, 198}</string>
550
+ </array>
551
+ <key>Style</key>
552
+ <dict>
553
+ <key>stroke</key>
554
+ <dict>
555
+ <key>HeadArrow</key>
556
+ <string>FilledArrow</string>
557
+ <key>Legacy</key>
558
+ <true/>
559
+ <key>LineType</key>
560
+ <integer>1</integer>
561
+ <key>TailArrow</key>
562
+ <string>0</string>
563
+ </dict>
564
+ </dict>
565
+ <key>Tail</key>
566
+ <dict>
567
+ <key>ID</key>
568
+ <integer>25</integer>
569
+ <key>Info</key>
570
+ <integer>1</integer>
571
+ </dict>
572
+ </dict>
573
+ <dict>
574
+ <key>Bounds</key>
575
+ <string>{{203.5, 537}, {129, 50}}</string>
576
+ <key>Class</key>
577
+ <string>ShapedGraphic</string>
578
+ <key>ID</key>
579
+ <integer>28</integer>
580
+ <key>Magnets</key>
581
+ <array>
582
+ <string>{0, 1}</string>
583
+ <string>{0, -1}</string>
584
+ <string>{1, 0}</string>
585
+ <string>{-1, 0}</string>
586
+ </array>
587
+ <key>Shape</key>
588
+ <string>Rectangle</string>
589
+ <key>Style</key>
590
+ <dict>
591
+ <key>stroke</key>
592
+ <dict>
593
+ <key>Pattern</key>
594
+ <integer>1</integer>
595
+ </dict>
596
+ </dict>
597
+ <key>Text</key>
598
+ <dict>
599
+ <key>Text</key>
600
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
601
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
602
+ {\colortbl;\red255\green255\blue255;}
603
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
604
+
605
+ \f0\fs20 \cf0 Your Class Goes Here}</string>
606
+ </dict>
607
+ </dict>
608
+ <dict>
609
+ <key>Bounds</key>
610
+ <string>{{389, 619}, {129, 50}}</string>
611
+ <key>Class</key>
612
+ <string>ShapedGraphic</string>
613
+ <key>ID</key>
614
+ <integer>27</integer>
615
+ <key>Magnets</key>
616
+ <array>
617
+ <string>{0, 1}</string>
618
+ <string>{0, -1}</string>
619
+ <string>{1, 0}</string>
620
+ <string>{-1, 0}</string>
621
+ </array>
622
+ <key>Shape</key>
623
+ <string>Rectangle</string>
624
+ <key>Style</key>
625
+ <dict>
626
+ <key>stroke</key>
627
+ <dict>
628
+ <key>Pattern</key>
629
+ <integer>1</integer>
630
+ </dict>
631
+ </dict>
632
+ <key>Text</key>
633
+ <dict>
634
+ <key>Text</key>
635
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
636
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
637
+ {\colortbl;\red255\green255\blue255;}
638
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
639
+
640
+ \f0\fs20 \cf0 Your Proxy Goes Here}</string>
641
+ </dict>
642
+ </dict>
643
+ <dict>
644
+ <key>Bounds</key>
645
+ <string>{{31, 198}, {129, 50}}</string>
646
+ <key>Class</key>
647
+ <string>ShapedGraphic</string>
648
+ <key>ID</key>
649
+ <integer>26</integer>
650
+ <key>Magnets</key>
651
+ <array>
652
+ <string>{0, 1}</string>
653
+ <string>{0, -1}</string>
654
+ <string>{1, 0}</string>
655
+ <string>{-1, 0}</string>
656
+ </array>
657
+ <key>Shape</key>
658
+ <string>Rectangle</string>
659
+ <key>Text</key>
660
+ <dict>
661
+ <key>Text</key>
662
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
663
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
664
+ {\colortbl;\red255\green255\blue255;}
665
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
666
+
667
+ \f0\fs20 \cf0 Header List}</string>
668
+ </dict>
669
+ </dict>
670
+ <dict>
671
+ <key>Bounds</key>
672
+ <string>{{31, 71}, {129, 50}}</string>
673
+ <key>Class</key>
674
+ <string>ShapedGraphic</string>
675
+ <key>ID</key>
676
+ <integer>25</integer>
677
+ <key>Magnets</key>
678
+ <array>
679
+ <string>{0, 1}</string>
680
+ <string>{0, -1}</string>
681
+ <string>{1, 0}</string>
682
+ <string>{-1, 0}</string>
683
+ </array>
684
+ <key>Shape</key>
685
+ <string>Rectangle</string>
686
+ <key>Text</key>
687
+ <dict>
688
+ <key>Text</key>
689
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
690
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
691
+ {\colortbl;\red255\green255\blue255;}
692
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
693
+
694
+ \f0\fs20 \cf0 Request}</string>
695
+ </dict>
696
+ </dict>
697
+ <dict>
698
+ <key>Bounds</key>
699
+ <string>{{20, 272}, {129, 50}}</string>
700
+ <key>Class</key>
701
+ <string>ShapedGraphic</string>
702
+ <key>ID</key>
703
+ <integer>24</integer>
704
+ <key>Magnets</key>
705
+ <array>
706
+ <string>{0, 1}</string>
707
+ <string>{0, -1}</string>
708
+ <string>{1, 0}</string>
709
+ <string>{-1, 0}</string>
710
+ </array>
711
+ <key>Shape</key>
712
+ <string>Rectangle</string>
713
+ <key>Text</key>
714
+ <dict>
715
+ <key>Text</key>
716
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
717
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
718
+ {\colortbl;\red255\green255\blue255;}
719
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
720
+
721
+ \f0\fs20 \cf0 Result Iterator}</string>
722
+ </dict>
723
+ </dict>
724
+ <dict>
725
+ <key>Bounds</key>
726
+ <string>{{20, 537}, {129, 50}}</string>
727
+ <key>Class</key>
728
+ <string>ShapedGraphic</string>
729
+ <key>ID</key>
730
+ <integer>23</integer>
731
+ <key>Magnets</key>
732
+ <array>
733
+ <string>{0, 1}</string>
734
+ <string>{0, -1}</string>
735
+ <string>{1, 0}</string>
736
+ <string>{-1, 0}</string>
737
+ </array>
738
+ <key>Shape</key>
739
+ <string>Rectangle</string>
740
+ <key>Text</key>
741
+ <dict>
742
+ <key>Text</key>
743
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
744
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
745
+ {\colortbl;\red255\green255\blue255;}
746
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
747
+
748
+ \f0\fs20 \cf0 Logger}</string>
749
+ </dict>
750
+ </dict>
751
+ <dict>
752
+ <key>Bounds</key>
753
+ <string>{{389, 517}, {129, 50}}</string>
754
+ <key>Class</key>
755
+ <string>ShapedGraphic</string>
756
+ <key>ID</key>
757
+ <integer>22</integer>
758
+ <key>Magnets</key>
759
+ <array>
760
+ <string>{0, 1}</string>
761
+ <string>{0, -1}</string>
762
+ <string>{1, 0}</string>
763
+ <string>{-1, 0}</string>
764
+ </array>
765
+ <key>Shape</key>
766
+ <string>Rectangle</string>
767
+ <key>Text</key>
768
+ <dict>
769
+ <key>Text</key>
770
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
771
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
772
+ {\colortbl;\red255\green255\blue255;}
773
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
774
+
775
+ \f0\fs20 \cf0 ProxyBase}</string>
776
+ </dict>
777
+ </dict>
778
+ <dict>
779
+ <key>Bounds</key>
780
+ <string>{{389, 404.5}, {129, 50}}</string>
781
+ <key>Class</key>
782
+ <string>ShapedGraphic</string>
783
+ <key>ID</key>
784
+ <integer>21</integer>
785
+ <key>Magnets</key>
786
+ <array>
787
+ <string>{0, 1}</string>
788
+ <string>{0, -1}</string>
789
+ <string>{1, 0}</string>
790
+ <string>{-1, 0}</string>
791
+ </array>
792
+ <key>Shape</key>
793
+ <string>Rectangle</string>
794
+ <key>Text</key>
795
+ <dict>
796
+ <key>Text</key>
797
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
798
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
799
+ {\colortbl;\red255\green255\blue255;}
800
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
801
+
802
+ \f0\fs20 \cf0 Lazy Association Loader}</string>
803
+ </dict>
804
+ </dict>
805
+ <dict>
806
+ <key>Bounds</key>
807
+ <string>{{389, 341.5}, {129, 50}}</string>
808
+ <key>Class</key>
809
+ <string>ShapedGraphic</string>
810
+ <key>ID</key>
811
+ <integer>20</integer>
812
+ <key>Magnets</key>
813
+ <array>
814
+ <string>{0, 1}</string>
815
+ <string>{0, -1}</string>
816
+ <string>{1, 0}</string>
817
+ <string>{-1, 0}</string>
818
+ </array>
819
+ <key>Shape</key>
820
+ <string>Rectangle</string>
821
+ <key>Text</key>
822
+ <dict>
823
+ <key>Text</key>
824
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
825
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
826
+ {\colortbl;\red255\green255\blue255;}
827
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
828
+
829
+ \f0\fs20 \cf0 Lazy Loader}</string>
830
+ </dict>
831
+ </dict>
832
+ <dict>
833
+ <key>Bounds</key>
834
+ <string>{{369, 153}, {129, 50}}</string>
835
+ <key>Class</key>
836
+ <string>ShapedGraphic</string>
837
+ <key>ID</key>
838
+ <integer>19</integer>
839
+ <key>Magnets</key>
840
+ <array>
841
+ <string>{0, 1}</string>
842
+ <string>{0, -1}</string>
843
+ <string>{1, 0}</string>
844
+ <string>{-1, 0}</string>
845
+ </array>
846
+ <key>Shape</key>
847
+ <string>Rectangle</string>
848
+ <key>Text</key>
849
+ <dict>
850
+ <key>Text</key>
851
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
852
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
853
+ {\colortbl;\red255\green255\blue255;}
854
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
855
+
856
+ \f0\fs20 \cf0 Connection}</string>
857
+ </dict>
858
+ </dict>
859
+ <dict>
860
+ <key>Bounds</key>
861
+ <string>{{369, 46}, {129, 50}}</string>
862
+ <key>Class</key>
863
+ <string>ShapedGraphic</string>
864
+ <key>ID</key>
865
+ <integer>18</integer>
866
+ <key>Magnets</key>
867
+ <array>
868
+ <string>{0, 1}</string>
869
+ <string>{0, -1}</string>
870
+ <string>{1, 0}</string>
871
+ <string>{-1, 0}</string>
872
+ </array>
873
+ <key>Shape</key>
874
+ <string>Rectangle</string>
875
+ <key>Text</key>
876
+ <dict>
877
+ <key>Text</key>
878
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
879
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
880
+ {\colortbl;\red255\green255\blue255;}
881
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
882
+
883
+ \f0\fs20 \cf0 Connection\
884
+ Manager}</string>
885
+ </dict>
886
+ </dict>
887
+ <dict>
888
+ <key>Bounds</key>
889
+ <string>{{214.49998664855957, 447.5}, {129, 24.5}}</string>
890
+ <key>Class</key>
891
+ <string>ShapedGraphic</string>
892
+ <key>ID</key>
893
+ <integer>17</integer>
894
+ <key>Magnets</key>
895
+ <array>
896
+ <string>{0, 1}</string>
897
+ <string>{0, -1}</string>
898
+ <string>{1, 0}</string>
899
+ <string>{-1, 0}</string>
900
+ </array>
901
+ <key>Shape</key>
902
+ <string>Rectangle</string>
903
+ <key>Text</key>
904
+ <dict>
905
+ <key>Text</key>
906
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
907
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
908
+ {\colortbl;\red255\green255\blue255;}
909
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
910
+
911
+ \f0\fs20 \cf0 Recording}</string>
912
+ </dict>
913
+ </dict>
914
+ <dict>
915
+ <key>Bounds</key>
916
+ <string>{{214.49998664855957, 411.5}, {129, 24.5}}</string>
917
+ <key>Class</key>
918
+ <string>ShapedGraphic</string>
919
+ <key>ID</key>
920
+ <integer>16</integer>
921
+ <key>Magnets</key>
922
+ <array>
923
+ <string>{0, 1}</string>
924
+ <string>{0, -1}</string>
925
+ <string>{1, 0}</string>
926
+ <string>{-1, 0}</string>
927
+ </array>
928
+ <key>Shape</key>
929
+ <string>Rectangle</string>
930
+ <key>Text</key>
931
+ <dict>
932
+ <key>Text</key>
933
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
934
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
935
+ {\colortbl;\red255\green255\blue255;}
936
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
937
+
938
+ \f0\fs20 \cf0 Caching}</string>
939
+ </dict>
940
+ </dict>
941
+ <dict>
942
+ <key>Bounds</key>
943
+ <string>{{214.49998664855957, 375.5}, {129, 24.5}}</string>
944
+ <key>Class</key>
945
+ <string>ShapedGraphic</string>
946
+ <key>ID</key>
947
+ <integer>15</integer>
948
+ <key>Magnets</key>
949
+ <array>
950
+ <string>{0, 1}</string>
951
+ <string>{0, -1}</string>
952
+ <string>{1, 0}</string>
953
+ <string>{-1, 0}</string>
954
+ </array>
955
+ <key>Shape</key>
956
+ <string>Rectangle</string>
957
+ <key>Text</key>
958
+ <dict>
959
+ <key>Text</key>
960
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
961
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
962
+ {\colortbl;\red255\green255\blue255;}
963
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
964
+
965
+ \f0\fs20 \cf0 Validation}</string>
966
+ </dict>
967
+ </dict>
968
+ <dict>
969
+ <key>Bounds</key>
970
+ <string>{{214.49998664855957, 339.5}, {129, 24.5}}</string>
971
+ <key>Class</key>
972
+ <string>ShapedGraphic</string>
973
+ <key>ID</key>
974
+ <integer>14</integer>
975
+ <key>Magnets</key>
976
+ <array>
977
+ <string>{0, 1}</string>
978
+ <string>{0, -1}</string>
979
+ <string>{1, 0}</string>
980
+ <string>{-1, 0}</string>
981
+ </array>
982
+ <key>Shape</key>
983
+ <string>Rectangle</string>
984
+ <key>Text</key>
985
+ <dict>
986
+ <key>Text</key>
987
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
988
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
989
+ {\colortbl;\red255\green255\blue255;}
990
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
991
+
992
+ \f0\fs20 \cf0 Request Filtering}</string>
993
+ </dict>
994
+ </dict>
995
+ <dict>
996
+ <key>Bounds</key>
997
+ <string>{{214.49998664855957, 303.5}, {129, 24.5}}</string>
998
+ <key>Class</key>
999
+ <string>ShapedGraphic</string>
1000
+ <key>ID</key>
1001
+ <integer>13</integer>
1002
+ <key>Magnets</key>
1003
+ <array>
1004
+ <string>{0, 1}</string>
1005
+ <string>{0, -1}</string>
1006
+ <string>{1, 0}</string>
1007
+ <string>{-1, 0}</string>
1008
+ </array>
1009
+ <key>Shape</key>
1010
+ <string>Rectangle</string>
1011
+ <key>Text</key>
1012
+ <dict>
1013
+ <key>Text</key>
1014
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
1015
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
1016
+ {\colortbl;\red255\green255\blue255;}
1017
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
1018
+
1019
+ \f0\fs20 \cf0 Mapping}</string>
1020
+ </dict>
1021
+ </dict>
1022
+ <dict>
1023
+ <key>Bounds</key>
1024
+ <string>{{214.49998664855957, 267.5}, {129, 24.5}}</string>
1025
+ <key>Class</key>
1026
+ <string>ShapedGraphic</string>
1027
+ <key>ID</key>
1028
+ <integer>12</integer>
1029
+ <key>Magnets</key>
1030
+ <array>
1031
+ <string>{0, 1}</string>
1032
+ <string>{0, -1}</string>
1033
+ <string>{1, 0}</string>
1034
+ <string>{-1, 0}</string>
1035
+ </array>
1036
+ <key>Shape</key>
1037
+ <string>Rectangle</string>
1038
+ <key>Text</key>
1039
+ <dict>
1040
+ <key>Text</key>
1041
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
1042
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
1043
+ {\colortbl;\red255\green255\blue255;}
1044
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
1045
+
1046
+ \f0\fs20 \cf0 Configuration}</string>
1047
+ </dict>
1048
+ </dict>
1049
+ <dict>
1050
+ <key>Bounds</key>
1051
+ <string>{{201.49998664855957, 225}, {156, 259}}</string>
1052
+ <key>Class</key>
1053
+ <string>ShapedGraphic</string>
1054
+ <key>ID</key>
1055
+ <integer>11</integer>
1056
+ <key>Magnets</key>
1057
+ <array>
1058
+ <string>{0, 1}</string>
1059
+ <string>{0, -1}</string>
1060
+ <string>{1, 0}</string>
1061
+ <string>{-1, 0}</string>
1062
+ </array>
1063
+ <key>Shape</key>
1064
+ <string>Rectangle</string>
1065
+ <key>Style</key>
1066
+ <dict/>
1067
+ <key>Text</key>
1068
+ <dict>
1069
+ <key>Text</key>
1070
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf190
1071
+ \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
1072
+ {\colortbl;\red255\green255\blue255;}
1073
+ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
1074
+
1075
+ \f0\fs20 \cf0 Base}</string>
1076
+ </dict>
1077
+ <key>TextPlacement</key>
1078
+ <integer>0</integer>
1079
+ </dict>
1080
+ </array>
1081
+ <key>GridInfo</key>
1082
+ <dict/>
1083
+ <key>GuidesLocked</key>
1084
+ <string>NO</string>
1085
+ <key>GuidesVisible</key>
1086
+ <string>YES</string>
1087
+ <key>HPages</key>
1088
+ <integer>1</integer>
1089
+ <key>ImageCounter</key>
1090
+ <integer>1</integer>
1091
+ <key>KeepToScale</key>
1092
+ <false/>
1093
+ <key>Layers</key>
1094
+ <array>
1095
+ <dict>
1096
+ <key>Lock</key>
1097
+ <string>NO</string>
1098
+ <key>Name</key>
1099
+ <string>Layer 1</string>
1100
+ <key>Print</key>
1101
+ <string>YES</string>
1102
+ <key>View</key>
1103
+ <string>YES</string>
1104
+ </dict>
1105
+ </array>
1106
+ <key>LayoutInfo</key>
1107
+ <dict>
1108
+ <key>Animate</key>
1109
+ <string>NO</string>
1110
+ <key>circoMinDist</key>
1111
+ <real>18</real>
1112
+ <key>circoSeparation</key>
1113
+ <real>0.0</real>
1114
+ <key>layoutEngine</key>
1115
+ <string>dot</string>
1116
+ <key>neatoSeparation</key>
1117
+ <real>0.0</real>
1118
+ <key>twopiSeparation</key>
1119
+ <real>0.0</real>
1120
+ </dict>
1121
+ <key>LinksVisible</key>
1122
+ <string>NO</string>
1123
+ <key>MagnetsVisible</key>
1124
+ <string>NO</string>
1125
+ <key>MasterSheets</key>
1126
+ <array/>
1127
+ <key>ModificationDate</key>
1128
+ <string>2014-03-26 10:37:19 +0000</string>
1129
+ <key>Modifier</key>
1130
+ <string>Andy Jeffries</string>
1131
+ <key>NotesVisible</key>
1132
+ <string>NO</string>
1133
+ <key>Orientation</key>
1134
+ <integer>2</integer>
1135
+ <key>OriginVisible</key>
1136
+ <string>NO</string>
1137
+ <key>PageBreaks</key>
1138
+ <string>YES</string>
1139
+ <key>PrintInfo</key>
1140
+ <dict>
1141
+ <key>NSBottomMargin</key>
1142
+ <array>
1143
+ <string>float</string>
1144
+ <string>41</string>
1145
+ </array>
1146
+ <key>NSHorizonalPagination</key>
1147
+ <array>
1148
+ <string>coded</string>
1149
+ <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
1150
+ </array>
1151
+ <key>NSLeftMargin</key>
1152
+ <array>
1153
+ <string>float</string>
1154
+ <string>18</string>
1155
+ </array>
1156
+ <key>NSPaperSize</key>
1157
+ <array>
1158
+ <string>size</string>
1159
+ <string>{594.99997329711914, 842}</string>
1160
+ </array>
1161
+ <key>NSPrintReverseOrientation</key>
1162
+ <array>
1163
+ <string>int</string>
1164
+ <string>0</string>
1165
+ </array>
1166
+ <key>NSRightMargin</key>
1167
+ <array>
1168
+ <string>float</string>
1169
+ <string>18</string>
1170
+ </array>
1171
+ <key>NSTopMargin</key>
1172
+ <array>
1173
+ <string>float</string>
1174
+ <string>18</string>
1175
+ </array>
1176
+ </dict>
1177
+ <key>PrintOnePage</key>
1178
+ <false/>
1179
+ <key>ReadOnly</key>
1180
+ <string>NO</string>
1181
+ <key>RowAlign</key>
1182
+ <integer>1</integer>
1183
+ <key>RowSpacing</key>
1184
+ <real>36</real>
1185
+ <key>SheetTitle</key>
1186
+ <string>Canvas 1</string>
1187
+ <key>SmartAlignmentGuidesActive</key>
1188
+ <string>YES</string>
1189
+ <key>SmartDistanceGuidesActive</key>
1190
+ <string>YES</string>
1191
+ <key>UniqueID</key>
1192
+ <integer>1</integer>
1193
+ <key>UseEntirePage</key>
1194
+ <false/>
1195
+ <key>VPages</key>
1196
+ <integer>1</integer>
1197
+ <key>WindowInfo</key>
1198
+ <dict>
1199
+ <key>CurrentSheet</key>
1200
+ <integer>0</integer>
1201
+ <key>ExpandedCanvases</key>
1202
+ <array>
1203
+ <dict>
1204
+ <key>name</key>
1205
+ <string>Canvas 1</string>
1206
+ </dict>
1207
+ </array>
1208
+ <key>Frame</key>
1209
+ <string>{{36, 4}, {693, 874}}</string>
1210
+ <key>ListView</key>
1211
+ <true/>
1212
+ <key>OutlineWidth</key>
1213
+ <integer>142</integer>
1214
+ <key>RightSidebar</key>
1215
+ <false/>
1216
+ <key>ShowRuler</key>
1217
+ <true/>
1218
+ <key>Sidebar</key>
1219
+ <true/>
1220
+ <key>SidebarWidth</key>
1221
+ <integer>120</integer>
1222
+ <key>VisibleRegion</key>
1223
+ <string>{{0, 2}, {558, 735}}</string>
1224
+ <key>Zoom</key>
1225
+ <real>1</real>
1226
+ <key>ZoomValues</key>
1227
+ <array>
1228
+ <array>
1229
+ <string>Canvas 1</string>
1230
+ <real>1</real>
1231
+ <real>1</real>
1232
+ </array>
1233
+ </array>
1234
+ </dict>
1235
+ </dict>
1236
+ </plist>