Updated to use FreeRTOSV7.4.2.
Minor changes in Makefiles.
Included ISCP interface.
+2013.07.17 Started aic-2.4.0.
+ Updated to use FreeRTOSV7.4.2.
+ Minor changes in Makefiles.
+ Included ISCP interface.
+
+
2012.04.20 Started aic-2.3.0.
Reworked source tree.
Capacitor involucre sizes made invisible in schematics.
$(CC) $(CPU) $^ -o $@ $(CCLIBDIR) $(AICLIBDIR) -Wl $(CCGLD) $(AICLIB)
daemonrtos.o:daemonrtos.c
- $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS)
+ $(CC) $(CPU) -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS)
$(OSOBJS):$(OSFILES)
- for i in $(OSFILES); do $(CC) $(CPU) -x c -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done
+ for i in $(OSFILES); do $(CC) $(CPU) -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done
clean:
rm -f *.o daemonrtos *~
+++ /dev/null
-
-daemonrtos: file format elf32-pic30
-
-Disassembly of section .reset:
-
-00000000 <.reset>:
- 0: 08 01 04 goto 0x108 <TMR3HLD>
- 2: 00 00 00
-Disassembly of section .text:
-
-00000100 <.handle>:
- ...
-
-00000108 <__resetPRI>:
- 108: 0f dc 20 mov.w #0xdc0, w15
- 10a: 80 ff 20 mov.w #0xff8, w0
- 10c: 00 01 88 mov.w w0, 0x20
- 10e: 00 00 00 nop
- 110: 05 00 07 rcall . + 0xC
- 112: 0c 00 07 rcall . + 0x1A
- 114: d4 05 02 call 0x5d4 <_main>
- 116: 00 00 00
- 118: 00 40 da .pword 0xda4000
- 11a: 00 00 fe reset
-
-0000011c <__psv_init>:
- 11c: 44 40 a9 bclr.b 0x44, #0x2
- 11e: 80 08 20 mov.w #0x88, w0
- 120: 00 00 e0 cp0.w w0
- 122: 03 00 32 bra Z, . + 0x8
- 124: 00 00 20 mov.w #0x0, w0
- 126: a0 01 88 mov.w w0, 0x34
- 128: 44 40 a8 bset.b 0x44, #0x2
-
-0000012a <L1\ 21>:
- 12a: 00 00 06 return
-
-0000012c <__data_init>:
- 12c: c0 a8 21 mov.w #0x1a8c, w0
- 12e: 01 00 20 mov.w #0x0, w1
- 130: 16 00 37 bra . + 0x2E
-
-00000132 <L1\ 22>:
- 132: 62 00 40 add.w w0, #0x2, w0
- 134: e0 80 48 addc.w w1, #0x0, w1
- 136: 91 01 88 mov.w w1, 0x32
- 138: 90 01 ba tblrdl.w [w0], w3
- 13a: 62 00 40 add.w w0, #0x2, w0
- 13c: e0 80 48 addc.w w1, #0x0, w1
- 13e: 91 01 88 mov.w w1, 0x32
- 140: 90 02 ba tblrdl.w [w0], w5
- 142: 62 00 40 add.w w0, #0x2, w0
- 144: e0 80 48 addc.w w1, #0x0, w1
- 146: 00 02 eb clr.w w4
- 148: 60 28 e1 cp.w w5, #0x0
- 14a: 05 00 3a bra NZ, . + 0xC
- 14c: 83 01 e9 dec.w w3, w3
- 14e: 07 00 33 bra N, . + 0x10
- 150: 03 80 09 repeat w3
- 152: 00 59 eb clr.b [w2++]
- 154: 04 00 37 bra . + 0xA
-
-00000156 <L2\ 21>:
- 156: 61 28 e1 cp.w w5, #0x1
- 158: 01 00 32 bra Z, . + 0x4
- 15a: 00 82 eb setm.w w4
-
-0000015c <L3\ 21>:
- 15c: 05 00 07 rcall . + 0xC
-
-0000015e <L4\ 21>:
- 15e: 91 01 88 mov.w w1, 0x32
- 160: 10 01 ba tblrdl.w [w0], w2
- 162: 02 00 e0 cp0.w w2
- 164: e6 ff 3a bra NZ, . + 0xFFFFFFCE
- 166: 00 00 05 retlw.w #0x0, w0
-
-00000168 <L1\ 23>:
- 168: 91 01 88 mov.w w1, 0x32
- 16a: 80 02 78 mov.w w0, w5
- 16c: 62 00 40 add.w w0, #0x2, w0
- 16e: e0 80 48 addc.w w1, #0x0, w1
- 170: 35 59 ba tblrdl.b [w5++], [w2++]
- 172: 83 01 e9 dec.w w3, w3
- 174: 08 00 32 bra Z, . + 0x12
- 176: 25 59 ba tblrdl.b [w5--], [w2++]
- 178: 83 01 e9 dec.w w3, w3
- 17a: 05 00 32 bra Z, . + 0xC
- 17c: 04 00 e0 cp0.w w4
- 17e: f4 ff 32 bra Z, . + 0xFFFFFFEA
- 180: 15 d9 ba tblrdh.b [w5], [w2++]
- 182: 83 01 e9 dec.w w3, w3
- 184: f1 ff 3a bra NZ, . + 0xFFFFFFE4
-
-00000186 <L2\ 22>:
- 186: 00 00 06 return
-
-00000188 <_memcpy>:
- 188: 80 01 78 mov.w w0, w3
-
-0000018a <.LM3>:
- 18a: 02 00 e0 cp0.w w2
- 18c: 03 00 32 bra Z, . + 0x8
-
-0000018e <.L6>:
- 18e: b1 59 78 mov.b [w1++], [w3++]
-
-00000190 <.LM5>:
- 190: 02 01 e9 dec.w w2, w2
- 192: fd ff 3a bra NZ, . + 0xFFFFFFFC
-
-00000194 <.L8>:
- 194: 00 00 06 return
-
-00000196 <_memset>:
- 196: 80 01 78 mov.w w0, w3
-
-00000198 <.LM3>:
- 198: 02 00 e0 cp0.w w2
- 19a: 03 00 32 bra Z, . + 0x8
-
-0000019c <.L6>:
- 19c: 81 59 78 mov.b w1, [w3++]
-
-0000019e <.LM5>:
- 19e: 02 01 e9 dec.w w2, w2
- 1a0: fd ff 3a bra NZ, . + 0xFFFFFFFC
-
-000001a2 <.L8>:
- 1a2: 00 00 06 return
-
-000001a4 <_strncpy>:
- 1a4: 80 01 78 mov.w w0, w3
- 1a6: 02 00 e0 cp0.w w2
- 1a8: 07 00 32 bra Z, . + 0x10
- 1aa: 11 04 e0 cp0.b [w1]
- 1ac: 05 00 32 bra Z, . + 0xC
-
-000001ae <.L7>:
- 1ae: b1 59 78 mov.b [w1++], [w3++]
-
-000001b0 <.LM4>:
- 1b0: 02 01 e9 dec.w w2, w2
- 1b2: 02 00 32 bra Z, . + 0x6
- 1b4: 11 04 e0 cp0.b [w1]
- 1b6: fb ff 3a bra NZ, . + 0xFFFFFFF8
-
-000001b8 <.L3>:
- 1b8: 02 00 e0 cp0.w w2
- 1ba: 03 00 32 bra Z, . + 0x8
-
-000001bc <.L12>:
- 1bc: 80 59 eb clr.b [w3++]
-
-000001be <.LM7>:
- 1be: 02 01 e9 dec.w w2, w2
- 1c0: fd ff 3a bra NZ, . + 0xFFFFFFFC
-
-000001c2 <.L15>:
- 1c2: 00 00 06 return
-
-000001c4 <___truncdfsf2>:
- 1c4: 14 00 fa lnk #0x14
- 1c6: 88 9f be mov.d w8, [w15++]
- 1c8: 8a 9f be mov.d w10, [w15++]
- 1ca: 8c 9f be mov.d w12, [w15++]
- 1cc: 00 05 be mov.d w0, w10
- 1ce: 02 06 be mov.d w2, w12
- 1d0: 68 00 47 add.w w14, #0x8, w0
- 1d2: 0c 90 be mov.d w12, [w0--]
- 1d4: 0a 90 be mov.d w10, [w0--]
- 1d6: 5c 01 07 rcall . + 0x2BA
- 1d8: 64 00 e1 cp.w w0, #0x4
- 1da: 1a 00 32 bra Z, . + 0x36
- 1dc: 16 00 3e bra GTU, . + 0x2E
- 1de: 61 00 e1 cp.w w0, #0x1
- 1e0: 1a 00 32 bra Z, . + 0x36
- 1e2: 6e 04 90 mov.w [w14+12], w8
- 1e4: fe 04 90 mov.w [w14+14], w9
- 1e6: 0e 0b 90 mov.w [w14+16], w6
- 1e8: 9e 0b 90 mov.w [w14+18], w7
- 1ea: 60 11 b8 mul.uu w2, #0x0, w2
- 1ec: 9e 05 90 mov.w [w14+2], w11
- 1ee: 0b 38 b1 sub.w #0x380, w11
- 1f0: d5 01 20 mov.w #0x1d, w5
-
-000001f2 <align>:
- 1f2: 82 81 71 ior.w w3, w2, w3
- 1f4: 61 01 64 and.w w8, #0x1, w2
- 1f6: 87 03 d1 lsr.w w7, w7
- 1f8: 06 83 d3 rrc.w w6, w6
- 1fa: 89 84 d3 rrc.w w9, w9
- 1fc: 08 84 d3 rrc.w w8, w8
- 1fe: 85 02 e9 dec.w w5, w5
- 200: f8 ff 3a bra NZ, . + 0xFFFFFFF2
- 202: 6d 01 07 rcall . + 0x2DC
-
-00000204 <signoff>:
- 204: 0d f0 a7 btsc.w w13, #0xf
- 206: 01 f0 a0 bset.w w1, #0xf
-
-00000208 <exit>:
- 208: a4 01 37 bra . + 0x34A
-
-0000020a <xIsNaN>:
- 20a: f1 ff 27 mov.w #0x7fff, w1
- 20c: f0 ff 2f mov.w #0xffff, w0
- 20e: a1 01 37 bra . + 0x344
-
-00000210 <xIsInf>:
- 210: 01 f8 27 mov.w #0x7f80, w1
- 212: 00 00 20 mov.w #0x0, w0
- 214: f7 ff 37 bra . + 0xFFFFFFF0
-
-00000216 <xIsZero>:
- 216: 60 00 b8 mul.uu w0, #0x0, w0
- 218: f5 ff 37 bra . + 0xFFFFFFEC
-
-0000021a <___floatsisf>:
- 21a: 88 9f be mov.d w8, [w15++]
- 21c: 8a 9f be mov.d w10, [w15++]
- 21e: 01 05 78 mov.w w1, w10
- 220: 01 00 e0 cp0.w w1
- 222: 04 00 35 bra LT, . + 0xA
- 224: 08 00 3c bra GT, . + 0x12
- 226: 00 00 e0 cp0.w w0
- 228: 20 00 32 bra Z, . + 0x42
- 22a: 05 00 37 bra . + 0xC
-
-0000022c <negative>:
- 22c: 60 00 10 subr.w w0, #0x0, w0
- 22e: e0 80 18 subbr.w w1, #0x0, w1
- 230: 02 00 3b bra NN, . + 0x6
- 232: 01 f0 2c mov.w #0xcf00, w1
- 234: 1a 00 37 bra . + 0x36
-
-00000236 <notspecial>:
- 236: 00 04 be mov.d w0, w8
- 238: 60 11 b8 mul.uu w2, #0x0, w2
- 23a: 6b 09 20 mov.w #0x96, w11
- 23c: 09 82 cf ff1l w9, w4
- 23e: 02 00 39 bra NC, . + 0x6
- 240: 08 82 cf ff1l w8, w4
- 242: 04 41 b0 add.b #0x10, w4
-
-00000244 <fixshift>:
- 244: 69 42 52 sub.b w4, #0x9, w4
- 246: 0e 00 32 bra Z, . + 0x1E
- 248: 08 00 3b bra NN, . + 0x12
-
-0000024a <shiftright>:
- 24a: 82 81 71 ior.w w3, w2, w3
- 24c: 61 01 64 and.w w8, #0x1, w2
- 24e: 89 04 d1 lsr.w w9, w9
- 250: 08 84 d3 rrc.w w8, w8
- 252: 8b 05 e8 inc.w w11, w11
- 254: 04 42 e8 inc.b w4, w4
- 256: f9 ff 3a bra NZ, . + 0xFFFFFFF4
- 258: 05 00 37 bra . + 0xC
-
-0000025a <shiftleft>:
- 25a: 08 04 44 add.w w8, w8, w8
- 25c: 89 84 4c addc.w w9, w9, w9
- 25e: 8b 05 e9 dec.w w11, w11
- 260: 04 42 e9 dec.b w4, w4
- 262: fb ff 3a bra NZ, . + 0xFFFFFFF8
-
-00000264 <round>:
- 264: 3c 01 07 rcall . + 0x27A
- 266: 0a f0 a7 btsc.w w10, #0xf
- 268: 01 f0 a0 bset.w w1, #0xf
-
-0000026a <return0>:
- 26a: 4f 05 be mov.d [--w15], w10
- 26c: 4f 04 be mov.d [--w15], w8
- 26e: 00 00 06 return
-
-00000270 <___divsf3>:
- 270: 88 9f be mov.d w8, [w15++]
- 272: 8a 9f be mov.d w10, [w15++]
- 274: 8c 1f 78 mov.w w12, [w15++]
- 276: 72 01 07 rcall . + 0x2E6
- 278: 79 01 33 bra N, . + 0x2F4
- 27a: 03 86 6c xor.w w9, w3, w12
- 27c: 64 50 e1 cp.w w10, #0x4
- 27e: 2e 00 32 bra Z, . + 0x5E
- 280: 64 20 e1 cp.w w4, #0x4
- 282: 33 00 32 bra Z, . + 0x68
- 284: 61 50 e1 cp.w w10, #0x1
- 286: 2f 00 32 bra Z, . + 0x60
- 288: 61 20 e1 cp.w w4, #0x1
- 28a: 31 00 32 bra Z, . + 0x64
-
-0000028c <finitenonzero>:
- 28c: 85 85 55 sub.w w11, w5, w11
- 28e: eb 07 b0 add.w #0x7e, w11
- 290: 09 00 20 mov.w #0x0, w9
- 292: 08 04 20 mov.w #0x40, w8
- 294: 05 00 37 bra . + 0xC
-
-00000296 <divnext>:
- 296: 08 04 44 add.w w8, w8, w8
- 298: 89 84 4c addc.w w9, w9, w9
- 29a: 0a 00 31 bra C, . + 0x16
-
-0000029c <divloop>:
- 29c: 06 03 43 add.w w6, w6, w6
- 29e: 87 83 4b addc.w w7, w7, w7
-
-000002a0 <diventry>:
- 2a0: 00 01 53 sub.w w6, w0, w2
- 2a2: 81 81 5b subb.w w7, w1, w3
- 2a4: f8 ff 33 bra N, . + 0xFFFFFFF2
- 2a6: 02 03 be mov.d w2, w6
- 2a8: 08 00 a0 bset.w w8, #0x0
- 2aa: 08 04 44 add.w w8, w8, w8
- 2ac: 89 84 4c addc.w w9, w9, w9
- 2ae: f6 ff 39 bra NC, . + 0xFFFFFFEE
-
-000002b0 <divdone>:
- 2b0: c6 39 dd sl.w w7, #0x6, w3
- 2b2: 83 01 73 ior.w w6, w3, w3
- 2b4: 01 00 32 bra Z, . + 0x4
- 2b6: 13 00 20 mov.w #0x1, w3
-
-000002b8 <stickyok>:
- 2b8: 89 04 d1 lsr.w w9, w9
- 2ba: 08 84 d3 rrc.w w8, w8
- 2bc: 09 98 a3 btst.z w9, #0x9
- 2be: 05 00 32 bra Z, . + 0xC
- 2c0: 08 00 a7 btsc.w w8, #0x0
- 2c2: 03 00 a0 bset.w w3, #0x0
- 2c4: 89 04 d1 lsr.w w9, w9
- 2c6: 08 84 d3 rrc.w w8, w8
- 2c8: 8b 05 e8 inc.w w11, w11
-
-000002ca <guardused>:
- 2ca: 89 04 d1 lsr.w w9, w9
- 2cc: 08 84 d3 rrc.w w8, w8
- 2ce: 00 01 eb clr.w w2
- 2d0: 02 81 d2 rlc.w w2, w2
- 2d2: 05 01 07 rcall . + 0x20C
-
-000002d4 <return0>:
- 2d4: 01 f0 a1 bclr.w w1, #0xf
- 2d6: 0c f0 a7 btsc.w w12, #0xf
- 2d8: 01 f0 a0 bset.w w1, #0xf
- 2da: 51 01 37 bra . + 0x2A4
-
-000002dc <aisinfinite>:
- 2dc: 64 20 e1 cp.w w4, #0x4
- 2de: 53 01 32 bra Z, . + 0x2A8
-
-000002e0 <return8>:
- 2e0: 08 01 be mov.d w8, w2
-
-000002e2 <return2>:
- 2e2: 02 00 be mov.d w2, w0
- 2e4: f7 ff 37 bra . + 0xFFFFFFF0
-
-000002e6 <aiszero>:
- 2e6: 61 20 e1 cp.w w4, #0x1
- 2e8: 4e 01 32 bra Z, . + 0x29E
-
-000002ea <returnZero>:
- 2ea: 60 00 b8 mul.uu w0, #0x0, w0
- 2ec: f3 ff 37 bra . + 0xFFFFFFE8
-
-000002ee <returnInf>:
- 2ee: 00 00 20 mov.w #0x0, w0
- 2f0: 01 f8 27 mov.w #0x7f80, w1
- 2f2: f0 ff 37 bra . + 0xFFFFFFE2
-
-000002f4 <___subsf3>:
- 2f4: 03 f0 a2 btg.w w3, #0xf
-
-000002f6 <___addsf3>:
- 2f6: 88 9f be mov.d w8, [w15++]
- 2f8: 8a 9f be mov.d w10, [w15++]
- 2fa: 8c 1f 78 mov.w w12, [w15++]
- 2fc: 2f 01 07 rcall . + 0x260
- 2fe: 36 01 33 bra N, . + 0x26E
- 300: 64 50 e1 cp.w w10, #0x4
- 302: 4f 00 32 bra Z, . + 0xA0
-
-00000304 <checkspecialb>:
- 304: 64 20 e1 cp.w w4, #0x4
- 306: 52 00 32 bra Z, . + 0xA6
- 308: 03 82 6c xor.w w9, w3, w4
- 30a: 07 00 3b bra NN, . + 0x10
- 30c: 09 05 d0 sl.w w9, w10
- 30e: 03 06 d0 sl.w w3, w12
- 310: 82 0f 54 sub.w w8, w2, [w15]
- 312: 0c 06 5d subb.w w10, w12, w12
- 314: 02 00 39 bra NC, . + 0x6
- 316: 02 00 32 bra Z, . + 0x6
- 318: 89 01 78 mov.w w9, w3
-
-0000031a <getsign>:
- 31a: 03 06 78 mov.w w3, w12
-
-0000031c <gotsign>:
- 31c: 85 82 55 sub.w w11, w5, w5
- 31e: 04 00 3d bra GE, . + 0xA
- 320: 00 03 fd exch w0, w6
- 322: 81 03 fd exch w1, w7
- 324: 85 02 ea neg.w w5, w5
- 326: 8b 85 42 add.w w5, w11, w11
-
-00000328 <expcanonical>:
- 328: 84 0f 72 ior.w w4, w4, [w15]
- 32a: 02 00 3b bra NN, . + 0x6
- 32c: 60 00 10 subr.w w0, #0x0, w0
- 32e: e0 80 18 subbr.w w1, #0x0, w1
-
-00000330 <nonegate>:
- 330: 60 11 b8 mul.uu w2, #0x0, w2
- 332: 00 05 eb clr.w w10
- 334: 7a 28 e1 cp.w w5, #0x1a
- 336: 0a 00 39 bra NC, . + 0x16
- 338: 06 00 78 mov.w w6, w0
- 33a: c7 5d dd sl.w w11, #0x7, w11
- 33c: f7 07 b2 and.w #0x7f, w7
- 33e: 87 80 75 ior.w w11, w7, w1
- 340: 2d 00 37 bra . + 0x5C
-
-00000342 <align>:
- 342: 82 81 71 ior.w w3, w2, w3
- 344: 0a 01 78 mov.w w10, w2
- 346: 61 05 60 and.w w0, #0x1, w10
- 348: 81 80 d1 asr.w w1, w1
- 34a: 00 80 d3 rrc.w w0, w0
-
-0000034c <aligniter>:
- 34c: 85 02 e9 dec.w w5, w5
- 34e: f9 ff 3b bra NN, . + 0xFFFFFFF4
-
-00000350 <aligned>:
- 350: 06 04 40 add.w w0, w6, w8
- 352: 87 84 48 addc.w w1, w7, w9
- 354: 02 00 3b bra NN, . + 0x6
- 356: 60 04 14 subr.w w8, #0x0, w8
- 358: e0 84 1c subbr.w w9, #0x0, w9
-
-0000035a <normalizesum>:
- 35a: 09 88 a3 btst.z w9, #0x8
- 35c: 07 00 32 bra Z, . + 0x10
- 35e: 8a 81 71 ior.w w3, w10, w3
- 360: 82 81 71 ior.w w3, w2, w3
- 362: 61 01 64 and.w w8, #0x1, w2
- 364: 89 04 d1 lsr.w w9, w9
- 366: 08 84 d3 rrc.w w8, w8
- 368: 8b 05 e8 inc.w w11, w11
- 36a: 17 00 37 bra . + 0x30
-
-0000036c <checknormal>:
- 36c: 09 78 a3 btst.z w9, #0x7
- 36e: 13 00 3a bra NZ, . + 0x28
-
-00000370 <underflow>:
- 370: 0b 00 e0 cp0.w w11
- 372: 13 00 34 bra LE, . + 0x28
- 374: 8b 05 e9 dec.w w11, w11
- 376: 08 04 44 add.w w8, w8, w8
- 378: 89 84 4c addc.w w9, w9, w9
- 37a: 0a 44 74 ior.b w8, w10, w8
- 37c: 09 78 a3 btst.z w9, #0x7
- 37e: 0d 00 3a bra NZ, . + 0x1C
-
-00000380 <normalizeloop>:
- 380: 0b 00 e0 cp0.w w11
- 382: 07 00 34 bra LE, . + 0x10
- 384: 8b 05 e9 dec.w w11, w11
- 386: 08 04 44 add.w w8, w8, w8
- 388: 89 84 4c addc.w w9, w9, w9
- 38a: 01 00 3a bra NZ, . + 0x4
- 38c: 0b 00 20 mov.w #0x0, w11
-
-0000038e <normalizetest>:
- 38e: 09 78 a3 btst.z w9, #0x7
- 390: f7 ff 32 bra Z, . + 0xFFFFFFF0
-
-00000392 <normalizeexit>:
- 392: 00 01 eb clr.w w2
- 394: 02 00 37 bra . + 0x6
-
-00000396 <discardguard>:
- 396: 82 81 71 ior.w w3, w2, w3
- 398: 0a 01 78 mov.w w10, w2
-
-0000039a <round>:
- 39a: a1 00 07 rcall . + 0x144
-
-0000039c <signoff>:
- 39c: 0c f0 a7 btsc.w w12, #0xf
- 39e: 01 f0 a0 bset.w w1, #0xf
- 3a0: ee 00 37 bra . + 0x1DE
-
-000003a2 <aisinfinite>:
- 3a2: 64 20 e1 cp.w w4, #0x4
- 3a4: 02 00 3a bra NZ, . + 0x6
- 3a6: 83 8f 6c xor.w w9, w3, [w15]
- 3a8: ee 00 33 bra N, . + 0x1DE
-
-000003aa <return8>:
- 3aa: 08 01 be mov.d w8, w2
-
-000003ac <return2>:
- 3ac: 02 00 be mov.d w2, w0
- 3ae: e7 00 37 bra . + 0x1D0
-
-000003b0 <___mulsf3>:
- 3b0: 88 9f be mov.d w8, [w15++]
- 3b2: 8a 9f be mov.d w10, [w15++]
- 3b4: 8c 1f 78 mov.w w12, [w15++]
- 3b6: d2 00 07 rcall . + 0x1A6
- 3b8: d9 00 33 bra N, . + 0x1B4
- 3ba: 03 86 6c xor.w w9, w3, w12
- 3bc: 64 50 e1 cp.w w10, #0x4
- 3be: 24 00 32 bra Z, . + 0x4A
- 3c0: 64 20 e1 cp.w w4, #0x4
- 3c2: 27 00 32 bra Z, . + 0x50
- 3c4: 61 50 e1 cp.w w10, #0x1
- 3c6: 22 00 32 bra Z, . + 0x46
- 3c8: 61 20 e1 cp.w w4, #0x1
- 3ca: 21 00 32 bra Z, . + 0x44
- 3cc: 8b 85 42 add.w w5, w11, w11
- 3ce: eb 07 b1 sub.w #0x7e, w11
- 3d0: 01 34 b8 mul.uu w6, w1, w8
- 3d2: 00 3a b8 mul.uu w7, w0, w4
- 3d4: 08 04 42 add.w w4, w8, w8
- 3d6: 89 84 4a addc.w w5, w9, w9
- 3d8: 01 3a b8 mul.uu w7, w1, w4
- 3da: 00 30 b8 mul.uu w6, w0, w0
- 3dc: 88 80 40 add.w w1, w8, w1
- 3de: 09 01 4a addc.w w4, w9, w2
- 3e0: 04 00 33 bra N, . + 0xA
- 3e2: 00 00 40 add.w w0, w0, w0
- 3e4: 81 80 48 addc.w w1, w1, w1
- 3e6: 02 01 49 addc.w w2, w2, w2
- 3e8: 8b 05 e9 dec.w w11, w11
-
-000003ea <formsticky>:
- 3ea: c9 09 dd sl.w w1, #0x9, w3
- 3ec: 83 01 70 ior.w w0, w3, w3
- 3ee: 01 00 32 bra Z, . + 0x4
- 3f0: 13 00 20 mov.w #0x1, w3
-
-000003f2 <formRandSig>:
- 3f2: c8 14 de lsr.w w2, #0x8, w9
- 3f4: 48 14 dd sl.w w2, #0x8, w8
- 3f6: 47 09 de lsr.w w1, #0x7, w2
- 3f8: 12 00 b2 and.w #0x1, w2
- 3fa: c8 08 de lsr.w w1, #0x8, w1
- 3fc: 08 84 70 ior.w w1, w8, w8
- 3fe: 6f 00 07 rcall . + 0xE0
-
-00000400 <return0>:
- 400: 01 f0 a1 bclr.w w1, #0xf
- 402: 0c f0 a7 btsc.w w12, #0xf
- 404: 01 f0 a0 bset.w w1, #0xf
- 406: bb 00 37 bra . + 0x178
-
-00000408 <aisinfinite>:
- 408: 61 20 e1 cp.w w4, #0x1
- 40a: bd 00 32 bra Z, . + 0x17C
-
-0000040c <return8>:
- 40c: 08 01 be mov.d w8, w2
-
-0000040e <return2>:
- 40e: 02 00 be mov.d w2, w0
- 410: f7 ff 37 bra . + 0xFFFFFFF0
-
-00000412 <bisinfinite>:
- 412: 61 50 e1 cp.w w10, #0x1
- 414: fc ff 3a bra NZ, . + 0xFFFFFFFA
- 416: b7 00 37 bra . + 0x170
-
-00000418 <___fixsfsi>:
- 418: 00 01 be mov.d w0, w2
- 41a: b8 00 07 rcall . + 0x172
- 41c: 04 70 a7 btsc.w w4, #0x7
- 41e: 03 f0 a1 bclr.w w3, #0xf
- 420: 65 09 b1 sub.w #0x96, w5
- 422: 16 00 32 bra Z, . + 0x2E
- 424: 0d 00 35 bra LT, . + 0x1C
- 426: 68 28 e1 cp.w w5, #0x8
- 428: 06 00 35 bra LT, . + 0xE
- 42a: f0 ff 2f mov.w #0xffff, w0
- 42c: f1 ff 27 mov.w #0x7fff, w1
- 42e: 03 00 e0 cp0.w w3
- 430: 13 00 3b bra NN, . + 0x28
- 432: 01 00 28 mov.w #0x8000, w1
- 434: 00 00 05 retlw.w #0x0, w0
-
-00000436 <shiftleft>:
- 436: 00 00 40 add.w w0, w0, w0
- 438: 81 80 48 addc.w w1, w1, w1
- 43a: 85 02 e9 dec.w w5, w5
- 43c: fc ff 3a bra NZ, . + 0xFFFFFFFA
- 43e: 08 00 37 bra . + 0x12
-
-00000440 <shiftright>:
- 440: f8 8f 42 add.w w5, #0x18, [w15]
- 442: 02 00 3c bra GT, . + 0x6
- 444: 80 00 eb clr.w w1
- 446: 00 00 05 retlw.w #0x0, w0
-
-00000448 <shiftrightloop>:
- 448: 81 00 d1 lsr.w w1, w1
- 44a: 00 80 d3 rrc.w w0, w0
- 44c: 85 02 e8 inc.w w5, w5
- 44e: fc ff 3a bra NZ, . + 0xFFFFFFFA
-
-00000450 <setsign>:
- 450: 03 00 e0 cp0.w w3
- 452: 02 00 3b bra NN, . + 0x6
- 454: 60 00 10 subr.w w0, #0x0, w0
- 456: e0 80 18 subbr.w w1, #0x0, w1
-
-00000458 <exit>:
- 458: 00 00 06 return
-
-0000045a <___fixunssfsi>:
- 45a: 00 01 be mov.d w0, w2
- 45c: 97 00 07 rcall . + 0x130
- 45e: 04 70 a7 btsc.w w4, #0x7
- 460: 03 f0 a1 bclr.w w3, #0xf
- 462: 03 f8 a3 btst.z w3, #0xf
- 464: 13 00 3a bra NZ, . + 0x28
- 466: 65 09 b1 sub.w #0x96, w5
- 468: 10 00 32 bra Z, . + 0x22
- 46a: 09 00 35 bra LT, . + 0x14
- 46c: 69 28 e1 cp.w w5, #0x9
- 46e: 02 00 35 bra LT, . + 0x6
- 470: 01 00 28 mov.w #0x8000, w1
- 472: 00 00 05 retlw.w #0x0, w0
-
-00000474 <shiftleft>:
- 474: 00 00 40 add.w w0, w0, w0
- 476: 81 80 48 addc.w w1, w1, w1
- 478: 85 02 e9 dec.w w5, w5
- 47a: fc ff 3a bra NZ, . + 0xFFFFFFFA
- 47c: 00 00 06 return
-
-0000047e <shiftright>:
- 47e: f8 8f 42 add.w w5, #0x18, [w15]
- 480: 05 00 35 bra LT, . + 0xC
-
-00000482 <shiftrightloop>:
- 482: 81 00 d1 lsr.w w1, w1
- 484: 00 80 d3 rrc.w w0, w0
- 486: 85 02 e8 inc.w w5, w5
- 488: fc ff 3a bra NZ, . + 0xFFFFFFFA
-
-0000048a <exit>:
- 48a: 00 00 06 return
-
-0000048c <returnzero>:
- 48c: 80 00 eb clr.w w1
- 48e: 00 00 05 retlw.w #0x0, w0
-
-00000490 <__dunpack>:
- 490: 80 00 78 mov.w w0, w1
- 492: 50 02 be mov.d [++w0], w4
- 494: 50 03 be mov.d [++w0], w6
- 496: 44 39 de lsr.w w7, #0x4, w2
- 498: f7 00 b2 and.w #0xf, w7
- 49a: f3 7f 20 mov.w #0x7ff, w3
- 49c: 03 01 61 and.w w2, w3, w2
- 49e: 09 00 32 bra Z, . + 0x14
- 4a0: 02 18 e1 cp.w w3, w2
- 4a2: 16 00 3a bra NZ, . + 0x2E
- 4a4: 85 01 72 ior.w w4, w5, w3
- 4a6: 83 01 73 ior.w w6, w3, w3
- 4a8: 83 81 73 ior.w w7, w3, w3
- 4aa: 00 08 20 mov.w #0x80, w0
- 4ac: 15 00 3a bra NZ, . + 0x2C
- 4ae: 40 00 20 mov.w #0x4, w0
- 4b0: 13 00 37 bra . + 0x28
-
-000004b2 <zeroorsub>:
- 4b2: 85 01 72 ior.w w4, w5, w3
- 4b4: 83 01 73 ior.w w6, w3, w3
- 4b6: 83 81 73 ior.w w7, w3, w3
- 4b8: 05 00 3a bra NZ, . + 0xC
- 4ba: 04 a8 be mov.d w4, [++w0]
- 4bc: 06 a8 be mov.d w6, [++w0]
- 4be: 10 00 20 mov.w #0x1, w0
- 4c0: 0b 00 37 bra . + 0x18
-
-000004c2 <normalize>:
- 4c2: 02 01 e9 dec.w w2, w2
-
-000004c4 <subnormal>:
- 4c4: 04 02 42 add.w w4, w4, w4
- 4c6: 85 82 4a addc.w w5, w5, w5
- 4c8: 06 03 4b addc.w w6, w6, w6
- 4ca: 87 83 4b addc.w w7, w7, w7
- 4cc: 07 48 a3 btst.z w7, #0x4
- 4ce: f9 ff 32 bra Z, . + 0xFFFFFFF4
-
-000004d0 <finitereturn>:
- 4d0: 07 40 a0 bset.w w7, #0x4
- 4d2: 04 a8 be mov.d w4, [++w0]
- 4d4: 06 a8 be mov.d w6, [++w0]
- 4d6: 20 00 20 mov.w #0x2, w0
-
-000004d8 <exit>:
- 4d8: 80 00 98 mov.w w0, [w1+0]
- 4da: 92 00 98 mov.w w2, [w1+2]
- 4dc: 00 00 06 return
-
-000004de <__fpack>:
- 4de: 81 00 20 mov.w #0x8, w1
- 4e0: 61 80 55 sub.w w11, #0x1, w0
- 4e2: 0b 00 3d bra GE, . + 0x18
- 4e4: 0b 00 20 mov.w #0x0, w11
- 4e6: 61 fe 2f mov.w #0xffe6, w1
- 4e8: 01 00 e1 cp.w w0, w1
- 4ea: 1d 00 34 bra LE, . + 0x3C
-
-000004ec <subnormal>:
- 4ec: 82 81 71 ior.w w3, w2, w3
- 4ee: 61 01 64 and.w w8, #0x1, w2
- 4f0: 89 04 d1 lsr.w w9, w9
- 4f2: 08 84 d3 rrc.w w8, w8
- 4f4: 00 00 e8 inc.w w0, w0
- 4f6: fa ff 3a bra NZ, . + 0xFFFFFFF6
- 4f8: 71 00 20 mov.w #0x7, w1
-
-000004fa <notsubnormal>:
- 4fa: 61 00 64 and.w w8, #0x1, w0
- 4fc: 03 00 70 ior.w w0, w3, w0
- 4fe: 02 00 60 and.w w0, w2, w0
- 500: 09 00 32 bra Z, . + 0x14
- 502: 61 04 44 add.w w8, #0x1, w8
- 504: e0 84 4c addc.w w9, #0x0, w9
- 506: 09 88 a5 btst.z w9, w1
- 508: 05 00 32 bra Z, . + 0xC
- 50a: 8b 05 e8 inc.w w11, w11
- 50c: 68 08 e1 cp.w w1, #0x8
- 50e: 02 00 3a bra NZ, . + 0x6
- 510: 89 04 d1 lsr.w w9, w9
- 512: 08 84 d3 rrc.w w8, w8
-
-00000514 <packupandgo>:
- 514: f2 0f 20 mov.w #0xff, w2
- 516: 02 58 e1 cp.w w11, w2
- 518: 05 00 3d bra GE, . + 0xC
- 51a: c7 5d dd sl.w w11, #0x7, w11
- 51c: f9 07 b2 and.w #0x7f, w9
- 51e: 89 80 75 ior.w w11, w9, w1
- 520: 08 00 78 mov.w w8, w0
- 522: 00 00 06 return
-
-00000524 <overflow>:
- 524: 0b f8 27 mov.w #0x7f80, w11
-
-00000526 <zerosig>:
- 526: 8b 00 78 mov.w w11, w1
- 528: 00 00 05 retlw.w #0x0, w0
-
-0000052a <__dunpack2>:
- 52a: 68 04 47 add.w w14, #0x8, w8
- 52c: 02 94 be mov.d w2, [w8--]
- 52e: 00 94 be mov.d w0, [w8--]
- 530: fc 04 47 add.w w14, #0x1c, w9
- 532: 86 94 be mov.d w6, [w9--]
- 534: 84 94 be mov.d w4, [w9--]
- 536: 09 00 78 mov.w w9, w0
- 538: ab ff 07 rcall . + 0xFFFFFF58
- 53a: 08 00 78 mov.w w8, w0
- 53c: a9 ff 07 rcall . + 0xFFFFFF54
- 53e: 99 00 78 mov.w [w9], w1
- 540: 81 4f 70 ior.b w0, w1, [w15]
- 542: 0b 00 3b bra NN, . + 0x18
-
-00000544 <aorbIsNaN>:
- 544: 08 00 be mov.d w8, w0
- 546: 37 00 07 rcall . + 0x70
- 548: 4f 00 b1 sub.w #0x4, w15
- 54a: 03 00 37 bra . + 0x8
-
-0000054c <__dreturnNaN>:
- 54c: f3 ff 27 mov.w #0x7fff, w3
- 54e: f2 ff 2f mov.w #0xffff, w2
- 550: 61 10 b9 mul.su w2, #0x1, w0
-
-00000552 <__dunpack2exit>:
- 552: 4f 06 be mov.d [--w15], w12
- 554: 4f 05 be mov.d [--w15], w10
- 556: 4f 04 be mov.d [--w15], w8
- 558: 00 80 fa ulnk
-
-0000055a <exit>:
- 55a: 00 00 06 return
-
-0000055c <__funpack2>:
- 55c: 00 04 be mov.d w0, w8
- 55e: 16 00 07 rcall . + 0x2E
- 560: 00 03 be mov.d w0, w6
- 562: 04 05 be mov.d w4, w10
- 564: 02 00 be mov.d w2, w0
- 566: 12 00 07 rcall . + 0x26
- 568: 84 4f 75 ior.b w10, w4, [w15]
- 56a: 00 00 06 return
-
-0000056c <__fPropagateNaN>:
- 56c: 02 00 be mov.d w2, w0
- 56e: 64 50 e1 cp.w w10, #0x4
- 570: 05 00 36 bra LEU, . + 0xC
- 572: 64 20 e1 cp.w w4, #0x4
- 574: 02 00 36 bra LEU, . + 0x6
- 576: 09 68 a3 btst.z w9, #0x6
- 578: 01 00 3a bra NZ, . + 0x4
-
-0000057a <return8>:
- 57a: 08 00 be mov.d w8, w0
-
-0000057c <return0>:
- 57c: 01 60 a0 bset.w w1, #0x6
-
-0000057e <__fbopExit>:
- 57e: 4f 06 78 mov.w [--w15], w12
- 580: 4f 05 be mov.d [--w15], w10
- 582: 4f 04 be mov.d [--w15], w8
- 584: 00 00 06 return
-
-00000586 <__fbopReturnNaN>:
- 586: f0 ff 2f mov.w #0xffff, w0
- 588: f1 ff 27 mov.w #0x7fff, w1
- 58a: f9 ff 37 bra . + 0xFFFFFFF4
-
-0000058c <__funpack>:
- 58c: c7 0a de lsr.w w1, #0x7, w5
- 58e: f1 07 b2 and.w #0x7f, w1
- 590: f5 0f b2 and.w #0xff, w5
- 592: 08 00 32 bra Z, . + 0x12
- 594: e1 cf 42 add.b w5, #0x1, [w15]
- 596: 02 00 32 bra Z, . + 0x6
-
-00000598 <finitereturn>:
- 598: 01 70 a0 bset.w w1, #0x7
- 59a: 24 00 05 retlw.w #0x2, w4
-
-0000059c <nanorinf>:
- 59c: 81 0f 70 ior.w w0, w1, [w15]
- 59e: 01 00 32 bra Z, . + 0x4
- 5a0: 04 08 05 retlw.w #0x80, w4
-
-000005a2 <infinite>:
- 5a2: 44 00 05 retlw.w #0x4, w4
-
-000005a4 <zeroorsub>:
- 5a4: 81 0f 70 ior.w w0, w1, [w15]
- 5a6: 02 00 3a bra NZ, . + 0x6
- 5a8: 14 00 05 retlw.w #0x1, w4
-
-000005aa <normalize>:
- 5aa: 85 02 e9 dec.w w5, w5
-
-000005ac <subnormal>:
- 5ac: 00 00 40 add.w w0, w0, w0
- 5ae: 81 c0 48 addc.b w1, w1, w1
- 5b0: fc ff 3b bra NN, . + 0xFFFFFFFA
- 5b2: 01 70 a0 bset.w w1, #0x7
- 5b4: 24 00 05 retlw.w #0x2, w4
-
-000005b6 <__dPropagateNaN>:
- 5b6: e4 82 40 add.w w1, #0x4, w5
- 5b8: 10 78 a3 btst.z [w0], #0x7
- 5ba: 07 00 32 bra Z, . + 0x10
- 5bc: 64 02 40 add.w w0, #0x4, w4
- 5be: 11 78 a3 btst.z [w1], #0x7
- 5c0: 34 00 be mov.d [w4++], w0
- 5c2: 14 01 be mov.d [w4], w2
- 5c4: 04 00 32 bra Z, . + 0xA
- 5c6: 03 30 a7 btsc.w w3, #0x3
- 5c8: 00 00 06 return
-
-000005ca <returnb>:
- 5ca: 35 00 be mov.d [w5++], w0
- 5cc: 15 01 be mov.d [w5], w2
-
-000005ce <returnab>:
- 5ce: 03 30 a0 bset.w w3, #0x3
- 5d0: 00 00 06 return
-
-000005d2 <_end>:
- 5d2: ff ff 37 bra .
-
-000005d4 <_main>:
- 5d4: 06 00 22 mov.w #0x2000, w6
- 5d6: 07 00 20 mov.w #0x0, w7
- 5d8: 04 00 24 mov.w #0x4000, w4
- 5da: c5 69 24 mov.w #0x469c, w5
- 5dc: 02 00 20 mov.w #0x0, w2
- 5de: 03 14 24 mov.w #0x4140, w3
- 5e0: 60 00 b8 mul.uu w0, #0x0, w0
- 5e2: 03 09 07 rcall . + 0x1208
- 5e4: 80 02 eb clr.w w5
- 5e6: 34 00 20 mov.w #0x3, w4
- 5e8: 85 01 78 mov.w w5, w3
- 5ea: 92 06 20 mov.w #0x69, w2
- 5ec: 81 a4 29 mov.w #0x9a48, w1
- 5ee: 60 5f 20 mov.w #0x5f6, w0
- 5f0: c3 04 07 rcall . + 0x988
- 5f2: 67 05 07 rcall . + 0xAD0
- 5f4: 00 00 05 retlw.w #0x0, w0
-
-000005f6 <_vDaemonTask>:
- 5f6: 2f 02 b0 add.w #0x22, w15
- 5f8: 88 9f be mov.d w8, [w15++]
- 5fa: 8a 9f be mov.d w10, [w15++]
- 5fc: 8c 9f be mov.d w12, [w15++]
- 5fe: 8e 1f 78 mov.w w14, [w15++]
- 600: 60 00 b8 mul.uu w0, #0x0, w0
- 602: d0 af 9f mov.w w0, [w15-38]
- 604: e1 af 9f mov.w w1, [w15-36]
- 606: 60 00 b8 mul.uu w0, #0x0, w0
- 608: 60 11 b8 mul.uu w2, #0x0, w2
- 60a: 90 b7 9f mov.w w0, [w15-30]
- 60c: a1 b7 9f mov.w w1, [w15-28]
- 60e: b2 b7 9f mov.w w2, [w15-26]
- 610: c3 b7 9f mov.w w3, [w15-24]
- 612: 80 04 eb clr.w w9
- 614: 99 af 9f mov.w w9, [w15-46]
- 616: a9 af 9f mov.w w9, [w15-44]
- 618: 89 00 78 mov.w w9, w1
- 61a: 09 00 78 mov.w w9, w0
- 61c: 4c 07 07 rcall . + 0xE9A
- 61e: 00 04 78 mov.w w0, w8
- 620: 00 00 e0 cp0.w w0
- 622: 99 00 35 bra LT, . + 0x134
- 624: 89 03 78 mov.w w9, w7
- 626: 09 03 78 mov.w w9, w6
- 628: 89 02 78 mov.w w9, w5
- 62a: 09 02 78 mov.w w9, w4
- 62c: 89 00 78 mov.w w9, w1
- 62e: 12 00 20 mov.w #0x1, w2
- 630: 03 00 20 mov.w #0x0, w3
- 632: 08 00 78 mov.w w8, w0
- 634: 6e 07 07 rcall . + 0xEDE
- 636: 00 00 e0 cp0.w w0
- 638: 9a 00 35 bra LT, . + 0x136
-
-0000063a <.L14>:
- 63a: 41 00 20 mov.w #0x4, w1
- 63c: f2 01 20 mov.w #0x1f, w2
- 63e: 03 00 20 mov.w #0x0, w3
- 640: 08 00 78 mov.w w8, w0
- 642: d1 07 07 rcall . + 0xFA4
- 644: 31 00 20 mov.w #0x3, w1
- 646: 12 00 20 mov.w #0x1, w2
- 648: 03 00 20 mov.w #0x0, w3
- 64a: 08 00 78 mov.w w8, w0
- 64c: cc 07 07 rcall . + 0xF9A
- 64e: 00 00 e0 cp0.w w0
- 650: 9b 00 35 bra LT, . + 0x138
-
-00000652 <.L16>:
- 652: 08 00 78 mov.w w8, w0
- 654: a9 07 07 rcall . + 0xF54
- 656: 00 00 e0 cp0.w w0
- 658: 9c 00 35 bra LT, . + 0x13A
-
-0000065a <.L18>:
- 65a: f0 09 07 rcall . + 0x13E2
- 65c: 20 fd 2f mov.w #0xffd2, w0
- 65e: 0f 00 40 add.w w0, w15, w0
- 660: 80 85 e8 inc2.w w0, w11
- 662: fe 84 57 sub.w w15, #0x1e, w9
- 664: 68 06 40 add.w w0, #0x8, w12
- 666: ef 86 57 sub.w w15, #0xf, w13
- 668: 77 85 57 sub.w w15, #0x17, w10
- 66a: 64 07 40 add.w w0, #0x4, w14
-
-0000066c <.L51>:
- 66c: d3 03 07 rcall . + 0x7A8
- 66e: b0 af 9f mov.w w0, [w15-42]
- 670: c1 af 9f mov.w w1, [w15-40]
- 672: 80 02 eb clr.w w5
- 674: 0b 02 78 mov.w w11, w4
- 676: 23 fd 2f mov.w #0xffd2, w3
- 678: 8f 81 41 add.w w3, w15, w3
- 67a: 09 01 78 mov.w w9, w2
- 67c: 8c 00 78 mov.w w12, w1
- 67e: 08 00 78 mov.w w8, w0
- 680: ff 07 07 rcall . + 0x1000
- 682: 00 00 e0 cp0.w w0
- 684: 1e 00 35 bra LT, . + 0x3E
-
-00000686 <.L57>:
- 686: 5f a8 97 mov.w [w15-38], w0
- 688: ef a8 97 mov.w [w15-36], w1
- 68a: 4b 09 dd sl.w w1, #0xb, w2
- 68c: 45 00 de lsr.w w0, #0x5, w0
- 68e: 00 00 71 ior.w w2, w0, w0
- 690: c5 88 de asr.w w1, #0x5, w1
- 692: f0 0f 50 sub.w w0, #0x10, [w15]
- 694: e0 8f 58 subb.w w1, #0x0, [w15]
- 696: 48 00 32 bra Z, . + 0x92
- 698: 1c 00 3c bra GT, . + 0x3A
- 69a: e2 0f 50 sub.w w0, #0x2, [w15]
- 69c: e0 8f 58 subb.w w1, #0x0, [w15]
- 69e: 55 00 32 bra Z, . + 0xAC
- 6a0: e3 0f 50 sub.w w0, #0x3, [w15]
- 6a2: e0 8f 58 subb.w w1, #0x0, [w15]
- 6a4: 13 00 32 bra Z, . + 0x28
-
-000006a6 <.L23>:
- 6a6: 95 ff 07 rcall . + 0xFFFFFF2C
- 6a8: b5 03 07 rcall . + 0x76C
- 6aa: b0 af 9f mov.w w0, [w15-42]
- 6ac: c1 af 9f mov.w w1, [w15-40]
- 6ae: 80 02 eb clr.w w5
- 6b0: 0b 02 78 mov.w w11, w4
- 6b2: 23 fd 2f mov.w #0xffd2, w3
- 6b4: 8f 81 41 add.w w3, w15, w3
- 6b6: 09 01 78 mov.w w9, w2
- 6b8: 8c 00 78 mov.w w12, w1
- 6ba: 08 00 78 mov.w w8, w0
- 6bc: e1 07 07 rcall . + 0xFC4
- 6be: 00 00 e0 cp0.w w0
- 6c0: e2 ff 3d bra GE, . + 0xFFFFFFC6
-
-000006c2 <.L21>:
- 6c2: 12 00 20 mov.w #0x1, w2
- 6c4: 03 00 20 mov.w #0x0, w3
- 6c6: 0e 00 78 mov.w w14, w0
- 6c8: 68 03 07 rcall . + 0x6D2
- 6ca: d0 ff 37 bra . + 0xFFFFFFA2
-
-000006cc <.L26>:
- 6cc: b9 09 07 rcall . + 0x1374
- 6ce: a0 08 07 rcall . + 0x1142
- 6d0: cd ff 37 bra . + 0xFFFFFF9C
-
-000006d2 <.L31>:
- 6d2: 02 03 20 mov.w #0x30, w2
- 6d4: 82 0f 50 sub.w w0, w2, [w15]
- 6d6: e0 8f 58 subb.w w1, #0x0, [w15]
- 6d8: 35 00 32 bra Z, . + 0x6C
- 6da: 12 03 20 mov.w #0x31, w2
- 6dc: 82 0f 50 sub.w w0, w2, [w15]
- 6de: e0 8f 58 subb.w w1, #0x0, [w15]
- 6e0: 37 00 32 bra Z, . + 0x70
- 6e2: 02 02 20 mov.w #0x20, w2
- 6e4: 82 0f 50 sub.w w0, w2, [w15]
- 6e6: e0 8f 58 subb.w w1, #0x0, [w15]
- 6e8: de ff 3a bra NZ, . + 0xFFFFFFBE
- 6ea: aa 09 07 rcall . + 0x1356
- 6ec: 2f a8 97 mov.w [w15-44], w0
- 6ee: 00 00 e0 cp0.w w0
- 6f0: bd ff 32 bra Z, . + 0xFFFFFF7C
- 6f2: f7 08 07 rcall . + 0x11F0
- 6f4: f0 af 9f mov.w w0, [w15-34]
- 6f6: 81 b7 9f mov.w w1, [w15-32]
- 6f8: a3 08 07 rcall . + 0x1148
- 6fa: e1 fd 2f mov.w #0xffde, w1
- 6fc: 8f 80 40 add.w w1, w15, w1
- 6fe: 7b 80 57 sub.w w15, #0x1b, w0
-
-00000700 <.L35>:
- 700: 31 48 78 mov.b [w1++], [w0]
- 702: 00 00 e9 dec.w w0, w0
- 704: 7f 81 57 sub.w w15, #0x1f, w2
- 706: 82 0f 50 sub.w w0, w2, [w15]
- 708: fb ff 3a bra NZ, . + 0xFFFFFFF8
- 70a: 82 da 20 mov.w #0xda8, w2
- 70c: 67 80 44 add.w w9, #0x7, w0
- 70e: e3 80 44 add.w w9, #0x3, w1
-
-00000710 <.L37>:
- 710: 32 48 78 mov.b [w2++], [w0]
- 712: 00 00 e9 dec.w w0, w0
- 714: 81 0f 50 sub.w w0, w1, [w15]
- 716: fc ff 3a bra NZ, . + 0xFFFFFFFA
- 718: 25 00 20 mov.w #0x2, w5
- 71a: 84 00 20 mov.w #0x8, w4
- 71c: 89 00 78 mov.w w9, w1
- 71e: 5f a9 97 mov.w [w15-38], w2
- 720: ef a9 97 mov.w [w15-36], w3
- 722: 08 00 78 mov.w w8, w0
- 724: f9 07 07 rcall . + 0xFF4
- 726: a2 ff 37 bra . + 0xFFFFFF46
-
-00000728 <.L27>:
- 728: 8b 09 07 rcall . + 0x1318
- 72a: 89 00 78 mov.w w9, w1
- 72c: 0d 00 78 mov.w w13, w0
-
-0000072e <.L32>:
- 72e: 31 48 78 mov.b [w1++], [w0]
- 730: 00 00 e9 dec.w w0, w0
- 732: 8a 0f 50 sub.w w0, w10, [w15]
- 734: fc ff 3a bra NZ, . + 0xFFFFFFFA
- 736: 5f b0 97 mov.w [w15-22], w0
- 738: ef b0 97 mov.w [w15-20], w1
- 73a: 7f b1 97 mov.w [w15-18], w2
- 73c: 8f b9 97 mov.w [w15-16], w3
- 73e: 42 fd 07 rcall . + 0xFFFFFA86
- 740: f7 08 07 rcall . + 0x11F0
- 742: 94 ff 37 bra . + 0xFFFFFF2A
-
-00000744 <.L29>:
- 744: 7d 09 07 rcall . + 0x12FC
- 746: 66 08 07 rcall . + 0x10CE
- 748: 91 ff 37 bra . + 0xFFFFFF24
-
-0000074a <.L25>:
- 74a: 7a 09 07 rcall . + 0x12F6
- 74c: f0 08 07 rcall . + 0x11E2
- 74e: 8e ff 37 bra . + 0xFFFFFF1E
-
-00000750 <.L30>:
- 750: 77 09 07 rcall . + 0x12F0
- 752: ec 08 07 rcall . + 0x11DA
- 754: 8b ff 37 bra . + 0xFFFFFF18
-
-00000756 <.L53>:
- 756: 3d ff 07 rcall . + 0xFFFFFE7C
- 758: 89 03 78 mov.w w9, w7
- 75a: 09 03 78 mov.w w9, w6
- 75c: 89 02 78 mov.w w9, w5
- 75e: 09 02 78 mov.w w9, w4
- 760: 89 00 78 mov.w w9, w1
- 762: 12 00 20 mov.w #0x1, w2
- 764: 03 00 20 mov.w #0x0, w3
- 766: 08 00 78 mov.w w8, w0
- 768: d4 06 07 rcall . + 0xDAA
- 76a: 00 00 e0 cp0.w w0
- 76c: 66 ff 3d bra GE, . + 0xFFFFFECE
-
-0000076e <.L54>:
- 76e: 31 ff 07 rcall . + 0xFFFFFE64
- 770: 41 00 20 mov.w #0x4, w1
- 772: f2 01 20 mov.w #0x1f, w2
- 774: 03 00 20 mov.w #0x0, w3
- 776: 08 00 78 mov.w w8, w0
- 778: 36 07 07 rcall . + 0xE6E
- 77a: 31 00 20 mov.w #0x3, w1
- 77c: 12 00 20 mov.w #0x1, w2
- 77e: 03 00 20 mov.w #0x0, w3
- 780: 08 00 78 mov.w w8, w0
- 782: 31 07 07 rcall . + 0xE64
- 784: 00 00 e0 cp0.w w0
- 786: 65 ff 3d bra GE, . + 0xFFFFFECC
-
-00000788 <.L55>:
- 788: 24 ff 07 rcall . + 0xFFFFFE4A
- 78a: 08 00 78 mov.w w8, w0
- 78c: 0d 07 07 rcall . + 0xE1C
- 78e: 00 00 e0 cp0.w w0
- 790: 64 ff 3d bra GE, . + 0xFFFFFECA
-
-00000792 <.L56>:
- 792: 1f ff 07 rcall . + 0xFFFFFE40
- 794: 53 09 07 rcall . + 0x12A8
- 796: 20 fd 2f mov.w #0xffd2, w0
- 798: 0f 00 40 add.w w0, w15, w0
- 79a: 80 85 e8 inc2.w w0, w11
- 79c: fe 84 57 sub.w w15, #0x1e, w9
- 79e: 68 06 40 add.w w0, #0x8, w12
- 7a0: ef 86 57 sub.w w15, #0xf, w13
- 7a2: 77 85 57 sub.w w15, #0x17, w10
- 7a4: 64 07 40 add.w w0, #0x4, w14
- 7a6: 62 ff 37 bra . + 0xFFFFFEC6
-
-000007a8 <_vListInitialise>:
- 7a8: e4 00 40 add.w w0, #0x4, w1
- 7aa: 11 00 98 mov.w w1, [w0+2]
- 7ac: 80 98 eb setm.w [w1++]
- 7ae: 80 90 eb setm.w [w1--]
- 7b0: 41 00 98 mov.w w1, [w0+8]
- 7b2: 51 00 98 mov.w w1, [w0+10]
- 7b4: 00 08 eb clr.w [w0]
- 7b6: 00 00 06 return
-
-000007b8 <_vListInitialiseItem>:
- 7b8: 80 00 eb clr.w w1
- 7ba: 51 00 98 mov.w w1, [w0+10]
- 7bc: 00 00 06 return
-
-000007be <_vListInsertEnd>:
- 7be: 10 01 90 mov.w [w0+2], w2
- 7c0: a2 01 90 mov.w [w2+4], w3
- 7c2: a3 00 98 mov.w w3, [w1+4]
- 7c4: b2 00 98 mov.w w2, [w1+6]
- 7c6: a2 01 90 mov.w [w2+4], w3
- 7c8: b1 01 98 mov.w w1, [w3+6]
- 7ca: 21 01 98 mov.w w1, [w2+4]
- 7cc: 11 00 98 mov.w w1, [w0+2]
- 7ce: d0 00 98 mov.w w0, [w1+10]
- 7d0: 10 08 e8 inc.w [w0], [w0]
- 7d2: 00 00 06 return
-
-000007d4 <_vListInsert>:
- 7d4: 80 01 78 mov.w w0, w3
- 7d6: 11 02 be mov.d [w1], w4
- 7d8: e1 0f 42 add.w w4, #0x1, [w15]
- 7da: e0 8f 4a addc.w w5, #0x0, [w15]
- 7dc: 18 00 32 bra Z, . + 0x32
- 7de: 64 01 40 add.w w0, #0x4, w2
- 7e0: 22 00 90 mov.w [w2+4], w0
- 7e2: b0 0f 52 sub.w w4, [w0++], [w15]
- 7e4: a0 8f 5a subb.w w5, [w0--], [w15]
- 7e6: 08 00 31 bra C, . + 0x12
-
-000007e8 <.L16>:
- 7e8: 22 00 90 mov.w [w2+4], w0
- 7ea: a0 00 98 mov.w w0, [w1+4]
- 7ec: 31 00 98 mov.w w1, [w0+6]
- 7ee: b2 00 98 mov.w w2, [w1+6]
- 7f0: 21 01 98 mov.w w1, [w2+4]
- 7f2: d3 00 98 mov.w w3, [w1+10]
- 7f4: 93 09 e8 inc.w [w3], [w3]
- 7f6: 00 00 06 return
-
-000007f8 <.L19>:
- 7f8: 22 01 90 mov.w [w2+4], w2
- 7fa: 22 00 90 mov.w [w2+4], w0
- 7fc: b0 0f 52 sub.w w4, [w0++], [w15]
- 7fe: a0 8f 5a subb.w w5, [w0--], [w15]
- 800: f3 ff 39 bra NC, . + 0xFFFFFFE8
- 802: 22 01 90 mov.w [w2+4], w2
- 804: 22 00 90 mov.w [w2+4], w0
- 806: b0 0f 52 sub.w w4, [w0++], [w15]
- 808: a0 8f 5a subb.w w5, [w0--], [w15]
- 80a: f6 ff 31 bra C, . + 0xFFFFFFEE
- 80c: ed ff 37 bra . + 0xFFFFFFDC
-
-0000080e <.L23>:
- 80e: 50 01 90 mov.w [w0+10], w2
- 810: 22 00 90 mov.w [w2+4], w0
- 812: a0 00 98 mov.w w0, [w1+4]
- 814: 31 00 98 mov.w w1, [w0+6]
- 816: b2 00 98 mov.w w2, [w1+6]
- 818: 21 01 98 mov.w w1, [w2+4]
- 81a: d3 00 98 mov.w w3, [w1+10]
- 81c: 93 09 e8 inc.w [w3], [w3]
- 81e: 00 00 06 return
- 820: eb ff 37 bra . + 0xFFFFFFD8
-
-00000822 <_vListRemove>:
- 822: 80 00 78 mov.w w0, w1
- 824: 20 00 90 mov.w [w0+4], w0
- 826: 31 01 90 mov.w [w1+6], w2
- 828: 32 00 98 mov.w w2, [w0+6]
- 82a: b1 01 90 mov.w [w1+6], w3
- 82c: a0 01 98 mov.w w0, [w3+4]
- 82e: 51 01 90 mov.w [w1+10], w2
- 830: 12 00 90 mov.w [w2+2], w0
- 832: 81 0f 50 sub.w w0, w1, [w15]
- 834: 04 00 32 bra Z, . + 0xA
- 836: 00 00 eb clr.w w0
- 838: d0 00 98 mov.w w0, [w1+10]
- 83a: 12 09 e9 dec.w [w2], [w2]
- 83c: 00 00 06 return
-
-0000083e <.L31>:
- 83e: 13 01 98 mov.w w3, [w2+2]
- 840: 00 00 eb clr.w w0
- 842: d0 00 98 mov.w w0, [w1+10]
- 844: 12 09 e9 dec.w [w2], [w2]
- 846: 00 00 06 return
- 848: fa ff 37 bra . + 0xFFFFFFF6
-
-0000084a <_xQueueCreate>:
- 84a: 88 9f be mov.d w8, [w15++]
- 84c: 8a 9f be mov.d w10, [w15++]
- 84e: 8c 1f 78 mov.w w12, [w15++]
- 850: 80 04 78 mov.w w0, w9
- 852: 01 05 78 mov.w w1, w10
- 854: 00 00 e0 cp0.w w0
- 856: 05 00 3a bra NZ, . + 0xC
-
-00000858 <.L2>:
- 858: 00 00 20 mov.w #0x0, w0
- 85a: 4f 06 78 mov.w [--w15], w12
- 85c: 4f 05 be mov.d [--w15], w10
- 85e: 4f 04 be mov.d [--w15], w8
- 860: 00 00 06 return
-
-00000862 <.L10>:
- 862: a0 02 20 mov.w #0x2a, w0
- 864: 0a 06 07 rcall . + 0xC16
- 866: 00 04 78 mov.w w0, w8
- 868: 00 00 e0 cp0.w w0
- 86a: f6 ff 32 bra Z, . + 0xFFFFFFEE
- 86c: 0a c8 b9 mul.ss w9, w10, w0
- 86e: 00 06 78 mov.w w0, w12
- 870: 00 00 e8 inc.w w0, w0
- 872: 03 06 07 rcall . + 0xC08
- 874: 80 05 78 mov.w w0, w11
- 876: 00 0c 78 mov.w w0, [w8]
- 878: 00 00 e0 cp0.w w0
- 87a: 18 00 32 bra Z, . + 0x32
- 87c: 0c 00 40 add.w w0, w12, w0
- 87e: 10 04 98 mov.w w0, [w8+2]
- 880: 00 00 eb clr.w w0
- 882: 00 14 98 mov.w w0, [w8+32]
- 884: 2b 04 98 mov.w w11, [w8+4]
- 886: 09 00 e9 dec.w w9, w0
- 888: 00 d0 b9 mul.ss w10, w0, w0
- 88a: 00 80 45 add.w w11, w0, w0
- 88c: 30 04 98 mov.w w0, [w8+6]
- 88e: 19 14 98 mov.w w9, [w8+34]
- 890: 2a 14 98 mov.w w10, [w8+36]
- 892: 00 80 eb setm.w w0
- 894: 30 14 98 mov.w w0, [w8+38]
- 896: 40 14 98 mov.w w0, [w8+40]
- 898: 68 00 44 add.w w8, #0x8, w0
- 89a: 86 ff 07 rcall . + 0xFFFFFF0E
- 89c: 74 00 44 add.w w8, #0x14, w0
- 89e: 84 ff 07 rcall . + 0xFFFFFF0A
- 8a0: 08 00 78 mov.w w8, w0
- 8a2: 4f 06 78 mov.w [--w15], w12
- 8a4: 4f 05 be mov.d [--w15], w10
- 8a6: 4f 04 be mov.d [--w15], w8
- 8a8: 00 00 06 return
- 8aa: db ff 37 bra . + 0xFFFFFFB8
-
-000008ac <.L5>:
- 8ac: 08 00 78 mov.w w8, w0
- 8ae: 00 06 07 rcall . + 0xC02
- 8b0: 0b 00 78 mov.w w11, w0
- 8b2: 4f 06 78 mov.w [--w15], w12
- 8b4: 4f 05 be mov.d [--w15], w10
- 8b6: 4f 04 be mov.d [--w15], w8
- 8b8: 00 00 06 return
- 8ba: d3 ff 37 bra . + 0xFFFFFFA8
-
-000008bc <_uxQueueMessagesWaiting>:
- 8bc: 88 1f 78 mov.w w8, [w15++]
- 8be: 00 04 78 mov.w w0, w8
- 8c0: c1 05 07 rcall . + 0xB84
- 8c2: 08 14 90 mov.w [w8+32], w8
- 8c4: c2 05 07 rcall . + 0xB86
- 8c6: 08 00 78 mov.w w8, w0
- 8c8: 4f 04 78 mov.w [--w15], w8
- 8ca: 00 00 06 return
-
-000008cc <_vQueueDelete>:
- 8cc: 88 1f 78 mov.w w8, [w15++]
- 8ce: 00 04 78 mov.w w0, w8
- 8d0: 10 00 78 mov.w [w0], w0
- 8d2: ee 05 07 rcall . + 0xBDE
- 8d4: 08 00 78 mov.w w8, w0
- 8d6: ec 05 07 rcall . + 0xBDA
- 8d8: 4f 04 78 mov.w [--w15], w8
- 8da: 00 00 06 return
-
-000008dc <_prvCopyDataFromQueue>:
- 8dc: 80 01 78 mov.w w0, w3
- 8de: 01 02 78 mov.w w1, w4
- 8e0: 10 00 e0 cp0.w [w0]
- 8e2: 0a 00 32 bra Z, . + 0x16
- 8e4: 30 00 90 mov.w [w0+6], w0
- 8e6: 23 11 90 mov.w [w3+36], w2
- 8e8: 02 00 40 add.w w0, w2, w0
- 8ea: b0 01 98 mov.w w0, [w3+6]
- 8ec: 93 00 90 mov.w [w3+2], w1
- 8ee: 81 0f 50 sub.w w0, w1, [w15]
- 8f0: 04 00 31 bra C, . + 0xA
- 8f2: b3 00 90 mov.w [w3+6], w1
- 8f4: 04 00 78 mov.w w4, w0
- 8f6: 48 fc 07 rcall . + 0xFFFFF892
-
-000008f8 <.L26>:
- 8f8: 00 00 06 return
-
-000008fa <.L28>:
- 8fa: 13 00 78 mov.w [w3], w0
- 8fc: b0 01 98 mov.w w0, [w3+6]
- 8fe: b3 00 90 mov.w [w3+6], w1
- 900: 04 00 78 mov.w w4, w0
- 902: 42 fc 07 rcall . + 0xFFFFF886
- 904: f9 ff 37 bra . + 0xFFFFFFF4
-
-00000906 <_xQueueReceiveFromISR>:
- 906: 88 9f be mov.d w8, [w15++]
- 908: 00 04 78 mov.w w0, w8
- 90a: 82 04 78 mov.w w2, w9
- 90c: 00 10 90 mov.w [w0+32], w0
- 90e: 00 00 e0 cp0.w w0
- 910: 02 00 3a bra NZ, . + 0x6
- 912: 4f 04 be mov.d [--w15], w8
- 914: 00 00 06 return
-
-00000916 <.L42>:
- 916: 08 00 78 mov.w w8, w0
- 918: e1 ff 07 rcall . + 0xFFFFFFC4
- 91a: 08 10 90 mov.w [w8+32], w0
- 91c: 00 00 e9 dec.w w0, w0
- 91e: 00 14 98 mov.w w0, [w8+32]
- 920: 38 10 90 mov.w [w8+38], w0
- 922: e1 0f 40 add.w w0, #0x1, [w15]
- 924: 06 00 32 bra Z, . + 0xE
- 926: 00 00 e8 inc.w w0, w0
- 928: 30 14 98 mov.w w0, [w8+38]
- 92a: 10 00 20 mov.w #0x1, w0
- 92c: 4f 04 be mov.d [--w15], w8
- 92e: 00 00 06 return
- 930: f2 ff 37 bra . + 0xFFFFFFE6
-
-00000932 <.L43>:
- 932: 19 00 e0 cp0.w [w9]
- 934: 03 00 3a bra NZ, . + 0x8
- 936: 48 00 90 mov.w [w8+8], w0
- 938: 00 00 e0 cp0.w w0
- 93a: 04 00 3a bra NZ, . + 0xA
-
-0000093c <.L36>:
- 93c: 10 00 20 mov.w #0x1, w0
- 93e: 4f 04 be mov.d [--w15], w8
- 940: 00 00 06 return
- 942: e9 ff 37 bra . + 0xFFFFFFD4
-
-00000944 <.L44>:
- 944: 68 00 44 add.w w8, #0x8, w0
- 946: b7 02 07 rcall . + 0x570
- 948: 00 00 e0 cp0.w w0
- 94a: f8 ff 32 bra Z, . + 0xFFFFFFF2
- 94c: 10 00 20 mov.w #0x1, w0
- 94e: 80 0c 78 mov.w w0, [w9]
- 950: 4f 04 be mov.d [--w15], w8
- 952: 00 00 06 return
- 954: e0 ff 37 bra . + 0xFFFFFFC2
-
-00000956 <_prvCopyDataToQueue>:
- 956: 88 1f 78 mov.w w8, [w15++]
- 958: 00 04 78 mov.w w0, w8
- 95a: 02 00 78 mov.w w2, w0
- 95c: 28 11 90 mov.w [w8+36], w2
- 95e: 02 00 e0 cp0.w w2
- 960: 0d 00 32 bra Z, . + 0x1C
- 962: 00 00 e0 cp0.w w0
- 964: 10 00 32 bra Z, . + 0x22
- 966: 38 00 90 mov.w [w8+6], w0
- 968: 0f fc 07 rcall . + 0xFFFFF820
- 96a: 38 00 90 mov.w [w8+6], w0
- 96c: a8 10 90 mov.w [w8+36], w1
- 96e: 01 00 50 sub.w w0, w1, w0
- 970: 30 04 98 mov.w w0, [w8+6]
- 972: 98 0f 50 sub.w w0, [w8], [w15]
- 974: 03 00 31 bra C, . + 0x8
- 976: 18 00 90 mov.w [w8+2], w0
- 978: 01 00 50 sub.w w0, w1, w0
- 97a: 30 04 98 mov.w w0, [w8+6]
-
-0000097c <.L48>:
- 97c: 08 10 90 mov.w [w8+32], w0
- 97e: 00 00 e8 inc.w w0, w0
- 980: 00 14 98 mov.w w0, [w8+32]
- 982: 4f 04 78 mov.w [--w15], w8
- 984: 00 00 06 return
-
-00000986 <.L56>:
- 986: 28 00 90 mov.w [w8+4], w0
- 988: ff fb 07 rcall . + 0xFFFFF800
- 98a: 28 00 90 mov.w [w8+4], w0
- 98c: a8 10 90 mov.w [w8+36], w1
- 98e: 01 00 40 add.w w0, w1, w0
- 990: 20 04 98 mov.w w0, [w8+4]
- 992: 98 00 90 mov.w [w8+2], w1
- 994: 81 0f 50 sub.w w0, w1, [w15]
- 996: f2 ff 39 bra NC, . + 0xFFFFFFE6
- 998: 18 00 78 mov.w [w8], w0
- 99a: 20 04 98 mov.w w0, [w8+4]
- 99c: 08 10 90 mov.w [w8+32], w0
- 99e: 00 00 e8 inc.w w0, w0
- 9a0: 00 14 98 mov.w w0, [w8+32]
- 9a2: 4f 04 78 mov.w [--w15], w8
- 9a4: 00 00 06 return
- 9a6: ef ff 37 bra . + 0xFFFFFFE0
-
-000009a8 <_xQueueGenericSendFromISR>:
- 9a8: 88 9f be mov.d w8, [w15++]
- 9aa: 00 04 78 mov.w w0, w8
- 9ac: 01 02 78 mov.w w1, w4
- 9ae: 82 04 78 mov.w w2, w9
- 9b0: 03 01 78 mov.w w3, w2
- 9b2: 80 10 90 mov.w [w0+32], w1
- 9b4: 10 10 90 mov.w [w0+34], w0
- 9b6: 80 8f 50 sub.w w1, w0, [w15]
- 9b8: 03 00 39 bra NC, . + 0x8
-
-000009ba <.L60>:
- 9ba: 09 00 78 mov.w w9, w0
- 9bc: 4f 04 be mov.d [--w15], w8
- 9be: 00 00 06 return
-
-000009c0 <.L72>:
- 9c0: 84 00 78 mov.w w4, w1
- 9c2: 08 00 78 mov.w w8, w0
- 9c4: c8 ff 07 rcall . + 0xFFFFFF92
- 9c6: 48 10 90 mov.w [w8+40], w0
- 9c8: e1 0f 40 add.w w0, #0x1, [w15]
- 9ca: 06 00 32 bra Z, . + 0xE
- 9cc: 00 00 e8 inc.w w0, w0
- 9ce: 40 14 98 mov.w w0, [w8+40]
- 9d0: 09 00 78 mov.w w9, w0
- 9d2: 4f 04 be mov.d [--w15], w8
- 9d4: 00 00 06 return
- 9d6: f4 ff 37 bra . + 0xFFFFFFEA
-
-000009d8 <.L73>:
- 9d8: 09 00 e0 cp0.w w9
- 9da: ef ff 3a bra NZ, . + 0xFFFFFFE0
- 9dc: 28 08 90 mov.w [w8+20], w0
- 9de: 00 00 e0 cp0.w w0
- 9e0: 04 00 3a bra NZ, . + 0xA
-
-000009e2 <.L65>:
- 9e2: 00 00 20 mov.w #0x0, w0
- 9e4: 4f 04 be mov.d [--w15], w8
- 9e6: 00 00 06 return
- 9e8: eb ff 37 bra . + 0xFFFFFFD8
-
-000009ea <.L74>:
- 9ea: 74 00 44 add.w w8, #0x14, w0
- 9ec: 64 02 07 rcall . + 0x4CA
- 9ee: 11 00 20 mov.w #0x1, w1
- 9f0: 00 00 e0 cp0.w w0
- 9f2: f7 ff 32 bra Z, . + 0xFFFFFFF0
- 9f4: 01 00 78 mov.w w1, w0
- 9f6: 4f 04 be mov.d [--w15], w8
- 9f8: 00 00 06 return
- 9fa: e2 ff 37 bra . + 0xFFFFFFC6
-
-000009fc <_prvUnlockQueue>:
- 9fc: 88 1f 78 mov.w w8, [w15++]
- 9fe: 00 04 78 mov.w w0, w8
- a00: 21 05 07 rcall . + 0xA44
- a02: 48 10 90 mov.w [w8+40], w0
- a04: 00 00 e9 dec.w w0, w0
- a06: 40 14 98 mov.w w0, [w8+40]
- a08: e1 0f 40 add.w w0, #0x1, [w15]
- a0a: 05 00 34 bra LE, . + 0xC
- a0c: 00 80 eb setm.w w0
- a0e: 40 14 98 mov.w w0, [w8+40]
- a10: 28 08 90 mov.w [w8+20], w0
- a12: 00 00 e0 cp0.w w0
- a14: 18 00 3a bra NZ, . + 0x32
-
-00000a16 <.L78>:
- a16: 19 05 07 rcall . + 0xA34
- a18: 15 05 07 rcall . + 0xA2C
- a1a: 38 10 90 mov.w [w8+38], w0
- a1c: 00 00 e9 dec.w w0, w0
- a1e: 30 14 98 mov.w w0, [w8+38]
- a20: e1 0f 40 add.w w0, #0x1, [w15]
- a22: 05 00 34 bra LE, . + 0xC
- a24: 00 80 eb setm.w w0
- a26: 30 14 98 mov.w w0, [w8+38]
- a28: 48 00 90 mov.w [w8+8], w0
- a2a: 00 00 e0 cp0.w w0
- a2c: 03 00 3a bra NZ, . + 0x8
-
-00000a2e <.L82>:
- a2e: 0d 05 07 rcall . + 0xA1C
- a30: 4f 04 78 mov.w [--w15], w8
- a32: 00 00 06 return
-
-00000a34 <.L89>:
- a34: 68 00 44 add.w w8, #0x8, w0
- a36: 3f 02 07 rcall . + 0x480
- a38: 00 00 e0 cp0.w w0
- a3a: f9 ff 32 bra Z, . + 0xFFFFFFF4
- a3c: 99 02 07 rcall . + 0x534
- a3e: 05 05 07 rcall . + 0xA0C
- a40: 4f 04 78 mov.w [--w15], w8
- a42: 00 00 06 return
- a44: f7 ff 37 bra . + 0xFFFFFFF0
-
-00000a46 <.L88>:
- a46: 74 00 44 add.w w8, #0x14, w0
- a48: 36 02 07 rcall . + 0x46E
- a4a: 00 00 e0 cp0.w w0
- a4c: e4 ff 32 bra Z, . + 0xFFFFFFCA
- a4e: 90 02 07 rcall . + 0x522
- a50: e2 ff 37 bra . + 0xFFFFFFC6
-
-00000a52 <_xQueueGenericReceive>:
- a52: 0a 00 fa lnk #0xa
- a54: 88 9f be mov.d w8, [w15++]
- a56: 8a 9f be mov.d w10, [w15++]
- a58: 8c 1f 78 mov.w w12, [w15++]
- a5a: 80 04 78 mov.w w0, w9
- a5c: 81 05 78 mov.w w1, w11
- a5e: 92 bf 9f mov.w w2, [w15-14]
- a60: a3 bf 9f mov.w w3, [w15-12]
- a62: 04 06 78 mov.w w4, w12
- a64: f5 00 07 rcall . + 0x1EC
- a66: 74 80 57 sub.w w15, #0x14, w0
- a68: 54 02 07 rcall . + 0x4AA
- a6a: ec 04 07 rcall . + 0x9DA
- a6c: 39 10 90 mov.w [w9+38], w0
- a6e: 00 00 e8 inc.w w0, w0
- a70: b0 14 98 mov.w w0, [w9+38]
- a72: 49 10 90 mov.w [w9+40], w0
- a74: 00 00 e8 inc.w w0, w0
- a76: c0 14 98 mov.w w0, [w9+40]
- a78: e8 04 07 rcall . + 0x9D2
- a7a: 1a 00 20 mov.w #0x1, w10
-
-00000a7c <.L119>:
- a7c: e3 04 07 rcall . + 0x9C8
- a7e: 09 14 90 mov.w [w9+32], w8
- a80: e4 04 07 rcall . + 0x9CA
- a82: 08 00 e0 cp0.w w8
- a84: 05 00 3a bra NZ, . + 0xC
- a86: 1f b9 97 mov.w [w15-14], w2
- a88: af b9 97 mov.w [w15-12], w3
- a8a: e0 0f 51 sub.w w2, #0x0, [w15]
- a8c: e0 8f 59 subb.w w3, #0x0, [w15]
- a8e: 21 00 3a bra NZ, . + 0x44
-
-00000a90 <.L95>:
- a90: 0a 00 e0 cp0.w w10
- a92: 0c 00 3a bra NZ, . + 0x1A
-
-00000a94 <.L102>:
- a94: 1f b8 97 mov.w [w15-14], w0
- a96: af b8 97 mov.w [w15-12], w1
- a98: e0 0f 50 sub.w w0, #0x0, [w15]
- a9a: e0 8f 58 subb.w w1, #0x0, [w15]
- a9c: 44 00 32 bra Z, . + 0x8A
- a9e: ee 80 57 sub.w w15, #0xe, w1
- aa0: 74 80 57 sub.w w15, #0x14, w0
- aa2: 3e 02 07 rcall . + 0x47E
- aa4: 00 00 e0 cp0.w w0
- aa6: 3f 00 3a bra NZ, . + 0x80
- aa8: 00 85 eb setm.w w10
- aaa: e8 ff 37 bra . + 0xFFFFFFD2
-
-00000aac <.L122>:
- aac: cb 04 07 rcall . + 0x998
- aae: 09 10 90 mov.w [w9+32], w0
- ab0: 00 00 e0 cp0.w w0
- ab2: 2b 00 3a bra NZ, . + 0x58
- ab4: 00 05 78 mov.w w0, w10
-
-00000ab6 <.L106>:
- ab6: c9 04 07 rcall . + 0x994
- ab8: 0a 00 e0 cp0.w w10
- aba: ec ff 32 bra Z, . + 0xFFFFFFDA
- abc: e1 0f 45 add.w w10, #0x1, [w15]
- abe: de ff 32 bra Z, . + 0xFFFFFFBE
- ac0: 09 00 78 mov.w w9, w0
- ac2: 9c ff 07 rcall . + 0xFFFFFF3A
- ac4: 20 01 07 rcall . + 0x242
- ac6: 0a 00 78 mov.w w10, w0
- ac8: 4f 06 78 mov.w [--w15], w12
- aca: 4f 05 be mov.d [--w15], w10
- acc: 4f 04 be mov.d [--w15], w8
- ace: 00 80 fa ulnk
- ad0: 00 00 06 return
-
-00000ad2 <.L121>:
- ad2: 74 80 44 add.w w9, #0x14, w0
- ad4: d0 01 07 rcall . + 0x3A2
- ad6: b6 04 07 rcall . + 0x96E
- ad8: 09 00 78 mov.w w9, w0
- ada: 90 ff 07 rcall . + 0xFFFFFF22
- adc: 14 01 07 rcall . + 0x22A
- ade: 00 00 e0 cp0.w w0
- ae0: 03 00 3a bra NZ, . + 0x8
- ae2: ca 13 02 call 0x13ca <_vPortYield>
- ae4: 00 00 00
- ae6: 00 00 00 nop
-
-00000ae8 <.L98>:
- ae8: 09 10 90 mov.w [w9+32], w0
- aea: 00 00 e0 cp0.w w0
- aec: 01 00 3a bra NZ, . + 0x4
- aee: 00 05 78 mov.w w0, w10
-
-00000af0 <.L100>:
- af0: af 00 07 rcall . + 0x160
- af2: a8 04 07 rcall . + 0x952
- af4: 39 10 90 mov.w [w9+38], w0
- af6: 00 00 e8 inc.w w0, w0
- af8: b0 14 98 mov.w w0, [w9+38]
- afa: 49 10 90 mov.w [w9+40], w0
- afc: 00 00 e8 inc.w w0, w0
- afe: c0 14 98 mov.w w0, [w9+40]
- b00: a4 04 07 rcall . + 0x94A
- b02: a3 04 07 rcall . + 0x948
- b04: 0a 00 e0 cp0.w w10
- b06: c6 ff 32 bra Z, . + 0xFFFFFF8E
- b08: d1 ff 37 bra . + 0xFFFFFFA4
-
-00000b0a <.L104>:
- b0a: 39 04 90 mov.w [w9+6], w8
- b0c: 8b 00 78 mov.w w11, w1
- b0e: 09 00 78 mov.w w9, w0
- b10: e5 fe 07 rcall . + 0xFFFFFDCC
- b12: 0c 00 e0 cp0.w w12
- b14: 13 00 3a bra NZ, . + 0x28
- b16: 09 10 90 mov.w [w9+32], w0
- b18: 00 00 e9 dec.w w0, w0
- b1a: 80 14 98 mov.w w0, [w9+32]
- b1c: 39 10 90 mov.w [w9+38], w0
- b1e: 00 00 e8 inc.w w0, w0
- b20: b0 14 98 mov.w w0, [w9+38]
- b22: 1a 00 20 mov.w #0x1, w10
- b24: c8 ff 37 bra . + 0xFFFFFF92
-
-00000b26 <.L110>:
- b26: 00 05 eb clr.w w10
- b28: 09 00 78 mov.w w9, w0
- b2a: 68 ff 07 rcall . + 0xFFFFFED2
- b2c: ec 00 07 rcall . + 0x1DA
- b2e: 0a 00 78 mov.w w10, w0
- b30: 4f 06 78 mov.w [--w15], w12
- b32: 4f 05 be mov.d [--w15], w10
- b34: 4f 04 be mov.d [--w15], w8
- b36: 00 80 fa ulnk
- b38: 00 00 06 return
- b3a: cb ff 37 bra . + 0xFFFFFF98
-
-00000b3c <.L107>:
- b3c: b8 04 98 mov.w w8, [w9+6]
- b3e: 49 10 90 mov.w [w9+40], w0
- b40: 00 00 e8 inc.w w0, w0
- b42: c0 14 98 mov.w w0, [w9+40]
- b44: 1a 00 20 mov.w #0x1, w10
- b46: b7 ff 37 bra . + 0xFFFFFF70
-
-00000b48 <_xQueueGenericSend>:
- b48: 0a 00 fa lnk #0xa
- b4a: 88 9f be mov.d w8, [w15++]
- b4c: 8a 9f be mov.d w10, [w15++]
- b4e: 8c 9f be mov.d w12, [w15++]
- b50: 00 05 78 mov.w w0, w10
- b52: 01 06 78 mov.w w1, w12
- b54: 82 bf 9f mov.w w2, [w15-16]
- b56: 93 bf 9f mov.w w3, [w15-14]
- b58: 84 06 78 mov.w w4, w13
- b5a: 7a 00 07 rcall . + 0xF6
- b5c: 76 80 57 sub.w w15, #0x16, w0
- b5e: d9 01 07 rcall . + 0x3B4
- b60: 71 04 07 rcall . + 0x8E4
- b62: 3a 10 90 mov.w [w10+38], w0
- b64: 00 00 e8 inc.w w0, w0
- b66: 30 15 98 mov.w w0, [w10+38]
- b68: 4a 10 90 mov.w [w10+40], w0
- b6a: 00 00 e8 inc.w w0, w0
- b6c: 40 15 98 mov.w w0, [w10+40]
- b6e: 6d 04 07 rcall . + 0x8DC
- b70: 1b 00 20 mov.w #0x1, w11
-
-00000b72 <.L150>:
- b72: 68 04 07 rcall . + 0x8D2
- b74: 8a 14 90 mov.w [w10+32], w9
- b76: 1a 14 90 mov.w [w10+34], w8
- b78: 68 04 07 rcall . + 0x8D2
- b7a: 88 8f 54 sub.w w9, w8, [w15]
- b7c: 28 00 32 bra Z, . + 0x52
-
-00000b7e <.L128>:
- b7e: 0b 00 e0 cp0.w w11
- b80: 12 00 3a bra NZ, . + 0x26
-
-00000b82 <.L135>:
- b82: 0f b8 97 mov.w [w15-16], w0
- b84: 9f b8 97 mov.w [w15-14], w1
- b86: e0 0f 50 sub.w w0, #0x0, [w15]
- b88: e0 8f 58 subb.w w1, #0x0, [w15]
- b8a: 4b 00 32 bra Z, . + 0x98
- b8c: f0 80 57 sub.w w15, #0x10, w1
- b8e: 76 80 57 sub.w w15, #0x16, w0
- b90: c7 01 07 rcall . + 0x390
- b92: 00 00 e0 cp0.w w0
- b94: 46 00 3a bra NZ, . + 0x8E
- b96: 80 85 eb setm.w w11
- b98: 55 04 07 rcall . + 0x8AC
- b9a: 8a 14 90 mov.w [w10+32], w9
- b9c: 1a 14 90 mov.w [w10+34], w8
- b9e: 55 04 07 rcall . + 0x8AC
- ba0: 88 8f 54 sub.w w9, w8, [w15]
- ba2: ed ff 3a bra NZ, . + 0xFFFFFFDC
- ba4: 14 00 37 bra . + 0x2A
-
-00000ba6 <.L153>:
- ba6: 4e 04 07 rcall . + 0x89E
- ba8: 8a 10 90 mov.w [w10+32], w1
- baa: 1a 10 90 mov.w [w10+34], w0
- bac: 80 05 eb clr.w w11
- bae: 80 8f 50 sub.w w1, w0, [w15]
- bb0: 2f 00 39 bra NC, . + 0x60
-
-00000bb2 <.L139>:
- bb2: 4b 04 07 rcall . + 0x898
- bb4: 0b 00 e0 cp0.w w11
- bb6: e5 ff 32 bra Z, . + 0xFFFFFFCC
- bb8: e1 8f 45 add.w w11, #0x1, [w15]
- bba: db ff 32 bra Z, . + 0xFFFFFFB8
- bbc: 0a 00 78 mov.w w10, w0
- bbe: 1e ff 07 rcall . + 0xFFFFFE3E
- bc0: a2 00 07 rcall . + 0x146
- bc2: 0b 00 78 mov.w w11, w0
- bc4: 4f 06 be mov.d [--w15], w12
- bc6: 4f 05 be mov.d [--w15], w10
- bc8: 4f 04 be mov.d [--w15], w8
- bca: 00 80 fa ulnk
- bcc: 00 00 06 return
-
-00000bce <.L152>:
- bce: 0f b9 97 mov.w [w15-16], w2
- bd0: 9f b9 97 mov.w [w15-14], w3
- bd2: e0 0f 51 sub.w w2, #0x0, [w15]
- bd4: e0 8f 59 subb.w w3, #0x0, [w15]
- bd6: d3 ff 32 bra Z, . + 0xFFFFFFA8
- bd8: 68 00 45 add.w w10, #0x8, w0
- bda: 4d 01 07 rcall . + 0x29C
- bdc: 33 04 07 rcall . + 0x868
- bde: 0a 00 78 mov.w w10, w0
- be0: 0d ff 07 rcall . + 0xFFFFFE1C
- be2: 91 00 07 rcall . + 0x124
- be4: 00 00 e0 cp0.w w0
- be6: 03 00 3a bra NZ, . + 0x8
- be8: ca 13 02 call 0x13ca <_vPortYield>
- bea: 00 00 00
- bec: 00 00 00 nop
-
-00000bee <.L131>:
- bee: 8a 10 90 mov.w [w10+32], w1
- bf0: 1a 10 90 mov.w [w10+34], w0
- bf2: 80 8f 50 sub.w w1, w0, [w15]
- bf4: 21 00 32 bra Z, . + 0x44
- bf6: 2c 00 07 rcall . + 0x5A
- bf8: 25 04 07 rcall . + 0x84C
- bfa: 3a 10 90 mov.w [w10+38], w0
- bfc: 00 00 e8 inc.w w0, w0
- bfe: 30 15 98 mov.w w0, [w10+38]
- c00: 4a 10 90 mov.w [w10+40], w0
- c02: 00 00 e8 inc.w w0, w0
- c04: 40 15 98 mov.w w0, [w10+40]
- c06: 21 04 07 rcall . + 0x844
- c08: 20 04 07 rcall . + 0x842
-
-00000c0a <.L156>:
- c0a: 0b 00 e0 cp0.w w11
- c0c: ba ff 32 bra Z, . + 0xFFFFFF76
- c0e: cb ff 37 bra . + 0xFFFFFF98
-
-00000c10 <.L154>:
- c10: 0d 01 78 mov.w w13, w2
- c12: 8c 00 78 mov.w w12, w1
- c14: 0a 00 78 mov.w w10, w0
- c16: 9f fe 07 rcall . + 0xFFFFFD40
- c18: 4a 10 90 mov.w [w10+40], w0
- c1a: 00 00 e8 inc.w w0, w0
- c1c: 40 15 98 mov.w w0, [w10+40]
- c1e: 1b 00 20 mov.w #0x1, w11
- c20: c8 ff 37 bra . + 0xFFFFFF92
-
-00000c22 <.L141>:
- c22: 80 05 eb clr.w w11
- c24: 0a 00 78 mov.w w10, w0
- c26: ea fe 07 rcall . + 0xFFFFFDD6
- c28: 6e 00 07 rcall . + 0xDE
- c2a: 0b 00 78 mov.w w11, w0
- c2c: 4f 06 be mov.d [--w15], w12
- c2e: 4f 05 be mov.d [--w15], w10
- c30: 4f 04 be mov.d [--w15], w8
- c32: 00 80 fa ulnk
- c34: 00 00 06 return
- c36: cb ff 37 bra . + 0xFFFFFF98
-
-00000c38 <.L155>:
- c38: 80 05 eb clr.w w11
- c3a: 0a 00 07 rcall . + 0x16
- c3c: 03 04 07 rcall . + 0x808
- c3e: 3a 10 90 mov.w [w10+38], w0
- c40: 00 00 e8 inc.w w0, w0
- c42: 30 15 98 mov.w w0, [w10+38]
- c44: 4a 10 90 mov.w [w10+40], w0
- c46: 00 00 e8 inc.w w0, w0
- c48: 40 15 98 mov.w w0, [w10+40]
- c4a: ff 03 07 rcall . + 0x800
- c4c: fe 03 07 rcall . + 0x7FE
- c4e: dd ff 37 bra . + 0xFFFFFFBC
-
-00000c50 <_vTaskSuspendAll>:
- c50: f9 03 07 rcall . + 0x7F4
- c52: 10 2d ec inc.w 0xd10
- c54: fa 03 37 bra . + 0x7F6
-
-00000c56 <_vTaskEndScheduler>:
- c56: 42 a0 a8 bset.b 0x42, #0x5
- c58: 16 2d ef clr.w 0xd16
- c5a: b6 03 37 bra . + 0x76E
-
-00000c5c <_vTaskIncrementTick>:
- c5c: 88 9f be mov.d w8, [w15++]
- c5e: 8a 1f 78 mov.w w10, [w15++]
- c60: 10 0d e2 cp0.w 0xd10
- c62: 1e 00 3a bra NZ, . + 0x3E
- c64: 40 68 80 mov.w 0xd08, w0
- c66: 51 68 80 mov.w 0xd0a, w1
- c68: 61 00 40 add.w w0, #0x1, w0
- c6a: e0 80 48 addc.w w1, #0x0, w1
- c6c: 40 68 88 mov.w w0, 0xd08
- c6e: 51 68 88 mov.w w1, 0xd0a
- c70: 40 68 80 mov.w 0xd08, w0
- c72: 51 68 80 mov.w 0xd0a, w1
- c74: e0 0f 50 sub.w w0, #0x0, [w15]
- c76: e0 8f 58 subb.w w1, #0x0, [w15]
- c78: 18 00 32 bra Z, . + 0x32
- c7a: 40 69 80 mov.w 0xd28, w0
- c7c: 10 00 e0 cp0.w [w0]
- c7e: 0d 00 32 bra Z, . + 0x1C
-
-00000c80 <.L14>:
- c80: 40 69 80 mov.w 0xd28, w0
- c82: 40 00 90 mov.w [w0+8], w0
- c84: 40 00 90 mov.w [w0+8], w0
- c86: 00 04 78 mov.w w0, w8
- c88: 00 00 e0 cp0.w w0
- c8a: 07 00 32 bra Z, . + 0x10
- c8c: 42 68 80 mov.w 0xd08, w2
- c8e: 53 68 80 mov.w 0xd0a, w3
- c90: a0 00 90 mov.w [w0+4], w1
- c92: 10 00 90 mov.w [w0+2], w0
- c94: 82 0f 50 sub.w w0, w2, [w15]
- c96: 83 8f 58 subb.w w1, w3, [w15]
- c98: 11 00 36 bra LEU, . + 0x24
-
-00000c9a <.L24>:
- c9a: 4f 05 78 mov.w [--w15], w10
- c9c: 4f 04 be mov.d [--w15], w8
- c9e: 00 00 06 return
-
-00000ca0 <.L10>:
- ca0: 12 2d ec inc.w 0xd12
- ca2: 4f 05 78 mov.w [--w15], w10
- ca4: 4f 04 be mov.d [--w15], w8
- ca6: 00 00 06 return
- ca8: fb ff 37 bra . + 0xFFFFFFF8
-
-00000caa <.L28>:
- caa: 40 69 80 mov.w 0xd28, w0
- cac: 31 69 80 mov.w 0xd26, w1
- cae: 41 69 88 mov.w w1, 0xd28
- cb0: 30 69 88 mov.w w0, 0xd26
- cb2: 0c 2d ec inc.w 0xd0c
- cb4: 40 69 80 mov.w 0xd28, w0
- cb6: 10 00 e0 cp0.w [w0]
- cb8: e3 ff 3a bra NZ, . + 0xFFFFFFC8
- cba: ef ff 37 bra . + 0xFFFFFFE0
-
-00000cbc <.L25>:
- cbc: 2a d4 20 mov.w #0xd42, w10
-
-00000cbe <.L17>:
- cbe: 88 84 e8 inc2.w w8, w9
- cc0: 09 00 78 mov.w w9, w0
- cc2: af fd 07 rcall . + 0xFFFFFB60
- cc4: 48 08 90 mov.w [w8+24], w0
- cc6: 00 00 e0 cp0.w w0
- cc8: 02 00 32 bra Z, . + 0x6
- cca: 6e 00 44 add.w w8, #0xe, w0
- ccc: aa fd 07 rcall . + 0xFFFFFB56
-
-00000cce <.L18>:
- cce: d8 08 90 mov.w [w8+26], w1
- cd0: 70 68 80 mov.w 0xd0e, w0
- cd2: 80 8f 50 sub.w w1, w0, [w15]
- cd4: 01 00 36 bra LEU, . + 0x4
- cd6: 71 68 88 mov.w w1, 0xd0e
-
-00000cd8 <.L20>:
- cd8: 6c 08 b9 mul.su w1, #0xc, w0
- cda: 00 00 45 add.w w10, w0, w0
- cdc: 89 00 78 mov.w w9, w1
- cde: 6f fd 07 rcall . + 0xFFFFFAE0
- ce0: 40 69 80 mov.w 0xd28, w0
- ce2: 10 00 e0 cp0.w [w0]
- ce4: da ff 32 bra Z, . + 0xFFFFFFB6
- ce6: 40 69 80 mov.w 0xd28, w0
- ce8: 40 00 90 mov.w [w0+8], w0
- cea: 40 04 90 mov.w [w0+8], w8
- cec: 08 00 e0 cp0.w w8
- cee: d5 ff 32 bra Z, . + 0xFFFFFFAC
- cf0: 42 68 80 mov.w 0xd08, w2
- cf2: 53 68 80 mov.w 0xd0a, w3
- cf4: 18 00 90 mov.w [w8+2], w0
- cf6: a8 00 90 mov.w [w8+4], w1
- cf8: 82 0f 50 sub.w w0, w2, [w15]
- cfa: 83 8f 58 subb.w w1, w3, [w15]
- cfc: e0 ff 36 bra LEU, . + 0xFFFFFFC2
- cfe: 4f 05 78 mov.w [--w15], w10
- d00: 4f 04 be mov.d [--w15], w8
- d02: 00 00 06 return
- d04: cd ff 37 bra . + 0xFFFFFF9C
-
-00000d06 <_xTaskResumeAll>:
- d06: 88 9f be mov.d w8, [w15++]
- d08: 8a 1f 78 mov.w w10, [w15++]
- d0a: 9c 03 07 rcall . + 0x73A
- d0c: 10 2d ed dec.w 0xd10
- d0e: 80 68 80 mov.w 0xd10, w0
- d10: 00 00 e0 cp0.w w0
- d12: 33 00 3a bra NZ, . + 0x68
- d14: 14 0d e2 cp0.w 0xd14
- d16: 31 00 32 bra Z, . + 0x64
- d18: 00 05 78 mov.w w0, w10
-
-00000d1a <.L57>:
- d1a: 1a 0d e2 cp0.w 0xd1a
- d1c: 1b 00 32 bra Z, . + 0x38
-
-00000d1e <.L59>:
- d1e: 10 69 80 mov.w 0xd22, w0
- d20: 40 04 90 mov.w [w0+8], w8
- d22: 08 00 e0 cp0.w w8
- d24: 17 00 32 bra Z, . + 0x30
- d26: 6e 00 44 add.w w8, #0xe, w0
- d28: 7c fd 07 rcall . + 0xFFFFFAFA
- d2a: 88 84 e8 inc2.w w8, w9
- d2c: 09 00 78 mov.w w9, w0
- d2e: 79 fd 07 rcall . + 0xFFFFFAF4
- d30: d8 08 90 mov.w [w8+26], w1
- d32: 70 68 80 mov.w 0xd0e, w0
- d34: 80 8f 50 sub.w w1, w0, [w15]
- d36: 01 00 36 bra LEU, . + 0x4
- d38: 71 68 88 mov.w w1, 0xd0e
-
-00000d3a <.L37>:
- d3a: 6c 09 b9 mul.su w1, #0xc, w2
- d3c: 20 d4 20 mov.w #0xd42, w0
- d3e: 02 00 40 add.w w0, w2, w0
- d40: 89 00 78 mov.w w9, w1
- d42: 3d fd 07 rcall . + 0xFFFFFA7C
- d44: d0 6d 80 mov.w 0xdba, w0
- d46: d8 08 90 mov.w [w8+26], w1
- d48: 50 08 90 mov.w [w0+26], w0
- d4a: 80 8f 50 sub.w w1, w0, [w15]
- d4c: e6 ff 39 bra NC, . + 0xFFFFFFCE
- d4e: 1a 00 20 mov.w #0x1, w10
- d50: 1a 0d e2 cp0.w 0xd1a
- d52: e5 ff 3a bra NZ, . + 0xFFFFFFCC
-
-00000d54 <.L40>:
- d54: 12 0d e2 cp0.w 0xd12
- d56: 0c 00 32 bra Z, . + 0x1A
- d58: 12 0d e2 cp0.w 0xd12
- d5a: 16 00 3a bra NZ, . + 0x2E
-
-00000d5c <.L45>:
- d5c: 06 2d ef clr.w 0xd06
- d5e: ca 13 02 call 0x13ca <_vPortYield>
- d60: 00 00 00
- d62: 00 00 00 nop
- d64: 18 00 20 mov.w #0x1, w8
- d66: 71 03 07 rcall . + 0x6E4
- d68: 08 00 78 mov.w w8, w0
- d6a: 4f 05 78 mov.w [--w15], w10
- d6c: 4f 04 be mov.d [--w15], w8
- d6e: 00 00 06 return
-
-00000d70 <.L60>:
- d70: e1 0f 55 sub.w w10, #0x1, [w15]
- d72: f4 ff 32 bra Z, . + 0xFFFFFFEA
- d74: 30 68 80 mov.w 0xd06, w0
- d76: e1 0f 50 sub.w w0, #0x1, [w15]
- d78: f1 ff 32 bra Z, . + 0xFFFFFFE4
-
-00000d7a <.L32>:
- d7a: 00 04 eb clr.w w8
- d7c: 66 03 07 rcall . + 0x6CE
- d7e: 08 00 78 mov.w w8, w0
- d80: 4f 05 78 mov.w [--w15], w10
- d82: 4f 04 be mov.d [--w15], w8
- d84: 00 00 06 return
- d86: f4 ff 37 bra . + 0xFFFFFFEA
-
-00000d88 <.L52>:
- d88: 69 ff 07 rcall . + 0xFFFFFED4
- d8a: 12 2d ed dec.w 0xd12
- d8c: 12 0d e2 cp0.w 0xd12
- d8e: e6 ff 32 bra Z, . + 0xFFFFFFCE
- d90: 65 ff 07 rcall . + 0xFFFFFECC
- d92: 12 2d ed dec.w 0xd12
- d94: 12 0d e2 cp0.w 0xd12
- d96: f8 ff 3a bra NZ, . + 0xFFFFFFF2
- d98: e1 ff 37 bra . + 0xFFFFFFC4
-
-00000d9a <_vTaskDelayUntil>:
- d9a: 88 9f be mov.d w8, [w15++]
- d9c: 8a 1f 78 mov.w w10, [w15++]
- d9e: 00 05 78 mov.w w0, w10
- da0: 02 04 be mov.d w2, w8
- da2: 56 ff 07 rcall . + 0xFFFFFEAE
- da4: 1a 01 be mov.d [w10], w2
- da6: 02 04 44 add.w w8, w2, w8
- da8: 83 84 4c addc.w w9, w3, w9
- daa: 40 68 80 mov.w 0xd08, w0
- dac: 51 68 80 mov.w 0xd0a, w1
- dae: 80 0f 51 sub.w w2, w0, [w15]
- db0: 81 8f 59 subb.w w3, w1, [w15]
- db2: 10 00 36 bra LEU, . + 0x22
- db4: 88 0f 51 sub.w w2, w8, [w15]
- db6: 89 8f 59 subb.w w3, w9, [w15]
- db8: 10 00 3e bra GTU, . + 0x22
-
-00000dba <.L66>:
- dba: 00 00 eb clr.w w0
- dbc: 08 8d be mov.d w8, [w10]
- dbe: 00 00 e0 cp0.w w0
- dc0: 15 00 3a bra NZ, . + 0x2C
-
-00000dc2 <.L71>:
- dc2: a1 ff 07 rcall . + 0xFFFFFF44
- dc4: 00 00 e0 cp0.w w0
- dc6: 03 00 3a bra NZ, . + 0x8
- dc8: ca 13 02 call 0x13ca <_vPortYield>
- dca: 00 00 00
- dcc: 00 00 00 nop
-
-00000dce <.L77>:
- dce: 4f 05 78 mov.w [--w15], w10
- dd0: 4f 04 be mov.d [--w15], w8
- dd2: 00 00 06 return
-
-00000dd4 <.L64>:
- dd4: 88 0f 51 sub.w w2, w8, [w15]
- dd6: 89 8f 59 subb.w w3, w9, [w15]
- dd8: 05 00 3e bra GTU, . + 0xC
-
-00000dda <.L78>:
- dda: 40 68 80 mov.w 0xd08, w0
- ddc: 51 68 80 mov.w 0xd0a, w1
- dde: 80 0f 54 sub.w w8, w0, [w15]
- de0: 81 8f 5c subb.w w9, w1, [w15]
- de2: eb ff 36 bra LEU, . + 0xFFFFFFD8
-
-00000de4 <.L68>:
- de4: 10 00 20 mov.w #0x1, w0
- de6: 08 8d be mov.d w8, [w10]
- de8: 00 00 e0 cp0.w w0
- dea: eb ff 32 bra Z, . + 0xFFFFFFD8
-
-00000dec <.L80>:
- dec: ba 8d ec inc2.w 0xdba, WREG
- dee: 19 fd 07 rcall . + 0xFFFFFA34
- df0: d0 6d 80 mov.w 0xdba, w0
- df2: 18 00 98 mov.w w8, [w0+2]
- df4: 29 00 98 mov.w w9, [w0+4]
- df6: 40 68 80 mov.w 0xd08, w0
- df8: 51 68 80 mov.w 0xd0a, w1
- dfa: 80 0f 54 sub.w w8, w0, [w15]
- dfc: 81 8f 5c subb.w w9, w1, [w15]
- dfe: 05 00 39 bra NC, . + 0xC
- e00: d1 6d 80 mov.w 0xdba, w1
- e02: 40 69 80 mov.w 0xd28, w0
- e04: 81 80 e8 inc2.w w1, w1
- e06: e6 fc 07 rcall . + 0xFFFFF9CE
- e08: dc ff 37 bra . + 0xFFFFFFBA
-
-00000e0a <.L81>:
- e0a: d1 6d 80 mov.w 0xdba, w1
- e0c: 30 69 80 mov.w 0xd26, w0
- e0e: 81 80 e8 inc2.w w1, w1
- e10: e1 fc 07 rcall . + 0xFFFFF9C4
- e12: d7 ff 37 bra . + 0xFFFFFFB0
-
-00000e14 <_xTaskGetTickCount>:
- e14: 88 9f be mov.d w8, [w15++]
- e16: 16 03 07 rcall . + 0x62E
- e18: 48 68 80 mov.w 0xd08, w8
- e1a: 59 68 80 mov.w 0xd0a, w9
- e1c: 16 03 07 rcall . + 0x62E
- e1e: 08 00 be mov.d w8, w0
- e20: 4f 04 be mov.d [--w15], w8
- e22: 00 00 06 return
-
-00000e24 <_uxTaskGetNumberOfTasks>:
- e24: 88 1f 78 mov.w w8, [w15++]
- e26: 0e 03 07 rcall . + 0x61E
- e28: a8 68 80 mov.w 0xd14, w8
- e2a: 0f 03 07 rcall . + 0x620
- e2c: 08 00 78 mov.w w8, w0
- e2e: 4f 04 78 mov.w [--w15], w8
- e30: 00 00 06 return
-
-00000e32 <_vTaskSwitchContext>:
- e32: 10 0d e2 cp0.w 0xd10
- e34: 03 00 32 bra Z, . + 0x8
- e36: 10 00 20 mov.w #0x1, w0
- e38: 30 68 88 mov.w w0, 0xd06
- e3a: 00 00 06 return
-
-00000e3c <.L92>:
- e3c: 70 68 80 mov.w 0xd0e, w0
- e3e: 6c 00 b9 mul.su w0, #0xc, w0
- e40: 22 d4 20 mov.w #0xd42, w2
- e42: 62 00 78 mov.w [w2+w0], w0
- e44: 00 00 e0 cp0.w w0
- e46: 06 00 3a bra NZ, . + 0xE
-
-00000e48 <.L100>:
- e48: 0e 2d ed dec.w 0xd0e
- e4a: 70 68 80 mov.w 0xd0e, w0
- e4c: 6c 00 b9 mul.su w0, #0xc, w0
- e4e: 62 00 78 mov.w [w2+w0], w0
- e50: 00 00 e0 cp0.w w0
- e52: fa ff 32 bra Z, . + 0xFFFFFFF6
-
-00000e54 <.L96>:
- e54: 70 68 80 mov.w 0xd0e, w0
- e56: 6c 00 b9 mul.su w0, #0xc, w0
- e58: 00 01 41 add.w w2, w0, w2
- e5a: 92 00 90 mov.w [w2+2], w1
- e5c: a1 00 90 mov.w [w1+4], w1
- e5e: 11 01 98 mov.w w1, [w2+2]
- e60: 64 00 41 add.w w2, #0x4, w0
- e62: 80 8f 50 sub.w w1, w0, [w15]
- e64: 03 00 32 bra Z, . + 0x8
- e66: c1 00 90 mov.w [w1+8], w1
- e68: d1 6d 88 mov.w w1, 0xdba
- e6a: 00 00 06 return
-
-00000e6c <.L103>:
- e6c: a1 00 90 mov.w [w1+4], w1
- e6e: 11 01 98 mov.w w1, [w2+2]
- e70: c1 00 90 mov.w [w1+8], w1
- e72: d1 6d 88 mov.w w1, 0xdba
- e74: 00 00 06 return
-
-00000e76 <_vTaskPlaceOnEventList>:
- e76: 88 9f be mov.d w8, [w15++]
- e78: 02 04 be mov.d w2, w8
- e7a: d1 6d 80 mov.w 0xdba, w1
- e7c: ee 80 40 add.w w1, #0xe, w1
- e7e: aa fc 07 rcall . + 0xFFFFF956
- e80: ba 8d ec inc2.w 0xdba, WREG
- e82: cf fc 07 rcall . + 0xFFFFF9A0
- e84: 40 68 80 mov.w 0xd08, w0
- e86: 51 68 80 mov.w 0xd0a, w1
- e88: 00 01 44 add.w w8, w0, w2
- e8a: 81 81 4c addc.w w9, w1, w3
- e8c: d0 6d 80 mov.w 0xdba, w0
- e8e: 12 00 98 mov.w w2, [w0+2]
- e90: 23 00 98 mov.w w3, [w0+4]
- e92: 40 68 80 mov.w 0xd08, w0
- e94: 51 68 80 mov.w 0xd0a, w1
- e96: 80 0f 51 sub.w w2, w0, [w15]
- e98: 81 8f 59 subb.w w3, w1, [w15]
- e9a: 06 00 31 bra C, . + 0xE
- e9c: d1 6d 80 mov.w 0xdba, w1
- e9e: 30 69 80 mov.w 0xd26, w0
- ea0: 81 80 e8 inc2.w w1, w1
- ea2: 98 fc 07 rcall . + 0xFFFFF932
- ea4: 4f 04 be mov.d [--w15], w8
- ea6: 00 00 06 return
-
-00000ea8 <.L106>:
- ea8: d1 6d 80 mov.w 0xdba, w1
- eaa: 40 69 80 mov.w 0xd28, w0
- eac: 81 80 e8 inc2.w w1, w1
- eae: 92 fc 07 rcall . + 0xFFFFF926
- eb0: 4f 04 be mov.d [--w15], w8
- eb2: 00 00 06 return
- eb4: f9 ff 37 bra . + 0xFFFFFFF4
-
-00000eb6 <_xTaskRemoveFromEventList>:
- eb6: 88 9f be mov.d w8, [w15++]
- eb8: 90 00 78 mov.w [w0], w1
- eba: 01 00 e0 cp0.w w1
- ebc: 20 00 3a bra NZ, . + 0x42
- ebe: 81 04 78 mov.w w1, w9
-
-00000ec0 <.L116>:
- ec0: 6e 84 44 add.w w9, #0xe, w8
- ec2: 08 00 78 mov.w w8, w0
- ec4: ae fc 07 rcall . + 0xFFFFF95E
- ec6: 10 0d e2 cp0.w 0xd10
- ec8: 16 00 3a bra NZ, . + 0x2E
- eca: 09 84 e8 inc2.w w9, w8
- ecc: 08 00 78 mov.w w8, w0
- ece: a9 fc 07 rcall . + 0xFFFFF954
- ed0: d9 08 90 mov.w [w9+26], w1
- ed2: 70 68 80 mov.w 0xd0e, w0
- ed4: 80 8f 50 sub.w w1, w0, [w15]
- ed6: 16 00 3e bra GTU, . + 0x2E
- ed8: 6c 09 b9 mul.su w1, #0xc, w2
- eda: 20 d4 20 mov.w #0xd42, w0
- edc: 02 00 40 add.w w0, w2, w0
- ede: 88 00 78 mov.w w8, w1
- ee0: 6e fc 07 rcall . + 0xFFFFF8DE
-
-00000ee2 <.L121>:
- ee2: d0 6d 80 mov.w 0xdba, w0
- ee4: 00 01 eb clr.w w2
- ee6: d9 08 90 mov.w [w9+26], w1
- ee8: 50 08 90 mov.w [w0+26], w0
- eea: 80 8f 50 sub.w w1, w0, [w15]
- eec: 01 00 39 bra NC, . + 0x4
- eee: 12 00 20 mov.w #0x1, w2
-
-00000ef0 <.L122>:
- ef0: 02 00 78 mov.w w2, w0
- ef2: 4f 04 be mov.d [--w15], w8
- ef4: 00 00 06 return
-
-00000ef6 <.L117>:
- ef6: 88 00 78 mov.w w8, w1
- ef8: a0 d1 20 mov.w #0xd1a, w0
- efa: 61 fc 07 rcall . + 0xFFFFF8C4
- efc: f2 ff 37 bra . + 0xFFFFFFE6
-
-00000efe <.L114>:
- efe: 40 00 90 mov.w [w0+8], w0
- f00: c0 04 90 mov.w [w0+8], w9
- f02: de ff 37 bra . + 0xFFFFFFBE
-
-00000f04 <.L125>:
- f04: 71 68 88 mov.w w1, 0xd0e
- f06: 6c 09 b9 mul.su w1, #0xc, w2
- f08: 20 d4 20 mov.w #0xd42, w0
- f0a: 02 00 40 add.w w0, w2, w0
- f0c: 88 00 78 mov.w w8, w1
- f0e: 57 fc 07 rcall . + 0xFFFFF8B0
- f10: e8 ff 37 bra . + 0xFFFFFFD2
-
-00000f12 <_vTaskSetTimeOutState>:
- f12: 61 68 80 mov.w 0xd0c, w1
- f14: 01 08 78 mov.w w1, [w0]
- f16: 42 68 80 mov.w 0xd08, w2
- f18: 53 68 80 mov.w 0xd0a, w3
- f1a: 12 00 98 mov.w w2, [w0+2]
- f1c: 23 00 98 mov.w w3, [w0+4]
- f1e: 00 00 06 return
-
-00000f20 <_xTaskCheckForTimeOut>:
- f20: 00 03 be mov.d w0, w6
- f22: 60 68 80 mov.w 0xd0c, w0
- f24: 96 0f 10 subr.w w0, [w6], [w15]
- f26: 19 00 32 bra Z, . + 0x34
- f28: 40 68 80 mov.w 0xd08, w0
- f2a: 51 68 80 mov.w 0xd0a, w1
- f2c: 16 01 90 mov.w [w6+2], w2
- f2e: a6 01 90 mov.w [w6+4], w3
- f30: 80 0f 51 sub.w w2, w0, [w15]
- f32: 81 8f 59 subb.w w3, w1, [w15]
- f34: 08 00 36 bra LEU, . + 0x12
- f36: 40 68 80 mov.w 0xd08, w0
- f38: 51 68 80 mov.w 0xd0a, w1
- f3a: 17 02 be mov.d [w7], w4
- f3c: 02 00 50 sub.w w0, w2, w0
- f3e: 83 80 58 subb.w w1, w3, w1
- f40: 84 0f 50 sub.w w0, w4, [w15]
- f42: 85 8f 58 subb.w w1, w5, [w15]
- f44: 01 00 39 bra NC, . + 0x4
-
-00000f46 <.L134>:
- f46: 10 00 05 retlw.w #0x1, w0
-
-00000f48 <.L140>:
- f48: 40 68 80 mov.w 0xd08, w0
- f4a: 51 68 80 mov.w 0xd0a, w1
- f4c: 02 00 50 sub.w w0, w2, w0
- f4e: 83 80 58 subb.w w1, w3, w1
- f50: 80 1b 52 sub.w w4, w0, [w7++]
- f52: 81 93 5a subb.w w5, w1, [w7--]
- f54: 06 00 78 mov.w w6, w0
- f56: dd ff 07 rcall . + 0xFFFFFFBC
- f58: 00 00 05 retlw.w #0x0, w0
-
-00000f5a <.L138>:
- f5a: 16 01 90 mov.w [w6+2], w2
- f5c: a6 01 90 mov.w [w6+4], w3
- f5e: 40 68 80 mov.w 0xd08, w0
- f60: 51 68 80 mov.w 0xd0a, w1
- f62: 17 02 be mov.d [w7], w4
- f64: 02 00 50 sub.w w0, w2, w0
- f66: 83 80 58 subb.w w1, w3, w1
- f68: 84 0f 50 sub.w w0, w4, [w15]
- f6a: 85 8f 58 subb.w w1, w5, [w15]
- f6c: ec ff 31 bra C, . + 0xFFFFFFDA
- f6e: ec ff 37 bra . + 0xFFFFFFDA
-
-00000f70 <_vTaskMissedYield>:
- f70: 10 00 20 mov.w #0x1, w0
- f72: 30 68 88 mov.w w0, 0xd06
- f74: 00 00 06 return
-
-00000f76 <_prvIdleTask>:
- f76: ff ff 37 bra .
-
-00000f78 <_xTaskCreate>:
- f78: e6 87 47 add.w w15, #0x6, w15
- f7a: 88 9f be mov.d w8, [w15++]
- f7c: 8a 9f be mov.d w10, [w15++]
- f7e: 8c 9f be mov.d w12, [w15++]
- f80: 8e 1f 78 mov.w w14, [w15++]
- f82: 00 07 78 mov.w w0, w14
- f84: 01 05 78 mov.w w1, w10
- f86: 02 04 78 mov.w w2, w8
- f88: 83 06 78 mov.w w3, w13
- f8a: 04 06 78 mov.w w4, w12
- f8c: 85 bf 9f mov.w w5, [w15-16]
- f8e: 20 02 20 mov.w #0x22, w0
- f90: 74 02 07 rcall . + 0x4EA
- f92: 80 04 78 mov.w w0, w9
- f94: 00 80 eb setm.w w0
- f96: 09 00 e0 cp0.w w9
- f98: 49 00 32 bra Z, . + 0x94
- f9a: 08 04 44 add.w w8, w8, w8
- f9c: 08 00 78 mov.w w8, w0
- f9e: 6d 02 07 rcall . + 0x4DC
- fa0: e0 0c 98 mov.w w0, [w9+28]
- fa2: 00 00 e0 cp0.w w0
- fa4: 84 00 32 bra Z, . + 0x10A
- fa6: 08 01 78 mov.w w8, w2
- fa8: 51 0a 20 mov.w #0xa5, w1
- faa: f5 f8 07 rcall . + 0xFFFFF1EC
- fac: 7e 80 44 add.w w9, #0x1e, w0
- fae: 42 00 20 mov.w #0x4, w2
- fb0: 8a 00 78 mov.w w10, w1
- fb2: f8 f8 07 rcall . + 0xFFFFF1F2
- fb4: 00 40 eb clr.b w0
- fb6: 90 64 98 mov.b w0, [w9+33]
- fb8: 30 00 20 mov.w #0x3, w0
- fba: 3a 00 20 mov.w #0x3, w10
- fbc: 0b 00 20 mov.w #0x0, w11
- fbe: 80 0f 56 sub.w w12, w0, [w15]
- fc0: 3b 00 36 bra LEU, . + 0x78
- fc2: d0 0c 98 mov.w w0, [w9+26]
- fc4: 09 80 e8 inc2.w w9, w0
- fc6: f0 b7 9f mov.w w0, [w15-18]
- fc8: f7 fb 07 rcall . + 0xFFFFF7F0
- fca: 6e 84 44 add.w w9, #0xe, w8
- fcc: 08 00 78 mov.w w8, w0
- fce: f4 fb 07 rcall . + 0xFFFFF7EA
- fd0: d9 04 98 mov.w w9, [w9+10]
- fd2: 64 00 15 subr.w w10, #0x4, w0
- fd4: e0 80 1d subbr.w w11, #0x0, w1
- fd6: 00 8c be mov.d w0, [w8]
- fd8: b9 0c 98 mov.w w9, [w9+22]
- fda: 69 08 90 mov.w [w9+28], w0
- fdc: 0d 01 78 mov.w w13, w2
- fde: 8e 00 78 mov.w w14, w1
- fe0: af 01 07 rcall . + 0x360
- fe2: 80 0c 78 mov.w w0, [w9]
- fe4: 2f 02 07 rcall . + 0x460
- fe6: 14 2d ec inc.w 0xd14
- fe8: a0 68 80 mov.w 0xd14, w0
- fea: e1 0f 50 sub.w w0, #0x1, [w15]
- fec: 4c 00 32 bra Z, . + 0x9A
-
-00000fee <.L161>:
- fee: 2b d4 20 mov.w #0xd42, w11
- ff0: 16 0d e2 cp0.w 0xd16
- ff2: 43 00 32 bra Z, . + 0x88
-
-00000ff4 <.L165>:
- ff4: d9 08 90 mov.w [w9+26], w1
- ff6: c0 68 80 mov.w 0xd18, w0
- ff8: 80 8f 50 sub.w w1, w0, [w15]
- ffa: 01 00 36 bra LEU, . + 0x4
- ffc: c1 68 88 mov.w w1, 0xd18
-
-00000ffe <.L168>:
- ffe: 70 68 80 mov.w 0xd0e, w0
- 1000: 80 8f 50 sub.w w1, w0, [w15]
- 1002: 01 00 36 bra LEU, . + 0x4
- 1004: 71 68 88 mov.w w1, 0xd0e
-
-00001006 <.L170>:
- 1006: 6c 08 b9 mul.su w1, #0xc, w0
- 1008: 00 80 45 add.w w11, w0, w0
- 100a: ff b0 97 mov.w [w15-18], w1
- 100c: d8 fb 07 rcall . + 0xFFFFF7B2
- 100e: 1d 02 07 rcall . + 0x43C
- 1010: 0f b8 97 mov.w [w15-16], w0
- 1012: 00 00 e0 cp0.w w0
- 1014: 01 00 32 bra Z, . + 0x4
- 1016: 09 08 78 mov.w w9, [w0]
-
-00001018 <.L172>:
- 1018: 16 0d e2 cp0.w 0xd16
- 101a: 27 00 32 bra Z, . + 0x50
- 101c: d0 6d 80 mov.w 0xdba, w0
- 101e: 50 08 90 mov.w [w0+26], w0
- 1020: 8c 0f 50 sub.w w0, w12, [w15]
- 1022: 23 00 31 bra C, . + 0x48
- 1024: ca 13 02 call 0x13ca <_vPortYield>
- 1026: 00 00 00
- 1028: 00 00 00 nop
- 102a: 10 00 20 mov.w #0x1, w0
-
-0000102c <.L155>:
- 102c: 4f 07 78 mov.w [--w15], w14
- 102e: 4f 06 be mov.d [--w15], w12
- 1030: 4f 05 be mov.d [--w15], w10
- 1032: 4f 04 be mov.d [--w15], w8
- 1034: 6f 00 b1 sub.w #0x6, w15
- 1036: 00 00 06 return
-
-00001038 <.L184>:
- 1038: 61 65 b8 mul.uu w12, #0x1, w10
- 103a: 0c 00 78 mov.w w12, w0
- 103c: d0 0c 98 mov.w w0, [w9+26]
- 103e: 09 80 e8 inc2.w w9, w0
- 1040: f0 b7 9f mov.w w0, [w15-18]
- 1042: ba fb 07 rcall . + 0xFFFFF776
- 1044: 6e 84 44 add.w w9, #0xe, w8
- 1046: 08 00 78 mov.w w8, w0
- 1048: b7 fb 07 rcall . + 0xFFFFF770
- 104a: d9 04 98 mov.w w9, [w9+10]
- 104c: 64 00 15 subr.w w10, #0x4, w0
- 104e: e0 80 1d subbr.w w11, #0x0, w1
- 1050: 00 8c be mov.d w0, [w8]
- 1052: b9 0c 98 mov.w w9, [w9+22]
- 1054: 69 08 90 mov.w [w9+28], w0
- 1056: 0d 01 78 mov.w w13, w2
- 1058: 8e 00 78 mov.w w14, w1
- 105a: 72 01 07 rcall . + 0x2E6
- 105c: 80 0c 78 mov.w w0, [w9]
- 105e: f2 01 07 rcall . + 0x3E6
- 1060: 14 2d ec inc.w 0xd14
- 1062: a0 68 80 mov.w 0xd14, w0
- 1064: e1 0f 50 sub.w w0, #0x1, [w15]
- 1066: c3 ff 3a bra NZ, . + 0xFFFFFF88
- 1068: 0e 00 37 bra . + 0x1E
-
-0000106a <.L174>:
- 106a: 10 00 20 mov.w #0x1, w0
- 106c: 4f 07 78 mov.w [--w15], w14
- 106e: 4f 06 be mov.d [--w15], w12
- 1070: 4f 05 be mov.d [--w15], w10
- 1072: 4f 04 be mov.d [--w15], w8
- 1074: 6f 00 b1 sub.w #0x6, w15
- 1076: 00 00 06 return
- 1078: df ff 37 bra . + 0xFFFFFFC0
-
-0000107a <.L186>:
- 107a: d0 6d 80 mov.w 0xdba, w0
- 107c: 50 08 90 mov.w [w0+26], w0
- 107e: 80 0f 56 sub.w w12, w0, [w15]
- 1080: b9 ff 39 bra NC, . + 0xFFFFFF74
- 1082: d9 6d 88 mov.w w9, 0xdba
- 1084: b7 ff 37 bra . + 0xFFFFFF70
-
-00001086 <.L185>:
- 1086: d9 6d 88 mov.w w9, 0xdba
- 1088: 2b d4 20 mov.w #0xd42, w11
- 108a: 0b 04 78 mov.w w11, w8
- 108c: 2a d7 20 mov.w #0xd72, w10
-
-0000108e <.L163>:
- 108e: 08 00 78 mov.w w8, w0
- 1090: 8b fb 07 rcall . + 0xFFFFF718
- 1092: 6c 04 44 add.w w8, #0xc, w8
- 1094: 88 0f 55 sub.w w10, w8, [w15]
- 1096: fb ff 3a bra NZ, . + 0xFFFFFFF8
- 1098: 60 d3 20 mov.w #0xd36, w0
- 109a: 86 fb 07 rcall . + 0xFFFFF70E
- 109c: a0 d2 20 mov.w #0xd2a, w0
- 109e: 84 fb 07 rcall . + 0xFFFFF70A
- 10a0: a0 d1 20 mov.w #0xd1a, w0
- 10a2: 82 fb 07 rcall . + 0xFFFFF706
- 10a4: 60 d3 20 mov.w #0xd36, w0
- 10a6: 40 69 88 mov.w w0, 0xd28
- 10a8: a0 d2 20 mov.w #0xd2a, w0
- 10aa: 30 69 88 mov.w w0, 0xd26
- 10ac: a3 ff 37 bra . + 0xFFFFFF48
-
-000010ae <.L183>:
- 10ae: 09 00 78 mov.w w9, w0
- 10b0: ff 01 07 rcall . + 0x400
- 10b2: 00 80 eb setm.w w0
- 10b4: 4f 07 78 mov.w [--w15], w14
- 10b6: 4f 06 be mov.d [--w15], w12
- 10b8: 4f 05 be mov.d [--w15], w10
- 10ba: 4f 04 be mov.d [--w15], w8
- 10bc: 6f 00 b1 sub.w #0x6, w15
- 10be: 00 00 06 return
- 10c0: bb ff 37 bra . + 0xFFFFFF78
-
-000010c2 <_vTaskStartScheduler>:
- 10c2: 80 02 eb clr.w w5
- 10c4: 05 02 78 mov.w w5, w4
- 10c6: 85 01 78 mov.w w5, w3
- 10c8: 92 06 20 mov.w #0x69, w2
- 10ca: 01 a5 29 mov.w #0x9a50, w1
- 10cc: 60 f7 20 mov.w #0xf76, w0
- 10ce: 54 ff 07 rcall . + 0xFFFFFEAA
- 10d0: e1 0f 50 sub.w w0, #0x1, [w15]
- 10d2: 01 00 32 bra Z, . + 0x4
- 10d4: 00 00 06 return
-
-000010d6 <.L194>:
- 10d6: 42 a0 a8 bset.b 0x42, #0x5
- 10d8: b0 68 88 mov.w w0, 0xd16
- 10da: 08 2d ef clr.w 0xd08
- 10dc: 0a 2d ef clr.w 0xd0a
- 10de: 44 01 37 bra . + 0x28A
-
-000010e0 <_vCoRoutineAddToDelayedList>:
- 10e0: 88 9f be mov.d w8, [w15++]
- 10e2: 8a 1f 78 mov.w w10, [w15++]
- 10e4: 00 04 be mov.d w0, w8
- 10e6: 02 05 78 mov.w w2, w10
- 10e8: a0 6b 80 mov.w 0xd74, w0
- 10ea: b1 6b 80 mov.w 0xd76, w1
- 10ec: 08 04 40 add.w w0, w8, w8
- 10ee: 89 84 48 addc.w w1, w9, w9
- 10f0: bc 8d ec inc2.w 0xdbc, WREG
- 10f2: 97 fb 07 rcall . + 0xFFFFF730
- 10f4: e2 6d 80 mov.w 0xdbc, w2
- 10f6: 18 01 98 mov.w w8, [w2+2]
- 10f8: 29 01 98 mov.w w9, [w2+4]
- 10fa: a0 6b 80 mov.w 0xd74, w0
- 10fc: b1 6b 80 mov.w 0xd76, w1
- 10fe: 80 0f 54 sub.w w8, w0, [w15]
- 1100: 81 8f 5c subb.w w9, w1, [w15]
- 1102: 0c 00 31 bra C, . + 0x1A
- 1104: 82 80 e8 inc2.w w2, w1
- 1106: 60 6c 80 mov.w 0xd8c, w0
- 1108: 65 fb 07 rcall . + 0xFFFFF6CC
-
-0000110a <.L4>:
- 110a: 0a 00 e0 cp0.w w10
- 110c: 04 00 32 bra Z, . + 0xA
- 110e: e1 6d 80 mov.w 0xdbc, w1
- 1110: ee 80 40 add.w w1, #0xe, w1
- 1112: 0a 00 78 mov.w w10, w0
- 1114: 5f fb 07 rcall . + 0xFFFFF6C0
-
-00001116 <.L7>:
- 1116: 4f 05 78 mov.w [--w15], w10
- 1118: 4f 04 be mov.d [--w15], w8
- 111a: 00 00 06 return
-
-0000111c <.L2>:
- 111c: 82 80 e8 inc2.w w2, w1
- 111e: 70 6c 80 mov.w 0xd8e, w0
- 1120: 59 fb 07 rcall . + 0xFFFFF6B4
- 1122: f3 ff 37 bra . + 0xFFFFFFE8
-
-00001124 <_vCoRoutineSchedule>:
- 1124: 88 9f be mov.d w8, [w15++]
- 1126: 8a 1f 78 mov.w w10, [w15++]
- 1128: 8a da 20 mov.w #0xda8, w10
- 112a: 80 0d e2 cp0.w 0xd80
- 112c: 16 00 32 bra Z, . + 0x2E
-
-0000112e <.L12>:
- 112e: 42 a0 a8 bset.b 0x42, #0x5
- 1130: 00 6c 80 mov.w 0xd80, w0
- 1132: 00 00 e0 cp0.w w0
- 1134: 7f 00 3a bra NZ, . + 0x100
- 1136: 00 04 78 mov.w w0, w8
-
-00001138 <.L15>:
- 1138: 6e 00 44 add.w w8, #0xe, w0
- 113a: 73 fb 07 rcall . + 0xFFFFF6E8
- 113c: 42 a0 a9 bclr.b 0x42, #0x5
- 113e: 88 84 e8 inc2.w w8, w9
- 1140: 09 00 78 mov.w w9, w0
- 1142: 6f fb 07 rcall . + 0xFFFFF6E0
- 1144: d8 08 90 mov.w [w8+26], w1
- 1146: 90 6b 80 mov.w 0xd72, w0
- 1148: 80 8f 50 sub.w w1, w0, [w15]
- 114a: 01 00 36 bra LEU, . + 0x4
- 114c: 91 6b 88 mov.w w1, 0xd72
-
-0000114e <.L16>:
- 114e: 6c 08 b9 mul.su w1, #0xc, w0
- 1150: 00 00 45 add.w w10, w0, w0
- 1152: 89 00 78 mov.w w9, w1
- 1154: 34 fb 07 rcall . + 0xFFFFF66A
- 1156: 80 0d e2 cp0.w 0xd80
- 1158: ea ff 3a bra NZ, . + 0xFFFFFFD6
-
-0000115a <.L11>:
- 115a: 5c fe 07 rcall . + 0xFFFFFCBA
- 115c: e2 6b 80 mov.w 0xd7c, w2
- 115e: f3 6b 80 mov.w 0xd7e, w3
- 1160: 02 00 50 sub.w w0, w2, w0
- 1162: 83 80 58 subb.w w1, w3, w1
- 1164: c0 6b 88 mov.w w0, 0xd78
- 1166: d1 6b 88 mov.w w1, 0xd7a
-
-00001168 <.L54>:
- 1168: c0 6b 80 mov.w 0xd78, w0
- 116a: d1 6b 80 mov.w 0xd7a, w1
- 116c: e0 0f 50 sub.w w0, #0x0, [w15]
- 116e: e0 8f 58 subb.w w1, #0x0, [w15]
- 1170: 44 00 32 bra Z, . + 0x8A
-
-00001172 <.L19>:
- 1172: a4 6b 80 mov.w 0xd74, w4
- 1174: b5 6b 80 mov.w 0xd76, w5
- 1176: 61 01 42 add.w w4, #0x1, w2
- 1178: e0 81 4a addc.w w5, #0x0, w3
- 117a: a2 6b 88 mov.w w2, 0xd74
- 117c: b3 6b 88 mov.w w3, 0xd76
- 117e: 61 00 50 sub.w w0, #0x1, w0
- 1180: e0 80 58 subb.w w1, #0x0, w1
- 1182: c0 6b 88 mov.w w0, 0xd78
- 1184: d1 6b 88 mov.w w1, 0xd7a
- 1186: e0 0f 51 sub.w w2, #0x0, [w15]
- 1188: e0 8f 59 subb.w w3, #0x0, [w15]
- 118a: 04 00 3a bra NZ, . + 0xA
- 118c: 70 6c 80 mov.w 0xd8e, w0
- 118e: 65 6c 80 mov.w 0xd8c, w5
- 1190: 75 6c 88 mov.w w5, 0xd8e
- 1192: 60 6c 88 mov.w w0, 0xd8c
-
-00001194 <.L20>:
- 1194: 70 6c 80 mov.w 0xd8e, w0
- 1196: 10 00 e0 cp0.w [w0]
- 1198: e7 ff 32 bra Z, . + 0xFFFFFFD0
- 119a: 40 00 90 mov.w [w0+8], w0
- 119c: 40 00 90 mov.w [w0+8], w0
- 119e: 00 04 78 mov.w w0, w8
- 11a0: 00 00 e0 cp0.w w0
- 11a2: e2 ff 32 bra Z, . + 0xFFFFFFC6
- 11a4: a0 00 90 mov.w [w0+4], w1
- 11a6: 10 00 90 mov.w [w0+2], w0
- 11a8: 80 0f 51 sub.w w2, w0, [w15]
- 11aa: 81 8f 59 subb.w w3, w1, [w15]
- 11ac: dd ff 39 bra NC, . + 0xFFFFFFBC
-
-000011ae <.L51>:
- 11ae: 42 a0 a8 bset.b 0x42, #0x5
- 11b0: 88 84 e8 inc2.w w8, w9
- 11b2: 09 00 78 mov.w w9, w0
- 11b4: 36 fb 07 rcall . + 0xFFFFF66E
- 11b6: 48 08 90 mov.w [w8+24], w0
- 11b8: 00 00 e0 cp0.w w0
- 11ba: 02 00 32 bra Z, . + 0x6
- 11bc: 6e 00 44 add.w w8, #0xe, w0
- 11be: 31 fb 07 rcall . + 0xFFFFF664
-
-000011c0 <.L25>:
- 11c0: 42 a0 a9 bclr.b 0x42, #0x5
- 11c2: d8 08 90 mov.w [w8+26], w1
- 11c4: 90 6b 80 mov.w 0xd72, w0
- 11c6: 80 8f 50 sub.w w1, w0, [w15]
- 11c8: 01 00 36 bra LEU, . + 0x4
- 11ca: 91 6b 88 mov.w w1, 0xd72
-
-000011cc <.L27>:
- 11cc: 6c 08 b9 mul.su w1, #0xc, w0
- 11ce: 00 00 45 add.w w10, w0, w0
- 11d0: 89 00 78 mov.w w9, w1
- 11d2: f5 fa 07 rcall . + 0xFFFFF5EC
- 11d4: 70 6c 80 mov.w 0xd8e, w0
- 11d6: 10 00 e0 cp0.w [w0]
- 11d8: c7 ff 32 bra Z, . + 0xFFFFFF90
- 11da: 40 00 90 mov.w [w0+8], w0
- 11dc: 40 04 90 mov.w [w0+8], w8
- 11de: 08 00 e0 cp0.w w8
- 11e0: c3 ff 32 bra Z, . + 0xFFFFFF88
- 11e2: 18 01 90 mov.w [w8+2], w2
- 11e4: a8 01 90 mov.w [w8+4], w3
- 11e6: a0 6b 80 mov.w 0xd74, w0
- 11e8: b1 6b 80 mov.w 0xd76, w1
- 11ea: 80 0f 51 sub.w w2, w0, [w15]
- 11ec: 81 8f 59 subb.w w3, w1, [w15]
- 11ee: df ff 36 bra LEU, . + 0xFFFFFFC0
- 11f0: c0 6b 80 mov.w 0xd78, w0
- 11f2: d1 6b 80 mov.w 0xd7a, w1
- 11f4: e0 0f 50 sub.w w0, #0x0, [w15]
- 11f6: e0 8f 58 subb.w w1, #0x0, [w15]
- 11f8: bc ff 3a bra NZ, . + 0xFFFFFF7A
-
-000011fa <.L57>:
- 11fa: a0 6b 80 mov.w 0xd74, w0
- 11fc: b1 6b 80 mov.w 0xd76, w1
- 11fe: e0 6b 88 mov.w w0, 0xd7c
- 1200: f1 6b 88 mov.w w1, 0xd7e
- 1202: 94 6b 80 mov.w 0xd72, w4
- 1204: 6c 20 b9 mul.su w4, #0xc, w0
- 1206: 80 00 78 mov.w w0, w1
- 1208: 0a 01 40 add.w w0, w10, w2
- 120a: 92 02 78 mov.w [w2], w5
- 120c: 05 00 e0 cp0.w w5
- 120e: 16 00 3a bra NZ, . + 0x2E
- 1210: 04 00 e0 cp0.w w4
- 1212: 0d 00 32 bra Z, . + 0x1C
- 1214: c0 d9 20 mov.w #0xd9c, w0
- 1216: 00 80 40 add.w w1, w0, w0
- 1218: 84 01 78 mov.w w4, w3
- 121a: 85 00 78 mov.w w5, w1
-
-0000121c <.L34>:
- 121c: 83 01 e9 dec.w w3, w3
- 121e: 00 01 78 mov.w w0, w2
- 1220: 10 00 e0 cp0.w [w0]
- 1222: 0b 00 3a bra NZ, . + 0x18
- 1224: 81 00 e8 inc.w w1, w1
- 1226: 6c 00 50 sub.w w0, #0xc, w0
- 1228: 84 8f 50 sub.w w1, w4, [w15]
- 122a: f8 ff 3a bra NZ, . + 0xFFFFFFF2
- 122c: 93 6b 88 mov.w w3, 0xd72
-
-0000122e <.L42>:
- 122e: 4f 05 78 mov.w [--w15], w10
- 1230: 4f 04 be mov.d [--w15], w8
- 1232: 00 00 06 return
-
-00001234 <.L13>:
- 1234: 40 6c 80 mov.w 0xd88, w0
- 1236: 40 04 90 mov.w [w0+8], w8
- 1238: 7f ff 37 bra . + 0xFFFFFF00
-
-0000123a <.L58>:
- 123a: 93 6b 88 mov.w w3, 0xd72
-
-0000123c <.L32>:
- 123c: 92 00 90 mov.w [w2+2], w1
- 123e: a1 00 90 mov.w [w1+4], w1
- 1240: 11 01 98 mov.w w1, [w2+2]
- 1242: 64 00 41 add.w w2, #0x4, w0
- 1244: 80 8f 50 sub.w w1, w0, [w15]
- 1246: 09 00 32 bra Z, . + 0x14
- 1248: 41 00 90 mov.w [w1+8], w0
- 124a: e0 6d 88 mov.w w0, 0xdbc
- 124c: e0 08 90 mov.w [w0+28], w1
- 124e: 10 01 78 mov.w [w0], w2
- 1250: 02 00 01 call w2
-
-00001252 <.L60>:
- 1252: 4f 05 78 mov.w [--w15], w10
- 1254: 4f 04 be mov.d [--w15], w8
- 1256: 00 00 06 return
- 1258: ed ff 37 bra . + 0xFFFFFFDC
-
-0000125a <.L59>:
- 125a: a1 00 90 mov.w [w1+4], w1
- 125c: 11 01 98 mov.w w1, [w2+2]
- 125e: 41 00 90 mov.w [w1+8], w0
- 1260: e0 6d 88 mov.w w0, 0xdbc
- 1262: e0 08 90 mov.w [w0+28], w1
- 1264: 10 01 78 mov.w [w0], w2
- 1266: 02 00 01 call w2
- 1268: f4 ff 37 bra . + 0xFFFFFFEA
-
-0000126a <_xCoRoutineCreate>:
- 126a: 88 9f be mov.d w8, [w15++]
- 126c: 8a 9f be mov.d w10, [w15++]
- 126e: 80 05 78 mov.w w0, w11
- 1270: 02 04 78 mov.w w2, w8
- 1272: 00 02 20 mov.w #0x20, w0
- 1274: 02 01 07 rcall . + 0x206
- 1276: 80 04 78 mov.w w0, w9
- 1278: 00 80 eb setm.w w0
- 127a: 09 00 e0 cp0.w w9
- 127c: 1d 00 32 bra Z, . + 0x3C
- 127e: bc 0d e2 cp0.w 0xdbc
- 1280: 26 00 32 bra Z, . + 0x4E
- 1282: 00 00 eb clr.w w0
- 1284: f0 0c 98 mov.w w0, [w9+30]
- 1286: 00 80 eb setm.w w0
- 1288: d0 0c 98 mov.w w0, [w9+26]
- 128a: e8 0c 98 mov.w w8, [w9+28]
- 128c: 09 05 78 mov.w w9, w10
- 128e: 0b 1d 78 mov.w w11, [w10++]
- 1290: 0a 00 78 mov.w w10, w0
- 1292: 92 fa 07 rcall . + 0xFFFFF526
- 1294: 6e 84 44 add.w w9, #0xe, w8
- 1296: 08 00 78 mov.w w8, w0
- 1298: 8f fa 07 rcall . + 0xFFFFF520
- 129a: d9 04 98 mov.w w9, [w9+10]
- 129c: b9 0c 98 mov.w w9, [w9+22]
- 129e: 50 00 20 mov.w #0x5, w0
- 12a0: f1 ff 2f mov.w #0xffff, w1
- 12a2: 00 8c be mov.d w0, [w8]
- 12a4: d9 08 90 mov.w [w9+26], w1
- 12a6: 90 6b 80 mov.w 0xd72, w0
- 12a8: 80 8f 50 sub.w w1, w0, [w15]
- 12aa: 09 00 3e bra GTU, . + 0x14
-
-000012ac <.L69>:
- 12ac: 6c 09 b9 mul.su w1, #0xc, w2
- 12ae: 80 da 20 mov.w #0xda8, w0
- 12b0: 02 00 40 add.w w0, w2, w0
- 12b2: 8a 00 78 mov.w w10, w1
- 12b4: 84 fa 07 rcall . + 0xFFFFF50A
- 12b6: 10 00 20 mov.w #0x1, w0
-
-000012b8 <.L66>:
- 12b8: 4f 05 be mov.d [--w15], w10
- 12ba: 4f 04 be mov.d [--w15], w8
- 12bc: 00 00 06 return
-
-000012be <.L74>:
- 12be: 91 6b 88 mov.w w1, 0xd72
- 12c0: 6c 09 b9 mul.su w1, #0xc, w2
- 12c2: 80 da 20 mov.w #0xda8, w0
- 12c4: 02 00 40 add.w w0, w2, w0
- 12c6: 8a 00 78 mov.w w10, w1
- 12c8: 7a fa 07 rcall . + 0xFFFFF4F6
- 12ca: 10 00 20 mov.w #0x1, w0
- 12cc: f5 ff 37 bra . + 0xFFFFFFEC
-
-000012ce <.L73>:
- 12ce: e9 6d 88 mov.w w9, 0xdbc
- 12d0: c0 d9 20 mov.w #0xd9c, w0
- 12d2: 6a fa 07 rcall . + 0xFFFFF4D6
- 12d4: 00 d9 20 mov.w #0xd90, w0
- 12d6: 68 fa 07 rcall . + 0xFFFFF4D2
- 12d8: 00 d8 20 mov.w #0xd80, w0
- 12da: 66 fa 07 rcall . + 0xFFFFF4CE
- 12dc: c0 d9 20 mov.w #0xd9c, w0
- 12de: 70 6c 88 mov.w w0, 0xd8e
- 12e0: 00 d9 20 mov.w #0xd90, w0
- 12e2: 60 6c 88 mov.w w0, 0xd8c
- 12e4: 00 00 eb clr.w w0
- 12e6: f0 0c 98 mov.w w0, [w9+30]
- 12e8: 00 80 eb setm.w w0
- 12ea: d0 0c 98 mov.w w0, [w9+26]
- 12ec: e8 0c 98 mov.w w8, [w9+28]
- 12ee: 09 05 78 mov.w w9, w10
- 12f0: 0b 1d 78 mov.w w11, [w10++]
- 12f2: 0a 00 78 mov.w w10, w0
- 12f4: 61 fa 07 rcall . + 0xFFFFF4C4
- 12f6: 6e 84 44 add.w w9, #0xe, w8
- 12f8: 08 00 78 mov.w w8, w0
- 12fa: 5e fa 07 rcall . + 0xFFFFF4BE
- 12fc: d9 04 98 mov.w w9, [w9+10]
- 12fe: b9 0c 98 mov.w w9, [w9+22]
- 1300: 50 00 20 mov.w #0x5, w0
- 1302: f1 ff 2f mov.w #0xffff, w1
- 1304: 00 8c be mov.d w0, [w8]
- 1306: d9 08 90 mov.w [w9+26], w1
- 1308: 90 6b 80 mov.w 0xd72, w0
- 130a: 80 8f 50 sub.w w1, w0, [w15]
- 130c: cf ff 36 bra LEU, . + 0xFFFFFFA0
- 130e: d7 ff 37 bra . + 0xFFFFFFB0
-
-00001310 <_xCoRoutineRemoveFromEventList>:
- 1310: 88 9f be mov.d w8, [w15++]
- 1312: 90 00 78 mov.w [w0], w1
- 1314: 01 00 e0 cp0.w w1
- 1316: 12 00 32 bra Z, . + 0x26
- 1318: 40 00 90 mov.w [w0+8], w0
- 131a: c0 04 90 mov.w [w0+8], w9
-
-0000131c <.L79>:
- 131c: 6e 84 44 add.w w9, #0xe, w8
- 131e: 08 00 78 mov.w w8, w0
- 1320: 80 fa 07 rcall . + 0xFFFFF502
- 1322: 88 00 78 mov.w w8, w1
- 1324: 00 d8 20 mov.w #0xd80, w0
- 1326: 4b fa 07 rcall . + 0xFFFFF498
- 1328: 00 01 eb clr.w w2
- 132a: d9 08 90 mov.w [w9+26], w1
- 132c: e0 6d 80 mov.w 0xdbc, w0
- 132e: 50 08 90 mov.w [w0+26], w0
- 1330: 80 8f 50 sub.w w1, w0, [w15]
- 1332: 01 00 39 bra NC, . + 0x4
- 1334: 12 00 20 mov.w #0x1, w2
-
-00001336 <.L80>:
- 1336: 02 00 78 mov.w w2, w0
- 1338: 4f 04 be mov.d [--w15], w8
- 133a: 00 00 06 return
-
-0000133c <.L83>:
- 133c: 81 04 78 mov.w w1, w9
- 133e: ee ff 37 bra . + 0xFFFFFFDE
-
-00001340 <_pxPortInitialiseStack>:
- 1340: 01 08 78 mov.w w1, [w0]
- 1342: 80 00 eb clr.w w1
- 1344: 11 00 98 mov.w w1, [w0+2]
- 1346: 21 00 98 mov.w w1, [w0+4]
- 1348: 32 00 98 mov.w w2, [w0+6]
- 134a: e8 00 40 add.w w0, #0x8, w1
- 134c: 60 a5 29 mov.w #0x9a56, w0
- 134e: c2 a8 29 mov.w #0x9a8c, w2
-
-00001350 <.L2>:
- 1350: b0 18 78 mov.w [w0++], [w1++]
- 1352: 80 0f 51 sub.w w2, w0, [w15]
- 1354: fd ff 3a bra NZ, . + 0xFFFFFFFC
- 1356: 20 02 80 mov.w 0x44, w0
- 1358: 80 08 78 mov.w w0, [w1]
- 135a: 34 c0 bf mov.b 0x34, WREG
- 135c: 00 80 fb ze w0, w0
- 135e: 90 00 98 mov.w w0, [w1+2]
- 1360: 00 00 eb clr.w w0
- 1362: a0 00 98 mov.w w0, [w1+4]
- 1364: 66 80 40 add.w w1, #0x6, w0
- 1366: 00 00 06 return
-
-00001368 <_xPortStartScheduler>:
- 1368: 00 00 eb clr.w w0
- 136a: 20 08 88 mov.w w0, 0x104
- 136c: 00 08 88 mov.w w0, 0x100
- 136e: c0 12 20 mov.w #0x12c, w0
- 1370: 10 08 88 mov.w w0, 0x102
- 1372: 95 c0 bf mov.b 0x95, WREG
- 1374: f1 c8 b3 mov.b #0x8f, w1
- 1376: 01 40 60 and.b w0, w1, w0
- 1378: 00 44 a0 bset.b w0, #0x4
- 137a: 95 e0 b7 mov.b WREG, 0x95
- 137c: 84 60 a9 bclr.b 0x84, #0x3
- 137e: 8c 60 a8 bset.b 0x8c, #0x3
- 1380: 04 c1 bf mov.b 0x104, WREG
- 1382: f1 cc b3 mov.b #0xcf, w1
- 1384: 01 40 60 and.b w0, w1, w0
- 1386: 00 44 a0 bset.b w0, #0x4
- 1388: 04 e1 b7 mov.b WREG, 0x104
- 138a: 05 e1 a8 bset.b 0x105, #0x7
- 138c: d0 6d 80 mov.w 0xdba, w0
- 138e: 90 07 78 mov.w [w0], w15
- 1390: 4f 00 78 mov.w [--w15], w0
- 1392: f0 6d 88 mov.w w0, 0xdbe
- 1394: 34 00 f9 pop 0x34
- 1396: 44 00 f9 pop 0x44
- 1398: 40 00 f9 pop 0x40
- 139a: 3e 00 f9 pop 0x3e
- 139c: 3c 00 f9 pop 0x3c
- 139e: 3a 00 f9 pop 0x3a
- 13a0: 38 00 f9 pop 0x38
- 13a2: 2c 00 f9 pop 0x2c
- 13a4: 2a 00 f9 pop 0x2a
- 13a6: 28 00 f9 pop 0x28
- 13a8: 26 00 f9 pop 0x26
- 13aa: 24 00 f9 pop 0x24
- 13ac: 22 00 f9 pop 0x22
- 13ae: 32 00 f9 pop 0x32
- 13b0: 36 00 f9 pop 0x36
- 13b2: 4f 07 78 mov.w [--w15], w14
- 13b4: 4f 06 be mov.d [--w15], w12
- 13b6: 4f 05 be mov.d [--w15], w10
- 13b8: 4f 04 be mov.d [--w15], w8
- 13ba: 4f 03 be mov.d [--w15], w6
- 13bc: 4f 02 be mov.d [--w15], w4
- 13be: 4f 01 be mov.d [--w15], w2
- 13c0: 4f 00 be mov.d [--w15], w0
- 13c2: 42 00 f9 pop 0x42
- 13c4: 00 00 06 return
- 13c6: 10 00 05 retlw.w #0x1, w0
-
-000013c8 <_vPortEndScheduler>:
- 13c8: 00 00 06 return
-
-000013ca <_vPortYield>:
- 13ca: 42 00 f8 push 0x42
- 13cc: 80 1f 78 mov.w w0, [w15++]
- 13ce: 00 02 20 mov.w #0x20, w0
- 13d0: 10 02 88 mov.w w0, 0x42
- 13d2: 81 1f 78 mov.w w1, [w15++]
- 13d4: 82 9f be mov.d w2, [w15++]
- 13d6: 84 9f be mov.d w4, [w15++]
- 13d8: 86 9f be mov.d w6, [w15++]
- 13da: 88 9f be mov.d w8, [w15++]
- 13dc: 8a 9f be mov.d w10, [w15++]
- 13de: 8c 9f be mov.d w12, [w15++]
- 13e0: 8e 1f 78 mov.w w14, [w15++]
- 13e2: 36 00 f8 push 0x36
- 13e4: 32 00 f8 push 0x32
- 13e6: 22 00 f8 push 0x22
- 13e8: 24 00 f8 push 0x24
- 13ea: 26 00 f8 push 0x26
- 13ec: 28 00 f8 push 0x28
- 13ee: 2a 00 f8 push 0x2a
- 13f0: 2c 00 f8 push 0x2c
- 13f2: 38 00 f8 push 0x38
- 13f4: 3a 00 f8 push 0x3a
- 13f6: 3c 00 f8 push 0x3c
- 13f8: 3e 00 f8 push 0x3e
- 13fa: 40 00 f8 push 0x40
- 13fc: 44 00 f8 push 0x44
- 13fe: 34 00 f8 push 0x34
- 1400: f0 6d 80 mov.w 0xdbe, w0
- 1402: 80 1f 78 mov.w w0, [w15++]
- 1404: d0 6d 80 mov.w 0xdba, w0
- 1406: 0f 08 78 mov.w w15, [w0]
- 1408: 14 fd 07 rcall . + 0xFFFFFA2A
- 140a: d0 6d 80 mov.w 0xdba, w0
- 140c: 90 07 78 mov.w [w0], w15
- 140e: 4f 00 78 mov.w [--w15], w0
- 1410: f0 6d 88 mov.w w0, 0xdbe
- 1412: 34 00 f9 pop 0x34
- 1414: 44 00 f9 pop 0x44
- 1416: 40 00 f9 pop 0x40
- 1418: 3e 00 f9 pop 0x3e
- 141a: 3c 00 f9 pop 0x3c
- 141c: 3a 00 f9 pop 0x3a
- 141e: 38 00 f9 pop 0x38
- 1420: 2c 00 f9 pop 0x2c
- 1422: 2a 00 f9 pop 0x2a
- 1424: 28 00 f9 pop 0x28
- 1426: 26 00 f9 pop 0x26
- 1428: 24 00 f9 pop 0x24
- 142a: 22 00 f9 pop 0x22
- 142c: 32 00 f9 pop 0x32
- 142e: 36 00 f9 pop 0x36
- 1430: 4f 07 78 mov.w [--w15], w14
- 1432: 4f 06 be mov.d [--w15], w12
- 1434: 4f 05 be mov.d [--w15], w10
- 1436: 4f 04 be mov.d [--w15], w8
- 1438: 4f 03 be mov.d [--w15], w6
- 143a: 4f 02 be mov.d [--w15], w4
- 143c: 4f 01 be mov.d [--w15], w2
- 143e: 4f 00 be mov.d [--w15], w0
- 1440: 42 00 f9 pop 0x42
- 1442: 00 00 06 return
-
-00001444 <_vPortEnterCritical>:
- 1444: 42 a0 a8 bset.b 0x42, #0x5
- 1446: be 2d ec inc.w 0xdbe
- 1448: 00 00 06 return
-
-0000144a <_vPortExitCritical>:
- 144a: be 0d ed dec.w 0xdbe, WREG
- 144c: f0 6d 88 mov.w w0, 0xdbe
- 144e: 01 00 3a bra NZ, . + 0x4
- 1450: 42 a0 a9 bclr.b 0x42, #0x5
-
-00001452 <.L28>:
- 1452: 00 00 06 return
-
-00001454 <__T1Interrupt>:
- 1454: 36 00 f8 push 0x36
- 1456: 80 9f be mov.d w0, [w15++]
- 1458: 82 9f be mov.d w2, [w15++]
- 145a: 84 9f be mov.d w4, [w15++]
- 145c: 86 9f be mov.d w6, [w15++]
- 145e: 34 00 f8 push 0x34
- 1460: 00 c0 b3 mov.b #0x0, w0
- 1462: a0 01 88 mov.w w0, 0x34
- 1464: fb fb 07 rcall . + 0xFFFFF7F8
- 1466: 84 60 a9 bclr.b 0x84, #0x3
- 1468: b0 ff 07 rcall . + 0xFFFFFF62
- 146a: 00 00 00 nop
- 146c: 34 00 f9 pop 0x34
- 146e: 4f 03 be mov.d [--w15], w6
- 1470: 4f 02 be mov.d [--w15], w4
- 1472: 4f 01 be mov.d [--w15], w2
- 1474: 4f 00 be mov.d [--w15], w0
- 1476: 36 00 f9 pop 0x36
- 1478: 00 40 06 retfie
-
-0000147a <_pvPortMalloc>:
- 147a: 88 1f 78 mov.w w8, [w15++]
- 147c: 00 04 78 mov.w w0, w8
- 147e: 00 08 a3 btst.z w0, #0x0
- 1480: 02 00 32 bra Z, . + 0x6
- 1482: 00 00 a1 bclr.w w0, #0x0
- 1484: 00 84 e8 inc2.w w0, w8
-
-00001486 <.L2>:
- 1486: e4 fb 07 rcall . + 0xFFFFF7CA
- 1488: 02 40 80 mov.w 0x800, w2
- 148a: 82 00 44 add.w w8, w2, w1
- 148c: f0 4f 20 mov.w #0x4ff, w0
- 148e: 80 8f 50 sub.w w1, w0, [w15]
- 1490: 05 00 36 bra LEU, . + 0xC
-
-00001492 <.L4>:
- 1492: 00 04 eb clr.w w8
- 1494: 38 fc 07 rcall . + 0xFFFFF872
- 1496: 08 00 78 mov.w w8, w0
- 1498: 4f 04 78 mov.w [--w15], w8
- 149a: 00 00 06 return
-
-0000149c <.L10>:
- 149c: 81 0f 51 sub.w w2, w1, [w15]
- 149e: f9 ff 31 bra C, . + 0xFFFFFFF4
- 14a0: 60 80 20 mov.w #0x806, w0
- 14a2: 00 04 41 add.w w2, w0, w8
- 14a4: 01 40 88 mov.w w1, 0x800
- 14a6: 2f fc 07 rcall . + 0xFFFFF860
- 14a8: 08 00 78 mov.w w8, w0
- 14aa: 4f 04 78 mov.w [--w15], w8
- 14ac: 00 00 06 return
- 14ae: f6 ff 37 bra . + 0xFFFFFFEE
-
-000014b0 <_vPortFree>:
- 14b0: 00 00 06 return
-
-000014b2 <_vPortInitialiseBlocks>:
- 14b2: 00 28 ef clr.w 0x800
- 14b4: 00 00 06 return
-
-000014b6 <_canOpenChannel>:
- 14b6: 80 80 eb setm.w w1
- 14b8: 00 00 e0 cp0.w w0
- 14ba: 29 00 3a bra NZ, . + 0x54
- 14bc: f0 8f 2f mov.w #0xf8ff, w0
- 14be: 90 23 b6 and.w 0x390
- 14c0: 91 43 a8 bset.b 0x391, #0x2
- 14c2: 01 08 20 mov.w #0x80, w1
-
-000014c4 <.L5>:
- 14c4: 80 1c 80 mov.w 0x390, w0
- 14c6: 00 0e b2 and.w #0xe0, w0
- 14c8: 81 0f 50 sub.w w0, w1, [w15]
- 14ca: fc ff 3a bra NZ, . + 0xFFFFFFFA
- 14cc: 92 23 ef clr.w 0x392
- 14ce: 50 08 20 mov.w #0x85, w0
- 14d0: a0 1c 88 mov.w w0, 0x394
- 14d2: 00 80 22 mov.w #0x2800, w0
- 14d4: 90 23 b7 ior.w 0x390
- 14d6: c2 ff 21 mov.w #0x1ffc, w2
- 14d8: 82 19 88 mov.w w2, 0x330
- 14da: f1 ff 20 mov.w #0xfff, w1
- 14dc: 91 19 88 mov.w w1, 0x332
- 14de: 00 c0 2f mov.w #0xfc00, w0
- 14e0: a0 19 88 mov.w w0, 0x334
- 14e2: c2 19 88 mov.w w2, 0x338
- 14e4: d1 19 88 mov.w w1, 0x33a
- 14e6: e0 19 88 mov.w w0, 0x33c
- 14e8: 02 18 88 mov.w w2, 0x300
- 14ea: 11 18 88 mov.w w1, 0x302
- 14ec: 20 18 88 mov.w w0, 0x304
- 14ee: 42 18 88 mov.w w2, 0x308
- 14f0: 51 18 88 mov.w w1, 0x30a
- 14f2: 60 18 88 mov.w w0, 0x30c
- 14f4: 82 18 88 mov.w w2, 0x310
- 14f6: 91 18 88 mov.w w1, 0x312
- 14f8: a0 18 88 mov.w w0, 0x314
- 14fa: c2 18 88 mov.w w2, 0x318
- 14fc: d1 18 88 mov.w w1, 0x31a
- 14fe: e0 18 88 mov.w w0, 0x31c
- 1500: 02 19 88 mov.w w2, 0x320
- 1502: 11 19 88 mov.w w1, 0x322
- 1504: 20 19 88 mov.w w0, 0x324
- 1506: 42 19 88 mov.w w2, 0x328
- 1508: 51 19 88 mov.w w1, 0x32a
- 150a: 60 19 88 mov.w w0, 0x32c
- 150c: 71 77 27 mov.w #0x7777, w1
-
-0000150e <.L4>:
- 150e: 01 00 78 mov.w w1, w0
- 1510: 00 00 06 return
-
-00001512 <_canSetBusParams>:
- 1512: 02 00 fa lnk #0x2
- 1514: 88 1f 78 mov.w w8, [w15++]
- 1516: 01 04 78 mov.w w1, w8
- 1518: e7 bf 9f mov.w w7, [w15-4]
- 151a: e7 ff 2f mov.w #0xfffe, w7
- 151c: 71 77 27 mov.w #0x7777, w1
- 151e: 81 0f 50 sub.w w0, w1, [w15]
- 1520: 04 00 32 bra Z, . + 0xA
-
-00001522 <.L15>:
- 1522: 07 00 78 mov.w w7, w0
- 1524: 4f 04 78 mov.w [--w15], w8
- 1526: 00 80 fa ulnk
- 1528: 00 00 06 return
-
-0000152a <.L31>:
- 152a: e1 0f 51 sub.w w2, #0x1, [w15]
- 152c: e0 8f 59 subb.w w3, #0x0, [w15]
- 152e: 21 00 32 bra Z, . + 0x44
- 1530: 88 00 e9 dec.w w8, w1
- 1532: 04 02 e9 dec.w w4, w4
- 1534: 05 00 e9 dec.w w5, w0
- 1536: d7 ff 2f mov.w #0xfffd, w7
- 1538: e7 8f 50 sub.w w1, #0x7, [w15]
- 153a: f3 ff 3e bra GTU, . + 0xFFFFFFE8
- 153c: c7 ff 2f mov.w #0xfffc, w7
- 153e: e7 0f 52 sub.w w4, #0x7, [w15]
- 1540: f0 ff 3e bra GTU, . + 0xFFFFFFE2
- 1542: b7 ff 2f mov.w #0xfffb, w7
- 1544: e3 0f 50 sub.w w0, #0x3, [w15]
- 1546: ed ff 3e bra GTU, . + 0xFFFFFFDC
- 1548: e1 0f 53 sub.w w6, #0x1, [w15]
- 154a: 26 00 3a bra NZ, . + 0x4E
-
-0000154c <.L25>:
- 154c: 46 00 dd sl.w w0, #0x6, w0
- 154e: 00 0c b2 and.w #0xc0, w0
- 1550: 92 23 b7 ior.w 0x392
- 1552: 43 09 dd sl.w w1, #0x3, w2
- 1554: 82 03 b2 and.w #0x38, w2
- 1556: 48 20 dd sl.w w4, #0x8, w0
- 1558: 01 70 20 mov.w #0x700, w1
- 155a: 01 00 60 and.w w0, w1, w0
- 155c: 80 00 71 ior.w w2, w0, w1
- 155e: 45 30 dd sl.w w6, #0x5, w0
- 1560: 00 04 b2 and.w #0x40, w0
- 1562: 00 80 70 ior.w w1, w0, w0
- 1564: 94 23 b7 ior.w 0x394
- 1566: 80 03 eb clr.w w7
-
-00001568 <.L34>:
- 1568: 07 00 78 mov.w w7, w0
- 156a: 4f 04 78 mov.w [--w15], w8
- 156c: 00 80 fa ulnk
- 156e: 00 00 06 return
- 1570: dc ff 37 bra . + 0xFFFFFFBA
-
-00001572 <.L32>:
- 1572: 16 00 20 mov.w #0x1, w6
- 1574: 86 00 78 mov.w w6, w1
- 1576: 24 00 20 mov.w #0x2, w4
- 1578: 06 00 78 mov.w w6, w0
- 157a: 46 00 dd sl.w w0, #0x6, w0
- 157c: 00 0c b2 and.w #0xc0, w0
- 157e: 92 23 b7 ior.w 0x392
- 1580: 43 09 dd sl.w w1, #0x3, w2
- 1582: 82 03 b2 and.w #0x38, w2
- 1584: 48 20 dd sl.w w4, #0x8, w0
- 1586: 01 70 20 mov.w #0x700, w1
- 1588: 01 00 60 and.w w0, w1, w0
- 158a: 80 00 71 ior.w w2, w0, w1
- 158c: 45 30 dd sl.w w6, #0x5, w0
- 158e: 00 04 b2 and.w #0x40, w0
- 1590: 00 80 70 ior.w w1, w0, w0
- 1592: 94 23 b7 ior.w 0x394
- 1594: 80 03 eb clr.w w7
- 1596: e8 ff 37 bra . + 0xFFFFFFD2
-
-00001598 <.L33>:
- 1598: a7 ff 2f mov.w #0xfffa, w7
- 159a: e3 0f 53 sub.w w6, #0x3, [w15]
- 159c: d7 ff 32 bra Z, . + 0xFFFFFFB0
- 159e: 07 00 78 mov.w w7, w0
- 15a0: 4f 04 78 mov.w [--w15], w8
- 15a2: 00 80 fa ulnk
- 15a4: 00 00 06 return
- 15a6: c1 ff 37 bra . + 0xFFFFFF84
-
-000015a8 <_canBusOn>:
- 15a8: 00 81 eb setm.w w2
- 15aa: 71 77 27 mov.w #0x7777, w1
- 15ac: 81 0f 50 sub.w w0, w1, [w15]
- 15ae: 02 00 32 bra Z, . + 0x6
- 15b0: 02 00 78 mov.w w2, w0
- 15b2: 00 00 06 return
-
-000015b4 <.L47>:
- 15b4: f0 8f 2f mov.w #0xf8ff, w0
- 15b6: 90 23 b6 and.w 0x390
-
-000015b8 <.L41>:
- 15b8: 80 1c 80 mov.w 0x390, w0
- 15ba: 00 0e b2 and.w #0xe0, w0
- 15bc: fd ff 3a bra NZ, . + 0xFFFFFFFC
- 15be: 00 00 78 mov.w w0, w0
- 15c0: 00 00 06 return
- 15c2: f8 ff 37 bra . + 0xFFFFFFF2
-
-000015c4 <_canBusOff>:
- 15c4: 00 81 eb setm.w w2
- 15c6: 71 77 27 mov.w #0x7777, w1
- 15c8: 81 0f 50 sub.w w0, w1, [w15]
- 15ca: 02 00 32 bra Z, . + 0x6
- 15cc: 02 00 78 mov.w w2, w0
- 15ce: 00 00 06 return
-
-000015d0 <.L60>:
- 15d0: f0 8f 2f mov.w #0xf8ff, w0
- 15d2: 90 23 b6 and.w 0x390
- 15d4: 91 03 a8 bset.b 0x391, #0x0
- 15d6: 01 02 20 mov.w #0x20, w1
-
-000015d8 <.L54>:
- 15d8: 80 1c 80 mov.w 0x390, w0
- 15da: 00 0e b2 and.w #0xe0, w0
- 15dc: 81 0f 50 sub.w w0, w1, [w15]
- 15de: fc ff 3a bra NZ, . + 0xFFFFFFFA
- 15e0: 00 00 20 mov.w #0x0, w0
- 15e2: 00 00 06 return
- 15e4: f5 ff 37 bra . + 0xFFFFFFEC
-
-000015e6 <_canAccept>:
- 15e6: 01 02 78 mov.w w1, w4
- 15e8: 71 77 27 mov.w #0x7777, w1
- 15ea: 81 0f 50 sub.w w0, w1, [w15]
- 15ec: 02 00 32 bra Z, . + 0x6
-
-000015ee <.L64>:
- 15ee: 00 80 eb setm.w w0
- 15f0: 00 00 06 return
-
-000015f2 <.L74>:
- 15f2: e4 0f 52 sub.w w4, #0x4, [w15]
- 15f4: 26 00 32 bra Z, . + 0x4E
- 15f6: 0c 00 3e bra GTU, . + 0x1A
- 15f8: e3 0f 52 sub.w w4, #0x3, [w15]
- 15fa: f9 ff 3a bra NZ, . + 0xFFFFFFF4
- 15fc: 30 00 2e mov.w #0xe003, w0
- 15fe: 00 23 b6 and.w 0x300
- 1600: 42 18 dd sl.w w3, #0x2, w0
- 1602: ce 11 de lsr.w w2, #0xe, w3
- 1604: 83 01 70 ior.w w0, w3, w3
- 1606: 42 11 dd sl.w w2, #0x2, w2
- 1608: c0 ff 21 mov.w #0x1ffc, w0
- 160a: 00 00 61 and.w w2, w0, w0
- 160c: 00 23 b7 ior.w 0x300
- 160e: 00 00 05 retlw.w #0x0, w0
-
-00001610 <.L70>:
- 1610: e5 0f 52 sub.w w4, #0x5, [w15]
- 1612: 21 00 32 bra Z, . + 0x44
- 1614: e6 0f 52 sub.w w4, #0x6, [w15]
- 1616: eb ff 3a bra NZ, . + 0xFFFFFFD8
- 1618: 30 00 2e mov.w #0xe003, w0
- 161a: 30 23 b6 and.w 0x330
- 161c: 40 9a de asr.w w3, #0x0, w4
- 161e: cf a2 de asr.w w4, #0xf, w5
- 1620: c0 ff 21 mov.w #0x1ffc, w0
- 1622: 00 00 62 and.w w4, w0, w0
- 1624: 30 23 b7 ior.w 0x330
- 1626: 00 00 2f mov.w #0xf000, w0
- 1628: 32 23 b6 and.w 0x332
- 162a: c6 9a de asr.w w3, #0x6, w5
- 162c: 4a 18 dd sl.w w3, #0xa, w0
- 162e: 46 12 de lsr.w w2, #0x6, w4
- 1630: 04 02 70 ior.w w0, w4, w4
- 1632: f0 ff 20 mov.w #0xfff, w0
- 1634: 00 00 62 and.w w4, w0, w0
- 1636: 32 23 b7 ior.w 0x332
- 1638: f0 3f 20 mov.w #0x3ff, w0
- 163a: 34 23 b6 and.w 0x334
- 163c: 4a 10 dd sl.w w2, #0xa, w0
- 163e: 34 23 b7 ior.w 0x334
- 1640: 00 00 05 retlw.w #0x0, w0
-
-00001642 <.L67>:
- 1642: 30 00 2e mov.w #0xe003, w0
- 1644: 30 23 b6 and.w 0x330
- 1646: 42 18 dd sl.w w3, #0x2, w0
- 1648: ce 11 de lsr.w w2, #0xe, w3
- 164a: 83 01 70 ior.w w0, w3, w3
- 164c: 42 11 dd sl.w w2, #0x2, w2
- 164e: c0 ff 21 mov.w #0x1ffc, w0
- 1650: 00 00 61 and.w w2, w0, w0
- 1652: 30 23 b7 ior.w 0x330
- 1654: 00 00 05 retlw.w #0x0, w0
-
-00001656 <.L68>:
- 1656: 30 00 2e mov.w #0xe003, w0
- 1658: 00 23 b6 and.w 0x300
- 165a: 40 9a de asr.w w3, #0x0, w4
- 165c: cf a2 de asr.w w4, #0xf, w5
- 165e: c0 ff 21 mov.w #0x1ffc, w0
- 1660: 00 00 62 and.w w4, w0, w0
- 1662: 00 23 b7 ior.w 0x300
- 1664: 00 00 2f mov.w #0xf000, w0
- 1666: 02 23 b6 and.w 0x302
- 1668: c6 9a de asr.w w3, #0x6, w5
- 166a: 4a 18 dd sl.w w3, #0xa, w0
- 166c: 46 12 de lsr.w w2, #0x6, w4
- 166e: 04 02 70 ior.w w0, w4, w4
- 1670: f0 ff 20 mov.w #0xfff, w0
- 1672: 00 00 62 and.w w4, w0, w0
- 1674: 02 23 b7 ior.w 0x302
- 1676: f0 3f 20 mov.w #0x3ff, w0
- 1678: 04 23 b6 and.w 0x304
- 167a: 4a 10 dd sl.w w2, #0xa, w0
- 167c: 04 23 b7 ior.w 0x304
- 167e: 00 00 05 retlw.w #0x0, w0
-
-00001680 <_canRead>:
- 1680: 88 9f be mov.d w8, [w15++]
- 1682: 01 04 78 mov.w w1, w8
- 1684: 82 03 78 mov.w w2, w7
- 1686: 83 04 78 mov.w w3, w9
- 1688: 71 77 27 mov.w #0x7777, w1
- 168a: 81 0f 50 sub.w w0, w1, [w15]
- 168c: 03 00 32 bra Z, . + 0x8
-
-0000168e <.L77>:
- 168e: 00 80 eb setm.w w0
- 1690: 4f 04 be mov.d [--w15], w8
- 1692: 00 00 06 return
-
-00001694 <.L92>:
- 1694: 8e e3 ab btst.b 0x38e, #0x7
- 1696: fb ff 32 bra Z, . + 0xFFFFFFF8
- 1698: 80 03 ab btst.b 0x380, #0x0
- 169a: 26 00 3a bra NZ, . + 0x4E
- 169c: 20 00 20 mov.w #0x2, w0
- 169e: 00 0a 78 mov.w w0, [w4]
- 16a0: 00 1c 80 mov.w 0x380, w0
- 16a2: 43 00 dd sl.w w0, #0x3, w0
- 16a4: 45 00 de lsr.w w0, #0x5, w0
- 16a6: 01 00 20 mov.w #0x0, w1
- 16a8: 00 8c be mov.d w0, [w8]
-
-000016aa <.L82>:
- 16aa: 20 1c 80 mov.w 0x384, w0
- 16ac: 6f 00 60 and.w w0, #0xf, w0
- 16ae: 80 0c 78 mov.w w0, [w9]
- 16b0: e4 0f 50 sub.w w0, #0x4, [w15]
- 16b2: 0a 00 3e bra GTU, . + 0x16
- 16b4: e3 0f 50 sub.w w0, #0x3, [w15]
- 16b6: 10 00 31 bra C, . + 0x22
- 16b8: e1 0f 50 sub.w w0, #0x1, [w15]
- 16ba: 10 00 31 bra C, . + 0x22
-
-000016bc <.L83>:
- 16bc: 8e e3 a9 bclr.b 0x38e, #0x7
- 16be: 70 1c 80 mov.w 0x38e, w0
- 16c0: 00 00 eb clr.w w0
-
-000016c2 <.L93>:
- 16c2: 4f 04 be mov.d [--w15], w8
- 16c4: 00 00 06 return
- 16c6: e6 ff 37 bra . + 0xFFFFFFCE
-
-000016c8 <.L88>:
- 16c8: e6 0f 50 sub.w w0, #0x6, [w15]
- 16ca: 04 00 36 bra LEU, . + 0xA
- 16cc: e8 0f 50 sub.w w0, #0x8, [w15]
- 16ce: f6 ff 3e bra GTU, . + 0xFFFFFFEE
- 16d0: 60 1c 80 mov.w 0x38c, w0
- 16d2: b0 03 98 mov.w w0, [w7+6]
-
-000016d4 <.L86>:
- 16d4: 55 1c 80 mov.w 0x38a, w5
- 16d6: a5 03 98 mov.w w5, [w7+4]
-
-000016d8 <.L85>:
- 16d8: 40 1c 80 mov.w 0x388, w0
- 16da: 90 03 98 mov.w w0, [w7+2]
-
-000016dc <.L84>:
- 16dc: 35 1c 80 mov.w 0x386, w5
- 16de: 85 0b 78 mov.w w5, [w7]
- 16e0: 8e e3 a9 bclr.b 0x38e, #0x7
- 16e2: 70 1c 80 mov.w 0x38e, w0
- 16e4: 00 00 eb clr.w w0
- 16e6: ed ff 37 bra . + 0xFFFFFFDC
-
-000016e8 <.L80>:
- 16e8: 40 00 20 mov.w #0x4, w0
- 16ea: 00 0a 78 mov.w w0, [w4]
- 16ec: 02 1c 80 mov.w 0x380, w2
- 16ee: 10 1c 80 mov.w 0x382, w0
- 16f0: 24 1c 80 mov.w 0x384, w4
- 16f2: c6 ff 21 mov.w #0x1ffc, w6
- 16f4: 06 01 61 and.w w2, w6, w2
- 16f6: 03 00 20 mov.w #0x0, w3
- 16f8: c0 11 dd sl.w w2, #0x0, w3
- 16fa: 02 00 20 mov.w #0x0, w2
- 16fc: f6 ff 20 mov.w #0xfff, w6
- 16fe: 06 00 60 and.w w0, w6, w0
- 1700: 01 00 20 mov.w #0x0, w1
- 1702: c6 0a dd sl.w w1, #0x6, w5
- 1704: ca 00 de lsr.w w0, #0xa, w1
- 1706: 81 80 72 ior.w w5, w1, w1
- 1708: 46 00 dd sl.w w0, #0x6, w0
- 170a: 00 01 71 ior.w w2, w0, w2
- 170c: 81 81 71 ior.w w3, w1, w3
- 170e: 4a 22 de lsr.w w4, #0xa, w4
- 1710: 05 00 20 mov.w #0x0, w5
- 1712: 04 1c 71 ior.w w2, w4, [w8++]
- 1714: 05 94 71 ior.w w3, w5, [w8--]
- 1716: c9 ff 37 bra . + 0xFFFFFF94
-
-00001718 <_canWrite>:
- 1718: 88 9f be mov.d w8, [w15++]
- 171a: 02 03 be mov.d w2, w6
- 171c: 81 04 78 mov.w w1, w9
- 171e: 04 04 78 mov.w w4, w8
- 1720: 71 77 27 mov.w #0x7777, w1
- 1722: 81 0f 50 sub.w w0, w1, [w15]
- 1724: 03 00 32 bra Z, . + 0x8
-
-00001726 <.L97>:
- 1726: 00 80 eb setm.w w0
- 1728: 4f 04 be mov.d [--w15], w8
- 172a: 00 00 06 return
-
-0000172c <.L117>:
- 172c: 6e c3 bf mov.b 0x36e, WREG
- 172e: 00 38 a3 btst.z w0, #0x3
- 1730: fa ff 3a bra NZ, . + 0xFFFFFFF6
- 1732: e8 0f 52 sub.w w4, #0x8, [w15]
- 1734: f8 ff 3e bra GTU, . + 0xFFFFFFF2
- 1736: e2 8f 52 sub.w w5, #0x2, [w15]
- 1738: 40 00 32 bra Z, . + 0x82
- 173a: e4 8f 52 sub.w w5, #0x4, [w15]
- 173c: f4 ff 3a bra NZ, . + 0xFFFFFFEA
- 173e: 43 20 dd sl.w w4, #0x3, w0
- 1740: 80 07 b2 and.w #0x78, w0
- 1742: ca 30 dd sl.w w6, #0xa, w1
- 1744: 01 00 70 ior.w w0, w1, w0
- 1746: 20 1b 88 mov.w w0, 0x364
- 1748: 4a 38 dd sl.w w7, #0xa, w0
- 174a: 46 31 de lsr.w w6, #0x6, w2
- 174c: 02 01 70 ior.w w0, w2, w2
- 174e: c6 b9 de asr.w w7, #0x6, w3
- 1750: f2 0f b2 and.w #0xff, w2
- 1752: ce 39 dd sl.w w7, #0xe, w3
- 1754: 42 30 de lsr.w w6, #0x2, w0
- 1756: 00 80 71 ior.w w3, w0, w0
- 1758: c2 b8 de asr.w w7, #0x2, w1
- 175a: 04 00 2f mov.w #0xf000, w4
- 175c: 04 00 60 and.w w0, w4, w0
- 175e: 00 01 71 ior.w w2, w0, w2
- 1760: 12 1b 88 mov.w w2, 0x362
- 1762: 40 b8 de asr.w w7, #0x0, w0
- 1764: cf 80 de asr.w w0, #0xf, w1
- 1766: c0 0f b2 and.w #0xfc, w0
- 1768: c3 38 dd sl.w w7, #0x3, w1
- 176a: 4d 31 de lsr.w w6, #0xd, w2
- 176c: 02 81 70 ior.w w1, w2, w2
- 176e: cd b9 de asr.w w7, #0xd, w3
- 1770: 04 80 2f mov.w #0xf800, w4
- 1772: 04 01 61 and.w w2, w4, w2
- 1774: 02 00 70 ior.w w0, w2, w0
- 1776: 00 00 a0 bset.w w0, #0x0
- 1778: 00 1b 88 mov.w w0, 0x360
-
-0000177a <.L103>:
- 177a: e4 0f 54 sub.w w8, #0x4, [w15]
- 177c: 11 00 3e bra GTU, . + 0x24
- 177e: e3 0f 54 sub.w w8, #0x3, [w15]
- 1780: 17 00 31 bra C, . + 0x30
- 1782: e1 0f 54 sub.w w8, #0x1, [w15]
- 1784: 17 00 31 bra C, . + 0x30
-
-00001786 <.L104>:
- 1786: 6e 63 a8 bset.b 0x36e, #0x3
- 1788: 80 00 eb clr.w w1
- 178a: 42 06 20 mov.w #0x64, w2
-
-0000178c <.L110>:
- 178c: 81 00 e8 inc.w w1, w1
- 178e: 6e c3 bf mov.b 0x36e, WREG
- 1790: 00 38 a3 btst.z w0, #0x3
- 1792: 02 00 32 bra Z, . + 0x6
- 1794: 82 8f 50 sub.w w1, w2, [w15]
- 1796: fa ff 3a bra NZ, . + 0xFFFFFFF6
-
-00001798 <.L111>:
- 1798: 00 00 eb clr.w w0
- 179a: 4f 04 be mov.d [--w15], w8
- 179c: 00 00 06 return
- 179e: c6 ff 37 bra . + 0xFFFFFF8E
-
-000017a0 <.L109>:
- 17a0: e6 0f 54 sub.w w8, #0x6, [w15]
- 17a2: 04 00 36 bra LEU, . + 0xA
- 17a4: e8 0f 54 sub.w w8, #0x8, [w15]
- 17a6: ef ff 3e bra GTU, . + 0xFFFFFFE0
- 17a8: b9 01 90 mov.w [w9+6], w3
- 17aa: 63 1b 88 mov.w w3, 0x36c
-
-000017ac <.L107>:
- 17ac: 29 00 90 mov.w [w9+4], w0
- 17ae: 50 1b 88 mov.w w0, 0x36a
-
-000017b0 <.L106>:
- 17b0: 99 00 90 mov.w [w9+2], w1
- 17b2: 41 1b 88 mov.w w1, 0x368
-
-000017b4 <.L105>:
- 17b4: 99 04 78 mov.w [w9], w9
- 17b6: 39 1b 88 mov.w w9, 0x366
- 17b8: e6 ff 37 bra . + 0xFFFFFFCE
-
-000017ba <.L101>:
- 17ba: 42 39 dd sl.w w7, #0x2, w2
- 17bc: ce 31 de lsr.w w6, #0xe, w3
- 17be: 83 01 71 ior.w w2, w3, w3
- 17c0: 42 31 dd sl.w w6, #0x2, w2
- 17c2: c2 0f b2 and.w #0xfc, w2
- 17c4: 45 38 dd sl.w w7, #0x5, w0
- 17c6: cb 30 de lsr.w w6, #0xb, w1
- 17c8: 81 00 70 ior.w w0, w1, w1
- 17ca: 45 30 dd sl.w w6, #0x5, w0
- 17cc: 04 80 2f mov.w #0xf800, w4
- 17ce: 04 00 60 and.w w0, w4, w0
- 17d0: 00 01 71 ior.w w2, w0, w2
- 17d2: 02 1b 88 mov.w w2, 0x360
- 17d4: 43 40 dd sl.w w8, #0x3, w0
- 17d6: 80 07 b2 and.w #0x78, w0
- 17d8: 20 1b 88 mov.w w0, 0x364
- 17da: cf ff 37 bra . + 0xFFFFFFA0
-
-000017dc <_aic_on>:
- 17dc: a7 00 07 rcall . + 0x150
- 17de: 92 00 37 bra . + 0x126
-
-000017e0 <_aic_off>:
- 17e0: 60 00 b8 mul.uu w0, #0x0, w0
- 17e2: a6 00 07 rcall . + 0x14E
- 17e4: 15 00 07 rcall . + 0x2C
- 17e6: a3 00 07 rcall . + 0x148
- 17e8: 8d 00 37 bra . + 0x11C
-
-000017ea <_aic_initialize>:
- 17ea: 88 9f be mov.d w8, [w15++]
- 17ec: 8a 9f be mov.d w10, [w15++]
- 17ee: 00 04 be mov.d w0, w8
- 17f0: 06 05 be mov.d w6, w10
- 17f2: 90 00 07 rcall . + 0x122
- 17f4: 0a 01 be mov.d w10, w2
- 17f6: 08 00 be mov.d w8, w0
- 17f8: 29 00 07 rcall . + 0x54
- 17fa: 08 00 be mov.d w8, w0
- 17fc: 06 00 07 rcall . + 0xE
- 17fe: 08 00 be mov.d w8, w0
- 1800: 1b 00 07 rcall . + 0x38
- 1802: 4f 05 be mov.d [--w15], w10
- 1804: 4f 04 be mov.d [--w15], w8
- 1806: 00 00 06 return
-
-00001808 <_aic_finalize>:
- 1808: eb ff 37 bra . + 0xFFFFFFD8
-
-0000180a <_brake_initialize>:
- 180a: ca 42 a8 bset.b 0x2ca, #0x2
- 180c: c6 42 a9 bclr.b 0x2c6, #0x2
- 180e: 00 00 06 return
-
-00001810 <_brake_apply>:
- 1810: ca 42 a8 bset.b 0x2ca, #0x2
- 1812: 00 00 06 return
-
-00001814 <_brake_release>:
- 1814: ca 42 a9 bclr.b 0x2ca, #0x2
- 1816: 00 00 06 return
-
-00001818 <__QEIInterrupt>:
- 1818: 34 00 f8 push 0x34
- 181a: 88 1f 78 mov.w w8, [w15++]
- 181c: 08 c0 b3 mov.b #0x0, w8
- 181e: a8 01 88 mov.w w8, 0x34
- 1820: 4f 04 78 mov.w [--w15], w8
- 1822: 23 61 ab btst.b 0x123, #0x3
- 1824: 04 00 32 bra Z, . + 0xA
- 1826: b0 2d ec inc.w 0xdb0
- 1828: 89 00 a9 bclr.b 0x89, #0x0
- 182a: 34 00 f9 pop 0x34
- 182c: 00 40 06 retfie
-
-0000182e <.L2>:
- 182e: b0 2d ed dec.w 0xdb0
- 1830: 89 00 a9 bclr.b 0x89, #0x0
- 1832: 34 00 f9 pop 0x34
- 1834: 00 40 06 retfie
- 1836: fb ff 37 bra . + 0xFFFFFFF8
-
-00001838 <_index_initialize>:
- 1838: a8 62 a8 bset.b 0x2a8, #0x3
- 183a: 00 00 06 return
-
-0000183c <_index_finalize>:
- 183c: a8 62 a9 bclr.b 0x2a8, #0x3
- 183e: 00 00 06 return
-
-00001840 <_index_read>:
- 1840: 23 c1 bf mov.b 0x123, WREG
- 1842: 44 00 de lsr.w w0, #0x4, w0
- 1844: 61 00 60 and.w w0, #0x1, w0
- 1846: 00 80 fb ze w0, w0
- 1848: 01 00 20 mov.w #0x0, w1
- 184a: 00 00 06 return
-
-0000184c <_encoder_initialize>:
- 184c: 92 6d 88 mov.w w2, 0xdb2
- 184e: a3 6d 88 mov.w w3, 0xdb4
- 1850: ac 2d ef clr.w 0xdac
- 1852: ae 2d ef clr.w 0xdae
- 1854: b0 2d ef clr.w 0xdb0
- 1856: f0 ff 27 mov.w #0x7fff, w0
- 1858: 40 09 88 mov.w w0, 0x128
- 185a: 00 1a 20 mov.w #0x1a0, w0
- 185c: 20 09 88 mov.w w0, 0x124
- 185e: 00 70 20 mov.w #0x700, w0
- 1860: 10 09 88 mov.w w0, 0x122
- 1862: 00 03 20 mov.w #0x30, w0
- 1864: a8 22 b7 ior.w 0x2a8
- 1866: 89 00 a9 bclr.b 0x89, #0x0
- 1868: 91 00 a8 bset.b 0x91, #0x0
- 186a: 70 c0 b3 mov.b #0x7, w0
- 186c: a8 60 b7 ior.b 0xa8
- 186e: 00 00 06 return
-
-00001870 <_encoder_finalize>:
- 1870: 60 00 b8 mul.uu w0, #0x0, w0
- 1872: 90 6d 88 mov.w w0, 0xdb2
- 1874: a1 6d 88 mov.w w1, 0xdb4
- 1876: 60 6d 88 mov.w w0, 0xdac
- 1878: 71 6d 88 mov.w w1, 0xdae
- 187a: f0 fc 2f mov.w #0xffcf, w0
- 187c: a8 22 b6 and.w 0x2a8
- 187e: 00 00 06 return
-
-00001880 <_encoder_get_count>:
- 1880: 80 6d 80 mov.w 0xdb0, w0
- 1882: 31 09 80 mov.w 0x126, w1
- 1884: 82 6d 80 mov.w 0xdb0, w2
- 1886: 80 0f 51 sub.w w2, w0, [w15]
- 1888: fb ff 3a bra NZ, . + 0xFFFFFFF8
- 188a: 61 0a b8 mul.uu w1, #0x1, w4
- 188c: 04 00 42 add.w w4, w4, w0
- 188e: 85 80 4a addc.w w5, w5, w1
- 1890: cf 91 de asr.w w2, #0xf, w3
- 1892: c0 11 dd sl.w w2, #0x0, w3
- 1894: 02 00 20 mov.w #0x0, w2
- 1896: 02 00 70 ior.w w0, w2, w0
- 1898: 83 80 70 ior.w w1, w3, w1
- 189a: 02 02 72 ior.w w4, w2, w4
- 189c: 83 82 72 ior.w w5, w3, w5
- 189e: 44 6d 88 mov.w w4, 0xda8
- 18a0: 55 6d 88 mov.w w5, 0xdaa
- 18a2: 81 80 d1 asr.w w1, w1
- 18a4: 00 80 d3 rrc.w w0, w0
- 18a6: 62 6d 80 mov.w 0xdac, w2
- 18a8: 73 6d 80 mov.w 0xdae, w3
- 18aa: 02 00 50 sub.w w0, w2, w0
- 18ac: 83 80 58 subb.w w1, w3, w1
- 18ae: 00 00 06 return
-
-000018b0 <_encoder_get_count_and_clear>:
- 18b0: e7 ff 07 rcall . + 0xFFFFFFD0
- 18b2: 62 6d 80 mov.w 0xdac, w2
- 18b4: 73 6d 80 mov.w 0xdae, w3
- 18b6: 00 01 41 add.w w2, w0, w2
- 18b8: 81 81 49 addc.w w3, w1, w3
- 18ba: 62 6d 88 mov.w w2, 0xdac
- 18bc: 73 6d 88 mov.w w3, 0xdae
- 18be: 00 00 06 return
-
-000018c0 <_encoder_read>:
- 18c0: 88 9f be mov.d w8, [w15++]
- 18c2: de ff 07 rcall . + 0xFFFFFFBE
- 18c4: aa f4 07 rcall . + 0xFFFFE956
- 18c6: 00 04 be mov.d w0, w8
- 18c8: 90 6d 80 mov.w 0xdb2, w0
- 18ca: a1 6d 80 mov.w 0xdb4, w1
- 18cc: a6 f4 07 rcall . + 0xFFFFE94E
- 18ce: 00 01 be mov.d w0, w2
- 18d0: 08 00 be mov.d w8, w0
- 18d2: ce f4 07 rcall . + 0xFFFFE99E
- 18d4: 00 01 be mov.d w0, w2
- 18d6: 0f f5 07 rcall . + 0xFFFFEA20
- 18d8: b2 fd 20 mov.w #0xfdb, w2
- 18da: 93 04 24 mov.w #0x4049, w3
- 18dc: 69 f5 07 rcall . + 0xFFFFEAD4
- 18de: 4f 04 be mov.d [--w15], w8
- 18e0: 00 00 06 return
-
-000018e2 <_encoder_read_and_clear>:
- 18e2: 88 9f be mov.d w8, [w15++]
- 18e4: e5 ff 07 rcall . + 0xFFFFFFCC
- 18e6: 99 f4 07 rcall . + 0xFFFFE934
- 18e8: 00 04 be mov.d w0, w8
- 18ea: 90 6d 80 mov.w 0xdb2, w0
- 18ec: a1 6d 80 mov.w 0xdb4, w1
- 18ee: 95 f4 07 rcall . + 0xFFFFE92C
- 18f0: 00 01 be mov.d w0, w2
- 18f2: 08 00 be mov.d w8, w0
- 18f4: bd f4 07 rcall . + 0xFFFFE97C
- 18f6: 00 01 be mov.d w0, w2
- 18f8: fe f4 07 rcall . + 0xFFFFE9FE
- 18fa: b2 fd 20 mov.w #0xfdb, w2
- 18fc: 93 04 24 mov.w #0x4049, w3
- 18fe: 58 f5 07 rcall . + 0xFFFFEAB2
- 1900: 4f 04 be mov.d [--w15], w8
- 1902: 00 00 06 return
-
-00001904 <_encoder_clear>:
- 1904: bd ff 07 rcall . + 0xFFFFFF7C
- 1906: 62 6d 80 mov.w 0xdac, w2
- 1908: 73 6d 80 mov.w 0xdae, w3
- 190a: 00 01 41 add.w w2, w0, w2
- 190c: 81 81 49 addc.w w3, w1, w3
- 190e: 62 6d 88 mov.w w2, 0xdac
- 1910: 73 6d 88 mov.w w3, 0xdae
- 1912: 00 00 06 return
-
-00001914 <_motor_initialize>:
- 1914: 04 00 be mov.d w4, w0
- 1916: b2 6d 88 mov.w w2, 0xdb6
- 1918: c3 6d 88 mov.w w3, 0xdb8
- 191a: 2c 00 07 rcall . + 0x5A
- 191c: 29 00 07 rcall . + 0x54
- 191e: 80 01 78 mov.w w0, w3
- 1920: 00 01 eb clr.w w2
- 1922: 60 00 b8 mul.uu w0, #0x0, w0
- 1924: 7a 00 37 bra . + 0xF6
-
-00001926 <_motor_finalize>:
- 1926: b6 2d ef clr.w 0xdb6
- 1928: b8 2d ef clr.w 0xdb8
- 192a: 00 00 06 return
-
-0000192c <_motor_on>:
- 192c: 6e 00 37 bra . + 0xDE
-
-0000192e <_motor_off>:
- 192e: 70 00 37 bra . + 0xE2
-
-00001930 <_motor_set>:
- 1930: 88 9f be mov.d w8, [w15++]
- 1932: 8a 9f be mov.d w10, [w15++]
- 1934: 00 01 be mov.d w0, w2
- 1936: b8 6d 80 mov.w 0xdb6, w8
- 1938: c9 6d 80 mov.w 0xdb8, w9
- 193a: 08 00 be mov.d w8, w0
- 193c: dc f4 07 rcall . + 0xFFFFE9BA
- 193e: 00 05 be mov.d w0, w10
- 1940: 08 01 be mov.d w8, w2
- 1942: 08 00 be mov.d w8, w0
- 1944: d8 f4 07 rcall . + 0xFFFFE9B2
- 1946: 00 01 be mov.d w0, w2
- 1948: 0a 00 be mov.d w10, w0
- 194a: 92 f4 07 rcall . + 0xFFFFE926
- 194c: 00 04 be mov.d w0, w8
- 194e: 36 00 07 rcall . + 0x6E
- 1950: 08 00 be mov.d w8, w0
- 1952: 4f 05 be mov.d [--w15], w10
- 1954: 4f 04 be mov.d [--w15], w8
- 1956: 00 00 06 return
-
-00001958 <_pwm_set_count>:
- 1958: 00 01 78 mov.w w0, w2
- 195a: b0 f9 2f mov.w #0xff9b, w0
- 195c: 00 00 41 add.w w2, w0, w0
- 195e: a1 f9 27 mov.w #0x7f9a, w1
- 1960: 81 0f 50 sub.w w0, w1, [w15]
- 1962: 03 00 36 bra LEU, . + 0x8
- 1964: f0 4a 20 mov.w #0x4af, w0
- 1966: 20 0e 88 mov.w w0, 0x1c4
- 1968: 00 00 06 return
-
-0000196a <.L2>:
- 196a: 02 00 e9 dec.w w2, w0
- 196c: 20 0e 88 mov.w w0, 0x1c4
- 196e: 00 00 06 return
-
-00001970 <_pwm_get_count>:
- 1970: c4 01 ec inc.w 0x1c4, WREG
- 1972: 00 00 06 return
-
-00001974 <_pwm_set_freq>:
- 1974: 02 00 fa lnk #0x2
- 1976: 00 01 be mov.d w0, w2
- 1978: 00 b0 21 mov.w #0x1b00, w0
- 197a: 71 bb 24 mov.w #0x4bb7, w1
- 197c: 79 f4 07 rcall . + 0xFFFFE8F4
- 197e: 4c f5 07 rcall . + 0xFFFFEA9A
- 1980: f0 bf 9f mov.w w0, [w15-2]
- 1982: 7f b8 97 mov.w [w15-2], w0
- 1984: e9 ff 07 rcall . + 0xFFFFFFD4
- 1986: 00 80 fa ulnk
- 1988: 00 00 06 return
-
-0000198a <_pwm_get_freq>:
- 198a: 88 1f 78 mov.w w8, [w15++]
- 198c: 28 0e 80 mov.w 0x1c4, w8
- 198e: 08 04 e8 inc.w w8, w8
- 1990: 61 40 b9 mul.su w8, #0x1, w0
- 1992: 43 f4 07 rcall . + 0xFFFFE888
- 1994: 08 00 e0 cp0.w w8
- 1996: 06 00 35 bra LT, . + 0xE
- 1998: 00 01 be mov.d w0, w2
- 199a: 00 b0 21 mov.w #0x1b00, w0
- 199c: 71 bb 24 mov.w #0x4bb7, w1
- 199e: 68 f4 07 rcall . + 0xFFFFE8D2
- 19a0: 4f 04 78 mov.w [--w15], w8
- 19a2: 00 00 06 return
-
-000019a4 <.L20>:
- 19a4: 02 00 20 mov.w #0x0, w2
- 19a6: 03 78 24 mov.w #0x4780, w3
- 19a8: a6 f4 07 rcall . + 0xFFFFE94E
- 19aa: 00 01 be mov.d w0, w2
- 19ac: 00 b0 21 mov.w #0x1b00, w0
- 19ae: 71 bb 24 mov.w #0x4bb7, w1
- 19b0: 5f f4 07 rcall . + 0xFFFFE8C0
- 19b2: 4f 04 78 mov.w [--w15], w8
- 19b4: 00 00 06 return
- 19b6: f6 ff 37 bra . + 0xFFFFFFEE
-
-000019b8 <_pwm_set_duty>:
- 19b8: b0 0e 88 mov.w w0, 0x1d6
- 19ba: 00 00 06 return
-
-000019bc <_pwm_set_duty_float>:
- 19bc: 88 9f be mov.d w8, [w15++]
- 19be: 8a 1f 78 mov.w w10, [w15++]
- 19c0: 00 04 be mov.d w0, w8
- 19c2: d6 ff 07 rcall . + 0xFFFFFFAE
- 19c4: 00 05 78 mov.w w0, w10
- 19c6: 08 01 be mov.d w8, w2
- 19c8: 08 00 be mov.d w8, w0
- 19ca: 95 f4 07 rcall . + 0xFFFFE92C
- 19cc: 00 04 be mov.d w0, w8
- 19ce: 61 50 b9 mul.su w10, #0x1, w0
- 19d0: 24 f4 07 rcall . + 0xFFFFE84A
- 19d2: 0a 00 e0 cp0.w w10
- 19d4: 0b 00 35 bra LT, . + 0x18
- 19d6: 00 01 be mov.d w0, w2
- 19d8: 08 00 be mov.d w8, w0
- 19da: ea f4 07 rcall . + 0xFFFFE9D6
- 19dc: 3e f5 07 rcall . + 0xFFFFEA7E
- 19de: 00 04 78 mov.w w0, w8
- 19e0: eb ff 07 rcall . + 0xFFFFFFD8
- 19e2: 09 00 20 mov.w #0x0, w9
- 19e4: 08 00 be mov.d w8, w0
- 19e6: 4f 05 78 mov.w [--w15], w10
- 19e8: 4f 04 be mov.d [--w15], w8
- 19ea: 00 00 06 return
-
-000019ec <.L31>:
- 19ec: 02 00 20 mov.w #0x0, w2
- 19ee: 03 78 24 mov.w #0x4780, w3
- 19f0: 82 f4 07 rcall . + 0xFFFFE906
- 19f2: 00 01 be mov.d w0, w2
- 19f4: 08 00 be mov.d w8, w0
- 19f6: dc f4 07 rcall . + 0xFFFFE9BA
- 19f8: 30 f5 07 rcall . + 0xFFFFEA62
- 19fa: 00 04 78 mov.w w0, w8
- 19fc: dd ff 07 rcall . + 0xFFFFFFBC
- 19fe: 09 00 20 mov.w #0x0, w9
- 1a00: 08 00 be mov.d w8, w0
- 1a02: 4f 05 78 mov.w [--w15], w10
- 1a04: 4f 04 be mov.d [--w15], w8
- 1a06: 00 00 06 return
- 1a08: f1 ff 37 bra . + 0xFFFFFFE4
-
-00001a0a <_pwm_on>:
- 1a0a: 00 30 20 mov.w #0x300, w0
- 1a0c: a0 0e 88 mov.w w0, 0x1d4
- 1a0e: 00 00 06 return
-
-00001a10 <_pwm_off>:
- 1a10: e0 fe 2f mov.w #0xffee, w0
- 1a12: d4 21 b6 and.w 0x1d4
- 1a14: f0 cf 2f mov.w #0xfcff, w0
- 1a16: d4 21 b6 and.w 0x1d4
- 1a18: 00 00 06 return
-
-00001a1a <_pwm_initialize>:
- 1a1a: 88 1f 78 mov.w w8, [w15++]
- 1a1c: 03 04 78 mov.w w3, w8
- 1a1e: f8 ff 07 rcall . + 0xFFFFFFF2
- 1a20: 08 00 78 mov.w w8, w0
- 1a22: 9a ff 07 rcall . + 0xFFFFFF36
- 1a24: 00 00 20 mov.w #0x0, w0
- 1a26: 01 f0 23 mov.w #0x3f00, w1
- 1a28: c9 ff 07 rcall . + 0xFFFFFF94
- 1a2a: 20 f0 20 mov.w #0xf02, w0
- 1a2c: 50 0e 88 mov.w w0, 0x1ca
- 1a2e: f0 00 20 mov.w #0xf, w0
- 1a30: 60 0e 88 mov.w w0, 0x1cc
- 1a32: d0 01 a9 bclr.b 0x1d0, #0x0
- 1a34: 00 0f 2a mov.w #0xa0f0, w0
- 1a36: 00 0e 88 mov.w w0, 0x1c0
- 1a38: 4f 04 78 mov.w [--w15], w8
- 1a3a: 00 00 06 return
-
-00001a3c <_wdt_initialize>:
- 1a3c: 40 a7 a8 bset.b 0x740, #0x5
- 1a3e: 00 00 06 return
-
-00001a40 <_wdt_ping>:
- 1a40: 00 60 fe clrwdt
- 1a42: 00 00 06 return
-
-00001a44 <_wdt_finalize>:
- 1a44: 40 a7 a9 bclr.b 0x740, #0x5
- 1a46: 00 00 06 return
-Disassembly of section __FOSC:
-
-00f80000 <__FOSC>:
- f80000: ff ff 00 nop
-Disassembly of section __FWDT:
-
-00f80002 <__FWDT>:
- f80002: e3 7f 00 nop
-Disassembly of section __FBORPOR:
-
-00f80004 <__FBORPOR>:
- f80004: 7f fb 00 nop
-Disassembly of section .ivt:
-
-00000004 <.ivt>:
- 4: d0 1a 00 nop
- 6: d0 1a 00 nop
- 8: d0 1a 00 nop
- a: d0 1a 00 nop
- c: d0 1a 00 nop
- e: d0 1a 00 nop
- 10: d0 1a 00 nop
- 12: d0 1a 00 nop
- 14: d0 1a 00 nop
- 16: d0 1a 00 nop
- 18: d0 1a 00 nop
- 1a: 54 14 00 nop
- 1c: d0 1a 00 nop
- 1e: d0 1a 00 nop
- 20: d0 1a 00 nop
- 22: d0 1a 00 nop
- 24: d0 1a 00 nop
- 26: d0 1a 00 nop
- 28: d0 1a 00 nop
- 2a: d0 1a 00 nop
- 2c: d0 1a 00 nop
- 2e: d0 1a 00 nop
- 30: d0 1a 00 nop
- 32: d0 1a 00 nop
- 34: d0 1a 00 nop
- 36: d0 1a 00 nop
- 38: d0 1a 00 nop
- 3a: d0 1a 00 nop
- 3c: d0 1a 00 nop
- 3e: d0 1a 00 nop
- 40: d0 1a 00 nop
- 42: d0 1a 00 nop
- 44: d0 1a 00 nop
- 46: d0 1a 00 nop
- 48: d0 1a 00 nop
- 4a: d0 1a 00 nop
- 4c: d0 1a 00 nop
- 4e: d0 1a 00 nop
- 50: d0 1a 00 nop
- 52: d0 1a 00 nop
- 54: d0 1a 00 nop
- 56: d0 1a 00 nop
- 58: d0 1a 00 nop
- 5a: d0 1a 00 nop
- 5c: d0 1a 00 nop
- 5e: d0 1a 00 nop
- 60: d0 1a 00 nop
- 62: d0 1a 00 nop
- 64: 18 18 00 nop
- 66: d0 1a 00 nop
- 68: d0 1a 00 nop
- 6a: d0 1a 00 nop
- 6c: d0 1a 00 nop
- 6e: d0 1a 00 nop
- 70: d0 1a 00 nop
- 72: d0 1a 00 nop
- 74: d0 1a 00 nop
- 76: d0 1a 00 nop
- 78: d0 1a 00 nop
- 7a: d0 1a 00 nop
- 7c: d0 1a 00 nop
- 7e: d0 1a 00 nop
-Disassembly of section .aivt:
-
-00000084 <.aivt>:
- 84: d0 1a 00 nop
- 86: d0 1a 00 nop
- 88: d0 1a 00 nop
- 8a: d0 1a 00 nop
- 8c: d0 1a 00 nop
- 8e: d0 1a 00 nop
- 90: d0 1a 00 nop
- 92: d0 1a 00 nop
- 94: d0 1a 00 nop
- 96: d0 1a 00 nop
- 98: d0 1a 00 nop
- 9a: 54 14 00 nop
- 9c: d0 1a 00 nop
- 9e: d0 1a 00 nop
- a0: d0 1a 00 nop
- a2: d0 1a 00 nop
- a4: d0 1a 00 nop
- a6: d0 1a 00 nop
- a8: d0 1a 00 nop
- aa: d0 1a 00 nop
- ac: d0 1a 00 nop
- ae: d0 1a 00 nop
- b0: d0 1a 00 nop
- b2: d0 1a 00 nop
- b4: d0 1a 00 nop
- b6: d0 1a 00 nop
- b8: d0 1a 00 nop
- ba: d0 1a 00 nop
- bc: d0 1a 00 nop
- be: d0 1a 00 nop
- c0: d0 1a 00 nop
- c2: d0 1a 00 nop
- c4: d0 1a 00 nop
- c6: d0 1a 00 nop
- c8: d0 1a 00 nop
- ca: d0 1a 00 nop
- cc: d0 1a 00 nop
- ce: d0 1a 00 nop
- d0: d0 1a 00 nop
- d2: d0 1a 00 nop
- d4: d0 1a 00 nop
- d6: d0 1a 00 nop
- d8: d0 1a 00 nop
- da: d0 1a 00 nop
- dc: d0 1a 00 nop
- de: d0 1a 00 nop
- e0: d0 1a 00 nop
- e2: d0 1a 00 nop
- e4: 18 18 00 nop
- e6: d0 1a 00 nop
- e8: d0 1a 00 nop
- ea: d0 1a 00 nop
- ec: d0 1a 00 nop
- ee: d0 1a 00 nop
- f0: d0 1a 00 nop
- f2: d0 1a 00 nop
- f4: d0 1a 00 nop
- f6: d0 1a 00 nop
- f8: d0 1a 00 nop
- fa: d0 1a 00 nop
- fc: d0 1a 00 nop
- fe: d0 1a 00 nop
-Disassembly of section .const:
-
-00009a48 <.LC0>:
- 9a48: 44 41 .word 0x4144
- 9a4a: 45 4d .word 0x4d45
- 9a4c: 4f 4e .word 0x4e4f
- 9a4e: 00 00 .word 0
-
-00009a50 <.LC0>:
- 9a50: 49 44 .word 0x4449
- 9a52: 4c 45 .word 0x454c
- 9a54: 00 00 .word 0
-
-00009a56 <_xInitialStack.2713>:
- 9a56: 11 11 .word 0x1111
- 9a58: 22 22 .word 0x2222
- 9a5a: 33 33 .word 0x3333
- 9a5c: 44 44 .word 0x4444
- 9a5e: 55 55 .word 0x5555
- 9a60: 66 66 .word 0x6666
- 9a62: 77 77 .word 0x7777
- 9a64: 88 88 .word 0x8888
- 9a66: 99 99 .word 0x9999
- 9a68: aa aa .word 0xaaaa
- 9a6a: bb bb .word 0xbbbb
- 9a6c: cc cc .word 0xcccc
- 9a6e: dd dd .word 0xdddd
- 9a70: ee ee .word 0xeeee
- 9a72: ce cd .word 0xcdce
- 9a74: ac ab .word 0xabac
- 9a76: 02 02 .word 0x202
- 9a78: 03 03 .word 0x303
- 9a7a: 04 04 .word 0x404
- 9a7c: 05 05 .word 0x505
- 9a7e: 06 06 .word 0x606
- 9a80: 07 07 .word 0x707
- 9a82: 08 08 .word 0x808
- 9a84: 0a 09 .word 0x90a
- 9a86: 10 10 .word 0x1010
- 9a88: 10 11 .word 0x1110
- 9a8a: 12 12 .word 0x1212
-Disassembly of section .dinit:
-
-00001a8c <.dinit>:
- 1a8c: ba 0d 00 nop
- 1a8e: 02 00 00 nop
- 1a90: 02 00 00 nop
- 1a92: 00 00 00 nop
- 1a94: 06 0d 00 nop
- 1a96: 6c 00 00 nop
- 1a98: 00 00 00 nop
- 1a9a: bc 0d 00 nop
- 1a9c: 02 00 00 nop
- 1a9e: 02 00 00 nop
- 1aa0: 00 00 00 nop
- 1aa2: 72 0d 00 nop
- 1aa4: 36 00 00 nop
- 1aa6: 00 00 00 nop
- 1aa8: be 0d 00 nop
- 1aaa: 02 00 00 nop
- 1aac: 02 00 00 nop
- 1aae: ef 00 00 nop
- 1ab0: 00 08 00 nop
- 1ab2: 06 05 00 nop
- 1ab4: 00 00 00 nop
- 1ab6: a8 0d 00 nop
- 1ab8: 08 00 00 nop
- 1aba: 02 00 00 nop
- ...
- 1ac2: b0 0d 00 nop
- 1ac4: 06 00 00 nop
- 1ac6: 00 00 00 nop
- 1ac8: b6 0d 00 nop
- 1aca: 04 00 00 nop
- ...
-Disassembly of section .isr:
-
-00001ad0 <__DefaultInterrupt>:
- 1ad0: 00 00 fe reset
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-#include "croutine.h"\r
-\r
-/* Lists for ready and blocked co-routines. --------------------*/\r
-static xList pxReadyCoRoutineLists[ configMAX_CO_ROUTINE_PRIORITIES ]; /*< Prioritised ready co-routines. */\r
-static xList xDelayedCoRoutineList1; /*< Delayed co-routines. */\r
-static xList xDelayedCoRoutineList2; /*< Delayed co-routines (two lists are used - one for delays that have overflowed the current tick count. */\r
-static xList * pxDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used. */\r
-static xList * pxOverflowDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used to hold co-routines that have overflowed the current tick count. */\r
-static xList xPendingReadyList; /*< Holds co-routines that have been readied by an external event. They cannot be added directly to the ready lists as the ready lists cannot be accessed by interrupts. */\r
-\r
-/* Other file private variables. --------------------------------*/\r
-corCRCB * pxCurrentCoRoutine = NULL;\r
-static unsigned portBASE_TYPE uxTopCoRoutineReadyPriority = 0;\r
-static portTickType xCoRoutineTickCount = 0;\r
-\r
-/* The initial state of the co-routine when it is created. */\r
-#define corINITIAL_STATE ( 0 )\r
-\r
-/*\r
- * Place the co-routine represented by pxCRCB into the appropriate ready queue\r
- * for the priority. It is inserted at the end of the list.\r
- *\r
- * This macro accesses the co-routine ready lists and therefore must not be\r
- * used from within an ISR.\r
- */\r
-#define prvAddCoRoutineToReadyQueue( pxCRCB ) \\r
-{ \\r
- if( pxCRCB->uxPriority > uxTopCoRoutineReadyPriority ) \\r
- { \\r
- uxTopCoRoutineReadyPriority = pxCRCB->uxPriority; \\r
- } \\r
- vListInsertEnd( ( xList * ) &( pxReadyCoRoutineLists[ pxCRCB->uxPriority ] ), &( pxCRCB->xGenericListItem ) ); \\r
-} \r
-\r
-/*\r
- * Utility to ready all the lists used by the scheduler. This is called\r
- * automatically upon the creation of the first co-routine.\r
- */\r
-static void prvInitialiseCoRoutineLists( void );\r
-\r
-/*\r
- * Co-routines that are readied by an interrupt cannot be placed directly into\r
- * the ready lists (there is no mutual exclusion). Instead they are placed in\r
- * in the pending ready list in order that they can later be moved to the ready\r
- * list by the co-routine scheduler.\r
- */\r
-static inline void prvCheckPendingReadyList( void );\r
-\r
-/*\r
- * Macro that looks at the list of co-routines that are currently delayed to\r
- * see if any require waking.\r
- *\r
- * Co-routines are stored in the queue in the order of their wake time -\r
- * meaning once one co-routine has been found whose timer has not expired\r
- * we need not look any further down the list.\r
- */\r
-static inline void prvCheckDelayedList( void );\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, unsigned portBASE_TYPE uxPriority, unsigned portBASE_TYPE uxIndex )\r
-{\r
-signed portBASE_TYPE xReturn;\r
-corCRCB *pxCoRoutine;\r
-\r
- /* Allocate the memory that will store the co-routine control block. */\r
- pxCoRoutine = ( corCRCB * ) pvPortMalloc( sizeof( corCRCB ) );\r
- if( pxCoRoutine )\r
- {\r
- /* If pxCurrentCoRoutine is NULL then this is the first co-routine to\r
- be created and the co-routine data structures need initialising. */\r
- if( pxCurrentCoRoutine == NULL )\r
- {\r
- pxCurrentCoRoutine = pxCoRoutine;\r
- prvInitialiseCoRoutineLists();\r
- }\r
-\r
- /* Check the priority is within limits. */\r
- if( uxPriority >= configMAX_CO_ROUTINE_PRIORITIES )\r
- {\r
- uxPriority = configMAX_CO_ROUTINE_PRIORITIES - 1;\r
- }\r
-\r
- /* Fill out the co-routine control block from the function parameters. */\r
- pxCoRoutine->uxState = corINITIAL_STATE;\r
- pxCoRoutine->uxPriority = uxPriority;\r
- pxCoRoutine->uxIndex = uxIndex;\r
- pxCoRoutine->pxCoRoutineFunction = pxCoRoutineCode;\r
-\r
- /* Initialise all the other co-routine control block parameters. */\r
- vListInitialiseItem( &( pxCoRoutine->xGenericListItem ) );\r
- vListInitialiseItem( &( pxCoRoutine->xEventListItem ) );\r
-\r
- /* Set the co-routine control block as a link back from the xListItem.\r
- This is so we can get back to the containing CRCB from a generic item\r
- in a list. */\r
- listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xGenericListItem ), pxCoRoutine );\r
- listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine );\r
- \r
- /* Event lists are always in priority order. */\r
- listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) uxPriority );\r
- \r
- /* Now the co-routine has been initialised it can be added to the ready\r
- list at the correct priority. */\r
- prvAddCoRoutineToReadyQueue( pxCoRoutine );\r
-\r
- xReturn = pdPASS;\r
- }\r
- else\r
- { \r
- xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;\r
- }\r
- \r
- return xReturn; \r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vCoRoutineAddToDelayedList( portTickType xTicksToDelay, xList *pxEventList )\r
-{\r
-portTickType xTimeToWake;\r
-\r
- /* Calculate the time to wake - this may overflow but this is\r
- not a problem. */\r
- xTimeToWake = xCoRoutineTickCount + xTicksToDelay;\r
-\r
- /* We must remove ourselves from the ready list before adding\r
- ourselves to the blocked list as the same list item is used for\r
- both lists. */\r
- vListRemove( ( xListItem * ) &( pxCurrentCoRoutine->xGenericListItem ) );\r
-\r
- /* The list item will be inserted in wake time order. */\r
- listSET_LIST_ITEM_VALUE( &( pxCurrentCoRoutine->xGenericListItem ), xTimeToWake );\r
-\r
- if( xTimeToWake < xCoRoutineTickCount )\r
- {\r
- /* Wake time has overflowed. Place this item in the\r
- overflow list. */\r
- vListInsert( ( xList * ) pxOverflowDelayedCoRoutineList, ( xListItem * ) &( pxCurrentCoRoutine->xGenericListItem ) );\r
- }\r
- else\r
- {\r
- /* The wake time has not overflowed, so we can use the\r
- current block list. */\r
- vListInsert( ( xList * ) pxDelayedCoRoutineList, ( xListItem * ) &( pxCurrentCoRoutine->xGenericListItem ) );\r
- }\r
-\r
- if( pxEventList )\r
- {\r
- /* Also add the co-routine to an event list. If this is done then the\r
- function must be called with interrupts disabled. */\r
- vListInsert( pxEventList, &( pxCurrentCoRoutine->xEventListItem ) );\r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static inline void prvCheckPendingReadyList( void )\r
-{\r
- /* Are there any co-routines waiting to get moved to the ready list? These\r
- are co-routines that have been readied by an ISR. The ISR cannot access\r
- the ready lists itself. */\r
- while( !listLIST_IS_EMPTY( &xPendingReadyList ) )\r
- {\r
- corCRCB *pxUnblockedCRCB;\r
-\r
- /* The pending ready list can be accessed by an ISR. */\r
- portDISABLE_INTERRUPTS();\r
- { \r
- pxUnblockedCRCB = ( corCRCB * ) listGET_OWNER_OF_HEAD_ENTRY( (&xPendingReadyList) ); \r
- vListRemove( &( pxUnblockedCRCB->xEventListItem ) );\r
- }\r
- portENABLE_INTERRUPTS();\r
-\r
- vListRemove( &( pxUnblockedCRCB->xGenericListItem ) );\r
- prvAddCoRoutineToReadyQueue( pxUnblockedCRCB ); \r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static inline void prvCheckDelayedList( void )\r
-{\r
-static portTickType xLastTickCount, xPassedTicks;\r
-corCRCB *pxCRCB;\r
-\r
- xPassedTicks = xTaskGetTickCount() - xLastTickCount;\r
- while( xPassedTicks )\r
- {\r
- xCoRoutineTickCount++;\r
- xPassedTicks--;\r
-\r
- /* If the tick count has overflowed we need to swap the ready lists. */\r
- if( xCoRoutineTickCount == 0 )\r
- {\r
- xList * pxTemp;\r
-\r
- /* Tick count has overflowed so we need to swap the delay lists. If there are\r
- any items in pxDelayedCoRoutineList here then there is an error! */\r
- pxTemp = pxDelayedCoRoutineList;\r
- pxDelayedCoRoutineList = pxOverflowDelayedCoRoutineList;\r
- pxOverflowDelayedCoRoutineList = pxTemp;\r
- }\r
-\r
- /* See if this tick has made a timeout expire. */\r
- while( ( pxCRCB = ( corCRCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedCoRoutineList ) ) != NULL )\r
- { \r
- if( xCoRoutineTickCount < listGET_LIST_ITEM_VALUE( &( pxCRCB->xGenericListItem ) ) ) \r
- { \r
- /* Timeout not yet expired. */ \r
- break; \r
- } \r
-\r
- portDISABLE_INTERRUPTS();\r
- {\r
- /* The event could have occurred just before this critical\r
- section. If this is the case then the generic list item will\r
- have been moved to the pending ready list and the following\r
- line is still valid. Also the pvContainer parameter will have\r
- been set to NULL so the following lines are also valid. */\r
- vListRemove( &( pxCRCB->xGenericListItem ) ); \r
-\r
- /* Is the co-routine waiting on an event also? */ \r
- if( pxCRCB->xEventListItem.pvContainer ) \r
- { \r
- vListRemove( &( pxCRCB->xEventListItem ) ); \r
- }\r
- }\r
- portENABLE_INTERRUPTS();\r
-\r
- prvAddCoRoutineToReadyQueue( pxCRCB ); \r
- } \r
- }\r
-\r
- xLastTickCount = xCoRoutineTickCount;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vCoRoutineSchedule( void )\r
-{\r
- /* See if any co-routines readied by events need moving to the ready lists. */\r
- prvCheckPendingReadyList();\r
-\r
- /* See if any delayed co-routines have timed out. */\r
- prvCheckDelayedList();\r
-\r
- /* Find the highest priority queue that contains ready co-routines. */\r
- while( listLIST_IS_EMPTY( &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ) )\r
- {\r
- if( uxTopCoRoutineReadyPriority == 0 )\r
- {\r
- /* No more co-routines to check. */\r
- return;\r
- }\r
- --uxTopCoRoutineReadyPriority;\r
- }\r
-\r
- /* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the co-routines\r
- of the same priority get an equal share of the processor time. */\r
- listGET_OWNER_OF_NEXT_ENTRY( pxCurrentCoRoutine, &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) );\r
-\r
- /* Call the co-routine. */\r
- ( pxCurrentCoRoutine->pxCoRoutineFunction )( pxCurrentCoRoutine, pxCurrentCoRoutine->uxIndex );\r
-\r
- return;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvInitialiseCoRoutineLists( void )\r
-{\r
-unsigned portBASE_TYPE uxPriority;\r
-\r
- for( uxPriority = 0; uxPriority < configMAX_CO_ROUTINE_PRIORITIES; uxPriority++ )\r
- {\r
- vListInitialise( ( xList * ) &( pxReadyCoRoutineLists[ uxPriority ] ) );\r
- }\r
-\r
- vListInitialise( ( xList * ) &xDelayedCoRoutineList1 );\r
- vListInitialise( ( xList * ) &xDelayedCoRoutineList2 );\r
- vListInitialise( ( xList * ) &xPendingReadyList );\r
-\r
- /* Start with pxDelayedCoRoutineList using list1 and the\r
- pxOverflowDelayedCoRoutineList using list2. */\r
- pxDelayedCoRoutineList = &xDelayedCoRoutineList1;\r
- pxOverflowDelayedCoRoutineList = &xDelayedCoRoutineList2;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xCoRoutineRemoveFromEventList( const xList *pxEventList )\r
-{\r
-corCRCB *pxUnblockedCRCB;\r
-signed portBASE_TYPE xReturn;\r
-\r
- /* This function is called from within an interrupt. It can only access\r
- event lists and the pending ready list. */\r
- pxUnblockedCRCB = ( corCRCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList );\r
- vListRemove( &( pxUnblockedCRCB->xEventListItem ) );\r
- vListInsertEnd( ( xList * ) &( xPendingReadyList ), &( pxUnblockedCRCB->xEventListItem ) );\r
-\r
- if( pxUnblockedCRCB->uxPriority >= pxCurrentCoRoutine->uxPriority )\r
- {\r
- xReturn = pdTRUE;\r
- }\r
- else\r
- {\r
- xReturn = pdFALSE;\r
- }\r
-\r
- return xReturn;\r
-}\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-#ifndef INC_FREERTOS_H\r
-#define INC_FREERTOS_H\r
-\r
-\r
-/*\r
- * Include the generic headers required for the FreeRTOS port being used.\r
- */\r
-#include <stddef.h>\r
-\r
-/* Basic FreeRTOS definitions. */\r
-#include "projdefs.h"\r
-\r
-/* Application specific configuration options. */\r
-#include "FreeRTOSConfig.h"\r
-\r
-/* Definitions specific to the port being used. */\r
-#include "portable.h"\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*\r
- * Check all the required application specific macros have been defined.\r
- * These macros are application specific and (as downloaded) are defined\r
- * within FreeRTOSConfig.h.\r
- */\r
-\r
-#ifndef configUSE_PREEMPTION\r
- #error Missing definition: configUSE_PREEMPTION should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef configUSE_IDLE_HOOK\r
- #error Missing definition: configUSE_IDLE_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef configUSE_TICK_HOOK\r
- #error Missing definition: configUSE_TICK_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef configUSE_CO_ROUTINES\r
- #error Missing definition: configUSE_CO_ROUTINES should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef INCLUDE_vTaskPrioritySet\r
- #error Missing definition: INCLUDE_vTaskPrioritySet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef INCLUDE_uxTaskPriorityGet\r
- #error Missing definition: INCLUDE_uxTaskPriorityGet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef INCLUDE_vTaskDelete \r
- #error Missing definition: INCLUDE_vTaskDelete should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef INCLUDE_vTaskCleanUpResources\r
- #error Missing definition: INCLUDE_vTaskCleanUpResources should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef INCLUDE_vTaskSuspend \r
- #error Missing definition: INCLUDE_vTaskSuspend should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef INCLUDE_vTaskDelayUntil\r
- #error Missing definition: INCLUDE_vTaskDelayUntil should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef INCLUDE_vTaskDelay\r
- #error Missing definition: INCLUDE_vTaskDelay should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef configUSE_16_BIT_TICKS\r
- #error Missing definition: configUSE_16_BIT_TICKS should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details.\r
-#endif\r
-\r
-#ifndef configUSE_RECURSIVE_MUTEXES\r
- #define configUSE_RECURSIVE_MUTEXES 0\r
-#endif\r
-\r
-#ifndef configUSE_MUTEXES\r
- #define configUSE_MUTEXES 0\r
-#endif\r
-\r
-#ifndef configUSE_COUNTING_SEMAPHORES\r
- #define configUSE_COUNTING_SEMAPHORES 0\r
-#endif\r
-\r
-#ifndef configUSE_ALTERNATIVE_API\r
- #define configUSE_ALTERNATIVE_API 0\r
-#endif\r
-\r
-#if ( configUSE_MUTEXES == 1 )\r
- /* xTaskGetCurrentTaskHandle is used by the priority inheritance mechanism\r
- within the mutex implementation so must be available if mutexes are used. */\r
- #undef INCLUDE_xTaskGetCurrentTaskHandle\r
- #define INCLUDE_xTaskGetCurrentTaskHandle 1\r
-#else\r
- #ifndef INCLUDE_xTaskGetCurrentTaskHandle\r
- #define INCLUDE_xTaskGetCurrentTaskHandle 0\r
- #endif\r
-#endif\r
-\r
-#endif /* INC_FREERTOS_H */\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-#ifndef CO_ROUTINE_H\r
-#define CO_ROUTINE_H\r
-\r
-#include "list.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* Used to hide the implementation of the co-routine control block. The\r
-control block structure however has to be included in the header due to\r
-the macro implementation of the co-routine functionality. */\r
-typedef void * xCoRoutineHandle;\r
-\r
-/* Defines the prototype to which co-routine functions must conform. */\r
-typedef void (*crCOROUTINE_CODE)( xCoRoutineHandle, unsigned portBASE_TYPE );\r
-\r
-typedef struct corCoRoutineControlBlock\r
-{\r
- crCOROUTINE_CODE pxCoRoutineFunction;\r
- xListItem xGenericListItem; /*< List item used to place the CRCB in ready and blocked queues. */\r
- xListItem xEventListItem; /*< List item used to place the CRCB in event lists. */\r
- unsigned portBASE_TYPE uxPriority; /*< The priority of the co-routine in relation to other co-routines. */\r
- unsigned portBASE_TYPE uxIndex; /*< Used to distinguish between co-routines when multiple co-routines use the same co-routine function. */\r
- unsigned portSHORT uxState; /*< Used internally by the co-routine implementation. */\r
-} corCRCB; /* Co-routine control block. Note must be identical in size down to uxPriority with tskTCB. */\r
-\r
-/**\r
- * croutine. h\r
- *<pre>\r
- portBASE_TYPE xCoRoutineCreate(\r
- crCOROUTINE_CODE pxCoRoutineCode,\r
- unsigned portBASE_TYPE uxPriority,\r
- unsigned portBASE_TYPE uxIndex\r
- );</pre>\r
- *\r
- * Create a new co-routine and add it to the list of co-routines that are\r
- * ready to run.\r
- *\r
- * @param pxCoRoutineCode Pointer to the co-routine function. Co-routine\r
- * functions require special syntax - see the co-routine section of the WEB\r
- * documentation for more information.\r
- *\r
- * @param uxPriority The priority with respect to other co-routines at which\r
- * the co-routine will run.\r
- *\r
- * @param uxIndex Used to distinguish between different co-routines that\r
- * execute the same function. See the example below and the co-routine section\r
- * of the WEB documentation for further information.\r
- *\r
- * @return pdPASS if the co-routine was successfully created and added to a ready\r
- * list, otherwise an error code defined with ProjDefs.h.\r
- *\r
- * Example usage:\r
- <pre>\r
- // Co-routine to be created.\r
- void vFlashCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- // Variables in co-routines must be declared static if they must maintain value across a blocking call.\r
- // This may not be necessary for const variables.\r
- static const char cLedToFlash[ 2 ] = { 5, 6 };\r
- static const portTickType xTimeToDelay[ 2 ] = { 200, 400 };\r
-\r
- // Must start every co-routine with a call to crSTART();\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // This co-routine just delays for a fixed period, then toggles\r
- // an LED. Two co-routines are created using this function, so\r
- // the uxIndex parameter is used to tell the co-routine which\r
- // LED to flash and how long to delay. This assumes xQueue has\r
- // already been created.\r
- vParTestToggleLED( cLedToFlash[ uxIndex ] );\r
- crDELAY( xHandle, uxFlashRates[ uxIndex ] );\r
- }\r
-\r
- // Must end every co-routine with a call to crEND();\r
- crEND();\r
- }\r
-\r
- // Function that creates two co-routines.\r
- void vOtherFunction( void )\r
- {\r
- unsigned char ucParameterToPass;\r
- xTaskHandle xHandle;\r
- \r
- // Create two co-routines at priority 0. The first is given index 0\r
- // so (from the code above) toggles LED 5 every 200 ticks. The second\r
- // is given index 1 so toggles LED 6 every 400 ticks.\r
- for( uxIndex = 0; uxIndex < 2; uxIndex++ )\r
- {\r
- xCoRoutineCreate( vFlashCoRoutine, 0, uxIndex );\r
- }\r
- }\r
- </pre>\r
- * \defgroup xCoRoutineCreate xCoRoutineCreate\r
- * \ingroup Tasks\r
- */\r
-signed portBASE_TYPE xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, unsigned portBASE_TYPE uxPriority, unsigned portBASE_TYPE uxIndex );\r
-\r
-\r
-/**\r
- * croutine. h\r
- *<pre>\r
- void vCoRoutineSchedule( void );</pre>\r
- *\r
- * Run a co-routine.\r
- *\r
- * vCoRoutineSchedule() executes the highest priority co-routine that is able\r
- * to run. The co-routine will execute until it either blocks, yields or is\r
- * preempted by a task. Co-routines execute cooperatively so one\r
- * co-routine cannot be preempted by another, but can be preempted by a task.\r
- *\r
- * If an application comprises of both tasks and co-routines then\r
- * vCoRoutineSchedule should be called from the idle task (in an idle task\r
- * hook).\r
- *\r
- * Example usage:\r
- <pre>\r
- // This idle task hook will schedule a co-routine each time it is called.\r
- // The rest of the idle task will execute between co-routine calls.\r
- void vApplicationIdleHook( void )\r
- {\r
- vCoRoutineSchedule();\r
- }\r
-\r
- // Alternatively, if you do not require any other part of the idle task to\r
- // execute, the idle task hook can call vCoRoutineScheduler() within an\r
- // infinite loop.\r
- void vApplicationIdleHook( void )\r
- {\r
- for( ;; )\r
- {\r
- vCoRoutineSchedule();\r
- }\r
- }\r
- </pre>\r
- * \defgroup vCoRoutineSchedule vCoRoutineSchedule\r
- * \ingroup Tasks\r
- */\r
-void vCoRoutineSchedule( void );\r
-\r
-/**\r
- * croutine. h\r
- * <pre>\r
- crSTART( xCoRoutineHandle xHandle );</pre>\r
- *\r
- * This macro MUST always be called at the start of a co-routine function.\r
- *\r
- * Example usage:\r
- <pre>\r
- // Co-routine to be created.\r
- void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- // Variables in co-routines must be declared static if they must maintain value across a blocking call.\r
- static portLONG ulAVariable;\r
-\r
- // Must start every co-routine with a call to crSTART();\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // Co-routine functionality goes here.\r
- }\r
-\r
- // Must end every co-routine with a call to crEND();\r
- crEND();\r
- }</pre>\r
- * \defgroup crSTART crSTART\r
- * \ingroup Tasks\r
- */\r
-#define crSTART( pxCRCB ) switch( ( ( corCRCB * )pxCRCB )->uxState ) { case 0:\r
-\r
-/**\r
- * croutine. h\r
- * <pre>\r
- crEND();</pre>\r
- *\r
- * This macro MUST always be called at the end of a co-routine function.\r
- *\r
- * Example usage:\r
- <pre>\r
- // Co-routine to be created.\r
- void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- // Variables in co-routines must be declared static if they must maintain value across a blocking call.\r
- static portLONG ulAVariable;\r
-\r
- // Must start every co-routine with a call to crSTART();\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // Co-routine functionality goes here.\r
- }\r
-\r
- // Must end every co-routine with a call to crEND();\r
- crEND();\r
- }</pre>\r
- * \defgroup crSTART crSTART\r
- * \ingroup Tasks\r
- */\r
-#define crEND() }\r
-\r
-/*\r
- * These macros are intended for internal use by the co-routine implementation\r
- * only. The macros should not be used directly by application writers.\r
- */\r
-#define crSET_STATE0( xHandle ) ( ( corCRCB * )xHandle)->uxState = (__LINE__ * 2); return; case (__LINE__ * 2):\r
-#define crSET_STATE1( xHandle ) ( ( corCRCB * )xHandle)->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1):\r
-\r
-/**\r
- * croutine. h\r
- *<pre>\r
- crDELAY( xCoRoutineHandle xHandle, portTickType xTicksToDelay );</pre>\r
- *\r
- * Delay a co-routine for a fixed period of time.\r
- *\r
- * crDELAY can only be called from the co-routine function itself - not\r
- * from within a function called by the co-routine function. This is because\r
- * co-routines do not maintain their own stack.\r
- *\r
- * @param xHandle The handle of the co-routine to delay. This is the xHandle\r
- * parameter of the co-routine function.\r
- *\r
- * @param xTickToDelay The number of ticks that the co-routine should delay\r
- * for. The actual amount of time this equates to is defined by\r
- * configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant portTICK_RATE_MS\r
- * can be used to convert ticks to milliseconds.\r
- *\r
- * Example usage:\r
- <pre>\r
- // Co-routine to be created.\r
- void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- // Variables in co-routines must be declared static if they must maintain value across a blocking call.\r
- // This may not be necessary for const variables.\r
- // We are to delay for 200ms.\r
- static const xTickType xDelayTime = 200 / portTICK_RATE_MS;\r
-\r
- // Must start every co-routine with a call to crSTART();\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // Delay for 200ms.\r
- crDELAY( xHandle, xDelayTime );\r
-\r
- // Do something here.\r
- }\r
-\r
- // Must end every co-routine with a call to crEND();\r
- crEND();\r
- }</pre>\r
- * \defgroup crDELAY crDELAY\r
- * \ingroup Tasks\r
- */\r
-#define crDELAY( xHandle, xTicksToDelay ) \\r
- if( xTicksToDelay > 0 ) \\r
- { \\r
- vCoRoutineAddToDelayedList( xTicksToDelay, NULL ); \\r
- } \\r
- crSET_STATE0( xHandle );\r
-\r
-/**\r
- * <pre>\r
- crQUEUE_SEND(\r
- xCoRoutineHandle xHandle,\r
- xQueueHandle pxQueue,\r
- void *pvItemToQueue,\r
- portTickType xTicksToWait,\r
- portBASE_TYPE *pxResult\r
- )</pre>\r
- *\r
- * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine\r
- * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks.\r
- *\r
- * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas\r
- * xQueueSend() and xQueueReceive() can only be used from tasks.\r
- *\r
- * crQUEUE_SEND can only be called from the co-routine function itself - not\r
- * from within a function called by the co-routine function. This is because\r
- * co-routines do not maintain their own stack.\r
- *\r
- * See the co-routine section of the WEB documentation for information on\r
- * passing data between tasks and co-routines and between ISR's and\r
- * co-routines.\r
- *\r
- * @param xHandle The handle of the calling co-routine. This is the xHandle\r
- * parameter of the co-routine function.\r
- *\r
- * @param pxQueue The handle of the queue on which the data will be posted.\r
- * The handle is obtained as the return value when the queue is created using\r
- * the xQueueCreate() API function.\r
- *\r
- * @param pvItemToQueue A pointer to the data being posted onto the queue.\r
- * The number of bytes of each queued item is specified when the queue is\r
- * created. This number of bytes is copied from pvItemToQueue into the queue\r
- * itself.\r
- *\r
- * @param xTickToDelay The number of ticks that the co-routine should block\r
- * to wait for space to become available on the queue, should space not be\r
- * available immediately. The actual amount of time this equates to is defined\r
- * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant\r
- * portTICK_RATE_MS can be used to convert ticks to milliseconds (see example\r
- * below).\r
- *\r
- * @param pxResult The variable pointed to by pxResult will be set to pdPASS if\r
- * data was successfully posted onto the queue, otherwise it will be set to an\r
- * error defined within ProjDefs.h.\r
- *\r
- * Example usage:\r
- <pre>\r
- // Co-routine function that blocks for a fixed period then posts a number onto\r
- // a queue.\r
- static void prvCoRoutineFlashTask( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- // Variables in co-routines must be declared static if they must maintain value across a blocking call.\r
- static portBASE_TYPE xNumberToPost = 0;\r
- static portBASE_TYPE xResult;\r
-\r
- // Co-routines must begin with a call to crSTART().\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // This assumes the queue has already been created.\r
- crQUEUE_SEND( xHandle, xCoRoutineQueue, &xNumberToPost, NO_DELAY, &xResult );\r
-\r
- if( xResult != pdPASS )\r
- {\r
- // The message was not posted!\r
- }\r
-\r
- // Increment the number to be posted onto the queue.\r
- xNumberToPost++;\r
-\r
- // Delay for 100 ticks.\r
- crDELAY( xHandle, 100 );\r
- }\r
-\r
- // Co-routines must end with a call to crEND().\r
- crEND();\r
- }</pre>\r
- * \defgroup crQUEUE_SEND crQUEUE_SEND\r
- * \ingroup Tasks\r
- */\r
-#define crQUEUE_SEND( xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult ) \\r
-{ \\r
- *pxResult = xQueueCRSend( pxQueue, pvItemToQueue, xTicksToWait ); \\r
- if( *pxResult == errQUEUE_BLOCKED ) \\r
- { \\r
- crSET_STATE0( xHandle ); \\r
- *pxResult = xQueueCRSend( pxQueue, pvItemToQueue, 0 ); \\r
- } \\r
- if( *pxResult == errQUEUE_YIELD ) \\r
- { \\r
- crSET_STATE1( xHandle ); \\r
- *pxResult = pdPASS; \\r
- } \\r
-}\r
-\r
-/**\r
- * croutine. h\r
- * <pre>\r
- crQUEUE_RECEIVE(\r
- xCoRoutineHandle xHandle,\r
- xQueueHandle pxQueue,\r
- void *pvBuffer,\r
- portTickType xTicksToWait,\r
- portBASE_TYPE *pxResult\r
- )</pre>\r
- *\r
- * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine\r
- * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks.\r
- *\r
- * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas\r
- * xQueueSend() and xQueueReceive() can only be used from tasks.\r
- *\r
- * crQUEUE_RECEIVE can only be called from the co-routine function itself - not\r
- * from within a function called by the co-routine function. This is because\r
- * co-routines do not maintain their own stack.\r
- *\r
- * See the co-routine section of the WEB documentation for information on\r
- * passing data between tasks and co-routines and between ISR's and\r
- * co-routines.\r
- *\r
- * @param xHandle The handle of the calling co-routine. This is the xHandle\r
- * parameter of the co-routine function.\r
- *\r
- * @param pxQueue The handle of the queue from which the data will be received.\r
- * The handle is obtained as the return value when the queue is created using\r
- * the xQueueCreate() API function.\r
- *\r
- * @param pvBuffer The buffer into which the received item is to be copied.\r
- * The number of bytes of each queued item is specified when the queue is\r
- * created. This number of bytes is copied into pvBuffer.\r
- *\r
- * @param xTickToDelay The number of ticks that the co-routine should block\r
- * to wait for data to become available from the queue, should data not be\r
- * available immediately. The actual amount of time this equates to is defined\r
- * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant\r
- * portTICK_RATE_MS can be used to convert ticks to milliseconds (see the\r
- * crQUEUE_SEND example).\r
- *\r
- * @param pxResult The variable pointed to by pxResult will be set to pdPASS if\r
- * data was successfully retrieved from the queue, otherwise it will be set to\r
- * an error code as defined within ProjDefs.h.\r
- *\r
- * Example usage:\r
- <pre>\r
- // A co-routine receives the number of an LED to flash from a queue. It\r
- // blocks on the queue until the number is received.\r
- static void prvCoRoutineFlashWorkTask( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- // Variables in co-routines must be declared static if they must maintain value across a blocking call.\r
- static portBASE_TYPE xResult;\r
- static unsigned portBASE_TYPE uxLEDToFlash;\r
-\r
- // All co-routines must start with a call to crSTART().\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // Wait for data to become available on the queue.\r
- crQUEUE_RECEIVE( xHandle, xCoRoutineQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );\r
-\r
- if( xResult == pdPASS )\r
- {\r
- // We received the LED to flash - flash it!\r
- vParTestToggleLED( uxLEDToFlash );\r
- }\r
- }\r
-\r
- crEND();\r
- }</pre>\r
- * \defgroup crQUEUE_RECEIVE crQUEUE_RECEIVE\r
- * \ingroup Tasks\r
- */\r
-#define crQUEUE_RECEIVE( xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult ) \\r
-{ \\r
- *pxResult = xQueueCRReceive( pxQueue, pvBuffer, xTicksToWait ); \\r
- if( *pxResult == errQUEUE_BLOCKED ) \\r
- { \\r
- crSET_STATE0( xHandle ); \\r
- *pxResult = xQueueCRReceive( pxQueue, pvBuffer, 0 ); \\r
- } \\r
- if( *pxResult == errQUEUE_YIELD ) \\r
- { \\r
- crSET_STATE1( xHandle ); \\r
- *pxResult = pdPASS; \\r
- } \\r
-}\r
-\r
-/**\r
- * croutine. h\r
- * <pre>\r
- crQUEUE_SEND_FROM_ISR(\r
- xQueueHandle pxQueue,\r
- void *pvItemToQueue,\r
- portBASE_TYPE xCoRoutinePreviouslyWoken\r
- )</pre>\r
- *\r
- * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the\r
- * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR()\r
- * functions used by tasks.\r
- *\r
- * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to\r
- * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and\r
- * xQueueReceiveFromISR() can only be used to pass data between a task and and\r
- * ISR.\r
- *\r
- * crQUEUE_SEND_FROM_ISR can only be called from an ISR to send data to a queue\r
- * that is being used from within a co-routine.\r
- *\r
- * See the co-routine section of the WEB documentation for information on\r
- * passing data between tasks and co-routines and between ISR's and\r
- * co-routines.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param xCoRoutinePreviouslyWoken This is included so an ISR can post onto\r
- * the same queue multiple times from a single interrupt. The first call\r
- * should always pass in pdFALSE. Subsequent calls should pass in\r
- * the value returned from the previous call.\r
- *\r
- * @return pdTRUE if a co-routine was woken by posting onto the queue. This is\r
- * used by the ISR to determine if a context switch may be required following\r
- * the ISR.\r
- *\r
- * Example usage:\r
- <pre>\r
- // A co-routine that blocks on a queue waiting for characters to be received.\r
- static void vReceivingCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- portCHAR cRxedChar;\r
- portBASE_TYPE xResult;\r
-\r
- // All co-routines must start with a call to crSTART().\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // Wait for data to become available on the queue. This assumes the\r
- // queue xCommsRxQueue has already been created!\r
- crQUEUE_RECEIVE( xHandle, xCommsRxQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );\r
-\r
- // Was a character received?\r
- if( xResult == pdPASS )\r
- {\r
- // Process the character here.\r
- }\r
- }\r
-\r
- // All co-routines must end with a call to crEND().\r
- crEND();\r
- }\r
-\r
- // An ISR that uses a queue to send characters received on a serial port to\r
- // a co-routine.\r
- void vUART_ISR( void )\r
- {\r
- portCHAR cRxedChar;\r
- portBASE_TYPE xCRWokenByPost = pdFALSE;\r
-\r
- // We loop around reading characters until there are none left in the UART.\r
- while( UART_RX_REG_NOT_EMPTY() )\r
- {\r
- // Obtain the character from the UART.\r
- cRxedChar = UART_RX_REG;\r
-\r
- // Post the character onto a queue. xCRWokenByPost will be pdFALSE\r
- // the first time around the loop. If the post causes a co-routine\r
- // to be woken (unblocked) then xCRWokenByPost will be set to pdTRUE.\r
- // In this manner we can ensure that if more than one co-routine is\r
- // blocked on the queue only one is woken by this ISR no matter how\r
- // many characters are posted to the queue.\r
- xCRWokenByPost = crQUEUE_SEND_FROM_ISR( xCommsRxQueue, &cRxedChar, xCRWokenByPost );\r
- }\r
- }</pre>\r
- * \defgroup crQUEUE_SEND_FROM_ISR crQUEUE_SEND_FROM_ISR\r
- * \ingroup Tasks\r
- */\r
-#define crQUEUE_SEND_FROM_ISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken ) xQueueCRSendFromISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken )\r
-\r
-\r
-/**\r
- * croutine. h\r
- * <pre>\r
- crQUEUE_SEND_FROM_ISR(\r
- xQueueHandle pxQueue,\r
- void *pvBuffer,\r
- portBASE_TYPE * pxCoRoutineWoken\r
- )</pre>\r
- *\r
- * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the\r
- * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR()\r
- * functions used by tasks.\r
- *\r
- * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to\r
- * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and\r
- * xQueueReceiveFromISR() can only be used to pass data between a task and and\r
- * ISR.\r
- *\r
- * crQUEUE_RECEIVE_FROM_ISR can only be called from an ISR to receive data\r
- * from a queue that is being used from within a co-routine (a co-routine\r
- * posted to the queue).\r
- *\r
- * See the co-routine section of the WEB documentation for information on\r
- * passing data between tasks and co-routines and between ISR's and\r
- * co-routines.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvBuffer A pointer to a buffer into which the received item will be\r
- * placed. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from the queue into\r
- * pvBuffer.\r
- *\r
- * @param pxCoRoutineWoken A co-routine may be blocked waiting for space to become\r
- * available on the queue. If crQUEUE_RECEIVE_FROM_ISR causes such a\r
- * co-routine to unblock *pxCoRoutineWoken will get set to pdTRUE, otherwise\r
- * *pxCoRoutineWoken will remain unchanged.\r
- *\r
- * @return pdTRUE an item was successfully received from the queue, otherwise\r
- * pdFALSE.\r
- *\r
- * Example usage:\r
- <pre>\r
- // A co-routine that posts a character to a queue then blocks for a fixed\r
- // period. The character is incremented each time.\r
- static void vSendingCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )\r
- {\r
- // cChar holds its value while this co-routine is blocked and must therefore\r
- // be declared static.\r
- static portCHAR cCharToTx = 'a';\r
- portBASE_TYPE xResult;\r
-\r
- // All co-routines must start with a call to crSTART().\r
- crSTART( xHandle );\r
-\r
- for( ;; )\r
- {\r
- // Send the next character to the queue.\r
- crQUEUE_SEND( xHandle, xCoRoutineQueue, &cCharToTx, NO_DELAY, &xResult );\r
-\r
- if( xResult == pdPASS )\r
- {\r
- // The character was successfully posted to the queue.\r
- }\r
- else\r
- {\r
- // Could not post the character to the queue.\r
- }\r
-\r
- // Enable the UART Tx interrupt to cause an interrupt in this\r
- // hypothetical UART. The interrupt will obtain the character\r
- // from the queue and send it.\r
- ENABLE_RX_INTERRUPT();\r
-\r
- // Increment to the next character then block for a fixed period.\r
- // cCharToTx will maintain its value across the delay as it is\r
- // declared static.\r
- cCharToTx++;\r
- if( cCharToTx > 'x' )\r
- {\r
- cCharToTx = 'a';\r
- }\r
- crDELAY( 100 );\r
- }\r
-\r
- // All co-routines must end with a call to crEND().\r
- crEND();\r
- }\r
-\r
- // An ISR that uses a queue to receive characters to send on a UART.\r
- void vUART_ISR( void )\r
- {\r
- portCHAR cCharToTx;\r
- portBASE_TYPE xCRWokenByPost = pdFALSE;\r
-\r
- while( UART_TX_REG_EMPTY() )\r
- {\r
- // Are there any characters in the queue waiting to be sent?\r
- // xCRWokenByPost will automatically be set to pdTRUE if a co-routine\r
- // is woken by the post - ensuring that only a single co-routine is\r
- // woken no matter how many times we go around this loop.\r
- if( crQUEUE_RECEIVE_FROM_ISR( pxQueue, &cCharToTx, &xCRWokenByPost ) )\r
- {\r
- SEND_CHARACTER( cCharToTx );\r
- }\r
- }\r
- }</pre>\r
- * \defgroup crQUEUE_RECEIVE_FROM_ISR crQUEUE_RECEIVE_FROM_ISR\r
- * \ingroup Tasks\r
- */\r
-#define crQUEUE_RECEIVE_FROM_ISR( pxQueue, pvBuffer, pxCoRoutineWoken ) xQueueCRReceiveFromISR( pxQueue, pvBuffer, pxCoRoutineWoken )\r
-\r
-/*\r
- * This function is intended for internal use by the co-routine macros only.\r
- * The macro nature of the co-routine implementation requires that the\r
- * prototype appears here. The function should not be used by application\r
- * writers.\r
- *\r
- * Removes the current co-routine from its ready list and places it in the\r
- * appropriate delayed list.\r
- */\r
-void vCoRoutineAddToDelayedList( portTickType xTicksToDelay, xList *pxEventList );\r
-\r
-/*\r
- * This function is intended for internal use by the queue implementation only.\r
- * The function should not be used by application writers.\r
- *\r
- * Removes the highest priority co-routine from the event list and places it in\r
- * the pending ready list.\r
- */\r
-signed portBASE_TYPE xCoRoutineRemoveFromEventList( const xList *pxEventList );\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* CO_ROUTINE_H */\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/*\r
- * This is the list implementation used by the scheduler. While it is tailored\r
- * heavily for the schedulers needs, it is also available for use by\r
- * application code.\r
- *\r
- * xLists can only store pointers to xListItems. Each xListItem contains a\r
- * numeric value (xItemValue). Most of the time the lists are sorted in\r
- * descending item value order.\r
- *\r
- * Lists are created already containing one list item. The value of this\r
- * item is the maximum possible that can be stored, it is therefore always at\r
- * the end of the list and acts as a marker. The list member pxHead always\r
- * points to this marker - even though it is at the tail of the list. This\r
- * is because the tail contains a wrap back pointer to the true head of\r
- * the list.\r
- *\r
- * In addition to it's value, each list item contains a pointer to the next\r
- * item in the list (pxNext), a pointer to the list it is in (pxContainer)\r
- * and a pointer to back to the object that contains it. These later two\r
- * pointers are included for efficiency of list manipulation. There is\r
- * effectively a two way link between the object containing the list item and\r
- * the list item itself.\r
- *\r
- *\r
- * \page ListIntroduction List Implementation\r
- * \ingroup FreeRTOSIntro\r
- */\r
-\r
-/*\r
- Changes from V4.3.1\r
-\r
- + Included local const within listGET_OWNER_OF_NEXT_ENTRY() to assist\r
- compiler with optimisation. Thanks B.R.\r
-*/\r
-\r
-#ifndef LIST_H\r
-#define LIST_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-/*\r
- * Definition of the only type of object that a list can contain.\r
- */\r
-struct xLIST_ITEM\r
-{\r
- portTickType xItemValue; /*< The value being listed. In most cases this is used to sort the list in descending order. */\r
- volatile struct xLIST_ITEM * pxNext; /*< Pointer to the next xListItem in the list. */\r
- volatile struct xLIST_ITEM * pxPrevious;/*< Pointer to the previous xListItem in the list. */\r
- void * pvOwner; /*< Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */\r
- void * pvContainer; /*< Pointer to the list in which this list item is placed (if any). */\r
-};\r
-typedef struct xLIST_ITEM xListItem; /* For some reason lint wants this as two separate definitions. */\r
-\r
-struct xMINI_LIST_ITEM\r
-{\r
- portTickType xItemValue;\r
- volatile struct xLIST_ITEM *pxNext;\r
- volatile struct xLIST_ITEM *pxPrevious;\r
-};\r
-typedef struct xMINI_LIST_ITEM xMiniListItem;\r
-\r
-/*\r
- * Definition of the type of queue used by the scheduler.\r
- */\r
-typedef struct xLIST\r
-{\r
- volatile unsigned portBASE_TYPE uxNumberOfItems;\r
- volatile xListItem * pxIndex; /*< Used to walk through the list. Points to the last item returned by a call to pvListGetOwnerOfNextEntry (). */\r
- volatile xMiniListItem xListEnd; /*< List item that contains the maximum possible item value meaning it is always at the end of the list and is therefore used as a marker. */\r
-} xList;\r
-\r
-/*\r
- * Access macro to set the owner of a list item. The owner of a list item\r
- * is the object (usually a TCB) that contains the list item.\r
- *\r
- * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER\r
- * \ingroup LinkedList\r
- */\r
-#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner ) ( pxListItem )->pvOwner = ( void * ) pxOwner\r
-\r
-/*\r
- * Access macro to set the value of the list item. In most cases the value is\r
- * used to sort the list in descending order.\r
- *\r
- * \page listSET_LIST_ITEM_VALUE listSET_LIST_ITEM_VALUE\r
- * \ingroup LinkedList\r
- */\r
-#define listSET_LIST_ITEM_VALUE( pxListItem, xValue ) ( pxListItem )->xItemValue = xValue\r
-\r
-/*\r
- * Access macro the retrieve the value of the list item. The value can\r
- * represent anything - for example a the priority of a task, or the time at\r
- * which a task should be unblocked.\r
- *\r
- * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE\r
- * \ingroup LinkedList\r
- */\r
-#define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue )\r
-\r
-/*\r
- * Access macro to determine if a list contains any items. The macro will\r
- * only have the value true if the list is empty.\r
- *\r
- * \page listLIST_IS_EMPTY listLIST_IS_EMPTY\r
- * \ingroup LinkedList\r
- */\r
-#define listLIST_IS_EMPTY( pxList ) ( ( pxList )->uxNumberOfItems == ( unsigned portBASE_TYPE ) 0 )\r
-\r
-/*\r
- * Access macro to return the number of items in the list.\r
- */\r
-#define listCURRENT_LIST_LENGTH( pxList ) ( ( pxList )->uxNumberOfItems )\r
-\r
-/*\r
- * Access function to obtain the owner of the next entry in a list.\r
- *\r
- * The list member pxIndex is used to walk through a list. Calling\r
- * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list\r
- * and returns that entries pxOwner parameter. Using multiple calls to this\r
- * function it is therefore possible to move through every item contained in\r
- * a list.\r
- *\r
- * The pxOwner parameter of a list item is a pointer to the object that owns\r
- * the list item. In the scheduler this is normally a task control block.\r
- * The pxOwner parameter effectively creates a two way link between the list\r
- * item and its owner.\r
- *\r
- * @param pxList The list from which the next item owner is to be returned.\r
- *\r
- * \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY\r
- * \ingroup LinkedList\r
- */\r
-#define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) \\r
-{ \\r
-xList * const pxConstList = pxList; \\r
- /* Increment the index to the next item and return the item, ensuring */ \\r
- /* we don't return the marker used at the end of the list. */ \\r
- ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \\r
- if( ( pxConstList )->pxIndex == ( xListItem * ) &( ( pxConstList )->xListEnd ) ) \\r
- { \\r
- ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \\r
- } \\r
- pxTCB = ( pxConstList )->pxIndex->pvOwner; \\r
-}\r
-\r
-\r
-/*\r
- * Access function to obtain the owner of the first entry in a list. Lists\r
- * are normally sorted in ascending item value order.\r
- *\r
- * This function returns the pxOwner member of the first item in the list.\r
- * The pxOwner parameter of a list item is a pointer to the object that owns\r
- * the list item. In the scheduler this is normally a task control block.\r
- * The pxOwner parameter effectively creates a two way link between the list\r
- * item and its owner.\r
- *\r
- * @param pxList The list from which the owner of the head item is to be\r
- * returned.\r
- *\r
- * \page listGET_OWNER_OF_HEAD_ENTRY listGET_OWNER_OF_HEAD_ENTRY\r
- * \ingroup LinkedList\r
- */\r
-#define listGET_OWNER_OF_HEAD_ENTRY( pxList ) ( ( pxList->uxNumberOfItems != ( unsigned portBASE_TYPE ) 0 ) ? ( (&( pxList->xListEnd ))->pxNext->pvOwner ) : ( NULL ) )\r
-\r
-/*\r
- * Check to see if a list item is within a list. The list item maintains a\r
- * "container" pointer that points to the list it is in. All this macro does\r
- * is check to see if the container and the list match.\r
- *\r
- * @param pxList The list we want to know if the list item is within.\r
- * @param pxListItem The list item we want to know if is in the list.\r
- * @return pdTRUE is the list item is in the list, otherwise pdFALSE.\r
- * pointer against\r
- */\r
-#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( pxListItem )->pvContainer == ( void * ) pxList )\r
-\r
-/*\r
- * Must be called before a list is used! This initialises all the members\r
- * of the list structure and inserts the xListEnd item into the list as a\r
- * marker to the back of the list.\r
- *\r
- * @param pxList Pointer to the list being initialised.\r
- *\r
- * \page vListInitialise vListInitialise\r
- * \ingroup LinkedList\r
- */\r
-void vListInitialise( xList *pxList );\r
-\r
-/*\r
- * Must be called before a list item is used. This sets the list container to\r
- * null so the item does not think that it is already contained in a list.\r
- *\r
- * @param pxItem Pointer to the list item being initialised.\r
- *\r
- * \page vListInitialiseItem vListInitialiseItem\r
- * \ingroup LinkedList\r
- */\r
-void vListInitialiseItem( xListItem *pxItem );\r
-\r
-/*\r
- * Insert a list item into a list. The item will be inserted into the list in\r
- * a position determined by its item value (descending item value order).\r
- *\r
- * @param pxList The list into which the item is to be inserted.\r
- *\r
- * @param pxNewListItem The item to that is to be placed in the list.\r
- *\r
- * \page vListInsert vListInsert\r
- * \ingroup LinkedList\r
- */\r
-void vListInsert( xList *pxList, xListItem *pxNewListItem );\r
-\r
-/*\r
- * Insert a list item into a list. The item will be inserted in a position\r
- * such that it will be the last item within the list returned by multiple\r
- * calls to listGET_OWNER_OF_NEXT_ENTRY.\r
- *\r
- * The list member pvIndex is used to walk through a list. Calling\r
- * listGET_OWNER_OF_NEXT_ENTRY increments pvIndex to the next item in the list.\r
- * Placing an item in a list using vListInsertEnd effectively places the item\r
- * in the list position pointed to by pvIndex. This means that every other\r
- * item within the list will be returned by listGET_OWNER_OF_NEXT_ENTRY before\r
- * the pvIndex parameter again points to the item being inserted.\r
- *\r
- * @param pxList The list into which the item is to be inserted.\r
- *\r
- * @param pxNewListItem The list item to be inserted into the list.\r
- *\r
- * \page vListInsertEnd vListInsertEnd\r
- * \ingroup LinkedList\r
- */\r
-void vListInsertEnd( xList *pxList, xListItem *pxNewListItem );\r
-\r
-/*\r
- * Remove an item from a list. The list item has a pointer to the list that\r
- * it is in, so only the list item need be passed into the function.\r
- *\r
- * @param vListRemove The item to be removed. The item will remove itself from\r
- * the list pointed to by it's pxContainer parameter.\r
- *\r
- * \page vListRemove vListRemove\r
- * \ingroup LinkedList\r
- */\r
-void vListRemove( xListItem *pxItemToRemove );\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http:www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/*-----------------------------------------------------------\r
- * Portable layer API. Each function must be defined for each port.\r
- *----------------------------------------------------------*/\r
-\r
-#ifndef PORTABLE_H\r
-#define PORTABLE_H\r
-\r
-/* Include the macro file relevant to the port being used. */\r
-\r
-#ifdef OPEN_WATCOM_INDUSTRIAL_PC_PORT\r
- #include "..\..\source\portable\owatcom\16bitdos\pc\portmacro.h"\r
- typedef void ( __interrupt __far *pxISR )();\r
-#endif\r
-\r
-#ifdef OPEN_WATCOM_FLASH_LITE_186_PORT\r
- #include "..\..\source\portable\owatcom\16bitdos\flsh186\portmacro.h"\r
- typedef void ( __interrupt __far *pxISR )();\r
-#endif\r
-\r
-#ifdef GCC_MEGA_AVR\r
- #include "../portable/GCC/ATMega323/portmacro.h"\r
-#endif\r
-\r
-#ifdef IAR_MEGA_AVR\r
- #include "../portable/IAR/ATMega323/portmacro.h"\r
-#endif\r
-\r
-#ifdef MPLAB_PIC24_PORT\r
- #include "..\..\Source\portable\MPLAB\PIC24_dsPIC\portmacro.h"\r
-#endif\r
-\r
-#ifdef MPLAB_DSPIC_PORT\r
- #include "../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h"\r
-#endif\r
-\r
-#ifdef AIC_DSPIC_PORT\r
-#include "../../FreeRTOS/portable/AIC-2.0.0/portmacro.h"\r
-#endif\r
-\r
-#ifdef MPLAB_PIC18F_PORT\r
- #include "..\..\source\portable\MPLAB\PIC18F\portmacro.h"\r
-#endif\r
-\r
-#ifdef MPLAB_PIC32MX_PORT\r
- #include "..\..\Source\portable\MPLAB\PIC32MX\portmacro.h"\r
-#endif\r
-\r
-#ifdef _FEDPICC\r
- #include "libFreeRTOS/Include/portmacro.h"\r
-#endif\r
-\r
-#ifdef SDCC_CYGNAL\r
- #include "../../Source/portable/SDCC/Cygnal/portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_ARM7\r
- #include "../../Source/portable/GCC/ARM7_LPC2000/portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_ARM7_ECLIPSE\r
- #include "portmacro.h"\r
-#endif\r
-\r
-#ifdef ROWLEY_LPC23xx\r
- #include "../../Source/portable/GCC/ARM7_LPC23xx/portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_MSP430\r
- #include "../../Source/portable/GCC/MSP430F449/portmacro.h"\r
-#endif\r
-\r
-#ifdef ROWLEY_MSP430\r
- #include "../../Source/portable/Rowley/MSP430F449/portmacro.h"\r
-#endif\r
-\r
-#ifdef KEIL_ARM7\r
- #include "..\..\Source\portable\Keil\ARM7\portmacro.h"\r
-#endif\r
-\r
-#ifdef SAM7_GCC\r
- #include "../../Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h"\r
-#endif\r
-\r
-#ifdef SAM7_IAR\r
- #include "..\..\Source\portable\IAR\AtmelSAM7S64\portmacro.h"\r
-#endif\r
-\r
-#ifdef LPC2000_IAR\r
- #include "..\..\Source\portable\IAR\LPC2000\portmacro.h"\r
-#endif\r
-\r
-#ifdef STR71X_IAR\r
- #include "..\..\Source\portable\IAR\STR71x\portmacro.h"\r
-#endif\r
-\r
-#ifdef STR75X_IAR\r
- #include "..\..\Source\portable\IAR\STR75x\portmacro.h"\r
-#endif\r
- \r
-#ifdef STR75X_GCC\r
- #include "..\..\Source\portable\GCC\STR75x\portmacro.h"\r
-#endif\r
-\r
-#ifdef STR91X_IAR\r
- #include "..\..\Source\portable\IAR\STR91x\portmacro.h"\r
-#endif\r
- \r
-#ifdef GCC_H8S\r
- #include "../../Source/portable/GCC/H8S2329/portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_AT91FR40008\r
- #include "../../Source/portable/GCC/ARM7_AT91FR40008/portmacro.h"\r
-#endif\r
-\r
-#ifdef RVDS_ARMCM3_LM3S102\r
- #include "../../Source/portable/RVDS/ARM_CM3/portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_ARMCM3_LM3S102\r
- #include "../../Source/portable/GCC/ARM_CM3/portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_ARMCM3\r
- #include "../../Source/portable/GCC/ARM_CM3/portmacro.h"\r
-#endif\r
-\r
-#ifdef IAR_ARM_CM3\r
- #include "../../Source/portable/IAR/ARM_CM3/portmacro.h"\r
-#endif\r
-\r
-#ifdef IAR_ARMCM3_LM\r
- #include "../../Source/portable/IAR/ARM_CM3/portmacro.h"\r
-#endif\r
- \r
-#ifdef HCS12_CODE_WARRIOR\r
- #include "../../Source/portable/CodeWarrior/HCS12/portmacro.h"\r
-#endif \r
-\r
-#ifdef MICROBLAZE_GCC\r
- #include "../../Source/portable/GCC/MicroBlaze/portmacro.h"\r
-#endif\r
-\r
-#ifdef TERN_EE\r
- #include "..\..\Source\portable\Paradigm\Tern_EE\small\portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_HCS12\r
- #include "../../Source/portable/GCC/HCS12/portmacro.h"\r
-#endif\r
-\r
-#ifdef GCC_MCF5235\r
- #include "../../Source/portable/GCC/MCF5235/portmacro.h"\r
-#endif\r
-\r
-#ifdef BCC_INDUSTRIAL_PC_PORT\r
- /* A short file name has to be used in place of the normal\r
- FreeRTOSConfig.h when using the Borland compiler. */\r
- #include "frconfig.h"\r
- #include "..\portable\BCC\16BitDOS\PC\prtmacro.h"\r
- typedef void ( __interrupt __far *pxISR )();\r
-#endif\r
-\r
-#ifdef BCC_FLASH_LITE_186_PORT\r
- /* A short file name has to be used in place of the normal\r
- FreeRTOSConfig.h when using the Borland compiler. */\r
- #include "frconfig.h"\r
- #include "..\portable\BCC\16BitDOS\flsh186\prtmacro.h"\r
- typedef void ( __interrupt __far *pxISR )();\r
-#endif\r
-\r
-#ifdef __GNUC__\r
- #ifdef __AVR32_AVR32A__\r
- #include "portmacro.h"\r
- #endif\r
-#endif\r
-\r
-#ifdef __ICCAVR32__\r
- #ifdef __CORE__\r
- #if __CORE__ == __AVR32A__\r
- #include "portmacro.h"\r
- #endif\r
- #endif\r
-#endif\r
-\r
-#ifdef __91467D\r
- #include "portmacro.h"\r
-#endif\r
-\r
-#ifdef __96340\r
- #include "portmacro.h"\r
-#endif\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-/*\r
- * Setup the stack of a new task so it is ready to be placed under the\r
- * scheduler control. The registers have to be placed on the stack in\r
- * the order that the port expects to find them.\r
- */\r
-portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters );\r
-\r
-/*\r
- * Map to the memory management routines required for the port.\r
- */\r
-void *pvPortMalloc( size_t xSize );\r
-void vPortFree( void *pv );\r
-void vPortInitialiseBlocks( void );\r
-\r
-/*\r
- * Setup the hardware ready for the scheduler to take control. This generally\r
- * sets up a tick interrupt and sets timers for the correct tick frequency.\r
- */\r
-portBASE_TYPE xPortStartScheduler( void );\r
-\r
-/*\r
- * Undo any hardware/ISR setup that was performed by xPortStartScheduler() so\r
- * the hardware is left in its original condition after the scheduler stops\r
- * executing.\r
- */\r
-void vPortEndScheduler( void );\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* PORTABLE_H */\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section \r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-#ifndef PROJDEFS_H\r
-#define PROJDEFS_H\r
-\r
-/* Defines to prototype to which task functions must conform. */\r
-typedef void (*pdTASK_CODE)( void * );\r
-\r
-#define pdTRUE ( 1 )\r
-#define pdFALSE ( 0 )\r
-\r
-#define pdPASS ( 1 )\r
-#define pdFAIL ( 0 )\r
-#define errQUEUE_EMPTY ( 0 )\r
-#define errQUEUE_FULL ( 0 )\r
-\r
-/* Error definitions. */\r
-#define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ( -1 )\r
-#define errNO_TASK_TO_RUN ( -2 )\r
-#define errQUEUE_BLOCKED ( -4 )\r
-#define errQUEUE_YIELD ( -5 )\r
-\r
-#endif /* PROJDEFS_H */\r
-\r
-\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-#ifndef QUEUE_H\r
-#define QUEUE_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-typedef void * xQueueHandle;\r
-\r
-/* For internal use only. */\r
-#define queueSEND_TO_BACK ( 0 )\r
-#define queueSEND_TO_FRONT ( 1 )\r
-\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- xQueueHandle xQueueCreate(\r
- unsigned portBASE_TYPE uxQueueLength,\r
- unsigned portBASE_TYPE uxItemSize\r
- );\r
- * </pre>\r
- *\r
- * Creates a new queue instance. This allocates the storage required by the\r
- * new queue and returns a handle for the queue.\r
- *\r
- * @param uxQueueLength The maximum number of items that the queue can contain.\r
- *\r
- * @param uxItemSize The number of bytes each item in the queue will require.\r
- * Items are queued by copy, not by reference, so this is the number of bytes\r
- * that will be copied for each posted item. Each item on the queue must be\r
- * the same size.\r
- *\r
- * @return If the queue is successfully create then a handle to the newly\r
- * created queue is returned. If the queue cannot be created then 0 is\r
- * returned.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- };\r
-\r
- void vATask( void *pvParameters )\r
- {\r
- xQueueHandle xQueue1, xQueue2;\r
-\r
- // Create a queue capable of containing 10 unsigned long values.\r
- xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
- if( xQueue1 == 0 )\r
- {\r
- // Queue was not created and must not be used.\r
- }\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
- if( xQueue2 == 0 )\r
- {\r
- // Queue was not created and must not be used.\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueCreate xQueueCreate\r
- * \ingroup QueueManagement\r
- */\r
-xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize );\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueSendToToFront(\r
- xQueueHandle xQueue,\r
- const void * pvItemToQueue,\r
- portTickType xTicksToWait\r
- );\r
- * </pre>\r
- *\r
- * This is a macro that calls xQueueGenericSend().\r
- *\r
- * Post an item to the front of a queue. The item is queued by copy, not by\r
- * reference. This function must not be called from an interrupt service\r
- * routine. See xQueueSendFromISR () for an alternative which may be used\r
- * in an ISR.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param xTicksToWait The maximum amount of time the task should block\r
- * waiting for space to become available on the queue, should it already\r
- * be full. The call will return immediately if this is set to 0. The\r
- * time is defined in tick periods so the constant portTICK_RATE_MS\r
- * should be used to convert to real time if this is required.\r
- *\r
- * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- } xMessage;\r
-\r
- unsigned portLONG ulVar = 10UL;\r
-\r
- void vATask( void *pvParameters )\r
- {\r
- xQueueHandle xQueue1, xQueue2;\r
- struct AMessage *pxMessage;\r
-\r
- // Create a queue capable of containing 10 unsigned long values.\r
- xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
- // ...\r
-\r
- if( xQueue1 != 0 )\r
- {\r
- // Send an unsigned long. Wait for 10 ticks for space to become\r
- // available if necessary.\r
- if( xQueueSendToFront( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
- {\r
- // Failed to post the message, even after 10 ticks.\r
- }\r
- }\r
-\r
- if( xQueue2 != 0 )\r
- {\r
- // Send a pointer to a struct AMessage object. Don't block if the\r
- // queue is already full.\r
- pxMessage = & xMessage;\r
- xQueueSendToFront( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueSend xQueueSend\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_FRONT )\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueSendToBack(\r
- xQueueHandle xQueue,\r
- const void * pvItemToQueue,\r
- portTickType xTicksToWait\r
- );\r
- * </pre>\r
- *\r
- * This is a macro that calls xQueueGenericSend().\r
- *\r
- * Post an item to the back of a queue. The item is queued by copy, not by\r
- * reference. This function must not be called from an interrupt service\r
- * routine. See xQueueSendFromISR () for an alternative which may be used\r
- * in an ISR.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param xTicksToWait The maximum amount of time the task should block\r
- * waiting for space to become available on the queue, should it already\r
- * be full. The call will return immediately if this is set to 0. The\r
- * time is defined in tick periods so the constant portTICK_RATE_MS\r
- * should be used to convert to real time if this is required.\r
- *\r
- * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- } xMessage;\r
-\r
- unsigned portLONG ulVar = 10UL;\r
-\r
- void vATask( void *pvParameters )\r
- {\r
- xQueueHandle xQueue1, xQueue2;\r
- struct AMessage *pxMessage;\r
-\r
- // Create a queue capable of containing 10 unsigned long values.\r
- xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
- // ...\r
-\r
- if( xQueue1 != 0 )\r
- {\r
- // Send an unsigned long. Wait for 10 ticks for space to become\r
- // available if necessary.\r
- if( xQueueSendToBack( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
- {\r
- // Failed to post the message, even after 10 ticks.\r
- }\r
- }\r
-\r
- if( xQueue2 != 0 )\r
- {\r
- // Send a pointer to a struct AMessage object. Don't block if the\r
- // queue is already full.\r
- pxMessage = & xMessage;\r
- xQueueSendToBack( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueSend xQueueSend\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_BACK )\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueSend(\r
- xQueueHandle xQueue,\r
- const void * pvItemToQueue,\r
- portTickType xTicksToWait\r
- );\r
- * </pre>\r
- *\r
- * This is a macro that calls xQueueGenericSend(). It is included for\r
- * backward compatibility with versions of FreeRTOS.org that did not\r
- * include the xQueueSendToFront() and xQueueSendToBack() macros. It is\r
- * equivalent to xQueueSendToBack().\r
- *\r
- * Post an item on a queue. The item is queued by copy, not by reference.\r
- * This function must not be called from an interrupt service routine.\r
- * See xQueueSendFromISR () for an alternative which may be used in an ISR.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param xTicksToWait The maximum amount of time the task should block\r
- * waiting for space to become available on the queue, should it already\r
- * be full. The call will return immediately if this is set to 0. The\r
- * time is defined in tick periods so the constant portTICK_RATE_MS\r
- * should be used to convert to real time if this is required.\r
- *\r
- * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- } xMessage;\r
-\r
- unsigned portLONG ulVar = 10UL;\r
-\r
- void vATask( void *pvParameters )\r
- {\r
- xQueueHandle xQueue1, xQueue2;\r
- struct AMessage *pxMessage;\r
-\r
- // Create a queue capable of containing 10 unsigned long values.\r
- xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
- // ...\r
-\r
- if( xQueue1 != 0 )\r
- {\r
- // Send an unsigned long. Wait for 10 ticks for space to become\r
- // available if necessary.\r
- if( xQueueSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )\r
- {\r
- // Failed to post the message, even after 10 ticks.\r
- }\r
- }\r
-\r
- if( xQueue2 != 0 )\r
- {\r
- // Send a pointer to a struct AMessage object. Don't block if the\r
- // queue is already full.\r
- pxMessage = & xMessage;\r
- xQueueSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueSend xQueueSend\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueueSend( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_BACK )\r
-\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueGenericSend(\r
- xQueueHandle xQueue,\r
- const void * pvItemToQueue,\r
- portTickType xTicksToWait\r
- portBASE_TYPE xCopyPosition\r
- );\r
- * </pre>\r
- *\r
- * It is preferred that the macros xQueueSend(), xQueueSendToFront() and\r
- * xQueueSendToBack() are used in place of calling this function directly.\r
- *\r
- * Post an item on a queue. The item is queued by copy, not by reference.\r
- * This function must not be called from an interrupt service routine.\r
- * See xQueueSendFromISR () for an alternative which may be used in an ISR.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param xTicksToWait The maximum amount of time the task should block\r
- * waiting for space to become available on the queue, should it already\r
- * be full. The call will return immediately if this is set to 0. The\r
- * time is defined in tick periods so the constant portTICK_RATE_MS\r
- * should be used to convert to real time if this is required.\r
- *\r
- * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the\r
- * item at the back of the queue, or queueSEND_TO_FRONT to place the item\r
- * at the front of the queue (for high priority messages).\r
- *\r
- * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- } xMessage;\r
-\r
- unsigned portLONG ulVar = 10UL;\r
-\r
- void vATask( void *pvParameters )\r
- {\r
- xQueueHandle xQueue1, xQueue2;\r
- struct AMessage *pxMessage;\r
-\r
- // Create a queue capable of containing 10 unsigned long values.\r
- xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
-\r
- // ...\r
-\r
- if( xQueue1 != 0 )\r
- {\r
- // Send an unsigned long. Wait for 10 ticks for space to become\r
- // available if necessary.\r
- if( xQueueGenericSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10, queueSEND_TO_BACK ) != pdPASS )\r
- {\r
- // Failed to post the message, even after 10 ticks.\r
- }\r
- }\r
-\r
- if( xQueue2 != 0 )\r
- {\r
- // Send a pointer to a struct AMessage object. Don't block if the\r
- // queue is already full.\r
- pxMessage = & xMessage;\r
- xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0, queueSEND_TO_BACK );\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueSend xQueueSend\r
- * \ingroup QueueManagement\r
- */\r
-signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition );\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueuePeek(\r
- xQueueHandle xQueue,\r
- void *pvBuffer,\r
- portTickType xTicksToWait\r
- );</pre>\r
- *\r
- * This is a macro that calls the xQueueGenericReceive() function.\r
- *\r
- * Receive an item from a queue without removing the item from the queue.\r
- * The item is received by copy so a buffer of adequate size must be\r
- * provided. The number of bytes copied into the buffer was defined when\r
- * the queue was created.\r
- *\r
- * Successfully received items remain on the queue so will be returned again\r
- * by the next call, or a call to xQueueReceive().\r
- *\r
- * This macro must not be used in an interrupt service routine.\r
- *\r
- * @param pxQueue The handle to the queue from which the item is to be\r
- * received.\r
- *\r
- * @param pvBuffer Pointer to the buffer into which the received item will\r
- * be copied.\r
- *\r
- * @param xTicksToWait The maximum amount of time the task should block\r
- * waiting for an item to receive should the queue be empty at the time\r
- * of the call. The time is defined in tick periods so the constant\r
- * portTICK_RATE_MS should be used to convert to real time if this is required.\r
- *\r
- * @return pdTRUE if an item was successfully received from the queue,\r
- * otherwise pdFALSE.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- } xMessage;\r
-\r
- xQueueHandle xQueue;\r
-\r
- // Task to create a queue and post a value.\r
- void vATask( void *pvParameters )\r
- {\r
- struct AMessage *pxMessage;\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
- if( xQueue == 0 )\r
- {\r
- // Failed to create the queue.\r
- }\r
-\r
- // ...\r
-\r
- // Send a pointer to a struct AMessage object. Don't block if the\r
- // queue is already full.\r
- pxMessage = & xMessage;\r
- xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
-\r
- // ... Rest of task code.\r
- }\r
-\r
- // Task to peek the data from the queue.\r
- void vADifferentTask( void *pvParameters )\r
- {\r
- struct AMessage *pxRxedMessage;\r
-\r
- if( xQueue != 0 )\r
- {\r
- // Peek a message on the created queue. Block for 10 ticks if a\r
- // message is not immediately available.\r
- if( xQueuePeek( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
- {\r
- // pcRxedMessage now points to the struct AMessage variable posted\r
- // by vATask, but the item still remains on the queue.\r
- }\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueReceive xQueueReceive\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueuePeek( xQueue, pvBuffer, xTicksToWait ) xQueueGenericReceive( xQueue, pvBuffer, xTicksToWait, pdTRUE )\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueReceive(\r
- xQueueHandle xQueue,\r
- void *pvBuffer,\r
- portTickType xTicksToWait\r
- );</pre>\r
- *\r
- * This is a macro that calls the xQueueGenericReceive() function.\r
- *\r
- * Receive an item from a queue. The item is received by copy so a buffer of\r
- * adequate size must be provided. The number of bytes copied into the buffer\r
- * was defined when the queue was created.\r
- *\r
- * Successfully received items are removed from the queue.\r
- *\r
- * This function must not be used in an interrupt service routine. See\r
- * xQueueReceiveFromISR for an alternative that can.\r
- *\r
- * @param pxQueue The handle to the queue from which the item is to be\r
- * received.\r
- *\r
- * @param pvBuffer Pointer to the buffer into which the received item will\r
- * be copied.\r
- *\r
- * @param xTicksToWait The maximum amount of time the task should block\r
- * waiting for an item to receive should the queue be empty at the time\r
- * of the call. The time is defined in tick periods so the constant\r
- * portTICK_RATE_MS should be used to convert to real time if this is required.\r
- *\r
- * @return pdTRUE if an item was successfully received from the queue,\r
- * otherwise pdFALSE.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- } xMessage;\r
-\r
- xQueueHandle xQueue;\r
-\r
- // Task to create a queue and post a value.\r
- void vATask( void *pvParameters )\r
- {\r
- struct AMessage *pxMessage;\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
- if( xQueue == 0 )\r
- {\r
- // Failed to create the queue.\r
- }\r
-\r
- // ...\r
-\r
- // Send a pointer to a struct AMessage object. Don't block if the\r
- // queue is already full.\r
- pxMessage = & xMessage;\r
- xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
-\r
- // ... Rest of task code.\r
- }\r
-\r
- // Task to receive from the queue.\r
- void vADifferentTask( void *pvParameters )\r
- {\r
- struct AMessage *pxRxedMessage;\r
-\r
- if( xQueue != 0 )\r
- {\r
- // Receive a message on the created queue. Block for 10 ticks if a\r
- // message is not immediately available.\r
- if( xQueueReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
- {\r
- // pcRxedMessage now points to the struct AMessage variable posted\r
- // by vATask.\r
- }\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueReceive xQueueReceive\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueueReceive( xQueue, pvBuffer, xTicksToWait ) xQueueGenericReceive( xQueue, pvBuffer, xTicksToWait, pdFALSE )\r
-\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueGenericReceive(\r
- xQueueHandle xQueue,\r
- void *pvBuffer,\r
- portTickType xTicksToWait\r
- portBASE_TYPE xJustPeek\r
- );</pre>\r
- *\r
- * It is preferred that the macro xQueueReceive() be used rather than calling\r
- * this function directly.\r
- *\r
- * Receive an item from a queue. The item is received by copy so a buffer of\r
- * adequate size must be provided. The number of bytes copied into the buffer\r
- * was defined when the queue was created.\r
- *\r
- * This function must not be used in an interrupt service routine. See\r
- * xQueueReceiveFromISR for an alternative that can.\r
- *\r
- * @param pxQueue The handle to the queue from which the item is to be\r
- * received.\r
- *\r
- * @param pvBuffer Pointer to the buffer into which the received item will\r
- * be copied.\r
- *\r
- * @param xTicksToWait The maximum amount of time the task should block\r
- * waiting for an item to receive should the queue be empty at the time\r
- * of the call. The time is defined in tick periods so the constant\r
- * portTICK_RATE_MS should be used to convert to real time if this is required.\r
- *\r
- * @param xJustPeek When set to true, the item received from the queue is not\r
- * actually removed from the queue - meaning a subsequent call to\r
- * xQueueReceive() will return the same item. When set to false, the item\r
- * being received from the queue is also removed from the queue.\r
- *\r
- * @return pdTRUE if an item was successfully received from the queue,\r
- * otherwise pdFALSE.\r
- *\r
- * Example usage:\r
- <pre>\r
- struct AMessage\r
- {\r
- portCHAR ucMessageID;\r
- portCHAR ucData[ 20 ];\r
- } xMessage;\r
-\r
- xQueueHandle xQueue;\r
-\r
- // Task to create a queue and post a value.\r
- void vATask( void *pvParameters )\r
- {\r
- struct AMessage *pxMessage;\r
-\r
- // Create a queue capable of containing 10 pointers to AMessage structures.\r
- // These should be passed by pointer as they contain a lot of data.\r
- xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );\r
- if( xQueue == 0 )\r
- {\r
- // Failed to create the queue.\r
- }\r
-\r
- // ...\r
-\r
- // Send a pointer to a struct AMessage object. Don't block if the\r
- // queue is already full.\r
- pxMessage = & xMessage;\r
- xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );\r
-\r
- // ... Rest of task code.\r
- }\r
-\r
- // Task to receive from the queue.\r
- void vADifferentTask( void *pvParameters )\r
- {\r
- struct AMessage *pxRxedMessage;\r
-\r
- if( xQueue != 0 )\r
- {\r
- // Receive a message on the created queue. Block for 10 ticks if a\r
- // message is not immediately available.\r
- if( xQueueGenericReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )\r
- {\r
- // pcRxedMessage now points to the struct AMessage variable posted\r
- // by vATask.\r
- }\r
- }\r
-\r
- // ... Rest of task code.\r
- }\r
- </pre>\r
- * \defgroup xQueueReceive xQueueReceive\r
- * \ingroup QueueManagement\r
- */\r
-signed portBASE_TYPE xQueueGenericReceive( xQueueHandle xQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeek );\r
-\r
-/**\r
- * queue. h\r
- * <pre>unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle xQueue );</pre>\r
- *\r
- * Return the number of messages stored in a queue.\r
- *\r
- * @param xQueue A handle to the queue being queried.\r
- *\r
- * @return The number of messages available in the queue.\r
- *\r
- * \page uxQueueMessagesWaiting uxQueueMessagesWaiting\r
- * \ingroup QueueManagement\r
- */\r
-unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle xQueue );\r
-\r
-/**\r
- * queue. h\r
- * <pre>void vQueueDelete( xQueueHandle xQueue );</pre>\r
- *\r
- * Delete a queue - freeing all the memory allocated for storing of items\r
- * placed on the queue.\r
- *\r
- * @param xQueue A handle to the queue to be deleted.\r
- *\r
- * \page vQueueDelete vQueueDelete\r
- * \ingroup QueueManagement\r
- */\r
-void vQueueDelete( xQueueHandle xQueue );\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueSendToFrontFromISR(\r
- xQueueHandle pxQueue,\r
- const void *pvItemToQueue,\r
- portBASE_TYPE xTaskPreviouslyWoken\r
- );\r
- </pre>\r
- *\r
- * This is a macro that calls xQueueGenericSendFromISR().\r
- *\r
- * Post an item to the front of a queue. It is safe to use this macro from\r
- * within an interrupt service routine.\r
- *\r
- * Items are queued by copy not reference so it is preferable to only\r
- * queue small items, especially when called from an ISR. In most cases\r
- * it would be preferable to store a pointer to the item being queued.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param cTaskPreviouslyWoken This is included so an ISR can post onto\r
- * the same queue multiple times from a single interrupt. The first call\r
- * should always pass in pdFALSE. Subsequent calls should pass in\r
- * the value returned from the previous call. See the file serial .c in the\r
- * PC port for a good example of this mechanism.\r
- *\r
- * @return pdTRUE if a task was woken by posting onto the queue. This is\r
- * used by the ISR to determine if a context switch may be required following\r
- * the ISR.\r
- *\r
- * Example usage for buffered IO (where the ISR can obtain more than one value\r
- * per call):\r
- <pre>\r
- void vBufferISR( void )\r
- {\r
- portCHAR cIn;\r
- portBASE_TYPE xTaskWokenByPost;\r
-\r
- // We have not woken a task at the start of the ISR.\r
- cTaskWokenByPost = pdFALSE;\r
-\r
- // Loop until the buffer is empty.\r
- do\r
- {\r
- // Obtain a byte from the buffer.\r
- cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS ); \r
-\r
- // Post the byte. The first time round the loop cTaskWokenByPost\r
- // will be pdFALSE. If the queue send causes a task to wake we do\r
- // not want the task to run until we have finished the ISR, so\r
- // xQueueSendFromISR does not cause a context switch. Also we\r
- // don't want subsequent posts to wake any other tasks, so we store\r
- // the return value back into cTaskWokenByPost so xQueueSendFromISR\r
- // knows not to wake any task the next iteration of the loop.\r
- xTaskWokenByPost = xQueueSendToFrontFromISR( xRxQueue, &cIn, cTaskWokenByPost );\r
-\r
- } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
-\r
- // Now the buffer is empty we can switch context if necessary.\r
- if( cTaskWokenByPost )\r
- {\r
- taskYIELD ();\r
- }\r
- }\r
- </pre>\r
- *\r
- * \defgroup xQueueSendFromISR xQueueSendFromISR\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueueSendToFrontFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken, queueSEND_TO_FRONT )\r
-\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueSendToBackFromISR(\r
- xQueueHandle pxQueue,\r
- const void *pvItemToQueue,\r
- portBASE_TYPE xTaskPreviouslyWoken\r
- );\r
- </pre>\r
- *\r
- * This is a macro that calls xQueueGenericSendFromISR().\r
- *\r
- * Post an item to the back of a queue. It is safe to use this macro from\r
- * within an interrupt service routine.\r
- *\r
- * Items are queued by copy not reference so it is preferable to only\r
- * queue small items, especially when called from an ISR. In most cases\r
- * it would be preferable to store a pointer to the item being queued.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param cTaskPreviouslyWoken This is included so an ISR can post onto\r
- * the same queue multiple times from a single interrupt. The first call\r
- * should always pass in pdFALSE. Subsequent calls should pass in\r
- * the value returned from the previous call. See the file serial .c in the\r
- * PC port for a good example of this mechanism.\r
- *\r
- * @return pdTRUE if a task was woken by posting onto the queue. This is\r
- * used by the ISR to determine if a context switch may be required following\r
- * the ISR.\r
- *\r
- * Example usage for buffered IO (where the ISR can obtain more than one value\r
- * per call):\r
- <pre>\r
- void vBufferISR( void )\r
- {\r
- portCHAR cIn;\r
- portBASE_TYPE xTaskWokenByPost;\r
-\r
- // We have not woken a task at the start of the ISR.\r
- cTaskWokenByPost = pdFALSE;\r
-\r
- // Loop until the buffer is empty.\r
- do\r
- {\r
- // Obtain a byte from the buffer.\r
- cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS ); \r
-\r
- // Post the byte. The first time round the loop cTaskWokenByPost\r
- // will be pdFALSE. If the queue send causes a task to wake we do\r
- // not want the task to run until we have finished the ISR, so\r
- // xQueueSendFromISR does not cause a context switch. Also we\r
- // don't want subsequent posts to wake any other tasks, so we store\r
- // the return value back into cTaskWokenByPost so xQueueSendFromISR\r
- // knows not to wake any task the next iteration of the loop.\r
- xTaskWokenByPost = xQueueSendToBackFromISR( xRxQueue, &cIn, cTaskWokenByPost );\r
-\r
- } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
-\r
- // Now the buffer is empty we can switch context if necessary.\r
- if( cTaskWokenByPost )\r
- {\r
- taskYIELD ();\r
- }\r
- }\r
- </pre>\r
- *\r
- * \defgroup xQueueSendFromISR xQueueSendFromISR\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueueSendToBackFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken, queueSEND_TO_BACK )\r
-\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueSendFromISR(\r
- xQueueHandle pxQueue,\r
- const void *pvItemToQueue,\r
- portBASE_TYPE xTaskPreviouslyWoken\r
- );\r
- </pre>\r
- *\r
- * This is a macro that calls xQueueGenericSendFromISR(). It is included\r
- * for backward compatibility with versions of FreeRTOS.org that did not\r
- * include the xQueueSendToBackFromISR() and xQueueSendToFrontFromISR()\r
- * macros.\r
- *\r
- * Post an item to the back of a queue. It is safe to use this function from\r
- * within an interrupt service routine.\r
- *\r
- * Items are queued by copy not reference so it is preferable to only\r
- * queue small items, especially when called from an ISR. In most cases\r
- * it would be preferable to store a pointer to the item being queued.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param cTaskPreviouslyWoken This is included so an ISR can post onto\r
- * the same queue multiple times from a single interrupt. The first call\r
- * should always pass in pdFALSE. Subsequent calls should pass in\r
- * the value returned from the previous call. See the file serial .c in the\r
- * PC port for a good example of this mechanism.\r
- *\r
- * @return pdTRUE if a task was woken by posting onto the queue. This is\r
- * used by the ISR to determine if a context switch may be required following\r
- * the ISR.\r
- *\r
- * Example usage for buffered IO (where the ISR can obtain more than one value\r
- * per call):\r
- <pre>\r
- void vBufferISR( void )\r
- {\r
- portCHAR cIn;\r
- portBASE_TYPE xTaskWokenByPost;\r
-\r
- // We have not woken a task at the start of the ISR.\r
- cTaskWokenByPost = pdFALSE;\r
-\r
- // Loop until the buffer is empty.\r
- do\r
- {\r
- // Obtain a byte from the buffer.\r
- cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS ); \r
-\r
- // Post the byte. The first time round the loop cTaskWokenByPost\r
- // will be pdFALSE. If the queue send causes a task to wake we do\r
- // not want the task to run until we have finished the ISR, so\r
- // xQueueSendFromISR does not cause a context switch. Also we\r
- // don't want subsequent posts to wake any other tasks, so we store\r
- // the return value back into cTaskWokenByPost so xQueueSendFromISR\r
- // knows not to wake any task the next iteration of the loop.\r
- xTaskWokenByPost = xQueueSendFromISR( xRxQueue, &cIn, cTaskWokenByPost );\r
-\r
- } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
-\r
- // Now the buffer is empty we can switch context if necessary.\r
- if( cTaskWokenByPost )\r
- {\r
- taskYIELD ();\r
- }\r
- }\r
- </pre>\r
- *\r
- * \defgroup xQueueSendFromISR xQueueSendFromISR\r
- * \ingroup QueueManagement\r
- */\r
-#define xQueueSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken, queueSEND_TO_BACK )\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueGenericSendFromISR(\r
- xQueueHandle pxQueue,\r
- const void *pvItemToQueue,\r
- portBASE_TYPE xTaskPreviouslyWoken\r
- portBASE_TYPE xCopyPosition\r
- );\r
- </pre>\r
- *\r
- * It is preferred that the macros xQueueSendFromISR(),\r
- * xQueueSendToFrontFromISR() and xQueueSendToBackFromISR() be used in place\r
- * of calling this function directly.\r
- *\r
- * Post an item on a queue. It is safe to use this function from within an\r
- * interrupt service routine.\r
- *\r
- * Items are queued by copy not reference so it is preferable to only\r
- * queue small items, especially when called from an ISR. In most cases\r
- * it would be preferable to store a pointer to the item being queued.\r
- *\r
- * @param xQueue The handle to the queue on which the item is to be posted.\r
- *\r
- * @param pvItemToQueue A pointer to the item that is to be placed on the\r
- * queue. The size of the items the queue will hold was defined when the\r
- * queue was created, so this many bytes will be copied from pvItemToQueue\r
- * into the queue storage area.\r
- *\r
- * @param cTaskPreviouslyWoken This is included so an ISR can post onto\r
- * the same queue multiple times from a single interrupt. The first call\r
- * should always pass in pdFALSE. Subsequent calls should pass in\r
- * the value returned from the previous call. See the file serial .c in the\r
- * PC port for a good example of this mechanism.\r
- *\r
- * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the\r
- * item at the back of the queue, or queueSEND_TO_FRONT to place the item\r
- * at the front of the queue (for high priority messages).\r
- *\r
- * @return pdTRUE if a task was woken by posting onto the queue. This is\r
- * used by the ISR to determine if a context switch may be required following\r
- * the ISR.\r
- *\r
- * Example usage for buffered IO (where the ISR can obtain more than one value\r
- * per call):\r
- <pre>\r
- void vBufferISR( void )\r
- {\r
- portCHAR cIn;\r
- portBASE_TYPE xTaskWokenByPost;\r
-\r
- // We have not woken a task at the start of the ISR.\r
- cTaskWokenByPost = pdFALSE;\r
-\r
- // Loop until the buffer is empty.\r
- do\r
- {\r
- // Obtain a byte from the buffer.\r
- cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS ); \r
-\r
- // Post the byte. The first time round the loop cTaskWokenByPost\r
- // will be pdFALSE. If the queue send causes a task to wake we do\r
- // not want the task to run until we have finished the ISR, so\r
- // xQueueSendFromISR does not cause a context switch. Also we\r
- // don't want subsequent posts to wake any other tasks, so we store\r
- // the return value back into cTaskWokenByPost so xQueueSendFromISR\r
- // knows not to wake any task the next iteration of the loop.\r
- xTaskWokenByPost = xQueueGenericSendFromISR( xRxQueue, &cIn, cTaskWokenByPost, queueSEND_TO_BACK );\r
-\r
- } while( portINPUT_BYTE( BUFFER_COUNT ) );\r
-\r
- // Now the buffer is empty we can switch context if necessary.\r
- if( cTaskWokenByPost )\r
- {\r
- taskYIELD ();\r
- }\r
- }\r
- </pre>\r
- *\r
- * \defgroup xQueueSendFromISR xQueueSendFromISR\r
- * \ingroup QueueManagement\r
- */\r
-signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void * const pvItemToQueue, signed portBASE_TYPE xTaskPreviouslyWoken, portBASE_TYPE xCopyPosition );\r
-\r
-/**\r
- * queue. h\r
- * <pre>\r
- portBASE_TYPE xQueueReceiveFromISR(\r
- xQueueHandle pxQueue,\r
- void *pvBuffer,\r
- portBASE_TYPE *pxTaskWoken\r
- );\r
- * </pre>\r
- *\r
- * Receive an item from a queue. It is safe to use this function from within an\r
- * interrupt service routine.\r
- *\r
- * @param pxQueue The handle to the queue from which the item is to be\r
- * received.\r
- *\r
- * @param pvBuffer Pointer to the buffer into which the received item will\r
- * be copied.\r
- *\r
- * @param pxTaskWoken A task may be blocked waiting for space to become\r
- * available on the queue. If xQueueReceiveFromISR causes such a task to\r
- * unblock *pxTaskWoken will get set to pdTRUE, otherwise *pxTaskWoken will\r
- * remain unchanged.\r
- *\r
- * @return pdTRUE if an item was successfully received from the queue,\r
- * otherwise pdFALSE.\r
- *\r
- * Example usage:\r
- <pre>\r
-\r
- xQueueHandle xQueue;\r
-\r
- // Function to create a queue and post some values.\r
- void vAFunction( void *pvParameters )\r
- {\r
- portCHAR cValueToPost;\r
- const portTickType xBlockTime = ( portTickType )0xff;\r
-\r
- // Create a queue capable of containing 10 characters.\r
- xQueue = xQueueCreate( 10, sizeof( portCHAR ) );\r
- if( xQueue == 0 )\r
- {\r
- // Failed to create the queue.\r
- }\r
-\r
- // ...\r
-\r
- // Post some characters that will be used within an ISR. If the queue\r
- // is full then this task will block for xBlockTime ticks.\r
- cValueToPost = 'a';\r
- xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
- cValueToPost = 'b';\r
- xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
-\r
- // ... keep posting characters ... this task may block when the queue\r
- // becomes full.\r
-\r
- cValueToPost = 'c';\r
- xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );\r
- }\r
-\r
- // ISR that outputs all the characters received on the queue.\r
- void vISR_Routine( void )\r
- {\r
- portBASE_TYPE xTaskWokenByReceive = pdFALSE;\r
- portCHAR cRxedChar;\r
-\r
- while( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) )\r
- {\r
- // A character was received. Output the character now.\r
- vOutputCharacter( cRxedChar );\r
-\r
- // If removing the character from the queue woke the task that was\r
- // posting onto the queue cTaskWokenByReceive will have been set to\r
- // pdTRUE. No matter how many times this loop iterates only one\r
- // task will be woken.\r
- }\r
-\r
- if( cTaskWokenByPost != ( portCHAR ) pdFALSE;\r
- {\r
- taskYIELD ();\r
- }\r
- }\r
- </pre>\r
- * \defgroup xQueueReceiveFromISR xQueueReceiveFromISR\r
- * \ingroup QueueManagement\r
- */\r
-signed portBASE_TYPE xQueueReceiveFromISR( xQueueHandle pxQueue, const void * const pvBuffer, signed portBASE_TYPE *pxTaskWoken );\r
-\r
-/* \r
- * xQueueAltGenericSend() is an alternative version of xQueueGenericSend().\r
- * Likewise xQueueAltGenericReceive() is an alternative version of\r
- * xQueueGenericReceive().\r
- *\r
- * The source code that implements the alternative (Alt) API is much \r
- * simpler because it executes everything from within a critical section. \r
- * This is the approach taken by many other RTOSes, but FreeRTOS.org has the \r
- * preferred fully featured API too. The fully featured API has more \r
- * complex code that takes longer to execute, but makes much less use of \r
- * critical sections. Therefore the alternative API sacrifices interrupt \r
- * responsiveness to gain execution speed, whereas the fully featured API\r
- * sacrifices execution speed to ensure better interrupt responsiveness.\r
- */\r
-signed portBASE_TYPE xQueueAltGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition );\r
-signed portBASE_TYPE xQueueAltGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking );\r
-#define xQueueAltSendToFront( xQueue, pvItemToQueue, xTicksToWait ) xQueueAltGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_FRONT )\r
-#define xQueueAltSendToBack( xQueue, pvItemToQueue, xTicksToWait ) xQueueAltGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_BACK )\r
-#define xQueueAltReceive( xQueue, pvBuffer, xTicksToWait ) xQueueAltGenericReceive( xQueue, pvBuffer, xTicksToWait, pdFALSE )\r
-#define xQueueAltPeek( xQueue, pvBuffer, xTicksToWait ) xQueueAltGenericReceive( xQueue, pvBuffer, xTicksToWait, pdTRUE )\r
-\r
-/*\r
- * The functions defined above are for passing data to and from tasks. The\r
- * functions below are the equivalents for passing data to and from\r
- * co-routines.\r
- *\r
- * These functions are called from the co-routine macro implementation and\r
- * should not be called directly from application code. Instead use the macro\r
- * wrappers defined within croutine.h.\r
- */\r
-signed portBASE_TYPE xQueueCRSendFromISR( xQueueHandle pxQueue, const void *pvItemToQueue, signed portBASE_TYPE xCoRoutinePreviouslyWoken );\r
-signed portBASE_TYPE xQueueCRReceiveFromISR( xQueueHandle pxQueue, void *pvBuffer, signed portBASE_TYPE *pxTaskWoken );\r
-signed portBASE_TYPE xQueueCRSend( xQueueHandle pxQueue, const void *pvItemToQueue, portTickType xTicksToWait );\r
-signed portBASE_TYPE xQueueCRReceive( xQueueHandle pxQueue, void *pvBuffer, portTickType xTicksToWait );\r
-\r
-/*\r
- * For internal use only. Use xSemaphoreCreateMutex() or\r
- * xSemaphoreCreateCounting() instead of calling these functions directly.\r
- */\r
-xQueueHandle xQueueCreateMutex( void );\r
-xQueueHandle xQueueCreateCountingSemaphore( unsigned portBASE_TYPE uxCountValue, unsigned portBASE_TYPE uxInitialCount );\r
-\r
-/*\r
- * For internal use only. Use xSemaphoreTakeMutexRecursive() or\r
- * xSemaphoreGiveMutexRecursive() instead of calling these functions directly.\r
- */\r
-portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle xMutex, portTickType xBlockTime );\r
-portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle xMutex );\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* QUEUE_H */\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section \r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-#ifndef SEMAPHORE_H\r
-#define SEMAPHORE_H\r
-\r
-#include "queue.h"\r
-\r
-typedef xQueueHandle xSemaphoreHandle;\r
-\r
-#define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( unsigned portCHAR ) 1 )\r
-#define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( unsigned portCHAR ) 0 )\r
-#define semGIVE_BLOCK_TIME ( ( portTickType ) 0 )\r
-\r
-\r
-/**\r
- * semphr. h\r
- * <pre>vSemaphoreCreateBinary( xSemaphoreHandle xSemaphore )</pre>\r
- *\r
- * <i>Macro</i> that implements a semaphore by using the existing queue mechanism.\r
- * The queue length is 1 as this is a binary semaphore. The data size is 0\r
- * as we don't want to actually store any data - we just want to know if the\r
- * queue is empty or full.\r
- *\r
- * This type of semaphore can be used for pure synchronisation between tasks or\r
- * between an interrupt and a task. The semaphore need not be given back once\r
- * obtained, so one task/interrupt can continuously 'give' the semaphore while\r
- * another continuously 'takes' the semaphore. For this reason this type of\r
- * semaphore does not use a priority inheritance mechanism. For an alternative\r
- * that does use priority inheritance see xSemaphoreCreateMutex().\r
- *\r
- * @param xSemaphore Handle to the created semaphore. Should be of type xSemaphoreHandle.\r
- *\r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xSemaphore;\r
-\r
- void vATask( void * pvParameters )\r
- {\r
- // Semaphore cannot be used before a call to vSemaphoreCreateBinary ().\r
- // This is a macro so pass the variable in directly.\r
- vSemaphoreCreateBinary( xSemaphore );\r
-\r
- if( xSemaphore != NULL )\r
- {\r
- // The semaphore was created successfully.\r
- // The semaphore can now be used. \r
- }\r
- }\r
- </pre>\r
- * \defgroup vSemaphoreCreateBinary vSemaphoreCreateBinary\r
- * \ingroup Semaphores\r
- */\r
-#define vSemaphoreCreateBinary( xSemaphore ) { \\r
- xSemaphore = xQueueCreate( ( unsigned portBASE_TYPE ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH ); \\r
- if( xSemaphore != NULL ) \\r
- { \\r
- xSemaphoreGive( xSemaphore ); \\r
- } \\r
- }\r
-\r
-/**\r
- * semphr. h\r
- * xSemaphoreTake( \r
- * xSemaphoreHandle xSemaphore, \r
- * portTickType xBlockTime \r
- * )</pre>\r
- *\r
- * <i>Macro</i> to obtain a semaphore. The semaphore must have previously been\r
- * created with a call to vSemaphoreCreateBinary(), xSemaphoreCreateMutex() or\r
- * xSemaphoreCreateCounting().\r
- *\r
- * @param xSemaphore A handle to the semaphore being taken - obtained when\r
- * the semaphore was created.\r
- *\r
- * @param xBlockTime The time in ticks to wait for the semaphore to become\r
- * available. The macro portTICK_RATE_MS can be used to convert this to a\r
- * real time. A block time of zero can be used to poll the semaphore. A block\r
- * time of portMAX_DELAY can be used to block indefinitely (provided\r
- * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h).\r
- *\r
- * @return pdTRUE if the semaphore was obtained. pdFALSE\r
- * if xBlockTime expired without the semaphore becoming available.\r
- *\r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xSemaphore = NULL;\r
-\r
- // A task that creates a semaphore.\r
- void vATask( void * pvParameters )\r
- {\r
- // Create the semaphore to guard a shared resource.\r
- vSemaphoreCreateBinary( xSemaphore );\r
- }\r
-\r
- // A task that uses the semaphore.\r
- void vAnotherTask( void * pvParameters )\r
- {\r
- // ... Do other things.\r
-\r
- if( xSemaphore != NULL )\r
- {\r
- // See if we can obtain the semaphore. If the semaphore is not available\r
- // wait 10 ticks to see if it becomes free. \r
- if( xSemaphoreTake( xSemaphore, ( portTickType ) 10 ) == pdTRUE )\r
- {\r
- // We were able to obtain the semaphore and can now access the\r
- // shared resource.\r
-\r
- // ...\r
-\r
- // We have finished accessing the shared resource. Release the \r
- // semaphore.\r
- xSemaphoreGive( xSemaphore );\r
- }\r
- else\r
- {\r
- // We could not obtain the semaphore and can therefore not access\r
- // the shared resource safely.\r
- }\r
- }\r
- }\r
- </pre>\r
- * \defgroup xSemaphoreTake xSemaphoreTake\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueGenericReceive( ( xQueueHandle ) xSemaphore, NULL, xBlockTime, pdFALSE )\r
-\r
-/**\r
- * semphr. h\r
- * xSemaphoreTakeRecursive( \r
- * xSemaphoreHandle xMutex, \r
- * portTickType xBlockTime \r
- * )\r
- *\r
- * <i>Macro</i> to recursively obtain, or 'take', a mutex type semaphore. \r
- * The mutex must have previously been created using a call to \r
- * xSemaphoreCreateRecursiveMutex();\r
- * \r
- * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this\r
- * macro to be available.\r
- * \r
- * This macro must not be used on mutexes created using xSemaphoreCreateMutex().\r
- *\r
- * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex \r
- * doesn't become available again until the owner has called \r
- * xSemaphoreGiveRecursive() for each successful 'take' request. For example, \r
- * if a task successfully 'takes' the same mutex 5 times then the mutex will \r
- * not be available to any other task until it has also 'given' the mutex back\r
- * exactly five times.\r
- *\r
- * @param xMutex A handle to the mutex being obtained. This is the\r
- * handle returned by xSemaphoreCreateRecursiveMutex();\r
- *\r
- * @param xBlockTime The time in ticks to wait for the semaphore to become\r
- * available. The macro portTICK_RATE_MS can be used to convert this to a\r
- * real time. A block time of zero can be used to poll the semaphore. If\r
- * the task already owns the semaphore then xSemaphoreTakeRecursive() will\r
- * return immediately no matter what the value of xBlockTime. \r
- *\r
- * @return pdTRUE if the semaphore was obtained. pdFALSE if xBlockTime\r
- * expired without the semaphore becoming available.\r
- *\r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xMutex = NULL;\r
-\r
- // A task that creates a mutex.\r
- void vATask( void * pvParameters )\r
- {\r
- // Create the mutex to guard a shared resource.\r
- xMutex = xSemaphoreCreateRecursiveMutex();\r
- }\r
-\r
- // A task that uses the mutex.\r
- void vAnotherTask( void * pvParameters )\r
- {\r
- // ... Do other things.\r
-\r
- if( xMutex != NULL )\r
- {\r
- // See if we can obtain the mutex. If the mutex is not available\r
- // wait 10 ticks to see if it becomes free. \r
- if( xSemaphoreTakeRecursive( xSemaphore, ( portTickType ) 10 ) == pdTRUE )\r
- {\r
- // We were able to obtain the mutex and can now access the\r
- // shared resource.\r
-\r
- // ...\r
- // For some reason due to the nature of the code further calls to \r
- // xSemaphoreTakeRecursive() are made on the same mutex. In real\r
- // code these would not be just sequential calls as this would make\r
- // no sense. Instead the calls are likely to be buried inside\r
- // a more complex call structure.\r
- xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );\r
- xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );\r
-\r
- // The mutex has now been 'taken' three times, so will not be \r
- // available to another task until it has also been given back\r
- // three times. Again it is unlikely that real code would have\r
- // these calls sequentially, but instead buried in a more complex\r
- // call structure. This is just for illustrative purposes.\r
- xSemaphoreGiveRecursive( xMutex );\r
- xSemaphoreGiveRecursive( xMutex );\r
- xSemaphoreGiveRecursive( xMutex );\r
-\r
- // Now the mutex can be taken by other tasks.\r
- }\r
- else\r
- {\r
- // We could not obtain the mutex and can therefore not access\r
- // the shared resource safely.\r
- }\r
- }\r
- }\r
- </pre>\r
- * \defgroup xSemaphoreTakeRecursive xSemaphoreTakeRecursive\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreTakeRecursive( xMutex, xBlockTime ) xQueueTakeMutexRecursive( xMutex, xBlockTime )\r
-\r
-\r
-/* \r
- * xSemaphoreAltTake() is an alternative version of xSemaphoreTake().\r
- *\r
- * The source code that implements the alternative (Alt) API is much \r
- * simpler because it executes everything from within a critical section. \r
- * This is the approach taken by many other RTOSes, but FreeRTOS.org has the \r
- * preferred fully featured API too. The fully featured API has more \r
- * complex code that takes longer to execute, but makes much less use of \r
- * critical sections. Therefore the alternative API sacrifices interrupt \r
- * responsiveness to gain execution speed, whereas the fully featured API\r
- * sacrifices execution speed to ensure better interrupt responsiveness.\r
- */\r
-#define xSemaphoreAltTake( xSemaphore, xBlockTime ) xQueueAltGenericReceive( ( xQueueHandle ) xSemaphore, NULL, xBlockTime, pdFALSE )\r
-\r
-/**\r
- * semphr. h\r
- * <pre>xSemaphoreGive( xSemaphoreHandle xSemaphore )</pre>\r
- *\r
- * <i>Macro</i> to release a semaphore. The semaphore must have previously been\r
- * created with a call to vSemaphoreCreateBinary(), xSemaphoreCreateMutex() or\r
- * xSemaphoreCreateCounting(). and obtained using sSemaphoreTake().\r
- *\r
- * This macro must not be used from an ISR. See xSemaphoreGiveFromISR () for\r
- * an alternative which can be used from an ISR.\r
- *\r
- * This macro must also not be used on semaphores created using \r
- * xSemaphoreCreateRecursiveMutex().\r
- *\r
- * @param xSemaphore A handle to the semaphore being released. This is the\r
- * handle returned when the semaphore was created.\r
- *\r
- * @return pdTRUE if the semaphore was released. pdFALSE if an error occurred.\r
- * Semaphores are implemented using queues. An error can occur if there is\r
- * no space on the queue to post a message - indicating that the \r
- * semaphore was not first obtained correctly.\r
- *\r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xSemaphore = NULL;\r
-\r
- void vATask( void * pvParameters )\r
- {\r
- // Create the semaphore to guard a shared resource.\r
- vSemaphoreCreateBinary( xSemaphore );\r
-\r
- if( xSemaphore != NULL )\r
- {\r
- if( xSemaphoreGive( xSemaphore ) != pdTRUE )\r
- {\r
- // We would expect this call to fail because we cannot give\r
- // a semaphore without first "taking" it!\r
- }\r
-\r
- // Obtain the semaphore - don't block if the semaphore is not\r
- // immediately available.\r
- if( xSemaphoreTake( xSemaphore, ( portTickType ) 0 ) )\r
- {\r
- // We now have the semaphore and can access the shared resource.\r
-\r
- // ...\r
-\r
- // We have finished accessing the shared resource so can free the\r
- // semaphore.\r
- if( xSemaphoreGive( xSemaphore ) != pdTRUE )\r
- {\r
- // We would not expect this call to fail because we must have\r
- // obtained the semaphore to get here.\r
- }\r
- }\r
- }\r
- }\r
- </pre>\r
- * \defgroup xSemaphoreGive xSemaphoreGive\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreGive( xSemaphore ) xQueueGenericSend( ( xQueueHandle ) xSemaphore, NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK )\r
-\r
-/**\r
- * semphr. h\r
- * <pre>xSemaphoreGiveRecursive( xSemaphoreHandle xMutex )</pre>\r
- *\r
- * <i>Macro</i> to recursively release, or 'give', a mutex type semaphore.\r
- * The mutex must have previously been created using a call to \r
- * xSemaphoreCreateRecursiveMutex();\r
- * \r
- * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this\r
- * macro to be available.\r
- *\r
- * This macro must not be used on mutexes created using xSemaphoreCreateMutex().\r
- * \r
- * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex \r
- * doesn't become available again until the owner has called \r
- * xSemaphoreGiveRecursive() for each successful 'take' request. For example, \r
- * if a task successfully 'takes' the same mutex 5 times then the mutex will \r
- * not be available to any other task until it has also 'given' the mutex back\r
- * exactly five times.\r
- *\r
- * @param xMutex A handle to the mutex being released, or 'given'. This is the\r
- * handle returned by xSemaphoreCreateMutex();\r
- *\r
- * @return pdTRUE if the semaphore was given.\r
- *\r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xMutex = NULL;\r
-\r
- // A task that creates a mutex.\r
- void vATask( void * pvParameters )\r
- {\r
- // Create the mutex to guard a shared resource.\r
- xMutex = xSemaphoreCreateRecursiveMutex();\r
- }\r
-\r
- // A task that uses the mutex.\r
- void vAnotherTask( void * pvParameters )\r
- {\r
- // ... Do other things.\r
-\r
- if( xMutex != NULL )\r
- {\r
- // See if we can obtain the mutex. If the mutex is not available\r
- // wait 10 ticks to see if it becomes free. \r
- if( xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 ) == pdTRUE )\r
- {\r
- // We were able to obtain the mutex and can now access the\r
- // shared resource.\r
-\r
- // ...\r
- // For some reason due to the nature of the code further calls to \r
- // xSemaphoreTakeRecursive() are made on the same mutex. In real\r
- // code these would not be just sequential calls as this would make\r
- // no sense. Instead the calls are likely to be buried inside\r
- // a more complex call structure.\r
- xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );\r
- xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );\r
-\r
- // The mutex has now been 'taken' three times, so will not be \r
- // available to another task until it has also been given back\r
- // three times. Again it is unlikely that real code would have\r
- // these calls sequentially, it would be more likely that the calls\r
- // to xSemaphoreGiveRecursive() would be called as a call stack\r
- // unwound. This is just for demonstrative purposes.\r
- xSemaphoreGiveRecursive( xMutex );\r
- xSemaphoreGiveRecursive( xMutex );\r
- xSemaphoreGiveRecursive( xMutex );\r
-\r
- // Now the mutex can be taken by other tasks.\r
- }\r
- else\r
- {\r
- // We could not obtain the mutex and can therefore not access\r
- // the shared resource safely.\r
- }\r
- }\r
- }\r
- </pre>\r
- * \defgroup xSemaphoreGiveRecursive xSemaphoreGiveRecursive\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreGiveRecursive( xMutex ) xQueueGiveMutexRecursive( xMutex )\r
-\r
-/* \r
- * xSemaphoreAltGive() is an alternative version of xSemaphoreGive().\r
- *\r
- * The source code that implements the alternative (Alt) API is much \r
- * simpler because it executes everything from within a critical section. \r
- * This is the approach taken by many other RTOSes, but FreeRTOS.org has the \r
- * preferred fully featured API too. The fully featured API has more \r
- * complex code that takes longer to execute, but makes much less use of \r
- * critical sections. Therefore the alternative API sacrifices interrupt \r
- * responsiveness to gain execution speed, whereas the fully featured API\r
- * sacrifices execution speed to ensure better interrupt responsiveness.\r
- */\r
-#define xSemaphoreAltGive( xSemaphore ) xQueueAltGenericSend( ( xQueueHandle ) xSemaphore, NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK )\r
-\r
-/**\r
- * semphr. h\r
- * <pre>\r
- xSemaphoreGiveFromISR( \r
- xSemaphoreHandle xSemaphore, \r
- portSHORT sTaskPreviouslyWoken \r
- )</pre>\r
- *\r
- * <i>Macro</i> to release a semaphore. The semaphore must have previously been\r
- * created with a call to vSemaphoreCreateBinary() or xSemaphoreCreateCounting().\r
- *\r
- * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex())\r
- * must not be used with this macro.\r
- *\r
- * This macro can be used from an ISR.\r
- *\r
- * @param xSemaphore A handle to the semaphore being released. This is the\r
- * handle returned when the semaphore was created.\r
- *\r
- * @param sTaskPreviouslyWoken This is included so an ISR can make multiple calls\r
- * to xSemaphoreGiveFromISR () from a single interrupt. The first call\r
- * should always pass in pdFALSE. Subsequent calls should pass in\r
- * the value returned from the previous call. See the file serial .c in the\r
- * PC port for a good example of using xSemaphoreGiveFromISR ().\r
- *\r
- * @return pdTRUE if a task was woken by releasing the semaphore. This is \r
- * used by the ISR to determine if a context switch may be required following\r
- * the ISR.\r
- *\r
- * Example usage:\r
- <pre>\r
- #define LONG_TIME 0xffff\r
- #define TICKS_TO_WAIT 10\r
- xSemaphoreHandle xSemaphore = NULL;\r
-\r
- // Repetitive task.\r
- void vATask( void * pvParameters )\r
- {\r
- for( ;; )\r
- {\r
- // We want this task to run every 10 ticks of a timer. The semaphore \r
- // was created before this task was started.\r
-\r
- // Block waiting for the semaphore to become available.\r
- if( xSemaphoreTake( xSemaphore, LONG_TIME ) == pdTRUE )\r
- {\r
- // It is time to execute.\r
-\r
- // ...\r
-\r
- // We have finished our task. Return to the top of the loop where\r
- // we will block on the semaphore until it is time to execute \r
- // again. Note when using the semaphore for synchronisation with an\r
- // ISR in this manner there is no need to 'give' the semaphore back.\r
- }\r
- }\r
- }\r
-\r
- // Timer ISR\r
- void vTimerISR( void * pvParameters )\r
- {\r
- static unsigned portCHAR ucLocalTickCount = 0;\r
- static portBASE_TYPE xTaskWoken;\r
-\r
- // A timer tick has occurred.\r
-\r
- // ... Do other time functions.\r
-\r
- // Is it time for vATask () to run?\r
- xTaskWoken = pdFALSE;\r
- ucLocalTickCount++;\r
- if( ucLocalTickCount >= TICKS_TO_WAIT )\r
- {\r
- // Unblock the task by releasing the semaphore.\r
- xTaskWoken = xSemaphoreGiveFromISR( xSemaphore, xTaskWoken );\r
-\r
- // Reset the count so we release the semaphore again in 10 ticks time.\r
- ucLocalTickCount = 0;\r
- }\r
-\r
- if( xTaskWoken != pdFALSE )\r
- {\r
- // We can force a context switch here. Context switching from an\r
- // ISR uses port specific syntax. Check the demo task for your port\r
- // to find the syntax required.\r
- }\r
- }\r
- </pre>\r
- * \defgroup xSemaphoreGiveFromISR xSemaphoreGiveFromISR\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreGiveFromISR( xSemaphore, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( ( xQueueHandle ) xSemaphore, NULL, xTaskPreviouslyWoken, queueSEND_TO_BACK )\r
-\r
-/**\r
- * semphr. h\r
- * <pre>xSemaphoreHandle xSemaphoreCreateMutex( void )</pre>\r
- *\r
- * <i>Macro</i> that implements a mutex semaphore by using the existing queue \r
- * mechanism.\r
- *\r
- * Mutexes created using this macro can be accessed using the xSemaphoreTake()\r
- * and xSemaphoreGive() macros. The xSemaphoreTakeRecursive() and \r
- * xSemaphoreGiveRecursive() macros should not be used.\r
- * \r
- * This type of semaphore uses a priority inheritance mechanism so a task \r
- * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the \r
- * semaphore it is no longer required. \r
- *\r
- * Mutex type semaphores cannot be used from within interrupt service routines. \r
- *\r
- * See xSemaphoreCreateBinary() for an alternative implementation that can be \r
- * used for pure synchronisation (where one task or interrupt always 'gives' the \r
- * semaphore and another always 'takes' the semaphore) and from within interrupt \r
- * service routines.\r
- *\r
- * @return xSemaphore Handle to the created mutex semaphore. Should be of type \r
- * xSemaphoreHandle.\r
- *\r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xSemaphore;\r
-\r
- void vATask( void * pvParameters )\r
- {\r
- // Semaphore cannot be used before a call to xSemaphoreCreateMutex().\r
- // This is a macro so pass the variable in directly.\r
- xSemaphore = xSemaphoreCreateMutex();\r
-\r
- if( xSemaphore != NULL )\r
- {\r
- // The semaphore was created successfully.\r
- // The semaphore can now be used. \r
- }\r
- }\r
- </pre>\r
- * \defgroup vSemaphoreCreateMutex vSemaphoreCreateMutex\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreCreateMutex() xQueueCreateMutex()\r
-\r
-\r
-/**\r
- * semphr. h\r
- * <pre>xSemaphoreHandle xSemaphoreCreateRecursiveMutex( void )</pre>\r
- *\r
- * <i>Macro</i> that implements a recursive mutex by using the existing queue \r
- * mechanism.\r
- *\r
- * Mutexes created using this macro can be accessed using the \r
- * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros. The \r
- * xSemaphoreTake() and xSemaphoreGive() macros should not be used.\r
- *\r
- * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex \r
- * doesn't become available again until the owner has called \r
- * xSemaphoreGiveRecursive() for each successful 'take' request. For example, \r
- * if a task successfully 'takes' the same mutex 5 times then the mutex will \r
- * not be available to any other task until it has also 'given' the mutex back\r
- * exactly five times.\r
- * \r
- * This type of semaphore uses a priority inheritance mechanism so a task \r
- * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the \r
- * semaphore it is no longer required. \r
- *\r
- * Mutex type semaphores cannot be used from within interrupt service routines. \r
- *\r
- * See xSemaphoreCreateBinary() for an alternative implementation that can be \r
- * used for pure synchronisation (where one task or interrupt always 'gives' the \r
- * semaphore and another always 'takes' the semaphore) and from within interrupt \r
- * service routines.\r
- *\r
- * @return xSemaphore Handle to the created mutex semaphore. Should be of type \r
- * xSemaphoreHandle.\r
- *\r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xSemaphore;\r
-\r
- void vATask( void * pvParameters )\r
- {\r
- // Semaphore cannot be used before a call to xSemaphoreCreateMutex().\r
- // This is a macro so pass the variable in directly.\r
- xSemaphore = xSemaphoreCreateRecursiveMutex();\r
-\r
- if( xSemaphore != NULL )\r
- {\r
- // The semaphore was created successfully.\r
- // The semaphore can now be used. \r
- }\r
- }\r
- </pre>\r
- * \defgroup vSemaphoreCreateMutex vSemaphoreCreateMutex\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex()\r
-\r
-/**\r
- * semphr. h\r
- * <pre>xSemaphoreHandle xSemaphoreCreateCounting( unsigned portBASE_TYPE uxMaxCount, unsigned portBASE_TYPE uxInitialCount )</pre>\r
- *\r
- * <i>Macro</i> that creates a counting semaphore by using the existing \r
- * queue mechanism. \r
- *\r
- * Counting semaphores are typically used for two things:\r
- *\r
- * 1) Counting events. \r
- *\r
- * In this usage scenario an event handler will 'give' a semaphore each time\r
- * an event occurs (incrementing the semaphore count value), and a handler \r
- * task will 'take' a semaphore each time it processes an event \r
- * (decrementing the semaphore count value). The count value is therefore \r
- * the difference between the number of events that have occurred and the \r
- * number that have been processed. In this case it is desirable for the \r
- * initial count value to be zero.\r
- *\r
- * 2) Resource management.\r
- *\r
- * In this usage scenario the count value indicates the number of resources\r
- * available. To obtain control of a resource a task must first obtain a \r
- * semaphore - decrementing the semaphore count value. When the count value\r
- * reaches zero there are no free resources. When a task finishes with the\r
- * resource it 'gives' the semaphore back - incrementing the semaphore count\r
- * value. In this case it is desirable for the initial count value to be\r
- * equal to the maximum count value, indicating that all resources are free.\r
- *\r
- * @param uxMaxCount The maximum count value that can be reached. When the \r
- * semaphore reaches this value it can no longer be 'given'.\r
- *\r
- * @param uxInitialCount The count value assigned to the semaphore when it is\r
- * created.\r
- *\r
- * @return Handle to the created semaphore. Null if the semaphore could not be\r
- * created.\r
- * \r
- * Example usage:\r
- <pre>\r
- xSemaphoreHandle xSemaphore;\r
-\r
- void vATask( void * pvParameters )\r
- {\r
- xSemaphoreHandle xSemaphore = NULL;\r
-\r
- // Semaphore cannot be used before a call to xSemaphoreCreateCounting().\r
- // The max value to which the semaphore can count should be 10, and the\r
- // initial value assigned to the count should be 0.\r
- xSemaphore = xSemaphoreCreateCounting( 10, 0 );\r
-\r
- if( xSemaphore != NULL )\r
- {\r
- // The semaphore was created successfully.\r
- // The semaphore can now be used. \r
- }\r
- }\r
- </pre>\r
- * \defgroup xSemaphoreCreateCounting xSemaphoreCreateCounting\r
- * \ingroup Semaphores\r
- */\r
-#define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( uxMaxCount, uxInitialCount )\r
-\r
-\r
-#endif /* SEMAPHORE_H */\r
-\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/*\r
-Changes since V4.3.1:\r
-\r
- + Added xTaskGetSchedulerState() function.\r
-*/\r
-\r
-#ifndef TASK_H\r
-#define TASK_H\r
-\r
-#include "portable.h"\r
-#include "list.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-/*-----------------------------------------------------------\r
- * MACROS AND DEFINITIONS\r
- *----------------------------------------------------------*/\r
-\r
-#define tskKERNEL_VERSION_NUMBER "V4.7.2"\r
-\r
-/**\r
- * task. h\r
- *\r
- * Type by which tasks are referenced. For example, a call to xTaskCreate\r
- * returns (via a pointer parameter) an xTaskHandle variable that can then\r
- * be used as a parameter to vTaskDelete to delete the task.\r
- *\r
- * \page xTaskHandle xTaskHandle\r
- * \ingroup Tasks\r
- */\r
-typedef void * xTaskHandle;\r
-\r
-/*\r
- * Used internally only.\r
- */\r
-typedef struct xTIME_OUT\r
-{\r
- portBASE_TYPE xOverflowCount;\r
- portTickType xTimeOnEntering;\r
-} xTimeOutType;\r
-\r
-/*\r
- * Defines the priority used by the idle task. This must not be modified.\r
- *\r
- * \ingroup TaskUtils\r
- */\r
-#define tskIDLE_PRIORITY ( ( unsigned portBASE_TYPE ) 0 )\r
-\r
-/**\r
- * task. h\r
- *\r
- * Macro for forcing a context switch.\r
- *\r
- * \page taskYIELD taskYIELD\r
- * \ingroup SchedulerControl\r
- */\r
-#define taskYIELD() portYIELD()\r
-\r
-/**\r
- * task. h\r
- *\r
- * Macro to mark the start of a critical code region. Preemptive context\r
- * switches cannot occur when in a critical region.\r
- *\r
- * NOTE: This may alter the stack (depending on the portable implementation)\r
- * so must be used with care!\r
- *\r
- * \page taskENTER_CRITICAL taskENTER_CRITICAL\r
- * \ingroup SchedulerControl\r
- */\r
-#define taskENTER_CRITICAL() portENTER_CRITICAL()\r
-\r
-/**\r
- * task. h\r
- *\r
- * Macro to mark the end of a critical code region. Preemptive context\r
- * switches cannot occur when in a critical region.\r
- *\r
- * NOTE: This may alter the stack (depending on the portable implementation)\r
- * so must be used with care!\r
- *\r
- * \page taskEXIT_CRITICAL taskEXIT_CRITICAL\r
- * \ingroup SchedulerControl\r
- */\r
-#define taskEXIT_CRITICAL() portEXIT_CRITICAL()\r
-\r
-/**\r
- * task. h\r
- *\r
- * Macro to disable all maskable interrupts.\r
- *\r
- * \page taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS\r
- * \ingroup SchedulerControl\r
- */\r
-#define taskDISABLE_INTERRUPTS() portDISABLE_INTERRUPTS()\r
-\r
-/**\r
- * task. h\r
- *\r
- * Macro to enable microcontroller interrupts.\r
- *\r
- * \page taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS\r
- * \ingroup SchedulerControl\r
- */\r
-#define taskENABLE_INTERRUPTS() portENABLE_INTERRUPTS()\r
-\r
-/* Definitions returned by xTaskGetSchedulerState(). */\r
-#define taskSCHEDULER_NOT_STARTED 0\r
-#define taskSCHEDULER_RUNNING 1\r
-#define taskSCHEDULER_SUSPENDED 2\r
-\r
-/*-----------------------------------------------------------\r
- * TASK CREATION API\r
- *----------------------------------------------------------*/\r
-\r
-/**\r
- * task. h\r
- *<pre>\r
- portBASE_TYPE xTaskCreate(\r
- pdTASK_CODE pvTaskCode,\r
- const portCHAR * const pcName,\r
- unsigned portSHORT usStackDepth,\r
- void *pvParameters,\r
- unsigned portBASE_TYPE uxPriority,\r
- xTaskHandle *pvCreatedTask\r
- );</pre>\r
- *\r
- * Create a new task and add it to the list of tasks that are ready to run.\r
- *\r
- * @param pvTaskCode Pointer to the task entry function. Tasks\r
- * must be implemented to never return (i.e. continuous loop).\r
- *\r
- * @param pcName A descriptive name for the task. This is mainly used to\r
- * facilitate debugging. Max length defined by tskMAX_TASK_NAME_LEN - default\r
- * is 16.\r
- *\r
- * @param usStackDepth The size of the task stack specified as the number of\r
- * variables the stack can hold - not the number of bytes. For example, if\r
- * the stack is 16 bits wide and usStackDepth is defined as 100, 200 bytes\r
- * will be allocated for stack storage.\r
- *\r
- * @param pvParameters Pointer that will be used as the parameter for the task\r
- * being created.\r
- *\r
- * @param uxPriority The priority at which the task should run.\r
- *\r
- * @param pvCreatedTask Used to pass back a handle by which the created task\r
- * can be referenced.\r
- *\r
- * @return pdPASS if the task was successfully created and added to a ready\r
- * list, otherwise an error code defined in the file errors. h\r
- *\r
- * Example usage:\r
- <pre>\r
- // Task to be created.\r
- void vTaskCode( void * pvParameters )\r
- {\r
- for( ;; )\r
- {\r
- // Task code goes here.\r
- }\r
- }\r
-\r
- // Function that creates a task.\r
- void vOtherFunction( void )\r
- {\r
- unsigned char ucParameterToPass;\r
- xTaskHandle xHandle;\r
- \r
- // Create the task, storing the handle.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );\r
- \r
- // Use the handle to delete the task.\r
- vTaskDelete( xHandle );\r
- }\r
- </pre>\r
- * \defgroup xTaskCreate xTaskCreate\r
- * \ingroup Tasks\r
- */\r
-signed portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask );\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskDelete( xTaskHandle pxTask );</pre>\r
- *\r
- * INCLUDE_vTaskDelete must be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * Remove a task from the RTOS real time kernels management. The task being\r
- * deleted will be removed from all ready, blocked, suspended and event lists.\r
- *\r
- * NOTE: The idle task is responsible for freeing the kernel allocated\r
- * memory from tasks that have been deleted. It is therefore important that\r
- * the idle task is not starved of microcontroller processing time if your\r
- * application makes any calls to vTaskDelete (). Memory allocated by the\r
- * task code is not automatically freed, and should be freed before the task\r
- * is deleted.\r
- *\r
- * See the demo application file death.c for sample code that utilises\r
- * vTaskDelete ().\r
- *\r
- * @param pxTask The handle of the task to be deleted. Passing NULL will\r
- * cause the calling task to be deleted.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vOtherFunction( void )\r
- {\r
- xTaskHandle xHandle;\r
- \r
- // Create the task, storing the handle.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\r
- \r
- // Use the handle to delete the task.\r
- vTaskDelete( xHandle );\r
- }\r
- </pre>\r
- * \defgroup vTaskDelete vTaskDelete\r
- * \ingroup Tasks\r
- */\r
-void vTaskDelete( xTaskHandle pxTask );\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * TASK CONTROL API\r
- *----------------------------------------------------------*/\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskDelay( portTickType xTicksToDelay );</pre>\r
- *\r
- * Delay a task for a given number of ticks. The actual time that the\r
- * task remains blocked depends on the tick rate. The constant\r
- * portTICK_RATE_MS can be used to calculate real time from the tick\r
- * rate - with the resolution of one tick period.\r
- *\r
- * INCLUDE_vTaskDelay must be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * @param xTicksToDelay The amount of time, in tick periods, that\r
- * the calling task should block.\r
- *\r
- * Example usage:\r
- <pre>\r
- // Wait 10 ticks before performing an action.\r
- // NOTE:\r
- // This is for demonstration only and would be better achieved\r
- // using vTaskDelayUntil ().\r
- void vTaskFunction( void * pvParameters )\r
- {\r
- portTickType xDelay, xNextTime;\r
-\r
- // Calc the time at which we want to perform the action\r
- // next.\r
- xNextTime = xTaskGetTickCount () + ( portTickType ) 10;\r
-\r
- for( ;; )\r
- {\r
- xDelay = xNextTime - xTaskGetTickCount ();\r
- xNextTime += ( portTickType ) 10;\r
-\r
- // Guard against overflow\r
- if( xDelay <= ( portTickType ) 10 )\r
- {\r
- vTaskDelay( xDelay );\r
- }\r
-\r
- // Perform action here.\r
- }\r
- }\r
- </pre>\r
- * \defgroup vTaskDelay vTaskDelay\r
- * \ingroup TaskCtrl\r
- */\r
-void vTaskDelay( portTickType xTicksToDelay );\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );</pre>\r
- *\r
- * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * Delay a task until a specified time. This function can be used by cyclical\r
- * tasks to ensure a constant execution frequency.\r
- *\r
- * This function differs from vTaskDelay () in one important aspect: vTaskDelay () will\r
- * cause a task to block for the specified number of ticks from the time vTaskDelay () is\r
- * called. It is therefore difficult to use vTaskDelay () by itself to generate a fixed\r
- * execution frequency as the time between a task starting to execute and that task\r
- * calling vTaskDelay () may not be fixed [the task may take a different path though the\r
- * code between calls, or may get interrupted or preempted a different number of times\r
- * each time it executes].\r
- *\r
- * Whereas vTaskDelay () specifies a wake time relative to the time at which the function\r
- * is called, vTaskDelayUntil () specifies the absolute (exact) time at which it wishes to\r
- * unblock.\r
- *\r
- * The constant portTICK_RATE_MS can be used to calculate real time from the tick\r
- * rate - with the resolution of one tick period.\r
- *\r
- * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the\r
- * task was last unblocked. The variable must be initialised with the current time\r
- * prior to its first use (see the example below). Following this the variable is\r
- * automatically updated within vTaskDelayUntil ().\r
- *\r
- * @param xTimeIncrement The cycle time period. The task will be unblocked at\r
- * time *pxPreviousWakeTime + xTimeIncrement. Calling vTaskDelayUntil with the\r
- * same xTimeIncrement parameter value will cause the task to execute with\r
- * a fixed interface period.\r
- *\r
- * Example usage:\r
- <pre>\r
- // Perform an action every 10 ticks.\r
- void vTaskFunction( void * pvParameters )\r
- {\r
- portTickType xLastWakeTime;\r
- const portTickType xFrequency = 10;\r
-\r
- // Initialise the xLastWakeTime variable with the current time.\r
- xLastWakeTime = xTaskGetTickCount ();\r
- for( ;; )\r
- {\r
- // Wait for the next cycle.\r
- vTaskDelayUntil( &xLastWakeTime, xFrequency );\r
-\r
- // Perform action here.\r
- }\r
- }\r
- </pre>\r
- * \defgroup vTaskDelayUntil vTaskDelayUntil\r
- * \ingroup TaskCtrl\r
- */\r
-void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement );\r
-\r
-/**\r
- * task. h\r
- * <pre>unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );</pre>\r
- *\r
- * INCLUDE_xTaskPriorityGet must be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * Obtain the priority of any task.\r
- *\r
- * @param pxTask Handle of the task to be queried. Passing a NULL\r
- * handle results in the priority of the calling task being returned.\r
- *\r
- * @return The priority of pxTask.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vAFunction( void )\r
- {\r
- xTaskHandle xHandle;\r
- \r
- // Create a task, storing the handle.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\r
- \r
- // ...\r
-\r
- // Use the handle to obtain the priority of the created task.\r
- // It was created with tskIDLE_PRIORITY, but may have changed\r
- // it itself.\r
- if( uxTaskPriorityGet( xHandle ) != tskIDLE_PRIORITY )\r
- {\r
- // The task has changed it's priority.\r
- }\r
-\r
- // ...\r
-\r
- // Is our priority higher than the created task?\r
- if( uxTaskPriorityGet( xHandle ) < uxTaskPriorityGet( NULL ) )\r
- {\r
- // Our priority (obtained using NULL handle) is higher.\r
- }\r
- }\r
- </pre>\r
- * \defgroup uxTaskPriorityGet uxTaskPriorityGet\r
- * \ingroup TaskCtrl\r
- */\r
-unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority );</pre>\r
- *\r
- * INCLUDE_vTaskPrioritySet must be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * Set the priority of any task.\r
- *\r
- * A context switch will occur before the function returns if the priority\r
- * being set is higher than the currently executing task.\r
- *\r
- * @param pxTask Handle to the task for which the priority is being set.\r
- * Passing a NULL handle results in the priority of the calling task being set.\r
- *\r
- * @param uxNewPriority The priority to which the task will be set.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vAFunction( void )\r
- {\r
- xTaskHandle xHandle;\r
- \r
- // Create a task, storing the handle.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\r
-\r
- // ...\r
-\r
- // Use the handle to raise the priority of the created task.\r
- vTaskPrioritySet( xHandle, tskIDLE_PRIORITY + 1 );\r
-\r
- // ...\r
-\r
- // Use a NULL handle to raise our priority to the same value.\r
- vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );\r
- }\r
- </pre>\r
- * \defgroup vTaskPrioritySet vTaskPrioritySet\r
- * \ingroup TaskCtrl\r
- */\r
-void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority );\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskSuspend( xTaskHandle pxTaskToSuspend );</pre>\r
- *\r
- * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * Suspend any task. When suspended a task will never get any microcontroller\r
- * processing time, no matter what its priority.\r
- *\r
- * Calls to vTaskSuspend are not accumulative -\r
- * i.e. calling vTaskSuspend () twice on the same task still only requires one\r
- * call to vTaskResume () to ready the suspended task.\r
- *\r
- * @param pxTaskToSuspend Handle to the task being suspended. Passing a NULL\r
- * handle will cause the calling task to be suspended.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vAFunction( void )\r
- {\r
- xTaskHandle xHandle;\r
- \r
- // Create a task, storing the handle.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\r
- \r
- // ...\r
-\r
- // Use the handle to suspend the created task.\r
- vTaskSuspend( xHandle );\r
-\r
- // ...\r
- \r
- // The created task will not run during this period, unless\r
- // another task calls vTaskResume( xHandle ).\r
- \r
- //...\r
- \r
-\r
- // Suspend ourselves.\r
- vTaskSuspend( NULL );\r
-\r
- // We cannot get here unless another task calls vTaskResume\r
- // with our handle as the parameter.\r
- }\r
- </pre>\r
- * \defgroup vTaskSuspend vTaskSuspend\r
- * \ingroup TaskCtrl\r
- */\r
-void vTaskSuspend( xTaskHandle pxTaskToSuspend );\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskResume( xTaskHandle pxTaskToResume );</pre>\r
- *\r
- * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * Resumes a suspended task.\r
- *\r
- * A task that has been suspended by one of more calls to vTaskSuspend ()\r
- * will be made available for running again by a single call to\r
- * vTaskResume ().\r
- *\r
- * @param pxTaskToResume Handle to the task being readied.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vAFunction( void )\r
- {\r
- xTaskHandle xHandle;\r
- \r
- // Create a task, storing the handle.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );\r
- \r
- // ...\r
-\r
- // Use the handle to suspend the created task.\r
- vTaskSuspend( xHandle );\r
-\r
- // ...\r
- \r
- // The created task will not run during this period, unless\r
- // another task calls vTaskResume( xHandle ).\r
- \r
- //...\r
- \r
-\r
- // Resume the suspended task ourselves.\r
- vTaskResume( xHandle );\r
-\r
- // The created task will once again get microcontroller processing\r
- // time in accordance with it priority within the system.\r
- }\r
- </pre>\r
- * \defgroup vTaskResume vTaskResume\r
- * \ingroup TaskCtrl\r
- */\r
-void vTaskResume( xTaskHandle pxTaskToResume );\r
-\r
-/**\r
- * task. h\r
- * <pre>void xTaskResumeFromISR( xTaskHandle pxTaskToResume );</pre>\r
- *\r
- * INCLUDE_xTaskResumeFromISR must be defined as 1 for this function to be \r
- * available. See the configuration section for more information.\r
- *\r
- * An implementation of vTaskResume() that can be called from within an ISR.\r
- *\r
- * A task that has been suspended by one of more calls to vTaskSuspend ()\r
- * will be made available for running again by a single call to\r
- * xTaskResumeFromISR ().\r
- *\r
- * @param pxTaskToResume Handle to the task being readied.\r
- *\r
- * \defgroup vTaskResumeFromISR vTaskResumeFromISR\r
- * \ingroup TaskCtrl\r
- */\r
-portBASE_TYPE xTaskResumeFromISR( xTaskHandle pxTaskToResume );\r
-\r
-/*-----------------------------------------------------------\r
- * SCHEDULER CONTROL\r
- *----------------------------------------------------------*/\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskStartScheduler( void );</pre>\r
- *\r
- * Starts the real time kernel tick processing. After calling the kernel\r
- * has control over which tasks are executed and when. This function\r
- * does not return until an executing task calls vTaskEndScheduler ().\r
- *\r
- * At least one task should be created via a call to xTaskCreate ()\r
- * before calling vTaskStartScheduler (). The idle task is created\r
- * automatically when the first application task is created.\r
- *\r
- * See the demo application file main.c for an example of creating\r
- * tasks and starting the kernel.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vAFunction( void )\r
- {\r
- // Create at least one task before starting the kernel.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
-\r
- // Start the real time kernel with preemption.\r
- vTaskStartScheduler ();\r
-\r
- // Will not get here unless a task calls vTaskEndScheduler ()\r
- }\r
- </pre>\r
- *\r
- * \defgroup vTaskStartScheduler vTaskStartScheduler\r
- * \ingroup SchedulerControl\r
- */\r
-void vTaskStartScheduler( void );\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskEndScheduler( void );</pre>\r
- *\r
- * Stops the real time kernel tick. All created tasks will be automatically\r
- * deleted and multitasking (either preemptive or cooperative) will\r
- * stop. Execution then resumes from the point where vTaskStartScheduler ()\r
- * was called, as if vTaskStartScheduler () had just returned.\r
- *\r
- * See the demo application file main. c in the demo/PC directory for an\r
- * example that uses vTaskEndScheduler ().\r
- *\r
- * vTaskEndScheduler () requires an exit function to be defined within the\r
- * portable layer (see vPortEndScheduler () in port. c for the PC port). This\r
- * performs hardware specific operations such as stopping the kernel tick.\r
- *\r
- * vTaskEndScheduler () will cause all of the resources allocated by the\r
- * kernel to be freed - but will not free resources allocated by application\r
- * tasks.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vTaskCode( void * pvParameters )\r
- {\r
- for( ;; )\r
- {\r
- // Task code goes here.\r
-\r
- // At some point we want to end the real time kernel processing\r
- // so call ...\r
- vTaskEndScheduler ();\r
- }\r
- }\r
-\r
- void vAFunction( void )\r
- {\r
- // Create at least one task before starting the kernel.\r
- xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );\r
-\r
- // Start the real time kernel with preemption.\r
- vTaskStartScheduler ();\r
-\r
- // Will only get here when the vTaskCode () task has called\r
- // vTaskEndScheduler (). When we get here we are back to single task\r
- // execution.\r
- }\r
- </pre>\r
- *\r
- * \defgroup vTaskEndScheduler vTaskEndScheduler\r
- * \ingroup SchedulerControl\r
- */\r
-void vTaskEndScheduler( void );\r
-\r
-/**\r
- * task. h\r
- * <pre>void vTaskSuspendAll( void );</pre>\r
- *\r
- * Suspends all real time kernel activity while keeping interrupts (including the\r
- * kernel tick) enabled.\r
- *\r
- * After calling vTaskSuspendAll () the calling task will continue to execute\r
- * without risk of being swapped out until a call to xTaskResumeAll () has been\r
- * made.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vTask1( void * pvParameters )\r
- {\r
- for( ;; )\r
- {\r
- // Task code goes here.\r
-\r
- // ...\r
-\r
- // At some point the task wants to perform a long operation during\r
- // which it does not want to get swapped out. It cannot use\r
- // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the\r
- // operation may cause interrupts to be missed - including the\r
- // ticks.\r
-\r
- // Prevent the real time kernel swapping out the task.\r
- vTaskSuspendAll ();\r
-\r
- // Perform the operation here. There is no need to use critical\r
- // sections as we have all the microcontroller processing time.\r
- // During this time interrupts will still operate and the kernel\r
- // tick count will be maintained.\r
-\r
- // ...\r
-\r
- // The operation is complete. Restart the kernel.\r
- xTaskResumeAll ();\r
- }\r
- }\r
- </pre>\r
- * \defgroup vTaskSuspendAll vTaskSuspendAll\r
- * \ingroup SchedulerControl\r
- */\r
-void vTaskSuspendAll( void );\r
-\r
-/**\r
- * task. h\r
- * <pre>portCHAR xTaskResumeAll( void );</pre>\r
- *\r
- * Resumes real time kernel activity following a call to vTaskSuspendAll ().\r
- * After a call to vTaskSuspendAll () the kernel will take control of which\r
- * task is executing at any time.\r
- *\r
- * @return If resuming the scheduler caused a context switch then pdTRUE is\r
- * returned, otherwise pdFALSE is returned.\r
- *\r
- * Example usage:\r
- <pre>\r
- void vTask1( void * pvParameters )\r
- {\r
- for( ;; )\r
- {\r
- // Task code goes here.\r
-\r
- // ...\r
-\r
- // At some point the task wants to perform a long operation during\r
- // which it does not want to get swapped out. It cannot use\r
- // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the\r
- // operation may cause interrupts to be missed - including the\r
- // ticks.\r
-\r
- // Prevent the real time kernel swapping out the task.\r
- vTaskSuspendAll ();\r
-\r
- // Perform the operation here. There is no need to use critical\r
- // sections as we have all the microcontroller processing time.\r
- // During this time interrupts will still operate and the real\r
- // time kernel tick count will be maintained.\r
-\r
- // ...\r
-\r
- // The operation is complete. Restart the kernel. We want to force\r
- // a context switch - but there is no point if resuming the scheduler\r
- // caused a context switch already.\r
- if( !xTaskResumeAll () )\r
- {\r
- taskYIELD ();\r
- }\r
- }\r
- }\r
- </pre>\r
- * \defgroup xTaskResumeAll xTaskResumeAll\r
- * \ingroup SchedulerControl\r
- */\r
-signed portBASE_TYPE xTaskResumeAll( void );\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * TASK UTILITIES\r
- *----------------------------------------------------------*/\r
-\r
-/**\r
- * task. h\r
- * <PRE>volatile portTickType xTaskGetTickCount( void );</PRE>\r
- *\r
- * @return The count of ticks since vTaskStartScheduler was called.\r
- *\r
- * \page xTaskGetTickCount xTaskGetTickCount\r
- * \ingroup TaskUtils\r
- */\r
-portTickType xTaskGetTickCount( void );\r
-\r
-/**\r
- * task. h\r
- * <PRE>unsigned portSHORT uxTaskGetNumberOfTasks( void );</PRE>\r
- *\r
- * @return The number of tasks that the real time kernel is currently managing.\r
- * This includes all ready, blocked and suspended tasks. A task that\r
- * has been deleted but not yet freed by the idle task will also be\r
- * included in the count.\r
- *\r
- * \page uxTaskGetNumberOfTasks uxTaskGetNumberOfTasks\r
- * \ingroup TaskUtils\r
- */\r
-unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void );\r
-\r
-/**\r
- * task. h\r
- * <PRE>void vTaskList( portCHAR *pcWriteBuffer );</PRE>\r
- *\r
- * configUSE_TRACE_FACILITY, INCLUDE_vTaskDelete and INCLUDE_vTaskSuspend\r
- * must all be defined as 1 for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * NOTE: This function will disable interrupts for its duration. It is\r
- * not intended for normal application runtime use but as a debug aid.\r
- *\r
- * Lists all the current tasks, along with their current state and stack\r
- * usage high water mark.\r
- *\r
- * Tasks are reported as blocked ('B'), ready ('R'), deleted ('D') or\r
- * suspended ('S').\r
- *\r
- * @param pcWriteBuffer A buffer into which the above mentioned details\r
- * will be written, in ascii form. This buffer is assumed to be large\r
- * enough to contain the generated report. Approximately 40 bytes per\r
- * task should be sufficient.\r
- *\r
- * \page vTaskList vTaskList\r
- * \ingroup TaskUtils\r
- */\r
-void vTaskList( signed portCHAR *pcWriteBuffer );\r
-\r
-/**\r
- * task. h\r
- * <PRE>void vTaskStartTrace( portCHAR * pcBuffer, unsigned portBASE_TYPE uxBufferSize );</PRE>\r
- *\r
- * Starts a real time kernel activity trace. The trace logs the identity of\r
- * which task is running when.\r
- *\r
- * The trace file is stored in binary format. A separate DOS utility called\r
- * convtrce.exe is used to convert this into a tab delimited text file which\r
- * can be viewed and plotted in a spread sheet.\r
- *\r
- * @param pcBuffer The buffer into which the trace will be written.\r
- *\r
- * @param ulBufferSize The size of pcBuffer in bytes. The trace will continue\r
- * until either the buffer in full, or ulTaskEndTrace () is called.\r
- *\r
- * \page vTaskStartTrace vTaskStartTrace\r
- * \ingroup TaskUtils\r
- */\r
-void vTaskStartTrace( signed portCHAR * pcBuffer, unsigned portLONG ulBufferSize );\r
-\r
-/**\r
- * task. h\r
- * <PRE>unsigned portLONG ulTaskEndTrace( void );</PRE>\r
- *\r
- * Stops a kernel activity trace. See vTaskStartTrace ().\r
- *\r
- * @return The number of bytes that have been written into the trace buffer.\r
- *\r
- * \page usTaskEndTrace usTaskEndTrace\r
- * \ingroup TaskUtils\r
- */\r
-unsigned portLONG ulTaskEndTrace( void );\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES\r
- *----------------------------------------------------------*/\r
-\r
-/*\r
- * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY\r
- * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS\r
- * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\r
- *\r
- * Called from the real time kernel tick (either preemptive or cooperative),\r
- * this increments the tick count and checks if any tasks that are blocked\r
- * for a finite period required removing from a blocked list and placing on\r
- * a ready list.\r
- */\r
-inline void vTaskIncrementTick( void );\r
-\r
-/*\r
- * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN\r
- * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\r
- *\r
- * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED.\r
- *\r
- * Removes the calling task from the ready list and places it both\r
- * on the list of tasks waiting for a particular event, and the\r
- * list of delayed tasks. The task will be removed from both lists\r
- * and replaced on the ready list should either the event occur (and\r
- * there be no higher priority tasks waiting on the same event) or\r
- * the delay period expires.\r
- *\r
- * @param pxEventList The list containing tasks that are blocked waiting\r
- * for the event to occur.\r
- *\r
- * @param xTicksToWait The maximum amount of time that the task should wait\r
- * for the event to occur. This is specified in kernel ticks,the constant\r
- * portTICK_RATE_MS can be used to convert kernel ticks into a real time\r
- * period.\r
- */\r
-void vTaskPlaceOnEventList( const xList * const pxEventList, portTickType xTicksToWait );\r
-\r
-/*\r
- * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN\r
- * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\r
- *\r
- * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED.\r
- *\r
- * Removes a task from both the specified event list and the list of blocked\r
- * tasks, and places it on a ready queue.\r
- *\r
- * xTaskRemoveFromEventList () will be called if either an event occurs to\r
- * unblock a task, or the block timeout period expires.\r
- *\r
- * @return pdTRUE if the task being removed has a higher priority than the task\r
- * making the call, otherwise pdFALSE.\r
- */\r
-signed portBASE_TYPE xTaskRemoveFromEventList( const xList * const pxEventList );\r
-\r
-/*\r
- * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN\r
- * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\r
- *\r
- * INCLUDE_vTaskCleanUpResources and INCLUDE_vTaskSuspend must be defined as 1\r
- * for this function to be available.\r
- * See the configuration section for more information.\r
- *\r
- * Empties the ready and delayed queues of task control blocks, freeing the\r
- * memory allocated for the task control block and task stacks as it goes.\r
- */\r
-void vTaskCleanUpResources( void );\r
-\r
-/*\r
- * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY\r
- * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS\r
- * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER.\r
- *\r
- * Sets the pointer to the current TCB to the TCB of the highest priority task\r
- * that is ready to run.\r
- */\r
-inline void vTaskSwitchContext( void );\r
-\r
-/*\r
- * Return the handle of the calling task.\r
- */\r
-xTaskHandle xTaskGetCurrentTaskHandle( void );\r
-\r
-/*\r
- * Capture the current time status for future reference.\r
- */\r
-void vTaskSetTimeOutState( xTimeOutType * const pxTimeOut );\r
-\r
-/*\r
- * Compare the time status now with that previously captured to see if the\r
- * timeout has expired.\r
- */\r
-portBASE_TYPE xTaskCheckForTimeOut( xTimeOutType * const pxTimeOut, portTickType * const pxTicksToWait );\r
-\r
-/*\r
- * Shortcut used by the queue implementation to prevent unnecessary call to\r
- * taskYIELD();\r
- */\r
-void vTaskMissedYield( void );\r
-\r
-/*\r
- * Returns the scheduler state as taskSCHEDULER_RUNNING,\r
- * taskSCHEDULER_NOT_STARTED or taskSCHEDULER_SUSPENDED.\r
- */\r
-portBASE_TYPE xTaskGetSchedulerState( void );\r
-\r
-/*\r
- * Raises the priority of the mutex holder to that of the calling task should\r
- * the mutex holder have a priority less than the calling task.\r
- */\r
-void vTaskPriorityInherit( xTaskHandle * const pxMutexHolder );\r
-\r
-/*\r
- * Set the priority of a task back to its proper priority in the case that it\r
- * inherited a higher priority while it was holding a semaphore.\r
- */\r
-void vTaskPriorityDisinherit( xTaskHandle * const pxMutexHolder );\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-#endif /* TASK_H */\r
-\r
-\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/*\r
-Changes from V1.2.0\r
-\r
- + Removed the volatile modifier from the function parameters. This was\r
- only ever included to prevent compiler warnings. Now warnings are\r
- removed by casting parameters where the calls are made.\r
-\r
- + prvListGetOwnerOfNextEntry() and prvListGetOwnerOfHeadEntry() have been\r
- removed from the c file and added as macros to the h file.\r
-\r
- + uxNumberOfItems has been added to the list structure. This removes the\r
- need for a pointer comparison when checking if a list is empty, and so\r
- is slightly faster.\r
-\r
- + Removed the NULL check in vListRemove(). This makes the call faster but\r
- necessitates any application code utilising the list implementation to\r
- ensure NULL pointers are not passed.\r
-\r
-Changes from V2.0.0\r
-\r
- + Double linked the lists to allow faster removal item removal.\r
-\r
-Changes from V2.6.1\r
-\r
- + Make use of the new portBASE_TYPE definition where ever appropriate.\r
-\r
-Changes from V3.0.0\r
-\r
- + API changes as described on the FreeRTOS.org WEB site.\r
-\r
-Changes from V3.2.4\r
-\r
- + Removed the pxHead member of the xList structure. This always pointed\r
- to the same place so has been removed to free a few bytes of RAM.\r
-\r
- + Introduced the xMiniListItem structure that does not include the \r
- xListItem members that are not required by the xListEnd member of a list.\r
- Again this was done to reduce RAM usage.\r
-\r
- + Changed the volatile definitions of some structure members to clean up\r
- the code where the list structures are used.\r
-\r
-Changes from V4.0.4\r
-\r
- + Optimised vListInsert() in the case when the wake time is the maximum \r
- tick count value.\r
-*/\r
-\r
-#include <stdlib.h>\r
-#include "FreeRTOS.h"\r
-#include "list.h"\r
-\r
-/*-----------------------------------------------------------\r
- * PUBLIC LIST API documented in list.h\r
- *----------------------------------------------------------*/\r
-\r
-void vListInitialise( xList *pxList )\r
-{\r
- /* The list structure contains a list item which is used to mark the\r
- end of the list. To initialise the list the list end is inserted\r
- as the only list entry. */\r
- pxList->pxIndex = ( xListItem * ) &( pxList->xListEnd );\r
-\r
- /* The list end value is the highest possible value in the list to\r
- ensure it remains at the end of the list. */\r
- pxList->xListEnd.xItemValue = portMAX_DELAY;\r
-\r
- /* The list end next and previous pointers point to itself so we know\r
- when the list is empty. */\r
- pxList->xListEnd.pxNext = ( xListItem * ) &( pxList->xListEnd );\r
- pxList->xListEnd.pxPrevious = ( xListItem * ) &( pxList->xListEnd );\r
-\r
- pxList->uxNumberOfItems = 0;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vListInitialiseItem( xListItem *pxItem )\r
-{\r
- /* Make sure the list item is not recorded as being on a list. */\r
- pxItem->pvContainer = NULL;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vListInsertEnd( xList *pxList, xListItem *pxNewListItem )\r
-{\r
-volatile xListItem * pxIndex;\r
-\r
- /* Insert a new list item into pxList, but rather than sort the list,\r
- makes the new list item the last item to be removed by a call to\r
- pvListGetOwnerOfNextEntry. This means it has to be the item pointed to by\r
- the pxIndex member. */\r
- pxIndex = pxList->pxIndex;\r
-\r
- pxNewListItem->pxNext = pxIndex->pxNext;\r
- pxNewListItem->pxPrevious = pxList->pxIndex;\r
- pxIndex->pxNext->pxPrevious = ( volatile xListItem * ) pxNewListItem;\r
- pxIndex->pxNext = ( volatile xListItem * ) pxNewListItem;\r
- pxList->pxIndex = ( volatile xListItem * ) pxNewListItem;\r
-\r
- /* Remember which list the item is in. */\r
- pxNewListItem->pvContainer = ( void * ) pxList;\r
-\r
- ( pxList->uxNumberOfItems )++;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vListInsert( xList *pxList, xListItem *pxNewListItem )\r
-{\r
-volatile xListItem *pxIterator;\r
-portTickType xValueOfInsertion;\r
-\r
- /* Insert the new list item into the list, sorted in ulListItem order. */\r
- xValueOfInsertion = pxNewListItem->xItemValue;\r
-\r
- /* If the list already contains a list item with the same item value then\r
- the new list item should be placed after it. This ensures that TCB's which\r
- are stored in ready lists (all of which have the same ulListItem value)\r
- get an equal share of the CPU. However, if the xItemValue is the same as \r
- the back marker the iteration loop below will not end. This means we need\r
- to guard against this by checking the value first and modifying the \r
- algorithm slightly if necessary. */\r
- if( xValueOfInsertion == portMAX_DELAY )\r
- {\r
- pxIterator = pxList->xListEnd.pxPrevious;\r
- }\r
- else\r
- {\r
- for( pxIterator = ( xListItem * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext )\r
- {\r
- /* There is nothing to do here, we are just iterating to the\r
- wanted insertion position. */\r
- }\r
- }\r
-\r
- pxNewListItem->pxNext = pxIterator->pxNext;\r
- pxNewListItem->pxNext->pxPrevious = ( volatile xListItem * ) pxNewListItem;\r
- pxNewListItem->pxPrevious = pxIterator;\r
- pxIterator->pxNext = ( volatile xListItem * ) pxNewListItem;\r
-\r
- /* Remember which list the item is in. This allows fast removal of the\r
- item later. */\r
- pxNewListItem->pvContainer = ( void * ) pxList;\r
-\r
- ( pxList->uxNumberOfItems )++;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vListRemove( xListItem *pxItemToRemove )\r
-{\r
-xList * pxList;\r
-\r
- pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;\r
- pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;\r
- \r
- /* The list item knows which list it is in. Obtain the list from the list\r
- item. */\r
- pxList = ( xList * ) pxItemToRemove->pvContainer;\r
-\r
- /* Make sure the index is left pointing to a valid item. */\r
- if( pxList->pxIndex == pxItemToRemove )\r
- {\r
- pxList->pxIndex = pxItemToRemove->pxPrevious;\r
- }\r
-\r
- pxItemToRemove->pvContainer = NULL;\r
- ( pxList->uxNumberOfItems )--;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section \r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/*\r
- Changes from V4.2.1\r
-\r
- + Introduced the configKERNEL_INTERRUPT_PRIORITY definition.\r
-*/\r
-\r
-/*-----------------------------------------------------------\r
- * Implementation of functions defined in portable.h for the PIC24 port.\r
- *----------------------------------------------------------*/\r
-\r
-/* Scheduler include files. */\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-\r
-/* Hardware specifics. */\r
-#define portBIT_SET 1\r
-#define portTIMER_PRESCALE 8\r
-#define portINITIAL_SR 0\r
-\r
-/* Defined for backward compatability with project created prior to \r
-FreeRTOS.org V4.3.0. */\r
-#ifndef configKERNEL_INTERRUPT_PRIORITY\r
- #define configKERNEL_INTERRUPT_PRIORITY 1\r
-#endif\r
-\r
-/* The program counter is only 23 bits. */\r
-#define portUNUSED_PR_BITS 0x7f\r
-\r
-/* Records the nesting depth of calls to portENTER_CRITICAL(). */\r
-unsigned portBASE_TYPE uxCriticalNesting = 0xef;\r
-\r
-#if configKERNEL_INTERRUPT_PRIORITY != 1\r
- #error If configKERNEL_INTERRUPT_PRIORITY is not 1 then the #32 in the following macros needs changing to equal the portINTERRUPT_BITS value, which is ( configKERNEL_INTERRUPT_PRIORITY << 5 )\r
-#endif\r
-\r
-\r
-#define portRESTORE_CONTEXT() \\r
- asm volatile( "MOV _pxCurrentTCB, W0 \n" /* Restore the stack pointer for the task. */ \\r
- "MOV [W0], W15 \n" \\r
- "POP W0 \n" /* Restore the critical nesting counter for the task. */ \\r
- "MOV W0, _uxCriticalNesting \n" \\r
- "POP PSVPAG \n" \\r
- "POP CORCON \n" \\r
- "POP DOENDH \n" \\r
- "POP DOENDL \n" \\r
- "POP DOSTARTH \n" \\r
- "POP DOSTARTL \n" \\r
- "POP DCOUNT \n" \\r
- "POP ACCBU \n" \\r
- "POP ACCBH \n" \\r
- "POP ACCBL \n" \\r
- "POP ACCAU \n" \\r
- "POP ACCAH \n" \\r
- "POP ACCAL \n" \\r
- "POP TBLPAG \n" \\r
- "POP RCOUNT \n" /* Restore the registers from the stack. */ \\r
- "POP W14 \n" \\r
- "POP.D W12 \n" \\r
- "POP.D W10 \n" \\r
- "POP.D W8 \n" \\r
- "POP.D W6 \n" \\r
- "POP.D W4 \n" \\r
- "POP.D W2 \n" \\r
- "POP.D W0 \n" \\r
- "POP SR " );\r
-\r
-\r
-#define portSAVE_CONTEXT() \\r
- asm volatile( "PUSH SR \n" /* Save the SR used by the task.... */ \\r
- "PUSH W0 \n" /* ....then disable interrupts. */ \\r
- "MOV #32, W0 \n" \\r
- "MOV W0, SR \n" \\r
- "PUSH W1 \n" /* Save registers to the stack. */ \\r
- "PUSH.D W2 \n" \\r
- "PUSH.D W4 \n" \\r
- "PUSH.D W6 \n" \\r
- "PUSH.D W8 \n" \\r
- "PUSH.D W10 \n" \\r
- "PUSH.D W12 \n" \\r
- "PUSH W14 \n" \\r
- "PUSH RCOUNT \n" \\r
- "PUSH TBLPAG \n" \\r
- "PUSH ACCAL \n" \\r
- "PUSH ACCAH \n" \\r
- "PUSH ACCAU \n" \\r
- "PUSH ACCBL \n" \\r
- "PUSH ACCBH \n" \\r
- "PUSH ACCBU \n" \\r
- "PUSH DCOUNT \n" \\r
- "PUSH DOSTARTL \n" \\r
- "PUSH DOSTARTH \n" \\r
- "PUSH DOENDL \n" \\r
- "PUSH DOENDH \n" \\r
- "PUSH CORCON \n" \\r
- "PUSH PSVPAG \n" \\r
- "MOV _uxCriticalNesting, W0 \n" /* Save the critical nesting counter for the task. */ \\r
- "PUSH W0 \n" \\r
- "MOV _pxCurrentTCB, W0 \n" /* Save the new top of stack into the TCB. */ \\r
- "MOV W15, [W0] " );\r
-\r
-/*\r
- * Setup the timer used to generate the tick interrupt.\r
- */\r
-static void prvSetupTimerInterrupt( void );\r
-\r
-/* \r
- * See header file for description. \r
- */\r
-portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters )\r
-{\r
-unsigned portSHORT usCode;\r
-portBASE_TYPE i;\r
-\r
-const portSTACK_TYPE xInitialStack[] = \r
-{\r
- 0x1111, /* W1 */\r
- 0x2222, /* W2 */\r
- 0x3333, /* W3 */\r
- 0x4444, /* W4 */\r
- 0x5555, /* W5 */\r
- 0x6666, /* W6 */\r
- 0x7777, /* W7 */\r
- 0x8888, /* W8 */\r
- 0x9999, /* W9 */\r
- 0xaaaa, /* W10 */\r
- 0xbbbb, /* W11 */\r
- 0xcccc, /* W12 */\r
- 0xdddd, /* W13 */\r
- 0xeeee, /* W14 */\r
- 0xcdce, /* RCOUNT */\r
- 0xabac, /* TBLPAG */\r
-\r
- /* dsPIC specific registers. */\r
- 0x0202, /* ACCAL */\r
- 0x0303, /* ACCAH */\r
- 0x0404, /* ACCAU */\r
- 0x0505, /* ACCBL */\r
- 0x0606, /* ACCBH */\r
- 0x0707, /* ACCBU */\r
- 0x0808, /* DCOUNT */\r
- 0x090a, /* DOSTARTL */\r
- 0x1010, /* DOSTARTH */\r
- 0x1110, /* DOENDL */\r
- 0x1212, /* DOENDH */\r
-};\r
-\r
- /* Setup the stack as if a yield had occurred.\r
-\r
- Save the low bytes of the program counter. */\r
- usCode = ( unsigned portSHORT ) pxCode;\r
- *pxTopOfStack = ( portSTACK_TYPE ) usCode;\r
- pxTopOfStack++;\r
-\r
- /* Save the high byte of the program counter. This will always be zero\r
- here as it is passed in a 16bit pointer. If the address is greater than\r
- 16 bits then the pointer will point to a jump table. */\r
- *pxTopOfStack = ( portSTACK_TYPE ) 0;\r
- pxTopOfStack++;\r
-\r
- /* Status register with interrupts enabled. */\r
- *pxTopOfStack = portINITIAL_SR;\r
- pxTopOfStack++;\r
-\r
- /* Parameters are passed in W0. */\r
- *pxTopOfStack = ( portSTACK_TYPE ) pvParameters;\r
- pxTopOfStack++;\r
-\r
- for( i = 0; i < ( sizeof( xInitialStack ) / sizeof( portSTACK_TYPE ) ); i++ )\r
- {\r
- *pxTopOfStack = xInitialStack[ i ];\r
- pxTopOfStack++;\r
- }\r
-\r
- *pxTopOfStack = CORCON;\r
- pxTopOfStack++;\r
- *pxTopOfStack = PSVPAG;\r
- pxTopOfStack++;\r
-\r
- /* Finally the critical nesting depth. */\r
- *pxTopOfStack = 0x00;\r
- pxTopOfStack++;\r
-\r
- return pxTopOfStack;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-portBASE_TYPE xPortStartScheduler( void )\r
-{\r
- /* Setup a timer for the tick ISR. */\r
- prvSetupTimerInterrupt(); \r
-\r
- /* Restore the context of the first task to run. */\r
- portRESTORE_CONTEXT();\r
-\r
- /* Simulate the end of the yield function. */\r
- asm volatile ( "return" );\r
-\r
- /* Should not reach here. */\r
- return pdTRUE;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortEndScheduler( void )\r
-{\r
- /* It is unlikely that the scheduler for the PIC port will get stopped\r
- once running. If required disable the tick interrupt here, then return \r
- to xPortStartScheduler(). */\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-/*\r
- * Manual context switch. This is similar to the tick context switch,\r
- * but does not increment the tick count. It must be identical to the\r
- * tick context switch in how it stores the stack of a task.\r
- */\r
-void vPortYield( void )\r
-{\r
- portSAVE_CONTEXT();\r
- vTaskSwitchContext();\r
- portRESTORE_CONTEXT();\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-/*\r
- * Setup a timer for a regular tick.\r
- */\r
-static void prvSetupTimerInterrupt( void )\r
-{\r
-const unsigned portLONG ulCompareMatch = ( configCPU_CLOCK_HZ / portTIMER_PRESCALE ) / configTICK_RATE_HZ;\r
-\r
- /* Prescale of 8. */\r
- T1CON = 0;\r
- TMR1 = 0;\r
-\r
- PR1 = ( unsigned portSHORT ) ulCompareMatch;\r
-\r
- /* Setup timer 1 interrupt priority. */\r
- IPC0bits.T1IP = configKERNEL_INTERRUPT_PRIORITY;\r
-\r
- /* Clear the interrupt as a starting condition. */\r
- IFS0bits.T1IF = 0;\r
-\r
- /* Enable the interrupt. */\r
- IEC0bits.T1IE = 1;\r
-\r
- /* Setup the prescale value. */\r
-// T1CONbits.TCKPS0 = 1;\r
-// T1CONbits.TCKPS1 = 0;\r
- T1CONbits.TCKPS = 1;\r
-\r
- /* Start the timer. */\r
- T1CONbits.TON = 1;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortEnterCritical( void )\r
-{\r
- portDISABLE_INTERRUPTS();\r
- uxCriticalNesting++;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortExitCritical( void )\r
-{\r
- uxCriticalNesting--;\r
- if( uxCriticalNesting == 0 )\r
- {\r
- portENABLE_INTERRUPTS();\r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void __attribute__((__interrupt__, auto_psv)) _T1Interrupt( void )\r
-{\r
- vTaskIncrementTick();\r
-\r
- /* Clear the timer interrupt. */\r
- IFS0bits.T1IF = 0;\r
-\r
- #if configUSE_PREEMPTION == 1\r
- portYIELD();\r
- #endif\r
-}\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section \r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-#ifndef PORTMACRO_H\r
-#define PORTMACRO_H\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/*-----------------------------------------------------------\r
- * Port specific definitions. \r
- *\r
- * The settings in this file configure FreeRTOS correctly for the\r
- * given hardware and compiler.\r
- *\r
- * These settings should not be altered.\r
- *-----------------------------------------------------------\r
- */\r
-\r
-/* Type definitions. */\r
-#define portCHAR char\r
-#define portFLOAT float\r
-#define portDOUBLE double\r
-#define portLONG long\r
-#define portSHORT short\r
-#define portSTACK_TYPE unsigned short\r
-#define portBASE_TYPE short\r
-\r
-#if( configUSE_16_BIT_TICKS == 1 )\r
- typedef unsigned portSHORT portTickType;\r
- #define portMAX_DELAY ( portTickType ) 0xffff\r
-#else\r
- typedef unsigned portLONG portTickType;\r
- #define portMAX_DELAY ( portTickType ) 0xffffffff\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Hardware specifics. */\r
-#define portBYTE_ALIGNMENT 2\r
-#define portSTACK_GROWTH 1\r
-#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ ) \r
-/*-----------------------------------------------------------*/\r
-\r
-/* Critical section management. */\r
-#define portINTERRUPT_BITS ( ( unsigned portSHORT ) configKERNEL_INTERRUPT_PRIORITY << ( unsigned portSHORT ) 5 )\r
-\r
-#define portDISABLE_INTERRUPTS() SR |= portINTERRUPT_BITS \r
-#define portENABLE_INTERRUPTS() SR &= ~portINTERRUPT_BITS\r
-\r
-/* Note that exiting a critical sectino will set the IPL bits to 0, nomatter\r
-what their value was prior to entering the critical section. */\r
-extern void vPortEnterCritical( void );\r
-extern void vPortExitCritical( void );\r
-#define portENTER_CRITICAL() vPortEnterCritical()\r
-#define portEXIT_CRITICAL() vPortExitCritical()\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Task utilities. */\r
-extern void vPortYield( void );\r
-#define portYIELD() asm volatile ( "CALL _vPortYield \n" \\r
- "NOP " );\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Task function macros as described on the FreeRTOS.org WEB site. */\r
-#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
-#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters )\r
-/*-----------------------------------------------------------*/\r
-\r
-/* Compiler specifics. */\r
-#define inline\r
-\r
-#define portNOP() asm volatile ( "NOP" )\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* PORTMACRO_H */\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section \r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/* \r
-\r
-Changes between V2.5.1 and V2.5.1\r
-\r
- + The memory pool has been defined within a struct to ensure correct memory\r
- alignment on 32bit systems.\r
-\r
-Changes between V2.6.1 and V3.0.0\r
-\r
- + An overflow check has been added to ensure the next free byte variable \r
- does not wrap around.\r
-*/\r
-\r
-\r
-/*\r
- * The simplest possible implementation of pvPortMalloc(). Note that this\r
- * implementation does NOT allow allocated memory to be freed again.\r
- *\r
- * See heap_2.c and heap_3.c for alternative implementations, and the memory\r
- * management pages of http://www.FreeRTOS.org for more information.\r
- */\r
-#include <stdlib.h>\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-\r
-/* Setup the correct byte alignment mask for the defined byte alignment. */\r
-\r
-#if portBYTE_ALIGNMENT == 8\r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0007 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 4\r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0003 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 2\r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0001 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 1 \r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0000 )\r
-#endif\r
-\r
-#ifndef heapBYTE_ALIGNMENT_MASK\r
- #error "Invalid portBYTE_ALIGNMENT definition"\r
-#endif\r
-\r
-/* Allocate the memory for the heap. The struct is used to force byte\r
-alignment without using any non-portable code. */\r
-static struct xRTOS_HEAP\r
-{\r
- unsigned portLONG ulDummy;\r
- unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ];\r
-} xHeap;\r
-\r
-static size_t xNextFreeByte = ( size_t ) 0;\r
-/*-----------------------------------------------------------*/\r
-\r
-void *pvPortMalloc( size_t xWantedSize )\r
-{\r
-void *pvReturn = NULL; \r
-\r
- /* Ensure that blocks are always aligned to the required number of bytes. */\r
- #if portBYTE_ALIGNMENT != 1\r
- if( xWantedSize & heapBYTE_ALIGNMENT_MASK )\r
- {\r
- /* Byte alignment required. */\r
- xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & heapBYTE_ALIGNMENT_MASK ) );\r
- }\r
- #endif\r
-\r
- vTaskSuspendAll();\r
- {\r
- /* Check there is enough room left for the allocation. */\r
- if( ( ( xNextFreeByte + xWantedSize ) < configTOTAL_HEAP_SIZE ) &&\r
- ( ( xNextFreeByte + xWantedSize ) > xNextFreeByte ) )/* Check for overflow. */\r
- {\r
- /* Return the next free byte then increment the index past this\r
- block. */\r
- pvReturn = &( xHeap.ucHeap[ xNextFreeByte ] );\r
- xNextFreeByte += xWantedSize; \r
- } \r
- }\r
- xTaskResumeAll();\r
-\r
- return pvReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortFree( void *pv )\r
-{\r
- /* Memory cannot be freed using this scheme. See heap_2.c and heap_3.c \r
- for alternative implementations, and the memory management pages of \r
- http://www.FreeRTOS.org for more information. */\r
- ( void ) pv;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortInitialiseBlocks( void )\r
-{\r
- /* Only required when static memory is not cleared. */\r
- xNextFreeByte = ( size_t ) 0;\r
-}\r
-\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/*\r
- * A sample implementation of pvPortMalloc() and vPortFree() that permits\r
- * allocated blocks to be freed, but does not combine adjacent free blocks\r
- * into a single larger block.\r
- *\r
- * See heap_1.c and heap_3.c for alternative implementations, and the memory\r
- * management pages of http://www.FreeRTOS.org for more information.\r
- */\r
-#include <stdlib.h>\r
-\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-\r
-/* Setup the correct byte alignment mask for the defined byte alignment. */\r
-\r
-#if portBYTE_ALIGNMENT == 8\r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0007 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 4\r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0003 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 2\r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0001 )\r
-#endif\r
-\r
-#if portBYTE_ALIGNMENT == 1\r
- #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0000 )\r
-#endif\r
-\r
-#ifndef heapBYTE_ALIGNMENT_MASK\r
- #error "Invalid portBYTE_ALIGNMENT definition"\r
-#endif\r
-\r
-/* Allocate the memory for the heap. The struct is used to force byte\r
-alignment without using any non-portable code. */\r
-static struct xRTOS_HEAP\r
-{\r
- unsigned portLONG ulDummy;\r
- unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ];\r
-} xHeap;\r
-\r
-/* Define the linked list structure. This is used to link free blocks in order\r
-of their size. */\r
-typedef struct A_BLOCK_LINK\r
-{\r
- struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */\r
- size_t xBlockSize; /*<< The size of the free block. */\r
-} xBlockLink;\r
-\r
-\r
-static const unsigned portSHORT heapSTRUCT_SIZE = ( sizeof( xBlockLink ) + ( sizeof( xBlockLink ) % portBYTE_ALIGNMENT ) );\r
-#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) )\r
-\r
-/* Create a couple of list links to mark the start and end of the list. */\r
-static xBlockLink xStart, xEnd;\r
-\r
-/* STATIC FUNCTIONS ARE DEFINED AS MACROS TO MINIMIZE THE FUNCTION CALL DEPTH. */\r
-\r
-/*\r
- * Insert a block into the list of free blocks - which is ordered by size of\r
- * the block. Small blocks at the start of the list and large blocks at the end\r
- * of the list.\r
- */\r
-#define prvInsertBlockIntoFreeList( pxBlockToInsert ) \\r
-{ \\r
-xBlockLink *pxIterator; \\r
-size_t xBlockSize; \\r
- \\r
- xBlockSize = pxBlockToInsert->xBlockSize; \\r
- \\r
- /* Iterate through the list until a block is found that has a larger size */ \\r
- /* than the block we are inserting. */ \\r
- for( pxIterator = &xStart; pxIterator->pxNextFreeBlock->xBlockSize < xBlockSize; pxIterator = pxIterator->pxNextFreeBlock ) \\r
- { \\r
- /* There is nothing to do here - just iterate to the correct position. */ \\r
- } \\r
- \\r
- /* Update the list to include the block being inserted in the correct */ \\r
- /* position. */ \\r
- pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; \\r
- pxIterator->pxNextFreeBlock = pxBlockToInsert; \\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#define prvHeapInit() \\r
-{ \\r
-xBlockLink *pxFirstFreeBlock; \\r
- \\r
- /* xStart is used to hold a pointer to the first item in the list of free */ \\r
- /* blocks. The void cast is used to prevent compiler warnings. */ \\r
- xStart.pxNextFreeBlock = ( void * ) xHeap.ucHeap; \\r
- xStart.xBlockSize = ( size_t ) 0; \\r
- \\r
- /* xEnd is used to mark the end of the list of free blocks. */ \\r
- xEnd.xBlockSize = configTOTAL_HEAP_SIZE; \\r
- xEnd.pxNextFreeBlock = NULL; \\r
- \\r
- /* To start with there is a single free block that is sized to take up the \\r
- entire heap space. */ \\r
- pxFirstFreeBlock = ( void * ) xHeap.ucHeap; \\r
- pxFirstFreeBlock->xBlockSize = configTOTAL_HEAP_SIZE; \\r
- pxFirstFreeBlock->pxNextFreeBlock = &xEnd; \\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void *pvPortMalloc( size_t xWantedSize )\r
-{\r
-xBlockLink *pxBlock, *pxPreviousBlock, *pxNewBlockLink;\r
-static portBASE_TYPE xHeapHasBeenInitialised = pdFALSE;\r
-void *pvReturn = NULL;\r
-\r
- vTaskSuspendAll();\r
- {\r
- /* If this is the first call to malloc then the heap will require\r
- initialisation to setup the list of free blocks. */\r
- if( xHeapHasBeenInitialised == pdFALSE )\r
- {\r
- prvHeapInit();\r
- xHeapHasBeenInitialised = pdTRUE;\r
- }\r
-\r
- /* The wanted size is increased so it can contain a xBlockLink\r
- structure in addition to the requested amount of bytes. */\r
- if( xWantedSize > 0 )\r
- {\r
- xWantedSize += heapSTRUCT_SIZE;\r
-\r
- /* Ensure that blocks are always aligned to the required number of bytes. */\r
- if( xWantedSize & heapBYTE_ALIGNMENT_MASK )\r
- {\r
- /* Byte alignment required. */\r
- xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & heapBYTE_ALIGNMENT_MASK ) );\r
- }\r
- }\r
-\r
- if( ( xWantedSize > 0 ) && ( xWantedSize < configTOTAL_HEAP_SIZE ) )\r
- {\r
- /* Blocks are stored in byte order - traverse the list from the start\r
- (smallest) block until one of adequate size is found. */\r
- pxPreviousBlock = &xStart;\r
- pxBlock = xStart.pxNextFreeBlock;\r
- while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock ) )\r
- {\r
- pxPreviousBlock = pxBlock;\r
- pxBlock = pxBlock->pxNextFreeBlock;\r
- }\r
-\r
- /* If we found the end marker then a block of adequate size was not found. */\r
- if( pxBlock != &xEnd )\r
- {\r
- /* Return the memory space - jumping over the xBlockLink structure\r
- at its start. */\r
- pvReturn = ( void * ) ( ( ( unsigned portCHAR * ) pxPreviousBlock->pxNextFreeBlock ) + heapSTRUCT_SIZE );\r
-\r
- /* This block is being returned for use so must be taken our of the\r
- list of free blocks. */\r
- pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock;\r
-\r
- /* If the block is larger than required it can be split into two. */\r
- if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE )\r
- {\r
- /* This block is to be split into two. Create a new block\r
- following the number of bytes requested. The void cast is\r
- used to prevent byte alignment warnings from the compiler. */\r
- pxNewBlockLink = ( void * ) ( ( ( unsigned portCHAR * ) pxBlock ) + xWantedSize );\r
- \r
- /* Calculate the sizes of two blocks split from the single\r
- block. */\r
- pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; \r
- pxBlock->xBlockSize = xWantedSize; \r
- \r
- /* Insert the new block into the list of free blocks. */\r
- prvInsertBlockIntoFreeList( ( pxNewBlockLink ) );\r
- }\r
- }\r
- }\r
- }\r
- xTaskResumeAll();\r
-\r
- return pvReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortFree( void *pv )\r
-{\r
-unsigned portCHAR *puc = ( unsigned portCHAR * ) pv;\r
-xBlockLink *pxLink;\r
-\r
- if( pv )\r
- {\r
- /* The memory being freed will have an xBlockLink structure immediately\r
- before it. */\r
- puc -= heapSTRUCT_SIZE;\r
-\r
- /* This casting is to keep the compiler from issuing warnings. */\r
- pxLink = ( void * ) puc;\r
-\r
- vTaskSuspendAll();\r
- { \r
- /* Add this block to the list of free blocks. */\r
- prvInsertBlockIntoFreeList( ( ( xBlockLink * ) pxLink ) );\r
- }\r
- xTaskResumeAll();\r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section \r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-\r
-/*\r
- * Implementation of pvPortMalloc() and vPortFree() that relies on the\r
- * compilers own malloc() and free() implementations.\r
- *\r
- * This file can only be used if the linker is configured to to generate\r
- * a heap memory area.\r
- *\r
- * See heap_2.c and heap_1.c for alternative implementations, and the memory\r
- * management pages of http://www.FreeRTOS.org for more information.\r
- */\r
-\r
-#include <stdlib.h>\r
-\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-void *pvPortMalloc( size_t xWantedSize )\r
-{\r
-void *pvReturn;\r
-\r
- vTaskSuspendAll();\r
- {\r
- pvReturn = malloc( xWantedSize );\r
- }\r
- xTaskResumeAll();\r
-\r
- return pvReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vPortFree( void *pv )\r
-{\r
- if( pv )\r
- {\r
- vTaskSuspendAll();\r
- {\r
- free( pv );\r
- }\r
- xTaskResumeAll();\r
- }\r
-}\r
-\r
-\r
-\r
+++ /dev/null
-Each real time kernel port consists of three files that contain the core kernel\r
-components and are common to every port, and one or more files that are \r
-specific to a particular microcontroller and/or compiler.\r
-\r
-\r
-+ The FreeRTOS/Source/Portable/MemMang directory contains the three sample \r
-memory allocators as described on the http://www.FreeRTOS.org WEB site.\r
-\r
-+ The other directories each contain files specific to a particular \r
-microcontroller or compiler.\r
-\r
-\r
-\r
-For example, if you are interested in the GCC port for the ATMega323 \r
-microcontroller then the port specific files are contained in\r
-FreeRTOS/Source/Portable/GCC/ATMega323 directory. If this is the only\r
-port you are interested in then all the other directories can be\r
-ignored.\r
-\r
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-#include <stdlib.h>\r
-#include <string.h>\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-#include "croutine.h"\r
-\r
-/*-----------------------------------------------------------\r
- * PUBLIC LIST API documented in list.h\r
- *----------------------------------------------------------*/\r
-\r
-/* Constants used with the cRxLock and cTxLock structure members. */\r
-#define queueUNLOCKED ( ( signed portBASE_TYPE ) -1 )\r
-#define queueERRONEOUS_UNBLOCK ( -1 )\r
-\r
-/* For internal use only. */\r
-#define queueSEND_TO_BACK ( 0 )\r
-#define queueSEND_TO_FRONT ( 1 )\r
-\r
-/* Effectively make a union out of the xQUEUE structure. */\r
-#define pxMutexHolder pcTail\r
-#define uxQueueType pcHead\r
-#define uxRecursiveCallCount pcReadFrom\r
-#define queueQUEUE_IS_MUTEX NULL\r
-\r
-/* Semaphores do not actually store or copy data, so have an items size of\r
-zero. */\r
-#define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( 0 )\r
-#define queueDONT_BLOCK ( ( portTickType ) 0 )\r
-#define queueMUTEX_GIVE_BLOCK_TIME ( ( portTickType ) 0 )\r
-/*\r
- * Definition of the queue used by the scheduler.\r
- * Items are queued by copy, not reference.\r
- */\r
-typedef struct QueueDefinition\r
-{\r
- signed portCHAR *pcHead; /*< Points to the beginning of the queue storage area. */\r
- signed portCHAR *pcTail; /*< Points to the byte at the end of the queue storage area. Once more byte is allocated than necessary to store the queue items, this is used as a marker. */\r
-\r
- signed portCHAR *pcWriteTo; /*< Points to the free next place in the storage area. */\r
- signed portCHAR *pcReadFrom; /*< Points to the last place that a queued item was read from. */\r
-\r
- xList xTasksWaitingToSend; /*< List of tasks that are blocked waiting to post onto this queue. Stored in priority order. */\r
- xList xTasksWaitingToReceive; /*< List of tasks that are blocked waiting to read from this queue. Stored in priority order. */\r
-\r
- volatile unsigned portBASE_TYPE uxMessagesWaiting;/*< The number of items currently in the queue. */\r
- unsigned portBASE_TYPE uxLength; /*< The length of the queue defined as the number of items it will hold, not the number of bytes. */\r
- unsigned portBASE_TYPE uxItemSize; /*< The size of each items that the queue will hold. */\r
-\r
- signed portBASE_TYPE xRxLock; /*< Stores the number of items received from the queue (removed from the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */\r
- signed portBASE_TYPE xTxLock; /*< Stores the number of items transmitted to the queue (added to the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */\r
-} xQUEUE;\r
-/*-----------------------------------------------------------*/\r
-\r
-/*\r
- * Inside this file xQueueHandle is a pointer to a xQUEUE structure.\r
- * To keep the definition private the API header file defines it as a\r
- * pointer to void.\r
- */\r
-typedef xQUEUE * xQueueHandle;\r
-\r
-/*\r
- * Prototypes for public functions are included here so we don't have to\r
- * include the API header file (as it defines xQueueHandle differently). These\r
- * functions are documented in the API header file.\r
- */\r
-xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize );\r
-signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition );\r
-unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle pxQueue );\r
-void vQueueDelete( xQueueHandle xQueue );\r
-signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void * const pvItemToQueue, signed portBASE_TYPE xTaskPreviouslyWoken, portBASE_TYPE xCopyPosition );\r
-signed portBASE_TYPE xQueueGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking );\r
-signed portBASE_TYPE xQueueReceiveFromISR( xQueueHandle pxQueue, const void * const pvBuffer, signed portBASE_TYPE *pxTaskWoken );\r
-xQueueHandle xQueueCreateMutex( void );\r
-xQueueHandle xQueueCreateCountingSemaphore( unsigned portBASE_TYPE uxCountValue, unsigned portBASE_TYPE uxInitialCount );\r
-portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle xMutex, portTickType xBlockTime );\r
-portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle xMutex );\r
-signed portBASE_TYPE xQueueAltGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition );\r
-signed portBASE_TYPE xQueueAltGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking );\r
-\r
-#if configUSE_CO_ROUTINES == 1\r
- signed portBASE_TYPE xQueueCRSendFromISR( xQueueHandle pxQueue, const void *pvItemToQueue, signed portBASE_TYPE xCoRoutinePreviouslyWoken );\r
- signed portBASE_TYPE xQueueCRReceiveFromISR( xQueueHandle pxQueue, void *pvBuffer, signed portBASE_TYPE *pxTaskWoken );\r
- signed portBASE_TYPE xQueueCRSend( xQueueHandle pxQueue, const void *pvItemToQueue, portTickType xTicksToWait );\r
- signed portBASE_TYPE xQueueCRReceive( xQueueHandle pxQueue, void *pvBuffer, portTickType xTicksToWait );\r
-#endif\r
-\r
-/*\r
- * Unlocks a queue locked by a call to prvLockQueue. Locking a queue does not\r
- * prevent an ISR from adding or removing items to the queue, but does prevent\r
- * an ISR from removing tasks from the queue event lists. If an ISR finds a\r
- * queue is locked it will instead increment the appropriate queue lock count\r
- * to indicate that a task may require unblocking. When the queue in unlocked\r
- * these lock counts are inspected, and the appropriate action taken.\r
- */\r
-static void prvUnlockQueue( xQueueHandle pxQueue );\r
-\r
-/*\r
- * Uses a critical section to determine if there is any data in a queue.\r
- *\r
- * @return pdTRUE if the queue contains no items, otherwise pdFALSE.\r
- */\r
-static signed portBASE_TYPE prvIsQueueEmpty( const xQueueHandle pxQueue );\r
-\r
-/*\r
- * Uses a critical section to determine if there is any space in a queue.\r
- *\r
- * @return pdTRUE if there is no space, otherwise pdFALSE;\r
- */\r
-static signed portBASE_TYPE prvIsQueueFull( const xQueueHandle pxQueue );\r
-\r
-/*\r
- * Copies an item into the queue, either at the front of the queue or the\r
- * back of the queue.\r
- */\r
-static void prvCopyDataToQueue( xQUEUE *pxQueue, const void *pvItemToQueue, portBASE_TYPE xPosition );\r
-\r
-/*\r
- * Copies an item out of a queue.\r
- */\r
-static void prvCopyDataFromQueue( xQUEUE * const pxQueue, const void *pvBuffer );\r
-/*-----------------------------------------------------------*/\r
-\r
-/*\r
- * Macro to mark a queue as locked. Locking a queue prevents an ISR from\r
- * accessing the queue event lists.\r
- */\r
-#define prvLockQueue( pxQueue ) \\r
-{ \\r
- taskENTER_CRITICAL(); \\r
- ++( pxQueue->xRxLock ); \\r
- ++( pxQueue->xTxLock ); \\r
- taskEXIT_CRITICAL(); \\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * PUBLIC QUEUE MANAGEMENT API documented in queue.h\r
- *----------------------------------------------------------*/\r
-\r
-xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize )\r
-{\r
-xQUEUE *pxNewQueue;\r
-size_t xQueueSizeInBytes;\r
-\r
- /* Allocate the new queue structure. */\r
- if( uxQueueLength > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- pxNewQueue = ( xQUEUE * ) pvPortMalloc( sizeof( xQUEUE ) );\r
- if( pxNewQueue != NULL )\r
- {\r
- /* Create the list of pointers to queue items. The queue is one byte\r
- longer than asked for to make wrap checking easier/faster. */\r
- xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ) + ( size_t ) 1;\r
-\r
- pxNewQueue->pcHead = ( signed portCHAR * ) pvPortMalloc( xQueueSizeInBytes );\r
- if( pxNewQueue->pcHead != NULL )\r
- {\r
- /* Initialise the queue members as described above where the\r
- queue type is defined. */\r
- pxNewQueue->pcTail = pxNewQueue->pcHead + ( uxQueueLength * uxItemSize );\r
- pxNewQueue->uxMessagesWaiting = 0;\r
- pxNewQueue->pcWriteTo = pxNewQueue->pcHead;\r
- pxNewQueue->pcReadFrom = pxNewQueue->pcHead + ( ( uxQueueLength - 1 ) * uxItemSize );\r
- pxNewQueue->uxLength = uxQueueLength;\r
- pxNewQueue->uxItemSize = uxItemSize;\r
- pxNewQueue->xRxLock = queueUNLOCKED;\r
- pxNewQueue->xTxLock = queueUNLOCKED;\r
-\r
- /* Likewise ensure the event queues start with the correct state. */\r
- vListInitialise( &( pxNewQueue->xTasksWaitingToSend ) );\r
- vListInitialise( &( pxNewQueue->xTasksWaitingToReceive ) );\r
-\r
- return pxNewQueue;\r
- }\r
- else\r
- {\r
- vPortFree( pxNewQueue );\r
- }\r
- }\r
- }\r
-\r
- /* Will only reach here if we could not allocate enough memory or no memory\r
- was required. */\r
- return NULL;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( configUSE_MUTEXES == 1 )\r
-\r
- xQueueHandle xQueueCreateMutex( void )\r
- {\r
- xQUEUE *pxNewQueue;\r
- \r
- /* Allocate the new queue structure. */\r
- pxNewQueue = ( xQUEUE * ) pvPortMalloc( sizeof( xQUEUE ) );\r
- if( pxNewQueue != NULL )\r
- {\r
- /* Information required for priority inheritance. */\r
- pxNewQueue->pxMutexHolder = NULL;\r
- pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX;\r
- \r
- /* Queues used as a mutex no data is actually copied into or out\r
- of the queue. */\r
- pxNewQueue->pcWriteTo = NULL;\r
- pxNewQueue->pcReadFrom = NULL;\r
- \r
- /* Each mutex has a length of 1 (like a binary semaphore) and\r
- an item size of 0 as nothing is actually copied into or out\r
- of the mutex. */\r
- pxNewQueue->uxMessagesWaiting = 0;\r
- pxNewQueue->uxLength = 1;\r
- pxNewQueue->uxItemSize = 0;\r
- pxNewQueue->xRxLock = queueUNLOCKED;\r
- pxNewQueue->xTxLock = queueUNLOCKED;\r
- \r
- /* Ensure the event queues start with the correct state. */\r
- vListInitialise( &( pxNewQueue->xTasksWaitingToSend ) );\r
- vListInitialise( &( pxNewQueue->xTasksWaitingToReceive ) );\r
-\r
- /* Start with the semaphore in the expected state. */\r
- xQueueGenericSend( pxNewQueue, NULL, 0, queueSEND_TO_BACK );\r
- }\r
- \r
- return pxNewQueue;\r
- }\r
-\r
-#endif /* configUSE_MUTEXES */\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_RECURSIVE_MUTEXES == 1\r
-\r
- portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle pxMutex )\r
- {\r
- portBASE_TYPE xReturn;\r
-\r
- /* If this is the task that holds the mutex then pxMutexHolder will not \r
- change outside of this task. If this task does not hold the mutex then\r
- pxMutexHolder can never coincidentally equal the tasks handle, and as\r
- this is the only condition we are interested in it does not matter if\r
- pxMutexHolder is accessed simultaneously by another task. Therefore no\r
- mutual exclusion is required to test the pxMutexHolder variable. */\r
- if( pxMutex->pxMutexHolder == xTaskGetCurrentTaskHandle() )\r
- {\r
- /* uxRecursiveCallCount cannot be zero if pxMutexHolder is equal to\r
- the task handle, therefore no underflow check is required. Also, \r
- uxRecursiveCallCount is only modified by the mutex holder, and as\r
- there can only be one, no mutual exclusion is required to modify the\r
- uxRecursiveCallCount member. */\r
- ( pxMutex->uxRecursiveCallCount )--;\r
-\r
- /* Have we unwound the call count? */\r
- if( pxMutex->uxRecursiveCallCount == 0 )\r
- {\r
- /* Return the mutex. This will automatically unblock any other\r
- task that might be waiting to access the mutex. */\r
- xQueueGenericSend( pxMutex, NULL, queueMUTEX_GIVE_BLOCK_TIME, queueSEND_TO_BACK );\r
- }\r
-\r
- xReturn = pdPASS;\r
- }\r
- else\r
- {\r
- /* We cannot give the mutex because we are not the holder. */\r
- xReturn = pdFAIL;\r
- }\r
-\r
- return xReturn;\r
- }\r
-\r
-#endif /* configUSE_RECURSIVE_MUTEXES */\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_RECURSIVE_MUTEXES == 1\r
-\r
- portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle pxMutex, portTickType xBlockTime )\r
- {\r
- portBASE_TYPE xReturn;\r
-\r
- /* Comments regarding mutual exclusion as per those within \r
- xQueueGiveMutexRecursive(). */\r
-\r
- if( pxMutex->pxMutexHolder == xTaskGetCurrentTaskHandle() )\r
- {\r
- ( pxMutex->uxRecursiveCallCount )++;\r
- xReturn = pdPASS;\r
- }\r
- else\r
- {\r
- xReturn = xQueueGenericReceive( pxMutex, NULL, xBlockTime, pdFALSE );\r
-\r
- /* pdPASS will only be returned if we successfully obtained the mutex,\r
- we may have blocked to reach here. */\r
- if( xReturn == pdPASS )\r
- {\r
- ( pxMutex->uxRecursiveCallCount )++;\r
- }\r
- }\r
-\r
- return xReturn;\r
- }\r
-\r
-#endif /* configUSE_RECURSIVE_MUTEXES */\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_COUNTING_SEMAPHORES == 1\r
-\r
- xQueueHandle xQueueCreateCountingSemaphore( unsigned portBASE_TYPE uxCountValue, unsigned portBASE_TYPE uxInitialCount )\r
- {\r
- xQueueHandle pxHandle;\r
- \r
- pxHandle = xQueueCreate( ( unsigned portBASE_TYPE ) uxCountValue, queueSEMAPHORE_QUEUE_ITEM_LENGTH );\r
-\r
- if( pxHandle != NULL )\r
- {\r
- pxHandle->uxMessagesWaiting = uxInitialCount;\r
- }\r
-\r
- return pxHandle;\r
- }\r
-\r
-#endif /* configUSE_COUNTING_SEMAPHORES */\r
-/*-----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xQueueGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition )\r
-{\r
-signed portBASE_TYPE xReturn = pdPASS;\r
-xTimeOutType xTimeOut;\r
-\r
- /* Make sure other tasks do not access the queue. */\r
- vTaskSuspendAll();\r
-\r
- /* Capture the current time status for future reference. */\r
- vTaskSetTimeOutState( &xTimeOut );\r
-\r
- /* It is important that this is the only thread/ISR that modifies the\r
- ready or delayed lists until xTaskResumeAll() is called. Places where\r
- the ready/delayed lists are modified include:\r
-\r
- + vTaskDelay() - Nothing can call vTaskDelay as the scheduler is\r
- suspended, vTaskDelay() cannot be called from an ISR.\r
- + vTaskPrioritySet() - Has a critical section around the access.\r
- + vTaskSwitchContext() - This will not get executed while the scheduler\r
- is suspended.\r
- + prvCheckDelayedTasks() - This will not get executed while the\r
- scheduler is suspended.\r
- + xTaskCreate() - Has a critical section around the access.\r
- + vTaskResume() - Has a critical section around the access.\r
- + xTaskResumeAll() - Has a critical section around the access.\r
- + xTaskRemoveFromEventList - Checks to see if the scheduler is\r
- suspended. If so then the TCB being removed from the event is\r
- removed from the event and added to the xPendingReadyList.\r
- */\r
-\r
- /* Make sure interrupts do not access the queue event list. */\r
- prvLockQueue( pxQueue );\r
-\r
- /* It is important that interrupts to not access the event list of the\r
- queue being modified here. Places where the event list is modified\r
- include:\r
-\r
- + xQueueGenericSendFromISR(). This checks the lock on the queue to see\r
- if it has access. If the queue is locked then the Tx lock count is\r
- incremented to signify that a task waiting for data can be made ready\r
- once the queue lock is removed. If the queue is not locked then\r
- a task can be moved from the event list, but will not be removed\r
- from the delayed list or placed in the ready list until the scheduler\r
- is unlocked.\r
-\r
- + xQueueReceiveFromISR(). As per xQueueGenericSendFromISR().\r
- */\r
- \r
- /* If the queue is already full we may have to block. */\r
- do\r
- {\r
- if( prvIsQueueFull( pxQueue ) )\r
- {\r
- /* The queue is full - do we want to block or just leave without\r
- posting? */\r
- if( xTicksToWait > ( portTickType ) 0 )\r
- {\r
- /* We are going to place ourselves on the xTasksWaitingToSend event\r
- list, and will get woken should the delay expire, or space become\r
- available on the queue.\r
- \r
- As detailed above we do not require mutual exclusion on the event\r
- list as nothing else can modify it or the ready lists while we\r
- have the scheduler suspended and queue locked.\r
- \r
- It is possible that an ISR has removed data from the queue since we\r
- checked if any was available. If this is the case then the data\r
- will have been copied from the queue, and the queue variables\r
- updated, but the event list will not yet have been checked to see if\r
- anything is waiting as the queue is locked. */\r
- vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait );\r
- \r
- /* Force a context switch now as we are blocked. We can do\r
- this from within a critical section as the task we are\r
- switching to has its own context. When we return here (i.e. we\r
- unblock) we will leave the critical section as normal.\r
- \r
- It is possible that an ISR has caused an event on an unrelated and\r
- unlocked queue. If this was the case then the event list for that\r
- queue will have been updated but the ready lists left unchanged -\r
- instead the readied task will have been added to the pending ready\r
- list. */\r
- taskENTER_CRITICAL();\r
- {\r
- /* We can safely unlock the queue and scheduler here as\r
- interrupts are disabled. We must not yield with anything\r
- locked, but we can yield from within a critical section.\r
- \r
- Tasks that have been placed on the pending ready list cannot\r
- be tasks that are waiting for events on this queue. See\r
- in comment xTaskRemoveFromEventList(). */\r
- prvUnlockQueue( pxQueue );\r
- \r
- /* Resuming the scheduler may cause a yield. If so then there\r
- is no point yielding again here. */\r
- if( !xTaskResumeAll() )\r
- {\r
- taskYIELD();\r
- }\r
-\r
- /* We want to check to see if the queue is still full\r
- before leaving the critical section. This is to prevent\r
- this task placing an item into the queue due to an\r
- interrupt making space on the queue between critical\r
- sections (when there might be a higher priority task\r
- blocked on the queue that cannot run yet because the\r
- scheduler gets suspended). */\r
- if( pxQueue->uxMessagesWaiting == pxQueue->uxLength )\r
- {\r
- /* We unblocked but there is no space in the queue,\r
- we probably timed out. */\r
- xReturn = errQUEUE_FULL;\r
- }\r
- \r
- /* Before leaving the critical section we have to ensure\r
- exclusive access again. */\r
- vTaskSuspendAll();\r
- prvLockQueue( pxQueue ); \r
- }\r
- taskEXIT_CRITICAL();\r
- }\r
- }\r
- \r
- /* If xReturn is errQUEUE_FULL then we unblocked when the queue\r
- was still full. Don't check it again now as it is possible that\r
- an interrupt has removed an item from the queue since we left the\r
- critical section and we don't want to write to the queue in case\r
- there is a task of higher priority blocked waiting for space to\r
- be available on the queue. If this is the case the higher priority\r
- task will execute when the scheduler is unsupended. */\r
- if( xReturn != errQUEUE_FULL )\r
- {\r
- /* When we are here it is possible that we unblocked as space became\r
- available on the queue. It is also possible that an ISR posted to the\r
- queue since we left the critical section, so it may be that again there\r
- is no space. This would only happen if a task and ISR post onto the\r
- same queue. */\r
- taskENTER_CRITICAL();\r
- {\r
- if( pxQueue->uxMessagesWaiting < pxQueue->uxLength )\r
- {\r
- /* There is room in the queue, copy the data into the queue. */ \r
- prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );\r
- xReturn = pdPASS;\r
- \r
- /* Update the TxLock count so prvUnlockQueue knows to check for\r
- tasks waiting for data to become available in the queue. */\r
- ++( pxQueue->xTxLock );\r
- }\r
- else\r
- {\r
- xReturn = errQUEUE_FULL;\r
- }\r
- }\r
- taskEXIT_CRITICAL();\r
- }\r
-\r
- if( xReturn == errQUEUE_FULL )\r
- {\r
- if( xTicksToWait > 0 )\r
- {\r
- if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\r
- {\r
- xReturn = queueERRONEOUS_UNBLOCK;\r
- }\r
- }\r
- }\r
- }\r
- while( xReturn == queueERRONEOUS_UNBLOCK );\r
-\r
- prvUnlockQueue( pxQueue );\r
- xTaskResumeAll();\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_ALTERNATIVE_API == 1\r
-\r
- signed portBASE_TYPE xQueueAltGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition )\r
- {\r
- signed portBASE_TYPE xReturn;\r
- xTimeOutType xTimeOut;\r
-\r
- /* The source code that implements the alternative (Alt) API is much \r
- simpler because it executes everything from within a critical section. \r
- This is the approach taken by many other RTOSes, but FreeRTOS.org has the \r
- preferred fully featured API too. The fully featured API has more \r
- complex code that takes longer to execute, but makes much less use of \r
- critical sections. Therefore the alternative API sacrifices interrupt \r
- responsiveness to gain execution speed, whereas the fully featured API\r
- sacrifices execution speed to ensure better interrupt responsiveness. */\r
-\r
- taskENTER_CRITICAL();\r
- {\r
- /* Capture the current time status for future reference. */\r
- vTaskSetTimeOutState( &xTimeOut );\r
-\r
- /* If the queue is already full we may have to block. */\r
- do\r
- {\r
- if( pxQueue->uxMessagesWaiting == pxQueue->uxLength )\r
- {\r
- /* The queue is full - do we want to block or just leave without\r
- posting? */\r
- if( xTicksToWait > ( portTickType ) 0 )\r
- {\r
- /* We are going to place ourselves on the xTasksWaitingToSend \r
- event list, and will get woken should the delay expire, or \r
- space become available on the queue. */\r
- vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait );\r
- \r
- /* Force a context switch now as we are blocked. We can do\r
- this from within a critical section as the task we are\r
- switching to has its own context. When we return here (i.e.\r
- we unblock) we will leave the critical section as normal. */\r
- taskYIELD();\r
- }\r
- }\r
- \r
- if( pxQueue->uxMessagesWaiting < pxQueue->uxLength )\r
- {\r
- /* There is room in the queue, copy the data into the queue. */ \r
- prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );\r
- xReturn = pdPASS;\r
-\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) )\r
- {\r
- if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\r
- {\r
- /* The task waiting has a higher priority. */\r
- taskYIELD();\r
- }\r
- } \r
- }\r
- else\r
- {\r
- xReturn = errQUEUE_FULL;\r
-\r
- if( xTicksToWait > 0 )\r
- { \r
- if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\r
- {\r
- /* Another task must have accessed the queue between \r
- this task unblocking and actually executing. */\r
- xReturn = queueERRONEOUS_UNBLOCK;\r
- }\r
- }\r
- }\r
- }\r
- while( xReturn == queueERRONEOUS_UNBLOCK );\r
- }\r
- taskEXIT_CRITICAL();\r
-\r
- return xReturn;\r
- }\r
-\r
-#endif /* configUSE_ALTERNATIVE_API */\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_ALTERNATIVE_API == 1\r
-\r
- signed portBASE_TYPE xQueueAltGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking )\r
- {\r
- signed portBASE_TYPE xReturn = pdTRUE;\r
- xTimeOutType xTimeOut;\r
- signed portCHAR *pcOriginalReadPosition;\r
-\r
- /* The source code that implements the alternative (Alt) API is much \r
- simpler because it executes everything from within a critical section. \r
- This is the approach taken by many other RTOSes, but FreeRTOS.org has the \r
- preferred fully featured API too. The fully featured API has more \r
- complex code that takes longer to execute, but makes much less use of \r
- critical sections. Therefore the alternative API sacrifices interrupt \r
- responsiveness to gain execution speed, whereas the fully featured API\r
- sacrifices execution speed to ensure better interrupt responsiveness. */\r
-\r
- taskENTER_CRITICAL();\r
- {\r
- /* Capture the current time status for future reference. */\r
- vTaskSetTimeOutState( &xTimeOut );\r
-\r
- do\r
- {\r
- /* If there are no messages in the queue we may have to block. */\r
- if( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- /* There are no messages in the queue, do we want to block or just\r
- leave with nothing? */ \r
- if( xTicksToWait > ( portTickType ) 0 )\r
- {\r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\r
- {\r
- vTaskPriorityInherit( ( void * const ) pxQueue->pxMutexHolder );\r
- }\r
- }\r
- #endif\r
- \r
- vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );\r
- taskYIELD();\r
- }\r
- }\r
- \r
- if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- /* Remember our read position in case we are just peeking. */\r
- pcOriginalReadPosition = pxQueue->pcReadFrom;\r
-\r
- prvCopyDataFromQueue( pxQueue, pvBuffer );\r
-\r
- if( xJustPeeking == pdFALSE )\r
- {\r
- /* We are actually removing data. */\r
- --( pxQueue->uxMessagesWaiting );\r
- \r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\r
- {\r
- /* Record the information required to implement\r
- priority inheritance should it become necessary. */\r
- pxQueue->pxMutexHolder = xTaskGetCurrentTaskHandle();\r
- }\r
- }\r
- #endif\r
-\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) )\r
- {\r
- if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\r
- {\r
- /* The task waiting has a higher priority. */\r
- taskYIELD();\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* We are not removing the data, so reset our read\r
- pointer. */\r
- pxQueue->pcReadFrom = pcOriginalReadPosition;\r
- }\r
- \r
- xReturn = pdPASS; \r
- }\r
- else\r
- {\r
- xReturn = errQUEUE_EMPTY;\r
-\r
- if( xTicksToWait > 0 )\r
- {\r
- if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\r
- {\r
- xReturn = queueERRONEOUS_UNBLOCK;\r
- }\r
- }\r
- }\r
-\r
- } while( xReturn == queueERRONEOUS_UNBLOCK );\r
- }\r
- taskEXIT_CRITICAL();\r
-\r
- return xReturn;\r
- }\r
-\r
-#endif /* configUSE_ALTERNATIVE_API */\r
-/*-----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void * const pvItemToQueue, signed portBASE_TYPE xTaskPreviouslyWoken, portBASE_TYPE xCopyPosition )\r
-{\r
- /* Similar to xQueueGenericSend, except we don't block if there is no room\r
- in the queue. Also we don't directly wake a task that was blocked on a\r
- queue read, instead we return a flag to say whether a context switch is\r
- required or not (i.e. has a task with a higher priority than us been woken\r
- by this post). */\r
- if( pxQueue->uxMessagesWaiting < pxQueue->uxLength )\r
- {\r
- prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition );\r
-\r
- /* If the queue is locked we do not alter the event list. This will\r
- be done when the queue is unlocked later. */\r
- if( pxQueue->xTxLock == queueUNLOCKED )\r
- {\r
- /* We only want to wake one task per ISR, so check that a task has\r
- not already been woken. */\r
- if( !xTaskPreviouslyWoken ) \r
- {\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) )\r
- {\r
- if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\r
- {\r
- /* The task waiting has a higher priority so record that a\r
- context switch is required. */\r
- return pdTRUE;\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Increment the lock count so the task that unlocks the queue\r
- knows that data was posted while it was locked. */\r
- ++( pxQueue->xTxLock );\r
- }\r
- }\r
-\r
- return xTaskPreviouslyWoken;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xQueueGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking )\r
-{\r
-signed portBASE_TYPE xReturn = pdTRUE;\r
-xTimeOutType xTimeOut;\r
-signed portCHAR *pcOriginalReadPosition;\r
-\r
- /* This function is very similar to xQueueGenericSend(). See comments\r
- within xQueueGenericSend() for a more detailed explanation.\r
-\r
- Make sure other tasks do not access the queue. */\r
- vTaskSuspendAll();\r
-\r
- /* Capture the current time status for future reference. */\r
- vTaskSetTimeOutState( &xTimeOut );\r
-\r
- /* Make sure interrupts do not access the queue. */\r
- prvLockQueue( pxQueue );\r
-\r
- do\r
- {\r
- /* If there are no messages in the queue we may have to block. */\r
- if( prvIsQueueEmpty( pxQueue ) )\r
- {\r
- /* There are no messages in the queue, do we want to block or just\r
- leave with nothing? */ \r
- if( xTicksToWait > ( portTickType ) 0 )\r
- {\r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\r
- {\r
- portENTER_CRITICAL();\r
- vTaskPriorityInherit( ( void * ) pxQueue->pxMutexHolder );\r
- portEXIT_CRITICAL();\r
- }\r
- }\r
- #endif\r
- \r
- vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait );\r
- taskENTER_CRITICAL();\r
- {\r
- prvUnlockQueue( pxQueue );\r
- if( !xTaskResumeAll() )\r
- {\r
- taskYIELD();\r
- }\r
-\r
- if( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- /* We unblocked but the queue is empty. We probably\r
- timed out. */\r
- xReturn = errQUEUE_EMPTY;\r
- }\r
- \r
- vTaskSuspendAll();\r
- prvLockQueue( pxQueue );\r
- }\r
- taskEXIT_CRITICAL();\r
- }\r
- }\r
- \r
- if( xReturn != errQUEUE_EMPTY )\r
- {\r
- taskENTER_CRITICAL();\r
- {\r
- if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- /* Remember our read position in case we are just peeking. */\r
- pcOriginalReadPosition = pxQueue->pcReadFrom;\r
-\r
- prvCopyDataFromQueue( pxQueue, pvBuffer );\r
-\r
- if( xJustPeeking == pdFALSE )\r
- {\r
- /* We are actually removing data. */\r
- --( pxQueue->uxMessagesWaiting );\r
- \r
- /* Increment the lock count so prvUnlockQueue knows to check for\r
- tasks waiting for space to become available on the queue. */\r
- ++( pxQueue->xRxLock );\r
- \r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\r
- {\r
- /* Record the information required to implement\r
- priority inheritance should it become necessary. */\r
- pxQueue->pxMutexHolder = xTaskGetCurrentTaskHandle();\r
- }\r
- }\r
- #endif\r
- }\r
- else\r
- {\r
- /* We are not removing the data, so reset our read\r
- pointer. */\r
- pxQueue->pcReadFrom = pcOriginalReadPosition;\r
-\r
- /* The data is being left in the queue, so increment the\r
- lock count so prvUnlockQueue knows to check for other\r
- tasks waiting for the data to be available. */\r
- ++( pxQueue->xTxLock ); \r
- }\r
- \r
- xReturn = pdPASS; \r
- }\r
- else\r
- {\r
- xReturn = errQUEUE_EMPTY;\r
- }\r
- }\r
- taskEXIT_CRITICAL();\r
- }\r
-\r
- if( xReturn == errQUEUE_EMPTY )\r
- {\r
- if( xTicksToWait > 0 )\r
- {\r
- if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE )\r
- {\r
- xReturn = queueERRONEOUS_UNBLOCK;\r
- }\r
- }\r
- }\r
- } while( xReturn == queueERRONEOUS_UNBLOCK );\r
-\r
- /* We no longer require exclusive access to the queue. */\r
- prvUnlockQueue( pxQueue );\r
- xTaskResumeAll();\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xQueueReceiveFromISR( xQueueHandle pxQueue, const void * const pvBuffer, signed portBASE_TYPE *pxTaskWoken )\r
-{\r
-signed portBASE_TYPE xReturn;\r
-\r
- /* We cannot block from an ISR, so check there is data available. */\r
- if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- prvCopyDataFromQueue( pxQueue, pvBuffer );\r
- --( pxQueue->uxMessagesWaiting );\r
-\r
- /* If the queue is locked we will not modify the event list. Instead\r
- we update the lock count so the task that unlocks the queue will know\r
- that an ISR has removed data while the queue was locked. */\r
- if( pxQueue->xRxLock == queueUNLOCKED )\r
- {\r
- /* We only want to wake one task per ISR, so check that a task has\r
- not already been woken. */\r
- if( !( *pxTaskWoken ) )\r
- {\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) )\r
- {\r
- if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\r
- {\r
- /* The task waiting has a higher priority than us so\r
- force a context switch. */\r
- *pxTaskWoken = pdTRUE;\r
- }\r
- }\r
- }\r
- }\r
- else\r
- {\r
- /* Increment the lock count so the task that unlocks the queue\r
- knows that data was removed while it was locked. */\r
- ++( pxQueue->xRxLock );\r
- }\r
-\r
- xReturn = pdPASS;\r
- }\r
- else\r
- {\r
- xReturn = pdFAIL;\r
- }\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle pxQueue )\r
-{\r
-unsigned portBASE_TYPE uxReturn;\r
-\r
- taskENTER_CRITICAL();\r
- uxReturn = pxQueue->uxMessagesWaiting;\r
- taskEXIT_CRITICAL();\r
-\r
- return uxReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vQueueDelete( xQueueHandle pxQueue )\r
-{\r
- vPortFree( pxQueue->pcHead );\r
- vPortFree( pxQueue );\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvCopyDataToQueue( xQUEUE *pxQueue, const void *pvItemToQueue, portBASE_TYPE xPosition )\r
-{\r
- if( pxQueue->uxItemSize == 0 )\r
- {\r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX )\r
- {\r
- /* The mutex is no longer being held. */\r
- vTaskPriorityDisinherit( ( void * ) pxQueue->pxMutexHolder );\r
- pxQueue->pxMutexHolder = NULL;\r
- }\r
- }\r
- #endif\r
- }\r
- else if( xPosition == queueSEND_TO_BACK )\r
- {\r
- memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( unsigned ) pxQueue->uxItemSize );\r
- pxQueue->pcWriteTo += pxQueue->uxItemSize;\r
- if( pxQueue->pcWriteTo >= pxQueue->pcTail )\r
- {\r
- pxQueue->pcWriteTo = pxQueue->pcHead;\r
- }\r
- }\r
- else\r
- {\r
- memcpy( ( void * ) pxQueue->pcReadFrom, pvItemToQueue, ( unsigned ) pxQueue->uxItemSize );\r
- pxQueue->pcReadFrom -= pxQueue->uxItemSize;\r
- if( pxQueue->pcReadFrom < pxQueue->pcHead )\r
- {\r
- pxQueue->pcReadFrom = ( pxQueue->pcTail - pxQueue->uxItemSize );\r
- } \r
- }\r
-\r
- ++( pxQueue->uxMessagesWaiting );\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvCopyDataFromQueue( xQUEUE * const pxQueue, const void *pvBuffer )\r
-{\r
- if( pxQueue->uxQueueType != queueQUEUE_IS_MUTEX )\r
- {\r
- pxQueue->pcReadFrom += pxQueue->uxItemSize;\r
- if( pxQueue->pcReadFrom >= pxQueue->pcTail )\r
- {\r
- pxQueue->pcReadFrom = pxQueue->pcHead;\r
- }\r
- memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->pcReadFrom, ( unsigned ) pxQueue->uxItemSize );\r
- } \r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvUnlockQueue( xQueueHandle pxQueue )\r
-{\r
- /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. */\r
-\r
- /* The lock counts contains the number of extra data items placed or\r
- removed from the queue while the queue was locked. When a queue is\r
- locked items can be added or removed, but the event lists cannot be\r
- updated. */\r
- taskENTER_CRITICAL();\r
- {\r
- --( pxQueue->xTxLock );\r
-\r
- /* See if data was added to the queue while it was locked. */\r
- if( pxQueue->xTxLock > queueUNLOCKED )\r
- {\r
- pxQueue->xTxLock = queueUNLOCKED;\r
-\r
- /* Data was posted while the queue was locked. Are any tasks\r
- blocked waiting for data to become available? */\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) )\r
- {\r
- /* Tasks that are removed from the event list will get added to\r
- the pending ready list as the scheduler is still suspended. */\r
- if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\r
- {\r
- /* The task waiting has a higher priority so record that a\r
- context switch is required. */\r
- vTaskMissedYield();\r
- }\r
- } \r
- }\r
- }\r
- taskEXIT_CRITICAL();\r
-\r
- /* Do the same for the Rx lock. */\r
- taskENTER_CRITICAL();\r
- {\r
- --( pxQueue->xRxLock );\r
-\r
- if( pxQueue->xRxLock > queueUNLOCKED )\r
- {\r
- pxQueue->xRxLock = queueUNLOCKED;\r
-\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) )\r
- {\r
- if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\r
- {\r
- vTaskMissedYield();\r
- }\r
- } \r
- }\r
- }\r
- taskEXIT_CRITICAL();\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static signed portBASE_TYPE prvIsQueueEmpty( const xQueueHandle pxQueue )\r
-{\r
-signed portBASE_TYPE xReturn;\r
-\r
- taskENTER_CRITICAL();\r
- xReturn = ( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 );\r
- taskEXIT_CRITICAL();\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static signed portBASE_TYPE prvIsQueueFull( const xQueueHandle pxQueue )\r
-{\r
-signed portBASE_TYPE xReturn;\r
-\r
- taskENTER_CRITICAL();\r
- xReturn = ( pxQueue->uxMessagesWaiting == pxQueue->uxLength );\r
- taskEXIT_CRITICAL();\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_CO_ROUTINES == 1\r
-signed portBASE_TYPE xQueueCRSend( xQueueHandle pxQueue, const void *pvItemToQueue, portTickType xTicksToWait )\r
-{\r
-signed portBASE_TYPE xReturn;\r
- \r
- /* If the queue is already full we may have to block. A critical section\r
- is required to prevent an interrupt removing something from the queue\r
- between the check to see if the queue is full and blocking on the queue. */\r
- portDISABLE_INTERRUPTS();\r
- {\r
- if( prvIsQueueFull( pxQueue ) )\r
- {\r
- /* The queue is full - do we want to block or just leave without\r
- posting? */\r
- if( xTicksToWait > ( portTickType ) 0 )\r
- {\r
- /* As this is called from a coroutine we cannot block directly, but\r
- return indicating that we need to block. */\r
- vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToSend ) ); \r
- portENABLE_INTERRUPTS();\r
- return errQUEUE_BLOCKED;\r
- }\r
- else\r
- {\r
- portENABLE_INTERRUPTS();\r
- return errQUEUE_FULL;\r
- }\r
- }\r
- }\r
- portENABLE_INTERRUPTS();\r
- \r
- portNOP();\r
-\r
- portDISABLE_INTERRUPTS();\r
- {\r
- if( pxQueue->uxMessagesWaiting < pxQueue->uxLength )\r
- {\r
- /* There is room in the queue, copy the data into the queue. */ \r
- prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK );\r
- xReturn = pdPASS;\r
-\r
- /* Were any co-routines waiting for data to become available? */\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) )\r
- {\r
- /* In this instance the co-routine could be placed directly\r
- into the ready list as we are within a critical section.\r
- Instead the same pending ready list mechanism is used as if\r
- the event were caused from within an interrupt. */\r
- if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\r
- {\r
- /* The co-routine waiting has a higher priority so record\r
- that a yield might be appropriate. */\r
- xReturn = errQUEUE_YIELD;\r
- }\r
- }\r
- }\r
- else\r
- {\r
- xReturn = errQUEUE_FULL;\r
- }\r
- }\r
- portENABLE_INTERRUPTS();\r
-\r
- return xReturn;\r
-}\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_CO_ROUTINES == 1\r
-signed portBASE_TYPE xQueueCRReceive( xQueueHandle pxQueue, void *pvBuffer, portTickType xTicksToWait )\r
-{\r
-signed portBASE_TYPE xReturn;\r
-\r
- /* If the queue is already empty we may have to block. A critical section\r
- is required to prevent an interrupt adding something to the queue\r
- between the check to see if the queue is empty and blocking on the queue. */\r
- portDISABLE_INTERRUPTS();\r
- {\r
- if( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- /* There are no messages in the queue, do we want to block or just\r
- leave with nothing? */ \r
- if( xTicksToWait > ( portTickType ) 0 )\r
- {\r
- /* As this is a co-routine we cannot block directly, but return\r
- indicating that we need to block. */\r
- vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToReceive ) );\r
- portENABLE_INTERRUPTS();\r
- return errQUEUE_BLOCKED;\r
- }\r
- else\r
- {\r
- portENABLE_INTERRUPTS();\r
- return errQUEUE_FULL;\r
- }\r
- }\r
- }\r
- portENABLE_INTERRUPTS();\r
-\r
- portNOP();\r
-\r
- portDISABLE_INTERRUPTS();\r
- {\r
- if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- /* Data is available from the queue. */\r
- pxQueue->pcReadFrom += pxQueue->uxItemSize;\r
- if( pxQueue->pcReadFrom >= pxQueue->pcTail )\r
- {\r
- pxQueue->pcReadFrom = pxQueue->pcHead;\r
- }\r
- --( pxQueue->uxMessagesWaiting );\r
- memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->pcReadFrom, ( unsigned ) pxQueue->uxItemSize );\r
-\r
- xReturn = pdPASS;\r
-\r
- /* Were any co-routines waiting for space to become available? */\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) )\r
- {\r
- /* In this instance the co-routine could be placed directly\r
- into the ready list as we are within a critical section.\r
- Instead the same pending ready list mechanism is used as if\r
- the event were caused from within an interrupt. */\r
- if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\r
- {\r
- xReturn = errQUEUE_YIELD;\r
- }\r
- } \r
- }\r
- else\r
- {\r
- xReturn = pdFAIL;\r
- }\r
- }\r
- portENABLE_INTERRUPTS();\r
-\r
- return xReturn;\r
-}\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-\r
-\r
-#if configUSE_CO_ROUTINES == 1\r
-signed portBASE_TYPE xQueueCRSendFromISR( xQueueHandle pxQueue, const void *pvItemToQueue, signed portBASE_TYPE xCoRoutinePreviouslyWoken )\r
-{\r
- /* Cannot block within an ISR so if there is no space on the queue then\r
- exit without doing anything. */\r
- if( pxQueue->uxMessagesWaiting < pxQueue->uxLength )\r
- {\r
- prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK );\r
-\r
- /* We only want to wake one co-routine per ISR, so check that a\r
- co-routine has not already been woken. */\r
- if( !xCoRoutinePreviouslyWoken ) \r
- {\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) )\r
- {\r
- if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE )\r
- {\r
- return pdTRUE;\r
- }\r
- }\r
- }\r
- }\r
-\r
- return xCoRoutinePreviouslyWoken;\r
-}\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if configUSE_CO_ROUTINES == 1\r
-signed portBASE_TYPE xQueueCRReceiveFromISR( xQueueHandle pxQueue, void *pvBuffer, signed portBASE_TYPE *pxCoRoutineWoken )\r
-{\r
-signed portBASE_TYPE xReturn;\r
-\r
- /* We cannot block from an ISR, so check there is data available. If\r
- not then just leave without doing anything. */\r
- if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- /* Copy the data from the queue. */\r
- pxQueue->pcReadFrom += pxQueue->uxItemSize;\r
- if( pxQueue->pcReadFrom >= pxQueue->pcTail )\r
- {\r
- pxQueue->pcReadFrom = pxQueue->pcHead;\r
- }\r
- --( pxQueue->uxMessagesWaiting );\r
- memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->pcReadFrom, ( unsigned ) pxQueue->uxItemSize );\r
-\r
- if( !( *pxCoRoutineWoken ) )\r
- {\r
- if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) )\r
- {\r
- if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE )\r
- {\r
- *pxCoRoutineWoken = pdTRUE;\r
- }\r
- }\r
- }\r
-\r
- xReturn = pdPASS;\r
- }\r
- else\r
- {\r
- xReturn = pdFAIL;\r
- }\r
-\r
- return xReturn;\r
-}\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
+++ /dev/null
-Each real time kernel port consists of three files that contain the core kernel\r
-components and are common to every port, and one or more files that are \r
-specific to a particular microcontroller and or compiler.\r
-\r
-+ The FreeRTOS/Source directory contains the three files that are common to \r
-every port. The kernel is contained within these three files.\r
-\r
-+ The FreeRTOS/Source/Portable directory contains the files that are specific to \r
-a particular microcontroller and or compiler.\r
-\r
-+ The FreeRTOS/Source/include directory contains the real time kernel header \r
-files.\r
-\r
-See the readme file in the FreeRTOS/Source/Portable directory for more \r
-information.
\ No newline at end of file
+++ /dev/null
-/*\r
- FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry.\r
-\r
- This file is part of the FreeRTOS.org distribution.\r
-\r
- FreeRTOS.org is free software; you can redistribute it and/or modify\r
- it under the terms of the GNU General Public License as published by\r
- the Free Software Foundation; either version 2 of the License, or\r
- (at your option) any later version.\r
-\r
- FreeRTOS.org is distributed in the hope that it will be useful,\r
- but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- GNU General Public License for more details.\r
-\r
- You should have received a copy of the GNU General Public License\r
- along with FreeRTOS.org; if not, write to the Free Software\r
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
-\r
- A special exception to the GPL can be applied should you wish to distribute\r
- a combined work that includes FreeRTOS.org, without being obliged to provide\r
- the source code for any proprietary components. See the licensing section\r
- of http://www.FreeRTOS.org for full details of how and when the exception\r
- can be applied.\r
-\r
- ***************************************************************************\r
-\r
- Please ensure to read the configuration and relevant port sections of the \r
- online documentation.\r
-\r
- +++ http://www.FreeRTOS.org +++\r
- Documentation, latest information, license and contact details. \r
-\r
- +++ http://www.SafeRTOS.com +++\r
- A version that is certified for use in safety critical systems.\r
-\r
- +++ http://www.OpenRTOS.com +++\r
- Commercial support, development, porting, licensing and training services.\r
-\r
- ***************************************************************************\r
-*/\r
-\r
-/*\r
-Changes from V1.00:\r
- \r
- + Call to portRESTORE_CONTEXT has been removed. The first context\r
- switch is now performed within sPortStartScheduler().\r
-\r
-Changes from V1.01:\r
-\r
- + More use of 8bit data types.\r
- + Function name prefixes changed where the data type returned has changed.\r
- + configUSE_TRACE_FACILITY is no longer defined by default.\r
-\r
-Changes from V1.2.0\r
-\r
- + Introduced ucTopReadyPriority. This tracks the highest priority ready\r
- queue that contains a valid TCB and thus makes the context switch\r
- slightly faster.\r
-\r
- + prvAddTaskToReadyQueue() has been made a macro.\r
-\r
-Changes from V1.2.6\r
-\r
- + Added conditional compilation directives.\r
- + Extended API.\r
- + Rearranged function order.\r
- + Creating a task now causes a context switch if the task being created\r
- has a higher priority than the calling task - assuming the kernel is\r
- running.\r
- + vTaskDelete() now only causes a context switch if the calling task is\r
- the task being deleted.\r
-\r
-Changes from V2.0.0\r
-\r
- + Allow the type of the tick count to be 16 or 32 bits.\r
- + Introduce xPendingReadyList feature to allow the time interrupts have to\r
- be disabled to be minimised.\r
- + Remove the #if( INCLUDE_vTaskSuspendAll ) statements. vTaskSuspendAll()\r
- is now always included as it is used by the scheduler itself.\r
-\r
-Changes from V2.1.0\r
-\r
- + Bug fix - pxCurrentTCB is now initialised before the call to\r
- prvInitializeTaskLists(). Previously pxCurrentTCB could be accessed\r
- while null.\r
-\r
-Changed from V2.1.1\r
-\r
- + Change to where lStackSize is declared within sTaskCreate() to prevent\r
- compiler warnings with 8051 port.\r
-\r
-Changes from V2.2.0\r
-\r
- + Explicit use of 'signed' qualifier on portCHAR types added.\r
- + Changed odd calculation of initial pxTopOfStack value when\r
- portSTACK_GROWTH < 0.\r
- + Removed pcVersionNumber definition.\r
-\r
-Changes from V2.5.3\r
-\r
- + cTaskResumeAll() modified to ensure it can be called prior to the task\r
- lists being initialised.\r
-\r
-Changes from V2.5.5\r
-\r
- + Added API function vTaskDelayUntil().\r
- + Added INCLUDE_vTaskDelay conditional compilation.\r
-\r
-Changes from V2.6.0\r
-\r
- + Updated the vWriteTraceToBuffer macro to always be 4 byte aligned so it\r
- can be used on ARM architectures.\r
- + tskMAX_TASK_NAME_LEN definition replaced with the port specific\r
- configMAX_TASK_NAME_LEN definition.\r
- + Removed the call to strcpy when copying across the task name into the\r
- TCB.\r
- + Added ucTasksDeleted variable to prevent vTaskSuspendAll() being called\r
- too often in the idle task.\r
-\r
-Changes between V3.0.0 and V2.6.1\r
-\r
- + When resuming the scheduler a yield is performed if either a tick has\r
- been missed, or a task is moved from the pending ready list into a ready\r
- list. Previously a yield was not performed on this second condition.\r
- + Introduced the type portBASE_TYPE. This necessitates several API\r
- changes.\r
- + Removed the sUsingPreemption variable. The constant defined in\r
- portmacro.h is now used directly.\r
- + The idle task can now include an optional hook function - and no longer\r
- completes its time slice if other tasks with equal priority to it are\r
- ready to run.\r
- + See the FreeRTOS.org documentation for more information on V2.x.x to\r
- V3.x.x modifications.\r
-\r
-Changes from V3.1.1\r
-\r
- + Modified vTaskPrioritySet() and vTaskResume() to allow these functions to\r
- be called while the scheduler is suspended.\r
- + Corrected the task ordering within event lists.\r
-\r
-Changes from V3.2.0\r
-\r
- + Added function xTaskGetCurrentTaskHandle().\r
-\r
-Changes from V3.2.4\r
-\r
- + Changed the volatile declarations on some variables to reflect the \r
- changes to the list definitions.\r
- + Changed the order of the TCB definition so there is commonality between\r
- the task control block and a co-routine control block.\r
- + Allow the scheduler to be started even if no tasks other than the idle\r
- task has been created. This allows co-routines to run even when no tasks\r
- have been created.\r
- + The need for a context switch is now signalled if a task woken by an \r
- event has a priority greater or equal to the currently running task.\r
- Previously this was only greater than.\r
-\r
-Changes from V4.0.0\r
-\r
- + Added the xMissedYield handling.\r
-\r
-Changes from V4.0.1\r
-\r
- + The function vTaskList() now suspends the scheduler rather than disabling\r
- interrupts during the creation of the task list. \r
- + Allow a task to delete itself by passing in its own handle. Previously \r
- this could only be done by passing in NULL.\r
- + The tick hook function is now called only within a tick isr. Previously\r
- it was also called when the tick function was called during the scheduler\r
- unlocking process.\r
-\r
-Changes from V4.0.3\r
-\r
- + Extra checks have been placed in vTaskPrioritySet() to avoid unnecessary\r
- yields.\r
-\r
-Changed from V4.0.4\r
-\r
- + Bug fix: The 'value' of the event list item is updated when the priority\r
- of a task is changed. Previously only the priority of the TCB itself was\r
- changed.\r
- + When resuming a task a check is first made to see if the task is actually\r
- suspended.\r
- + vTaskPrioritySet() and vTaskResume() no longer use the event list item.\r
- This has not been necessary since V4.0.1 when the xMissedYield handling\r
- was added.\r
- + Implement xTaskResumeFromISR().\r
-\r
-Changes from V4.0.5\r
-\r
- + Added utility functions and xOverflowCount variable to facilitate the\r
- queue.c changes.\r
-\r
-Changes from V4.1.2\r
- \r
- + Tasks that block on events with a timeout of portMAX_DELAY are now\r
- blocked indefinitely if configINCLUDE_vTaskSuspend is defined. \r
- Previously portMAX_DELAY was just the longest block time possible.\r
-\r
-Changes from V4.1.3\r
-\r
- + Very small change made to xTaskCheckForTimeout() as a result of the \r
- SafeRTOS testing. This corrects the case where the function can return an\r
- invalid value - but only in an extremely unlikely scenario.\r
-\r
-Changes since V4.3.1:\r
-\r
- + Added xTaskGetSchedulerState() function.\r
- + Added prvIsTaskSuspended() to take into account the Occurrence of\r
- vTaskResume() or vTaskResumeFromISR() being called passing in the\r
- handle of a task that appears in the Suspended list only because it\r
- is blocked on an event without a timeout being specified.\r
- + Updated xTaskCheckForTimeout() to take into account that tasks blocked\r
- using the Suspended list should never time out.\r
-*/\r
-\r
-#include <stdio.h>\r
-#include <stdlib.h>\r
-#include <string.h>\r
-\r
-#include "FreeRTOS.h"\r
-#include "task.h"\r
-\r
-/*\r
- * Macro to define the amount of stack available to the idle task.\r
- */\r
-#define tskIDLE_STACK_SIZE configMINIMAL_STACK_SIZE\r
-\r
-\r
-/*\r
- * Default a definitions for backwards compatibility with old\r
- * portmacro.h files.\r
- */\r
-#ifndef configMAX_TASK_NAME_LEN\r
- #define configMAX_TASK_NAME_LEN 16\r
-#endif\r
-\r
-#ifndef configIDLE_SHOULD_YIELD\r
- #define configIDLE_SHOULD_YIELD 1\r
-#endif\r
-\r
-#if configMAX_TASK_NAME_LEN < 1\r
- #undef configMAX_TASK_NAME_LEN\r
- #define configMAX_TASK_NAME_LEN 1\r
-#endif\r
-\r
-#ifndef INCLUDE_xTaskResumeFromISR\r
- #define INCLUDE_xTaskResumeFromISR 1\r
-#endif\r
-\r
-#ifndef INCLUDE_xTaskGetSchedulerState\r
- #define INCLUDE_xTaskGetSchedulerState 0\r
-#endif\r
-\r
-/*\r
- * Task control block. A task control block (TCB) is allocated to each task,\r
- * and stores the context of the task.\r
- */\r
-typedef struct tskTaskControlBlock\r
-{\r
- volatile portSTACK_TYPE *pxTopOfStack; /*< Points to the location of the last item placed on the tasks stack. THIS MUST BE THE FIRST MEMBER OF THE STRUCT. */\r
- xListItem xGenericListItem; /*< List item used to place the TCB in ready and blocked queues. */\r
- xListItem xEventListItem; /*< List item used to place the TCB in event lists. */\r
- unsigned portBASE_TYPE uxPriority; /*< The priority of the task where 0 is the lowest priority. */\r
- portSTACK_TYPE *pxStack; /*< Points to the start of the stack. */\r
- signed portCHAR pcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created. Facilitates debugging only. */\r
-\r
- #if ( configUSE_TRACE_FACILITY == 1 )\r
- unsigned portBASE_TYPE uxTCBNumber; /*< This is used for tracing the scheduler and making debugging easier only. */\r
- #endif \r
- \r
- #if ( configUSE_MUTEXES == 1 )\r
- unsigned portBASE_TYPE uxBasePriority;\r
- #endif\r
- \r
-} tskTCB;\r
-\r
-/*lint -e956 */\r
-\r
-tskTCB * volatile pxCurrentTCB = NULL; \r
-\r
-/* Lists for ready and blocked tasks. --------------------*/\r
-\r
-static xList pxReadyTasksLists[ configMAX_PRIORITIES ]; /*< Prioritised ready tasks. */\r
-static xList xDelayedTaskList1; /*< Delayed tasks. */\r
-static xList xDelayedTaskList2; /*< Delayed tasks (two lists are used - one for delays that have overflowed the current tick count. */\r
-static xList * volatile pxDelayedTaskList; /*< Points to the delayed task list currently being used. */\r
-static xList * volatile pxOverflowDelayedTaskList; /*< Points to the delayed task list currently being used to hold tasks that have overflowed the current tick count. */\r
-static xList xPendingReadyList; /*< Tasks that have been readied while the scheduler was suspended. They will be moved to the ready queue when the scheduler is resumed. */\r
-\r
-#if ( INCLUDE_vTaskDelete == 1 )\r
-\r
- static volatile xList xTasksWaitingTermination; /*< Tasks that have been deleted - but the their memory not yet freed. */\r
- static volatile unsigned portBASE_TYPE uxTasksDeleted = ( unsigned portBASE_TYPE ) 0;\r
-\r
-#endif\r
-\r
-#if ( INCLUDE_vTaskSuspend == 1 )\r
-\r
- static xList xSuspendedTaskList; /*< Tasks that are currently suspended. */\r
-\r
-#endif\r
-\r
-/* File private variables. --------------------------------*/\r
-static volatile unsigned portBASE_TYPE uxCurrentNumberOfTasks = ( unsigned portBASE_TYPE ) 0;\r
-static volatile portTickType xTickCount = ( portTickType ) 0;\r
-static unsigned portBASE_TYPE uxTopUsedPriority = tskIDLE_PRIORITY;\r
-static volatile unsigned portBASE_TYPE uxTopReadyPriority = tskIDLE_PRIORITY;\r
-static volatile signed portBASE_TYPE xSchedulerRunning = pdFALSE;\r
-static volatile unsigned portBASE_TYPE uxSchedulerSuspended = ( unsigned portBASE_TYPE ) pdFALSE;\r
-static volatile unsigned portBASE_TYPE uxMissedTicks = ( unsigned portBASE_TYPE ) 0;\r
-static volatile portBASE_TYPE xMissedYield = ( portBASE_TYPE ) pdFALSE;\r
-static volatile portBASE_TYPE xNumOfOverflows = ( portBASE_TYPE ) 0;\r
-/* Debugging and trace facilities private variables and macros. ------------*/\r
-\r
-/*\r
- * The value used to fill the stack of a task when the task is created. This\r
- * is used purely for checking the high water mark for tasks.\r
- */\r
-#define tskSTACK_FILL_BYTE ( 0xa5 )\r
-\r
-/*\r
- * Macros used by vListTask to indicate which state a task is in.\r
- */\r
-#define tskBLOCKED_CHAR ( ( signed portCHAR ) 'B' )\r
-#define tskREADY_CHAR ( ( signed portCHAR ) 'R' )\r
-#define tskDELETED_CHAR ( ( signed portCHAR ) 'D' )\r
-#define tskSUSPENDED_CHAR ( ( signed portCHAR ) 'S' )\r
-\r
-/*\r
- * Macros and private variables used by the trace facility.\r
- */\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-\r
- #define tskSIZE_OF_EACH_TRACE_LINE ( ( unsigned portLONG ) ( sizeof( unsigned portLONG ) + sizeof( unsigned portLONG ) ) )\r
- static volatile signed portCHAR * volatile pcTraceBuffer;\r
- static signed portCHAR *pcTraceBufferStart;\r
- static signed portCHAR *pcTraceBufferEnd;\r
- static signed portBASE_TYPE xTracing = pdFALSE;\r
-\r
-#endif\r
-\r
-/*\r
- * Macro that writes a trace of scheduler activity to a buffer. This trace\r
- * shows which task is running when and is very useful as a debugging tool.\r
- * As this macro is called each context switch it is a good idea to undefine\r
- * it if not using the facility.\r
- */\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-\r
- #define vWriteTraceToBuffer() \\r
- { \\r
- if( xTracing ) \\r
- { \\r
- static unsigned portBASE_TYPE uxPreviousTask = 255; \\r
- \\r
- if( uxPreviousTask != pxCurrentTCB->uxTCBNumber ) \\r
- { \\r
- if( ( pcTraceBuffer + tskSIZE_OF_EACH_TRACE_LINE ) < pcTraceBufferEnd ) \\r
- { \\r
- uxPreviousTask = pxCurrentTCB->uxTCBNumber; \\r
- *( unsigned portLONG * ) pcTraceBuffer = ( unsigned portLONG ) xTickCount; \\r
- pcTraceBuffer += sizeof( unsigned portLONG ); \\r
- *( unsigned portLONG * ) pcTraceBuffer = ( unsigned portLONG ) uxPreviousTask; \\r
- pcTraceBuffer += sizeof( unsigned portLONG ); \\r
- } \\r
- else \\r
- { \\r
- xTracing = pdFALSE; \\r
- } \\r
- } \\r
- } \\r
- }\r
-\r
-#else\r
-\r
- #define vWriteTraceToBuffer()\r
-\r
-#endif\r
-\r
-\r
-/*\r
- * Place the task represented by pxTCB into the appropriate ready queue for\r
- * the task. It is inserted at the end of the list. One quirk of this is\r
- * that if the task being inserted is at the same priority as the currently\r
- * executing task, then it will only be rescheduled after the currently\r
- * executing task has been rescheduled.\r
- */\r
-#define prvAddTaskToReadyQueue( pxTCB ) \\r
-{ \\r
- if( pxTCB->uxPriority > uxTopReadyPriority ) \\r
- { \\r
- uxTopReadyPriority = pxTCB->uxPriority; \\r
- } \\r
- vListInsertEnd( ( xList * ) &( pxReadyTasksLists[ pxTCB->uxPriority ] ), &( pxTCB->xGenericListItem ) ); \\r
-} \r
-\r
-/*\r
- * Macro that looks at the list of tasks that are currently delayed to see if\r
- * any require waking.\r
- *\r
- * Tasks are stored in the queue in the order of their wake time - meaning\r
- * once one tasks has been found whose timer has not expired we need not look\r
- * any further down the list.\r
- */\r
-#define prvCheckDelayedTasks() \\r
-{ \\r
-register tskTCB *pxTCB; \\r
- \\r
- while( ( pxTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ) ) != NULL ) \\r
- { \\r
- if( xTickCount < listGET_LIST_ITEM_VALUE( &( pxTCB->xGenericListItem ) ) ) \\r
- { \\r
- break; \\r
- } \\r
- vListRemove( &( pxTCB->xGenericListItem ) ); \\r
- /* Is the task waiting on an event also? */ \\r
- if( pxTCB->xEventListItem.pvContainer ) \\r
- { \\r
- vListRemove( &( pxTCB->xEventListItem ) ); \\r
- } \\r
- prvAddTaskToReadyQueue( pxTCB ); \\r
- } \\r
-} \r
-\r
-/*\r
- * Several functions take an xTaskHandle parameter that can optionally be NULL,\r
- * where NULL is used to indicate that the handle of the currently executing\r
- * task should be used in place of the parameter. This macro simply checks to\r
- * see if the parameter is NULL and returns a pointer to the appropriate TCB.\r
- */\r
-#define prvGetTCBFromHandle( pxHandle ) ( ( pxHandle == NULL ) ? ( tskTCB * ) pxCurrentTCB : ( tskTCB * ) pxHandle )\r
-\r
-\r
-/* File private functions. --------------------------------*/\r
-\r
-/*\r
- * Utility to ready a TCB for a given task. Mainly just copies the parameters\r
- * into the TCB structure.\r
- */\r
-static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed portCHAR * const pcName, unsigned portBASE_TYPE uxPriority );\r
-\r
-/*\r
- * Utility to ready all the lists used by the scheduler. This is called\r
- * automatically upon the creation of the first task.\r
- */\r
-static void prvInitialiseTaskLists( void );\r
-\r
-/*\r
- * The idle task, which as all tasks is implemented as a never ending loop.\r
- * The idle task is automatically created and added to the ready lists upon\r
- * creation of the first user task.\r
- *\r
- * The portTASK_FUNCTION_PROTO() macro is used to allow port/compiler specific\r
- * language extensions. The equivalent prototype for this function is:\r
- *\r
- * void prvIdleTask( void *pvParameters );\r
- *\r
- */\r
-static portTASK_FUNCTION_PROTO( prvIdleTask, pvParameters );\r
-\r
-/*\r
- * Utility to free all memory allocated by the scheduler to hold a TCB,\r
- * including the stack pointed to by the TCB.\r
- *\r
- * This does not free memory allocated by the task itself (i.e. memory\r
- * allocated by calls to pvPortMalloc from within the tasks application code).\r
- */\r
-#if ( ( INCLUDE_vTaskDelete == 1 ) || ( INCLUDE_vTaskCleanUpResources == 1 ) )\r
- static void prvDeleteTCB( tskTCB *pxTCB );\r
-#endif\r
-\r
-/*\r
- * Used only by the idle task. This checks to see if anything has been placed\r
- * in the list of tasks waiting to be deleted. If so the task is cleaned up\r
- * and its TCB deleted.\r
- */\r
-static void prvCheckTasksWaitingTermination( void );\r
-\r
-/*\r
- * Allocates memory from the heap for a TCB and associated stack. Checks the\r
- * allocation was successful.\r
- */\r
-static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth );\r
-\r
-/*\r
- * Called from vTaskList. vListTasks details all the tasks currently under\r
- * control of the scheduler. The tasks may be in one of a number of lists.\r
- * prvListTaskWithinSingleList accepts a list and details the tasks from\r
- * within just that list.\r
- *\r
- * THIS FUNCTION IS INTENDED FOR DEBUGGING ONLY, AND SHOULD NOT BE CALLED FROM\r
- * NORMAL APPLICATION CODE.\r
- */\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-\r
- static void prvListTaskWithinSingleList( const signed portCHAR *pcWriteBuffer, xList *pxList, signed portCHAR cStatus );\r
-\r
-#endif\r
-\r
-/*\r
- * When a task is created, the stack of the task is filled with a known value.\r
- * This function determines the 'high water mark' of the task stack by\r
- * determining how much of the stack remains at the original preset value.\r
- */\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-\r
- unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte );\r
-\r
-#endif\r
-\r
-/*\r
- * Checks that a task being resumed (unsuspended) is actually in the Suspended\r
- * state.\r
- */\r
-#if ( INCLUDE_vTaskSuspend == 1 )\r
-\r
- static portBASE_TYPE prvIsTaskSuspended( const tskTCB * const pxTCB ); \r
-\r
-#endif\r
-\r
-/*lint +e956 */\r
-\r
-\r
-\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * TASK CREATION API documented in task.h\r
- *----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask )\r
-{\r
-signed portBASE_TYPE xReturn;\r
-tskTCB * pxNewTCB;\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
- static unsigned portBASE_TYPE uxTaskNumber = 0; /*lint !e956 Static is deliberate - this is guarded before use. */\r
-#endif\r
-\r
- /* Allocate the memory required by the TCB and stack for the new task.\r
- checking that the allocation was successful. */\r
- pxNewTCB = prvAllocateTCBAndStack( usStackDepth );\r
-\r
- if( pxNewTCB != NULL )\r
- { \r
- portSTACK_TYPE *pxTopOfStack;\r
-\r
- /* Setup the newly allocated TCB with the initial state of the task. */\r
- prvInitialiseTCBVariables( pxNewTCB, pcName, uxPriority );\r
-\r
- /* Calculate the top of stack address. This depends on whether the\r
- stack grows from high memory to low (as per the 80x86) or visa versa.\r
- portSTACK_GROWTH is used to make the result positive or negative as\r
- required by the port. */\r
- #if portSTACK_GROWTH < 0\r
- {\r
- pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - 1 );\r
- }\r
- #else\r
- {\r
- pxTopOfStack = pxNewTCB->pxStack; \r
- }\r
- #endif\r
-\r
- /* Initialize the TCB stack to look as if the task was already running,\r
- but had been interrupted by the scheduler. The return address is set\r
- to the start of the task function. Once the stack has been initialised\r
- the top of stack variable is updated. */\r
- pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pvTaskCode, pvParameters );\r
-\r
- /* We are going to manipulate the task queues to add this task to a\r
- ready list, so must make sure no interrupts occur. */\r
- portENTER_CRITICAL();\r
- {\r
- uxCurrentNumberOfTasks++;\r
- if( uxCurrentNumberOfTasks == ( unsigned portBASE_TYPE ) 1 )\r
- {\r
- /* As this is the first task it must also be the current task. */\r
- pxCurrentTCB = pxNewTCB;\r
-\r
- /* This is the first task to be created so do the preliminary\r
- initialisation required. We will not recover if this call\r
- fails, but we will report the failure. */\r
- prvInitialiseTaskLists();\r
- }\r
- else\r
- { \r
- /* If the scheduler is not already running, make this task the\r
- current task if it is the highest priority task to be created\r
- so far. */\r
- if( xSchedulerRunning == pdFALSE )\r
- {\r
- if( pxCurrentTCB->uxPriority <= uxPriority )\r
- {\r
- pxCurrentTCB = pxNewTCB; \r
- }\r
- }\r
- } \r
-\r
- /* Remember the top priority to make context switching faster. Use\r
- the priority in pxNewTCB as this has been capped to a valid value. */\r
- if( pxNewTCB->uxPriority > uxTopUsedPriority )\r
- {\r
- uxTopUsedPriority = pxNewTCB->uxPriority;\r
- }\r
-\r
- #if ( configUSE_TRACE_FACILITY == 1 )\r
- {\r
- /* Add a counter into the TCB for tracing only. */\r
- pxNewTCB->uxTCBNumber = uxTaskNumber;\r
- uxTaskNumber++;\r
- }\r
- #endif\r
-\r
- prvAddTaskToReadyQueue( pxNewTCB );\r
-\r
- xReturn = pdPASS;\r
- }\r
- portEXIT_CRITICAL();\r
- }\r
- else\r
- {\r
- xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY;\r
- }\r
-\r
- if( xReturn == pdPASS )\r
- {\r
- if( ( void * ) pxCreatedTask != NULL )\r
- {\r
- /* Pass the TCB out - in an anonymous way. The calling function/\r
- task can use this as a handle to delete the task later if\r
- required.*/\r
- *pxCreatedTask = ( xTaskHandle ) pxNewTCB;\r
- }\r
-\r
- if( xSchedulerRunning != pdFALSE )\r
- {\r
- /* If the created task is of a higher priority than the current task\r
- then it should run now. */\r
- if( pxCurrentTCB->uxPriority < uxPriority )\r
- {\r
- taskYIELD();\r
- }\r
- }\r
- }\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_vTaskDelete == 1 )\r
-\r
- void vTaskDelete( xTaskHandle pxTaskToDelete )\r
- {\r
- tskTCB *pxTCB;\r
-\r
- taskENTER_CRITICAL();\r
- {\r
- /* Ensure a yield is performed if the current task is being \r
- deleted. */\r
- if( pxTaskToDelete == pxCurrentTCB )\r
- {\r
- pxTaskToDelete = NULL;\r
- }\r
-\r
- /* If null is passed in here then we are deleting ourselves. */\r
- pxTCB = prvGetTCBFromHandle( pxTaskToDelete );\r
-\r
- /* Remove task from the ready list and place in the termination list.\r
- This will stop the task from be scheduled. The idle task will check\r
- the termination list and free up any memory allocated by the\r
- scheduler for the TCB and stack. */\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
-\r
- /* Is the task waiting on an event also? */ \r
- if( pxTCB->xEventListItem.pvContainer )\r
- {\r
- vListRemove( &( pxTCB->xEventListItem ) );\r
- }\r
-\r
- vListInsertEnd( ( xList * ) &xTasksWaitingTermination, &( pxTCB->xGenericListItem ) );\r
-\r
- /* Increment the ucTasksDeleted variable so the idle task knows\r
- there is a task that has been deleted and that it should therefore\r
- check the xTasksWaitingTermination list. */\r
- ++uxTasksDeleted;\r
- }\r
- taskEXIT_CRITICAL();\r
-\r
- /* Force a reschedule if we have just deleted the current task. */\r
- if( xSchedulerRunning != pdFALSE ) \r
- {\r
- if( ( void * ) pxTaskToDelete == NULL )\r
- {\r
- taskYIELD();\r
- }\r
- }\r
- }\r
-\r
-#endif\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * TASK CONTROL API documented in task.h\r
- *----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_vTaskDelayUntil == 1 )\r
-\r
- void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement )\r
- {\r
- portTickType xTimeToWake;\r
- portBASE_TYPE xAlreadyYielded, xShouldDelay = pdFALSE;\r
-\r
- vTaskSuspendAll();\r
- {\r
- /* Generate the tick time at which the task wants to wake. */\r
- xTimeToWake = *pxPreviousWakeTime + xTimeIncrement;\r
-\r
- if( xTickCount < *pxPreviousWakeTime )\r
- {\r
- /* The tick count has overflowed since this function was\r
- lasted called. In this case the only time we should ever\r
- actually delay is if the wake time has also overflowed,\r
- and the wake time is greater than the tick time. When this\r
- is the case it is as if neither time had overflowed. */\r
- if( ( xTimeToWake < *pxPreviousWakeTime ) && ( xTimeToWake > xTickCount ) )\r
- {\r
- xShouldDelay = pdTRUE;\r
- }\r
- }\r
- else\r
- {\r
- /* The tick time has not overflowed. In this case we will\r
- delay if either the wake time has overflowed, and/or the\r
- tick time is less than the wake time. */\r
- if( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xTickCount ) )\r
- {\r
- xShouldDelay = pdTRUE;\r
- }\r
- }\r
-\r
- /* Update the wake time ready for the next call. */\r
- *pxPreviousWakeTime = xTimeToWake;\r
-\r
- if( xShouldDelay )\r
- {\r
- /* We must remove ourselves from the ready list before adding\r
- ourselves to the blocked list as the same list item is used for\r
- both lists. */\r
- vListRemove( ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
-\r
- /* The list item will be inserted in wake time order. */\r
- listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake );\r
-\r
- if( xTimeToWake < xTickCount )\r
- {\r
- /* Wake time has overflowed. Place this item in the\r
- overflow list. */\r
- vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- else\r
- {\r
- /* The wake time has not overflowed, so we can use the\r
- current block list. */\r
- vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- }\r
- }\r
- xAlreadyYielded = xTaskResumeAll();\r
-\r
- /* Force a reschedule if xTaskResumeAll has not already done so, we may\r
- have put ourselves to sleep. */\r
- if( !xAlreadyYielded )\r
- {\r
- taskYIELD();\r
- }\r
- } \r
- \r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_vTaskDelay == 1 )\r
-\r
- void vTaskDelay( portTickType xTicksToDelay )\r
- {\r
- portTickType xTimeToWake;\r
- signed portBASE_TYPE xAlreadyYielded = pdFALSE;\r
-\r
- /* A delay time of zero just forces a reschedule. */\r
- if( xTicksToDelay > ( portTickType ) 0 )\r
- {\r
- vTaskSuspendAll();\r
- {\r
- /* A task that is removed from the event list while the\r
- scheduler is suspended will not get placed in the ready\r
- list or removed from the blocked list until the scheduler\r
- is resumed.\r
- \r
- This task cannot be in an event list as it is the currently\r
- executing task. */\r
-\r
- /* Calculate the time to wake - this may overflow but this is\r
- not a problem. */\r
- xTimeToWake = xTickCount + xTicksToDelay;\r
-\r
- /* We must remove ourselves from the ready list before adding\r
- ourselves to the blocked list as the same list item is used for\r
- both lists. */\r
- vListRemove( ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
-\r
- /* The list item will be inserted in wake time order. */\r
- listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake );\r
-\r
- if( xTimeToWake < xTickCount )\r
- {\r
- /* Wake time has overflowed. Place this item in the\r
- overflow list. */\r
- vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- else\r
- {\r
- /* The wake time has not overflowed, so we can use the\r
- current block list. */\r
- vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- }\r
- xAlreadyYielded = xTaskResumeAll();\r
- }\r
- \r
- /* Force a reschedule if xTaskResumeAll has not already done so, we may\r
- have put ourselves to sleep. */\r
- if( !xAlreadyYielded )\r
- {\r
- taskYIELD();\r
- }\r
- }\r
- \r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_uxTaskPriorityGet == 1 )\r
-\r
- unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask )\r
- {\r
- tskTCB *pxTCB;\r
- unsigned portBASE_TYPE uxReturn;\r
-\r
- taskENTER_CRITICAL();\r
- {\r
- /* If null is passed in here then we are changing the\r
- priority of the calling function. */\r
- pxTCB = prvGetTCBFromHandle( pxTask );\r
- uxReturn = pxTCB->uxPriority;\r
- }\r
- taskEXIT_CRITICAL();\r
-\r
- return uxReturn;\r
- }\r
-\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_vTaskPrioritySet == 1 )\r
-\r
- void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority )\r
- {\r
- tskTCB *pxTCB;\r
- unsigned portBASE_TYPE uxCurrentPriority, xYieldRequired = pdFALSE;\r
-\r
- /* Ensure the new priority is valid. */\r
- if( uxNewPriority >= configMAX_PRIORITIES )\r
- {\r
- uxNewPriority = configMAX_PRIORITIES - 1;\r
- }\r
-\r
- taskENTER_CRITICAL();\r
- {\r
- /* If null is passed in here then we are changing the\r
- priority of the calling function. */\r
- pxTCB = prvGetTCBFromHandle( pxTask );\r
- \r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- uxCurrentPriority = pxTCB->uxBasePriority;\r
- }\r
- #else\r
- {\r
- uxCurrentPriority = pxTCB->uxPriority;\r
- }\r
- #endif\r
-\r
- if( uxCurrentPriority != uxNewPriority )\r
- {\r
- /* The priority change may have readied a task of higher\r
- priority than the calling task. */\r
- if( uxNewPriority > uxCurrentPriority ) \r
- {\r
- if( pxTask != NULL )\r
- {\r
- /* The priority of another task is being raised. If we\r
- were raising the priority of the currently running task\r
- there would be no need to switch as it must have already\r
- been the highest priority task. */\r
- xYieldRequired = pdTRUE;\r
- }\r
- }\r
- else if( pxTask == NULL )\r
- {\r
- /* Setting our own priority down means there may now be another\r
- task of higher priority that is ready to execute. */\r
- xYieldRequired = pdTRUE;\r
- }\r
- \r
- \r
-\r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- /* Only change the priority being used if the task is not\r
- currently using an inherited priority. */\r
- if( pxTCB->uxBasePriority == pxTCB->uxPriority )\r
- {\r
- pxTCB->uxPriority = uxNewPriority;\r
- }\r
- \r
- /* The base priority gets set whatever. */\r
- pxTCB->uxBasePriority = uxNewPriority; \r
- }\r
- #else\r
- {\r
- pxTCB->uxPriority = uxNewPriority;\r
- }\r
- #endif\r
-\r
- listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( configMAX_PRIORITIES - ( portTickType ) uxNewPriority ) );\r
-\r
- /* If the task is in the blocked or suspended list we need do\r
- nothing more than change it's priority variable. However, if\r
- the task is in a ready list it needs to be removed and placed\r
- in the queue appropriate to its new priority. */\r
- if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxCurrentPriority ] ), &( pxTCB->xGenericListItem ) ) )\r
- {\r
- /* The task is currently in its ready list - remove before adding\r
- it to it's new ready list. As we are in a critical section we\r
- can do this even if the scheduler is suspended. */\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
- prvAddTaskToReadyQueue( pxTCB );\r
- } \r
- \r
- if( xYieldRequired == pdTRUE )\r
- {\r
- taskYIELD();\r
- } \r
- }\r
- }\r
- taskEXIT_CRITICAL();\r
- }\r
-\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_vTaskSuspend == 1 )\r
-\r
- void vTaskSuspend( xTaskHandle pxTaskToSuspend )\r
- {\r
- tskTCB *pxTCB;\r
-\r
- taskENTER_CRITICAL();\r
- {\r
- /* Ensure a yield is performed if the current task is being \r
- suspended. */\r
- if( pxTaskToSuspend == pxCurrentTCB )\r
- {\r
- pxTaskToSuspend = NULL;\r
- }\r
-\r
- /* If null is passed in here then we are suspending ourselves. */\r
- pxTCB = prvGetTCBFromHandle( pxTaskToSuspend );\r
-\r
- /* Remove task from the ready/delayed list and place in the suspended list. */\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
-\r
- /* Is the task waiting on an event also? */ \r
- if( pxTCB->xEventListItem.pvContainer )\r
- {\r
- vListRemove( &( pxTCB->xEventListItem ) );\r
- }\r
-\r
- vListInsertEnd( ( xList * ) &xSuspendedTaskList, &( pxTCB->xGenericListItem ) );\r
- }\r
- taskEXIT_CRITICAL();\r
-\r
- /* We may have just suspended the current task. */\r
- if( ( void * ) pxTaskToSuspend == NULL )\r
- {\r
- taskYIELD();\r
- }\r
- }\r
-\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_vTaskSuspend == 1 )\r
-\r
- static portBASE_TYPE prvIsTaskSuspended( const tskTCB * const pxTCB )\r
- {\r
- portBASE_TYPE xReturn = pdFALSE;\r
-\r
- /* Is the task we are attempting to resume actually in the\r
- suspended list? */\r
- if( listIS_CONTAINED_WITHIN( &xSuspendedTaskList, &( pxTCB->xGenericListItem ) ) != pdFALSE )\r
- {\r
- /* Has the task already been resumed from within an ISR? */\r
- if( listIS_CONTAINED_WITHIN( &xPendingReadyList, &( pxTCB->xEventListItem ) ) != pdTRUE )\r
- { \r
- /* Is it in the suspended list because it is in the\r
- Suspended state? It is possible to be in the suspended\r
- list because it is blocked on a task with no timeout\r
- specified. */\r
- if( listIS_CONTAINED_WITHIN( NULL, &( pxTCB->xEventListItem ) ) == pdTRUE )\r
- {\r
- xReturn = pdTRUE;\r
- }\r
- }\r
- }\r
-\r
- return xReturn;\r
- }\r
-\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_vTaskSuspend == 1 )\r
-\r
- void vTaskResume( xTaskHandle pxTaskToResume )\r
- {\r
- tskTCB *pxTCB;\r
-\r
- /* Remove the task from whichever list it is currently in, and place\r
- it in the ready list. */\r
- pxTCB = ( tskTCB * ) pxTaskToResume;\r
-\r
- /* The parameter cannot be NULL as it is impossible to resume the\r
- currently executing task. */\r
- if( pxTCB != NULL )\r
- {\r
- taskENTER_CRITICAL();\r
- {\r
- if( prvIsTaskSuspended( pxTCB ) == pdTRUE )\r
- {\r
- /* As we are in a critical section we can access the ready\r
- lists even if the scheduler is suspended. */\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
- prvAddTaskToReadyQueue( pxTCB );\r
-\r
- /* We may have just resumed a higher priority task. */\r
- if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )\r
- {\r
- /* This yield may not cause the task just resumed to run, but\r
- will leave the lists in the correct state for the next yield. */\r
- taskYIELD();\r
- }\r
- }\r
- }\r
- taskEXIT_CRITICAL();\r
- }\r
- }\r
-\r
-#endif\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) )\r
-\r
- portBASE_TYPE xTaskResumeFromISR( xTaskHandle pxTaskToResume )\r
- {\r
- portBASE_TYPE xYieldRequired = pdFALSE;\r
- tskTCB *pxTCB;\r
-\r
- pxTCB = ( tskTCB * ) pxTaskToResume;\r
-\r
- if( prvIsTaskSuspended( pxTCB ) == pdTRUE )\r
- {\r
- if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE )\r
- {\r
- xYieldRequired = ( pxTCB->uxPriority >= pxCurrentTCB->uxPriority );\r
- vListRemove( &( pxTCB->xGenericListItem ) ); \r
- prvAddTaskToReadyQueue( pxTCB );\r
- }\r
- else\r
- {\r
- /* We cannot access the delayed or ready lists, so will hold this\r
- task pending until the scheduler is resumed, at which point a\r
- yield will be performed if necessary. */\r
- vListInsertEnd( ( xList * ) &( xPendingReadyList ), &( pxTCB->xEventListItem ) );\r
- }\r
- }\r
-\r
- return xYieldRequired;\r
- }\r
-\r
-#endif\r
-\r
-\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * PUBLIC SCHEDULER CONTROL documented in task.h\r
- *----------------------------------------------------------*/\r
-\r
-\r
-void vTaskStartScheduler( void )\r
-{\r
-portBASE_TYPE xReturn;\r
-\r
- /* Add the idle task at the lowest priority. */\r
- xReturn = xTaskCreate( prvIdleTask, ( signed portCHAR * ) "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, ( xTaskHandle * ) NULL );\r
-\r
- if( xReturn == pdPASS )\r
- {\r
- /* Interrupts are turned off here, to ensure a tick does not occur\r
- before or during the call to xPortStartScheduler(). The stacks of\r
- the created tasks contain a status word with interrupts switched on\r
- so interrupts will automatically get re-enabled when the first task\r
- starts to run.\r
- \r
- STEPPING THROUGH HERE USING A DEBUGGER CAN CAUSE BIG PROBLEMS IF THE\r
- DEBUGGER ALLOWS INTERRUPTS TO BE PROCESSED. */\r
- portDISABLE_INTERRUPTS();\r
-\r
- xSchedulerRunning = pdTRUE;\r
- xTickCount = ( portTickType ) 0;\r
-\r
- /* Setting up the timer tick is hardware specific and thus in the\r
- portable interface. */\r
- if( xPortStartScheduler() )\r
- {\r
- /* Should not reach here as if the scheduler is running the\r
- function will not return. */\r
- }\r
- else\r
- {\r
- /* Should only reach here if a task calls xTaskEndScheduler(). */\r
- }\r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vTaskEndScheduler( void )\r
-{\r
- /* Stop the scheduler interrupts and call the portable scheduler end\r
- routine so the original ISRs can be restored if necessary. The port\r
- layer must ensure interrupts enable bit is left in the correct state. */\r
- portDISABLE_INTERRUPTS();\r
- xSchedulerRunning = pdFALSE;\r
- vPortEndScheduler();\r
-}\r
-/*----------------------------------------------------------*/\r
-\r
-void vTaskSuspendAll( void )\r
-{\r
- portENTER_CRITICAL();\r
- ++uxSchedulerSuspended;\r
- portEXIT_CRITICAL();\r
-}\r
-/*----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xTaskResumeAll( void )\r
-{\r
-register tskTCB *pxTCB;\r
-signed portBASE_TYPE xAlreadyYielded = pdFALSE;\r
-\r
- /* It is possible that an ISR caused a task to be removed from an event\r
- list while the scheduler was suspended. If this was the case then the\r
- removed task will have been added to the xPendingReadyList. Once the\r
- scheduler has been resumed it is safe to move all the pending ready\r
- tasks from this list into their appropriate ready list. */\r
- portENTER_CRITICAL();\r
- {\r
- --uxSchedulerSuspended;\r
-\r
- if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE )\r
- { \r
- if( uxCurrentNumberOfTasks > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- portBASE_TYPE xYieldRequired = pdFALSE;\r
- \r
- /* Move any readied tasks from the pending list into the\r
- appropriate ready list. */\r
- while( ( pxTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( ( ( xList * ) &xPendingReadyList ) ) ) != NULL )\r
- {\r
- vListRemove( &( pxTCB->xEventListItem ) );\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
- prvAddTaskToReadyQueue( pxTCB );\r
- \r
- /* If we have moved a task that has a priority higher than\r
- the current task then we should yield. */\r
- if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority )\r
- {\r
- xYieldRequired = pdTRUE;\r
- }\r
- }\r
-\r
- /* If any ticks occurred while the scheduler was suspended then\r
- they should be processed now. This ensures the tick count does not\r
- slip, and that any delayed tasks are resumed at the correct time. */\r
- if( uxMissedTicks > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- while( uxMissedTicks > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- vTaskIncrementTick();\r
- --uxMissedTicks;\r
- }\r
-\r
- /* As we have processed some ticks it is appropriate to yield\r
- to ensure the highest priority task that is ready to run is\r
- the task actually running. */\r
- #if configUSE_PREEMPTION == 1\r
- {\r
- xYieldRequired = pdTRUE;\r
- }\r
- #endif\r
- }\r
- \r
- if( ( xYieldRequired == pdTRUE ) || ( xMissedYield == pdTRUE ) )\r
- {\r
- xAlreadyYielded = pdTRUE;\r
- xMissedYield = pdFALSE;\r
- taskYIELD();\r
- }\r
- }\r
- }\r
- }\r
- portEXIT_CRITICAL();\r
-\r
- return xAlreadyYielded;\r
-}\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * PUBLIC TASK UTILITIES documented in task.h\r
- *----------------------------------------------------------*/\r
-\r
-\r
-\r
-portTickType xTaskGetTickCount( void )\r
-{\r
-portTickType xTicks;\r
-\r
- /* Critical section required if running on a 16 bit processor. */\r
- taskENTER_CRITICAL();\r
- {\r
- xTicks = xTickCount;\r
- }\r
- taskEXIT_CRITICAL();\r
-\r
- return xTicks;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void )\r
-{\r
-unsigned portBASE_TYPE uxNumberOfTasks;\r
-\r
- taskENTER_CRITICAL();\r
- uxNumberOfTasks = uxCurrentNumberOfTasks;\r
- taskEXIT_CRITICAL();\r
-\r
- return uxNumberOfTasks;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_vTaskDelete == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) )\r
-\r
- void vTaskList( signed portCHAR *pcWriteBuffer )\r
- {\r
- unsigned portBASE_TYPE uxQueue;\r
-\r
- /* This is a VERY costly function that should be used for debug only.\r
- It leaves interrupts disabled for a LONG time. */\r
-\r
- vTaskSuspendAll();\r
- {\r
- /* Run through all the lists that could potentially contain a TCB and\r
- report the task name, state and stack high water mark. */\r
-\r
- pcWriteBuffer[ 0 ] = ( signed portCHAR ) 0x00;\r
- strcat( ( portCHAR * ) pcWriteBuffer, ( const portCHAR * ) "\r\n" );\r
-\r
- uxQueue = uxTopUsedPriority + 1;\r
-\r
- do\r
- {\r
- uxQueue--;\r
-\r
- if( !listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxQueue ] ) ) )\r
- {\r
- prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) &( pxReadyTasksLists[ uxQueue ] ), tskREADY_CHAR ); \r
- }\r
- }while( uxQueue > ( unsigned portSHORT ) tskIDLE_PRIORITY );\r
-\r
- if( !listLIST_IS_EMPTY( pxDelayedTaskList ) )\r
- {\r
- prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) pxDelayedTaskList, tskBLOCKED_CHAR );\r
- }\r
-\r
- if( !listLIST_IS_EMPTY( pxOverflowDelayedTaskList ) )\r
- {\r
- prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) pxOverflowDelayedTaskList, tskBLOCKED_CHAR );\r
- }\r
-\r
- if( !listLIST_IS_EMPTY( &xTasksWaitingTermination ) )\r
- {\r
- prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) &xTasksWaitingTermination, tskDELETED_CHAR );\r
- }\r
-\r
- if( !listLIST_IS_EMPTY( &xSuspendedTaskList ) )\r
- {\r
- prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) &xSuspendedTaskList, tskSUSPENDED_CHAR );\r
- }\r
- }\r
- xTaskResumeAll();\r
- }\r
-\r
-#endif\r
-/*----------------------------------------------------------*/\r
-\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-\r
- void vTaskStartTrace( signed portCHAR * pcBuffer, unsigned portLONG ulBufferSize )\r
- {\r
- portENTER_CRITICAL();\r
- {\r
- pcTraceBuffer = ( signed portCHAR * )pcBuffer;\r
- pcTraceBufferStart = pcBuffer;\r
- pcTraceBufferEnd = pcBuffer + ( ulBufferSize - tskSIZE_OF_EACH_TRACE_LINE );\r
- xTracing = pdTRUE;\r
- }\r
- portEXIT_CRITICAL();\r
- }\r
-\r
-#endif\r
-/*----------------------------------------------------------*/\r
-\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-\r
- unsigned portLONG ulTaskEndTrace( void )\r
- {\r
- unsigned portLONG ulBufferLength;\r
-\r
- portENTER_CRITICAL();\r
- xTracing = pdFALSE;\r
- portEXIT_CRITICAL();\r
-\r
- ulBufferLength = ( unsigned portLONG ) ( pcTraceBuffer - pcTraceBufferStart );\r
-\r
- return ulBufferLength;\r
- }\r
-\r
-#endif\r
-\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES\r
- * documented in task.h\r
- *----------------------------------------------------------*/\r
-\r
-\r
-inline void vTaskIncrementTick( void )\r
-{\r
- /* Called by the portable layer each time a tick interrupt occurs.\r
- Increments the tick then checks to see if the new tick value will cause any\r
- tasks to be unblocked. */\r
- if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE )\r
- {\r
- ++xTickCount;\r
- if( xTickCount == ( portTickType ) 0 )\r
- {\r
- xList *pxTemp;\r
-\r
- /* Tick count has overflowed so we need to swap the delay lists. \r
- If there are any items in pxDelayedTaskList here then there is \r
- an error! */\r
- pxTemp = pxDelayedTaskList;\r
- pxDelayedTaskList = pxOverflowDelayedTaskList;\r
- pxOverflowDelayedTaskList = pxTemp;\r
- xNumOfOverflows++;\r
- }\r
-\r
- /* See if this tick has made a timeout expire. */\r
- prvCheckDelayedTasks();\r
- }\r
- else\r
- {\r
- ++uxMissedTicks;\r
-\r
- /* The tick hook gets called at regular intervals, even if the \r
- scheduler is locked. */\r
- #if ( configUSE_TICK_HOOK == 1 )\r
- {\r
- extern void vApplicationTickHook( void );\r
-\r
- vApplicationTickHook();\r
- }\r
- #endif\r
- }\r
-\r
- #if ( configUSE_TICK_HOOK == 1 )\r
- {\r
- extern void vApplicationTickHook( void );\r
-\r
- /* Guard against the tick hook being called when the missed tick\r
- count is being unwound (when the scheduler is being unlocked. */\r
- if( uxMissedTicks == 0 )\r
- {\r
- vApplicationTickHook();\r
- }\r
- }\r
- #endif\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( ( INCLUDE_vTaskCleanUpResources == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) )\r
-\r
- void vTaskCleanUpResources( void )\r
- {\r
- unsigned portSHORT usQueue;\r
- volatile tskTCB *pxTCB;\r
-\r
- usQueue = ( unsigned portSHORT ) uxTopUsedPriority + ( unsigned portSHORT ) 1;\r
-\r
- /* Remove any TCB's from the ready queues. */\r
- do\r
- {\r
- usQueue--;\r
-\r
- while( !listLIST_IS_EMPTY( &( pxReadyTasksLists[ usQueue ] ) ) )\r
- {\r
- listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &( pxReadyTasksLists[ usQueue ] ) );\r
- vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) );\r
-\r
- prvDeleteTCB( ( tskTCB * ) pxTCB );\r
- }\r
- }while( usQueue > ( unsigned portSHORT ) tskIDLE_PRIORITY );\r
-\r
- /* Remove any TCB's from the delayed queue. */\r
- while( !listLIST_IS_EMPTY( &xDelayedTaskList1 ) )\r
- {\r
- listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &xDelayedTaskList1 );\r
- vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) );\r
-\r
- prvDeleteTCB( ( tskTCB * ) pxTCB );\r
- }\r
-\r
- /* Remove any TCB's from the overflow delayed queue. */\r
- while( !listLIST_IS_EMPTY( &xDelayedTaskList2 ) )\r
- {\r
- listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &xDelayedTaskList2 );\r
- vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) );\r
-\r
- prvDeleteTCB( ( tskTCB * ) pxTCB );\r
- }\r
-\r
- while( !listLIST_IS_EMPTY( &xSuspendedTaskList ) )\r
- {\r
- listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &xSuspendedTaskList );\r
- vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) );\r
-\r
- prvDeleteTCB( ( tskTCB * ) pxTCB );\r
- } \r
- }\r
-\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-void vTaskSwitchContext( void )\r
-{\r
- if( uxSchedulerSuspended != ( unsigned portBASE_TYPE ) pdFALSE )\r
- {\r
- /* The scheduler is currently suspended - do not allow a context\r
- switch. */\r
- xMissedYield = pdTRUE;\r
- return;\r
- }\r
-\r
- /* Find the highest priority queue that contains ready tasks. */\r
- while( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopReadyPriority ] ) ) )\r
- {\r
- --uxTopReadyPriority;\r
- }\r
-\r
- /* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the tasks of the\r
- same priority get an equal share of the processor time. */\r
- listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopReadyPriority ] ) );\r
- vWriteTraceToBuffer();\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vTaskPlaceOnEventList( const xList * const pxEventList, portTickType xTicksToWait )\r
-{\r
-portTickType xTimeToWake;\r
-\r
- /* THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED OR THE\r
- SCHEDULER SUSPENDED. */\r
-\r
- /* Place the event list item of the TCB in the appropriate event list.\r
- This is placed in the list in priority order so the highest priority task\r
- is the first to be woken by the event. */\r
- vListInsert( ( xList * ) pxEventList, ( xListItem * ) &( pxCurrentTCB->xEventListItem ) );\r
-\r
- /* We must remove ourselves from the ready list before adding ourselves\r
- to the blocked list as the same list item is used for both lists. We have\r
- exclusive access to the ready lists as the scheduler is locked. */\r
- vListRemove( ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
-\r
-\r
- #if ( INCLUDE_vTaskSuspend == 1 )\r
- { \r
- if( xTicksToWait == portMAX_DELAY )\r
- {\r
- /* Add ourselves to the suspended task list instead of a delayed task\r
- list to ensure we are not woken by a timing event. We will block\r
- indefinitely. */\r
- vListInsertEnd( ( xList * ) &xSuspendedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- else\r
- {\r
- /* Calculate the time at which the task should be woken if the event does\r
- not occur. This may overflow but this doesn't matter. */\r
- xTimeToWake = xTickCount + xTicksToWait;\r
- \r
- listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake );\r
- \r
- if( xTimeToWake < xTickCount )\r
- {\r
- /* Wake time has overflowed. Place this item in the overflow list. */\r
- vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- else\r
- {\r
- /* The wake time has not overflowed, so we can use the current block list. */\r
- vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- }\r
- }\r
- #else\r
- {\r
- /* Calculate the time at which the task should be woken if the event does\r
- not occur. This may overflow but this doesn't matter. */\r
- xTimeToWake = xTickCount + xTicksToWait;\r
- \r
- listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake );\r
- \r
- if( xTimeToWake < xTickCount )\r
- {\r
- /* Wake time has overflowed. Place this item in the overflow list. */\r
- vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- else\r
- {\r
- /* The wake time has not overflowed, so we can use the current block list. */\r
- vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) );\r
- }\r
- }\r
- #endif\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-signed portBASE_TYPE xTaskRemoveFromEventList( const xList * const pxEventList )\r
-{\r
-tskTCB *pxUnblockedTCB;\r
-portBASE_TYPE xReturn;\r
-\r
- /* THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED OR THE\r
- SCHEDULER SUSPENDED. It can also be called from within an ISR. */\r
-\r
- /* The event list is sorted in priority order, so we can remove the\r
- first in the list, remove the TCB from the delayed list, and add\r
- it to the ready list.\r
- \r
- If an event is for a queue that is locked then this function will never\r
- get called - the lock count on the queue will get modified instead. This\r
- means we can always expect exclusive access to the event list here. */\r
- pxUnblockedTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList );\r
- vListRemove( &( pxUnblockedTCB->xEventListItem ) );\r
-\r
- if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE )\r
- {\r
- vListRemove( &( pxUnblockedTCB->xGenericListItem ) );\r
- prvAddTaskToReadyQueue( pxUnblockedTCB );\r
- }\r
- else\r
- {\r
- /* We cannot access the delayed or ready lists, so will hold this\r
- task pending until the scheduler is resumed. */\r
- vListInsertEnd( ( xList * ) &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) );\r
- }\r
-\r
- if( pxUnblockedTCB->uxPriority >= pxCurrentTCB->uxPriority )\r
- {\r
- /* Return true if the task removed from the event list has\r
- a higher priority than the calling task. This allows\r
- the calling task to know if it should force a context\r
- switch now. */\r
- xReturn = pdTRUE;\r
- }\r
- else\r
- {\r
- xReturn = pdFALSE;\r
- }\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vTaskSetTimeOutState( xTimeOutType * const pxTimeOut )\r
-{\r
- pxTimeOut->xOverflowCount = xNumOfOverflows;\r
- pxTimeOut->xTimeOnEntering = xTickCount;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-portBASE_TYPE xTaskCheckForTimeOut( xTimeOutType * const pxTimeOut, portTickType * const pxTicksToWait )\r
-{\r
-portBASE_TYPE xReturn;\r
-\r
- #if ( INCLUDE_vTaskSuspend == 1 )\r
- /* If INCLUDE_vTaskSuspend is set to 1 and the block time specified is\r
- the maximum block time then the task should block indefinitely, and\r
- therefore never time out. */\r
- if( *pxTicksToWait == portMAX_DELAY )\r
- {\r
- xReturn = pdFALSE;\r
- }\r
- else /* We are not blocking indefinitely, perform the checks below. */\r
- #endif\r
-\r
- if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xTickCount >= pxTimeOut->xTimeOnEntering ) )\r
- {\r
- /* The tick count is greater than the time at which vTaskSetTimeout()\r
- was called, but has also overflowed since vTaskSetTimeOut() was called.\r
- It must have wrapped all the way around and gone past us again. This\r
- passed since vTaskSetTimeout() was called. */\r
- xReturn = pdTRUE;\r
- }\r
- else if( ( xTickCount - pxTimeOut->xTimeOnEntering ) < *pxTicksToWait )\r
- {\r
- /* Not a genuine timeout. Adjust parameters for time remaining. */\r
- *pxTicksToWait -= ( xTickCount - pxTimeOut->xTimeOnEntering );\r
- vTaskSetTimeOutState( pxTimeOut );\r
- xReturn = pdFALSE;\r
- }\r
- else\r
- {\r
- xReturn = pdTRUE;\r
- }\r
-\r
- return xReturn;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-void vTaskMissedYield( void )\r
-{\r
- xMissedYield = pdTRUE;\r
-}\r
-\r
-/*\r
- * -----------------------------------------------------------\r
- * The Idle task.\r
- * ----------------------------------------------------------\r
- *\r
- * The portTASK_FUNCTION() macro is used to allow port/compiler specific\r
- * language extensions. The equivalent prototype for this function is:\r
- *\r
- * void prvIdleTask( void *pvParameters );\r
- *\r
- */\r
-static portTASK_FUNCTION( prvIdleTask, pvParameters )\r
-{\r
- /* Stop warnings. */\r
- ( void ) pvParameters;\r
-\r
- for( ;; )\r
- {\r
- /* See if any tasks have been deleted. */\r
- prvCheckTasksWaitingTermination();\r
-\r
- #if ( configUSE_PREEMPTION == 0 )\r
- {\r
- /* If we are not using preemption we keep forcing a task switch to\r
- see if any other task has become available. If we are using\r
- preemption we don't need to do this as any task becoming available\r
- will automatically get the processor anyway. */\r
- taskYIELD(); \r
- }\r
- #endif\r
-\r
- #if ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) )\r
- {\r
- /* When using preemption tasks of equal priority will be\r
- timesliced. If a task that is sharing the idle priority is ready\r
- to run then the idle task should yield before the end of the\r
- timeslice.\r
- \r
- A critical region is not required here as we are just reading from\r
- the list, and an occasional incorrect value will not matter. If\r
- the ready list at the idle priority contains more than one task\r
- then a task other than the idle task is ready to execute. */\r
- if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( unsigned portBASE_TYPE ) 1 )\r
- {\r
- taskYIELD();\r
- }\r
- }\r
- #endif\r
-\r
- #if ( configUSE_IDLE_HOOK == 1 )\r
- {\r
- extern void vApplicationIdleHook( void );\r
-\r
- /* Call the user defined function from within the idle task. This\r
- allows the application designer to add background functionality\r
- without the overhead of a separate task.\r
- NOTE: vApplicationIdleHook() MUST NOT, UNDER ANY CIRCUMSTANCES,\r
- CALL A FUNCTION THAT MIGHT BLOCK. */\r
- vApplicationIdleHook();\r
- }\r
- #endif\r
- }\r
-} /*lint !e715 pvParameters is not accessed but all task functions require the same prototype. */\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-/*-----------------------------------------------------------\r
- * File private functions documented at the top of the file.\r
- *----------------------------------------------------------*/\r
-\r
-\r
-\r
-static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed portCHAR * const pcName, unsigned portBASE_TYPE uxPriority )\r
-{\r
- /* Store the function name in the TCB. */\r
- strncpy( ( char * ) pxTCB->pcTaskName, ( const char * ) pcName, ( unsigned portSHORT ) configMAX_TASK_NAME_LEN );\r
- pxTCB->pcTaskName[ ( unsigned portSHORT ) configMAX_TASK_NAME_LEN - ( unsigned portSHORT ) 1 ] = '\0';\r
-\r
- /* This is used as an array index so must ensure it's not too large. */\r
- if( uxPriority >= configMAX_PRIORITIES )\r
- {\r
- uxPriority = configMAX_PRIORITIES - 1;\r
- }\r
-\r
- pxTCB->uxPriority = uxPriority;\r
- #if ( configUSE_MUTEXES == 1 )\r
- {\r
- pxTCB->uxBasePriority = uxPriority;\r
- }\r
- #endif\r
-\r
- vListInitialiseItem( &( pxTCB->xGenericListItem ) );\r
- vListInitialiseItem( &( pxTCB->xEventListItem ) );\r
-\r
- /* Set the pxTCB as a link back from the xListItem. This is so we can get\r
- back to the containing TCB from a generic item in a list. */\r
- listSET_LIST_ITEM_OWNER( &( pxTCB->xGenericListItem ), pxTCB );\r
-\r
- /* Event lists are always in priority order. */\r
- listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) uxPriority );\r
- listSET_LIST_ITEM_OWNER( &( pxTCB->xEventListItem ), pxTCB );\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvInitialiseTaskLists( void )\r
-{\r
-unsigned portBASE_TYPE uxPriority;\r
-\r
- for( uxPriority = 0; uxPriority < configMAX_PRIORITIES; uxPriority++ )\r
- {\r
- vListInitialise( ( xList * ) &( pxReadyTasksLists[ uxPriority ] ) );\r
- }\r
-\r
- vListInitialise( ( xList * ) &xDelayedTaskList1 );\r
- vListInitialise( ( xList * ) &xDelayedTaskList2 );\r
- vListInitialise( ( xList * ) &xPendingReadyList );\r
-\r
- #if ( INCLUDE_vTaskDelete == 1 )\r
- {\r
- vListInitialise( ( xList * ) &xTasksWaitingTermination );\r
- }\r
- #endif\r
-\r
- #if ( INCLUDE_vTaskSuspend == 1 )\r
- {\r
- vListInitialise( ( xList * ) &xSuspendedTaskList );\r
- }\r
- #endif\r
-\r
- /* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList\r
- using list2. */\r
- pxDelayedTaskList = &xDelayedTaskList1;\r
- pxOverflowDelayedTaskList = &xDelayedTaskList2;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static void prvCheckTasksWaitingTermination( void )\r
-{ \r
- #if ( INCLUDE_vTaskDelete == 1 )\r
- { \r
- portBASE_TYPE xListIsEmpty;\r
-\r
- /* ucTasksDeleted is used to prevent vTaskSuspendAll() being called\r
- too often in the idle task. */\r
- if( uxTasksDeleted > ( unsigned portBASE_TYPE ) 0 )\r
- {\r
- vTaskSuspendAll();\r
- xListIsEmpty = listLIST_IS_EMPTY( &xTasksWaitingTermination ); \r
- xTaskResumeAll();\r
-\r
- if( !xListIsEmpty )\r
- {\r
- tskTCB *pxTCB;\r
-\r
- portENTER_CRITICAL();\r
- { \r
- pxTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( ( ( xList * ) &xTasksWaitingTermination ) );\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
- --uxCurrentNumberOfTasks;\r
- --uxTasksDeleted;\r
- }\r
- portEXIT_CRITICAL();\r
-\r
- prvDeleteTCB( pxTCB );\r
- }\r
- }\r
- }\r
- #endif\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth )\r
-{\r
-tskTCB *pxNewTCB;\r
-\r
- /* Allocate space for the TCB. Where the memory comes from depends on\r
- the implementation of the port malloc function. */\r
- pxNewTCB = ( tskTCB * ) pvPortMalloc( sizeof( tskTCB ) );\r
-\r
- if( pxNewTCB != NULL )\r
- {\r
- /* Allocate space for the stack used by the task being created.\r
- The base of the stack memory stored in the TCB so the task can\r
- be deleted later if required. */\r
- pxNewTCB->pxStack = ( portSTACK_TYPE * ) pvPortMalloc( ( ( size_t )usStackDepth ) * sizeof( portSTACK_TYPE ) );\r
-\r
- if( pxNewTCB->pxStack == NULL )\r
- {\r
- /* Could not allocate the stack. Delete the allocated TCB. */\r
- vPortFree( pxNewTCB ); \r
- pxNewTCB = NULL; \r
- } \r
- else\r
- {\r
- /* Just to help debugging. */\r
- memset( pxNewTCB->pxStack, tskSTACK_FILL_BYTE, usStackDepth * sizeof( portSTACK_TYPE ) );\r
- }\r
- }\r
-\r
- return pxNewTCB;\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
-\r
- static void prvListTaskWithinSingleList( const signed portCHAR *pcWriteBuffer, xList *pxList, signed portCHAR cStatus )\r
- {\r
- volatile tskTCB *pxNextTCB, *pxFirstTCB;\r
- static portCHAR pcStatusString[ 50 ];\r
- unsigned portSHORT usStackRemaining;\r
-\r
- /* Write the details of all the TCB's in pxList into the buffer. */\r
- listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList );\r
- do\r
- {\r
- listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList );\r
- usStackRemaining = usTaskCheckFreeStackSpace( ( unsigned portCHAR * ) pxNextTCB->pxStack );\r
- sprintf( pcStatusString, ( portCHAR * ) "%s\t\t%c\t%u\t%u\t%u\r\n", pxNextTCB->pcTaskName, cStatus, ( unsigned int ) pxNextTCB->uxPriority, usStackRemaining, ( unsigned int ) pxNextTCB->uxTCBNumber );\r
- strcat( ( portCHAR * ) pcWriteBuffer, ( portCHAR * ) pcStatusString );\r
-\r
- } while( pxNextTCB != pxFirstTCB );\r
- }\r
-\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( configUSE_TRACE_FACILITY == 1 )\r
- unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte )\r
- {\r
- register unsigned portSHORT usCount = 0;\r
-\r
- while( *pucStackByte == tskSTACK_FILL_BYTE )\r
- {\r
- pucStackByte -= portSTACK_GROWTH;\r
- usCount++;\r
- }\r
-\r
- usCount /= sizeof( portSTACK_TYPE );\r
-\r
- return usCount;\r
- }\r
-#endif\r
-/*-----------------------------------------------------------*/\r
-\r
-\r
-\r
-#if ( ( INCLUDE_vTaskDelete == 1 ) || ( INCLUDE_vTaskCleanUpResources == 1 ) )\r
-\r
- static void prvDeleteTCB( tskTCB *pxTCB )\r
- {\r
- /* Free up the memory allocated by the scheduler for the task. It is up to\r
- the task to free any memory allocated at the application level. */\r
- vPortFree( pxTCB->pxStack );\r
- vPortFree( pxTCB );\r
- }\r
-\r
-#endif\r
-\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_xTaskGetCurrentTaskHandle == 1 )\r
-\r
- xTaskHandle xTaskGetCurrentTaskHandle( void )\r
- {\r
- xTaskHandle xReturn;\r
-\r
- portENTER_CRITICAL();\r
- {\r
- xReturn = ( xTaskHandle ) pxCurrentTCB;\r
- }\r
- portEXIT_CRITICAL();\r
-\r
- return xReturn;\r
- }\r
-\r
-#endif\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-#if ( INCLUDE_xTaskGetSchedulerState == 1 )\r
-\r
- portBASE_TYPE xTaskGetSchedulerState( void )\r
- {\r
- portBASE_TYPE xReturn;\r
- \r
- if( xSchedulerRunning == pdFALSE )\r
- {\r
- xReturn = taskSCHEDULER_NOT_STARTED;\r
- }\r
- else\r
- {\r
- if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE )\r
- {\r
- xReturn = taskSCHEDULER_RUNNING;\r
- }\r
- else\r
- {\r
- xReturn = taskSCHEDULER_SUSPENDED;\r
- }\r
- }\r
- \r
- return xReturn;\r
- }\r
-\r
-#endif\r
-\r
-#if ( configUSE_MUTEXES == 1 )\r
- \r
- void vTaskPriorityInherit( xTaskHandle * const pxMutexHolder )\r
- {\r
- tskTCB * const pxTCB = ( tskTCB * ) pxMutexHolder;\r
-\r
- if( pxTCB->uxPriority < pxCurrentTCB->uxPriority )\r
- {\r
- /* Adjust the mutex holder state to account for its new priority. */\r
- listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) pxCurrentTCB->uxPriority );\r
-\r
- /* If the task being modified is in the ready state it will need to\r
- be moved in to a new list. */\r
- if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxTCB->uxPriority ] ), &( pxTCB->xGenericListItem ) ) )\r
- {\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
-\r
- /* Inherit the priority before being moved into the new list. */\r
- pxTCB->uxPriority = pxCurrentTCB->uxPriority;\r
- prvAddTaskToReadyQueue( pxTCB );\r
- }\r
- else\r
- {\r
- /* Just inherit the priority. */\r
- pxTCB->uxPriority = pxCurrentTCB->uxPriority;\r
- }\r
- }\r
- }\r
-\r
-#endif\r
-\r
-#if ( configUSE_MUTEXES == 1 ) \r
-\r
- void vTaskPriorityDisinherit( xTaskHandle * const pxMutexHolder )\r
- {\r
- tskTCB * const pxTCB = ( tskTCB * ) pxMutexHolder;\r
-\r
- if( pxMutexHolder != NULL )\r
- {\r
- if( pxTCB->uxPriority != pxTCB->uxBasePriority )\r
- {\r
- /* We must be the running task to be able to give the mutex back.\r
- Remove ourselves from the ready list we currently appear in. */\r
- vListRemove( &( pxTCB->xGenericListItem ) );\r
-\r
- /* Disinherit the priority before adding ourselves into the new\r
- ready list. */\r
- pxTCB->uxPriority = pxTCB->uxBasePriority;\r
- listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) pxTCB->uxPriority );\r
- prvAddTaskToReadyQueue( pxTCB );\r
- }\r
- }\r
- }\r
-\r
-#endif\r
-\r
- \r
-\r
- \r
-\r
export OSROOT=/usr/src/FreeRTOS/Source
export OSFILES=$(OSROOT)/list.c $(OSROOT)/queue.c $(OSROOT)/tasks.c \
$(OSROOT)/croutine.c $(OSROOT)/portable/MPLAB/PIC24_dsPIC/port.c \
+ $(OSROOT)/portable/MPLAB/PIC24_dsPIC/portasm_dsPIC.S \
$(OSROOT)/portable/MemMang/heap_1.c
-export OSOBJS=list.o queue.o tasks.o croutine.o port.o heap_1.o
+export OSOBJS=list.o queue.o tasks.o croutine.o port.o portasm_dsPIC.o heap_1.o
export OSINCDIR=-I$(OSROOT)/include -I$(OSROOT)/portable/MPLAB/PIC24_ds_PIC
export OSFLAGS=-DMPLAB_DSPIC_PORT -DTCKPS0=TCKPS -DTCKPS1=TSYNC
+++ /dev/null
-Update freeRTOS.
--- /dev/null
+2012.04.20 Started aic-2.3.0.
+ Reworked source tree.
+ Capacitor involucre sizes made invisible in schematics.
+ Created a workaround to fix a incompatibility between
+ pic30-gcc 3.01 and FreeRTOS. See the hack 1 in the Hacks
+ file.
+
+2009.02.09 Started aic-2.2.0.
+ aic-2.2.* uses the irs21094 MOSFET driver.
+
+2008.08.26 Started aic-2.1.0.
+ aic-2.1.* uses the LT1162 MOSFET driver.
+
+2006.06.11 Started aic-2.0.0.
+ aic-2.*.* uses the dsPIC30F4012 processor.
+ aic-2.0.* uses the MAX5062 MOSFET driver.
+
+2006.06.11 Inicio do projeto aic-2.0.0
+
+2008.02.15 Incluido destrutor virtual na classe AIC_COMM.
+
+ Alterada a implementacao da serializacao de valores double
+ em AIC_UDP::send_command().
+
+ Corrigido bug no processamento dos argumentos dos comandos
+ AIC_USER0, AIC_USER1, AIC_USER2 e AIC_USER3.
+
+ Incluido o diretorio /usr/src/linux/include, na variavel de
+ ambiente CINCLUDE.
+
+2007.12.05 Criada a classe Sputtering na biblioteca, para suportar a
+ aplicacao de controle do sputtering.
+
+2007.11.28 Criadas constantes com os bits de flags do pacote de status
+ da AIC.
+
+ Processamento de comandos enviados para a AIC alterado para
+ suportar comandos definidos pelo usuario.
+
+2007.11.27 Modificado o arquivo lib/aicio/pwm.a51 para nao utilizar o
+ acelerador matematico, que estava gerando problemas de
+ reentrancia.
+
+ Alterado o arquivo doc/Makefile para utilizar os nomes dos
+ arquivos de layout gerados pela nova versao (20060321) do
+ PCB.
+
+ Criados os programas SputPIDweb, SputPIDDaemon e sputtering.
+
+ Renomeado o programa SputDaemon para SputWeb.
+
+ Criada a versao 1.6.1
+
+
+2006.02.24 Incluidos os esquematicos e o layout do PCB no arquivo de
+ documentacao em pdf.
+
+2006.01.19 Criado o programa DoorWeb.
+
+2006.01.11 Criado o target upload nos Makefiles, para fazer o upload
+ dos programas nas AICs.
+
+2006.01.09 Criado o programa DoorOpen.
+
+2005.12.15 Removido o arquivo lib/aicio/motor.a51. As variaveis globais
+ estao agora definidas em lib/aicio/motor.c.
+
+
+2005.12.14 Corrigido o problema na funcao pwm_set_duty(), que nao
+ funcionava em tempo real. Os registradores do banco 1 nao
+ podem ser utilizados em rotinas de interrupcao.
+
+ Corrigido um bug na rotina native_initialize do PWM. Estava
+ sendo dado um push de um registrador do banco 1, quando
+ deveria ser do banco 0.
+
+ Criado o identificador de comando MOTOR_REF, para enviar
+ para a AIC a referencia para o PID implementadod pelo
+ programa PIDDaemon.
+
+
+2005.11.25 Alterado o "dominio" do pacote AIC para br.ufrgs.ece.
+
+ Criada a versao 1.6.0
+
+
+2005.10.19 Criado o programa CmdDaemon, semelhante ao IODaemon, mas
+ apenas recebe comandos, sem enviar dados de sensores.
+
+2005.09.25 Reestruturados os Makefiles. Agora os Makefiles nos
+ diretorios utilizam as variaveis definidas no Makefile no
+ diretorio principal, ao inves de redefini-las. As
+ redefinicoes sao feitas apenas nas (poucas) vezes em que sao
+ necessarias.
+
+ Criada a versao 1.5.1
+
+ Removidas as declaracoes de variaveis globais em arquivos em
+ Assembly e criada uma funcao dummy para defini-las nos
+ arquivos C, ja' que nao e' possivel emitir Assembly in-line
+ fora de funcoes.
+
+2005.09.02 Criado o programa EncoderRtRead para teste do encoder em
+ tempo real utilizando as funcoes de ponto flutuante, ou
+ seja, obtendo a leitura em radianos.
+
+2005.08.31 Incluido suporte para ponto-flutuante. Implementadas em C as
+ funcoes de interface que utilizam ponto flutuante.
+
+ Criados os programas EncoderRtTest para teste do encoder em
+ tempo real.
+
+ Criado o programa MotorRtTest para teste do motor em tempo
+ real, utilizando as funcoes de ponto flutante.
+
+2005.08.30 Criado o programa PwmRtTest, para teste do PWM em tempo real
+ em C.
+
+ Incluidas no aicio.h consantes com a frequencia de
+ referencia, frequencia de chaveamento, delay de turn-off e
+ contagens maximas e minimas do PWM.
+
+2005.08.13 Programas de tempo real modificados para utilizar a API do
+ RTAI (Real Time Application Interface) para a TINI, ao inves
+ de implementar diretamente todo o tratamento de tempo real.
+
+ Criada versao 1.5.0
+
+2005.08.12 Criado o programa DoorDaemon, para implementar a abertura de
+ uma porta conectada no sinal de freio da AIC atraves da
+ Internet, utilizando um protocolo CHAP com sha-1.
+
+2005.06.03 Criada versao 1.4.2
+
+ Criada a biblioteca aicio.mpp.lib, com funcoes implementadas
+ que podem ser chamadas a partir de modulos de tempo real em
+ C para acessar o hardware da AIC. Codigos fontes dos metodos
+ nativos que acessam o hardware modificados para usarem a
+ biblioteca aicio.mpp.lib.
+
+ Criado o programa PID, que implementa em tempo real o
+ prototipo de um controlador PID, com transferencia de
+ referencias e variaveis de saida entre a interface com o
+ usuario e o modulo de tempo real.
+
+ Criados os programas BrakeRtTest e IndexRtTest para de teste
+ do freio e do indice em tempo real em C.
+
+2005.01.06 Criada versao 1.4.1
+
+2004.12.05 Corrigido bug nas inicializacao das classes AIC_CAN e
+ AIC_HOST_CAN que violava o padrao ISO C++ e impedia estas
+ classes de serem compiladas com o g++ 3.4.3.
+
+2004.11.29 Criada versao 1.4.0
+
+2004.09.28 Alterados os nomes das classes utilizadas para sinalizar
+ excecoes. Foram removidos os prefixos que podem ser
+ deduzidos a partir da hierarquia de classes.
+
+ Corrigido o log dos comandos no IODaemon no modo debug.
+ Agora e' logado o codigo do comando em decimal.
+
+ Corrigido bug na classe HostCAN, que fazia com que a
+ filtragem das mensagens nao funcionasse. O centro de
+ mensagens 15 foi desabilitado. A recepcao de mensagens
+ passou a funcionar no modo WriteOver.
+
+ Corrigido bug nos metodos Encoder::read() e
+ Encoder::readAndClear(). O calculo da conversao de numero de
+ pulsos para radianos estava errado.
+
+ Removido o flag canWANT_EXCLUSIVE dos construtores das
+ classes AIC_CAN e AIC_HOST_CAN. Com isto pode-se
+ compartilhar a placa PCICAN entre aplicacoes.
+
+ Criado buffer de mensagens estatico nas classes AIC_CAN e
+ AIC_HOST_CAN para armazenar as mensagens destinada as outras
+ instancias da classe.
+
+2004.06.28 Criada documentacao on-line para a biblioteca em C++ e em
+ Java utilizando o Doxygen.
+
+ Eliminada a documentacao utilizando o javadoc.
+
+2004.06.18 Ajustados os Makefiles para criar os arquivos .runinfo
+ utilizados pelo RTAI-3.x.
+
+ Removido o periodo do programa pid. Agora o controlador
+ executa com ciclo livre, temporizado pelo processo de
+ amostragem.
+
+ Criado um destructor virtual para a classe AIC. A falta
+ deste destructor causava erro de segmentacao quando da
+ destruicao do objeto.
+
+ Alterados programas em C++ para permitirem a passagem na
+ linha de comando do numero da porta de status a ser
+ utilizada (porta de comando no caso do aicd).
+
+2004.05.26 Criados os programas BrakeApply e BrakeRelease.
+
+2004.05.18 Criada a macro RESTORE_STRETCH, utilizada nas biblotecas
+ nativas para retornar o strech ao valor original.
+
+ Criadas versoes das macros SET_STRETCH e RESTORE_STRETCH que
+ nao geram codigo. Atraves de compilacao condicional as
+ versoes que nao geram codigo sao utilizadas quando o valor
+ de strech e' negativo. Esta caracteristica e' utilizada para
+ utilizar o valor de stretch default da TINI.
+
+ Alterados o esquematico e o layout do PCB para utilizar
+ 6N137 ao inves de 6N136.
+
+ Alterados os Makefiles dos programas que necessitam do
+ suporte do RTAI para funcionarem com o RTAI-3.x.
+
+2004.03.24 Alterados programas de teste e aplicativos em Java para
+ eliminar excessoes de endereco invalido, que nao sao mais
+ geradas pela classe AIC.
+
+ Metodos das classes Brake, Index, Encoder e PWM
+ implementados em Assembly como metodos nativos.
+
+ Criada versao 1.3.0.
+
+2004.03.08 Consolidadas as constantes definindo enderecos dos
+ dispositivos na AIC na classe PLD. Consolidadas as
+ constantes definindo bits do registrador de controle na
+ classe CtrlRegister.
+
+2004.01.11 Passou a ser utilizado o header iostream ao inves de
+ iostream.h, conforme o novo padrao de C++. Esta adaptacao
+ foi necessaria para compilacao com o GCC 3.3.2.
+
+2003.12.31 Alterados os codigos identificadores de comandos e status,
+ por estarem relacionados com a prioridade das mensgens no
+ barramento CAN. Os novos codigos conferem uma prioridade
+ mais adequada aos diversos tipos de mensagens. Alterada a
+ documentacao para refletir as mudancas nos protocolos.
+
+ Programas em C++ alterados para utilizar comunicacao CAN por
+ default. A comunicacao por UDP e' suportada atraves de opcao
+ na linha de comando.
+
+2003.12.30 Alterado o protocolo de aplicacao de ASCII para binario, com
+ alteracao no prototipo das funcoes de baixo nivel para
+ transmissao e recepcao de comandos e status.
+
+ Criada versao 1.2.0.
+
+2003.12.28 Documentados os protocolos de aplicacao e classes das
+ bibliotecas.
+
+2003.12.23 IODaemon alterado para utilizar comunicacao CAN por default.
+ A comunicacao por UDP e' suportada atraves de opcao na linha
+ de comando.
+
+2003.12.22 Criada documentacao das classes em AIC.jar no formado
+ javadoc. Alterado o Makefile para criar documentacao em
+ doc/javadocs.
+
+2003.12.21 Programas em C++ alterados para utilizarem comunicacao por
+ CAN por default e por UDP quando compilados com USE_UDP
+ definido. Makefiles alterados para compilar duas versoes dos
+ programas.
+
+2003.12.18 Alteradas as classes utilizadas para representar excessoes.
+
+ Criada uma hierarquia mais detalhada.
+
+2003.12.17 Alteracao na classe AIC_HOST, que tornou-se virtual.
+
+ Criadas classes AIC_HOST_UDP e AIC_HOST_CAN, derivadas de
+ AIC_HOST.
+
+2003.12.16 Alteracao da classe AIC, que tornou-se virtual.
+
+ Criadas classes AIC_UDP e AIC_CAN, derivadas de AIC.
+
+2003.12.15 Alteracao na classe Host, que tornou-se abstrata.
+
+ Criadas classes HostUDP e HostCAN, derivadas de Host.
+
+2002.xx.xx Started aic-1.0.0.
+ aic-1.0.0 uses the TINI DS390 processor.
\ No newline at end of file
--- /dev/null
+(Created by G-code exporter)
+(Wed Jul 15 16:09:51 2015)
+(Units: mm)
+(Board size: 180.34 x 104.14 mm)
+(Drill file: 70 drills)
+(Drill diameter: 0.508000 mm)
+#100=2.000000 (safe Z)
+#104=-2.000000 (drill depth)
+(---------------------------------)
+G17 G21 G90 G64 P0.003 M3 S3000 M7 F50.000000
+G0 Z#100
+G81 X38.735000 Y60.325000 Z#104 R#100
+G81 X36.830000 Y63.500000 Z#104 R#100
+G81 X41.910000 Y67.310000 Z#104 R#100
+G81 X51.435000 Y68.580000 Z#104 R#100
+G81 X51.435000 Y74.930000 Z#104 R#100
+G81 X58.420000 Y76.200000 Z#104 R#100
+G81 X59.055000 Y74.930000 Z#104 R#100
+G81 X59.055000 Y77.470000 Z#104 R#100
+G81 X67.945000 Y74.930000 Z#104 R#100
+G81 X72.390000 Y74.930000 Z#104 R#100
+G81 X79.375000 Y67.945000 Z#104 R#100
+G81 X85.725000 Y66.040000 Z#104 R#100
+G81 X87.630000 Y64.770000 Z#104 R#100
+G81 X88.900000 Y66.040000 Z#104 R#100
+G81 X92.710000 Y67.945000 Z#104 R#100
+G81 X91.440000 Y73.025000 Z#104 R#100
+G81 X90.805000 Y74.295000 Z#104 R#100
+G81 X84.455000 Y75.565000 Z#104 R#100
+G81 X86.995000 Y80.645000 Z#104 R#100
+G81 X84.455000 Y83.185000 Z#104 R#100
+G81 X74.295000 Y93.980000 Z#104 R#100
+G81 X69.850000 Y92.710000 Z#104 R#100
+G81 X67.945000 Y87.630000 Z#104 R#100
+G81 X63.500000 Y86.360000 Z#104 R#100
+G81 X59.055000 Y98.425000 Z#104 R#100
+G81 X67.945000 Y99.695000 Z#104 R#100
+G81 X71.755000 Y99.695000 Z#104 R#100
+G81 X74.295000 Y101.600000 Z#104 R#100
+G81 X78.105000 Y99.695000 Z#104 R#100
+G81 X95.250000 Y94.615000 Z#104 R#100
+G81 X101.600000 Y80.645000 Z#104 R#100
+G81 X107.950000 Y76.835000 Z#104 R#100
+G81 X105.410000 Y69.850000 Z#104 R#100
+G81 X102.870000 Y68.580000 Z#104 R#100
+G81 X100.330000 Y67.945000 Z#104 R#100
+G81 X100.330000 Y69.850000 Z#104 R#100
+G81 X97.790000 Y63.500000 Z#104 R#100
+G81 X95.885000 Y59.690000 Z#104 R#100
+G81 X90.805000 Y60.960000 Z#104 R#100
+G81 X88.900000 Y46.355000 Z#104 R#100
+G81 X100.330000 Y33.020000 Z#104 R#100
+G81 X108.585000 Y41.910000 Z#104 R#100
+G81 X123.190000 Y56.515000 Z#104 R#100
+G81 X123.190000 Y60.960000 Z#104 R#100
+G81 X129.540000 Y66.040000 Z#104 R#100
+G81 X129.540000 Y73.025000 Z#104 R#100
+G81 X139.700000 Y56.515000 Z#104 R#100
+G81 X154.305000 Y71.120000 Z#104 R#100
+G81 X156.845000 Y68.580000 Z#104 R#100
+G81 X158.115000 Y69.850000 Z#104 R#100
+G81 X154.305000 Y75.565000 Z#104 R#100
+G81 X127.000000 Y93.980000 Z#104 R#100
+G81 X117.475000 Y99.695000 Z#104 R#100
+G81 X57.785000 Y66.040000 Z#104 R#100
+G81 X55.245000 Y59.690000 Z#104 R#100
+G81 X45.085000 Y81.915000 Z#104 R#100
+G81 X46.355000 Y82.550000 Z#104 R#100
+G81 X45.085000 Y89.535000 Z#104 R#100
+G81 X41.275000 Y90.805000 Z#104 R#100
+G81 X37.465000 Y88.265000 Z#104 R#100
+G81 X24.765000 Y81.915000 Z#104 R#100
+G81 X29.845000 Y74.930000 Z#104 R#100
+G81 X87.630000 Y23.495000 Z#104 R#100
+G81 X123.190000 Y10.795000 Z#104 R#100
+G81 X125.730000 Y12.065000 Z#104 R#100
+G81 X128.270000 Y13.335000 Z#104 R#100
+G81 X138.430000 Y13.335000 Z#104 R#100
+G81 X139.700000 Y12.065000 Z#104 R#100
+G81 X140.970000 Y10.795000 Z#104 R#100
+G81 X140.970000 Y34.290000 Z#104 R#100
+M5 M9 M2
+(end, total distance 711.14mm = 28.00in)
--- /dev/null
+(Created by G-code exporter)
+(Wed Jul 15 16:09:51 2015)
+(Units: mm)
+(Board size: 180.34 x 104.14 mm)
+(Drill file: 136 drills)
+(Drill diameter: 0.711200 mm)
+#100=2.000000 (safe Z)
+#104=-2.000000 (drill depth)
+(---------------------------------)
+G17 G21 G90 G64 P0.003 M3 S3000 M7 F50.000000
+G0 Z#100
+G81 X29.845000 Y7.620000 Z#104 R#100
+G81 X34.290000 Y7.620000 Z#104 R#100
+G81 X34.290000 Y12.700000 Z#104 R#100
+G81 X29.845000 Y12.700000 Z#104 R#100
+G81 X40.005000 Y12.700000 Z#104 R#100
+G81 X40.005000 Y7.620000 Z#104 R#100
+G81 X40.005000 Y71.120000 Z#104 R#100
+G81 X37.465000 Y71.120000 Z#104 R#100
+G81 X34.925000 Y71.120000 Z#104 R#100
+G81 X32.385000 Y71.120000 Z#104 R#100
+G81 X29.845000 Y71.120000 Z#104 R#100
+G81 X27.305000 Y71.120000 Z#104 R#100
+G81 X24.765000 Y71.120000 Z#104 R#100
+G81 X24.765000 Y78.740000 Z#104 R#100
+G81 X27.305000 Y78.740000 Z#104 R#100
+G81 X29.845000 Y78.740000 Z#104 R#100
+G81 X32.385000 Y78.740000 Z#104 R#100
+G81 X34.925000 Y78.740000 Z#104 R#100
+G81 X37.465000 Y78.740000 Z#104 R#100
+G81 X40.005000 Y78.740000 Z#104 R#100
+G81 X42.545000 Y78.740000 Z#104 R#100
+G81 X45.085000 Y78.740000 Z#104 R#100
+G81 X47.625000 Y78.740000 Z#104 R#100
+G81 X50.165000 Y78.740000 Z#104 R#100
+G81 X52.705000 Y78.740000 Z#104 R#100
+G81 X55.245000 Y78.740000 Z#104 R#100
+G81 X57.785000 Y78.740000 Z#104 R#100
+G81 X63.500000 Y77.470000 Z#104 R#100
+G81 X63.500000 Y72.390000 Z#104 R#100
+G81 X57.785000 Y71.120000 Z#104 R#100
+G81 X55.245000 Y71.120000 Z#104 R#100
+G81 X52.705000 Y71.120000 Z#104 R#100
+G81 X50.165000 Y71.120000 Z#104 R#100
+G81 X47.625000 Y71.120000 Z#104 R#100
+G81 X45.085000 Y71.120000 Z#104 R#100
+G81 X42.545000 Y71.120000 Z#104 R#100
+G81 X50.165000 Y85.090000 Z#104 R#100
+G81 X52.705000 Y85.090000 Z#104 R#100
+G81 X55.245000 Y85.090000 Z#104 R#100
+G81 X57.785000 Y85.090000 Z#104 R#100
+G81 X57.785000 Y92.710000 Z#104 R#100
+G81 X55.245000 Y92.710000 Z#104 R#100
+G81 X52.705000 Y92.710000 Z#104 R#100
+G81 X50.165000 Y92.710000 Z#104 R#100
+G81 X51.435000 Y96.520000 Z#104 R#100
+G81 X56.515000 Y96.520000 Z#104 R#100
+G81 X78.105000 Y92.710000 Z#104 R#100
+G81 X80.645000 Y92.710000 Z#104 R#100
+G81 X83.185000 Y92.710000 Z#104 R#100
+G81 X85.725000 Y92.710000 Z#104 R#100
+G81 X84.455000 Y96.520000 Z#104 R#100
+G81 X79.375000 Y96.520000 Z#104 R#100
+G81 X80.645000 Y85.090000 Z#104 R#100
+G81 X78.105000 Y85.090000 Z#104 R#100
+G81 X83.185000 Y85.090000 Z#104 R#100
+G81 X85.725000 Y85.090000 Z#104 R#100
+G81 X85.725000 Y78.740000 Z#104 R#100
+G81 X83.185000 Y78.740000 Z#104 R#100
+G81 X80.645000 Y78.740000 Z#104 R#100
+G81 X78.105000 Y78.740000 Z#104 R#100
+G81 X78.105000 Y71.120000 Z#104 R#100
+G81 X80.645000 Y71.120000 Z#104 R#100
+G81 X83.185000 Y71.120000 Z#104 R#100
+G81 X85.725000 Y71.120000 Z#104 R#100
+G81 X91.440000 Y71.120000 Z#104 R#100
+G81 X93.980000 Y71.120000 Z#104 R#100
+G81 X96.520000 Y71.120000 Z#104 R#100
+G81 X99.060000 Y71.120000 Z#104 R#100
+G81 X101.600000 Y71.120000 Z#104 R#100
+G81 X104.140000 Y71.120000 Z#104 R#100
+G81 X106.680000 Y71.120000 Z#104 R#100
+G81 X109.220000 Y71.120000 Z#104 R#100
+G81 X115.570000 Y71.120000 Z#104 R#100
+G81 X118.110000 Y71.120000 Z#104 R#100
+G81 X120.650000 Y71.120000 Z#104 R#100
+G81 X123.190000 Y71.120000 Z#104 R#100
+G81 X125.730000 Y71.120000 Z#104 R#100
+G81 X128.270000 Y71.120000 Z#104 R#100
+G81 X130.810000 Y71.120000 Z#104 R#100
+G81 X135.255000 Y72.390000 Z#104 R#100
+G81 X135.255000 Y77.470000 Z#104 R#100
+G81 X130.810000 Y78.740000 Z#104 R#100
+G81 X128.270000 Y78.740000 Z#104 R#100
+G81 X125.730000 Y78.740000 Z#104 R#100
+G81 X123.190000 Y78.740000 Z#104 R#100
+G81 X120.650000 Y78.740000 Z#104 R#100
+G81 X118.110000 Y78.740000 Z#104 R#100
+G81 X115.570000 Y78.740000 Z#104 R#100
+G81 X115.570000 Y85.090000 Z#104 R#100
+G81 X118.110000 Y85.090000 Z#104 R#100
+G81 X120.650000 Y85.090000 Z#104 R#100
+G81 X123.190000 Y85.090000 Z#104 R#100
+G81 X123.190000 Y92.710000 Z#104 R#100
+G81 X120.650000 Y92.710000 Z#104 R#100
+G81 X118.110000 Y92.710000 Z#104 R#100
+G81 X115.570000 Y92.710000 Z#104 R#100
+G81 X116.840000 Y96.520000 Z#104 R#100
+G81 X121.920000 Y96.520000 Z#104 R#100
+G81 X130.175000 Y96.520000 Z#104 R#100
+G81 X135.255000 Y96.520000 Z#104 R#100
+G81 X135.255000 Y90.805000 Z#104 R#100
+G81 X130.175000 Y90.805000 Z#104 R#100
+G81 X109.220000 Y78.740000 Z#104 R#100
+G81 X106.680000 Y78.740000 Z#104 R#100
+G81 X104.140000 Y78.740000 Z#104 R#100
+G81 X101.600000 Y78.740000 Z#104 R#100
+G81 X99.060000 Y78.740000 Z#104 R#100
+G81 X96.520000 Y78.740000 Z#104 R#100
+G81 X93.980000 Y78.740000 Z#104 R#100
+G81 X91.440000 Y78.740000 Z#104 R#100
+G81 X32.385000 Y85.090000 Z#104 R#100
+G81 X29.845000 Y85.090000 Z#104 R#100
+G81 X27.305000 Y85.090000 Z#104 R#100
+G81 X24.765000 Y85.090000 Z#104 R#100
+G81 X24.765000 Y92.710000 Z#104 R#100
+G81 X27.305000 Y92.710000 Z#104 R#100
+G81 X29.845000 Y92.710000 Z#104 R#100
+G81 X32.385000 Y92.710000 Z#104 R#100
+G81 X31.115000 Y96.520000 Z#104 R#100
+G81 X26.035000 Y96.520000 Z#104 R#100
+G81 X115.570000 Y22.860000 Z#104 R#100
+G81 X118.110000 Y22.860000 Z#104 R#100
+G81 X120.650000 Y22.860000 Z#104 R#100
+G81 X123.190000 Y22.860000 Z#104 R#100
+G81 X125.730000 Y22.860000 Z#104 R#100
+G81 X128.270000 Y22.860000 Z#104 R#100
+G81 X130.810000 Y22.860000 Z#104 R#100
+G81 X135.255000 Y21.590000 Z#104 R#100
+G81 X135.255000 Y16.510000 Z#104 R#100
+G81 X130.810000 Y15.240000 Z#104 R#100
+G81 X128.270000 Y15.240000 Z#104 R#100
+G81 X125.730000 Y15.240000 Z#104 R#100
+G81 X123.190000 Y15.240000 Z#104 R#100
+G81 X120.650000 Y15.240000 Z#104 R#100
+G81 X118.110000 Y15.240000 Z#104 R#100
+G81 X115.570000 Y15.240000 Z#104 R#100
+M5 M9 M2
+(end, total distance 749.14mm = 29.49in)
--- /dev/null
+(Created by G-code exporter)
+(Wed Jul 15 16:09:51 2015)
+(Units: mm)
+(Board size: 180.34 x 104.14 mm)
+(Drill file: 108 drills)
+(Drill diameter: 0.762000 mm)
+#100=2.000000 (safe Z)
+#104=-2.000000 (drill depth)
+(---------------------------------)
+G17 G21 G90 G64 P0.003 M3 S3000 M7 F50.000000
+G0 Z#100
+G81 X14.605000 Y13.335000 Z#104 R#100
+G81 X14.605000 Y15.875000 Z#104 R#100
+G81 X14.605000 Y18.415000 Z#104 R#100
+G81 X14.605000 Y20.955000 Z#104 R#100
+G81 X14.605000 Y23.495000 Z#104 R#100
+G81 X14.605000 Y26.035000 Z#104 R#100
+G81 X14.605000 Y28.575000 Z#104 R#100
+G81 X14.605000 Y31.115000 Z#104 R#100
+G81 X14.605000 Y33.655000 Z#104 R#100
+G81 X14.605000 Y36.195000 Z#104 R#100
+G81 X14.605000 Y38.735000 Z#104 R#100
+G81 X14.605000 Y41.275000 Z#104 R#100
+G81 X14.605000 Y43.815000 Z#104 R#100
+G81 X14.605000 Y46.355000 Z#104 R#100
+G81 X14.605000 Y48.895000 Z#104 R#100
+G81 X14.605000 Y51.435000 Z#104 R#100
+G81 X14.605000 Y53.975000 Z#104 R#100
+G81 X14.605000 Y56.515000 Z#104 R#100
+G81 X14.605000 Y59.055000 Z#104 R#100
+G81 X14.605000 Y61.595000 Z#104 R#100
+G81 X17.145000 Y61.595000 Z#104 R#100
+G81 X17.145000 Y59.055000 Z#104 R#100
+G81 X19.685000 Y59.055000 Z#104 R#100
+G81 X19.685000 Y61.595000 Z#104 R#100
+G81 X19.685000 Y64.135000 Z#104 R#100
+G81 X17.145000 Y64.135000 Z#104 R#100
+G81 X17.145000 Y66.675000 Z#104 R#100
+G81 X19.685000 Y66.675000 Z#104 R#100
+G81 X19.685000 Y69.215000 Z#104 R#100
+G81 X17.145000 Y69.215000 Z#104 R#100
+G81 X14.605000 Y69.215000 Z#104 R#100
+G81 X14.605000 Y66.675000 Z#104 R#100
+G81 X14.605000 Y64.135000 Z#104 R#100
+G81 X14.605000 Y71.755000 Z#104 R#100
+G81 X14.605000 Y74.295000 Z#104 R#100
+G81 X14.605000 Y76.835000 Z#104 R#100
+G81 X17.145000 Y76.835000 Z#104 R#100
+G81 X19.685000 Y76.835000 Z#104 R#100
+G81 X19.685000 Y79.375000 Z#104 R#100
+G81 X17.145000 Y79.375000 Z#104 R#100
+G81 X17.145000 Y81.915000 Z#104 R#100
+G81 X19.685000 Y81.915000 Z#104 R#100
+G81 X19.685000 Y84.455000 Z#104 R#100
+G81 X19.685000 Y86.995000 Z#104 R#100
+G81 X17.145000 Y86.995000 Z#104 R#100
+G81 X17.145000 Y84.455000 Z#104 R#100
+G81 X14.605000 Y84.455000 Z#104 R#100
+G81 X14.605000 Y86.995000 Z#104 R#100
+G81 X14.605000 Y89.535000 Z#104 R#100
+G81 X14.605000 Y92.075000 Z#104 R#100
+G81 X17.145000 Y92.075000 Z#104 R#100
+G81 X19.685000 Y92.075000 Z#104 R#100
+G81 X19.685000 Y89.535000 Z#104 R#100
+G81 X17.145000 Y89.535000 Z#104 R#100
+G81 X14.605000 Y81.915000 Z#104 R#100
+G81 X14.605000 Y79.375000 Z#104 R#100
+G81 X17.145000 Y74.295000 Z#104 R#100
+G81 X17.145000 Y71.755000 Z#104 R#100
+G81 X19.685000 Y71.755000 Z#104 R#100
+G81 X19.685000 Y74.295000 Z#104 R#100
+G81 X19.685000 Y56.515000 Z#104 R#100
+G81 X17.145000 Y56.515000 Z#104 R#100
+G81 X17.145000 Y53.975000 Z#104 R#100
+G81 X19.685000 Y53.975000 Z#104 R#100
+G81 X19.685000 Y51.435000 Z#104 R#100
+G81 X19.685000 Y48.895000 Z#104 R#100
+G81 X17.145000 Y48.895000 Z#104 R#100
+G81 X17.145000 Y51.435000 Z#104 R#100
+G81 X17.145000 Y46.355000 Z#104 R#100
+G81 X17.145000 Y43.815000 Z#104 R#100
+G81 X19.685000 Y43.815000 Z#104 R#100
+G81 X19.685000 Y46.355000 Z#104 R#100
+G81 X19.685000 Y41.275000 Z#104 R#100
+G81 X17.145000 Y41.275000 Z#104 R#100
+G81 X17.145000 Y38.735000 Z#104 R#100
+G81 X17.145000 Y36.195000 Z#104 R#100
+G81 X19.685000 Y36.195000 Z#104 R#100
+G81 X19.685000 Y38.735000 Z#104 R#100
+G81 X19.685000 Y33.655000 Z#104 R#100
+G81 X19.685000 Y31.115000 Z#104 R#100
+G81 X17.145000 Y31.115000 Z#104 R#100
+G81 X17.145000 Y33.655000 Z#104 R#100
+G81 X17.145000 Y28.575000 Z#104 R#100
+G81 X19.685000 Y28.575000 Z#104 R#100
+G81 X19.685000 Y26.035000 Z#104 R#100
+G81 X19.685000 Y23.495000 Z#104 R#100
+G81 X17.145000 Y23.495000 Z#104 R#100
+G81 X17.145000 Y26.035000 Z#104 R#100
+G81 X17.145000 Y20.955000 Z#104 R#100
+G81 X17.145000 Y18.415000 Z#104 R#100
+G81 X17.145000 Y15.875000 Z#104 R#100
+G81 X17.145000 Y13.335000 Z#104 R#100
+G81 X19.685000 Y13.335000 Z#104 R#100
+G81 X19.685000 Y15.875000 Z#104 R#100
+G81 X19.685000 Y18.415000 Z#104 R#100
+G81 X19.685000 Y20.955000 Z#104 R#100
+G81 X111.125000 Y44.450000 Z#104 R#100
+G81 X111.125000 Y54.610000 Z#104 R#100
+G81 X121.285000 Y54.610000 Z#104 R#100
+G81 X125.095000 Y54.610000 Z#104 R#100
+G81 X125.095000 Y44.450000 Z#104 R#100
+G81 X121.285000 Y44.450000 Z#104 R#100
+G81 X125.095000 Y34.290000 Z#104 R#100
+G81 X135.255000 Y34.290000 Z#104 R#100
+G81 X135.255000 Y44.450000 Z#104 R#100
+G81 X135.255000 Y54.610000 Z#104 R#100
+G81 X135.255000 Y66.040000 Z#104 R#100
+G81 X125.095000 Y66.040000 Z#104 R#100
+M5 M9 M2
+(end, total distance 478.38mm = 18.83in)
--- /dev/null
+(Created by G-code exporter)
+(Wed Jul 15 16:09:51 2015)
+(Units: mm)
+(Board size: 180.34 x 104.14 mm)
+(Drill file: 129 drills)
+(Drill diameter: 0.889000 mm)
+#100=2.000000 (safe Z)
+#104=-2.000000 (drill depth)
+(---------------------------------)
+G17 G21 G90 G64 P0.003 M3 S3000 M7 F50.000000
+G0 Z#100
+G81 X24.130000 Y7.620000 Z#104 R#100
+G81 X24.130000 Y10.160000 Z#104 R#100
+G81 X24.130000 Y15.240000 Z#104 R#100
+G81 X24.130000 Y17.780000 Z#104 R#100
+G81 X26.670000 Y15.240000 Z#104 R#100
+G81 X40.005000 Y17.780000 Z#104 R#100
+G81 X41.910000 Y15.875000 Z#104 R#100
+G81 X53.975000 Y10.160000 Z#104 R#100
+G81 X70.485000 Y15.240000 Z#104 R#100
+G81 X78.740000 Y21.590000 Z#104 R#100
+G81 X80.645000 Y19.685000 Z#104 R#100
+G81 X82.550000 Y17.780000 Z#104 R#100
+G81 X85.725000 Y10.160000 Z#104 R#100
+G81 X116.205000 Y24.765000 Z#104 R#100
+G81 X116.205000 Y27.940000 Z#104 R#100
+G81 X118.745000 Y27.940000 Z#104 R#100
+G81 X118.745000 Y31.750000 Z#104 R#100
+G81 X116.205000 Y31.750000 Z#104 R#100
+G81 X116.205000 Y34.290000 Z#104 R#100
+G81 X118.745000 Y34.290000 Z#104 R#100
+G81 X121.285000 Y39.370000 Z#104 R#100
+G81 X125.095000 Y39.370000 Z#104 R#100
+G81 X127.635000 Y39.370000 Z#104 R#100
+G81 X132.080000 Y34.290000 Z#104 R#100
+G81 X135.255000 Y31.750000 Z#104 R#100
+G81 X135.255000 Y27.940000 Z#104 R#100
+G81 X132.080000 Y24.765000 Z#104 R#100
+G81 X125.095000 Y27.940000 Z#104 R#100
+G81 X123.190000 Y29.845000 Z#104 R#100
+G81 X123.190000 Y24.765000 Z#104 R#100
+G81 X119.380000 Y20.320000 Z#104 R#100
+G81 X130.810000 Y7.620000 Z#104 R#100
+G81 X135.255000 Y39.370000 Z#104 R#100
+G81 X135.255000 Y49.530000 Z#104 R#100
+G81 X135.255000 Y59.690000 Z#104 R#100
+G81 X135.255000 Y62.230000 Z#104 R#100
+G81 X132.715000 Y59.690000 Z#104 R#100
+G81 X139.700000 Y62.230000 Z#104 R#100
+G81 X141.605000 Y57.785000 Z#104 R#100
+G81 X139.700000 Y72.390000 Z#104 R#100
+G81 X132.715000 Y76.835000 Z#104 R#100
+G81 X131.445000 Y85.090000 Z#104 R#100
+G81 X128.905000 Y85.090000 Z#104 R#100
+G81 X139.700000 Y85.090000 Z#104 R#100
+G81 X141.605000 Y88.265000 Z#104 R#100
+G81 X160.020000 Y78.105000 Z#104 R#100
+G81 X160.020000 Y75.336400 Z#104 R#100
+G81 X160.020000 Y72.567800 Z#104 R#100
+G81 X160.020000 Y69.799200 Z#104 R#100
+G81 X160.020000 Y67.030600 Z#104 R#100
+G81 X162.560000 Y68.427600 Z#104 R#100
+G81 X162.560000 Y71.196200 Z#104 R#100
+G81 X162.560000 Y73.964800 Z#104 R#100
+G81 X162.560000 Y76.733400 Z#104 R#100
+G81 X125.095000 Y59.690000 Z#104 R#100
+G81 X118.745000 Y59.690000 Z#104 R#100
+G81 X116.205000 Y59.690000 Z#104 R#100
+G81 X113.665000 Y59.690000 Z#104 R#100
+G81 X118.745000 Y62.230000 Z#104 R#100
+G81 X118.745000 Y66.040000 Z#104 R#100
+G81 X116.205000 Y66.040000 Z#104 R#100
+G81 X111.760000 Y66.040000 Z#104 R#100
+G81 X109.855000 Y66.040000 Z#104 R#100
+G81 X107.315000 Y66.040000 Z#104 R#100
+G81 X101.600000 Y66.040000 Z#104 R#100
+G81 X99.060000 Y66.040000 Z#104 R#100
+G81 X93.345000 Y66.040000 Z#104 R#100
+G81 X88.900000 Y67.945000 Z#104 R#100
+G81 X83.185000 Y66.040000 Z#104 R#100
+G81 X81.915000 Y67.945000 Z#104 R#100
+G81 X78.740000 Y66.040000 Z#104 R#100
+G81 X78.740000 Y62.230000 Z#104 R#100
+G81 X82.550000 Y62.230000 Z#104 R#100
+G81 X72.390000 Y69.850000 Z#104 R#100
+G81 X67.945000 Y69.850000 Z#104 R#100
+G81 X68.580000 Y66.040000 Z#104 R#100
+G81 X63.500000 Y66.040000 Z#104 R#100
+G81 X60.325000 Y62.230000 Z#104 R#100
+G81 X53.340000 Y66.040000 Z#104 R#100
+G81 X48.895000 Y66.040000 Z#104 R#100
+G81 X48.895000 Y62.230000 Z#104 R#100
+G81 X38.735000 Y66.040000 Z#104 R#100
+G81 X34.290000 Y66.040000 Z#104 R#100
+G81 X27.305000 Y64.135000 Z#104 R#100
+G81 X24.130000 Y66.040000 Z#104 R#100
+G81 X24.130000 Y76.835000 Z#104 R#100
+G81 X37.465000 Y83.820000 Z#104 R#100
+G81 X41.275000 Y83.820000 Z#104 R#100
+G81 X45.085000 Y83.820000 Z#104 R#100
+G81 X48.260000 Y86.360000 Z#104 R#100
+G81 X45.085000 Y93.980000 Z#104 R#100
+G81 X41.275000 Y93.980000 Z#104 R#100
+G81 X37.465000 Y93.980000 Z#104 R#100
+G81 X60.325000 Y81.915000 Z#104 R#100
+G81 X63.500000 Y83.820000 Z#104 R#100
+G81 X67.945000 Y83.820000 Z#104 R#100
+G81 X67.945000 Y80.010000 Z#104 R#100
+G81 X72.390000 Y80.010000 Z#104 R#100
+G81 X72.390000 Y83.820000 Z#104 R#100
+G81 X76.200000 Y86.360000 Z#104 R#100
+G81 X72.390000 Y93.980000 Z#104 R#100
+G81 X67.945000 Y93.980000 Z#104 R#100
+G81 X63.500000 Y93.980000 Z#104 R#100
+G81 X88.900000 Y96.520000 Z#104 R#100
+G81 X92.710000 Y93.980000 Z#104 R#100
+G81 X97.155000 Y96.520000 Z#104 R#100
+G81 X100.330000 Y92.710000 Z#104 R#100
+G81 X100.330000 Y90.170000 Z#104 R#100
+G81 X101.600000 Y85.090000 Z#104 R#100
+G81 X99.060000 Y85.090000 Z#104 R#100
+G81 X103.505000 Y81.915000 Z#104 R#100
+G81 X106.680000 Y85.090000 Z#104 R#100
+G81 X109.220000 Y85.090000 Z#104 R#100
+G81 X109.220000 Y81.915000 Z#104 R#100
+G81 X113.665000 Y76.835000 Z#104 R#100
+G81 X111.760000 Y73.025000 Z#104 R#100
+G81 X105.410000 Y88.900000 Z#104 R#100
+G81 X106.680000 Y91.440000 Z#104 R#100
+G81 X109.220000 Y91.440000 Z#104 R#100
+G81 X111.760000 Y96.520000 Z#104 R#100
+G81 X92.710000 Y83.820000 Z#104 R#100
+G81 X70.485000 Y57.785000 Z#104 R#100
+G81 X53.975000 Y36.195000 Z#104 R#100
+G81 X111.125000 Y39.370000 Z#104 R#100
+G81 X111.125000 Y49.530000 Z#104 R#100
+G81 X113.665000 Y52.705000 Z#104 R#100
+G81 X121.285000 Y49.530000 Z#104 R#100
+G81 X125.095000 Y49.530000 Z#104 R#100
+G81 X125.095000 Y47.625000 Z#104 R#100
+M5 M9 M2
+(end, total distance 949.65mm = 37.39in)
--- /dev/null
+(Created by G-code exporter)
+(Wed Jul 15 16:09:51 2015)
+(Units: mm)
+(Board size: 180.34 x 104.14 mm)
+(Accuracy 600 dpi)
+(Tool diameter: 0.200000 mm)
+#100=2.000000 (safe Z)
+#101=-0.050000 (cutting depth)
+#102=25.000000 (plunge feedrate)
+#103=50.000000 (feedrate)
+(with predrilling)
+(---------------------------------)
+G17 G21 G90 G64 P0.003 M3 S3000 M7
+G0 Z#100
+(polygon 1)
+G0 X129.286000 Y104.140000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X129.286000 Y104.055333
+G1 X129.455333 Y103.886000
+G1 X170.222333 Y103.886000
+G1 X170.391667 Y104.055333
+G1 X170.391667 Y104.140000
+G1 X129.286000 Y104.140000
+G0 Z#100
+(polygon end, distance 82.52)
+(polygon 2)
+G0 X74.125667 Y102.192667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X73.871667 Y101.981000
+G1 X73.660000 Y101.727000
+G1 X73.660000 Y101.473000
+G1 X73.787000 Y101.219000
+G1 X74.041000 Y101.007333
+G1 X74.041000 Y94.530333
+G1 X73.787000 Y94.318667
+G1 X73.660000 Y94.064667
+G1 X73.660000 Y93.810667
+G1 X73.871667 Y93.556667
+G1 X74.125667 Y93.345000
+G1 X74.422000 Y93.345000
+G1 X74.676000 Y93.556667
+G1 X74.887667 Y93.810667
+G1 X74.887667 Y94.064667
+G1 X74.760667 Y94.318667
+G1 X74.506667 Y94.530333
+G1 X74.506667 Y101.007333
+G1 X74.760667 Y101.219000
+G1 X74.887667 Y101.473000
+G1 X74.887667 Y101.727000
+G1 X74.676000 Y101.981000
+G1 X74.422000 Y102.192667
+G1 X74.125667 Y102.192667
+G0 Z#100
+(polygon end, distance 19.67)
+(polygon 3)
+G0 X61.510333 Y101.811667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X58.843333 Y99.187000
+G1 X58.801000 Y98.975333
+G1 X58.547000 Y98.763667
+G1 X58.420000 Y98.509667
+G1 X58.420000 Y98.255667
+G1 X58.631667 Y98.001667
+G1 X58.885667 Y97.790000
+G1 X59.182000 Y97.790000
+G1 X59.436000 Y98.001667
+G1 X59.647667 Y98.255667
+G1 X59.647667 Y98.509667
+G1 X59.520667 Y98.763667
+G1 X59.266667 Y98.975333
+G1 X61.679667 Y101.346000
+G1 X69.723000 Y101.346000
+G1 X71.162333 Y99.949000
+G1 X71.120000 Y99.525667
+G1 X71.331667 Y99.271667
+G1 X71.585667 Y99.060000
+G1 X71.882000 Y99.060000
+G1 X72.136000 Y99.271667
+G1 X72.347667 Y99.525667
+G1 X72.347667 Y99.822000
+G1 X72.136000 Y100.076000
+G1 X71.882000 Y100.287667
+G1 X71.501000 Y100.245333
+G1 X69.892333 Y101.811667
+G1 X61.510333 Y101.811667
+G0 Z#100
+(polygon end, distance 34.76)
+(polygon 4)
+G0 X76.750333 Y101.811667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X75.946000 Y101.007333
+G1 X75.946000 Y93.387333
+G1 X75.438000 Y92.921667
+G1 X70.400333 Y92.921667
+G1 X70.188667 Y93.175667
+G1 X69.934667 Y93.302667
+G1 X69.680667 Y93.302667
+G1 X69.426667 Y93.091000
+G1 X69.215000 Y92.837000
+G1 X69.215000 Y92.540667
+G1 X69.426667 Y92.286667
+G1 X69.680667 Y92.075000
+G1 X69.934667 Y92.075000
+G1 X70.188667 Y92.202000
+G1 X70.400333 Y92.456000
+G1 X75.607333 Y92.456000
+G1 X76.411667 Y93.260333
+G1 X76.411667 Y100.880333
+G1 X76.919667 Y101.346000
+G1 X135.763000 Y101.346000
+G1 X136.906000 Y100.245333
+G1 X136.906000 Y92.794667
+G1 X135.678333 Y91.524667
+G1 X135.339667 Y91.651667
+G1 X134.958667 Y91.609333
+G1 X134.620000 Y91.397667
+G1 X134.408333 Y91.059000
+G1 X134.408333 Y90.508667
+G1 X134.620000 Y90.170000
+G1 X134.958667 Y89.958333
+G1 X135.509000 Y89.958333
+G1 X135.847667 Y90.170000
+G1 X136.059333 Y90.508667
+G1 X136.101667 Y90.889667
+G1 X135.974667 Y91.186000
+G1 X137.371667 Y92.625333
+G1 X137.371667 Y100.372333
+G1 X135.932333 Y101.811667
+G1 X76.750333 Y101.811667
+G0 Z#100
+(polygon end, distance 178.06)
+(polygon 5)
+G0 X67.775667 Y100.287667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X67.521667 Y100.076000
+G1 X67.310000 Y99.822000
+G1 X67.310000 Y99.568000
+G1 X67.437000 Y99.314000
+G1 X67.691000 Y99.102333
+G1 X67.691000 Y94.784333
+G1 X67.310000 Y94.572667
+G1 X67.098333 Y94.234000
+G1 X67.098333 Y93.683667
+G1 X67.310000 Y93.345000
+G1 X67.648667 Y93.133333
+G1 X68.199000 Y93.133333
+G1 X68.537667 Y93.345000
+G1 X68.749333 Y93.683667
+G1 X68.749333 Y94.234000
+G1 X68.537667 Y94.572667
+G1 X68.156667 Y94.784333
+G1 X68.156667 Y99.102333
+G1 X68.410667 Y99.314000
+G1 X68.537667 Y99.568000
+G1 X68.537667 Y99.822000
+G1 X68.326000 Y100.076000
+G1 X68.072000 Y100.287667
+G1 X67.775667 Y100.287667
+G0 Z#100
+(polygon end, distance 16.91)
+(polygon 6)
+G0 X77.935667 Y100.287667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X77.681667 Y100.076000
+G1 X77.470000 Y99.822000
+G1 X77.470000 Y99.525667
+G1 X77.681667 Y99.271667
+G1 X77.935667 Y99.060000
+G1 X78.189667 Y99.060000
+G1 X78.443667 Y99.187000
+G1 X78.655333 Y99.441000
+G1 X116.882333 Y99.441000
+G1 X117.094000 Y99.187000
+G1 X117.348000 Y99.060000
+G1 X117.602000 Y99.060000
+G1 X117.856000 Y99.271667
+G1 X118.067667 Y99.525667
+G1 X118.067667 Y99.822000
+G1 X117.856000 Y100.076000
+G1 X117.602000 Y100.287667
+G1 X117.348000 Y100.287667
+G1 X117.094000 Y100.160667
+G1 X116.882333 Y99.906667
+G1 X78.655333 Y99.906667
+G1 X78.443667 Y100.160667
+G1 X78.189667 Y100.287667
+G1 X77.935667 Y100.287667
+G0 Z#100
+(polygon end, distance 83.17)
+(polygon 7)
+G0 X79.798333 Y99.356333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X79.375000 Y99.144667
+G1 X78.570667 Y98.298000
+G1 X78.401333 Y97.959333
+G1 X78.401333 Y95.631000
+G1 X77.258333 Y94.445667
+G1 X77.131333 Y94.064667
+G1 X77.173667 Y92.413667
+G1 X77.427667 Y92.032667
+G1 X77.808667 Y91.778667
+G1 X78.359000 Y91.778667
+G1 X78.740000 Y92.032667
+G1 X78.994000 Y92.413667
+G1 X79.036333 Y93.556667
+G1 X80.137000 Y94.699667
+G1 X80.264000 Y94.953667
+G1 X80.348667 Y97.409000
+G1 X86.614000 Y97.451333
+G1 X87.630000 Y96.393000
+G1 X87.757000 Y95.927333
+G1 X88.011000 Y95.631000
+G1 X88.307333 Y95.377000
+G1 X88.730667 Y95.250000
+G1 X89.027000 Y95.250000
+G1 X89.450333 Y95.377000
+G1 X89.662000 Y95.546333
+G1 X96.350667 Y95.546333
+G1 X96.562333 Y95.377000
+G1 X96.985667 Y95.250000
+G1 X97.282000 Y95.250000
+G1 X97.705333 Y95.377000
+G1 X97.917000 Y95.546333
+G1 X108.246333 Y95.546333
+G1 X108.288667 Y91.143667
+G1 X108.542667 Y90.762667
+G1 X108.923667 Y90.508667
+G1 X109.474000 Y90.508667
+G1 X109.855000 Y90.762667
+G1 X110.109000 Y91.143667
+G1 X110.151333 Y95.546333
+G1 X110.955667 Y95.546333
+G1 X111.167333 Y95.377000
+G1 X111.590667 Y95.250000
+G1 X111.887000 Y95.250000
+G1 X112.310333 Y95.377000
+G1 X112.522000 Y95.546333
+G1 X117.094000 Y95.588667
+G1 X117.686667 Y95.631000
+G1 X117.686667 Y96.054333
+G1 X119.126000 Y97.451333
+G1 X127.889000 Y97.451333
+G1 X129.286000 Y96.012000
+G1 X129.286000 Y95.631000
+G1 X129.921000 Y95.588667
+G1 X130.386667 Y95.588667
+G1 X131.021667 Y95.631000
+G1 X131.064000 Y96.266000
+G1 X131.064000 Y96.731667
+G1 X131.021667 Y97.366667
+G1 X130.640667 Y97.366667
+G1 X128.778000 Y99.187000
+G1 X128.439333 Y99.356333
+G1 X118.533333 Y99.356333
+G1 X118.194667 Y99.187000
+G1 X116.416667 Y97.451333
+G1 X112.522000 Y97.451333
+G1 X112.310333 Y97.620667
+G1 X111.887000 Y97.747667
+G1 X111.590667 Y97.747667
+G1 X111.167333 Y97.620667
+G1 X110.955667 Y97.451333
+G1 X97.917000 Y97.451333
+G1 X97.705333 Y97.620667
+G1 X97.282000 Y97.747667
+G1 X96.985667 Y97.747667
+G1 X96.562333 Y97.620667
+G1 X96.350667 Y97.451333
+G1 X89.662000 Y97.451333
+G1 X89.450333 Y97.620667
+G1 X88.984667 Y97.747667
+G1 X87.503000 Y99.187000
+G1 X87.164333 Y99.356333
+G1 X79.798333 Y99.356333
+G0 Z#100
+(polygon end, distance 134.79)
+(polygon 8)
+G0 X43.053000 Y98.848333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X42.799000 Y98.679000
+G1 X41.105667 Y96.943333
+G1 X31.834667 Y96.943333
+G1 X31.496000 Y97.282000
+G1 X31.157333 Y97.366667
+G1 X30.776333 Y97.324333
+G1 X30.437667 Y97.070333
+G1 X30.268333 Y96.774000
+G1 X30.268333 Y96.223667
+G1 X30.437667 Y95.927333
+G1 X30.776333 Y95.673333
+G1 X31.157333 Y95.631000
+G1 X31.496000 Y95.715667
+G1 X31.834667 Y96.054333
+G1 X40.809333 Y96.054333
+G1 X40.809333 Y94.699667
+G1 X40.470667 Y94.361000
+G1 X40.386000 Y94.022333
+G1 X40.428333 Y93.641333
+G1 X40.682333 Y93.302667
+G1 X40.978667 Y93.133333
+G1 X41.529000 Y93.133333
+G1 X41.825333 Y93.302667
+G1 X42.079333 Y93.641333
+G1 X42.121667 Y94.022333
+G1 X42.037000 Y94.361000
+G1 X41.698333 Y94.699667
+G1 X41.698333 Y96.308333
+G1 X43.307000 Y97.959333
+G1 X54.440667 Y97.959333
+G1 X55.626000 Y96.731667
+G1 X55.668333 Y96.223667
+G1 X55.880000 Y95.885000
+G1 X56.218667 Y95.673333
+G1 X56.726667 Y95.631000
+G1 X57.319333 Y95.080667
+G1 X57.319333 Y93.429667
+G1 X57.023000 Y93.133333
+G1 X55.964667 Y93.133333
+G1 X55.626000 Y93.472000
+G1 X55.287333 Y93.556667
+G1 X54.906333 Y93.514333
+G1 X54.567667 Y93.260333
+G1 X54.398333 Y92.964000
+G1 X54.398333 Y92.413667
+G1 X54.567667 Y92.117333
+G1 X54.906333 Y91.863333
+G1 X55.287333 Y91.821000
+G1 X55.626000 Y91.905667
+G1 X55.964667 Y92.244333
+G1 X57.023000 Y92.244333
+G1 X57.361667 Y91.905667
+G1 X57.700333 Y91.821000
+G1 X57.996667 Y91.863333
+G1 X59.351333 Y90.466333
+G1 X59.605333 Y90.339333
+G1 X78.570667 Y90.339333
+G1 X82.719333 Y86.148333
+G1 X82.719333 Y85.809667
+G1 X82.380667 Y85.471000
+G1 X82.296000 Y85.132333
+G1 X82.338333 Y84.751333
+G1 X82.592333 Y84.412667
+G1 X82.888667 Y84.243333
+G1 X83.439000 Y84.243333
+G1 X83.735333 Y84.412667
+G1 X83.989333 Y84.751333
+G1 X84.031667 Y85.132333
+G1 X83.947000 Y85.471000
+G1 X83.608333 Y85.809667
+G1 X83.608333 Y86.402333
+G1 X83.523667 Y86.571667
+G1 X79.036333 Y91.101333
+G1 X78.782333 Y91.228333
+G1 X59.859333 Y91.228333
+G1 X58.589333 Y92.456000
+G1 X58.631667 Y92.752333
+G1 X58.547000 Y93.091000
+G1 X58.208333 Y93.429667
+G1 X58.208333 Y95.292333
+G1 X58.123667 Y95.461667
+G1 X57.361667 Y96.266000
+G1 X57.319333 Y96.774000
+G1 X57.107667 Y97.112667
+G1 X56.769000 Y97.324333
+G1 X56.261000 Y97.366667
+G1 X54.821667 Y98.763667
+G1 X54.652333 Y98.848333
+G1 X43.053000 Y98.848333
+G0 Z#100
+(polygon end, distance 140.50)
+(polygon 9)
+G0 X11.811000 Y98.763667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X11.430000 Y98.636667
+G1 X11.049000 Y98.425000
+G1 X10.668000 Y98.001667
+G1 X10.456333 Y97.536000
+G1 X10.456333 Y96.731667
+G1 X10.710333 Y96.181333
+G1 X11.176000 Y95.758000
+G1 X11.641667 Y95.546333
+G1 X12.446000 Y95.546333
+G1 X12.996333 Y95.800333
+G1 X13.419667 Y96.266000
+G1 X13.631333 Y96.731667
+G1 X13.631333 Y97.536000
+G1 X13.419667 Y98.001667
+G1 X12.996333 Y98.467333
+G1 X12.446000 Y98.721333
+G1 X11.811000 Y98.763667
+G0 Z#100
+(polygon end, distance 10.21)
+(polygon 10)
+G0 X165.481000 Y98.763667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X165.100000 Y98.636667
+G1 X164.719000 Y98.425000
+G1 X164.338000 Y98.001667
+G1 X164.126333 Y97.536000
+G1 X164.126333 Y96.731667
+G1 X164.380333 Y96.181333
+G1 X164.846000 Y95.758000
+G1 X165.311667 Y95.546333
+G1 X166.116000 Y95.546333
+G1 X166.666333 Y95.800333
+G1 X167.089667 Y96.266000
+G1 X167.301333 Y96.731667
+G1 X167.301333 Y97.536000
+G1 X167.089667 Y98.001667
+G1 X166.666333 Y98.467333
+G1 X166.116000 Y98.721333
+G1 X165.481000 Y98.763667
+G0 Z#100
+(polygon end, distance 10.21)
+(polygon 11)
+G0 X25.146000 Y97.366667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X25.146000 Y95.631000
+G1 X26.881667 Y95.631000
+G1 X26.881667 Y96.054333
+G1 X27.135667 Y96.054333
+G1 X28.871333 Y94.276333
+G1 X29.125333 Y94.149333
+G1 X31.538333 Y94.149333
+G1 X31.919333 Y93.810667
+G1 X31.919333 Y93.429667
+G1 X31.580667 Y93.091000
+G1 X31.496000 Y92.752333
+G1 X31.538333 Y92.371333
+G1 X31.792333 Y92.032667
+G1 X32.088667 Y91.863333
+G1 X32.639000 Y91.863333
+G1 X32.935333 Y92.032667
+G1 X33.189333 Y92.371333
+G1 X33.231667 Y92.752333
+G1 X33.147000 Y93.091000
+G1 X32.808333 Y93.429667
+G1 X32.808333 Y94.022333
+G1 X32.723667 Y94.191667
+G1 X32.046333 Y94.911333
+G1 X31.792333 Y95.038333
+G1 X29.337000 Y95.038333
+G1 X27.601333 Y96.816333
+G1 X27.347333 Y96.943333
+G1 X26.881667 Y96.943333
+G1 X26.881667 Y97.366667
+G1 X25.146000 Y97.366667
+G0 Z#100
+(polygon end, distance 24.63)
+(polygon 12)
+G0 X50.546000 Y97.366667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X50.546000 Y95.631000
+G1 X52.281667 Y95.631000
+G1 X52.281667 Y97.366667
+G1 X50.546000 Y97.366667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 13)
+G0 X84.285667 Y97.366667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X84.031667 Y97.282000
+G1 X83.650667 Y96.901000
+G1 X83.566000 Y96.562333
+G1 X83.608333 Y96.181333
+G1 X83.862333 Y95.842667
+G1 X84.158667 Y95.673333
+G1 X84.709000 Y95.673333
+G1 X85.047667 Y95.885000
+G1 X85.259333 Y96.223667
+G1 X85.259333 Y96.774000
+G1 X85.047667 Y97.112667
+G1 X84.709000 Y97.324333
+G1 X84.285667 Y97.366667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 14)
+G0 X121.750667 Y97.366667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X121.496667 Y97.282000
+G1 X121.115667 Y96.901000
+G1 X121.031000 Y96.562333
+G1 X121.073333 Y96.181333
+G1 X121.327333 Y95.842667
+G1 X121.623667 Y95.673333
+G1 X122.174000 Y95.673333
+G1 X122.512667 Y95.885000
+G1 X122.724333 Y96.223667
+G1 X122.724333 Y96.774000
+G1 X122.512667 Y97.112667
+G1 X122.174000 Y97.324333
+G1 X121.750667 Y97.366667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 15)
+G0 X135.085667 Y97.366667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.831667 Y97.282000
+G1 X134.450667 Y96.901000
+G1 X134.366000 Y96.604667
+G1 X134.366000 Y96.350667
+G1 X134.493000 Y96.054333
+G1 X132.588000 Y94.191667
+G1 X127.550333 Y94.191667
+G1 X127.338667 Y94.445667
+G1 X127.084667 Y94.572667
+G1 X126.830667 Y94.572667
+G1 X126.576667 Y94.361000
+G1 X126.365000 Y94.107000
+G1 X126.365000 Y93.810667
+G1 X126.576667 Y93.556667
+G1 X126.830667 Y93.345000
+G1 X127.084667 Y93.345000
+G1 X127.338667 Y93.472000
+G1 X127.550333 Y93.726000
+G1 X132.757333 Y93.726000
+G1 X134.831667 Y95.758000
+G1 X135.128000 Y95.631000
+G1 X135.509000 Y95.673333
+G1 X135.847667 Y95.885000
+G1 X136.059333 Y96.223667
+G1 X136.059333 Y96.774000
+G1 X135.847667 Y97.112667
+G1 X135.509000 Y97.324333
+G1 X135.085667 Y97.366667
+G0 Z#100
+(polygon end, distance 24.14)
+(polygon 16)
+G0 X95.080667 Y95.207667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X94.826667 Y94.996000
+G1 X94.615000 Y94.742000
+G1 X94.615000 Y94.445667
+G1 X94.826667 Y94.191667
+G1 X95.080667 Y93.980000
+G1 X95.377000 Y93.980000
+G1 X95.631000 Y94.149333
+G1 X104.605667 Y94.149333
+G1 X106.214333 Y92.498333
+G1 X106.214333 Y92.286667
+G1 X105.791000 Y92.286667
+G1 X105.791000 Y90.551000
+G1 X107.526667 Y90.551000
+G1 X107.526667 Y92.286667
+G1 X107.103333 Y92.286667
+G1 X107.103333 Y92.752333
+G1 X106.976333 Y93.006333
+G1 X104.986667 Y94.953667
+G1 X104.817333 Y95.038333
+G1 X95.631000 Y95.038333
+G1 X95.377000 Y95.207667
+G1 X95.080667 Y95.207667
+G0 Z#100
+(polygon end, distance 33.28)
+(polygon 17)
+G0 X15.790333 Y94.826667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.351000 Y93.387333
+G1 X14.351000 Y92.921667
+G1 X13.716000 Y92.921667
+G1 X13.716000 Y91.186000
+G1 X15.451667 Y91.186000
+G1 X15.451667 Y92.921667
+G1 X14.816667 Y92.921667
+G1 X14.816667 Y93.260333
+G1 X15.959667 Y94.361000
+G1 X26.543000 Y94.361000
+G1 X27.051000 Y93.895333
+G1 X27.051000 Y93.514333
+G1 X26.670000 Y93.302667
+G1 X26.458333 Y92.964000
+G1 X26.458333 Y92.413667
+G1 X26.670000 Y92.075000
+G1 X27.008667 Y91.863333
+G1 X27.559000 Y91.863333
+G1 X27.897667 Y92.075000
+G1 X28.109333 Y92.413667
+G1 X28.109333 Y92.964000
+G1 X27.897667 Y93.302667
+G1 X27.516667 Y93.514333
+G1 X27.516667 Y94.022333
+G1 X26.712333 Y94.826667
+G1 X15.790333 Y94.826667
+G0 Z#100
+(polygon end, distance 40.04)
+(polygon 18)
+G0 X37.295667 Y94.826667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X37.041667 Y94.742000
+G1 X36.660667 Y94.361000
+G1 X36.576000 Y94.022333
+G1 X36.618333 Y93.641333
+G1 X36.872333 Y93.302667
+G1 X37.168667 Y93.133333
+G1 X37.719000 Y93.133333
+G1 X38.057667 Y93.345000
+G1 X38.269333 Y93.683667
+G1 X38.269333 Y94.234000
+G1 X38.057667 Y94.572667
+G1 X37.719000 Y94.784333
+G1 X37.295667 Y94.826667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 19)
+G0 X44.196000 Y94.826667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X44.196000 Y93.091000
+G1 X45.931667 Y93.091000
+G1 X45.931667 Y94.826667
+G1 X44.196000 Y94.826667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 20)
+G0 X62.611000 Y94.826667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X62.611000 Y93.091000
+G1 X64.346667 Y93.091000
+G1 X64.346667 Y94.826667
+G1 X62.611000 Y94.826667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 21)
+G0 X72.220667 Y94.826667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X71.966667 Y94.742000
+G1 X71.585667 Y94.361000
+G1 X71.501000 Y94.022333
+G1 X71.543333 Y93.641333
+G1 X71.797333 Y93.302667
+G1 X72.093667 Y93.133333
+G1 X72.644000 Y93.133333
+G1 X72.982667 Y93.345000
+G1 X73.194333 Y93.683667
+G1 X73.194333 Y94.234000
+G1 X72.982667 Y94.572667
+G1 X72.644000 Y94.784333
+G1 X72.220667 Y94.826667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 22)
+G0 X91.821000 Y94.826667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X91.821000 Y93.091000
+G1 X93.556667 Y93.091000
+G1 X93.556667 Y94.826667
+G1 X91.821000 Y94.826667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 23)
+G0 X24.595667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X24.341667 Y93.472000
+G1 X23.960667 Y93.091000
+G1 X23.876000 Y92.752333
+G1 X23.918333 Y92.371333
+G1 X24.172333 Y92.032667
+G1 X24.468667 Y91.863333
+G1 X25.019000 Y91.863333
+G1 X25.357667 Y92.075000
+G1 X25.569333 Y92.413667
+G1 X25.569333 Y92.964000
+G1 X25.357667 Y93.302667
+G1 X25.019000 Y93.514333
+G1 X24.595667 Y93.556667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 24)
+G0 X29.675667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X29.421667 Y93.472000
+G1 X29.040667 Y93.091000
+G1 X28.956000 Y92.752333
+G1 X28.998333 Y92.371333
+G1 X29.252333 Y92.032667
+G1 X29.591000 Y91.863333
+G1 X29.591000 Y90.889667
+G1 X28.490333 Y89.746667
+G1 X20.489333 Y89.746667
+G1 X20.277667 Y90.127667
+G1 X19.939000 Y90.339333
+G1 X19.388667 Y90.339333
+G1 X19.050000 Y90.127667
+G1 X18.838333 Y89.789000
+G1 X18.838333 Y89.238667
+G1 X19.007667 Y88.942333
+G1 X19.346333 Y88.688333
+G1 X18.584333 Y88.688333
+G1 X17.949333 Y89.281000
+G1 X17.991667 Y89.577333
+G1 X17.907000 Y89.916000
+G1 X17.568333 Y90.254667
+G1 X17.568333 Y91.313000
+G1 X17.907000 Y91.651667
+G1 X17.991667 Y91.990333
+G1 X17.949333 Y92.371333
+G1 X17.695333 Y92.710000
+G1 X17.399000 Y92.879333
+G1 X16.848667 Y92.879333
+G1 X16.552333 Y92.710000
+G1 X16.298333 Y92.371333
+G1 X16.256000 Y91.990333
+G1 X16.340667 Y91.651667
+G1 X16.679333 Y91.313000
+G1 X16.679333 Y90.254667
+G1 X16.340667 Y89.916000
+G1 X16.256000 Y89.577333
+G1 X16.298333 Y89.196333
+G1 X16.552333 Y88.857667
+G1 X16.848667 Y88.688333
+G1 X17.356667 Y88.646000
+G1 X18.161000 Y87.884000
+G1 X18.330333 Y87.799333
+G1 X19.346333 Y87.799333
+G1 X19.007667 Y87.545333
+G1 X18.838333 Y87.249000
+G1 X18.838333 Y86.698667
+G1 X19.050000 Y86.360000
+G1 X19.388667 Y86.148333
+G1 X19.939000 Y86.148333
+G1 X20.277667 Y86.360000
+G1 X20.489333 Y86.698667
+G1 X20.489333 Y87.249000
+G1 X20.320000 Y87.545333
+G1 X19.981333 Y87.799333
+G1 X20.150667 Y87.799333
+G1 X21.124333 Y86.783333
+G1 X21.124333 Y85.005333
+G1 X21.209000 Y84.836000
+G1 X23.156333 Y82.846333
+G1 X23.410333 Y82.719333
+G1 X33.697333 Y82.719333
+G1 X33.951333 Y82.846333
+G1 X36.957000 Y85.894333
+G1 X47.498000 Y85.894333
+G1 X47.836667 Y85.555667
+G1 X48.175333 Y85.471000
+G1 X48.556333 Y85.513333
+G1 X48.895000 Y85.767333
+G1 X49.064333 Y86.063667
+G1 X49.064333 Y86.614000
+G1 X48.895000 Y86.910333
+G1 X48.556333 Y87.164333
+G1 X48.175333 Y87.206667
+G1 X47.836667 Y87.122000
+G1 X47.498000 Y86.783333
+G1 X36.745333 Y86.783333
+G1 X36.491333 Y86.656333
+G1 X33.485667 Y83.608333
+G1 X30.268333 Y83.608333
+G1 X30.268333 Y84.328000
+G1 X30.607000 Y84.666667
+G1 X30.691667 Y85.005333
+G1 X30.649333 Y85.386333
+G1 X30.395333 Y85.725000
+G1 X30.099000 Y85.894333
+G1 X29.548667 Y85.894333
+G1 X29.252333 Y85.725000
+G1 X28.998333 Y85.386333
+G1 X28.956000 Y85.005333
+G1 X29.040667 Y84.666667
+G1 X29.379333 Y84.328000
+G1 X29.379333 Y83.608333
+G1 X23.664333 Y83.608333
+G1 X22.013333 Y85.217000
+G1 X22.013333 Y87.037333
+G1 X21.928667 Y87.206667
+G1 X20.616333 Y88.561333
+G1 X20.362333 Y88.688333
+G1 X19.981333 Y88.688333
+G1 X20.320000 Y88.942333
+G1 X20.489333 Y89.281000
+G1 X28.617333 Y89.281000
+G1 X30.056667 Y90.720333
+G1 X30.056667 Y91.863333
+G1 X30.437667 Y92.075000
+G1 X30.649333 Y92.413667
+G1 X30.649333 Y92.964000
+G1 X30.437667 Y93.302667
+G1 X30.099000 Y93.514333
+G1 X29.675667 Y93.556667
+G0 Z#100
+(polygon end, distance 123.64)
+(polygon 25)
+G0 X49.995667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X49.741667 Y93.472000
+G1 X49.360667 Y93.091000
+G1 X49.276000 Y92.752333
+G1 X49.318333 Y92.371333
+G1 X49.572333 Y92.032667
+G1 X49.868667 Y91.863333
+G1 X50.419000 Y91.863333
+G1 X50.757667 Y92.075000
+G1 X50.969333 Y92.413667
+G1 X50.969333 Y92.964000
+G1 X50.757667 Y93.302667
+G1 X50.419000 Y93.514333
+G1 X49.995667 Y93.556667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 26)
+G0 X52.535667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X52.281667 Y93.472000
+G1 X51.900667 Y93.091000
+G1 X51.816000 Y92.752333
+G1 X51.858333 Y92.371333
+G1 X52.112333 Y92.032667
+G1 X52.451000 Y91.863333
+G1 X52.451000 Y91.482333
+G1 X51.943000 Y91.016667
+G1 X41.825333 Y91.016667
+G1 X41.613667 Y91.270667
+G1 X41.359667 Y91.397667
+G1 X41.148000 Y91.397667
+G1 X40.894000 Y91.270667
+G1 X40.682333 Y91.016667
+G1 X35.475333 Y91.016667
+G1 X32.131000 Y87.672333
+G1 X32.131000 Y85.936667
+G1 X31.496000 Y85.936667
+G1 X31.496000 Y84.201000
+G1 X33.231667 Y84.201000
+G1 X33.231667 Y85.936667
+G1 X32.596667 Y85.936667
+G1 X32.596667 Y87.503000
+G1 X35.602333 Y90.551000
+G1 X40.682333 Y90.551000
+G1 X40.894000 Y90.297000
+G1 X41.148000 Y90.170000
+G1 X41.359667 Y90.170000
+G1 X41.613667 Y90.297000
+G1 X41.825333 Y90.551000
+G1 X52.112333 Y90.551000
+G1 X52.916667 Y91.355333
+G1 X52.916667 Y91.863333
+G1 X53.297667 Y92.075000
+G1 X53.509333 Y92.413667
+G1 X53.509333 Y92.964000
+G1 X53.297667 Y93.302667
+G1 X52.959000 Y93.514333
+G1 X52.535667 Y93.556667
+G0 Z#100
+(polygon end, distance 60.03)
+(polygon 27)
+G0 X80.475667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X80.221667 Y93.472000
+G1 X79.840667 Y93.091000
+G1 X79.756000 Y92.752333
+G1 X79.798333 Y92.371333
+G1 X80.052333 Y92.032667
+G1 X80.348667 Y91.863333
+G1 X80.899000 Y91.863333
+G1 X81.237667 Y92.075000
+G1 X81.449333 Y92.413667
+G1 X81.449333 Y92.964000
+G1 X81.237667 Y93.302667
+G1 X80.899000 Y93.514333
+G1 X80.475667 Y93.556667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 28)
+G0 X83.015667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X82.761667 Y93.472000
+G1 X82.380667 Y93.091000
+G1 X82.296000 Y92.752333
+G1 X82.338333 Y92.371333
+G1 X82.592333 Y92.032667
+G1 X82.888667 Y91.863333
+G1 X83.227333 Y91.821000
+G1 X83.566000 Y91.905667
+G1 X83.904667 Y92.244333
+G1 X84.963000 Y92.244333
+G1 X85.301667 Y91.905667
+G1 X85.640333 Y91.821000
+G1 X86.021333 Y91.863333
+G1 X86.360000 Y92.117333
+G1 X86.529333 Y92.413667
+G1 X86.529333 Y92.964000
+G1 X86.360000 Y93.260333
+G1 X86.021333 Y93.514333
+G1 X85.640333 Y93.556667
+G1 X85.301667 Y93.472000
+G1 X84.963000 Y93.133333
+G1 X83.904667 Y93.133333
+G1 X83.566000 Y93.472000
+G1 X83.269667 Y93.556667
+G1 X83.015667 Y93.556667
+G0 Z#100
+(polygon end, distance 11.13)
+(polygon 29)
+G0 X99.441000 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X99.441000 Y91.821000
+G1 X101.176667 Y91.821000
+G1 X101.176667 Y93.556667
+G1 X99.441000 Y93.556667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 30)
+G0 X115.400667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X115.146667 Y93.472000
+G1 X114.765667 Y93.091000
+G1 X114.681000 Y92.752333
+G1 X114.723333 Y92.371333
+G1 X114.977333 Y92.032667
+G1 X115.273667 Y91.863333
+G1 X115.824000 Y91.863333
+G1 X116.162667 Y92.075000
+G1 X116.374333 Y92.413667
+G1 X116.374333 Y92.964000
+G1 X116.162667 Y93.302667
+G1 X115.824000 Y93.514333
+G1 X115.400667 Y93.556667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 31)
+G0 X117.940667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.686667 Y93.472000
+G1 X117.305667 Y93.091000
+G1 X117.221000 Y92.752333
+G1 X117.263333 Y92.371333
+G1 X117.517333 Y92.032667
+G1 X117.813667 Y91.863333
+G1 X118.152333 Y91.821000
+G1 X118.491000 Y91.905667
+G1 X118.829667 Y92.244333
+G1 X119.888000 Y92.244333
+G1 X120.226667 Y91.905667
+G1 X120.565333 Y91.821000
+G1 X120.861667 Y91.863333
+G1 X124.756333 Y87.926333
+G1 X125.010333 Y87.799333
+G1 X140.843000 Y87.799333
+G1 X141.181667 Y87.460667
+G1 X141.520333 Y87.376000
+G1 X141.901333 Y87.418333
+G1 X142.240000 Y87.672333
+G1 X142.409333 Y87.968667
+G1 X142.409333 Y88.519000
+G1 X142.240000 Y88.815333
+G1 X141.901333 Y89.069333
+G1 X141.520333 Y89.111667
+G1 X141.181667 Y89.027000
+G1 X140.843000 Y88.688333
+G1 X125.222000 Y88.688333
+G1 X121.496667 Y92.456000
+G1 X121.454333 Y92.964000
+G1 X121.285000 Y93.260333
+G1 X120.946333 Y93.514333
+G1 X120.565333 Y93.556667
+G1 X120.226667 Y93.472000
+G1 X119.888000 Y93.133333
+G1 X118.829667 Y93.133333
+G1 X118.491000 Y93.472000
+G1 X118.194667 Y93.556667
+G1 X117.940667 Y93.556667
+G0 Z#100
+(polygon end, distance 57.32)
+(polygon 32)
+G0 X123.020667 Y93.556667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X122.766667 Y93.472000
+G1 X122.385667 Y93.091000
+G1 X122.301000 Y92.752333
+G1 X122.343333 Y92.371333
+G1 X122.597333 Y92.032667
+G1 X122.893667 Y91.863333
+G1 X123.444000 Y91.863333
+G1 X123.782667 Y92.075000
+G1 X123.994333 Y92.413667
+G1 X123.994333 Y92.964000
+G1 X123.782667 Y93.302667
+G1 X123.444000 Y93.514333
+G1 X123.020667 Y93.556667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 33)
+G0 X19.515667 Y92.921667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y92.837000
+G1 X18.880667 Y92.456000
+G1 X18.796000 Y92.117333
+G1 X18.838333 Y91.736333
+G1 X19.092333 Y91.397667
+G1 X19.388667 Y91.228333
+G1 X19.939000 Y91.228333
+G1 X20.277667 Y91.440000
+G1 X20.489333 Y91.778667
+G1 X20.489333 Y92.329000
+G1 X20.277667 Y92.667667
+G1 X19.939000 Y92.879333
+G1 X19.515667 Y92.921667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 34)
+G0 X129.286000 Y91.651667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X129.286000 Y89.916000
+G1 X131.021667 Y89.916000
+G1 X131.021667 Y91.651667
+G1 X129.286000 Y91.651667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 35)
+G0 X100.160667 Y91.016667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X99.906667 Y90.932000
+G1 X99.525667 Y90.551000
+G1 X99.441000 Y90.212333
+G1 X99.483333 Y89.831333
+G1 X99.737333 Y89.492667
+G1 X100.033667 Y89.323333
+G1 X100.541667 Y89.281000
+G1 X101.346000 Y88.519000
+G1 X101.515333 Y88.434333
+G1 X104.648000 Y88.434333
+G1 X104.986667 Y88.095667
+G1 X105.325333 Y88.011000
+G1 X105.706333 Y88.053333
+G1 X106.045000 Y88.307333
+G1 X106.214333 Y88.603667
+G1 X106.214333 Y89.154000
+G1 X106.045000 Y89.450333
+G1 X105.706333 Y89.704333
+G1 X105.325333 Y89.746667
+G1 X104.986667 Y89.662000
+G1 X104.648000 Y89.323333
+G1 X101.727000 Y89.323333
+G1 X101.176667 Y89.916000
+G1 X101.134333 Y90.424000
+G1 X100.922667 Y90.762667
+G1 X100.584000 Y90.974333
+G1 X100.160667 Y91.016667
+G0 Z#100
+(polygon end, distance 17.21)
+(polygon 36)
+G0 X14.435667 Y90.381667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y90.297000
+G1 X13.800667 Y89.916000
+G1 X13.716000 Y89.577333
+G1 X13.758333 Y89.196333
+G1 X14.012333 Y88.857667
+G1 X14.308667 Y88.688333
+G1 X14.859000 Y88.688333
+G1 X15.197667 Y88.900000
+G1 X15.409333 Y89.238667
+G1 X15.409333 Y89.789000
+G1 X15.197667 Y90.127667
+G1 X14.859000 Y90.339333
+G1 X14.435667 Y90.381667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 37)
+G0 X44.915667 Y90.127667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X44.661667 Y89.916000
+G1 X44.450000 Y89.662000
+G1 X44.450000 Y89.365667
+G1 X44.661667 Y89.111667
+G1 X44.915667 Y88.900000
+G1 X45.169667 Y88.900000
+G1 X45.423667 Y89.027000
+G1 X45.635333 Y89.281000
+G1 X77.385333 Y89.281000
+G1 X80.391000 Y86.233000
+G1 X80.391000 Y85.894333
+G1 X80.010000 Y85.682667
+G1 X79.798333 Y85.344000
+G1 X79.798333 Y84.793667
+G1 X80.010000 Y84.455000
+G1 X80.348667 Y84.243333
+G1 X80.899000 Y84.243333
+G1 X81.237667 Y84.455000
+G1 X81.449333 Y84.793667
+G1 X81.449333 Y85.344000
+G1 X81.237667 Y85.682667
+G1 X80.856667 Y85.894333
+G1 X80.856667 Y86.402333
+G1 X77.512333 Y89.746667
+G1 X45.635333 Y89.746667
+G1 X45.423667 Y90.000667
+G1 X45.169667 Y90.127667
+G1 X44.915667 Y90.127667
+G0 Z#100
+(polygon end, distance 81.76)
+(polygon 38)
+G0 X37.295667 Y88.857667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X37.041667 Y88.646000
+G1 X36.830000 Y88.392000
+G1 X36.830000 Y88.095667
+G1 X37.041667 Y87.841667
+G1 X37.295667 Y87.630000
+G1 X37.549667 Y87.630000
+G1 X37.803667 Y87.757000
+G1 X38.015333 Y88.011000
+G1 X51.943000 Y88.011000
+G1 X52.451000 Y87.545333
+G1 X52.451000 Y85.894333
+G1 X52.070000 Y85.682667
+G1 X51.858333 Y85.344000
+G1 X51.858333 Y84.793667
+G1 X52.070000 Y84.455000
+G1 X52.408667 Y84.243333
+G1 X52.959000 Y84.243333
+G1 X53.297667 Y84.455000
+G1 X53.509333 Y84.793667
+G1 X53.509333 Y85.344000
+G1 X53.297667 Y85.682667
+G1 X52.916667 Y85.894333
+G1 X52.916667 Y87.672333
+G1 X52.112333 Y88.476667
+G1 X38.015333 Y88.476667
+G1 X37.803667 Y88.730667
+G1 X37.549667 Y88.857667
+G1 X37.295667 Y88.857667
+G0 Z#100
+(polygon end, distance 41.56)
+(polygon 39)
+G0 X67.775667 Y88.222667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X67.521667 Y88.053333
+G1 X67.352333 Y87.841667
+G1 X55.160333 Y87.841667
+G1 X53.721000 Y86.402333
+G1 X53.721000 Y83.862333
+G1 X52.578000 Y82.761667
+G1 X46.905333 Y82.761667
+G1 X46.693667 Y83.015667
+G1 X46.439667 Y83.142667
+G1 X46.185667 Y83.142667
+G1 X45.931667 Y82.931000
+G1 X45.720000 Y82.677000
+G1 X45.720000 Y82.380667
+G1 X45.931667 Y82.126667
+G1 X46.185667 Y81.915000
+G1 X46.439667 Y81.915000
+G1 X46.693667 Y82.042000
+G1 X46.905333 Y82.296000
+G1 X52.747333 Y82.296000
+G1 X54.186667 Y83.735333
+G1 X54.186667 Y86.275333
+G1 X55.329667 Y87.376000
+G1 X67.352333 Y87.376000
+G1 X67.564000 Y87.122000
+G1 X67.818000 Y86.995000
+G1 X68.072000 Y86.995000
+G1 X68.326000 Y87.206667
+G1 X68.537667 Y87.460667
+G1 X68.537667 Y87.757000
+G1 X68.326000 Y88.011000
+G1 X68.072000 Y88.222667
+G1 X67.775667 Y88.222667
+G0 Z#100
+(polygon end, distance 54.77)
+(polygon 40)
+G0 X99.483333 Y87.926333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X99.060000 Y87.714667
+G1 X98.213333 Y86.825667
+G1 X98.086333 Y86.444667
+G1 X98.128667 Y84.793667
+G1 X98.382667 Y84.412667
+G1 X98.763667 Y84.158667
+G1 X99.314000 Y84.158667
+G1 X99.695000 Y84.412667
+G1 X99.949000 Y84.793667
+G1 X100.033667 Y85.979000
+G1 X103.081667 Y86.021333
+G1 X104.902000 Y84.243333
+G1 X105.283000 Y84.116333
+G1 X106.934000 Y84.158667
+G1 X107.315000 Y84.412667
+G1 X107.569000 Y84.793667
+G1 X107.569000 Y85.344000
+G1 X107.315000 Y85.725000
+G1 X106.934000 Y85.979000
+G1 X105.791000 Y86.021333
+G1 X104.013000 Y87.757000
+G1 X103.674333 Y87.926333
+G1 X99.483333 Y87.926333
+G0 Z#100
+(polygon end, distance 25.55)
+(polygon 41)
+G0 X14.435667 Y87.841667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y87.757000
+G1 X13.800667 Y87.376000
+G1 X13.716000 Y87.037333
+G1 X13.758333 Y86.656333
+G1 X14.012333 Y86.317667
+G1 X14.308667 Y86.148333
+G1 X14.859000 Y86.148333
+G1 X15.197667 Y86.360000
+G1 X15.409333 Y86.698667
+G1 X15.409333 Y87.249000
+G1 X15.197667 Y87.587667
+G1 X14.859000 Y87.799333
+G1 X14.435667 Y87.841667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 42)
+G0 X16.975667 Y87.841667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y87.757000
+G1 X16.340667 Y87.376000
+G1 X16.256000 Y87.037333
+G1 X16.298333 Y86.656333
+G1 X16.552333 Y86.317667
+G1 X16.848667 Y86.148333
+G1 X17.399000 Y86.148333
+G1 X17.737667 Y86.360000
+G1 X17.949333 Y86.698667
+G1 X17.949333 Y87.249000
+G1 X17.737667 Y87.587667
+G1 X17.399000 Y87.799333
+G1 X16.975667 Y87.841667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 43)
+G0 X75.988333 Y87.587667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X75.565000 Y87.418333
+G1 X75.311000 Y87.206667
+G1 X75.099333 Y86.952667
+G1 X64.092667 Y86.952667
+G1 X63.754000 Y87.164333
+G1 X63.203667 Y87.164333
+G1 X62.865000 Y86.952667
+G1 X62.653333 Y86.614000
+G1 X62.653333 Y86.063667
+G1 X62.865000 Y85.725000
+G1 X63.203667 Y85.513333
+G1 X63.754000 Y85.513333
+G1 X64.092667 Y85.725000
+G1 X75.099333 Y85.725000
+G1 X75.480333 Y85.301667
+G1 X75.861333 Y85.132333
+G1 X76.496333 Y85.132333
+G1 X76.877333 Y85.301667
+G1 X77.216000 Y85.640333
+G1 X77.385333 Y86.021333
+G1 X77.385333 Y86.656333
+G1 X77.216000 Y87.037333
+G1 X76.877333 Y87.376000
+G1 X76.496333 Y87.545333
+G1 X75.988333 Y87.587667
+G0 Z#100
+(polygon end, distance 32.57)
+(polygon 44)
+G0 X124.968000 Y87.418333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X124.714000 Y87.249000
+G1 X123.444000 Y85.936667
+G1 X122.301000 Y85.936667
+G1 X122.301000 Y84.201000
+G1 X124.036667 Y84.201000
+G1 X124.036667 Y85.344000
+G1 X125.264333 Y86.529333
+G1 X129.370667 Y86.529333
+G1 X130.556000 Y85.301667
+G1 X130.556000 Y84.201000
+G1 X132.291667 Y84.201000
+G1 X132.291667 Y84.624333
+G1 X138.938000 Y84.624333
+G1 X139.276667 Y84.285667
+G1 X139.615333 Y84.201000
+G1 X139.996333 Y84.243333
+G1 X140.335000 Y84.497333
+G1 X140.504333 Y84.793667
+G1 X140.504333 Y85.344000
+G1 X140.335000 Y85.640333
+G1 X139.996333 Y85.894333
+G1 X139.615333 Y85.936667
+G1 X139.276667 Y85.852000
+G1 X138.938000 Y85.513333
+G1 X132.291667 Y85.513333
+G1 X132.291667 Y85.936667
+G1 X131.148667 Y85.936667
+G1 X129.836333 Y87.291333
+G1 X129.582333 Y87.418333
+G1 X124.968000 Y87.418333
+G0 Z#100
+(polygon end, distance 44.81)
+(polygon 45)
+G0 X160.993667 Y86.825667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X160.612667 Y86.698667
+G1 X160.189333 Y86.487000
+G1 X159.723667 Y86.021333
+G1 X159.512000 Y85.598000
+G1 X159.385000 Y85.174667
+G1 X159.385000 Y84.709000
+G1 X159.512000 Y84.285667
+G1 X159.723667 Y83.862333
+G1 X160.189333 Y83.396667
+G1 X160.612667 Y83.185000
+G1 X161.036000 Y83.058000
+G1 X161.501667 Y83.058000
+G1 X161.925000 Y83.185000
+G1 X162.348333 Y83.396667
+G1 X162.814000 Y83.862333
+G1 X163.025667 Y84.285667
+G1 X163.152667 Y84.709000
+G1 X163.152667 Y85.174667
+G1 X163.025667 Y85.598000
+G1 X162.814000 Y86.021333
+G1 X162.348333 Y86.487000
+G1 X161.925000 Y86.698667
+G1 X161.501667 Y86.825667
+G1 X160.993667 Y86.825667
+G0 Z#100
+(polygon end, distance 11.82)
+(polygon 46)
+G0 X128.693333 Y86.021333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X128.270000 Y85.809667
+G1 X128.058333 Y85.513333
+G1 X127.931333 Y85.217000
+G1 X127.931333 Y83.608333
+G1 X128.100667 Y83.269667
+G1 X134.366000 Y76.962000
+G1 X134.366000 Y76.581000
+G1 X135.001000 Y76.538667
+G1 X135.466667 Y76.538667
+G1 X136.101667 Y76.581000
+G1 X136.144000 Y77.216000
+G1 X136.144000 Y77.681667
+G1 X136.101667 Y78.316667
+G1 X135.678333 Y78.316667
+G1 X129.836333 Y84.201000
+G1 X129.794000 Y85.344000
+G1 X129.540000 Y85.725000
+G1 X129.159000 Y85.979000
+G1 X128.693333 Y86.021333
+G0 Z#100
+(polygon end, distance 27.14)
+(polygon 47)
+G0 X24.595667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X24.341667 Y85.852000
+G1 X23.960667 Y85.471000
+G1 X23.876000 Y85.132333
+G1 X23.918333 Y84.751333
+G1 X24.172333 Y84.412667
+G1 X24.468667 Y84.243333
+G1 X25.019000 Y84.243333
+G1 X25.357667 Y84.455000
+G1 X25.569333 Y84.793667
+G1 X25.569333 Y85.344000
+G1 X25.357667 Y85.682667
+G1 X25.019000 Y85.894333
+G1 X24.595667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 48)
+G0 X27.135667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X26.881667 Y85.852000
+G1 X26.500667 Y85.471000
+G1 X26.416000 Y85.132333
+G1 X26.458333 Y84.751333
+G1 X26.712333 Y84.412667
+G1 X27.008667 Y84.243333
+G1 X27.559000 Y84.243333
+G1 X27.897667 Y84.455000
+G1 X28.109333 Y84.793667
+G1 X28.109333 Y85.344000
+G1 X27.897667 Y85.682667
+G1 X27.559000 Y85.894333
+G1 X27.135667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 49)
+G0 X49.995667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X49.741667 Y85.852000
+G1 X49.360667 Y85.471000
+G1 X49.276000 Y85.132333
+G1 X49.318333 Y84.751333
+G1 X49.572333 Y84.412667
+G1 X49.868667 Y84.243333
+G1 X50.419000 Y84.243333
+G1 X50.757667 Y84.455000
+G1 X50.969333 Y84.793667
+G1 X50.969333 Y85.344000
+G1 X50.757667 Y85.682667
+G1 X50.419000 Y85.894333
+G1 X49.995667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 50)
+G0 X55.075667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X54.821667 Y85.852000
+G1 X54.440667 Y85.471000
+G1 X54.356000 Y85.132333
+G1 X54.398333 Y84.751333
+G1 X54.652333 Y84.412667
+G1 X54.948667 Y84.243333
+G1 X55.499000 Y84.243333
+G1 X55.837667 Y84.455000
+G1 X56.049333 Y84.793667
+G1 X56.049333 Y85.344000
+G1 X55.837667 Y85.682667
+G1 X55.499000 Y85.894333
+G1 X55.075667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 51)
+G0 X56.896000 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X56.896000 Y84.201000
+G1 X58.631667 Y84.201000
+G1 X58.631667 Y85.936667
+G1 X56.896000 Y85.936667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 52)
+G0 X77.935667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X77.681667 Y85.852000
+G1 X77.300667 Y85.471000
+G1 X77.216000 Y85.132333
+G1 X77.258333 Y84.751333
+G1 X77.512333 Y84.412667
+G1 X77.808667 Y84.243333
+G1 X78.359000 Y84.243333
+G1 X78.697667 Y84.455000
+G1 X78.909333 Y84.793667
+G1 X78.909333 Y85.344000
+G1 X78.697667 Y85.682667
+G1 X78.359000 Y85.894333
+G1 X77.935667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 53)
+G0 X84.836000 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X84.836000 Y84.201000
+G1 X86.571667 Y84.201000
+G1 X86.571667 Y85.936667
+G1 X84.836000 Y85.936667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 54)
+G0 X100.711000 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X100.711000 Y84.201000
+G1 X102.446667 Y84.201000
+G1 X102.446667 Y85.936667
+G1 X100.711000 Y85.936667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 55)
+G0 X108.331000 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X108.331000 Y84.201000
+G1 X110.066667 Y84.201000
+G1 X110.066667 Y85.936667
+G1 X108.331000 Y85.936667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 56)
+G0 X115.400667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X115.146667 Y85.852000
+G1 X114.765667 Y85.471000
+G1 X114.681000 Y85.132333
+G1 X114.723333 Y84.751333
+G1 X114.977333 Y84.412667
+G1 X115.273667 Y84.243333
+G1 X115.824000 Y84.243333
+G1 X116.162667 Y84.455000
+G1 X116.374333 Y84.793667
+G1 X116.374333 Y85.344000
+G1 X116.162667 Y85.682667
+G1 X115.824000 Y85.894333
+G1 X115.400667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 57)
+G0 X117.940667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.686667 Y85.852000
+G1 X117.305667 Y85.471000
+G1 X117.221000 Y85.132333
+G1 X117.263333 Y84.751333
+G1 X117.517333 Y84.412667
+G1 X117.813667 Y84.243333
+G1 X118.364000 Y84.243333
+G1 X118.702667 Y84.455000
+G1 X118.914333 Y84.793667
+G1 X118.914333 Y85.344000
+G1 X118.702667 Y85.682667
+G1 X118.364000 Y85.894333
+G1 X117.940667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 58)
+G0 X120.480667 Y85.936667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X120.226667 Y85.852000
+G1 X119.845667 Y85.471000
+G1 X119.761000 Y85.132333
+G1 X119.803333 Y84.751333
+G1 X120.057333 Y84.412667
+G1 X120.353667 Y84.243333
+G1 X120.904000 Y84.243333
+G1 X121.242667 Y84.455000
+G1 X121.454333 Y84.793667
+G1 X121.454333 Y85.344000
+G1 X121.242667 Y85.682667
+G1 X120.904000 Y85.894333
+G1 X120.480667 Y85.936667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 59)
+G0 X14.435667 Y85.301667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y85.217000
+G1 X13.800667 Y84.836000
+G1 X13.716000 Y84.497333
+G1 X13.758333 Y84.116333
+G1 X14.012333 Y83.777667
+G1 X14.308667 Y83.608333
+G1 X14.859000 Y83.608333
+G1 X15.197667 Y83.820000
+G1 X15.409333 Y84.158667
+G1 X15.409333 Y84.709000
+G1 X15.197667 Y85.047667
+G1 X14.859000 Y85.259333
+G1 X14.435667 Y85.301667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 60)
+G0 X16.975667 Y85.301667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y85.217000
+G1 X16.340667 Y84.836000
+G1 X16.256000 Y84.497333
+G1 X16.298333 Y84.116333
+G1 X16.552333 Y83.777667
+G1 X16.848667 Y83.608333
+G1 X17.399000 Y83.608333
+G1 X17.737667 Y83.820000
+G1 X17.949333 Y84.158667
+G1 X17.949333 Y84.709000
+G1 X17.737667 Y85.047667
+G1 X17.399000 Y85.259333
+G1 X16.975667 Y85.301667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 61)
+G0 X19.515667 Y85.301667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y85.217000
+G1 X18.880667 Y84.836000
+G1 X18.796000 Y84.497333
+G1 X18.838333 Y84.116333
+G1 X19.092333 Y83.777667
+G1 X19.388667 Y83.608333
+G1 X19.939000 Y83.608333
+G1 X20.277667 Y83.820000
+G1 X20.489333 Y84.158667
+G1 X20.489333 Y84.709000
+G1 X20.277667 Y85.047667
+G1 X19.939000 Y85.259333
+G1 X19.515667 Y85.301667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 62)
+G0 X62.780333 Y85.301667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X60.833000 Y83.396667
+G1 X56.430333 Y83.396667
+G1 X53.848000 Y80.856667
+G1 X32.935333 Y80.856667
+G1 X32.131000 Y80.052333
+G1 X32.131000 Y79.544333
+G1 X31.750000 Y79.332667
+G1 X31.538333 Y78.994000
+G1 X31.538333 Y78.443667
+G1 X31.750000 Y78.105000
+G1 X32.088667 Y77.893333
+G1 X32.639000 Y77.893333
+G1 X32.977667 Y78.105000
+G1 X33.189333 Y78.443667
+G1 X33.189333 Y78.994000
+G1 X32.977667 Y79.332667
+G1 X32.596667 Y79.544333
+G1 X32.596667 Y79.925333
+G1 X33.104667 Y80.391000
+G1 X54.017333 Y80.391000
+G1 X56.599667 Y82.931000
+G1 X61.002333 Y82.931000
+G1 X62.949667 Y84.836000
+G1 X71.035333 Y84.836000
+G1 X71.501000 Y84.328000
+G1 X71.501000 Y82.931000
+G1 X73.236667 Y82.931000
+G1 X73.236667 Y83.566000
+G1 X74.803000 Y83.566000
+G1 X75.480333 Y82.931000
+G1 X83.862333 Y82.931000
+G1 X84.074000 Y82.677000
+G1 X84.328000 Y82.550000
+G1 X84.582000 Y82.550000
+G1 X84.836000 Y82.761667
+G1 X85.047667 Y83.015667
+G1 X85.047667 Y83.312000
+G1 X84.836000 Y83.566000
+G1 X84.582000 Y83.777667
+G1 X84.328000 Y83.777667
+G1 X84.074000 Y83.650667
+G1 X83.862333 Y83.396667
+G1 X75.649667 Y83.396667
+G1 X74.972333 Y84.031667
+G1 X73.236667 Y84.031667
+G1 X73.236667 Y84.666667
+G1 X71.839667 Y84.666667
+G1 X71.162333 Y85.301667
+G1 X62.780333 Y85.301667
+G0 Z#100
+(polygon end, distance 119.95)
+(polygon 63)
+G0 X36.576000 Y84.666667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X36.576000 Y82.931000
+G1 X38.311667 Y82.931000
+G1 X38.311667 Y84.666667
+G1 X36.576000 Y84.666667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 64)
+G0 X40.386000 Y84.666667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X40.386000 Y82.931000
+G1 X42.121667 Y82.931000
+G1 X42.121667 Y84.666667
+G1 X40.386000 Y84.666667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 65)
+G0 X44.915667 Y84.666667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X44.661667 Y84.582000
+G1 X44.280667 Y84.201000
+G1 X44.196000 Y83.862333
+G1 X44.238333 Y83.481333
+G1 X44.492333 Y83.142667
+G1 X44.788667 Y82.973333
+G1 X45.339000 Y82.973333
+G1 X45.677667 Y83.185000
+G1 X45.889333 Y83.523667
+G1 X45.889333 Y84.074000
+G1 X45.677667 Y84.412667
+G1 X45.339000 Y84.624333
+G1 X44.915667 Y84.666667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 66)
+G0 X63.330667 Y84.666667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X63.076667 Y84.582000
+G1 X62.695667 Y84.201000
+G1 X62.611000 Y83.862333
+G1 X62.653333 Y83.481333
+G1 X62.907333 Y83.142667
+G1 X63.203667 Y82.973333
+G1 X63.754000 Y82.973333
+G1 X64.092667 Y83.185000
+G1 X64.304333 Y83.566000
+G1 X67.056000 Y83.566000
+G1 X67.056000 Y82.931000
+G1 X68.791667 Y82.931000
+G1 X68.791667 Y84.666667
+G1 X67.056000 Y84.666667
+G1 X67.056000 Y84.031667
+G1 X64.304333 Y84.031667
+G1 X64.092667 Y84.412667
+G1 X63.754000 Y84.624333
+G1 X63.330667 Y84.666667
+G0 Z#100
+(polygon end, distance 16.93)
+(polygon 67)
+G0 X92.540667 Y84.666667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X92.329000 Y84.582000
+G1 X92.032667 Y84.370333
+G1 X91.863333 Y84.074000
+G1 X91.821000 Y83.735333
+G1 X91.905667 Y83.396667
+G1 X92.244333 Y83.058000
+G1 X92.244333 Y82.338333
+G1 X61.044667 Y82.338333
+G1 X60.706000 Y82.677000
+G1 X60.367333 Y82.761667
+G1 X59.986333 Y82.719333
+G1 X59.647667 Y82.465333
+G1 X59.478333 Y82.169000
+G1 X59.478333 Y81.618667
+G1 X59.647667 Y81.322333
+G1 X59.986333 Y81.068333
+G1 X60.367333 Y81.026000
+G1 X60.706000 Y81.110667
+G1 X61.044667 Y81.449333
+G1 X85.259333 Y81.449333
+G1 X85.259333 Y79.459667
+G1 X84.920667 Y79.121000
+G1 X84.836000 Y78.782333
+G1 X84.878333 Y78.401333
+G1 X85.132333 Y78.062667
+G1 X85.428667 Y77.893333
+G1 X85.979000 Y77.893333
+G1 X86.275333 Y78.062667
+G1 X86.529333 Y78.401333
+G1 X86.571667 Y78.782333
+G1 X86.487000 Y79.121000
+G1 X86.148333 Y79.459667
+G1 X86.148333 Y81.449333
+G1 X102.743000 Y81.449333
+G1 X103.081667 Y81.110667
+G1 X103.420333 Y81.026000
+G1 X103.801333 Y81.068333
+G1 X104.140000 Y81.322333
+G1 X104.182333 Y81.449333
+G1 X108.458000 Y81.449333
+G1 X108.796667 Y81.110667
+G1 X109.135333 Y81.026000
+G1 X109.516333 Y81.068333
+G1 X109.855000 Y81.322333
+G1 X110.024333 Y81.618667
+G1 X110.024333 Y82.169000
+G1 X109.855000 Y82.465333
+G1 X109.516333 Y82.719333
+G1 X109.135333 Y82.761667
+G1 X108.796667 Y82.677000
+G1 X108.458000 Y82.338333
+G1 X104.182333 Y82.338333
+G1 X104.140000 Y82.465333
+G1 X103.801333 Y82.719333
+G1 X103.420333 Y82.761667
+G1 X103.081667 Y82.677000
+G1 X102.743000 Y82.338333
+G1 X93.133333 Y82.338333
+G1 X93.133333 Y83.058000
+G1 X93.472000 Y83.396667
+G1 X93.556667 Y83.735333
+G1 X93.514333 Y84.116333
+G1 X93.260333 Y84.455000
+G1 X92.964000 Y84.624333
+G1 X92.540667 Y84.666667
+G0 Z#100
+(polygon end, distance 117.14)
+(polygon 68)
+G0 X14.435667 Y82.761667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y82.677000
+G1 X13.800667 Y82.296000
+G1 X13.716000 Y81.999667
+G1 X13.716000 Y81.745667
+G1 X13.843000 Y81.491667
+G1 X13.081000 Y80.687333
+G1 X13.081000 Y63.415333
+G1 X13.885333 Y62.611000
+G1 X20.193000 Y62.611000
+G1 X22.775333 Y60.071000
+G1 X38.142333 Y60.071000
+G1 X38.354000 Y59.817000
+G1 X38.608000 Y59.690000
+G1 X38.862000 Y59.690000
+G1 X39.116000 Y59.901667
+G1 X39.327667 Y60.155667
+G1 X39.327667 Y60.452000
+G1 X39.116000 Y60.706000
+G1 X38.862000 Y60.917667
+G1 X38.608000 Y60.917667
+G1 X38.354000 Y60.790667
+G1 X38.142333 Y60.536667
+G1 X22.944667 Y60.536667
+G1 X20.362333 Y63.076667
+G1 X14.054667 Y63.076667
+G1 X13.546667 Y63.542333
+G1 X13.546667 Y80.518000
+G1 X14.139333 Y81.153000
+G1 X14.478000 Y81.026000
+G1 X14.859000 Y81.068333
+G1 X15.197667 Y81.280000
+G1 X15.409333 Y81.618667
+G1 X15.409333 Y82.169000
+G1 X15.197667 Y82.507667
+G1 X14.859000 Y82.719333
+G1 X14.435667 Y82.761667
+G0 Z#100
+(polygon end, distance 96.80)
+(polygon 69)
+G0 X16.975667 Y82.761667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y82.677000
+G1 X16.340667 Y82.296000
+G1 X16.256000 Y81.957333
+G1 X16.298333 Y81.618667
+G1 X16.467667 Y81.322333
+G1 X16.764000 Y81.110667
+G1 X16.764000 Y80.137000
+G1 X16.467667 Y79.925333
+G1 X16.298333 Y79.629000
+G1 X16.256000 Y79.290333
+G1 X16.340667 Y78.951667
+G1 X16.764000 Y78.528333
+G1 X16.764000 Y78.443667
+G1 X15.113000 Y78.443667
+G1 X14.181667 Y77.554667
+G1 X13.800667 Y77.216000
+G1 X13.716000 Y76.877333
+G1 X13.758333 Y76.496333
+G1 X14.012333 Y76.157667
+G1 X14.308667 Y75.988333
+G1 X14.647333 Y75.946000
+G1 X14.986000 Y76.030667
+G1 X15.367000 Y76.411667
+G1 X15.451667 Y76.750333
+G1 X15.409333 Y77.131333
+G1 X15.113000 Y77.512333
+G1 X15.367000 Y77.724000
+G1 X20.193000 Y77.724000
+G1 X24.511000 Y73.363667
+G1 X24.426333 Y73.109667
+G1 X24.468667 Y72.728667
+G1 X24.722667 Y72.347667
+G1 X25.103667 Y72.093667
+G1 X39.031333 Y72.051333
+G1 X39.073667 Y70.823667
+G1 X39.327667 Y70.442667
+G1 X39.708667 Y70.188667
+G1 X40.259000 Y70.188667
+G1 X40.640000 Y70.442667
+G1 X40.894000 Y70.823667
+G1 X40.936333 Y72.051333
+G1 X59.266667 Y72.051333
+G1 X59.774667 Y71.585667
+G1 X60.113333 Y71.416333
+G1 X75.141667 Y71.416333
+G1 X76.327000 Y70.273333
+G1 X76.708000 Y70.146333
+G1 X78.359000 Y70.188667
+G1 X78.740000 Y70.442667
+G1 X78.994000 Y70.823667
+G1 X78.994000 Y71.374000
+G1 X78.740000 Y71.755000
+G1 X78.359000 Y72.009000
+G1 X77.216000 Y72.051333
+G1 X76.073000 Y73.152000
+G1 X75.734333 Y73.321333
+G1 X60.706000 Y73.321333
+G1 X60.198000 Y73.787000
+G1 X59.859333 Y73.956333
+G1 X56.176333 Y73.956333
+G1 X56.134000 Y78.994000
+G1 X55.880000 Y79.375000
+G1 X55.499000 Y79.629000
+G1 X54.948667 Y79.629000
+G1 X54.567667 Y79.375000
+G1 X54.313667 Y78.994000
+G1 X54.271333 Y73.956333
+G1 X25.230667 Y73.956333
+G1 X25.019000 Y73.871667
+G1 X20.404667 Y78.443667
+G1 X17.483667 Y78.443667
+G1 X17.483667 Y78.528333
+G1 X17.907000 Y78.951667
+G1 X17.991667 Y79.290333
+G1 X17.949333 Y79.629000
+G1 X17.780000 Y79.925333
+G1 X17.483667 Y80.137000
+G1 X17.483667 Y81.068333
+G1 X17.907000 Y81.491667
+G1 X17.991667 Y81.830333
+G1 X17.949333 Y82.211333
+G1 X17.695333 Y82.550000
+G1 X17.399000 Y82.719333
+G1 X16.975667 Y82.761667
+G0 Z#100
+(polygon end, distance 164.34)
+(polygon 70)
+G0 X19.515667 Y82.761667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y82.677000
+G1 X18.880667 Y82.296000
+G1 X18.796000 Y81.957333
+G1 X18.838333 Y81.576333
+G1 X19.092333 Y81.237667
+G1 X19.388667 Y81.068333
+G1 X19.939000 Y81.068333
+G1 X20.277667 Y81.280000
+G1 X20.489333 Y81.618667
+G1 X20.489333 Y82.169000
+G1 X20.277667 Y82.507667
+G1 X19.939000 Y82.719333
+G1 X19.515667 Y82.761667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 71)
+G0 X24.595667 Y82.507667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X24.341667 Y82.296000
+G1 X24.130000 Y82.042000
+G1 X24.130000 Y81.745667
+G1 X24.341667 Y81.491667
+G1 X24.595667 Y81.280000
+G1 X24.849667 Y81.280000
+G1 X25.103667 Y81.407000
+G1 X25.315333 Y81.661000
+G1 X44.492333 Y81.661000
+G1 X44.704000 Y81.407000
+G1 X44.958000 Y81.280000
+G1 X45.212000 Y81.280000
+G1 X45.466000 Y81.491667
+G1 X45.677667 Y81.745667
+G1 X45.677667 Y82.042000
+G1 X45.466000 Y82.296000
+G1 X45.212000 Y82.507667
+G1 X44.958000 Y82.507667
+G1 X44.704000 Y82.380667
+G1 X44.492333 Y82.126667
+G1 X25.315333 Y82.126667
+G1 X25.103667 Y82.380667
+G1 X24.849667 Y82.507667
+G1 X24.595667 Y82.507667
+G0 Z#100
+(polygon end, distance 45.07)
+(polygon 72)
+G0 X86.825667 Y81.237667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X86.571667 Y81.026000
+G1 X86.360000 Y80.772000
+G1 X86.360000 Y80.475667
+G1 X86.571667 Y80.221667
+G1 X86.825667 Y80.010000
+G1 X87.079667 Y80.010000
+G1 X87.333667 Y80.137000
+G1 X87.545333 Y80.391000
+G1 X101.007333 Y80.391000
+G1 X101.219000 Y80.137000
+G1 X101.473000 Y80.010000
+G1 X101.727000 Y80.010000
+G1 X101.981000 Y80.221667
+G1 X102.192667 Y80.475667
+G1 X102.192667 Y80.772000
+G1 X101.981000 Y81.026000
+G1 X101.727000 Y81.237667
+G1 X101.473000 Y81.237667
+G1 X101.219000 Y81.110667
+G1 X101.007333 Y80.856667
+G1 X87.545333 Y80.856667
+G1 X87.333667 Y81.110667
+G1 X87.079667 Y81.237667
+G1 X86.825667 Y81.237667
+G0 Z#100
+(polygon end, distance 33.64)
+(polygon 73)
+G0 X67.056000 Y80.856667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X67.056000 Y79.121000
+G1 X68.791667 Y79.121000
+G1 X68.791667 Y79.756000
+G1 X69.723000 Y79.756000
+G1 X71.670333 Y77.851000
+G1 X74.803000 Y77.851000
+G1 X77.385333 Y75.311000
+G1 X83.862333 Y75.311000
+G1 X84.074000 Y75.057000
+G1 X84.328000 Y74.930000
+G1 X84.582000 Y74.930000
+G1 X84.836000 Y75.141667
+G1 X85.047667 Y75.395667
+G1 X85.047667 Y75.692000
+G1 X84.836000 Y75.946000
+G1 X84.582000 Y76.157667
+G1 X84.328000 Y76.157667
+G1 X84.074000 Y76.030667
+G1 X83.862333 Y75.776667
+G1 X77.554667 Y75.776667
+G1 X74.972333 Y78.316667
+G1 X71.839667 Y78.316667
+G1 X69.892333 Y80.221667
+G1 X68.791667 Y80.221667
+G1 X68.791667 Y80.856667
+G1 X67.056000 Y80.856667
+G0 Z#100
+(polygon end, distance 43.61)
+(polygon 74)
+G0 X71.501000 Y80.856667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X71.501000 Y79.121000
+G1 X73.236667 Y79.121000
+G1 X73.236667 Y79.756000
+G1 X74.845333 Y79.756000
+G1 X77.851000 Y76.708000
+G1 X77.851000 Y76.581000
+G1 X107.357333 Y76.581000
+G1 X107.569000 Y76.327000
+G1 X107.823000 Y76.200000
+G1 X108.077000 Y76.200000
+G1 X108.331000 Y76.411667
+G1 X108.542667 Y76.665667
+G1 X108.542667 Y76.962000
+G1 X108.331000 Y77.216000
+G1 X108.077000 Y77.427667
+G1 X107.823000 Y77.427667
+G1 X107.569000 Y77.300667
+G1 X107.357333 Y77.046667
+G1 X78.189667 Y77.046667
+G1 X74.972333 Y80.221667
+G1 X73.236667 Y80.221667
+G1 X73.236667 Y80.856667
+G1 X71.501000 Y80.856667
+G0 Z#100
+(polygon end, distance 80.78)
+(polygon 75)
+G0 X14.435667 Y80.221667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y80.137000
+G1 X13.800667 Y79.756000
+G1 X13.716000 Y79.417333
+G1 X13.758333 Y79.036333
+G1 X14.012333 Y78.697667
+G1 X14.308667 Y78.528333
+G1 X14.859000 Y78.528333
+G1 X15.197667 Y78.740000
+G1 X15.409333 Y79.078667
+G1 X15.409333 Y79.629000
+G1 X15.197667 Y79.967667
+G1 X14.859000 Y80.179333
+G1 X14.435667 Y80.221667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 76)
+G0 X19.515667 Y80.221667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y80.137000
+G1 X18.880667 Y79.756000
+G1 X18.796000 Y79.417333
+G1 X18.838333 Y79.036333
+G1 X19.092333 Y78.697667
+G1 X19.388667 Y78.528333
+G1 X19.939000 Y78.528333
+G1 X20.277667 Y78.740000
+G1 X20.489333 Y79.078667
+G1 X20.489333 Y79.629000
+G1 X20.277667 Y79.967667
+G1 X19.939000 Y80.179333
+G1 X19.515667 Y80.221667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 77)
+G0 X54.525333 Y80.221667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X53.721000 Y79.417333
+G1 X53.721000 Y77.554667
+G1 X53.255333 Y77.046667
+G1 X43.264667 Y77.046667
+G1 X42.756667 Y77.512333
+G1 X42.756667 Y77.893333
+G1 X43.137667 Y78.105000
+G1 X43.349333 Y78.443667
+G1 X43.349333 Y78.994000
+G1 X43.137667 Y79.332667
+G1 X42.799000 Y79.544333
+G1 X42.248667 Y79.544333
+G1 X41.910000 Y79.332667
+G1 X41.698333 Y78.994000
+G1 X41.698333 Y78.443667
+G1 X41.910000 Y78.105000
+G1 X42.291000 Y77.893333
+G1 X42.291000 Y77.385333
+G1 X43.095333 Y76.581000
+G1 X53.382333 Y76.581000
+G1 X54.186667 Y77.385333
+G1 X54.186667 Y79.290333
+G1 X54.694667 Y79.756000
+G1 X64.008000 Y79.756000
+G1 X65.955333 Y77.851000
+G1 X69.723000 Y77.851000
+G1 X71.035333 Y76.581000
+G1 X74.168000 Y76.581000
+G1 X76.750333 Y74.041000
+G1 X90.212333 Y74.041000
+G1 X90.424000 Y73.787000
+G1 X90.678000 Y73.660000
+G1 X90.932000 Y73.660000
+G1 X91.186000 Y73.871667
+G1 X91.397667 Y74.125667
+G1 X91.397667 Y74.422000
+G1 X91.186000 Y74.676000
+G1 X90.932000 Y74.887667
+G1 X90.678000 Y74.887667
+G1 X90.424000 Y74.760667
+G1 X90.212333 Y74.506667
+G1 X76.919667 Y74.506667
+G1 X74.337333 Y77.046667
+G1 X71.204667 Y77.046667
+G1 X69.892333 Y78.316667
+G1 X66.124667 Y78.316667
+G1 X64.177333 Y80.221667
+G1 X54.525333 Y80.221667
+G0 Z#100
+(polygon end, distance 114.56)
+(polygon 78)
+G0 X24.595667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X24.341667 Y79.502000
+G1 X23.960667 Y79.121000
+G1 X23.876000 Y78.782333
+G1 X23.918333 Y78.401333
+G1 X24.172333 Y78.062667
+G1 X24.468667 Y77.893333
+G1 X25.019000 Y77.893333
+G1 X25.357667 Y78.105000
+G1 X25.569333 Y78.443667
+G1 X25.569333 Y78.994000
+G1 X25.357667 Y79.332667
+G1 X25.019000 Y79.544333
+G1 X24.595667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 79)
+G0 X27.135667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X26.881667 Y79.502000
+G1 X26.500667 Y79.121000
+G1 X26.416000 Y78.782333
+G1 X26.458333 Y78.401333
+G1 X26.712333 Y78.062667
+G1 X27.008667 Y77.893333
+G1 X27.559000 Y77.893333
+G1 X27.897667 Y78.105000
+G1 X28.109333 Y78.443667
+G1 X28.109333 Y78.994000
+G1 X27.897667 Y79.332667
+G1 X27.559000 Y79.544333
+G1 X27.135667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 80)
+G0 X29.675667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X29.421667 Y79.502000
+G1 X29.040667 Y79.121000
+G1 X28.956000 Y78.782333
+G1 X28.998333 Y78.401333
+G1 X29.252333 Y78.062667
+G1 X29.548667 Y77.893333
+G1 X30.099000 Y77.893333
+G1 X30.437667 Y78.105000
+G1 X30.649333 Y78.443667
+G1 X30.649333 Y78.994000
+G1 X30.437667 Y79.332667
+G1 X30.099000 Y79.544333
+G1 X29.675667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 81)
+G0 X34.755667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X34.501667 Y79.502000
+G1 X34.120667 Y79.121000
+G1 X34.036000 Y78.782333
+G1 X34.078333 Y78.401333
+G1 X34.332333 Y78.062667
+G1 X34.628667 Y77.893333
+G1 X35.179000 Y77.893333
+G1 X35.517667 Y78.105000
+G1 X35.729333 Y78.443667
+G1 X35.729333 Y78.994000
+G1 X35.517667 Y79.332667
+G1 X35.179000 Y79.544333
+G1 X34.755667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 82)
+G0 X37.295667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X37.084000 Y79.502000
+G1 X36.787667 Y79.290333
+G1 X36.618333 Y78.994000
+G1 X36.576000 Y78.655333
+G1 X36.660667 Y78.316667
+G1 X36.999333 Y77.978000
+G1 X36.999333 Y77.597000
+G1 X36.618333 Y77.258333
+G1 X24.849667 Y77.258333
+G1 X24.511000 Y77.597000
+G1 X24.172333 Y77.681667
+G1 X23.791333 Y77.639333
+G1 X23.452667 Y77.385333
+G1 X23.283333 Y77.089000
+G1 X23.283333 Y76.538667
+G1 X23.452667 Y76.242333
+G1 X23.791333 Y75.988333
+G1 X24.172333 Y75.946000
+G1 X24.511000 Y76.030667
+G1 X24.849667 Y76.369333
+G1 X36.872333 Y76.369333
+G1 X37.041667 Y76.454000
+G1 X37.761333 Y77.131333
+G1 X37.888333 Y77.385333
+G1 X37.888333 Y77.978000
+G1 X38.227000 Y78.316667
+G1 X38.311667 Y78.655333
+G1 X38.269333 Y79.036333
+G1 X38.015333 Y79.375000
+G1 X37.719000 Y79.544333
+G1 X37.295667 Y79.586667
+G0 Z#100
+(polygon end, distance 35.74)
+(polygon 83)
+G0 X39.835667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X39.581667 Y79.502000
+G1 X39.200667 Y79.121000
+G1 X39.116000 Y78.782333
+G1 X39.158333 Y78.401333
+G1 X39.412333 Y78.062667
+G1 X39.708667 Y77.893333
+G1 X40.259000 Y77.893333
+G1 X40.597667 Y78.105000
+G1 X40.809333 Y78.443667
+G1 X40.809333 Y78.994000
+G1 X40.597667 Y79.332667
+G1 X40.259000 Y79.544333
+G1 X39.835667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 84)
+G0 X44.915667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X44.661667 Y79.502000
+G1 X44.280667 Y79.121000
+G1 X44.196000 Y78.782333
+G1 X44.238333 Y78.401333
+G1 X44.492333 Y78.062667
+G1 X44.788667 Y77.893333
+G1 X45.339000 Y77.893333
+G1 X45.677667 Y78.105000
+G1 X45.889333 Y78.443667
+G1 X45.889333 Y78.994000
+G1 X45.677667 Y79.332667
+G1 X45.339000 Y79.544333
+G1 X44.915667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 85)
+G0 X47.455667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X47.201667 Y79.502000
+G1 X46.820667 Y79.121000
+G1 X46.736000 Y78.782333
+G1 X46.778333 Y78.401333
+G1 X47.032333 Y78.062667
+G1 X47.328667 Y77.893333
+G1 X47.879000 Y77.893333
+G1 X48.217667 Y78.105000
+G1 X48.429333 Y78.443667
+G1 X48.429333 Y78.994000
+G1 X48.217667 Y79.332667
+G1 X47.879000 Y79.544333
+G1 X47.455667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 86)
+G0 X49.995667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X49.741667 Y79.502000
+G1 X49.360667 Y79.121000
+G1 X49.276000 Y78.782333
+G1 X49.318333 Y78.401333
+G1 X49.572333 Y78.062667
+G1 X49.868667 Y77.893333
+G1 X50.419000 Y77.893333
+G1 X50.757667 Y78.105000
+G1 X50.969333 Y78.443667
+G1 X50.969333 Y78.994000
+G1 X50.757667 Y79.332667
+G1 X50.419000 Y79.544333
+G1 X49.995667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 87)
+G0 X52.535667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X52.281667 Y79.502000
+G1 X51.900667 Y79.121000
+G1 X51.816000 Y78.782333
+G1 X51.858333 Y78.401333
+G1 X52.112333 Y78.062667
+G1 X52.408667 Y77.893333
+G1 X52.959000 Y77.893333
+G1 X53.297667 Y78.105000
+G1 X53.509333 Y78.443667
+G1 X53.509333 Y78.994000
+G1 X53.297667 Y79.332667
+G1 X52.959000 Y79.544333
+G1 X52.535667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 88)
+G0 X57.615667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X57.361667 Y79.502000
+G1 X56.980667 Y79.121000
+G1 X56.896000 Y78.782333
+G1 X56.938333 Y78.401333
+G1 X57.192333 Y78.062667
+G1 X57.488667 Y77.893333
+G1 X58.039000 Y77.893333
+G1 X58.377667 Y78.105000
+G1 X58.589333 Y78.443667
+G1 X58.589333 Y78.994000
+G1 X58.377667 Y79.332667
+G1 X58.039000 Y79.544333
+G1 X57.615667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 89)
+G0 X77.935667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X77.681667 Y79.502000
+G1 X77.300667 Y79.121000
+G1 X77.216000 Y78.782333
+G1 X77.258333 Y78.401333
+G1 X77.512333 Y78.062667
+G1 X77.808667 Y77.893333
+G1 X78.359000 Y77.893333
+G1 X78.697667 Y78.105000
+G1 X78.909333 Y78.443667
+G1 X78.909333 Y78.994000
+G1 X78.697667 Y79.332667
+G1 X78.359000 Y79.544333
+G1 X77.935667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 90)
+G0 X80.475667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X80.221667 Y79.502000
+G1 X79.840667 Y79.121000
+G1 X79.756000 Y78.782333
+G1 X79.798333 Y78.401333
+G1 X80.052333 Y78.062667
+G1 X80.348667 Y77.893333
+G1 X80.899000 Y77.893333
+G1 X81.237667 Y78.105000
+G1 X81.449333 Y78.443667
+G1 X81.449333 Y78.994000
+G1 X81.237667 Y79.332667
+G1 X80.899000 Y79.544333
+G1 X80.475667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 91)
+G0 X83.015667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X82.761667 Y79.502000
+G1 X82.380667 Y79.121000
+G1 X82.296000 Y78.782333
+G1 X82.338333 Y78.401333
+G1 X82.592333 Y78.062667
+G1 X82.888667 Y77.893333
+G1 X83.439000 Y77.893333
+G1 X83.777667 Y78.105000
+G1 X83.989333 Y78.443667
+G1 X83.989333 Y78.994000
+G1 X83.777667 Y79.332667
+G1 X83.439000 Y79.544333
+G1 X83.015667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 92)
+G0 X91.270667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X91.016667 Y79.502000
+G1 X90.635667 Y79.121000
+G1 X90.551000 Y78.782333
+G1 X90.593333 Y78.401333
+G1 X90.847333 Y78.062667
+G1 X91.143667 Y77.893333
+G1 X91.694000 Y77.893333
+G1 X92.032667 Y78.105000
+G1 X92.244333 Y78.443667
+G1 X92.244333 Y78.994000
+G1 X92.032667 Y79.332667
+G1 X91.694000 Y79.544333
+G1 X91.270667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 93)
+G0 X93.810667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X93.556667 Y79.502000
+G1 X93.175667 Y79.121000
+G1 X93.091000 Y78.782333
+G1 X93.133333 Y78.401333
+G1 X93.387333 Y78.062667
+G1 X93.683667 Y77.893333
+G1 X94.234000 Y77.893333
+G1 X94.572667 Y78.105000
+G1 X94.784333 Y78.443667
+G1 X94.784333 Y78.994000
+G1 X94.572667 Y79.332667
+G1 X94.234000 Y79.544333
+G1 X93.810667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 94)
+G0 X96.350667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X96.096667 Y79.502000
+G1 X95.715667 Y79.121000
+G1 X95.631000 Y78.782333
+G1 X95.673333 Y78.401333
+G1 X95.927333 Y78.062667
+G1 X96.223667 Y77.893333
+G1 X96.774000 Y77.893333
+G1 X97.112667 Y78.105000
+G1 X97.324333 Y78.443667
+G1 X97.324333 Y78.994000
+G1 X97.112667 Y79.332667
+G1 X96.774000 Y79.544333
+G1 X96.350667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 95)
+G0 X98.890667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X98.636667 Y79.502000
+G1 X98.255667 Y79.121000
+G1 X98.171000 Y78.782333
+G1 X98.213333 Y78.401333
+G1 X98.467333 Y78.062667
+G1 X98.763667 Y77.893333
+G1 X99.314000 Y77.893333
+G1 X99.652667 Y78.105000
+G1 X99.864333 Y78.443667
+G1 X99.864333 Y78.994000
+G1 X99.652667 Y79.332667
+G1 X99.314000 Y79.544333
+G1 X98.890667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 96)
+G0 X101.430667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X101.176667 Y79.502000
+G1 X100.795667 Y79.121000
+G1 X100.711000 Y78.782333
+G1 X100.753333 Y78.401333
+G1 X101.007333 Y78.062667
+G1 X101.303667 Y77.893333
+G1 X101.854000 Y77.893333
+G1 X102.192667 Y78.105000
+G1 X102.404333 Y78.443667
+G1 X102.404333 Y78.994000
+G1 X102.192667 Y79.332667
+G1 X101.854000 Y79.544333
+G1 X101.430667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 97)
+G0 X103.970667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X103.716667 Y79.502000
+G1 X103.335667 Y79.121000
+G1 X103.251000 Y78.782333
+G1 X103.293333 Y78.401333
+G1 X103.547333 Y78.062667
+G1 X103.843667 Y77.893333
+G1 X104.394000 Y77.893333
+G1 X104.732667 Y78.105000
+G1 X104.944333 Y78.443667
+G1 X104.944333 Y78.994000
+G1 X104.732667 Y79.332667
+G1 X104.394000 Y79.544333
+G1 X103.970667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 98)
+G0 X106.510667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X106.256667 Y79.502000
+G1 X105.875667 Y79.121000
+G1 X105.791000 Y78.782333
+G1 X105.833333 Y78.401333
+G1 X106.087333 Y78.062667
+G1 X106.383667 Y77.893333
+G1 X106.934000 Y77.893333
+G1 X107.272667 Y78.105000
+G1 X107.484333 Y78.443667
+G1 X107.484333 Y78.994000
+G1 X107.272667 Y79.332667
+G1 X106.934000 Y79.544333
+G1 X106.510667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 99)
+G0 X109.050667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X108.796667 Y79.502000
+G1 X108.415667 Y79.121000
+G1 X108.331000 Y78.782333
+G1 X108.373333 Y78.401333
+G1 X108.627333 Y78.062667
+G1 X108.923667 Y77.893333
+G1 X109.474000 Y77.893333
+G1 X109.812667 Y78.105000
+G1 X110.024333 Y78.443667
+G1 X110.024333 Y78.994000
+G1 X109.812667 Y79.332667
+G1 X109.474000 Y79.544333
+G1 X109.050667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 100)
+G0 X115.400667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X115.146667 Y79.502000
+G1 X114.765667 Y79.121000
+G1 X114.681000 Y78.782333
+G1 X114.723333 Y78.401333
+G1 X114.977333 Y78.062667
+G1 X115.273667 Y77.893333
+G1 X115.824000 Y77.893333
+G1 X116.162667 Y78.105000
+G1 X116.374333 Y78.443667
+G1 X116.374333 Y78.994000
+G1 X116.162667 Y79.332667
+G1 X115.824000 Y79.544333
+G1 X115.400667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 101)
+G0 X117.940667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.686667 Y79.502000
+G1 X117.305667 Y79.121000
+G1 X117.221000 Y78.782333
+G1 X117.263333 Y78.401333
+G1 X117.517333 Y78.062667
+G1 X117.813667 Y77.893333
+G1 X118.364000 Y77.893333
+G1 X118.702667 Y78.105000
+G1 X118.914333 Y78.443667
+G1 X118.914333 Y78.994000
+G1 X118.702667 Y79.332667
+G1 X118.364000 Y79.544333
+G1 X117.940667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 102)
+G0 X120.480667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X120.226667 Y79.502000
+G1 X119.845667 Y79.121000
+G1 X119.761000 Y78.782333
+G1 X119.803333 Y78.401333
+G1 X120.057333 Y78.062667
+G1 X120.353667 Y77.893333
+G1 X120.904000 Y77.893333
+G1 X121.242667 Y78.105000
+G1 X121.454333 Y78.443667
+G1 X121.454333 Y78.994000
+G1 X121.242667 Y79.332667
+G1 X120.904000 Y79.544333
+G1 X120.480667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 103)
+G0 X123.020667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X122.766667 Y79.502000
+G1 X122.385667 Y79.121000
+G1 X122.301000 Y78.782333
+G1 X122.343333 Y78.486000
+G1 X121.073333 Y77.258333
+G1 X114.384667 Y77.258333
+G1 X114.046000 Y77.597000
+G1 X113.707333 Y77.681667
+G1 X113.326333 Y77.639333
+G1 X112.987667 Y77.385333
+G1 X112.818333 Y77.089000
+G1 X112.818333 Y76.538667
+G1 X112.987667 Y76.242333
+G1 X113.326333 Y75.988333
+G1 X113.707333 Y75.946000
+G1 X114.046000 Y76.030667
+G1 X114.384667 Y76.369333
+G1 X121.327333 Y76.369333
+G1 X121.496667 Y76.454000
+G1 X122.936000 Y77.851000
+G1 X123.444000 Y77.893333
+G1 X123.782667 Y78.105000
+G1 X123.994333 Y78.443667
+G1 X123.994333 Y78.994000
+G1 X123.782667 Y79.332667
+G1 X123.444000 Y79.544333
+G1 X123.020667 Y79.586667
+G0 Z#100
+(polygon end, distance 26.63)
+(polygon 104)
+G0 X125.560667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X125.306667 Y79.502000
+G1 X124.925667 Y79.121000
+G1 X124.841000 Y78.782333
+G1 X124.883333 Y78.401333
+G1 X125.137333 Y78.062667
+G1 X125.433667 Y77.893333
+G1 X125.941667 Y77.851000
+G1 X127.381000 Y76.454000
+G1 X127.550333 Y76.369333
+G1 X131.953000 Y76.369333
+G1 X132.291667 Y76.030667
+G1 X132.630333 Y75.946000
+G1 X133.011333 Y75.988333
+G1 X133.350000 Y76.242333
+G1 X133.519333 Y76.538667
+G1 X133.519333 Y77.089000
+G1 X133.350000 Y77.385333
+G1 X133.011333 Y77.639333
+G1 X132.630333 Y77.681667
+G1 X132.291667 Y77.597000
+G1 X131.953000 Y77.258333
+G1 X127.762000 Y77.258333
+G1 X126.576667 Y78.486000
+G1 X126.534333 Y78.994000
+G1 X126.322667 Y79.332667
+G1 X125.984000 Y79.544333
+G1 X125.560667 Y79.586667
+G0 Z#100
+(polygon end, distance 21.55)
+(polygon 105)
+G0 X128.100667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X127.846667 Y79.502000
+G1 X127.465667 Y79.121000
+G1 X127.381000 Y78.782333
+G1 X127.423333 Y78.401333
+G1 X127.677333 Y78.062667
+G1 X127.973667 Y77.893333
+G1 X128.524000 Y77.893333
+G1 X128.862667 Y78.105000
+G1 X129.074333 Y78.443667
+G1 X129.074333 Y78.994000
+G1 X128.862667 Y79.332667
+G1 X128.524000 Y79.544333
+G1 X128.100667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 106)
+G0 X130.640667 Y79.586667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X130.386667 Y79.502000
+G1 X130.005667 Y79.121000
+G1 X129.921000 Y78.782333
+G1 X129.963333 Y78.401333
+G1 X130.217333 Y78.062667
+G1 X130.513667 Y77.893333
+G1 X131.064000 Y77.893333
+G1 X131.402667 Y78.105000
+G1 X131.614333 Y78.443667
+G1 X131.614333 Y78.994000
+G1 X131.402667 Y79.332667
+G1 X131.064000 Y79.544333
+G1 X130.640667 Y79.586667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 107)
+G0 X159.131000 Y78.951667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X159.131000 Y77.216000
+G1 X160.866667 Y77.216000
+G1 X160.866667 Y78.951667
+G1 X159.131000 Y78.951667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 108)
+G0 X63.330667 Y78.316667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X63.076667 Y78.232000
+G1 X62.695667 Y77.851000
+G1 X62.611000 Y77.512333
+G1 X62.653333 Y77.131333
+G1 X62.907333 Y76.792667
+G1 X63.203667 Y76.623333
+G1 X63.754000 Y76.623333
+G1 X64.092667 Y76.835000
+G1 X64.304333 Y77.173667
+G1 X64.304333 Y77.724000
+G1 X64.092667 Y78.062667
+G1 X63.754000 Y78.274333
+G1 X63.330667 Y78.316667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 109)
+G0 X58.885667 Y78.062667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X58.631667 Y77.851000
+G1 X58.420000 Y77.597000
+G1 X58.420000 Y77.300667
+G1 X58.631667 Y77.046667
+G1 X58.885667 Y76.835000
+G1 X59.139667 Y76.835000
+G1 X59.393667 Y76.962000
+G1 X59.605333 Y77.216000
+G1 X61.468000 Y77.216000
+G1 X62.780333 Y75.946000
+G1 X69.723000 Y75.946000
+G1 X71.035333 Y74.676000
+G1 X71.797333 Y74.676000
+G1 X72.009000 Y74.422000
+G1 X72.263000 Y74.295000
+G1 X72.517000 Y74.295000
+G1 X72.771000 Y74.506667
+G1 X72.982667 Y74.760667
+G1 X72.982667 Y75.057000
+G1 X72.771000 Y75.311000
+G1 X72.517000 Y75.522667
+G1 X72.263000 Y75.522667
+G1 X72.009000 Y75.395667
+G1 X71.797333 Y75.141667
+G1 X71.204667 Y75.141667
+G1 X69.892333 Y76.411667
+G1 X62.949667 Y76.411667
+G1 X61.637333 Y77.681667
+G1 X59.605333 Y77.681667
+G1 X59.393667 Y77.935667
+G1 X59.139667 Y78.062667
+G1 X58.885667 Y78.062667
+G0 Z#100
+(polygon end, distance 33.15)
+(polygon 110)
+G0 X16.975667 Y77.681667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y77.597000
+G1 X16.340667 Y77.216000
+G1 X16.256000 Y76.877333
+G1 X16.298333 Y76.496333
+G1 X16.552333 Y76.157667
+G1 X16.848667 Y75.988333
+G1 X17.399000 Y75.988333
+G1 X17.737667 Y76.200000
+G1 X17.949333 Y76.538667
+G1 X17.949333 Y77.089000
+G1 X17.737667 Y77.427667
+G1 X17.399000 Y77.639333
+G1 X16.975667 Y77.681667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 111)
+G0 X19.515667 Y77.681667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y77.597000
+G1 X18.880667 Y77.216000
+G1 X18.796000 Y76.877333
+G1 X18.838333 Y76.496333
+G1 X19.092333 Y76.200000
+G1 X20.743333 Y74.633667
+G1 X20.743333 Y65.235667
+G1 X20.912667 Y64.897000
+G1 X22.436667 Y63.457667
+G1 X22.733000 Y63.288333
+G1 X26.373667 Y63.288333
+G1 X26.712333 Y62.992000
+G1 X27.178000 Y62.865000
+G1 X27.601333 Y62.907333
+G1 X27.982333 Y63.076667
+G1 X28.321000 Y63.415333
+G1 X28.490333 Y63.796333
+G1 X28.490333 Y64.431333
+G1 X28.321000 Y64.812333
+G1 X27.982333 Y65.151000
+G1 X27.601333 Y65.320333
+G1 X27.178000 Y65.362667
+G1 X26.712333 Y65.235667
+G1 X26.373667 Y64.939333
+G1 X23.198667 Y64.939333
+G1 X22.394333 Y65.659000
+G1 X22.394333 Y75.057000
+G1 X22.225000 Y75.395667
+G1 X20.574000 Y76.962000
+G1 X20.277667 Y77.427667
+G1 X19.939000 Y77.639333
+G1 X19.515667 Y77.681667
+G0 Z#100
+(polygon end, distance 43.72)
+(polygon 112)
+G0 X162.390667 Y77.597000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X162.136667 Y77.512333
+G1 X161.755667 Y77.131333
+G1 X161.671000 Y76.792667
+G1 X161.713333 Y76.411667
+G1 X161.967333 Y76.073000
+G1 X162.263667 Y75.903667
+G1 X162.814000 Y75.903667
+G1 X163.152667 Y76.115333
+G1 X163.364333 Y76.454000
+G1 X163.364333 Y77.004333
+G1 X163.152667 Y77.343000
+G1 X162.814000 Y77.554667
+G1 X162.390667 Y77.597000
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 113)
+G0 X58.250667 Y76.792667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X57.996667 Y76.581000
+G1 X57.785000 Y76.327000
+G1 X57.785000 Y76.030667
+G1 X57.996667 Y75.776667
+G1 X58.250667 Y75.565000
+G1 X58.504667 Y75.565000
+G1 X58.758667 Y75.692000
+G1 X58.970333 Y75.946000
+G1 X61.468000 Y75.946000
+G1 X62.780333 Y74.676000
+G1 X67.352333 Y74.676000
+G1 X67.564000 Y74.422000
+G1 X67.818000 Y74.295000
+G1 X68.072000 Y74.295000
+G1 X68.326000 Y74.506667
+G1 X68.537667 Y74.760667
+G1 X68.537667 Y75.057000
+G1 X68.326000 Y75.311000
+G1 X68.072000 Y75.522667
+G1 X67.818000 Y75.522667
+G1 X67.564000 Y75.395667
+G1 X67.352333 Y75.141667
+G1 X62.949667 Y75.141667
+G1 X61.637333 Y76.411667
+G1 X58.970333 Y76.411667
+G1 X58.758667 Y76.665667
+G1 X58.504667 Y76.792667
+G1 X58.250667 Y76.792667
+G0 Z#100
+(polygon end, distance 24.50)
+(polygon 114)
+G0 X159.850667 Y76.200000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X159.596667 Y76.115333
+G1 X159.215667 Y75.734333
+G1 X159.131000 Y75.395667
+G1 X159.173333 Y75.014667
+G1 X159.427333 Y74.676000
+G1 X159.723667 Y74.506667
+G1 X160.274000 Y74.506667
+G1 X160.612667 Y74.718333
+G1 X160.824333 Y75.057000
+G1 X160.824333 Y75.607333
+G1 X160.612667 Y75.946000
+G1 X160.274000 Y76.157667
+G1 X159.850667 Y76.200000
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 115)
+G0 X154.135667 Y76.157667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X153.881667 Y75.988333
+G1 X153.712333 Y75.776667
+G1 X109.770333 Y75.776667
+G1 X108.458000 Y74.506667
+G1 X94.530333 Y74.506667
+G1 X91.821000 Y71.839667
+G1 X91.524667 Y71.966667
+G1 X91.143667 Y71.924333
+G1 X90.805000 Y71.712667
+G1 X90.593333 Y71.374000
+G1 X90.593333 Y70.823667
+G1 X90.805000 Y70.485000
+G1 X91.143667 Y70.273333
+G1 X91.694000 Y70.273333
+G1 X92.032667 Y70.485000
+G1 X92.244333 Y70.823667
+G1 X92.286667 Y71.204667
+G1 X92.159667 Y71.543333
+G1 X94.699667 Y74.041000
+G1 X108.627333 Y74.041000
+G1 X109.939667 Y75.311000
+G1 X153.712333 Y75.311000
+G1 X153.924000 Y75.057000
+G1 X154.178000 Y74.930000
+G1 X154.432000 Y74.930000
+G1 X154.686000 Y75.141667
+G1 X154.897667 Y75.395667
+G1 X154.897667 Y75.692000
+G1 X154.686000 Y75.946000
+G1 X154.432000 Y76.157667
+G1 X154.135667 Y76.157667
+G0 Z#100
+(polygon end, distance 134.89)
+(polygon 116)
+G0 X29.675667 Y75.522667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X29.421667 Y75.311000
+G1 X29.210000 Y75.057000
+G1 X29.210000 Y74.760667
+G1 X29.421667 Y74.506667
+G1 X29.675667 Y74.295000
+G1 X29.929667 Y74.295000
+G1 X30.183667 Y74.422000
+G1 X30.395333 Y74.676000
+G1 X50.842333 Y74.676000
+G1 X51.054000 Y74.422000
+G1 X51.308000 Y74.295000
+G1 X51.562000 Y74.295000
+G1 X51.816000 Y74.506667
+G1 X52.027667 Y74.760667
+G1 X52.027667 Y75.057000
+G1 X51.816000 Y75.311000
+G1 X51.562000 Y75.522667
+G1 X51.308000 Y75.522667
+G1 X51.054000 Y75.395667
+G1 X50.842333 Y75.141667
+G1 X30.395333 Y75.141667
+G1 X30.183667 Y75.395667
+G1 X29.929667 Y75.522667
+G1 X29.675667 Y75.522667
+G0 Z#100
+(polygon end, distance 47.61)
+(polygon 117)
+G0 X58.885667 Y75.522667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X58.631667 Y75.311000
+G1 X58.420000 Y75.057000
+G1 X58.420000 Y74.760667
+G1 X58.631667 Y74.506667
+G1 X58.885667 Y74.295000
+G1 X59.139667 Y74.295000
+G1 X59.393667 Y74.422000
+G1 X59.605333 Y74.676000
+G1 X61.468000 Y74.676000
+G1 X62.780333 Y73.406000
+G1 X76.073000 Y73.406000
+G1 X76.750333 Y72.771000
+G1 X90.847333 Y72.771000
+G1 X91.059000 Y72.517000
+G1 X91.313000 Y72.390000
+G1 X91.567000 Y72.390000
+G1 X91.821000 Y72.601667
+G1 X92.032667 Y72.855667
+G1 X92.032667 Y73.152000
+G1 X91.821000 Y73.406000
+G1 X91.567000 Y73.617667
+G1 X91.313000 Y73.617667
+G1 X91.059000 Y73.490667
+G1 X90.847333 Y73.236667
+G1 X76.919667 Y73.236667
+G1 X76.242333 Y73.871667
+G1 X62.949667 Y73.871667
+G1 X61.637333 Y75.141667
+G1 X59.605333 Y75.141667
+G1 X59.393667 Y75.395667
+G1 X59.139667 Y75.522667
+G1 X58.885667 Y75.522667
+G0 Z#100
+(polygon end, distance 70.73)
+(polygon 118)
+G0 X14.435667 Y75.141667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y75.057000
+G1 X13.800667 Y74.676000
+G1 X13.716000 Y74.337333
+G1 X13.758333 Y73.956333
+G1 X14.012333 Y73.617667
+G1 X14.308667 Y73.448333
+G1 X14.859000 Y73.448333
+G1 X15.197667 Y73.660000
+G1 X15.409333 Y73.998667
+G1 X15.409333 Y74.549000
+G1 X15.197667 Y74.887667
+G1 X14.859000 Y75.099333
+G1 X14.435667 Y75.141667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 119)
+G0 X16.975667 Y75.141667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y75.057000
+G1 X16.340667 Y74.676000
+G1 X16.256000 Y74.337333
+G1 X16.298333 Y73.956333
+G1 X16.552333 Y73.617667
+G1 X16.848667 Y73.448333
+G1 X17.399000 Y73.448333
+G1 X17.737667 Y73.660000
+G1 X17.949333 Y73.998667
+G1 X17.949333 Y74.549000
+G1 X17.737667 Y74.887667
+G1 X17.399000 Y75.099333
+G1 X16.975667 Y75.141667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 120)
+G0 X19.515667 Y75.141667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y75.057000
+G1 X18.880667 Y74.676000
+G1 X18.796000 Y74.337333
+G1 X18.838333 Y73.956333
+G1 X19.092333 Y73.617667
+G1 X19.388667 Y73.448333
+G1 X19.939000 Y73.448333
+G1 X20.277667 Y73.660000
+G1 X20.489333 Y73.998667
+G1 X20.489333 Y74.549000
+G1 X20.277667 Y74.887667
+G1 X19.939000 Y75.099333
+G1 X19.515667 Y75.141667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 121)
+G0 X162.390667 Y74.803000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X162.179000 Y74.718333
+G1 X161.882667 Y74.506667
+G1 X161.713333 Y74.168000
+G1 X155.998333 Y74.168000
+G1 X155.617333 Y74.506667
+G1 X110.405333 Y74.506667
+G1 X109.093000 Y73.236667
+G1 X95.800333 Y73.236667
+G1 X94.361000 Y71.839667
+G1 X94.064667 Y71.966667
+G1 X93.683667 Y71.924333
+G1 X93.345000 Y71.712667
+G1 X93.133333 Y71.374000
+G1 X93.133333 Y70.823667
+G1 X93.345000 Y70.485000
+G1 X93.683667 Y70.273333
+G1 X94.234000 Y70.273333
+G1 X94.572667 Y70.485000
+G1 X94.784333 Y70.823667
+G1 X94.826667 Y71.204667
+G1 X94.699667 Y71.543333
+G1 X95.969667 Y72.771000
+G1 X109.262333 Y72.771000
+G1 X110.574667 Y74.041000
+G1 X155.448000 Y74.041000
+G1 X155.829000 Y73.702333
+G1 X161.713333 Y73.702333
+G1 X161.925000 Y73.321333
+G1 X162.263667 Y73.109667
+G1 X162.814000 Y73.109667
+G1 X163.152667 Y73.321333
+G1 X163.364333 Y73.660000
+G1 X163.364333 Y74.210333
+G1 X163.152667 Y74.549000
+G1 X162.814000 Y74.760667
+G1 X162.390667 Y74.803000
+G0 Z#100
+(polygon end, distance 146.59)
+(polygon 122)
+G0 X111.548333 Y73.998667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X111.125000 Y73.787000
+G1 X110.913333 Y73.533000
+G1 X110.744000 Y73.194333
+G1 X110.744000 Y72.813333
+G1 X110.913333 Y72.474667
+G1 X111.125000 Y72.220667
+G1 X111.463667 Y72.051333
+G1 X117.898333 Y72.051333
+G1 X117.475000 Y71.839667
+G1 X117.221000 Y71.501000
+G1 X117.136333 Y71.204667
+G1 X117.178667 Y70.823667
+G1 X117.432667 Y70.442667
+G1 X117.813667 Y70.188667
+G1 X120.904000 Y70.188667
+G1 X121.285000 Y70.442667
+G1 X121.539000 Y70.823667
+G1 X121.581333 Y71.247000
+G1 X121.369667 Y71.712667
+G1 X119.210667 Y73.829333
+G1 X118.829667 Y73.956333
+G1 X111.548333 Y73.998667
+G0 Z#100
+(polygon end, distance 27.24)
+(polygon 123)
+G0 X129.370667 Y73.617667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X129.116667 Y73.448333
+G1 X128.947333 Y73.236667
+G1 X125.010333 Y73.236667
+G1 X123.571000 Y71.839667
+G1 X123.274667 Y71.966667
+G1 X122.893667 Y71.924333
+G1 X122.555000 Y71.712667
+G1 X122.343333 Y71.374000
+G1 X122.343333 Y70.823667
+G1 X122.555000 Y70.485000
+G1 X122.893667 Y70.273333
+G1 X123.444000 Y70.273333
+G1 X123.782667 Y70.485000
+G1 X123.994333 Y70.823667
+G1 X124.036667 Y71.204667
+G1 X123.909667 Y71.543333
+G1 X125.179667 Y72.771000
+G1 X128.947333 Y72.771000
+G1 X129.159000 Y72.517000
+G1 X129.413000 Y72.390000
+G1 X129.667000 Y72.390000
+G1 X129.921000 Y72.601667
+G1 X130.132667 Y72.855667
+G1 X130.132667 Y73.152000
+G1 X129.921000 Y73.406000
+G1 X129.667000 Y73.617667
+G1 X129.370667 Y73.617667
+G0 Z#100
+(polygon end, distance 19.78)
+(polygon 124)
+G0 X159.850667 Y73.406000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X159.596667 Y73.321333
+G1 X159.215667 Y72.940333
+G1 X159.131000 Y72.601667
+G1 X159.173333 Y72.220667
+G1 X159.427333 Y71.882000
+G1 X159.723667 Y71.712667
+G1 X160.274000 Y71.712667
+G1 X160.612667 Y71.924333
+G1 X160.824333 Y72.263000
+G1 X160.824333 Y72.813333
+G1 X160.612667 Y73.152000
+G1 X160.274000 Y73.363667
+G1 X159.850667 Y73.406000
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 125)
+G0 X135.085667 Y73.236667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.831667 Y73.152000
+G1 X134.493000 Y72.813333
+G1 X131.995333 Y72.813333
+G1 X131.741333 Y72.686333
+G1 X131.064000 Y71.966667
+G1 X129.921000 Y71.966667
+G1 X129.921000 Y70.231000
+G1 X131.656667 Y70.231000
+G1 X131.656667 Y71.374000
+G1 X132.249333 Y71.924333
+G1 X134.493000 Y71.924333
+G1 X134.831667 Y71.585667
+G1 X135.170333 Y71.501000
+G1 X135.551333 Y71.543333
+G1 X135.890000 Y71.797333
+G1 X135.932333 Y71.924333
+G1 X138.938000 Y71.924333
+G1 X139.276667 Y71.585667
+G1 X139.615333 Y71.501000
+G1 X139.996333 Y71.543333
+G1 X140.335000 Y71.797333
+G1 X140.504333 Y72.093667
+G1 X140.504333 Y72.644000
+G1 X140.335000 Y72.940333
+G1 X139.996333 Y73.194333
+G1 X139.615333 Y73.236667
+G1 X139.276667 Y73.152000
+G1 X138.938000 Y72.813333
+G1 X135.974667 Y72.813333
+G1 X135.636000 Y73.152000
+G1 X135.339667 Y73.236667
+G1 X135.085667 Y73.236667
+G0 Z#100
+(polygon end, distance 26.61)
+(polygon 126)
+G0 X14.435667 Y72.601667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y72.517000
+G1 X13.800667 Y72.136000
+G1 X13.716000 Y71.797333
+G1 X13.758333 Y71.416333
+G1 X14.012333 Y71.077667
+G1 X14.308667 Y70.908333
+G1 X14.859000 Y70.908333
+G1 X15.197667 Y71.120000
+G1 X15.409333 Y71.458667
+G1 X15.409333 Y72.009000
+G1 X15.197667 Y72.347667
+G1 X14.859000 Y72.559333
+G1 X14.435667 Y72.601667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 127)
+G0 X16.975667 Y72.601667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y72.517000
+G1 X16.340667 Y72.136000
+G1 X16.256000 Y71.797333
+G1 X16.298333 Y71.416333
+G1 X16.552333 Y71.077667
+G1 X16.848667 Y70.908333
+G1 X17.399000 Y70.908333
+G1 X17.737667 Y71.120000
+G1 X17.949333 Y71.458667
+G1 X17.949333 Y72.009000
+G1 X17.737667 Y72.347667
+G1 X17.399000 Y72.559333
+G1 X16.975667 Y72.601667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 128)
+G0 X19.515667 Y72.601667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y72.517000
+G1 X18.880667 Y72.136000
+G1 X18.796000 Y71.797333
+G1 X18.838333 Y71.416333
+G1 X19.092333 Y71.077667
+G1 X19.388667 Y70.908333
+G1 X19.939000 Y70.908333
+G1 X20.277667 Y71.120000
+G1 X20.489333 Y71.458667
+G1 X20.489333 Y72.009000
+G1 X20.277667 Y72.347667
+G1 X19.939000 Y72.559333
+G1 X19.515667 Y72.601667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 129)
+G0 X162.390667 Y72.051333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X162.136667 Y71.966667
+G1 X161.755667 Y71.585667
+G1 X161.713333 Y71.331667
+G1 X154.855333 Y71.331667
+G1 X154.643667 Y71.585667
+G1 X154.389667 Y71.712667
+G1 X154.135667 Y71.712667
+G1 X153.881667 Y71.501000
+G1 X153.670000 Y71.247000
+G1 X153.670000 Y70.950667
+G1 X153.881667 Y70.696667
+G1 X154.135667 Y70.485000
+G1 X154.389667 Y70.485000
+G1 X154.643667 Y70.612000
+G1 X154.855333 Y70.866000
+G1 X161.755667 Y70.866000
+G1 X161.925000 Y70.569667
+G1 X162.263667 Y70.358000
+G1 X162.814000 Y70.358000
+G1 X163.152667 Y70.569667
+G1 X163.364333 Y70.908333
+G1 X163.364333 Y71.458667
+G1 X163.152667 Y71.797333
+G1 X162.814000 Y72.009000
+G1 X162.390667 Y72.051333
+G0 Z#100
+(polygon end, distance 22.04)
+(polygon 130)
+G0 X24.595667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X24.341667 Y71.882000
+G1 X23.960667 Y71.501000
+G1 X23.876000 Y71.162333
+G1 X23.918333 Y70.781333
+G1 X24.172333 Y70.442667
+G1 X24.468667 Y70.273333
+G1 X25.019000 Y70.273333
+G1 X25.357667 Y70.485000
+G1 X25.569333 Y70.823667
+G1 X25.569333 Y71.374000
+G1 X25.357667 Y71.712667
+G1 X25.019000 Y71.924333
+G1 X24.595667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 131)
+G0 X27.135667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X26.881667 Y71.882000
+G1 X26.500667 Y71.501000
+G1 X26.416000 Y71.162333
+G1 X26.458333 Y70.781333
+G1 X26.712333 Y70.442667
+G1 X27.008667 Y70.273333
+G1 X27.559000 Y70.273333
+G1 X27.897667 Y70.485000
+G1 X28.109333 Y70.823667
+G1 X28.109333 Y71.374000
+G1 X27.897667 Y71.712667
+G1 X27.559000 Y71.924333
+G1 X27.135667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 132)
+G0 X29.675667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X29.421667 Y71.882000
+G1 X29.040667 Y71.501000
+G1 X28.956000 Y71.162333
+G1 X28.998333 Y70.781333
+G1 X29.252333 Y70.442667
+G1 X29.548667 Y70.273333
+G1 X30.099000 Y70.273333
+G1 X30.437667 Y70.485000
+G1 X30.649333 Y70.823667
+G1 X30.649333 Y71.374000
+G1 X30.437667 Y71.712667
+G1 X30.099000 Y71.924333
+G1 X29.675667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 133)
+G0 X32.215667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X31.961667 Y71.882000
+G1 X31.580667 Y71.501000
+G1 X31.496000 Y71.162333
+G1 X31.538333 Y70.781333
+G1 X31.792333 Y70.442667
+G1 X32.088667 Y70.273333
+G1 X32.639000 Y70.273333
+G1 X32.977667 Y70.485000
+G1 X33.189333 Y70.823667
+G1 X33.189333 Y71.374000
+G1 X32.977667 Y71.712667
+G1 X32.639000 Y71.924333
+G1 X32.215667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 134)
+G0 X34.755667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X34.501667 Y71.882000
+G1 X34.120667 Y71.501000
+G1 X34.036000 Y71.162333
+G1 X34.078333 Y70.781333
+G1 X34.332333 Y70.442667
+G1 X34.628667 Y70.273333
+G1 X35.179000 Y70.273333
+G1 X35.517667 Y70.485000
+G1 X35.729333 Y70.823667
+G1 X35.729333 Y71.374000
+G1 X35.517667 Y71.712667
+G1 X35.179000 Y71.924333
+G1 X34.755667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 135)
+G0 X37.295667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X37.041667 Y71.882000
+G1 X36.660667 Y71.501000
+G1 X36.576000 Y71.162333
+G1 X36.618333 Y70.781333
+G1 X36.872333 Y70.442667
+G1 X37.168667 Y70.273333
+G1 X37.719000 Y70.273333
+G1 X38.057667 Y70.485000
+G1 X38.269333 Y70.823667
+G1 X38.269333 Y71.374000
+G1 X38.057667 Y71.712667
+G1 X37.719000 Y71.924333
+G1 X37.295667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 136)
+G0 X42.375667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X42.121667 Y71.882000
+G1 X41.740667 Y71.501000
+G1 X41.656000 Y71.162333
+G1 X41.698333 Y70.781333
+G1 X41.952333 Y70.442667
+G1 X42.291000 Y70.273333
+G1 X42.291000 Y69.892333
+G1 X41.148000 Y68.791667
+G1 X25.315333 Y68.791667
+G1 X23.876000 Y67.352333
+G1 X23.876000 Y66.886667
+G1 X23.241000 Y66.886667
+G1 X23.241000 Y65.151000
+G1 X24.976667 Y65.151000
+G1 X24.976667 Y66.886667
+G1 X24.341667 Y66.886667
+G1 X24.341667 Y67.183000
+G1 X25.442333 Y68.326000
+G1 X41.317333 Y68.326000
+G1 X42.756667 Y69.765333
+G1 X42.756667 Y70.273333
+G1 X43.137667 Y70.485000
+G1 X43.349333 Y70.823667
+G1 X43.349333 Y71.374000
+G1 X43.137667 Y71.712667
+G1 X42.799000 Y71.924333
+G1 X42.375667 Y71.966667
+G0 Z#100
+(polygon end, distance 52.03)
+(polygon 137)
+G0 X44.915667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X44.661667 Y71.882000
+G1 X44.280667 Y71.501000
+G1 X44.196000 Y71.162333
+G1 X44.238333 Y70.781333
+G1 X44.492333 Y70.442667
+G1 X44.788667 Y70.273333
+G1 X45.339000 Y70.273333
+G1 X45.677667 Y70.485000
+G1 X45.889333 Y70.823667
+G1 X45.889333 Y71.374000
+G1 X45.677667 Y71.712667
+G1 X45.339000 Y71.924333
+G1 X44.915667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 138)
+G0 X47.455667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X47.201667 Y71.882000
+G1 X46.820667 Y71.501000
+G1 X46.736000 Y71.162333
+G1 X46.778333 Y70.781333
+G1 X47.032333 Y70.442667
+G1 X47.328667 Y70.273333
+G1 X47.879000 Y70.273333
+G1 X48.217667 Y70.485000
+G1 X48.429333 Y70.823667
+G1 X48.429333 Y71.374000
+G1 X48.217667 Y71.712667
+G1 X47.879000 Y71.924333
+G1 X47.455667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 139)
+G0 X49.995667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X49.741667 Y71.882000
+G1 X49.360667 Y71.501000
+G1 X49.276000 Y71.162333
+G1 X49.318333 Y70.781333
+G1 X49.572333 Y70.442667
+G1 X49.868667 Y70.273333
+G1 X50.419000 Y70.273333
+G1 X50.757667 Y70.485000
+G1 X50.969333 Y70.823667
+G1 X50.969333 Y71.374000
+G1 X50.757667 Y71.712667
+G1 X50.419000 Y71.924333
+G1 X49.995667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 140)
+G0 X52.535667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X52.281667 Y71.882000
+G1 X51.900667 Y71.501000
+G1 X51.816000 Y71.162333
+G1 X51.858333 Y70.781333
+G1 X52.112333 Y70.442667
+G1 X52.408667 Y70.273333
+G1 X52.959000 Y70.273333
+G1 X53.297667 Y70.485000
+G1 X53.509333 Y70.823667
+G1 X53.509333 Y71.374000
+G1 X53.297667 Y71.712667
+G1 X52.959000 Y71.924333
+G1 X52.535667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 141)
+G0 X55.075667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X54.821667 Y71.882000
+G1 X54.440667 Y71.501000
+G1 X54.356000 Y71.162333
+G1 X54.398333 Y70.781333
+G1 X54.652333 Y70.442667
+G1 X54.948667 Y70.273333
+G1 X55.499000 Y70.273333
+G1 X55.837667 Y70.485000
+G1 X56.049333 Y70.823667
+G1 X56.049333 Y71.374000
+G1 X55.837667 Y71.712667
+G1 X55.499000 Y71.924333
+G1 X55.075667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 142)
+G0 X56.896000 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X56.896000 Y70.231000
+G1 X58.631667 Y70.231000
+G1 X58.631667 Y71.966667
+G1 X56.896000 Y71.966667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 143)
+G0 X80.475667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X80.221667 Y71.882000
+G1 X79.840667 Y71.501000
+G1 X79.756000 Y71.162333
+G1 X79.798333 Y70.781333
+G1 X80.052333 Y70.442667
+G1 X80.348667 Y70.273333
+G1 X80.899000 Y70.273333
+G1 X81.237667 Y70.485000
+G1 X81.449333 Y70.823667
+G1 X81.449333 Y71.374000
+G1 X81.237667 Y71.712667
+G1 X80.899000 Y71.924333
+G1 X80.475667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 144)
+G0 X83.015667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X82.761667 Y71.882000
+G1 X82.380667 Y71.501000
+G1 X82.296000 Y71.162333
+G1 X82.338333 Y70.781333
+G1 X82.592333 Y70.442667
+G1 X82.888667 Y70.273333
+G1 X83.439000 Y70.273333
+G1 X83.777667 Y70.485000
+G1 X83.989333 Y70.823667
+G1 X83.989333 Y71.374000
+G1 X83.777667 Y71.712667
+G1 X83.439000 Y71.924333
+G1 X83.015667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 145)
+G0 X84.836000 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X84.836000 Y70.231000
+G1 X86.571667 Y70.231000
+G1 X86.571667 Y71.966667
+G1 X84.836000 Y71.966667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 146)
+G0 X96.350667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X96.096667 Y71.882000
+G1 X95.715667 Y71.501000
+G1 X95.631000 Y71.162333
+G1 X95.673333 Y70.781333
+G1 X95.927333 Y70.442667
+G1 X96.223667 Y70.273333
+G1 X96.774000 Y70.273333
+G1 X97.112667 Y70.485000
+G1 X97.324333 Y70.823667
+G1 X97.324333 Y71.374000
+G1 X97.112667 Y71.712667
+G1 X96.774000 Y71.924333
+G1 X96.350667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 147)
+G0 X98.890667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X98.636667 Y71.882000
+G1 X98.255667 Y71.501000
+G1 X98.171000 Y71.162333
+G1 X98.213333 Y70.781333
+G1 X98.467333 Y70.442667
+G1 X98.763667 Y70.273333
+G1 X99.314000 Y70.273333
+G1 X99.652667 Y70.485000
+G1 X99.864333 Y70.823667
+G1 X99.864333 Y71.374000
+G1 X99.652667 Y71.712667
+G1 X99.314000 Y71.924333
+G1 X98.890667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 148)
+G0 X101.430667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X101.176667 Y71.882000
+G1 X100.795667 Y71.501000
+G1 X100.711000 Y71.162333
+G1 X100.753333 Y70.781333
+G1 X101.007333 Y70.442667
+G1 X101.303667 Y70.273333
+G1 X101.854000 Y70.273333
+G1 X102.192667 Y70.485000
+G1 X102.404333 Y70.823667
+G1 X102.404333 Y71.374000
+G1 X102.192667 Y71.712667
+G1 X101.854000 Y71.924333
+G1 X101.430667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 149)
+G0 X103.970667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X103.716667 Y71.882000
+G1 X103.335667 Y71.501000
+G1 X103.251000 Y71.162333
+G1 X103.293333 Y70.781333
+G1 X103.547333 Y70.442667
+G1 X103.843667 Y70.273333
+G1 X104.394000 Y70.273333
+G1 X104.732667 Y70.485000
+G1 X104.944333 Y70.823667
+G1 X104.944333 Y71.374000
+G1 X104.732667 Y71.712667
+G1 X104.394000 Y71.924333
+G1 X103.970667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 150)
+G0 X106.510667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X106.256667 Y71.882000
+G1 X105.875667 Y71.501000
+G1 X105.791000 Y71.162333
+G1 X105.833333 Y70.781333
+G1 X106.087333 Y70.442667
+G1 X106.383667 Y70.273333
+G1 X106.934000 Y70.273333
+G1 X107.272667 Y70.485000
+G1 X107.484333 Y70.823667
+G1 X107.484333 Y71.374000
+G1 X107.272667 Y71.712667
+G1 X106.934000 Y71.924333
+G1 X106.510667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 151)
+G0 X108.331000 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X108.331000 Y70.231000
+G1 X110.066667 Y70.231000
+G1 X110.066667 Y71.966667
+G1 X108.331000 Y71.966667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 152)
+G0 X115.400667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X115.146667 Y71.882000
+G1 X114.765667 Y71.501000
+G1 X114.681000 Y71.162333
+G1 X114.723333 Y70.781333
+G1 X114.977333 Y70.442667
+G1 X115.273667 Y70.273333
+G1 X115.824000 Y70.273333
+G1 X116.162667 Y70.485000
+G1 X116.374333 Y70.823667
+G1 X116.374333 Y71.374000
+G1 X116.162667 Y71.712667
+G1 X115.824000 Y71.924333
+G1 X115.400667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 153)
+G0 X125.560667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X125.306667 Y71.882000
+G1 X124.925667 Y71.501000
+G1 X124.841000 Y71.162333
+G1 X124.883333 Y70.781333
+G1 X125.137333 Y70.442667
+G1 X125.433667 Y70.273333
+G1 X125.984000 Y70.273333
+G1 X126.322667 Y70.485000
+G1 X126.534333 Y70.823667
+G1 X126.534333 Y71.374000
+G1 X126.322667 Y71.712667
+G1 X125.984000 Y71.924333
+G1 X125.560667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 154)
+G0 X128.100667 Y71.966667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X127.846667 Y71.882000
+G1 X127.465667 Y71.501000
+G1 X127.381000 Y71.162333
+G1 X127.423333 Y70.781333
+G1 X127.677333 Y70.442667
+G1 X127.973667 Y70.273333
+G1 X128.524000 Y70.273333
+G1 X128.862667 Y70.485000
+G1 X129.074333 Y70.823667
+G1 X129.074333 Y71.374000
+G1 X128.862667 Y71.712667
+G1 X128.524000 Y71.924333
+G1 X128.100667 Y71.966667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 155)
+G0 X67.775667 Y70.696667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X67.521667 Y70.612000
+G1 X67.140667 Y70.231000
+G1 X67.056000 Y69.892333
+G1 X67.098333 Y69.511333
+G1 X67.352333 Y69.172667
+G1 X67.648667 Y69.003333
+G1 X68.199000 Y69.003333
+G1 X68.537667 Y69.215000
+G1 X68.749333 Y69.553667
+G1 X68.749333 Y70.104000
+G1 X68.537667 Y70.442667
+G1 X68.199000 Y70.654333
+G1 X67.775667 Y70.696667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 156)
+G0 X72.220667 Y70.696667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X71.966667 Y70.612000
+G1 X71.585667 Y70.231000
+G1 X71.501000 Y69.892333
+G1 X71.543333 Y69.511333
+G1 X71.797333 Y69.172667
+G1 X72.093667 Y69.003333
+G1 X72.644000 Y69.003333
+G1 X72.982667 Y69.215000
+G1 X73.194333 Y69.553667
+G1 X73.194333 Y70.104000
+G1 X72.982667 Y70.442667
+G1 X72.644000 Y70.654333
+G1 X72.220667 Y70.696667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 157)
+G0 X159.850667 Y70.654333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X159.596667 Y70.569667
+G1 X159.215667 Y70.188667
+G1 X159.131000 Y69.850000
+G1 X159.173333 Y69.469000
+G1 X159.427333 Y69.130333
+G1 X159.723667 Y68.961000
+G1 X160.274000 Y68.961000
+G1 X160.612667 Y69.172667
+G1 X160.824333 Y69.511333
+G1 X160.824333 Y70.061667
+G1 X160.612667 Y70.400333
+G1 X160.274000 Y70.612000
+G1 X159.850667 Y70.654333
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 158)
+G0 X100.160667 Y70.442667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X99.906667 Y70.273333
+G1 X99.737333 Y70.061667
+G1 X78.655333 Y70.061667
+G1 X77.343000 Y68.791667
+G1 X51.985333 Y68.791667
+G1 X51.773667 Y69.045667
+G1 X51.519667 Y69.172667
+G1 X51.265667 Y69.172667
+G1 X51.011667 Y68.961000
+G1 X50.800000 Y68.707000
+G1 X50.800000 Y68.410667
+G1 X51.011667 Y68.156667
+G1 X51.265667 Y67.945000
+G1 X51.519667 Y67.945000
+G1 X51.773667 Y68.072000
+G1 X51.985333 Y68.326000
+G1 X77.512333 Y68.326000
+G1 X78.824667 Y69.596000
+G1 X99.737333 Y69.596000
+G1 X99.949000 Y69.342000
+G1 X100.203000 Y69.215000
+G1 X100.457000 Y69.215000
+G1 X100.711000 Y69.426667
+G1 X100.922667 Y69.680667
+G1 X100.922667 Y69.977000
+G1 X100.711000 Y70.231000
+G1 X100.457000 Y70.442667
+G1 X100.160667 Y70.442667
+G0 Z#100
+(polygon end, distance 103.25)
+(polygon 159)
+G0 X105.240667 Y70.442667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X104.986667 Y70.231000
+G1 X104.775000 Y69.977000
+G1 X104.775000 Y69.680667
+G1 X104.986667 Y69.426667
+G1 X105.240667 Y69.215000
+G1 X105.494667 Y69.215000
+G1 X105.748667 Y69.342000
+G1 X105.960333 Y69.596000
+G1 X157.522333 Y69.596000
+G1 X157.734000 Y69.342000
+G1 X157.988000 Y69.215000
+G1 X158.242000 Y69.215000
+G1 X158.496000 Y69.426667
+G1 X158.707667 Y69.680667
+G1 X158.707667 Y69.977000
+G1 X158.496000 Y70.231000
+G1 X158.242000 Y70.442667
+G1 X157.988000 Y70.442667
+G1 X157.734000 Y70.315667
+G1 X157.522333 Y70.061667
+G1 X105.960333 Y70.061667
+G1 X105.748667 Y70.315667
+G1 X105.494667 Y70.442667
+G1 X105.240667 Y70.442667
+G0 Z#100
+(polygon end, distance 109.84)
+(polygon 160)
+G0 X14.435667 Y70.061667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y69.977000
+G1 X13.800667 Y69.596000
+G1 X13.716000 Y69.257333
+G1 X13.758333 Y68.876333
+G1 X14.012333 Y68.537667
+G1 X14.308667 Y68.368333
+G1 X14.859000 Y68.368333
+G1 X15.197667 Y68.580000
+G1 X15.409333 Y68.918667
+G1 X15.409333 Y69.469000
+G1 X15.197667 Y69.807667
+G1 X14.859000 Y70.019333
+G1 X14.435667 Y70.061667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 161)
+G0 X16.975667 Y70.061667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y69.977000
+G1 X16.340667 Y69.596000
+G1 X16.256000 Y69.257333
+G1 X16.298333 Y68.876333
+G1 X16.552333 Y68.537667
+G1 X16.848667 Y68.368333
+G1 X17.399000 Y68.368333
+G1 X17.737667 Y68.580000
+G1 X17.949333 Y68.918667
+G1 X17.949333 Y69.469000
+G1 X17.737667 Y69.807667
+G1 X17.399000 Y70.019333
+G1 X16.975667 Y70.061667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 162)
+G0 X19.515667 Y70.061667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y69.977000
+G1 X18.880667 Y69.596000
+G1 X18.796000 Y69.257333
+G1 X18.838333 Y68.876333
+G1 X19.092333 Y68.537667
+G1 X19.388667 Y68.368333
+G1 X19.939000 Y68.368333
+G1 X20.277667 Y68.580000
+G1 X20.489333 Y68.918667
+G1 X20.489333 Y69.469000
+G1 X20.277667 Y69.807667
+G1 X19.939000 Y70.019333
+G1 X19.515667 Y70.061667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 163)
+G0 X162.390667 Y69.257333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X162.136667 Y69.172667
+G1 X161.755667 Y68.791667
+G1 X161.671000 Y68.453000
+G1 X161.713333 Y68.072000
+G1 X161.967333 Y67.733333
+G1 X162.263667 Y67.564000
+G1 X162.814000 Y67.564000
+G1 X163.152667 Y67.775667
+G1 X163.364333 Y68.114333
+G1 X163.364333 Y68.664667
+G1 X163.152667 Y69.003333
+G1 X162.814000 Y69.215000
+G1 X162.390667 Y69.257333
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 164)
+G0 X102.700667 Y69.172667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X102.446667 Y68.961000
+G1 X102.235000 Y68.707000
+G1 X102.235000 Y68.410667
+G1 X102.446667 Y68.156667
+G1 X102.700667 Y67.945000
+G1 X102.954667 Y67.945000
+G1 X103.208667 Y68.072000
+G1 X103.420333 Y68.326000
+G1 X156.252333 Y68.326000
+G1 X156.464000 Y68.072000
+G1 X156.718000 Y67.945000
+G1 X156.972000 Y67.945000
+G1 X157.226000 Y68.156667
+G1 X157.437667 Y68.410667
+G1 X157.437667 Y68.707000
+G1 X157.226000 Y68.961000
+G1 X156.972000 Y69.172667
+G1 X156.718000 Y69.172667
+G1 X156.464000 Y69.045667
+G1 X156.252333 Y68.791667
+G1 X103.420333 Y68.791667
+G1 X103.208667 Y69.045667
+G1 X102.954667 Y69.172667
+G1 X102.700667 Y69.172667
+G0 Z#100
+(polygon end, distance 112.38)
+(polygon 165)
+G0 X81.703333 Y69.130333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X81.322333 Y69.003333
+G1 X80.814333 Y68.495333
+G1 X80.687333 Y68.072000
+G1 X80.687333 Y67.775667
+G1 X80.814333 Y67.352333
+G1 X81.322333 Y66.844333
+G1 X81.788000 Y66.717333
+G1 X82.211333 Y66.759667
+G1 X82.634667 Y66.971333
+G1 X88.138000 Y66.971333
+G1 X88.561333 Y66.759667
+G1 X88.984667 Y66.717333
+G1 X89.450333 Y66.844333
+G1 X89.958333 Y67.352333
+G1 X90.085333 Y67.775667
+G1 X90.085333 Y68.072000
+G1 X89.958333 Y68.495333
+G1 X89.450333 Y69.003333
+G1 X88.984667 Y69.130333
+G1 X88.561333 Y69.088000
+G1 X88.138000 Y68.876333
+G1 X82.634667 Y68.876333
+G1 X82.211333 Y69.088000
+G1 X81.703333 Y69.130333
+G0 Z#100
+(polygon end, distance 21.77)
+(polygon 166)
+G0 X79.205667 Y68.537667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X78.951667 Y68.326000
+G1 X78.740000 Y68.072000
+G1 X78.782333 Y67.648667
+G1 X78.613000 Y67.521667
+G1 X42.460333 Y67.521667
+G1 X42.248667 Y67.775667
+G1 X41.994667 Y67.902667
+G1 X41.740667 Y67.902667
+G1 X41.486667 Y67.691000
+G1 X41.275000 Y67.437000
+G1 X41.275000 Y67.140667
+G1 X41.486667 Y66.886667
+G1 X41.740667 Y66.675000
+G1 X41.994667 Y66.675000
+G1 X42.248667 Y66.802000
+G1 X42.460333 Y67.056000
+G1 X78.782333 Y67.056000
+G1 X79.121000 Y67.352333
+G1 X79.502000 Y67.310000
+G1 X79.756000 Y67.521667
+G1 X79.967667 Y67.775667
+G1 X79.967667 Y68.072000
+G1 X79.756000 Y68.326000
+G1 X79.502000 Y68.537667
+G1 X79.205667 Y68.537667
+G0 Z#100
+(polygon end, distance 79.88)
+(polygon 167)
+G0 X92.540667 Y68.537667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X92.286667 Y68.326000
+G1 X92.075000 Y68.072000
+G1 X92.075000 Y67.775667
+G1 X92.286667 Y67.521667
+G1 X92.540667 Y67.310000
+G1 X92.794667 Y67.310000
+G1 X93.048667 Y67.437000
+G1 X93.260333 Y67.691000
+G1 X99.737333 Y67.691000
+G1 X99.949000 Y67.437000
+G1 X100.203000 Y67.310000
+G1 X100.457000 Y67.310000
+G1 X100.711000 Y67.521667
+G1 X100.922667 Y67.775667
+G1 X100.922667 Y68.072000
+G1 X100.711000 Y68.326000
+G1 X100.457000 Y68.537667
+G1 X100.203000 Y68.537667
+G1 X99.949000 Y68.410667
+G1 X99.737333 Y68.156667
+G1 X93.260333 Y68.156667
+G1 X93.048667 Y68.410667
+G1 X92.794667 Y68.537667
+G1 X92.540667 Y68.537667
+G0 Z#100
+(polygon end, distance 19.67)
+(polygon 168)
+G0 X159.808333 Y67.945000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X159.385000 Y67.733333
+G1 X159.173333 Y67.437000
+G1 X159.046333 Y67.140667
+G1 X159.046333 Y65.743667
+G1 X158.326667 Y65.066333
+G1 X126.026333 Y65.066333
+G1 X126.026333 Y66.167000
+G1 X125.899333 Y66.463333
+G1 X125.899333 Y66.844333
+G1 X125.518333 Y66.844333
+G1 X125.222000 Y66.971333
+G1 X124.925667 Y66.971333
+G1 X124.629333 Y66.844333
+G1 X124.248333 Y66.844333
+G1 X124.248333 Y66.463333
+G1 X124.121333 Y66.167000
+G1 X124.121333 Y65.066333
+G1 X117.136333 Y65.066333
+G1 X117.094000 Y66.294000
+G1 X116.840000 Y66.675000
+G1 X116.459000 Y66.929000
+G1 X115.908667 Y66.929000
+G1 X115.527667 Y66.675000
+G1 X115.273667 Y66.294000
+G1 X115.231333 Y65.066333
+G1 X114.046000 Y65.066333
+G1 X112.225667 Y66.844333
+G1 X111.844667 Y66.971333
+G1 X111.463667 Y66.929000
+G1 X111.082667 Y66.675000
+G1 X110.828667 Y66.294000
+G1 X110.786333 Y65.913000
+G1 X110.913333 Y65.532000
+G1 X113.030000 Y63.373000
+G1 X113.453333 Y63.161333
+G1 X158.919333 Y63.161333
+G1 X159.342667 Y63.373000
+G1 X160.824333 Y64.897000
+G1 X160.951333 Y65.278000
+G1 X160.909000 Y67.267667
+G1 X160.655000 Y67.648667
+G1 X160.274000 Y67.902667
+G1 X159.808333 Y67.945000
+G0 Z#100
+(polygon end, distance 114.53)
+(polygon 169)
+G0 X14.435667 Y67.521667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y67.437000
+G1 X13.800667 Y67.056000
+G1 X13.716000 Y66.717333
+G1 X13.758333 Y66.336333
+G1 X14.012333 Y65.997667
+G1 X14.308667 Y65.828333
+G1 X14.859000 Y65.828333
+G1 X15.197667 Y66.040000
+G1 X15.409333 Y66.378667
+G1 X15.409333 Y66.929000
+G1 X15.197667 Y67.267667
+G1 X14.859000 Y67.479333
+G1 X14.435667 Y67.521667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 170)
+G0 X16.975667 Y67.521667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y67.437000
+G1 X16.340667 Y67.056000
+G1 X16.256000 Y66.717333
+G1 X16.298333 Y66.336333
+G1 X16.552333 Y65.997667
+G1 X16.848667 Y65.828333
+G1 X17.399000 Y65.828333
+G1 X17.737667 Y66.040000
+G1 X17.949333 Y66.378667
+G1 X17.949333 Y66.929000
+G1 X17.737667 Y67.267667
+G1 X17.399000 Y67.479333
+G1 X16.975667 Y67.521667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 171)
+G0 X19.515667 Y67.521667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y67.437000
+G1 X18.880667 Y67.056000
+G1 X18.796000 Y66.717333
+G1 X18.838333 Y66.336333
+G1 X19.092333 Y65.997667
+G1 X19.388667 Y65.828333
+G1 X19.939000 Y65.828333
+G1 X20.277667 Y66.040000
+G1 X20.489333 Y66.378667
+G1 X20.489333 Y66.929000
+G1 X20.277667 Y67.267667
+G1 X19.939000 Y67.479333
+G1 X19.515667 Y67.521667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 172)
+G0 X34.120667 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X33.909000 Y66.802000
+G1 X33.612667 Y66.590333
+G1 X33.443333 Y66.294000
+G1 X33.401000 Y65.955333
+G1 X33.485667 Y65.616667
+G1 X33.824333 Y65.278000
+G1 X33.824333 Y64.050333
+G1 X33.909000 Y63.881000
+G1 X35.856333 Y61.891333
+G1 X36.110333 Y61.764333
+G1 X48.175333 Y61.764333
+G1 X48.217667 Y61.637333
+G1 X48.556333 Y61.383333
+G1 X48.937333 Y61.341000
+G1 X49.276000 Y61.425667
+G1 X49.614667 Y61.764333
+G1 X59.605333 Y61.764333
+G1 X59.647667 Y61.637333
+G1 X59.986333 Y61.383333
+G1 X60.367333 Y61.341000
+G1 X60.706000 Y61.425667
+G1 X61.044667 Y61.764333
+G1 X77.978000 Y61.764333
+G1 X78.316667 Y61.425667
+G1 X78.655333 Y61.341000
+G1 X79.036333 Y61.383333
+G1 X79.375000 Y61.637333
+G1 X79.544333 Y61.933667
+G1 X79.544333 Y62.484000
+G1 X79.375000 Y62.780333
+G1 X79.036333 Y63.034333
+G1 X78.655333 Y63.076667
+G1 X78.316667 Y62.992000
+G1 X77.978000 Y62.653333
+G1 X61.002333 Y62.653333
+G1 X60.960000 Y62.780333
+G1 X60.621333 Y63.034333
+G1 X60.240333 Y63.076667
+G1 X59.901667 Y62.992000
+G1 X59.563000 Y62.653333
+G1 X49.572333 Y62.653333
+G1 X49.530000 Y62.780333
+G1 X49.191333 Y63.034333
+G1 X48.810333 Y63.076667
+G1 X48.471667 Y62.992000
+G1 X48.133000 Y62.653333
+G1 X36.322000 Y62.653333
+G1 X34.713333 Y64.304333
+G1 X34.713333 Y65.278000
+G1 X35.052000 Y65.616667
+G1 X35.136667 Y65.955333
+G1 X35.094333 Y66.336333
+G1 X34.840333 Y66.675000
+G1 X34.544000 Y66.844333
+G1 X34.120667 Y66.886667
+G0 Z#100
+(polygon end, distance 101.61)
+(polygon 173)
+G0 X37.846000 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X37.846000 Y65.151000
+G1 X39.581667 Y65.151000
+G1 X39.581667 Y66.886667
+G1 X37.846000 Y66.886667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 174)
+G0 X48.725667 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X48.471667 Y66.802000
+G1 X48.090667 Y66.421000
+G1 X48.006000 Y66.082333
+G1 X48.048333 Y65.701333
+G1 X48.302333 Y65.362667
+G1 X48.598667 Y65.193333
+G1 X49.149000 Y65.193333
+G1 X49.487667 Y65.405000
+G1 X49.699333 Y65.743667
+G1 X49.699333 Y66.294000
+G1 X49.487667 Y66.632667
+G1 X49.149000 Y66.844333
+G1 X48.725667 Y66.886667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 175)
+G0 X53.170667 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X52.916667 Y66.802000
+G1 X52.535667 Y66.421000
+G1 X52.451000 Y66.082333
+G1 X52.493333 Y65.701333
+G1 X52.747333 Y65.362667
+G1 X53.043667 Y65.193333
+G1 X53.594000 Y65.193333
+G1 X53.932667 Y65.405000
+G1 X54.144333 Y65.786000
+G1 X57.192333 Y65.786000
+G1 X57.404000 Y65.532000
+G1 X57.658000 Y65.405000
+G1 X57.912000 Y65.405000
+G1 X58.166000 Y65.616667
+G1 X58.377667 Y65.870667
+G1 X58.377667 Y66.167000
+G1 X58.166000 Y66.421000
+G1 X57.912000 Y66.632667
+G1 X57.658000 Y66.632667
+G1 X57.404000 Y66.505667
+G1 X57.192333 Y66.251667
+G1 X54.144333 Y66.251667
+G1 X53.932667 Y66.632667
+G1 X53.594000 Y66.844333
+G1 X53.170667 Y66.886667
+G0 Z#100
+(polygon end, distance 14.40)
+(polygon 176)
+G0 X62.611000 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X62.611000 Y65.151000
+G1 X64.346667 Y65.151000
+G1 X64.346667 Y65.786000
+G1 X67.691000 Y65.786000
+G1 X67.691000 Y65.151000
+G1 X69.088000 Y65.151000
+G1 X69.765333 Y64.516000
+G1 X87.037333 Y64.516000
+G1 X87.249000 Y64.262000
+G1 X87.503000 Y64.135000
+G1 X87.757000 Y64.135000
+G1 X88.011000 Y64.346667
+G1 X88.222667 Y64.600667
+G1 X88.222667 Y64.897000
+G1 X88.011000 Y65.151000
+G1 X87.757000 Y65.362667
+G1 X87.503000 Y65.362667
+G1 X87.249000 Y65.235667
+G1 X87.037333 Y64.981667
+G1 X69.934667 Y64.981667
+G1 X69.426667 Y65.447333
+G1 X69.426667 Y66.886667
+G1 X67.691000 Y66.886667
+G1 X67.691000 Y66.251667
+G1 X64.346667 Y66.251667
+G1 X64.346667 Y66.886667
+G1 X62.611000 Y66.886667
+G0 Z#100
+(polygon end, distance 58.36)
+(polygon 177)
+G0 X78.570667 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X78.316667 Y66.802000
+G1 X77.935667 Y66.421000
+G1 X77.851000 Y66.082333
+G1 X77.893333 Y65.701333
+G1 X78.147333 Y65.362667
+G1 X78.443667 Y65.193333
+G1 X78.994000 Y65.193333
+G1 X79.332667 Y65.405000
+G1 X79.544333 Y65.743667
+G1 X79.544333 Y66.294000
+G1 X79.332667 Y66.632667
+G1 X78.994000 Y66.844333
+G1 X78.570667 Y66.886667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 178)
+G0 X83.015667 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X82.761667 Y66.802000
+G1 X82.380667 Y66.421000
+G1 X82.296000 Y66.082333
+G1 X82.338333 Y65.701333
+G1 X82.592333 Y65.362667
+G1 X82.888667 Y65.193333
+G1 X83.439000 Y65.193333
+G1 X83.777667 Y65.405000
+G1 X83.989333 Y65.743667
+G1 X83.989333 Y66.294000
+G1 X83.777667 Y66.632667
+G1 X83.439000 Y66.844333
+G1 X83.015667 Y66.886667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 179)
+G0 X92.456000 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X92.456000 Y65.151000
+G1 X94.191667 Y65.151000
+G1 X94.191667 Y66.886667
+G1 X92.456000 Y66.886667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 180)
+G0 X98.171000 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X98.171000 Y65.151000
+G1 X99.906667 Y65.151000
+G1 X99.906667 Y66.886667
+G1 X98.171000 Y66.886667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 181)
+G0 X101.430667 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X101.176667 Y66.802000
+G1 X100.795667 Y66.421000
+G1 X100.711000 Y66.082333
+G1 X100.753333 Y65.701333
+G1 X101.007333 Y65.362667
+G1 X101.303667 Y65.193333
+G1 X101.854000 Y65.193333
+G1 X102.192667 Y65.405000
+G1 X102.404333 Y65.743667
+G1 X102.404333 Y66.294000
+G1 X102.192667 Y66.632667
+G1 X101.854000 Y66.844333
+G1 X101.430667 Y66.886667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 182)
+G0 X106.426000 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X106.426000 Y65.151000
+G1 X108.161667 Y65.151000
+G1 X108.161667 Y66.886667
+G1 X106.426000 Y66.886667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 183)
+G0 X109.685667 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X109.431667 Y66.802000
+G1 X109.050667 Y66.421000
+G1 X108.966000 Y66.082333
+G1 X109.008333 Y65.701333
+G1 X109.262333 Y65.362667
+G1 X109.558667 Y65.193333
+G1 X110.109000 Y65.193333
+G1 X110.447667 Y65.405000
+G1 X110.659333 Y65.743667
+G1 X110.659333 Y66.294000
+G1 X110.447667 Y66.632667
+G1 X110.109000 Y66.844333
+G1 X109.685667 Y66.886667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 184)
+G0 X117.856000 Y66.886667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.856000 Y65.151000
+G1 X119.591667 Y65.151000
+G1 X119.591667 Y66.886667
+G1 X117.856000 Y66.886667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 185)
+G0 X135.085667 Y66.844333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.831667 Y66.717333
+G1 X134.577667 Y66.505667
+G1 X134.450667 Y66.251667
+G1 X130.090333 Y66.251667
+G1 X129.878667 Y66.505667
+G1 X129.624667 Y66.632667
+G1 X129.370667 Y66.632667
+G1 X129.116667 Y66.421000
+G1 X128.905000 Y66.167000
+G1 X128.905000 Y65.870667
+G1 X129.116667 Y65.616667
+G1 X129.370667 Y65.405000
+G1 X129.624667 Y65.405000
+G1 X129.878667 Y65.532000
+G1 X130.090333 Y65.786000
+G1 X134.450667 Y65.786000
+G1 X134.577667 Y65.532000
+G1 X134.831667 Y65.320333
+G1 X135.128000 Y65.193333
+G1 X135.339667 Y65.193333
+G1 X135.636000 Y65.320333
+G1 X135.890000 Y65.532000
+G1 X136.059333 Y65.870667
+G1 X136.059333 Y66.167000
+G1 X135.890000 Y66.505667
+G1 X135.636000 Y66.717333
+G1 X135.339667 Y66.844333
+G1 X135.085667 Y66.844333
+G0 Z#100
+(polygon end, distance 16.74)
+(polygon 186)
+G0 X85.555667 Y66.632667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X85.301667 Y66.421000
+G1 X85.090000 Y66.167000
+G1 X85.090000 Y65.870667
+G1 X85.301667 Y65.616667
+G1 X85.555667 Y65.405000
+G1 X85.809667 Y65.405000
+G1 X86.063667 Y65.532000
+G1 X86.275333 Y65.786000
+G1 X88.307333 Y65.786000
+G1 X88.519000 Y65.532000
+G1 X88.773000 Y65.405000
+G1 X89.027000 Y65.405000
+G1 X89.281000 Y65.616667
+G1 X89.492667 Y65.870667
+G1 X89.492667 Y66.167000
+G1 X89.281000 Y66.421000
+G1 X89.027000 Y66.632667
+G1 X88.773000 Y66.632667
+G1 X88.519000 Y66.505667
+G1 X88.307333 Y66.251667
+G1 X86.275333 Y66.251667
+G1 X86.063667 Y66.505667
+G1 X85.809667 Y66.632667
+G1 X85.555667 Y66.632667
+G0 Z#100
+(polygon end, distance 10.78)
+(polygon 187)
+G0 X14.435667 Y64.981667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y64.897000
+G1 X13.800667 Y64.516000
+G1 X13.716000 Y64.177333
+G1 X13.758333 Y63.796333
+G1 X14.012333 Y63.457667
+G1 X14.308667 Y63.288333
+G1 X14.859000 Y63.288333
+G1 X15.197667 Y63.500000
+G1 X15.409333 Y63.838667
+G1 X15.409333 Y64.389000
+G1 X15.197667 Y64.727667
+G1 X14.859000 Y64.939333
+G1 X14.435667 Y64.981667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 188)
+G0 X16.975667 Y64.981667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y64.897000
+G1 X16.340667 Y64.516000
+G1 X16.256000 Y64.177333
+G1 X16.298333 Y63.796333
+G1 X16.552333 Y63.457667
+G1 X16.848667 Y63.288333
+G1 X17.399000 Y63.288333
+G1 X17.737667 Y63.500000
+G1 X17.949333 Y63.838667
+G1 X17.949333 Y64.389000
+G1 X17.737667 Y64.727667
+G1 X17.399000 Y64.939333
+G1 X16.975667 Y64.981667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 189)
+G0 X19.515667 Y64.981667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y64.897000
+G1 X18.880667 Y64.516000
+G1 X18.796000 Y64.177333
+G1 X18.838333 Y63.796333
+G1 X19.092333 Y63.457667
+G1 X19.388667 Y63.288333
+G1 X19.939000 Y63.288333
+G1 X20.277667 Y63.500000
+G1 X20.489333 Y63.838667
+G1 X20.489333 Y64.389000
+G1 X20.277667 Y64.727667
+G1 X19.939000 Y64.939333
+G1 X19.515667 Y64.981667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 190)
+G0 X36.660667 Y64.092667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X36.406667 Y63.881000
+G1 X36.195000 Y63.627000
+G1 X36.195000 Y63.330667
+G1 X36.406667 Y63.076667
+G1 X36.660667 Y62.865000
+G1 X36.914667 Y62.865000
+G1 X37.168667 Y62.992000
+G1 X37.380333 Y63.246000
+G1 X97.197333 Y63.246000
+G1 X97.409000 Y62.992000
+G1 X97.663000 Y62.865000
+G1 X97.917000 Y62.865000
+G1 X98.171000 Y63.076667
+G1 X98.382667 Y63.330667
+G1 X98.382667 Y63.627000
+G1 X98.171000 Y63.881000
+G1 X97.917000 Y64.092667
+G1 X97.663000 Y64.092667
+G1 X97.409000 Y63.965667
+G1 X97.197333 Y63.711667
+G1 X37.380333 Y63.711667
+G1 X37.168667 Y63.965667
+G1 X36.914667 Y64.092667
+G1 X36.660667 Y64.092667
+G0 Z#100
+(polygon end, distance 126.35)
+(polygon 191)
+G0 X82.380667 Y63.076667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X82.126667 Y62.992000
+G1 X81.745667 Y62.611000
+G1 X81.661000 Y62.272333
+G1 X81.703333 Y61.891333
+G1 X81.957333 Y61.552667
+G1 X82.253667 Y61.383333
+G1 X82.592333 Y61.341000
+G1 X82.931000 Y61.425667
+G1 X83.269667 Y61.722000
+G1 X117.983000 Y61.722000
+G1 X118.321667 Y61.425667
+G1 X118.618000 Y61.341000
+G1 X118.829667 Y61.341000
+G1 X119.126000 Y61.425667
+G1 X119.464667 Y61.722000
+G1 X134.493000 Y61.722000
+G1 X134.831667 Y61.425667
+G1 X135.128000 Y61.341000
+G1 X135.339667 Y61.341000
+G1 X135.636000 Y61.425667
+G1 X135.974667 Y61.722000
+G1 X138.938000 Y61.722000
+G1 X139.276667 Y61.425667
+G1 X139.615333 Y61.341000
+G1 X139.996333 Y61.383333
+G1 X140.335000 Y61.637333
+G1 X140.504333 Y61.933667
+G1 X140.504333 Y62.484000
+G1 X140.335000 Y62.780333
+G1 X139.996333 Y63.034333
+G1 X139.615333 Y63.076667
+G1 X139.276667 Y62.992000
+G1 X138.938000 Y62.695667
+G1 X135.974667 Y62.695667
+G1 X135.636000 Y62.992000
+G1 X135.339667 Y63.076667
+G1 X135.128000 Y63.076667
+G1 X134.831667 Y62.992000
+G1 X134.493000 Y62.695667
+G1 X119.464667 Y62.695667
+G1 X119.126000 Y62.992000
+G1 X118.829667 Y63.076667
+G1 X118.618000 Y63.076667
+G1 X118.321667 Y62.992000
+G1 X117.983000 Y62.695667
+G1 X83.269667 Y62.695667
+G1 X82.931000 Y62.992000
+G1 X82.634667 Y63.076667
+G1 X82.380667 Y63.076667
+G0 Z#100
+(polygon end, distance 121.22)
+(polygon 192)
+G0 X14.435667 Y62.441667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y62.357000
+G1 X13.800667 Y61.976000
+G1 X13.716000 Y61.637333
+G1 X13.758333 Y61.256333
+G1 X14.012333 Y60.917667
+G1 X14.308667 Y60.748333
+G1 X14.859000 Y60.748333
+G1 X15.197667 Y60.960000
+G1 X15.409333 Y61.298667
+G1 X15.409333 Y61.849000
+G1 X15.197667 Y62.187667
+G1 X14.859000 Y62.399333
+G1 X14.435667 Y62.441667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 193)
+G0 X16.975667 Y62.441667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y62.357000
+G1 X16.340667 Y61.976000
+G1 X16.256000 Y61.637333
+G1 X16.298333 Y61.256333
+G1 X16.552333 Y60.917667
+G1 X16.848667 Y60.748333
+G1 X17.399000 Y60.748333
+G1 X17.737667 Y60.960000
+G1 X17.949333 Y61.298667
+G1 X17.949333 Y61.849000
+G1 X17.737667 Y62.187667
+G1 X17.399000 Y62.399333
+G1 X16.975667 Y62.441667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 194)
+G0 X19.515667 Y62.441667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y62.357000
+G1 X18.880667 Y61.976000
+G1 X18.796000 Y61.637333
+G1 X18.838333 Y61.256333
+G1 X19.092333 Y60.917667
+G1 X19.388667 Y60.748333
+G1 X19.939000 Y60.748333
+G1 X20.277667 Y60.960000
+G1 X20.489333 Y61.298667
+G1 X20.489333 Y61.849000
+G1 X20.277667 Y62.187667
+G1 X19.939000 Y62.399333
+G1 X19.515667 Y62.441667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 195)
+G0 X160.993667 Y62.018333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X160.612667 Y61.891333
+G1 X160.189333 Y61.679667
+G1 X159.723667 Y61.214000
+G1 X159.512000 Y60.790667
+G1 X159.385000 Y60.367333
+G1 X159.385000 Y59.901667
+G1 X159.512000 Y59.478333
+G1 X159.723667 Y59.055000
+G1 X160.189333 Y58.589333
+G1 X160.612667 Y58.377667
+G1 X161.036000 Y58.250667
+G1 X161.501667 Y58.250667
+G1 X161.925000 Y58.377667
+G1 X162.348333 Y58.589333
+G1 X162.814000 Y59.055000
+G1 X163.025667 Y59.478333
+G1 X163.152667 Y59.901667
+G1 X163.152667 Y60.367333
+G1 X163.025667 Y60.790667
+G1 X162.814000 Y61.214000
+G1 X162.348333 Y61.679667
+G1 X161.925000 Y61.891333
+G1 X161.501667 Y62.018333
+G1 X160.993667 Y62.018333
+G0 Z#100
+(polygon end, distance 11.82)
+(polygon 196)
+G0 X90.635667 Y61.552667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X90.381667 Y61.341000
+G1 X90.170000 Y61.087000
+G1 X90.170000 Y60.790667
+G1 X90.381667 Y60.536667
+G1 X90.635667 Y60.325000
+G1 X90.889667 Y60.325000
+G1 X91.143667 Y60.452000
+G1 X91.355333 Y60.706000
+G1 X122.597333 Y60.706000
+G1 X122.809000 Y60.452000
+G1 X123.063000 Y60.325000
+G1 X123.317000 Y60.325000
+G1 X123.571000 Y60.536667
+G1 X123.782667 Y60.790667
+G1 X123.782667 Y61.087000
+G1 X123.571000 Y61.341000
+G1 X123.317000 Y61.552667
+G1 X123.063000 Y61.552667
+G1 X122.809000 Y61.425667
+G1 X122.597333 Y61.171667
+G1 X91.355333 Y61.171667
+G1 X91.143667 Y61.425667
+G1 X90.889667 Y61.552667
+G1 X90.635667 Y61.552667
+G0 Z#100
+(polygon end, distance 69.20)
+(polygon 197)
+G0 X113.495667 Y60.536667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X113.241667 Y60.452000
+G1 X112.860667 Y60.071000
+G1 X112.776000 Y59.732333
+G1 X112.818333 Y59.351333
+G1 X113.072333 Y59.012667
+G1 X113.368667 Y58.843333
+G1 X113.707333 Y58.801000
+G1 X114.046000 Y58.885667
+G1 X114.384667 Y59.224333
+G1 X115.443000 Y59.224333
+G1 X115.781667 Y58.885667
+G1 X116.120333 Y58.801000
+G1 X116.501333 Y58.843333
+G1 X116.840000 Y59.097333
+G1 X117.009333 Y59.393667
+G1 X117.009333 Y59.944000
+G1 X116.840000 Y60.240333
+G1 X116.501333 Y60.494333
+G1 X116.120333 Y60.536667
+G1 X115.781667 Y60.452000
+G1 X115.443000 Y60.113333
+G1 X114.384667 Y60.113333
+G1 X114.046000 Y60.452000
+G1 X113.749667 Y60.536667
+G1 X113.495667 Y60.536667
+G0 Z#100
+(polygon end, distance 11.13)
+(polygon 198)
+G0 X117.856000 Y60.536667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.856000 Y58.801000
+G1 X119.591667 Y58.801000
+G1 X119.591667 Y59.224333
+G1 X124.206000 Y59.224333
+G1 X124.206000 Y58.801000
+G1 X125.941667 Y58.801000
+G1 X125.941667 Y59.224333
+G1 X131.953000 Y59.224333
+G1 X132.291667 Y58.885667
+G1 X132.630333 Y58.801000
+G1 X133.011333 Y58.843333
+G1 X133.350000 Y59.097333
+G1 X133.519333 Y59.393667
+G1 X133.519333 Y59.944000
+G1 X133.350000 Y60.240333
+G1 X133.011333 Y60.494333
+G1 X132.630333 Y60.536667
+G1 X132.291667 Y60.452000
+G1 X131.953000 Y60.113333
+G1 X125.941667 Y60.113333
+G1 X125.941667 Y60.536667
+G1 X124.206000 Y60.536667
+G1 X124.206000 Y60.113333
+G1 X119.591667 Y60.113333
+G1 X119.591667 Y60.536667
+G1 X117.856000 Y60.536667
+G0 Z#100
+(polygon end, distance 36.97)
+(polygon 199)
+G0 X135.085667 Y60.536667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.831667 Y60.452000
+G1 X134.450667 Y60.071000
+G1 X134.366000 Y59.732333
+G1 X134.408333 Y59.351333
+G1 X134.662333 Y59.012667
+G1 X134.958667 Y58.843333
+G1 X135.509000 Y58.843333
+G1 X135.847667 Y59.055000
+G1 X136.059333 Y59.393667
+G1 X136.059333 Y59.944000
+G1 X135.847667 Y60.282667
+G1 X135.509000 Y60.494333
+G1 X135.085667 Y60.536667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 200)
+G0 X55.075667 Y60.282667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X54.821667 Y60.071000
+G1 X54.610000 Y59.817000
+G1 X54.610000 Y59.520667
+G1 X54.821667 Y59.266667
+G1 X55.075667 Y59.055000
+G1 X55.329667 Y59.055000
+G1 X55.583667 Y59.182000
+G1 X55.795333 Y59.436000
+G1 X95.292333 Y59.436000
+G1 X95.504000 Y59.182000
+G1 X95.758000 Y59.055000
+G1 X96.012000 Y59.055000
+G1 X96.266000 Y59.266667
+G1 X96.477667 Y59.520667
+G1 X96.477667 Y59.817000
+G1 X96.266000 Y60.071000
+G1 X96.012000 Y60.282667
+G1 X95.758000 Y60.282667
+G1 X95.504000 Y60.155667
+G1 X95.292333 Y59.901667
+G1 X55.795333 Y59.901667
+G1 X55.583667 Y60.155667
+G1 X55.329667 Y60.282667
+G1 X55.075667 Y60.282667
+G0 Z#100
+(polygon end, distance 85.71)
+(polygon 201)
+G0 X14.435667 Y59.901667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y59.817000
+G1 X13.800667 Y59.436000
+G1 X13.716000 Y59.097333
+G1 X13.758333 Y58.716333
+G1 X14.012333 Y58.377667
+G1 X14.308667 Y58.208333
+G1 X14.859000 Y58.208333
+G1 X15.197667 Y58.420000
+G1 X15.409333 Y58.758667
+G1 X15.409333 Y59.309000
+G1 X15.197667 Y59.647667
+G1 X14.859000 Y59.859333
+G1 X14.435667 Y59.901667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 202)
+G0 X16.975667 Y59.901667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y59.817000
+G1 X16.340667 Y59.436000
+G1 X16.256000 Y59.097333
+G1 X16.298333 Y58.716333
+G1 X16.552333 Y58.377667
+G1 X16.848667 Y58.208333
+G1 X17.399000 Y58.208333
+G1 X17.737667 Y58.420000
+G1 X17.949333 Y58.758667
+G1 X17.949333 Y59.309000
+G1 X17.737667 Y59.647667
+G1 X17.399000 Y59.859333
+G1 X16.975667 Y59.901667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 203)
+G0 X19.515667 Y59.901667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y59.817000
+G1 X18.880667 Y59.436000
+G1 X18.796000 Y59.097333
+G1 X18.838333 Y58.716333
+G1 X19.092333 Y58.377667
+G1 X19.388667 Y58.208333
+G1 X19.939000 Y58.208333
+G1 X20.277667 Y58.420000
+G1 X20.489333 Y58.758667
+G1 X20.489333 Y59.309000
+G1 X20.277667 Y59.647667
+G1 X19.939000 Y59.859333
+G1 X19.515667 Y59.901667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 204)
+G0 X141.435667 Y58.631667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X141.181667 Y58.547000
+G1 X140.843000 Y58.208333
+G1 X71.120000 Y58.208333
+G1 X70.950667 Y58.420000
+G1 X70.612000 Y58.589333
+G1 X70.315667 Y58.589333
+G1 X69.977000 Y58.420000
+G1 X69.765333 Y58.166000
+G1 X69.638333 Y57.869667
+G1 X69.638333 Y57.658000
+G1 X69.765333 Y57.361667
+G1 X69.977000 Y57.107667
+G1 X70.315667 Y56.938333
+G1 X62.145333 Y56.938333
+G1 X61.976000 Y56.853667
+G1 X58.716333 Y53.636333
+G1 X58.589333 Y53.382333
+G1 X58.589333 Y51.900667
+G1 X57.912000 Y51.900667
+G1 X57.912000 Y49.657000
+G1 X60.155667 Y49.657000
+G1 X60.155667 Y51.900667
+G1 X59.478333 Y51.900667
+G1 X59.478333 Y53.128333
+G1 X62.357000 Y56.049333
+G1 X109.050667 Y56.049333
+G1 X110.278333 Y54.779333
+G1 X110.278333 Y54.483000
+G1 X110.405333 Y54.186667
+G1 X110.617000 Y53.932667
+G1 X110.955667 Y53.763333
+G1 X111.209667 Y53.763333
+G1 X111.506000 Y53.890333
+G1 X111.760000 Y54.102000
+G1 X111.929333 Y54.440667
+G1 X111.929333 Y54.737000
+G1 X111.760000 Y55.075667
+G1 X111.506000 Y55.287333
+G1 X111.209667 Y55.414333
+G1 X110.913333 Y55.414333
+G1 X109.431667 Y56.853667
+G1 X109.262333 Y56.938333
+G1 X70.612000 Y56.938333
+G1 X70.950667 Y57.107667
+G1 X71.120000 Y57.319333
+G1 X140.843000 Y57.319333
+G1 X141.181667 Y56.980667
+G1 X141.520333 Y56.896000
+G1 X141.901333 Y56.938333
+G1 X142.240000 Y57.192333
+G1 X142.409333 Y57.488667
+G1 X142.409333 Y58.039000
+G1 X142.197667 Y58.377667
+G1 X141.859000 Y58.589333
+G1 X141.435667 Y58.631667
+G0 Z#100
+(polygon end, distance 269.54)
+(polygon 205)
+G0 X14.435667 Y57.361667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y57.277000
+G1 X13.800667 Y56.896000
+G1 X13.716000 Y56.557333
+G1 X13.758333 Y56.176333
+G1 X14.012333 Y55.837667
+G1 X14.308667 Y55.668333
+G1 X14.859000 Y55.668333
+G1 X15.197667 Y55.880000
+G1 X15.409333 Y56.218667
+G1 X15.409333 Y56.769000
+G1 X15.197667 Y57.107667
+G1 X14.859000 Y57.319333
+G1 X14.435667 Y57.361667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 206)
+G0 X16.975667 Y57.361667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y57.277000
+G1 X16.340667 Y56.896000
+G1 X16.256000 Y56.557333
+G1 X16.298333 Y56.176333
+G1 X16.552333 Y55.837667
+G1 X16.848667 Y55.668333
+G1 X17.399000 Y55.668333
+G1 X17.737667 Y55.880000
+G1 X17.949333 Y56.218667
+G1 X17.949333 Y56.769000
+G1 X17.737667 Y57.107667
+G1 X17.399000 Y57.319333
+G1 X16.975667 Y57.361667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 207)
+G0 X19.515667 Y57.361667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y57.277000
+G1 X18.880667 Y56.896000
+G1 X18.796000 Y56.557333
+G1 X18.838333 Y56.176333
+G1 X19.092333 Y55.837667
+G1 X19.388667 Y55.668333
+G1 X19.939000 Y55.668333
+G1 X20.277667 Y55.880000
+G1 X20.489333 Y56.218667
+G1 X20.489333 Y56.769000
+G1 X20.277667 Y57.107667
+G1 X19.939000 Y57.319333
+G1 X19.515667 Y57.361667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 208)
+G0 X123.020667 Y57.107667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X122.766667 Y56.896000
+G1 X122.555000 Y56.642000
+G1 X122.555000 Y56.345667
+G1 X122.766667 Y56.091667
+G1 X123.020667 Y55.880000
+G1 X123.274667 Y55.880000
+G1 X123.528667 Y56.007000
+G1 X123.740333 Y56.261000
+G1 X139.107333 Y56.261000
+G1 X139.319000 Y56.007000
+G1 X139.573000 Y55.880000
+G1 X139.827000 Y55.880000
+G1 X140.081000 Y56.091667
+G1 X140.292667 Y56.345667
+G1 X140.292667 Y56.642000
+G1 X140.081000 Y56.896000
+G1 X139.827000 Y57.107667
+G1 X139.573000 Y57.107667
+G1 X139.319000 Y56.980667
+G1 X139.107333 Y56.726667
+G1 X123.740333 Y56.726667
+G1 X123.528667 Y56.980667
+G1 X123.274667 Y57.107667
+G1 X123.020667 Y57.107667
+G0 Z#100
+(polygon end, distance 37.45)
+(polygon 209)
+G0 X63.246000 Y55.541333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X62.738000 Y55.372000
+G1 X62.018333 Y54.821667
+G1 X60.494333 Y53.255333
+G1 X60.367333 Y52.789667
+G1 X60.409667 Y52.366333
+G1 X60.579000 Y51.985333
+G1 X60.536667 Y51.181000
+G1 X60.452000 Y50.757667
+G1 X60.536667 Y50.376667
+G1 X60.579000 Y49.233667
+G1 X60.367333 Y49.064333
+G1 X60.071000 Y49.191333
+G1 X23.706667 Y49.191333
+G1 X23.156333 Y48.937333
+G1 X22.733000 Y48.471667
+G1 X22.521333 Y48.006000
+G1 X22.521333 Y47.201667
+G1 X22.733000 Y46.736000
+G1 X23.156333 Y46.270333
+G1 X23.706667 Y46.016333
+G1 X60.071000 Y46.016333
+G1 X60.621333 Y46.270333
+G1 X61.044667 Y46.736000
+G1 X61.256333 Y47.201667
+G1 X62.357000 Y48.260000
+G1 X62.526333 Y48.598667
+G1 X62.611000 Y50.376667
+G1 X62.695667 Y50.800000
+G1 X62.611000 Y51.181000
+G1 X62.568667 Y52.027667
+G1 X63.034333 Y52.451000
+G1 X63.330667 Y52.366333
+G1 X95.504000 Y52.408667
+G1 X95.504000 Y51.265667
+G1 X95.377000 Y50.927000
+G1 X95.419333 Y50.461333
+G1 X95.588667 Y50.122667
+G1 X95.927333 Y49.826333
+G1 X96.181333 Y49.699333
+G1 X96.816333 Y49.699333
+G1 X97.070333 Y49.826333
+G1 X97.409000 Y50.122667
+G1 X97.578333 Y50.461333
+G1 X97.620667 Y50.927000
+G1 X97.493667 Y51.265667
+G1 X97.493667 Y52.239333
+G1 X112.903000 Y52.239333
+G1 X113.241667 Y51.900667
+G1 X113.580333 Y51.816000
+G1 X113.961333 Y51.858333
+G1 X114.300000 Y52.112333
+G1 X114.469333 Y52.408667
+G1 X114.469333 Y52.959000
+G1 X114.300000 Y53.255333
+G1 X113.961333 Y53.509333
+G1 X113.580333 Y53.551667
+G1 X113.241667 Y53.467000
+G1 X112.903000 Y53.128333
+G1 X97.747667 Y53.128333
+G1 X97.705333 Y53.636333
+G1 X97.536000 Y54.017333
+G1 X96.774000 Y54.821667
+G1 X96.435333 Y55.033333
+G1 X95.927333 Y55.372000
+G1 X95.419333 Y55.541333
+G1 X63.246000 Y55.541333
+G0 Z#100
+(polygon end, distance 203.01)
+(polygon 210)
+G0 X120.438333 Y55.414333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X120.438333 Y53.763333
+G1 X122.089333 Y53.763333
+G1 X122.089333 Y55.414333
+G1 X120.438333 Y55.414333
+G0 Z#100
+(polygon end, distance 6.60)
+(polygon 211)
+G0 X124.925667 Y55.414333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X124.587000 Y55.245000
+G1 X124.375333 Y54.991000
+G1 X124.248333 Y54.694667
+G1 X124.248333 Y54.483000
+G1 X124.375333 Y54.186667
+G1 X124.587000 Y53.932667
+G1 X124.925667 Y53.763333
+G1 X125.179667 Y53.763333
+G1 X125.476000 Y53.890333
+G1 X125.730000 Y54.102000
+G1 X125.899333 Y54.440667
+G1 X125.899333 Y54.737000
+G1 X125.730000 Y55.075667
+G1 X125.476000 Y55.287333
+G1 X125.179667 Y55.414333
+G1 X124.925667 Y55.414333
+G0 Z#100
+(polygon end, distance 5.14)
+(polygon 212)
+G0 X134.408333 Y55.414333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.408333 Y53.763333
+G1 X136.059333 Y53.763333
+G1 X136.059333 Y55.414333
+G1 X134.408333 Y55.414333
+G0 Z#100
+(polygon end, distance 6.60)
+(polygon 213)
+G0 X14.435667 Y54.821667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y54.737000
+G1 X13.800667 Y54.356000
+G1 X13.716000 Y54.017333
+G1 X13.758333 Y53.636333
+G1 X14.012333 Y53.297667
+G1 X14.308667 Y53.128333
+G1 X14.859000 Y53.128333
+G1 X15.197667 Y53.340000
+G1 X15.409333 Y53.678667
+G1 X15.409333 Y54.229000
+G1 X15.197667 Y54.567667
+G1 X14.859000 Y54.779333
+G1 X14.435667 Y54.821667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 214)
+G0 X16.975667 Y54.821667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y54.737000
+G1 X16.340667 Y54.356000
+G1 X16.256000 Y54.017333
+G1 X16.298333 Y53.636333
+G1 X16.552333 Y53.297667
+G1 X16.848667 Y53.128333
+G1 X17.399000 Y53.128333
+G1 X17.737667 Y53.340000
+G1 X17.949333 Y53.678667
+G1 X17.949333 Y54.229000
+G1 X17.737667 Y54.567667
+G1 X17.399000 Y54.779333
+G1 X16.975667 Y54.821667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 215)
+G0 X19.515667 Y54.821667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y54.737000
+G1 X18.880667 Y54.356000
+G1 X18.796000 Y54.017333
+G1 X18.838333 Y53.636333
+G1 X19.092333 Y53.297667
+G1 X19.388667 Y53.128333
+G1 X19.939000 Y53.128333
+G1 X20.277667 Y53.340000
+G1 X20.489333 Y53.678667
+G1 X20.489333 Y54.229000
+G1 X20.277667 Y54.567667
+G1 X19.939000 Y54.779333
+G1 X19.515667 Y54.821667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 216)
+G0 X29.591000 Y54.059667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X29.252333 Y53.932667
+G1 X28.871333 Y53.678667
+G1 X28.575000 Y53.297667
+G1 X28.448000 Y52.832000
+G1 X28.490333 Y52.324000
+G1 X28.659667 Y51.943000
+G1 X29.083000 Y51.519667
+G1 X29.464000 Y51.350333
+G1 X30.183667 Y51.350333
+G1 X30.564667 Y51.519667
+G1 X30.988000 Y51.943000
+G1 X31.157333 Y52.324000
+G1 X31.157333 Y53.043667
+G1 X30.988000 Y53.424667
+G1 X30.564667 Y53.848000
+G1 X30.183667 Y54.017333
+G1 X29.591000 Y54.059667
+G0 Z#100
+(polygon end, distance 8.63)
+(polygon 217)
+G0 X38.608000 Y54.059667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X38.608000 Y51.308000
+G1 X41.359667 Y51.308000
+G1 X41.359667 Y54.059667
+G1 X38.608000 Y54.059667
+G0 Z#100
+(polygon end, distance 11.01)
+(polygon 218)
+G0 X164.253333 Y52.366333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X163.830000 Y52.154667
+G1 X163.576000 Y51.816000
+G1 X163.533667 Y51.646667
+G1 X149.140333 Y51.646667
+G1 X144.018000 Y46.566667
+G1 X89.450333 Y46.566667
+G1 X89.238667 Y46.820667
+G1 X88.984667 Y46.947667
+G1 X88.730667 Y46.947667
+G1 X88.476667 Y46.736000
+G1 X88.265000 Y46.482000
+G1 X88.265000 Y46.185667
+G1 X88.476667 Y45.931667
+G1 X88.730667 Y45.720000
+G1 X88.984667 Y45.720000
+G1 X89.238667 Y45.847000
+G1 X89.450333 Y46.101000
+G1 X144.187333 Y46.101000
+G1 X149.309667 Y51.181000
+G1 X163.533667 Y51.181000
+G1 X163.787667 Y50.757667
+G1 X164.168667 Y50.503667
+G1 X164.719000 Y50.503667
+G1 X165.100000 Y50.757667
+G1 X165.354000 Y51.138667
+G1 X165.354000 Y51.689000
+G1 X165.100000 Y52.070000
+G1 X164.719000 Y52.324000
+G1 X164.253333 Y52.366333
+G0 Z#100
+(polygon end, distance 161.13)
+(polygon 219)
+G0 X14.435667 Y52.281667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y52.197000
+G1 X13.800667 Y51.816000
+G1 X13.716000 Y51.477333
+G1 X13.758333 Y51.096333
+G1 X14.012333 Y50.757667
+G1 X14.308667 Y50.588333
+G1 X14.859000 Y50.588333
+G1 X15.197667 Y50.800000
+G1 X15.409333 Y51.138667
+G1 X15.409333 Y51.689000
+G1 X15.197667 Y52.027667
+G1 X14.859000 Y52.239333
+G1 X14.435667 Y52.281667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 220)
+G0 X16.975667 Y52.281667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y52.197000
+G1 X16.340667 Y51.816000
+G1 X16.256000 Y51.477333
+G1 X16.298333 Y51.096333
+G1 X16.552333 Y50.757667
+G1 X16.848667 Y50.588333
+G1 X17.399000 Y50.588333
+G1 X17.737667 Y50.800000
+G1 X17.949333 Y51.138667
+G1 X17.949333 Y51.689000
+G1 X17.737667 Y52.027667
+G1 X17.399000 Y52.239333
+G1 X16.975667 Y52.281667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 221)
+G0 X19.515667 Y52.281667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y52.197000
+G1 X18.880667 Y51.816000
+G1 X18.796000 Y51.477333
+G1 X18.838333 Y51.096333
+G1 X19.092333 Y50.757667
+G1 X19.388667 Y50.588333
+G1 X19.939000 Y50.588333
+G1 X20.277667 Y50.800000
+G1 X20.489333 Y51.138667
+G1 X20.489333 Y51.689000
+G1 X20.277667 Y52.027667
+G1 X19.939000 Y52.239333
+G1 X19.515667 Y52.281667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 222)
+G0 X63.923333 Y51.900667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X63.711667 Y51.816000
+G1 X63.457667 Y51.689000
+G1 X63.161333 Y51.350333
+G1 X63.034333 Y51.096333
+G1 X63.034333 Y50.461333
+G1 X63.161333 Y50.207333
+G1 X63.457667 Y49.868667
+G1 X63.796333 Y49.699333
+G1 X64.431333 Y49.699333
+G1 X64.770000 Y49.868667
+G1 X65.066333 Y50.207333
+G1 X65.193333 Y50.461333
+G1 X65.193333 Y51.096333
+G1 X65.066333 Y51.350333
+G1 X64.770000 Y51.689000
+G1 X64.431333 Y51.858333
+G1 X63.923333 Y51.900667
+G0 Z#100
+(polygon end, distance 7.00)
+(polygon 223)
+G0 X90.297000 Y51.900667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X90.297000 Y49.657000
+G1 X90.974333 Y49.657000
+G1 X90.974333 Y48.810333
+G1 X91.059000 Y48.641000
+G1 X92.371333 Y47.286333
+G1 X92.625333 Y47.159333
+G1 X124.333000 Y47.159333
+G1 X124.671667 Y46.820667
+G1 X125.010333 Y46.736000
+G1 X125.391333 Y46.778333
+G1 X125.730000 Y47.032333
+G1 X125.899333 Y47.328667
+G1 X125.899333 Y47.879000
+G1 X125.730000 Y48.175333
+G1 X125.391333 Y48.429333
+G1 X125.010333 Y48.471667
+G1 X124.671667 Y48.387000
+G1 X124.333000 Y48.048333
+G1 X92.837000 Y48.048333
+G1 X91.863333 Y49.064333
+G1 X91.863333 Y49.657000
+G1 X92.540667 Y49.657000
+G1 X92.540667 Y51.900667
+G1 X90.297000 Y51.900667
+G0 Z#100
+(polygon end, distance 81.00)
+(polygon 224)
+G0 X93.768333 Y51.900667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X93.556667 Y51.816000
+G1 X93.302667 Y51.689000
+G1 X93.006333 Y51.350333
+G1 X92.879333 Y51.096333
+G1 X92.879333 Y50.461333
+G1 X93.006333 Y50.207333
+G1 X93.302667 Y49.868667
+G1 X93.641333 Y49.699333
+G1 X94.276333 Y49.699333
+G1 X94.615000 Y49.868667
+G1 X94.911333 Y50.207333
+G1 X95.038333 Y50.461333
+G1 X95.038333 Y51.096333
+G1 X94.911333 Y51.350333
+G1 X94.615000 Y51.689000
+G1 X94.276333 Y51.858333
+G1 X93.768333 Y51.900667
+G0 Z#100
+(polygon end, distance 7.00)
+(polygon 225)
+G0 X110.955667 Y50.376667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X110.701667 Y50.292000
+G1 X110.320667 Y49.911000
+G1 X110.236000 Y49.572333
+G1 X110.278333 Y49.191333
+G1 X110.532333 Y48.852667
+G1 X110.828667 Y48.683333
+G1 X111.379000 Y48.683333
+G1 X111.717667 Y48.895000
+G1 X111.929333 Y49.233667
+G1 X111.929333 Y49.784000
+G1 X111.717667 Y50.122667
+G1 X111.379000 Y50.334333
+G1 X110.955667 Y50.376667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 226)
+G0 X120.396000 Y50.376667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X120.396000 Y48.641000
+G1 X122.131667 Y48.641000
+G1 X122.131667 Y50.376667
+G1 X120.396000 Y50.376667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 227)
+G0 X124.925667 Y50.376667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X124.671667 Y50.292000
+G1 X124.290667 Y49.911000
+G1 X124.206000 Y49.572333
+G1 X124.248333 Y49.191333
+G1 X124.502333 Y48.852667
+G1 X124.798667 Y48.683333
+G1 X125.349000 Y48.683333
+G1 X125.687667 Y48.895000
+G1 X125.899333 Y49.233667
+G1 X125.899333 Y49.784000
+G1 X125.687667 Y50.122667
+G1 X125.349000 Y50.334333
+G1 X124.925667 Y50.376667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 228)
+G0 X134.366000 Y50.376667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.366000 Y48.641000
+G1 X136.101667 Y48.641000
+G1 X136.101667 Y50.376667
+G1 X134.366000 Y50.376667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 229)
+G0 X163.491333 Y49.826333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X163.491333 Y47.921333
+G1 X165.396333 Y47.921333
+G1 X165.396333 Y49.826333
+G1 X163.491333 Y49.826333
+G0 Z#100
+(polygon end, distance 7.62)
+(polygon 230)
+G0 X14.435667 Y49.741667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y49.657000
+G1 X13.800667 Y49.276000
+G1 X13.716000 Y48.937333
+G1 X13.758333 Y48.556333
+G1 X14.012333 Y48.217667
+G1 X14.308667 Y48.048333
+G1 X14.859000 Y48.048333
+G1 X15.197667 Y48.260000
+G1 X15.409333 Y48.598667
+G1 X15.409333 Y49.149000
+G1 X15.197667 Y49.487667
+G1 X14.859000 Y49.699333
+G1 X14.435667 Y49.741667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 231)
+G0 X16.975667 Y49.741667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y49.657000
+G1 X16.340667 Y49.276000
+G1 X16.256000 Y48.937333
+G1 X16.298333 Y48.556333
+G1 X16.552333 Y48.217667
+G1 X16.848667 Y48.048333
+G1 X17.399000 Y48.048333
+G1 X17.737667 Y48.260000
+G1 X17.949333 Y48.598667
+G1 X17.949333 Y49.149000
+G1 X17.737667 Y49.487667
+G1 X17.399000 Y49.699333
+G1 X16.975667 Y49.741667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 232)
+G0 X19.515667 Y49.741667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y49.657000
+G1 X18.880667 Y49.276000
+G1 X18.796000 Y48.937333
+G1 X18.838333 Y48.556333
+G1 X19.092333 Y48.217667
+G1 X19.388667 Y48.048333
+G1 X19.939000 Y48.048333
+G1 X20.277667 Y48.260000
+G1 X20.489333 Y48.598667
+G1 X20.489333 Y49.149000
+G1 X20.277667 Y49.487667
+G1 X19.939000 Y49.699333
+G1 X19.515667 Y49.741667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 233)
+G0 X14.435667 Y47.201667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y47.117000
+G1 X13.800667 Y46.736000
+G1 X13.716000 Y46.397333
+G1 X13.758333 Y46.016333
+G1 X14.012333 Y45.677667
+G1 X14.308667 Y45.508333
+G1 X14.859000 Y45.508333
+G1 X15.197667 Y45.720000
+G1 X15.409333 Y46.058667
+G1 X15.409333 Y46.609000
+G1 X15.197667 Y46.947667
+G1 X14.859000 Y47.159333
+G1 X14.435667 Y47.201667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 234)
+G0 X16.975667 Y47.201667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y47.117000
+G1 X16.340667 Y46.736000
+G1 X16.256000 Y46.397333
+G1 X16.298333 Y46.016333
+G1 X16.552333 Y45.677667
+G1 X16.848667 Y45.508333
+G1 X17.399000 Y45.508333
+G1 X17.737667 Y45.720000
+G1 X17.949333 Y46.058667
+G1 X17.949333 Y46.609000
+G1 X17.737667 Y46.947667
+G1 X17.399000 Y47.159333
+G1 X16.975667 Y47.201667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 235)
+G0 X19.515667 Y47.201667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y47.117000
+G1 X18.880667 Y46.736000
+G1 X18.796000 Y46.397333
+G1 X18.838333 Y46.016333
+G1 X19.092333 Y45.677667
+G1 X19.388667 Y45.508333
+G1 X19.939000 Y45.508333
+G1 X20.277667 Y45.720000
+G1 X20.489333 Y46.058667
+G1 X20.489333 Y46.609000
+G1 X20.277667 Y46.947667
+G1 X19.939000 Y47.159333
+G1 X19.515667 Y47.201667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 236)
+G0 X39.751000 Y45.423667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X39.370000 Y45.296667
+G1 X38.989000 Y45.085000
+G1 X38.608000 Y44.661667
+G1 X38.396333 Y44.196000
+G1 X38.396333 Y43.391667
+G1 X38.650333 Y42.841333
+G1 X39.116000 Y42.418000
+G1 X39.581667 Y42.206333
+G1 X94.361000 Y42.206333
+G1 X94.911333 Y42.460333
+G1 X95.334667 Y42.926000
+G1 X95.546333 Y43.391667
+G1 X95.546333 Y44.196000
+G1 X95.334667 Y44.661667
+G1 X94.911333 Y45.127333
+G1 X94.361000 Y45.381333
+G1 X39.751000 Y45.423667
+G0 Z#100
+(polygon end, distance 118.16)
+(polygon 237)
+G0 X110.278333 Y45.254333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X110.278333 Y43.603333
+G1 X111.929333 Y43.603333
+G1 X111.929333 Y45.254333
+G1 X110.278333 Y45.254333
+G0 Z#100
+(polygon end, distance 6.60)
+(polygon 238)
+G0 X121.115667 Y45.254333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X120.777000 Y45.085000
+G1 X120.565333 Y44.831000
+G1 X120.438333 Y44.534667
+G1 X120.438333 Y44.323000
+G1 X120.565333 Y44.026667
+G1 X120.777000 Y43.772667
+G1 X121.115667 Y43.603333
+G1 X121.369667 Y43.603333
+G1 X121.666000 Y43.730333
+G1 X121.920000 Y43.942000
+G1 X122.089333 Y44.280667
+G1 X122.089333 Y44.577000
+G1 X121.920000 Y44.915667
+G1 X121.666000 Y45.127333
+G1 X121.369667 Y45.254333
+G1 X121.115667 Y45.254333
+G0 Z#100
+(polygon end, distance 5.14)
+(polygon 239)
+G0 X124.248333 Y45.254333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X124.248333 Y43.603333
+G1 X125.899333 Y43.603333
+G1 X125.899333 Y45.254333
+G1 X124.248333 Y45.254333
+G0 Z#100
+(polygon end, distance 6.60)
+(polygon 240)
+G0 X135.085667 Y45.254333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.747000 Y45.085000
+G1 X134.535333 Y44.831000
+G1 X134.408333 Y44.534667
+G1 X134.408333 Y44.323000
+G1 X134.535333 Y44.026667
+G1 X134.747000 Y43.772667
+G1 X135.085667 Y43.603333
+G1 X135.339667 Y43.603333
+G1 X135.636000 Y43.730333
+G1 X135.890000 Y43.942000
+G1 X136.059333 Y44.280667
+G1 X136.059333 Y44.577000
+G1 X135.890000 Y44.915667
+G1 X135.636000 Y45.127333
+G1 X135.339667 Y45.254333
+G1 X135.085667 Y45.254333
+G0 Z#100
+(polygon end, distance 5.14)
+(polygon 241)
+G0 X14.435667 Y44.661667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y44.577000
+G1 X13.800667 Y44.196000
+G1 X13.716000 Y43.857333
+G1 X13.758333 Y43.476333
+G1 X14.012333 Y43.137667
+G1 X14.308667 Y42.968333
+G1 X14.859000 Y42.968333
+G1 X15.197667 Y43.180000
+G1 X15.409333 Y43.518667
+G1 X15.409333 Y44.069000
+G1 X15.197667 Y44.407667
+G1 X14.859000 Y44.619333
+G1 X14.435667 Y44.661667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 242)
+G0 X16.975667 Y44.661667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y44.577000
+G1 X16.340667 Y44.196000
+G1 X16.256000 Y43.857333
+G1 X16.298333 Y43.476333
+G1 X16.552333 Y43.137667
+G1 X16.848667 Y42.968333
+G1 X17.399000 Y42.968333
+G1 X17.737667 Y43.180000
+G1 X17.949333 Y43.518667
+G1 X17.949333 Y44.069000
+G1 X17.737667 Y44.407667
+G1 X17.399000 Y44.619333
+G1 X16.975667 Y44.661667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 243)
+G0 X19.515667 Y44.661667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y44.577000
+G1 X18.880667 Y44.196000
+G1 X18.796000 Y43.857333
+G1 X18.838333 Y43.476333
+G1 X19.092333 Y43.137667
+G1 X19.388667 Y42.968333
+G1 X19.939000 Y42.968333
+G1 X20.277667 Y43.180000
+G1 X20.489333 Y43.518667
+G1 X20.489333 Y44.069000
+G1 X20.277667 Y44.407667
+G1 X19.939000 Y44.619333
+G1 X19.515667 Y44.661667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 244)
+G0 X164.253333 Y42.841333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X163.830000 Y42.629667
+G1 X163.576000 Y42.291000
+G1 X163.533667 Y42.121667
+G1 X109.135333 Y42.121667
+G1 X108.923667 Y42.375667
+G1 X108.669667 Y42.502667
+G1 X108.415667 Y42.502667
+G1 X108.161667 Y42.291000
+G1 X107.950000 Y42.037000
+G1 X107.950000 Y41.740667
+G1 X108.161667 Y41.486667
+G1 X108.415667 Y41.275000
+G1 X108.669667 Y41.275000
+G1 X108.923667 Y41.402000
+G1 X109.135333 Y41.656000
+G1 X163.533667 Y41.656000
+G1 X163.787667 Y41.232667
+G1 X164.168667 Y40.978667
+G1 X164.719000 Y40.978667
+G1 X165.100000 Y41.232667
+G1 X165.354000 Y41.613667
+G1 X165.354000 Y42.164000
+G1 X165.100000 Y42.545000
+G1 X164.719000 Y42.799000
+G1 X164.253333 Y42.841333
+G0 Z#100
+(polygon end, distance 117.58)
+(polygon 245)
+G0 X14.435667 Y42.121667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y42.037000
+G1 X13.800667 Y41.656000
+G1 X13.716000 Y41.317333
+G1 X13.758333 Y40.936333
+G1 X14.012333 Y40.597667
+G1 X14.308667 Y40.428333
+G1 X14.859000 Y40.428333
+G1 X15.197667 Y40.640000
+G1 X15.409333 Y40.978667
+G1 X15.409333 Y41.529000
+G1 X15.197667 Y41.867667
+G1 X14.859000 Y42.079333
+G1 X14.435667 Y42.121667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 246)
+G0 X16.975667 Y42.121667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y42.037000
+G1 X16.340667 Y41.656000
+G1 X16.256000 Y41.317333
+G1 X16.298333 Y40.936333
+G1 X16.552333 Y40.597667
+G1 X16.848667 Y40.428333
+G1 X17.399000 Y40.428333
+G1 X17.737667 Y40.640000
+G1 X17.949333 Y40.978667
+G1 X17.949333 Y41.529000
+G1 X17.737667 Y41.867667
+G1 X17.399000 Y42.079333
+G1 X16.975667 Y42.121667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 247)
+G0 X19.515667 Y42.121667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y42.037000
+G1 X18.880667 Y41.656000
+G1 X18.796000 Y41.317333
+G1 X18.838333 Y40.936333
+G1 X19.092333 Y40.597667
+G1 X19.388667 Y40.428333
+G1 X19.939000 Y40.428333
+G1 X20.277667 Y40.640000
+G1 X20.489333 Y40.978667
+G1 X20.489333 Y41.529000
+G1 X20.277667 Y41.867667
+G1 X19.939000 Y42.079333
+G1 X19.515667 Y42.121667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 248)
+G0 X23.876000 Y41.613667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X23.495000 Y41.486667
+G1 X23.114000 Y41.275000
+G1 X22.733000 Y40.851667
+G1 X22.521333 Y40.428333
+G1 X21.844000 Y39.708667
+G1 X14.393333 Y39.708667
+G1 X14.054667 Y39.539333
+G1 X13.800667 Y39.327667
+G1 X13.589000 Y38.904333
+G1 X13.589000 Y38.523333
+G1 X13.800667 Y38.100000
+G1 X14.054667 Y37.888333
+G1 X14.393333 Y37.719000
+G1 X22.394333 Y37.719000
+G1 X22.733000 Y37.888333
+G1 X23.410333 Y38.523333
+G1 X23.706667 Y38.396333
+G1 X45.466000 Y38.396333
+G1 X46.016333 Y38.650333
+G1 X46.439667 Y39.116000
+G1 X46.651333 Y39.581667
+G1 X46.651333 Y40.386000
+G1 X46.439667 Y40.851667
+G1 X46.016333 Y41.317333
+G1 X45.466000 Y41.571333
+G1 X23.876000 Y41.613667
+G0 Z#100
+(polygon end, distance 70.34)
+(polygon 249)
+G0 X163.491333 Y40.301333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X163.491333 Y38.396333
+G1 X165.396333 Y38.396333
+G1 X165.396333 Y40.301333
+G1 X163.491333 Y40.301333
+G0 Z#100
+(polygon end, distance 7.62)
+(polygon 250)
+G0 X110.955667 Y40.216667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X110.701667 Y40.132000
+G1 X110.363000 Y39.793333
+G1 X62.145333 Y39.793333
+G1 X61.891333 Y39.666333
+G1 X58.674000 Y36.406667
+G1 X58.589333 Y36.237333
+G1 X58.589333 Y32.850667
+G1 X57.912000 Y32.850667
+G1 X57.912000 Y30.607000
+G1 X60.155667 Y30.607000
+G1 X60.155667 Y32.850667
+G1 X59.478333 Y32.850667
+G1 X59.478333 Y36.025667
+G1 X62.399333 Y38.904333
+G1 X110.363000 Y38.904333
+G1 X110.701667 Y38.565667
+G1 X111.040333 Y38.481000
+G1 X111.421333 Y38.523333
+G1 X111.760000 Y38.777333
+G1 X111.929333 Y39.073667
+G1 X111.929333 Y39.624000
+G1 X111.717667 Y39.962667
+G1 X111.379000 Y40.174333
+G1 X110.955667 Y40.216667
+G0 Z#100
+(polygon end, distance 124.48)
+(polygon 251)
+G0 X120.396000 Y40.216667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X120.396000 Y38.481000
+G1 X122.131667 Y38.481000
+G1 X122.131667 Y40.216667
+G1 X120.396000 Y40.216667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 252)
+G0 X124.925667 Y40.216667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X124.671667 Y40.132000
+G1 X124.290667 Y39.751000
+G1 X124.206000 Y39.412333
+G1 X124.248333 Y39.031333
+G1 X124.502333 Y38.692667
+G1 X124.798667 Y38.523333
+G1 X125.349000 Y38.523333
+G1 X125.687667 Y38.735000
+G1 X125.899333 Y39.073667
+G1 X125.899333 Y39.624000
+G1 X125.687667 Y39.962667
+G1 X125.349000 Y40.174333
+G1 X124.925667 Y40.216667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 253)
+G0 X127.465667 Y40.216667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X127.211667 Y40.132000
+G1 X126.830667 Y39.751000
+G1 X126.746000 Y39.412333
+G1 X126.788333 Y39.031333
+G1 X127.042333 Y38.692667
+G1 X127.338667 Y38.523333
+G1 X127.677333 Y38.481000
+G1 X128.016000 Y38.565667
+G1 X128.354667 Y38.904333
+G1 X134.366000 Y38.904333
+G1 X134.366000 Y38.481000
+G1 X136.101667 Y38.481000
+G1 X136.101667 Y40.216667
+G1 X134.366000 Y40.216667
+G1 X134.366000 Y39.793333
+G1 X128.354667 Y39.793333
+G1 X128.016000 Y40.132000
+G1 X127.719667 Y40.216667
+G1 X127.465667 Y40.216667
+G0 Z#100
+(polygon end, distance 22.59)
+(polygon 254)
+G0 X53.763333 Y37.422667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X53.424667 Y37.295667
+G1 X53.213000 Y37.168667
+G1 X14.393333 Y37.168667
+G1 X13.970000 Y36.957000
+G1 X13.758333 Y36.703000
+G1 X13.589000 Y36.364333
+G1 X13.589000 Y35.983333
+G1 X13.758333 Y35.644667
+G1 X13.970000 Y35.390667
+G1 X14.393333 Y35.179000
+G1 X53.170667 Y35.179000
+G1 X53.636333 Y34.967333
+G1 X54.271333 Y34.967333
+G1 X54.652333 Y35.136667
+G1 X54.991000 Y35.475333
+G1 X55.160333 Y35.856333
+G1 X55.160333 Y36.491333
+G1 X54.991000 Y36.872333
+G1 X54.652333 Y37.211000
+G1 X54.271333 Y37.380333
+G1 X53.763333 Y37.422667
+G0 Z#100
+(polygon end, distance 85.87)
+(polygon 255)
+G0 X117.263333 Y37.126333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X116.840000 Y36.914667
+G1 X115.358333 Y35.390667
+G1 X115.231333 Y35.009667
+G1 X115.273667 Y33.993667
+G1 X115.527667 Y33.612667
+G1 X115.908667 Y33.358667
+G1 X116.459000 Y33.358667
+G1 X116.840000 Y33.612667
+G1 X117.094000 Y33.993667
+G1 X117.136333 Y34.501667
+G1 X117.813667 Y35.221333
+G1 X123.444000 Y35.221333
+G1 X124.121333 Y34.501667
+G1 X124.121333 Y34.120667
+G1 X124.248333 Y33.824333
+G1 X124.248333 Y33.443333
+G1 X124.629333 Y33.443333
+G1 X124.925667 Y33.316333
+G1 X132.334000 Y33.316333
+G1 X132.672667 Y33.485667
+G1 X132.884333 Y33.739667
+G1 X133.053667 Y34.078333
+G1 X133.053667 Y34.459333
+G1 X132.884333 Y34.798000
+G1 X132.672667 Y35.052000
+G1 X132.334000 Y35.221333
+G1 X125.941667 Y35.221333
+G1 X125.899333 Y35.390667
+G1 X124.417667 Y36.914667
+G1 X123.994333 Y37.126333
+G1 X117.263333 Y37.126333
+G0 Z#100
+(polygon end, distance 42.17)
+(polygon 256)
+G0 X63.246000 Y36.533667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X62.949667 Y36.449000
+G1 X62.611000 Y36.279667
+G1 X62.272333 Y35.983333
+G1 X61.933667 Y35.771667
+G1 X60.536667 Y34.332333
+G1 X60.367333 Y33.951333
+G1 X60.367333 Y33.316333
+G1 X60.579000 Y32.850667
+G1 X60.536667 Y32.131000
+G1 X60.452000 Y31.707667
+G1 X60.536667 Y31.326667
+G1 X60.579000 Y30.141333
+G1 X60.113333 Y29.972000
+G1 X55.837667 Y25.738667
+G1 X27.516667 Y25.696333
+G1 X27.220333 Y25.569333
+G1 X23.368000 Y29.379333
+G1 X23.029333 Y29.548667
+G1 X14.393333 Y29.548667
+G1 X13.970000 Y29.337000
+G1 X13.758333 Y29.083000
+G1 X13.589000 Y28.744333
+G1 X13.589000 Y28.363333
+G1 X13.758333 Y28.024667
+G1 X13.970000 Y27.770667
+G1 X14.393333 Y27.559000
+G1 X22.479000 Y27.559000
+G1 X26.331333 Y23.664333
+G1 X26.585333 Y23.156333
+G1 X27.051000 Y22.733000
+G1 X27.516667 Y22.521333
+G1 X56.896000 Y22.521333
+G1 X57.319333 Y22.690667
+G1 X62.272333 Y27.601333
+G1 X62.526333 Y28.151667
+G1 X62.611000 Y31.326667
+G1 X62.695667 Y31.750000
+G1 X62.611000 Y32.131000
+G1 X62.568667 Y32.893000
+G1 X62.992000 Y33.274000
+G1 X95.504000 Y33.316333
+G1 X95.504000 Y32.215667
+G1 X95.377000 Y31.877000
+G1 X95.419333 Y31.411333
+G1 X95.588667 Y31.072667
+G1 X95.927333 Y30.776333
+G1 X96.181333 Y30.649333
+G1 X96.816333 Y30.649333
+G1 X97.155000 Y30.818667
+G1 X97.493667 Y31.199667
+G1 X97.493667 Y31.284333
+G1 X115.443000 Y31.284333
+G1 X115.781667 Y30.945667
+G1 X116.120333 Y30.861000
+G1 X116.501333 Y30.903333
+G1 X116.840000 Y31.157333
+G1 X117.009333 Y31.453667
+G1 X117.009333 Y32.004000
+G1 X116.840000 Y32.300333
+G1 X116.501333 Y32.554333
+G1 X116.120333 Y32.596667
+G1 X115.781667 Y32.512000
+G1 X115.443000 Y32.173333
+G1 X97.493667 Y32.173333
+G1 X97.493667 Y33.485667
+G1 X97.705333 Y33.951333
+G1 X97.705333 Y34.586333
+G1 X97.536000 Y34.967333
+G1 X96.774000 Y35.771667
+G1 X96.435333 Y35.983333
+G1 X96.096667 Y36.279667
+G1 X95.631000 Y36.491333
+G1 X63.246000 Y36.533667
+G0 Z#100
+(polygon end, distance 233.48)
+(polygon 257)
+G0 X117.856000 Y35.136667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.856000 Y33.401000
+G1 X119.591667 Y33.401000
+G1 X119.591667 Y35.136667
+G1 X117.856000 Y35.136667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 258)
+G0 X135.085667 Y35.094333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.747000 Y34.925000
+G1 X134.535333 Y34.671000
+G1 X134.408333 Y34.374667
+G1 X134.408333 Y34.163000
+G1 X134.535333 Y33.866667
+G1 X134.747000 Y33.612667
+G1 X135.085667 Y33.443333
+G1 X135.339667 Y33.443333
+G1 X135.636000 Y33.570333
+G1 X135.890000 Y33.782000
+G1 X136.017000 Y34.036000
+G1 X140.377333 Y34.036000
+G1 X140.589000 Y33.782000
+G1 X140.843000 Y33.655000
+G1 X141.097000 Y33.655000
+G1 X141.351000 Y33.866667
+G1 X141.562667 Y34.120667
+G1 X141.562667 Y34.417000
+G1 X141.351000 Y34.671000
+G1 X141.097000 Y34.882667
+G1 X140.843000 Y34.882667
+G1 X140.589000 Y34.755667
+G1 X140.377333 Y34.501667
+G1 X136.017000 Y34.501667
+G1 X135.890000 Y34.755667
+G1 X135.636000 Y34.967333
+G1 X135.339667 Y35.094333
+G1 X135.085667 Y35.094333
+G0 Z#100
+(polygon end, distance 16.73)
+(polygon 259)
+G0 X14.393333 Y34.628667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X13.970000 Y34.417000
+G1 X13.758333 Y34.163000
+G1 X13.589000 Y33.824333
+G1 X13.589000 Y33.443333
+G1 X13.758333 Y33.104667
+G1 X13.970000 Y32.850667
+G1 X14.393333 Y32.639000
+G1 X28.490333 Y32.639000
+G1 X28.659667 Y32.258000
+G1 X34.163000 Y26.754667
+G1 X34.544000 Y26.585333
+G1 X41.359667 Y26.543000
+G1 X41.359667 Y29.294667
+G1 X35.433000 Y29.294667
+G1 X30.649333 Y34.120667
+G1 X30.437667 Y34.417000
+G1 X30.014333 Y34.628667
+G1 X14.393333 Y34.628667
+G0 Z#100
+(polygon end, distance 64.21)
+(polygon 260)
+G0 X100.160667 Y33.612667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X99.906667 Y33.401000
+G1 X99.695000 Y33.147000
+G1 X99.695000 Y32.850667
+G1 X99.906667 Y32.596667
+G1 X100.160667 Y32.385000
+G1 X100.414667 Y32.385000
+G1 X100.668667 Y32.512000
+G1 X100.880333 Y32.766000
+G1 X161.163000 Y32.766000
+G1 X161.840333 Y32.131000
+G1 X163.533667 Y32.131000
+G1 X163.787667 Y31.707667
+G1 X164.168667 Y31.453667
+G1 X164.719000 Y31.453667
+G1 X165.100000 Y31.707667
+G1 X165.354000 Y32.088667
+G1 X165.354000 Y32.639000
+G1 X165.100000 Y33.020000
+G1 X164.719000 Y33.274000
+G1 X164.168667 Y33.274000
+G1 X163.787667 Y33.020000
+G1 X163.533667 Y32.596667
+G1 X162.009667 Y32.596667
+G1 X161.332333 Y33.231667
+G1 X100.880333 Y33.231667
+G1 X100.668667 Y33.485667
+G1 X100.414667 Y33.612667
+G1 X100.160667 Y33.612667
+G0 Z#100
+(polygon end, distance 134.55)
+(polygon 261)
+G0 X63.923333 Y32.850667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X63.711667 Y32.766000
+G1 X63.457667 Y32.639000
+G1 X63.161333 Y32.300333
+G1 X63.034333 Y32.046333
+G1 X63.034333 Y31.411333
+G1 X63.161333 Y31.157333
+G1 X63.457667 Y30.818667
+G1 X63.796333 Y30.649333
+G1 X64.431333 Y30.649333
+G1 X64.770000 Y30.818667
+G1 X65.066333 Y31.157333
+G1 X65.193333 Y31.411333
+G1 X65.193333 Y32.046333
+G1 X65.066333 Y32.300333
+G1 X64.770000 Y32.639000
+G1 X64.431333 Y32.808333
+G1 X63.923333 Y32.850667
+G0 Z#100
+(polygon end, distance 7.00)
+(polygon 262)
+G0 X90.297000 Y32.850667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X90.297000 Y30.607000
+G1 X90.974333 Y30.607000
+G1 X90.974333 Y30.395333
+G1 X91.059000 Y30.226000
+G1 X91.736333 Y29.506333
+G1 X91.990333 Y29.379333
+G1 X122.428000 Y29.379333
+G1 X122.766667 Y29.040667
+G1 X123.105333 Y28.956000
+G1 X123.486333 Y28.998333
+G1 X123.825000 Y29.252333
+G1 X123.994333 Y29.548667
+G1 X123.994333 Y30.099000
+G1 X123.825000 Y30.395333
+G1 X123.486333 Y30.649333
+G1 X123.105333 Y30.691667
+G1 X122.766667 Y30.607000
+G1 X122.428000 Y30.268333
+G1 X92.202000 Y30.268333
+G1 X91.905667 Y30.607000
+G1 X92.540667 Y30.607000
+G1 X92.540667 Y32.850667
+G1 X90.297000 Y32.850667
+G0 Z#100
+(polygon end, distance 75.33)
+(polygon 263)
+G0 X93.768333 Y32.850667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X93.556667 Y32.766000
+G1 X93.302667 Y32.639000
+G1 X93.006333 Y32.300333
+G1 X92.879333 Y32.046333
+G1 X92.879333 Y31.411333
+G1 X93.006333 Y31.157333
+G1 X93.302667 Y30.818667
+G1 X93.641333 Y30.649333
+G1 X94.276333 Y30.649333
+G1 X94.615000 Y30.818667
+G1 X94.911333 Y31.157333
+G1 X95.038333 Y31.411333
+G1 X95.038333 Y32.046333
+G1 X94.911333 Y32.300333
+G1 X94.615000 Y32.639000
+G1 X94.276333 Y32.808333
+G1 X93.768333 Y32.850667
+G0 Z#100
+(polygon end, distance 7.00)
+(polygon 264)
+G0 X118.575667 Y32.596667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X118.321667 Y32.512000
+G1 X117.940667 Y32.131000
+G1 X117.856000 Y31.792333
+G1 X117.898333 Y31.411333
+G1 X118.152333 Y31.072667
+G1 X118.448667 Y30.903333
+G1 X118.787333 Y30.861000
+G1 X119.126000 Y30.945667
+G1 X119.464667 Y31.284333
+G1 X134.493000 Y31.284333
+G1 X134.831667 Y30.945667
+G1 X135.170333 Y30.861000
+G1 X135.551333 Y30.903333
+G1 X135.890000 Y31.157333
+G1 X136.059333 Y31.453667
+G1 X136.059333 Y32.004000
+G1 X135.890000 Y32.300333
+G1 X135.551333 Y32.554333
+G1 X135.170333 Y32.596667
+G1 X134.831667 Y32.512000
+G1 X134.493000 Y32.173333
+G1 X119.464667 Y32.173333
+G1 X119.126000 Y32.512000
+G1 X118.829667 Y32.596667
+G1 X118.575667 Y32.596667
+G0 Z#100
+(polygon end, distance 39.07)
+(polygon 265)
+G0 X23.876000 Y32.554333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X23.537333 Y32.427333
+G1 X23.368000 Y32.342667
+G1 X23.071667 Y32.088667
+G1 X14.393333 Y32.088667
+G1 X14.054667 Y31.919333
+G1 X13.800667 Y31.707667
+G1 X13.589000 Y31.284333
+G1 X13.589000 Y30.903333
+G1 X13.800667 Y30.480000
+G1 X14.054667 Y30.268333
+G1 X14.393333 Y30.099000
+G1 X23.071667 Y30.099000
+G1 X23.410333 Y29.802667
+G1 X23.791333 Y29.675667
+G1 X24.468667 Y29.675667
+G1 X24.934333 Y29.887333
+G1 X25.315333 Y30.268333
+G1 X25.527000 Y30.734000
+G1 X25.527000 Y31.453667
+G1 X25.315333 Y31.919333
+G1 X24.934333 Y32.300333
+G1 X24.468667 Y32.512000
+G1 X23.876000 Y32.554333
+G0 Z#100
+(polygon end, distance 27.01)
+(polygon 266)
+G0 X163.491333 Y30.776333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X163.491333 Y28.871333
+G1 X165.396333 Y28.871333
+G1 X165.396333 Y30.776333
+G1 X163.491333 Y30.776333
+G0 Z#100
+(polygon end, distance 7.62)
+(polygon 267)
+G0 X29.591000 Y29.294667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X29.252333 Y29.167667
+G1 X28.871333 Y28.913667
+G1 X28.575000 Y28.532667
+G1 X28.448000 Y28.067000
+G1 X28.490333 Y27.559000
+G1 X28.659667 Y27.178000
+G1 X29.083000 Y26.754667
+G1 X29.464000 Y26.585333
+G1 X30.183667 Y26.585333
+G1 X30.564667 Y26.754667
+G1 X30.988000 Y27.178000
+G1 X31.157333 Y27.559000
+G1 X31.157333 Y28.278667
+G1 X30.988000 Y28.659667
+G1 X30.564667 Y29.083000
+G1 X30.183667 Y29.252333
+G1 X29.591000 Y29.294667
+G0 Z#100
+(polygon end, distance 8.63)
+(polygon 268)
+G0 X116.035667 Y28.786667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X115.781667 Y28.702000
+G1 X115.400667 Y28.321000
+G1 X115.316000 Y27.982333
+G1 X115.358333 Y27.601333
+G1 X115.612333 Y27.262667
+G1 X115.908667 Y27.093333
+G1 X116.459000 Y27.093333
+G1 X116.797667 Y27.305000
+G1 X117.009333 Y27.643667
+G1 X117.009333 Y28.194000
+G1 X116.797667 Y28.532667
+G1 X116.459000 Y28.744333
+G1 X116.035667 Y28.786667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 269)
+G0 X117.856000 Y28.786667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.856000 Y27.051000
+G1 X119.591667 Y27.051000
+G1 X119.591667 Y27.474333
+G1 X124.206000 Y27.474333
+G1 X124.206000 Y27.051000
+G1 X125.941667 Y27.051000
+G1 X125.941667 Y27.474333
+G1 X126.830667 Y27.474333
+G1 X127.804333 Y26.458333
+G1 X127.804333 Y23.579667
+G1 X127.465667 Y23.241000
+G1 X127.381000 Y22.902333
+G1 X127.423333 Y22.521333
+G1 X127.677333 Y22.182667
+G1 X127.973667 Y22.013333
+G1 X128.524000 Y22.013333
+G1 X128.820333 Y22.182667
+G1 X129.074333 Y22.521333
+G1 X129.116667 Y22.902333
+G1 X129.032000 Y23.241000
+G1 X128.693333 Y23.579667
+G1 X128.693333 Y26.712333
+G1 X128.608667 Y26.881667
+G1 X127.296333 Y28.236333
+G1 X127.042333 Y28.363333
+G1 X125.941667 Y28.363333
+G1 X125.941667 Y28.786667
+G1 X124.206000 Y28.786667
+G1 X124.206000 Y28.363333
+G1 X119.591667 Y28.363333
+G1 X119.591667 Y28.786667
+G1 X117.856000 Y28.786667
+G0 Z#100
+(polygon end, distance 36.72)
+(polygon 270)
+G0 X135.085667 Y28.786667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.831667 Y28.702000
+G1 X134.450667 Y28.321000
+G1 X134.366000 Y27.982333
+G1 X134.408333 Y27.601333
+G1 X134.662333 Y27.262667
+G1 X134.958667 Y27.093333
+G1 X135.509000 Y27.093333
+G1 X135.847667 Y27.305000
+G1 X136.059333 Y27.643667
+G1 X136.059333 Y28.194000
+G1 X135.847667 Y28.532667
+G1 X135.509000 Y28.744333
+G1 X135.085667 Y28.786667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 271)
+G0 X14.393333 Y26.966333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X13.970000 Y26.754667
+G1 X13.716000 Y26.416000
+G1 X13.631333 Y26.119667
+G1 X13.673667 Y25.738667
+G1 X13.927667 Y25.357667
+G1 X14.308667 Y25.103667
+G1 X21.166667 Y25.061333
+G1 X23.156333 Y23.114000
+G1 X23.156333 Y18.796000
+G1 X22.733000 Y19.177000
+G1 X22.352000 Y19.346333
+G1 X14.308667 Y19.304000
+G1 X13.927667 Y19.050000
+G1 X13.673667 Y18.669000
+G1 X13.673667 Y18.118667
+G1 X13.927667 Y17.737667
+G1 X14.308667 Y17.483667
+G1 X21.801667 Y17.441333
+G1 X22.309667 Y16.975667
+G1 X22.648333 Y16.806333
+G1 X39.412333 Y16.806333
+G1 X39.666333 Y16.679333
+G1 X40.301333 Y16.679333
+G1 X40.640000 Y16.848667
+G1 X40.936333 Y17.187333
+G1 X41.063333 Y17.441333
+G1 X41.063333 Y18.076333
+G1 X40.936333 Y18.330333
+G1 X40.640000 Y18.669000
+G1 X40.301333 Y18.838333
+G1 X39.666333 Y18.838333
+G1 X39.412333 Y18.711333
+G1 X25.061333 Y18.711333
+G1 X25.061333 Y23.664333
+G1 X24.892000 Y24.003000
+G1 X22.182667 Y26.754667
+G1 X21.759333 Y26.966333
+G1 X14.393333 Y26.966333
+G0 Z#100
+(polygon end, distance 89.28)
+(polygon 272)
+G0 X131.868333 Y25.992667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X131.445000 Y25.823333
+G1 X131.191000 Y25.611667
+G1 X130.937000 Y25.315333
+G1 X130.810000 Y24.892000
+G1 X130.810000 Y24.595667
+G1 X130.937000 Y24.172333
+G1 X131.191000 Y23.876000
+G1 X131.487333 Y23.622000
+G1 X131.953000 Y23.495000
+G1 X134.366000 Y21.124333
+G1 X134.366000 Y20.701000
+G1 X135.001000 Y20.658667
+G1 X135.466667 Y20.658667
+G1 X136.101667 Y20.701000
+G1 X136.144000 Y21.336000
+G1 X136.144000 Y21.801667
+G1 X136.101667 Y22.436667
+G1 X135.678333 Y22.436667
+G1 X133.307667 Y24.849667
+G1 X133.180667 Y25.315333
+G1 X132.926667 Y25.611667
+G1 X132.630333 Y25.865667
+G1 X132.207000 Y25.992667
+G1 X131.868333 Y25.992667
+G0 Z#100
+(polygon end, distance 16.75)
+(polygon 273)
+G0 X116.035667 Y25.611667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X115.781667 Y25.527000
+G1 X115.400667 Y25.146000
+G1 X115.316000 Y24.807333
+G1 X115.358333 Y24.426333
+G1 X115.612333 Y24.087667
+G1 X115.908667 Y23.918333
+G1 X116.247333 Y23.876000
+G1 X116.586000 Y23.960667
+G1 X116.924667 Y24.299333
+G1 X122.428000 Y24.299333
+G1 X122.766667 Y23.960667
+G1 X123.105333 Y23.876000
+G1 X123.486333 Y23.918333
+G1 X123.825000 Y24.172333
+G1 X123.994333 Y24.468667
+G1 X123.994333 Y25.019000
+G1 X123.825000 Y25.315333
+G1 X123.486333 Y25.569333
+G1 X123.105333 Y25.611667
+G1 X122.766667 Y25.527000
+G1 X122.428000 Y25.188333
+G1 X116.924667 Y25.188333
+G1 X116.586000 Y25.527000
+G1 X116.289667 Y25.611667
+G1 X116.035667 Y25.611667
+G0 Z#100
+(polygon end, distance 20.02)
+(polygon 274)
+G0 X163.660667 Y25.061333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X163.237333 Y24.849667
+G1 X163.025667 Y24.595667
+G1 X162.856333 Y24.257000
+G1 X162.856333 Y23.876000
+G1 X163.025667 Y23.537333
+G1 X163.237333 Y23.283333
+G1 X163.660667 Y23.071667
+G1 X164.041667 Y23.071667
+G1 X164.465000 Y23.283333
+G1 X164.676667 Y23.537333
+G1 X164.846000 Y23.876000
+G1 X164.846000 Y24.257000
+G1 X164.634333 Y24.680333
+G1 X164.380333 Y24.892000
+G1 X164.041667 Y25.061333
+G1 X163.660667 Y25.061333
+G0 Z#100
+(polygon end, distance 6.25)
+(polygon 275)
+G0 X14.435667 Y24.341667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y24.257000
+G1 X13.800667 Y23.876000
+G1 X13.716000 Y23.537333
+G1 X13.758333 Y23.156333
+G1 X14.012333 Y22.817667
+G1 X14.308667 Y22.648333
+G1 X14.859000 Y22.648333
+G1 X15.197667 Y22.860000
+G1 X15.409333 Y23.198667
+G1 X15.409333 Y23.749000
+G1 X15.197667 Y24.087667
+G1 X14.859000 Y24.299333
+G1 X14.435667 Y24.341667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 276)
+G0 X16.975667 Y24.341667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y24.257000
+G1 X16.340667 Y23.876000
+G1 X16.256000 Y23.537333
+G1 X16.298333 Y23.156333
+G1 X16.552333 Y22.817667
+G1 X16.848667 Y22.648333
+G1 X17.399000 Y22.648333
+G1 X17.737667 Y22.860000
+G1 X17.949333 Y23.198667
+G1 X17.949333 Y23.749000
+G1 X17.737667 Y24.087667
+G1 X17.399000 Y24.299333
+G1 X16.975667 Y24.341667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 277)
+G0 X19.515667 Y24.341667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y24.257000
+G1 X18.880667 Y23.876000
+G1 X18.796000 Y23.537333
+G1 X18.838333 Y23.156333
+G1 X19.092333 Y22.817667
+G1 X19.388667 Y22.648333
+G1 X19.939000 Y22.648333
+G1 X20.277667 Y22.860000
+G1 X20.489333 Y23.198667
+G1 X20.489333 Y23.749000
+G1 X20.277667 Y24.087667
+G1 X19.939000 Y24.299333
+G1 X19.515667 Y24.341667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 278)
+G0 X87.460667 Y24.087667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X87.206667 Y23.876000
+G1 X86.995000 Y23.622000
+G1 X86.995000 Y23.325667
+G1 X87.206667 Y23.071667
+G1 X87.460667 Y22.860000
+G1 X87.714667 Y22.860000
+G1 X87.968667 Y22.987000
+G1 X88.180333 Y23.241000
+G1 X111.633000 Y23.241000
+G1 X113.580333 Y21.336000
+G1 X131.953000 Y21.336000
+G1 X135.170333 Y18.161000
+G1 X165.523333 Y18.161000
+G1 X165.692667 Y17.822333
+G1 X166.031333 Y17.526000
+G1 X166.412333 Y17.483667
+G1 X166.751000 Y17.568333
+G1 X167.132000 Y17.949333
+G1 X167.216667 Y18.288000
+G1 X167.174333 Y18.669000
+G1 X166.920333 Y19.007667
+G1 X166.624000 Y19.177000
+G1 X166.073667 Y19.177000
+G1 X165.735000 Y18.965333
+G1 X165.523333 Y18.626667
+G1 X135.339667 Y18.626667
+G1 X132.122333 Y21.801667
+G1 X113.749667 Y21.801667
+G1 X111.802333 Y23.706667
+G1 X88.180333 Y23.706667
+G1 X87.968667 Y23.960667
+G1 X87.714667 Y24.087667
+G1 X87.460667 Y24.087667
+G0 Z#100
+(polygon end, distance 167.15)
+(polygon 279)
+G0 X115.400667 Y23.706667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X115.146667 Y23.622000
+G1 X114.765667 Y23.241000
+G1 X114.681000 Y22.902333
+G1 X114.723333 Y22.521333
+G1 X114.977333 Y22.182667
+G1 X115.273667 Y22.013333
+G1 X115.824000 Y22.013333
+G1 X116.162667 Y22.225000
+G1 X116.374333 Y22.563667
+G1 X116.374333 Y23.114000
+G1 X116.162667 Y23.452667
+G1 X115.824000 Y23.664333
+G1 X115.400667 Y23.706667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 280)
+G0 X117.940667 Y23.706667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X117.686667 Y23.622000
+G1 X117.305667 Y23.241000
+G1 X117.221000 Y22.902333
+G1 X117.263333 Y22.521333
+G1 X117.517333 Y22.182667
+G1 X117.813667 Y22.013333
+G1 X118.364000 Y22.013333
+G1 X118.702667 Y22.225000
+G1 X118.914333 Y22.563667
+G1 X118.914333 Y23.114000
+G1 X118.702667 Y23.452667
+G1 X118.364000 Y23.664333
+G1 X117.940667 Y23.706667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 281)
+G0 X120.480667 Y23.706667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X120.226667 Y23.622000
+G1 X119.845667 Y23.241000
+G1 X119.761000 Y22.902333
+G1 X119.803333 Y22.521333
+G1 X120.057333 Y22.182667
+G1 X120.353667 Y22.013333
+G1 X120.904000 Y22.013333
+G1 X121.242667 Y22.225000
+G1 X121.454333 Y22.563667
+G1 X121.454333 Y23.114000
+G1 X121.242667 Y23.452667
+G1 X120.904000 Y23.664333
+G1 X120.480667 Y23.706667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 282)
+G0 X123.020667 Y23.706667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X122.766667 Y23.622000
+G1 X122.385667 Y23.241000
+G1 X122.301000 Y22.902333
+G1 X122.343333 Y22.521333
+G1 X122.597333 Y22.182667
+G1 X122.893667 Y22.013333
+G1 X123.444000 Y22.013333
+G1 X123.782667 Y22.225000
+G1 X123.994333 Y22.563667
+G1 X123.994333 Y23.114000
+G1 X123.782667 Y23.452667
+G1 X123.444000 Y23.664333
+G1 X123.020667 Y23.706667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 283)
+G0 X125.560667 Y23.706667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X125.306667 Y23.622000
+G1 X124.925667 Y23.241000
+G1 X124.841000 Y22.902333
+G1 X124.883333 Y22.521333
+G1 X125.137333 Y22.182667
+G1 X125.433667 Y22.013333
+G1 X125.984000 Y22.013333
+G1 X126.322667 Y22.225000
+G1 X126.534333 Y22.563667
+G1 X126.534333 Y23.114000
+G1 X126.322667 Y23.452667
+G1 X125.984000 Y23.664333
+G1 X125.560667 Y23.706667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 284)
+G0 X130.640667 Y23.706667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X130.386667 Y23.622000
+G1 X130.005667 Y23.241000
+G1 X129.921000 Y22.902333
+G1 X129.963333 Y22.521333
+G1 X130.217333 Y22.182667
+G1 X130.513667 Y22.013333
+G1 X131.064000 Y22.013333
+G1 X131.402667 Y22.225000
+G1 X131.614333 Y22.563667
+G1 X131.614333 Y23.114000
+G1 X131.402667 Y23.452667
+G1 X131.064000 Y23.664333
+G1 X130.640667 Y23.706667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 285)
+G0 X165.481000 Y23.706667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X165.481000 Y21.971000
+G1 X167.216667 Y21.971000
+G1 X167.216667 Y23.706667
+G1 X165.481000 Y23.706667
+G0 Z#100
+(polygon end, distance 6.94)
+(polygon 286)
+G0 X78.570667 Y22.436667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X78.316667 Y22.352000
+G1 X77.978000 Y22.013333
+G1 X47.540333 Y22.013333
+G1 X47.371000 Y21.928667
+G1 X42.121667 Y16.721667
+G1 X41.613667 Y16.679333
+G1 X41.275000 Y16.467667
+G1 X41.063333 Y16.129000
+G1 X41.063333 Y15.663333
+G1 X27.347333 Y15.663333
+G1 X27.305000 Y15.790333
+G1 X26.966333 Y16.044333
+G1 X26.585333 Y16.086667
+G1 X26.246667 Y16.002000
+G1 X25.908000 Y15.663333
+G1 X24.976667 Y15.663333
+G1 X24.976667 Y16.086667
+G1 X23.241000 Y16.086667
+G1 X23.241000 Y14.351000
+G1 X24.976667 Y14.351000
+G1 X24.976667 Y14.774333
+G1 X25.950333 Y14.774333
+G1 X25.992667 Y14.647333
+G1 X26.331333 Y14.393333
+G1 X26.712333 Y14.351000
+G1 X27.051000 Y14.435667
+G1 X27.389667 Y14.774333
+G1 X41.317333 Y14.774333
+G1 X41.486667 Y14.859000
+G1 X41.656000 Y14.986000
+G1 X42.164000 Y15.028333
+G1 X42.502667 Y15.240000
+G1 X42.714333 Y15.578667
+G1 X42.756667 Y16.086667
+G1 X47.752000 Y21.124333
+G1 X77.978000 Y21.124333
+G1 X78.316667 Y20.785667
+G1 X78.655333 Y20.701000
+G1 X79.036333 Y20.743333
+G1 X79.375000 Y20.997333
+G1 X79.417333 Y21.124333
+G1 X93.810667 Y21.124333
+G1 X96.054333 Y18.838333
+G1 X96.054333 Y13.673667
+G1 X95.969667 Y13.673667
+G1 X95.588667 Y13.335000
+G1 X95.419333 Y12.996333
+G1 X95.419333 Y12.361333
+G1 X95.546333 Y12.107333
+G1 X95.842667 Y11.768667
+G1 X96.181333 Y11.599333
+G1 X96.816333 Y11.599333
+G1 X97.155000 Y11.768667
+G1 X97.451333 Y12.107333
+G1 X97.578333 Y12.361333
+G1 X97.578333 Y12.996333
+G1 X97.409000 Y13.335000
+G1 X97.028000 Y13.673667
+G1 X96.943333 Y13.673667
+G1 X96.943333 Y19.092333
+G1 X96.816333 Y19.346333
+G1 X94.191667 Y21.928667
+G1 X94.022333 Y22.013333
+G1 X79.459667 Y22.013333
+G1 X79.121000 Y22.352000
+G1 X78.824667 Y22.436667
+G1 X78.570667 Y22.436667
+G0 Z#100
+(polygon end, distance 175.00)
+(polygon 287)
+G0 X14.435667 Y21.801667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y21.717000
+G1 X13.800667 Y21.336000
+G1 X13.716000 Y20.997333
+G1 X13.758333 Y20.616333
+G1 X14.012333 Y20.277667
+G1 X14.308667 Y20.108333
+G1 X14.859000 Y20.108333
+G1 X15.197667 Y20.320000
+G1 X15.409333 Y20.658667
+G1 X15.409333 Y21.209000
+G1 X15.197667 Y21.547667
+G1 X14.859000 Y21.759333
+G1 X14.435667 Y21.801667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 288)
+G0 X16.975667 Y21.801667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y21.717000
+G1 X16.340667 Y21.336000
+G1 X16.256000 Y20.997333
+G1 X16.298333 Y20.616333
+G1 X16.552333 Y20.277667
+G1 X16.848667 Y20.108333
+G1 X17.399000 Y20.108333
+G1 X17.737667 Y20.320000
+G1 X17.949333 Y20.658667
+G1 X17.949333 Y21.209000
+G1 X17.737667 Y21.547667
+G1 X17.399000 Y21.759333
+G1 X16.975667 Y21.801667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 289)
+G0 X19.515667 Y21.801667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y21.717000
+G1 X18.880667 Y21.336000
+G1 X18.796000 Y20.997333
+G1 X18.838333 Y20.616333
+G1 X19.092333 Y20.277667
+G1 X19.388667 Y20.108333
+G1 X19.939000 Y20.108333
+G1 X20.277667 Y20.320000
+G1 X20.489333 Y20.658667
+G1 X20.489333 Y21.209000
+G1 X20.277667 Y21.547667
+G1 X19.939000 Y21.759333
+G1 X19.515667 Y21.801667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 290)
+G0 X119.210667 Y21.166667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X118.956667 Y21.082000
+G1 X118.575667 Y20.701000
+G1 X118.491000 Y20.362333
+G1 X118.533333 Y20.066000
+G1 X115.231333 Y16.806333
+G1 X115.104333 Y16.552333
+G1 X115.104333 Y15.959667
+G1 X114.765667 Y15.621000
+G1 X114.681000 Y15.282333
+G1 X114.723333 Y14.901333
+G1 X114.977333 Y14.562667
+G1 X115.273667 Y14.393333
+G1 X115.824000 Y14.393333
+G1 X116.120333 Y14.562667
+G1 X116.374333 Y14.901333
+G1 X116.416667 Y15.282333
+G1 X116.332000 Y15.621000
+G1 X115.993333 Y15.959667
+G1 X115.993333 Y16.340667
+G1 X119.126000 Y19.431000
+G1 X119.634000 Y19.473333
+G1 X119.972667 Y19.685000
+G1 X120.184333 Y20.023667
+G1 X120.184333 Y20.574000
+G1 X119.972667 Y20.912667
+G1 X119.634000 Y21.124333
+G1 X119.210667 Y21.166667
+G0 Z#100
+(polygon end, distance 19.34)
+(polygon 291)
+G0 X80.433333 Y20.785667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X80.137000 Y20.658667
+G1 X49.233667 Y20.574000
+G1 X48.979667 Y20.447000
+G1 X42.121667 Y13.631333
+G1 X33.993667 Y13.589000
+G1 X33.612667 Y13.335000
+G1 X33.358667 Y12.954000
+G1 X33.358667 Y12.403667
+G1 X33.612667 Y12.022667
+G1 X33.993667 Y11.768667
+G1 X42.629667 Y11.726333
+G1 X43.010667 Y11.853333
+G1 X49.911000 Y18.711333
+G1 X80.052333 Y18.711333
+G1 X80.306333 Y18.584333
+G1 X80.941333 Y18.584333
+G1 X81.195333 Y18.711333
+G1 X91.694000 Y18.711333
+G1 X93.006333 Y17.356667
+G1 X93.006333 Y13.250333
+G1 X92.879333 Y12.996333
+G1 X92.879333 Y12.361333
+G1 X93.006333 Y12.107333
+G1 X93.006333 Y10.583333
+G1 X93.175667 Y10.244667
+G1 X94.615000 Y8.763000
+G1 X95.038333 Y8.551333
+G1 X117.644333 Y8.551333
+G1 X118.067667 Y8.763000
+G1 X121.454333 Y12.192000
+G1 X121.581333 Y12.573000
+G1 X121.539000 Y15.494000
+G1 X121.285000 Y15.875000
+G1 X120.904000 Y16.129000
+G1 X117.813667 Y16.129000
+G1 X117.432667 Y15.875000
+G1 X117.178667 Y15.494000
+G1 X117.178667 Y14.943667
+G1 X117.432667 Y14.562667
+G1 X117.813667 Y14.308667
+G1 X119.676333 Y14.266333
+G1 X119.676333 Y13.038667
+G1 X117.051667 Y10.456333
+G1 X95.588667 Y10.456333
+G1 X94.911333 Y11.176000
+G1 X94.911333 Y12.107333
+G1 X95.038333 Y12.361333
+G1 X95.038333 Y12.996333
+G1 X94.911333 Y13.250333
+G1 X94.911333 Y17.949333
+G1 X94.742000 Y18.288000
+G1 X92.667667 Y20.404667
+G1 X92.244333 Y20.616333
+G1 X81.195333 Y20.616333
+G1 X80.941333 Y20.743333
+G1 X80.433333 Y20.785667
+G0 Z#100
+(polygon end, distance 213.26)
+(polygon 292)
+G0 X82.380667 Y18.626667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X82.126667 Y18.542000
+G1 X81.788000 Y18.203333
+G1 X51.350333 Y18.203333
+G1 X51.096333 Y18.076333
+G1 X44.280667 Y11.218333
+G1 X32.554333 Y11.218333
+G1 X30.649333 Y13.081000
+G1 X30.226000 Y13.462000
+G1 X29.887333 Y13.546667
+G1 X29.506333 Y13.504333
+G1 X29.167667 Y13.250333
+G1 X29.125333 Y13.123333
+G1 X27.855333 Y13.123333
+G1 X27.601333 Y12.996333
+G1 X25.230667 Y10.583333
+G1 X24.976667 Y10.583333
+G1 X24.976667 Y11.006667
+G1 X23.241000 Y11.006667
+G1 X23.241000 Y9.271000
+G1 X24.976667 Y9.271000
+G1 X24.976667 Y9.694333
+G1 X25.442333 Y9.694333
+G1 X25.696333 Y9.821333
+G1 X28.067000 Y12.234333
+G1 X29.083000 Y12.234333
+G1 X29.421667 Y11.895667
+G1 X29.760333 Y11.811000
+G1 X30.099000 Y11.853333
+G1 X30.437667 Y12.065000
+G1 X32.131000 Y10.414000
+G1 X32.300333 Y10.329333
+G1 X44.492333 Y10.329333
+G1 X44.746333 Y10.456333
+G1 X51.562000 Y17.314333
+G1 X81.788000 Y17.314333
+G1 X82.126667 Y16.975667
+G1 X82.465333 Y16.891000
+G1 X82.846333 Y16.933333
+G1 X83.185000 Y17.187333
+G1 X83.227333 Y17.314333
+G1 X90.000667 Y17.314333
+G1 X90.974333 Y16.298333
+G1 X90.974333 Y13.800667
+G1 X90.297000 Y13.800667
+G1 X90.297000 Y11.557000
+G1 X90.974333 Y11.557000
+G1 X90.974333 Y10.075333
+G1 X91.059000 Y9.906000
+G1 X93.641333 Y7.281333
+G1 X93.895333 Y7.154333
+G1 X130.048000 Y7.154333
+G1 X130.386667 Y6.815667
+G1 X130.725333 Y6.731000
+G1 X131.106333 Y6.773333
+G1 X131.445000 Y7.027333
+G1 X131.614333 Y7.323667
+G1 X131.614333 Y7.874000
+G1 X131.445000 Y8.170333
+G1 X131.106333 Y8.424333
+G1 X130.725333 Y8.466667
+G1 X130.386667 Y8.382000
+G1 X130.048000 Y8.043333
+G1 X94.107000 Y8.043333
+G1 X91.863333 Y10.329333
+G1 X91.863333 Y11.557000
+G1 X92.540667 Y11.557000
+G1 X92.540667 Y13.800667
+G1 X91.863333 Y13.800667
+G1 X91.863333 Y16.552333
+G1 X91.778667 Y16.721667
+G1 X90.466333 Y18.076333
+G1 X90.212333 Y18.203333
+G1 X83.269667 Y18.203333
+G1 X82.931000 Y18.542000
+G1 X82.634667 Y18.626667
+G1 X82.380667 Y18.626667
+G0 Z#100
+(polygon end, distance 249.68)
+(polygon 293)
+G0 X163.660667 Y18.076333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X163.237333 Y17.864667
+G1 X163.025667 Y17.610667
+G1 X162.856333 Y17.272000
+G1 X162.856333 Y16.891000
+G1 X163.025667 Y16.552333
+G1 X163.237333 Y16.298333
+G1 X163.660667 Y16.086667
+G1 X164.041667 Y16.086667
+G1 X164.465000 Y16.298333
+G1 X164.676667 Y16.552333
+G1 X164.846000 Y16.891000
+G1 X164.846000 Y17.272000
+G1 X164.634333 Y17.695333
+G1 X164.380333 Y17.907000
+G1 X164.041667 Y18.076333
+G1 X163.660667 Y18.076333
+G0 Z#100
+(polygon end, distance 6.25)
+(polygon 294)
+G0 X135.085667 Y17.356667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X134.831667 Y17.272000
+G1 X134.450667 Y16.891000
+G1 X134.366000 Y16.552333
+G1 X134.408333 Y16.256000
+G1 X133.773333 Y15.663333
+G1 X131.656667 Y15.663333
+G1 X131.656667 Y16.086667
+G1 X129.921000 Y16.086667
+G1 X129.921000 Y14.351000
+G1 X131.656667 Y14.351000
+G1 X131.656667 Y14.774333
+G1 X134.027333 Y14.774333
+G1 X134.196667 Y14.859000
+G1 X135.001000 Y15.621000
+G1 X135.509000 Y15.663333
+G1 X135.847667 Y15.875000
+G1 X136.059333 Y16.213667
+G1 X136.059333 Y16.764000
+G1 X135.847667 Y17.102667
+G1 X135.509000 Y17.314333
+G1 X135.085667 Y17.356667
+G0 Z#100
+(polygon end, distance 17.24)
+(polygon 295)
+G0 X14.393333 Y16.848667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X13.970000 Y16.637000
+G1 X13.758333 Y16.383000
+G1 X13.589000 Y16.044333
+G1 X13.589000 Y15.663333
+G1 X13.758333 Y15.324667
+G1 X13.970000 Y15.070667
+G1 X14.393333 Y14.859000
+G1 X19.939000 Y14.859000
+G1 X21.209000 Y13.546667
+G1 X21.209000 Y8.678333
+G1 X21.378333 Y8.339667
+G1 X22.860000 Y6.815667
+G1 X23.283333 Y6.604000
+G1 X33.909000 Y6.604000
+G1 X36.830000 Y3.640667
+G1 X37.253333 Y3.429000
+G1 X43.857333 Y3.429000
+G1 X43.984333 Y3.259667
+G1 X44.365333 Y3.005667
+G1 X44.873333 Y2.836333
+G1 X45.254333 Y2.836333
+G1 X45.804667 Y3.005667
+G1 X46.185667 Y3.302000
+G1 X46.482000 Y3.683000
+G1 X46.651333 Y4.233333
+G1 X46.651333 Y4.614333
+G1 X46.482000 Y5.164667
+G1 X46.185667 Y5.545667
+G1 X45.804667 Y5.842000
+G1 X45.254333 Y6.011333
+G1 X44.873333 Y6.011333
+G1 X44.365333 Y5.842000
+G1 X43.984333 Y5.588000
+G1 X43.857333 Y5.418667
+G1 X37.803667 Y5.418667
+G1 X35.136667 Y8.128000
+G1 X35.136667 Y8.466667
+G1 X34.713333 Y8.466667
+G1 X34.417000 Y8.593667
+G1 X23.833667 Y8.593667
+G1 X23.198667 Y9.271000
+G1 X23.198667 Y14.139333
+G1 X22.987000 Y14.562667
+G1 X20.828000 Y16.679333
+G1 X20.489333 Y16.848667
+G1 X14.393333 Y16.848667
+G0 Z#100
+(polygon end, distance 84.91)
+(polygon 296)
+G0 X70.315667 Y16.086667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X70.061667 Y16.002000
+G1 X69.723000 Y15.663333
+G1 X59.605333 Y15.663333
+G1 X59.436000 Y15.578667
+G1 X58.716333 Y14.901333
+G1 X58.589333 Y14.647333
+G1 X58.589333 Y13.800667
+G1 X57.912000 Y13.800667
+G1 X57.912000 Y11.557000
+G1 X60.155667 Y11.557000
+G1 X60.155667 Y13.800667
+G1 X59.478333 Y13.800667
+G1 X59.478333 Y14.393333
+G1 X59.817000 Y14.774333
+G1 X69.723000 Y14.774333
+G1 X70.061667 Y14.435667
+G1 X70.400333 Y14.351000
+G1 X70.781333 Y14.393333
+G1 X71.120000 Y14.647333
+G1 X71.289333 Y14.943667
+G1 X71.289333 Y15.494000
+G1 X71.077667 Y15.832667
+G1 X70.739000 Y16.044333
+G1 X70.315667 Y16.086667
+G0 Z#100
+(polygon end, distance 36.02)
+(polygon 297)
+G0 X123.020667 Y16.086667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X122.766667 Y16.002000
+G1 X122.385667 Y15.621000
+G1 X122.301000 Y15.282333
+G1 X122.343333 Y14.901333
+G1 X122.597333 Y14.562667
+G1 X122.893667 Y14.393333
+G1 X123.444000 Y14.393333
+G1 X123.782667 Y14.605000
+G1 X123.994333 Y14.943667
+G1 X123.994333 Y15.494000
+G1 X123.782667 Y15.832667
+G1 X123.444000 Y16.044333
+G1 X123.020667 Y16.086667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 298)
+G0 X125.560667 Y16.086667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X125.306667 Y16.002000
+G1 X124.925667 Y15.621000
+G1 X124.841000 Y15.282333
+G1 X124.883333 Y14.901333
+G1 X125.137333 Y14.562667
+G1 X125.433667 Y14.393333
+G1 X125.984000 Y14.393333
+G1 X126.322667 Y14.605000
+G1 X126.534333 Y14.943667
+G1 X126.534333 Y15.494000
+G1 X126.322667 Y15.832667
+G1 X125.984000 Y16.044333
+G1 X125.560667 Y16.086667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 299)
+G0 X128.100667 Y16.086667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X127.846667 Y16.002000
+G1 X127.465667 Y15.621000
+G1 X127.381000 Y15.282333
+G1 X127.423333 Y14.901333
+G1 X127.677333 Y14.562667
+G1 X127.973667 Y14.393333
+G1 X128.524000 Y14.393333
+G1 X128.862667 Y14.605000
+G1 X129.074333 Y14.943667
+G1 X129.074333 Y15.494000
+G1 X128.862667 Y15.832667
+G1 X128.524000 Y16.044333
+G1 X128.100667 Y16.086667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 300)
+G0 X14.435667 Y14.181667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X14.181667 Y14.097000
+G1 X13.800667 Y13.716000
+G1 X13.716000 Y13.377333
+G1 X13.758333 Y12.996333
+G1 X14.012333 Y12.657667
+G1 X14.308667 Y12.488333
+G1 X14.859000 Y12.488333
+G1 X15.197667 Y12.700000
+G1 X15.409333 Y13.038667
+G1 X15.409333 Y13.589000
+G1 X15.197667 Y13.927667
+G1 X14.859000 Y14.139333
+G1 X14.435667 Y14.181667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 301)
+G0 X16.975667 Y14.181667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X16.721667 Y14.097000
+G1 X16.340667 Y13.716000
+G1 X16.256000 Y13.377333
+G1 X16.298333 Y12.996333
+G1 X16.552333 Y12.657667
+G1 X16.848667 Y12.488333
+G1 X17.399000 Y12.488333
+G1 X17.737667 Y12.700000
+G1 X17.949333 Y13.038667
+G1 X17.949333 Y13.589000
+G1 X17.737667 Y13.927667
+G1 X17.399000 Y14.139333
+G1 X16.975667 Y14.181667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 302)
+G0 X19.515667 Y14.181667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X19.261667 Y14.097000
+G1 X18.880667 Y13.716000
+G1 X18.796000 Y13.377333
+G1 X18.838333 Y12.996333
+G1 X19.092333 Y12.657667
+G1 X19.388667 Y12.488333
+G1 X19.939000 Y12.488333
+G1 X20.277667 Y12.700000
+G1 X20.489333 Y13.038667
+G1 X20.489333 Y13.589000
+G1 X20.277667 Y13.927667
+G1 X19.939000 Y14.139333
+G1 X19.515667 Y14.181667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 303)
+G0 X128.100667 Y13.927667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X127.846667 Y13.716000
+G1 X127.635000 Y13.462000
+G1 X127.635000 Y13.165667
+G1 X127.846667 Y12.911667
+G1 X128.100667 Y12.700000
+G1 X128.354667 Y12.700000
+G1 X128.608667 Y12.827000
+G1 X128.820333 Y13.081000
+G1 X137.837333 Y13.081000
+G1 X138.049000 Y12.827000
+G1 X138.303000 Y12.700000
+G1 X138.557000 Y12.700000
+G1 X138.811000 Y12.911667
+G1 X139.022667 Y13.165667
+G1 X139.022667 Y13.462000
+G1 X138.811000 Y13.716000
+G1 X138.557000 Y13.927667
+G1 X138.303000 Y13.927667
+G1 X138.049000 Y13.800667
+G1 X137.837333 Y13.546667
+G1 X128.820333 Y13.546667
+G1 X128.608667 Y13.800667
+G1 X128.354667 Y13.927667
+G1 X128.100667 Y13.927667
+G0 Z#100
+(polygon end, distance 24.75)
+(polygon 304)
+G0 X61.383333 Y13.800667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X61.171667 Y13.716000
+G1 X60.917667 Y13.589000
+G1 X60.621333 Y13.250333
+G1 X60.494333 Y12.996333
+G1 X60.452000 Y12.530667
+G1 X60.579000 Y12.192000
+G1 X60.579000 Y11.133667
+G1 X54.737000 Y11.133667
+G1 X54.271333 Y11.345333
+G1 X53.636333 Y11.345333
+G1 X53.255333 Y11.176000
+G1 X52.916667 Y10.837333
+G1 X52.747333 Y10.456333
+G1 X52.747333 Y9.821333
+G1 X52.916667 Y9.440333
+G1 X53.255333 Y9.101667
+G1 X53.636333 Y8.932333
+G1 X54.271333 Y8.932333
+G1 X54.737000 Y9.144000
+G1 X84.920667 Y9.144000
+G1 X85.386333 Y8.932333
+G1 X86.021333 Y8.932333
+G1 X86.402333 Y9.101667
+G1 X86.741000 Y9.440333
+G1 X86.910333 Y9.821333
+G1 X86.910333 Y10.456333
+G1 X86.741000 Y10.837333
+G1 X86.402333 Y11.176000
+G1 X86.021333 Y11.345333
+G1 X85.386333 Y11.345333
+G1 X84.920667 Y11.133667
+G1 X62.568667 Y11.133667
+G1 X62.568667 Y12.192000
+G1 X62.695667 Y12.530667
+G1 X62.653333 Y12.996333
+G1 X62.526333 Y13.250333
+G1 X62.230000 Y13.589000
+G1 X61.891333 Y13.758333
+G1 X61.383333 Y13.800667
+G0 Z#100
+(polygon end, distance 76.13)
+(polygon 305)
+G0 X63.923333 Y13.800667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X63.711667 Y13.716000
+G1 X63.457667 Y13.589000
+G1 X63.161333 Y13.250333
+G1 X63.034333 Y12.996333
+G1 X63.034333 Y12.361333
+G1 X63.161333 Y12.107333
+G1 X63.457667 Y11.768667
+G1 X63.796333 Y11.599333
+G1 X64.431333 Y11.599333
+G1 X64.770000 Y11.768667
+G1 X65.066333 Y12.107333
+G1 X65.193333 Y12.361333
+G1 X65.193333 Y12.996333
+G1 X65.066333 Y13.250333
+G1 X64.770000 Y13.589000
+G1 X64.431333 Y13.758333
+G1 X63.923333 Y13.800667
+G0 Z#100
+(polygon end, distance 7.00)
+(polygon 306)
+G0 X125.560667 Y12.657667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X125.306667 Y12.446000
+G1 X125.095000 Y12.192000
+G1 X125.095000 Y11.895667
+G1 X125.306667 Y11.641667
+G1 X125.560667 Y11.430000
+G1 X125.814667 Y11.430000
+G1 X126.068667 Y11.557000
+G1 X126.280333 Y11.811000
+G1 X139.107333 Y11.811000
+G1 X139.319000 Y11.557000
+G1 X139.573000 Y11.430000
+G1 X139.827000 Y11.430000
+G1 X140.081000 Y11.641667
+G1 X140.292667 Y11.895667
+G1 X140.292667 Y12.192000
+G1 X140.081000 Y12.446000
+G1 X139.827000 Y12.657667
+G1 X139.573000 Y12.657667
+G1 X139.319000 Y12.530667
+G1 X139.107333 Y12.276667
+G1 X126.280333 Y12.276667
+G1 X126.068667 Y12.530667
+G1 X125.814667 Y12.657667
+G1 X125.560667 Y12.657667
+G0 Z#100
+(polygon end, distance 32.37)
+(polygon 307)
+G0 X157.183667 Y12.657667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X156.887333 Y12.361333
+G1 X156.887333 Y12.192000
+G1 X156.718000 Y12.276667
+G1 X156.379333 Y12.276667
+G1 X156.083000 Y11.980333
+G1 X156.083000 Y11.599333
+G1 X156.379333 Y11.303000
+G1 X156.760333 Y11.303000
+G1 X156.887333 Y11.430000
+G1 X157.099000 Y11.303000
+G1 X157.649333 Y11.345333
+G1 X157.691667 Y11.133667
+G1 X157.861000 Y11.049000
+G1 X158.030333 Y11.091333
+G1 X158.115000 Y11.303000
+G1 X158.496000 Y11.303000
+G1 X158.792333 Y11.345333
+G1 X158.792333 Y10.964333
+G1 X158.961667 Y10.795000
+G1 X159.088667 Y10.795000
+G1 X159.258000 Y10.964333
+G1 X159.258000 Y11.303000
+G1 X159.469667 Y11.303000
+G1 X159.681333 Y11.472333
+G1 X159.893000 Y11.303000
+G1 X160.231667 Y11.303000
+G1 X160.401000 Y11.387667
+G1 X160.401000 Y11.091333
+G1 X160.697333 Y10.795000
+G1 X161.332333 Y10.795000
+G1 X161.501667 Y10.964333
+G1 X161.501667 Y11.091333
+G1 X161.374667 Y11.218333
+G1 X161.374667 Y12.107333
+G1 X161.205333 Y12.276667
+G1 X161.078333 Y12.276667
+G1 X160.909000 Y12.107333
+G1 X160.655000 Y12.276667
+G1 X160.401000 Y12.149667
+G1 X160.274000 Y12.276667
+G1 X159.893000 Y12.276667
+G1 X159.681333 Y12.107333
+G1 X159.469667 Y12.276667
+G1 X158.961667 Y12.276667
+G1 X158.792333 Y12.107333
+G1 X158.623000 Y12.276667
+G1 X158.496000 Y12.276667
+G1 X158.326667 Y12.107333
+G1 X158.326667 Y11.768667
+G1 X158.115000 Y11.768667
+G1 X158.115000 Y12.107333
+G1 X157.945667 Y12.276667
+G1 X157.861000 Y12.361333
+G1 X157.564667 Y12.657667
+G1 X157.183667 Y12.657667
+G0 Z#100
+(polygon end, distance 16.28)
+(polygon 308)
+G0 X145.118667 Y12.276667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X144.949333 Y12.107333
+G1 X144.949333 Y11.599333
+G1 X145.245667 Y11.303000
+G1 X145.796000 Y11.345333
+G1 X145.880667 Y11.472333
+G1 X146.050000 Y11.303000
+G1 X146.558000 Y11.303000
+G1 X146.727333 Y11.472333
+G1 X146.896667 Y11.303000
+G1 X147.489333 Y11.303000
+G1 X147.574000 Y11.091333
+G1 X147.743333 Y11.049000
+G1 X147.912667 Y11.133667
+G1 X147.955000 Y11.303000
+G1 X148.082000 Y11.303000
+G1 X148.251333 Y11.472333
+G1 X148.251333 Y11.726333
+G1 X148.336000 Y11.430000
+G1 X148.463000 Y11.303000
+G1 X148.590000 Y11.303000
+G1 X148.759333 Y11.430000
+G1 X148.886333 Y11.303000
+G1 X149.267333 Y11.303000
+G1 X149.394333 Y11.430000
+G1 X149.606000 Y11.303000
+G1 X150.241000 Y11.345333
+G1 X150.368000 Y11.472333
+G1 X150.368000 Y11.599333
+G1 X150.241000 Y11.726333
+G1 X150.241000 Y12.107333
+G1 X150.071667 Y12.276667
+G1 X149.944667 Y12.276667
+G1 X149.775333 Y12.107333
+G1 X149.775333 Y11.768667
+G1 X149.563667 Y11.768667
+G1 X149.563667 Y11.980333
+G1 X149.267333 Y12.276667
+G1 X148.759333 Y12.276667
+G1 X148.547667 Y12.065000
+G1 X148.336000 Y12.276667
+G1 X148.209000 Y12.276667
+G1 X147.997333 Y12.065000
+G1 X147.785667 Y12.276667
+G1 X146.896667 Y12.276667
+G1 X146.727333 Y12.107333
+G1 X146.558000 Y12.276667
+G1 X145.880667 Y12.234333
+G1 X145.796000 Y12.107333
+G1 X145.626667 Y12.276667
+G1 X145.457333 Y12.234333
+G1 X145.288000 Y12.234333
+G1 X145.118667 Y12.276667
+G0 Z#100
+(polygon end, distance 14.97)
+(polygon 309)
+G0 X145.796000 Y11.895667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X145.796000 Y11.726333
+G1 X145.880667 Y11.684000
+G1 X145.880667 Y11.853333
+G1 X145.796000 Y11.895667
+G0 Z#100
+(polygon end, distance 0.53)
+(polygon 310)
+G0 X150.622000 Y12.276667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X150.452667 Y12.107333
+G1 X150.452667 Y11.260667
+G1 X150.368000 Y11.260667
+G1 X150.198667 Y11.091333
+G1 X150.198667 Y10.964333
+G1 X150.368000 Y10.795000
+G1 X151.003000 Y10.795000
+G1 X151.172333 Y10.964333
+G1 X151.172333 Y11.091333
+G1 X151.003000 Y11.260667
+G1 X150.918333 Y11.260667
+G1 X150.918333 Y12.107333
+G1 X150.749000 Y12.276667
+G1 X150.622000 Y12.276667
+G0 Z#100
+(polygon end, distance 4.32)
+(polygon 311)
+G0 X151.595667 Y12.276667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X151.426333 Y12.107333
+G1 X151.426333 Y11.980333
+G1 X151.553333 Y11.853333
+G1 X151.553333 Y10.964333
+G1 X151.722667 Y10.795000
+G1 X151.849667 Y10.795000
+G1 X152.019000 Y10.964333
+G1 X152.019000 Y11.387667
+G1 X152.188333 Y11.303000
+G1 X152.611667 Y11.345333
+G1 X152.611667 Y11.218333
+G1 X152.781000 Y11.049000
+G1 X152.908000 Y11.049000
+G1 X153.077333 Y11.218333
+G1 X153.077333 Y11.430000
+G1 X153.289000 Y11.303000
+G1 X153.797000 Y11.345333
+G1 X153.881667 Y11.472333
+G1 X154.051000 Y11.303000
+G1 X154.516667 Y11.303000
+G1 X154.686000 Y11.387667
+G1 X154.686000 Y11.091333
+G1 X154.982333 Y10.795000
+G1 X155.617333 Y10.795000
+G1 X155.786667 Y10.964333
+G1 X155.786667 Y11.091333
+G1 X155.659667 Y11.218333
+G1 X155.659667 Y11.853333
+G1 X155.786667 Y11.980333
+G1 X155.786667 Y12.107333
+G1 X155.617333 Y12.276667
+G1 X154.982333 Y12.276667
+G1 X154.770667 Y12.107333
+G1 X154.516667 Y12.276667
+G1 X153.881667 Y12.234333
+G1 X153.797000 Y12.107333
+G1 X153.627667 Y12.276667
+G1 X153.458333 Y12.234333
+G1 X153.289000 Y12.234333
+G1 X153.077333 Y12.234333
+G1 X152.950333 Y12.234333
+G1 X152.738667 Y12.234333
+G1 X152.569333 Y12.234333
+G1 X152.061333 Y12.276667
+G1 X151.849667 Y12.149667
+G1 X151.722667 Y12.276667
+G1 X151.595667 Y12.276667
+G0 Z#100
+(polygon end, distance 13.27)
+(polygon 312)
+G0 X153.797000 Y11.895667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X153.797000 Y11.726333
+G1 X153.881667 Y11.684000
+G1 X153.881667 Y11.853333
+G1 X153.797000 Y11.895667
+G0 Z#100
+(polygon end, distance 0.53)
+(polygon 313)
+G0 X155.151667 Y11.811000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X155.151667 Y11.260667
+G1 X155.194000 Y11.557000
+G1 X155.151667 Y11.811000
+G0 Z#100
+(polygon end, distance 1.11)
+(polygon 314)
+G0 X123.020667 Y11.387667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X122.766667 Y11.176000
+G1 X122.555000 Y10.922000
+G1 X122.555000 Y10.625667
+G1 X122.766667 Y10.371667
+G1 X123.020667 Y10.160000
+G1 X123.274667 Y10.160000
+G1 X123.528667 Y10.287000
+G1 X123.740333 Y10.541000
+G1 X140.377333 Y10.541000
+G1 X140.589000 Y10.287000
+G1 X140.843000 Y10.160000
+G1 X141.097000 Y10.160000
+G1 X141.351000 Y10.371667
+G1 X141.562667 Y10.625667
+G1 X141.562667 Y10.922000
+G1 X141.351000 Y11.176000
+G1 X141.097000 Y11.387667
+G1 X140.843000 Y11.387667
+G1 X140.589000 Y11.260667
+G1 X140.377333 Y11.006667
+G1 X123.740333 Y11.006667
+G1 X123.528667 Y11.260667
+G1 X123.274667 Y11.387667
+G1 X123.020667 Y11.387667
+G0 Z#100
+(polygon end, distance 39.99)
+(polygon 315)
+G0 X149.352000 Y10.752667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X149.055667 Y10.456333
+G1 X149.055667 Y10.287000
+G1 X148.886333 Y10.371667
+G1 X148.420667 Y10.371667
+G1 X148.251333 Y10.244667
+G1 X148.124333 Y10.371667
+G1 X147.616333 Y10.371667
+G1 X147.320000 Y10.075333
+G1 X147.362333 Y9.652000
+G1 X147.616333 Y9.398000
+G1 X148.124333 Y9.398000
+G1 X148.336000 Y9.567333
+G1 X148.547667 Y9.398000
+G1 X148.928667 Y9.398000
+G1 X149.055667 Y9.525000
+G1 X149.225000 Y9.398000
+G1 X149.733000 Y9.398000
+G1 X150.029333 Y9.694333
+G1 X150.029333 Y9.567333
+G1 X150.198667 Y9.398000
+G1 X150.706667 Y9.398000
+G1 X151.003000 Y9.694333
+G1 X151.003000 Y9.906000
+G1 X151.341667 Y9.906000
+G1 X151.341667 Y9.059333
+G1 X151.511000 Y8.890000
+G1 X151.638000 Y8.890000
+G1 X151.807333 Y9.059333
+G1 X151.807333 Y10.202333
+G1 X151.638000 Y10.371667
+G1 X151.003000 Y10.371667
+G1 X150.876000 Y10.244667
+G1 X150.664333 Y10.371667
+G1 X150.029333 Y10.329333
+G1 X150.029333 Y10.456333
+G1 X149.733000 Y10.752667
+G1 X149.352000 Y10.752667
+G0 Z#100
+(polygon end, distance 13.40)
+(polygon 316)
+G0 X152.654000 Y10.371667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X152.484667 Y10.202333
+G1 X152.484667 Y9.863667
+G1 X152.273000 Y9.863667
+G1 X152.103667 Y9.694333
+G1 X152.103667 Y9.567333
+G1 X152.273000 Y9.398000
+G1 X152.950333 Y9.440333
+G1 X153.035000 Y9.525000
+G1 X153.246667 Y9.398000
+G1 X153.712333 Y9.440333
+G1 X153.797000 Y9.271000
+G1 X153.797000 Y9.059333
+G1 X153.966333 Y8.890000
+G1 X154.093333 Y8.890000
+G1 X154.262667 Y9.059333
+G1 X154.262667 Y9.313333
+G1 X154.347333 Y9.017000
+G1 X154.474333 Y8.890000
+G1 X154.601333 Y8.890000
+G1 X154.770667 Y9.059333
+G1 X154.770667 Y9.271000
+G1 X154.897667 Y9.482667
+G1 X155.067000 Y9.398000
+G1 X155.405667 Y9.398000
+G1 X155.659667 Y9.609667
+G1 X155.786667 Y9.440333
+G1 X156.040667 Y9.355667
+G1 X155.702000 Y9.355667
+G1 X155.532667 Y9.186333
+G1 X155.532667 Y9.059333
+G1 X155.702000 Y8.890000
+G1 X156.337000 Y8.890000
+G1 X156.506333 Y9.059333
+G1 X156.506333 Y10.202333
+G1 X156.337000 Y10.371667
+G1 X156.210000 Y10.371667
+G1 X156.040667 Y10.202333
+G1 X156.040667 Y9.863667
+G1 X155.871333 Y9.863667
+G1 X155.702000 Y9.779000
+G1 X155.702000 Y10.075333
+G1 X155.405667 Y10.371667
+G1 X154.897667 Y10.371667
+G1 X154.686000 Y10.160000
+G1 X154.474333 Y10.371667
+G1 X154.347333 Y10.371667
+G1 X154.178000 Y10.202333
+G1 X153.924000 Y10.371667
+G1 X153.712333 Y10.287000
+G1 X153.543000 Y10.371667
+G1 X153.077333 Y10.371667
+G1 X152.908000 Y10.202333
+G1 X152.781000 Y10.371667
+G1 X152.654000 Y10.371667
+G0 Z#100
+(polygon end, distance 15.04)
+(polygon 317)
+G0 X154.262667 Y9.948333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X154.262667 Y9.694333
+G1 X154.305000 Y9.821333
+G1 X154.262667 Y9.948333
+G0 Z#100
+(polygon end, distance 0.52)
+(polygon 318)
+G0 X157.353000 Y10.371667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X157.183667 Y10.202333
+G1 X157.183667 Y9.863667
+G1 X156.972000 Y9.863667
+G1 X156.802667 Y9.694333
+G1 X156.802667 Y9.567333
+G1 X156.972000 Y9.398000
+G1 X157.649333 Y9.440333
+G1 X157.776333 Y9.567333
+G1 X157.945667 Y9.398000
+G1 X158.453667 Y9.440333
+G1 X158.538333 Y9.271000
+G1 X158.538333 Y9.059333
+G1 X158.707667 Y8.890000
+G1 X158.834667 Y8.890000
+G1 X159.004000 Y9.059333
+G1 X159.004000 Y9.313333
+G1 X159.088667 Y9.017000
+G1 X159.215667 Y8.890000
+G1 X159.342667 Y8.890000
+G1 X159.512000 Y9.059333
+G1 X159.512000 Y9.482667
+G1 X159.681333 Y9.398000
+G1 X160.104667 Y9.398000
+G1 X160.274000 Y9.482667
+G1 X160.274000 Y9.059333
+G1 X160.443333 Y8.890000
+G1 X160.570333 Y8.890000
+G1 X160.739667 Y9.059333
+G1 X160.739667 Y9.567333
+G1 X161.036000 Y9.567333
+G1 X161.036000 Y9.059333
+G1 X161.205333 Y8.890000
+G1 X161.332333 Y8.890000
+G1 X161.501667 Y9.059333
+G1 X161.501667 Y10.202333
+G1 X161.332333 Y10.371667
+G1 X161.205333 Y10.371667
+G1 X160.866667 Y10.075333
+G1 X160.655000 Y10.329333
+G1 X160.485667 Y10.371667
+G1 X160.274000 Y10.244667
+G1 X160.147000 Y10.371667
+G1 X159.469667 Y10.329333
+G1 X159.342667 Y10.244667
+G1 X159.215667 Y10.371667
+G1 X159.088667 Y10.371667
+G1 X158.919333 Y10.202333
+G1 X158.665333 Y10.371667
+G1 X158.453667 Y10.287000
+G1 X158.284333 Y10.371667
+G1 X157.818667 Y10.371667
+G1 X157.649333 Y10.202333
+G1 X157.480000 Y10.371667
+G1 X157.353000 Y10.371667
+G0 Z#100
+(polygon end, distance 15.35)
+(polygon 319)
+G0 X157.649333 Y10.075333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X157.649333 Y9.948333
+G1 X157.691667 Y10.033000
+G1 X157.649333 Y10.075333
+G0 Z#100
+(polygon end, distance 0.28)
+(polygon 320)
+G0 X159.004000 Y9.948333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X159.004000 Y9.694333
+G1 X159.046333 Y9.821333
+G1 X159.004000 Y9.948333
+G0 Z#100
+(polygon end, distance 0.52)
+(polygon 321)
+G0 X11.811000 Y10.202333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X11.430000 Y10.075333
+G1 X11.049000 Y9.863667
+G1 X10.668000 Y9.440333
+G1 X10.456333 Y8.974667
+G1 X10.456333 Y7.831667
+G1 X10.710333 Y7.281333
+G1 X11.176000 Y6.858000
+G1 X11.641667 Y6.646333
+G1 X12.446000 Y6.646333
+G1 X12.996333 Y6.900333
+G1 X13.419667 Y7.366000
+G1 X13.631333 Y7.831667
+G1 X13.631333 Y8.974667
+G1 X13.419667 Y9.440333
+G1 X12.996333 Y9.906000
+G1 X12.446000 Y10.160000
+G1 X11.811000 Y10.202333
+G0 Z#100
+(polygon end, distance 10.89)
+(polygon 322)
+G0 X165.481000 Y10.202333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X165.100000 Y10.075333
+G1 X164.719000 Y9.863667
+G1 X164.338000 Y9.440333
+G1 X164.126333 Y8.974667
+G1 X164.126333 Y8.170333
+G1 X164.380333 Y7.620000
+G1 X164.846000 Y7.196667
+G1 X165.311667 Y6.985000
+G1 X166.116000 Y6.985000
+G1 X166.666333 Y7.239000
+G1 X167.089667 Y7.704667
+G1 X167.301333 Y8.170333
+G1 X167.301333 Y8.974667
+G1 X167.089667 Y9.440333
+G1 X166.666333 Y9.906000
+G1 X166.116000 Y10.160000
+G1 X165.481000 Y10.202333
+G0 Z#100
+(polygon end, distance 10.21)
+(polygon 323)
+G0 X158.834667 Y8.847667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X158.538333 Y8.551333
+G1 X158.538333 Y8.339667
+G1 X158.369000 Y8.466667
+G1 X157.988000 Y8.466667
+G1 X157.691667 Y8.170333
+G1 X157.691667 Y7.789333
+G1 X157.988000 Y7.493000
+G1 X158.369000 Y7.493000
+G1 X158.538333 Y7.662333
+G1 X158.707667 Y7.493000
+G1 X159.215667 Y7.493000
+G1 X159.427333 Y7.662333
+G1 X159.681333 Y7.493000
+G1 X160.104667 Y7.535333
+G1 X160.147000 Y7.323667
+G1 X160.316333 Y7.239000
+G1 X160.401000 Y7.281333
+G1 X160.697333 Y6.985000
+G1 X161.332333 Y6.985000
+G1 X161.501667 Y7.154333
+G1 X161.501667 Y7.281333
+G1 X161.374667 Y7.408333
+G1 X161.374667 Y8.043333
+G1 X161.501667 Y8.170333
+G1 X161.501667 Y8.297333
+G1 X161.332333 Y8.466667
+G1 X160.697333 Y8.466667
+G1 X160.570333 Y8.339667
+G1 X160.358667 Y8.466667
+G1 X160.147000 Y8.382000
+G1 X159.977667 Y8.466667
+G1 X159.512000 Y8.466667
+G1 X159.469667 Y8.636000
+G1 X159.215667 Y8.847667
+G1 X158.834667 Y8.847667
+G0 Z#100
+(polygon end, distance 10.92)
+(polygon 324)
+G0 X160.866667 Y8.001000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X160.866667 Y7.450667
+G1 X160.909000 Y7.747000
+G1 X160.866667 Y8.001000
+G0 Z#100
+(polygon end, distance 1.11)
+(polygon 325)
+G0 X39.835667 Y8.466667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X39.581667 Y8.382000
+G1 X39.200667 Y8.001000
+G1 X39.116000 Y7.662333
+G1 X39.158333 Y7.281333
+G1 X39.412333 Y6.942667
+G1 X39.708667 Y6.773333
+G1 X40.259000 Y6.773333
+G1 X40.597667 Y6.985000
+G1 X40.809333 Y7.323667
+G1 X40.809333 Y7.874000
+G1 X40.597667 Y8.212667
+G1 X40.259000 Y8.424333
+G1 X39.835667 Y8.466667
+G0 Z#100
+(polygon end, distance 5.43)
+(polygon 326)
+G0 X146.177000 Y8.466667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X146.007667 Y8.297333
+G1 X146.007667 Y7.408333
+G1 X146.177000 Y7.239000
+G1 X146.304000 Y7.239000
+G1 X146.473333 Y7.408333
+G1 X146.473333 Y7.620000
+G1 X146.685000 Y7.493000
+G1 X147.023667 Y7.535333
+G1 X147.108333 Y7.408333
+G1 X147.277667 Y7.239000
+G1 X147.489333 Y7.281333
+G1 X147.489333 Y7.154333
+G1 X147.658667 Y6.985000
+G1 X147.785667 Y6.985000
+G1 X147.955000 Y7.154333
+G1 X147.955000 Y7.366000
+G1 X148.082000 Y7.577667
+G1 X148.251333 Y7.493000
+G1 X148.759333 Y7.535333
+G1 X148.844000 Y7.662333
+G1 X149.013333 Y7.493000
+G1 X149.521333 Y7.493000
+G1 X149.733000 Y7.662333
+G1 X149.817667 Y7.577667
+G1 X149.648333 Y7.408333
+G1 X149.648333 Y7.281333
+G1 X149.944667 Y6.985000
+G1 X150.452667 Y6.985000
+G1 X150.749000 Y7.281333
+G1 X150.749000 Y7.662333
+G1 X150.579667 Y7.874000
+G1 X150.749000 Y8.043333
+G1 X150.749000 Y8.170333
+G1 X150.452667 Y8.466667
+G1 X149.944667 Y8.466667
+G1 X149.733000 Y8.297333
+G1 X149.479000 Y8.466667
+G1 X148.844000 Y8.424333
+G1 X148.759333 Y8.297333
+G1 X148.590000 Y8.466667
+G1 X148.420667 Y8.424333
+G1 X148.251333 Y8.424333
+G1 X148.082000 Y8.466667
+G1 X147.870333 Y8.255000
+G1 X147.658667 Y8.466667
+G1 X147.235333 Y8.424333
+G1 X147.066000 Y8.424333
+G1 X146.854333 Y8.424333
+G1 X146.685000 Y8.424333
+G1 X146.473333 Y8.424333
+G1 X146.346333 Y8.424333
+G1 X146.177000 Y8.466667
+G0 Z#100
+(polygon end, distance 14.19)
+(polygon 327)
+G0 X148.759333 Y8.085667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X148.759333 Y7.916333
+G1 X148.844000 Y7.874000
+G1 X148.844000 Y8.043333
+G1 X148.759333 Y8.085667
+G0 Z#100
+(polygon end, distance 0.53)
+(polygon 328)
+G0 X150.114000 Y8.001000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X150.241000 Y7.958667
+G1 X150.325667 Y8.001000
+G1 X150.114000 Y8.001000
+G0 Z#100
+(polygon end, distance 0.44)
+(polygon 329)
+G0 X150.071667 Y7.493000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X150.198667 Y7.450667
+G1 X150.283333 Y7.493000
+G1 X150.071667 Y7.493000
+G0 Z#100
+(polygon end, distance 0.44)
+(polygon 330)
+G0 X151.214667 Y8.466667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X151.045333 Y8.297333
+G1 X151.045333 Y7.789333
+G1 X151.341667 Y7.493000
+G1 X151.892000 Y7.535333
+G1 X152.019000 Y7.620000
+G1 X152.146000 Y7.493000
+G1 X152.527000 Y7.493000
+G1 X152.738667 Y7.662333
+G1 X152.738667 Y7.154333
+G1 X152.908000 Y6.985000
+G1 X153.035000 Y6.985000
+G1 X153.204333 Y7.154333
+G1 X153.204333 Y7.535333
+G1 X153.839333 Y7.493000
+G1 X154.051000 Y7.620000
+G1 X154.178000 Y7.493000
+G1 X154.559000 Y7.493000
+G1 X154.770667 Y7.662333
+G1 X154.982333 Y7.493000
+G1 X155.194000 Y7.493000
+G1 X155.194000 Y7.154333
+G1 X155.363333 Y6.985000
+G1 X155.490333 Y6.985000
+G1 X155.659667 Y7.154333
+G1 X155.659667 Y7.577667
+G1 X155.829000 Y7.493000
+G1 X156.294667 Y7.493000
+G1 X156.591000 Y7.789333
+G1 X156.591000 Y8.001000
+G1 X156.929667 Y8.001000
+G1 X156.929667 Y7.450667
+G1 X156.591000 Y7.450667
+G1 X156.421667 Y7.281333
+G1 X156.421667 Y7.154333
+G1 X156.591000 Y6.985000
+G1 X157.099000 Y6.985000
+G1 X157.395333 Y7.281333
+G1 X157.395333 Y8.170333
+G1 X157.099000 Y8.466667
+G1 X156.591000 Y8.466667
+G1 X156.464000 Y8.339667
+G1 X156.252333 Y8.466667
+G1 X154.982333 Y8.466667
+G1 X154.770667 Y8.297333
+G1 X154.559000 Y8.466667
+G1 X154.051000 Y8.466667
+G1 X153.881667 Y8.297333
+G1 X153.754667 Y8.466667
+G1 X153.627667 Y8.466667
+G1 X153.458333 Y8.297333
+G1 X153.458333 Y7.958667
+G1 X153.204333 Y7.916333
+G1 X153.204333 Y8.170333
+G1 X152.908000 Y8.466667
+G1 X152.738667 Y8.424333
+G1 X152.569333 Y8.424333
+G1 X152.146000 Y8.466667
+G1 X151.934333 Y8.255000
+G1 X151.722667 Y8.466667
+G1 X151.553333 Y8.424333
+G1 X151.384000 Y8.424333
+G1 X151.214667 Y8.466667
+G0 Z#100
+(polygon end, distance 20.35)
+(polygon 331)
+G0 X149.352000 Y6.561667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X148.674667 Y5.884333
+G1 X148.674667 Y5.376333
+G1 X148.971000 Y5.080000
+G1 X149.352000 Y5.080000
+G1 X149.563667 Y5.291667
+G1 X149.817667 Y5.080000
+G1 X150.198667 Y5.080000
+G1 X150.410333 Y5.249333
+G1 X150.622000 Y5.080000
+G1 X151.003000 Y5.080000
+G1 X151.214667 Y5.249333
+G1 X151.426333 Y5.080000
+G1 X151.934333 Y5.080000
+G1 X152.230667 Y5.376333
+G1 X152.230667 Y5.503333
+G1 X152.061333 Y5.672667
+G1 X151.934333 Y5.672667
+G1 X151.807333 Y5.545667
+G1 X151.595667 Y5.545667
+G1 X151.595667 Y5.588000
+G1 X152.230667 Y6.265333
+G1 X152.230667 Y6.392333
+G1 X152.061333 Y6.561667
+G1 X151.299333 Y6.561667
+G1 X151.130000 Y6.434667
+G1 X151.003000 Y6.561667
+G1 X150.622000 Y6.561667
+G1 X150.410333 Y6.392333
+G1 X150.198667 Y6.561667
+G1 X149.817667 Y6.561667
+G1 X149.648333 Y6.392333
+G1 X149.479000 Y6.561667
+G1 X149.352000 Y6.561667
+G0 Z#100
+(polygon end, distance 10.95)
+(polygon 332)
+G0 X149.479000 Y6.096000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X149.436667 Y6.011333
+G1 X149.521333 Y5.926667
+G1 X149.521333 Y6.096000
+G1 X149.479000 Y6.096000
+G0 Z#100
+(polygon end, distance 0.43)
+(polygon 333)
+G0 X151.299333 Y6.096000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X151.299333 Y5.969000
+G1 X151.426333 Y6.053667
+G1 X151.426333 Y6.096000
+G1 X151.299333 Y6.096000
+G0 Z#100
+(polygon end, distance 0.45)
+(polygon 334)
+G0 X152.823333 Y6.561667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X152.527000 Y6.265333
+G1 X152.527000 Y5.376333
+G1 X152.823333 Y5.080000
+G1 X152.950333 Y5.080000
+G1 X153.119667 Y5.249333
+G1 X153.119667 Y5.376333
+G1 X152.992667 Y5.503333
+G1 X152.992667 Y5.672667
+G1 X153.162000 Y5.588000
+G1 X153.627667 Y5.588000
+G1 X153.881667 Y5.799667
+G1 X153.881667 Y5.503333
+G1 X153.754667 Y5.376333
+G1 X153.754667 Y5.249333
+G1 X153.924000 Y5.080000
+G1 X154.051000 Y5.080000
+G1 X154.347333 Y5.376333
+G1 X154.347333 Y6.265333
+G1 X154.135667 Y6.519333
+G1 X153.966333 Y6.561667
+G1 X153.754667 Y6.434667
+G1 X153.627667 Y6.561667
+G1 X152.823333 Y6.561667
+G0 Z#100
+(polygon end, distance 7.57)
+(polygon 335)
+G0 X152.992667 Y6.138333 (start point)
+G1 Z#101 F#102
+F#103
+G1 X152.992667 Y5.969000
+G1 X153.162000 Y6.053667
+G1 X153.458333 Y6.053667
+G1 X153.416000 Y6.096000
+G1 X152.992667 Y6.138333
+G0 Z#100
+(polygon end, distance 1.14)
+(polygon 336)
+G0 X154.940000 Y6.561667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X154.643667 Y6.265333
+G1 X154.643667 Y5.376333
+G1 X154.940000 Y5.080000
+G1 X155.321000 Y5.080000
+G1 X155.617333 Y5.376333
+G1 X155.617333 Y6.138333
+G1 X156.083000 Y6.096000
+G1 X156.210000 Y6.096000
+G1 X155.913667 Y5.757333
+G1 X155.913667 Y5.376333
+G1 X156.210000 Y5.080000
+G1 X156.718000 Y5.080000
+G1 X157.014333 Y5.376333
+G1 X157.014333 Y5.503333
+G1 X156.845000 Y5.672667
+G1 X156.718000 Y5.672667
+G1 X156.591000 Y5.545667
+G1 X156.379333 Y5.545667
+G1 X156.379333 Y5.630333
+G1 X156.929667 Y6.138333
+G1 X157.437667 Y6.096000
+G1 X157.564667 Y6.096000
+G1 X157.268333 Y5.757333
+G1 X157.268333 Y5.376333
+G1 X157.564667 Y5.080000
+G1 X158.072667 Y5.080000
+G1 X158.369000 Y5.376333
+G1 X158.369000 Y5.503333
+G1 X158.199667 Y5.672667
+G1 X158.072667 Y5.672667
+G1 X157.945667 Y5.545667
+G1 X157.734000 Y5.545667
+G1 X157.734000 Y5.588000
+G1 X158.369000 Y6.265333
+G1 X158.369000 Y6.392333
+G1 X158.199667 Y6.561667
+G1 X155.659667 Y6.561667
+G1 X155.490333 Y6.392333
+G1 X155.321000 Y6.561667
+G1 X154.940000 Y6.561667
+G0 Z#100
+(polygon end, distance 16.22)
+(polygon 337)
+G0 X159.215667 Y6.561667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X159.046333 Y6.392333
+G1 X159.046333 Y6.265333
+G1 X159.215667 Y6.096000
+G1 X159.554333 Y6.096000
+G1 X159.554333 Y5.545667
+G1 X159.215667 Y5.545667
+G1 X159.046333 Y5.376333
+G1 X159.046333 Y5.249333
+G1 X159.215667 Y5.080000
+G1 X159.723667 Y5.080000
+G1 X159.850667 Y5.207000
+G1 X160.020000 Y5.080000
+G1 X160.401000 Y5.080000
+G1 X160.570333 Y5.207000
+G1 X160.697333 Y5.080000
+G1 X161.205333 Y5.080000
+G1 X161.501667 Y5.376333
+G1 X161.501667 Y6.392333
+G1 X161.332333 Y6.561667
+G1 X161.205333 Y6.561667
+G1 X161.036000 Y6.392333
+G1 X161.036000 Y6.053667
+G1 X160.866667 Y6.053667
+G1 X160.866667 Y6.392333
+G1 X160.739667 Y6.519333
+G1 X160.062333 Y6.561667
+G1 X159.850667 Y6.434667
+G1 X159.723667 Y6.561667
+G1 X159.215667 Y6.561667
+G0 Z#100
+(polygon end, distance 9.30)
+(polygon 338)
+G0 X160.866667 Y5.588000 (start point)
+G1 Z#101 F#102
+F#103
+G1 X160.951333 Y5.545667
+G1 X161.036000 Y5.588000
+G1 X160.866667 Y5.588000
+G0 Z#100
+(polygon end, distance 0.36)
+(polygon 339)
+G0 X158.369000 Y6.053667 (start point)
+G1 Z#101 F#102
+F#103
+G1 X158.199667 Y5.884333
+G1 X158.199667 Y5.757333
+G1 X158.369000 Y5.588000
+G1 X159.004000 Y5.588000
+G1 X159.173333 Y5.757333
+G1 X159.173333 Y5.884333
+G1 X159.004000 Y6.053667
+G1 X158.369000 Y6.053667
+G0 Z#100
+(polygon end, distance 2.48)
+(predrilling)
+F#102
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X0.000000 Y0.000000 Z#101 R#100
+G81 X24.130000 Y7.620000 Z#101 R#100
+G81 X24.130000 Y10.160000 Z#101 R#100
+G81 X24.130000 Y15.240000 Z#101 R#100
+G81 X24.130000 Y17.780000 Z#101 R#100
+G81 X26.670000 Y15.240000 Z#101 R#100
+G81 X29.845000 Y12.700000 Z#101 R#100
+G81 X34.290000 Y12.700000 Z#101 R#100
+G81 X34.290000 Y7.620000 Z#101 R#100
+G81 X29.845000 Y7.620000 Z#101 R#100
+G81 X40.005000 Y7.620000 Z#101 R#100
+G81 X40.005000 Y12.700000 Z#101 R#100
+G81 X41.910000 Y15.875000 Z#101 R#100
+G81 X40.005000 Y17.780000 Z#101 R#100
+G81 X53.975000 Y10.160000 Z#101 R#100
+G81 X70.485000 Y15.240000 Z#101 R#100
+G81 X78.740000 Y21.590000 Z#101 R#100
+G81 X80.645000 Y19.685000 Z#101 R#100
+G81 X82.550000 Y17.780000 Z#101 R#100
+G81 X85.725000 Y10.160000 Z#101 R#100
+G81 X116.205000 Y24.765000 Z#101 R#100
+G81 X116.205000 Y27.940000 Z#101 R#100
+G81 X118.745000 Y27.940000 Z#101 R#100
+G81 X118.745000 Y31.750000 Z#101 R#100
+G81 X116.205000 Y31.750000 Z#101 R#100
+G81 X116.205000 Y34.290000 Z#101 R#100
+G81 X118.745000 Y34.290000 Z#101 R#100
+G81 X121.285000 Y39.370000 Z#101 R#100
+G81 X125.095000 Y39.370000 Z#101 R#100
+G81 X127.635000 Y39.370000 Z#101 R#100
+G81 X132.080000 Y34.290000 Z#101 R#100
+G81 X135.255000 Y31.750000 Z#101 R#100
+G81 X135.255000 Y27.940000 Z#101 R#100
+G81 X132.080000 Y24.765000 Z#101 R#100
+G81 X125.095000 Y27.940000 Z#101 R#100
+G81 X123.190000 Y29.845000 Z#101 R#100
+G81 X123.190000 Y24.765000 Z#101 R#100
+G81 X119.380000 Y20.320000 Z#101 R#100
+G81 X135.255000 Y16.510000 Z#101 R#100
+G81 X130.810000 Y7.620000 Z#101 R#100
+G81 X135.255000 Y39.370000 Z#101 R#100
+G81 X135.255000 Y49.530000 Z#101 R#100
+G81 X135.255000 Y59.690000 Z#101 R#100
+G81 X135.255000 Y62.230000 Z#101 R#100
+G81 X132.715000 Y59.690000 Z#101 R#100
+G81 X139.700000 Y62.230000 Z#101 R#100
+G81 X141.605000 Y57.785000 Z#101 R#100
+G81 X139.700000 Y72.390000 Z#101 R#100
+G81 X132.715000 Y76.835000 Z#101 R#100
+G81 X131.445000 Y85.090000 Z#101 R#100
+G81 X128.905000 Y85.090000 Z#101 R#100
+G81 X139.700000 Y85.090000 Z#101 R#100
+G81 X141.605000 Y88.265000 Z#101 R#100
+G81 X160.020000 Y78.105000 Z#101 R#100
+G81 X160.020000 Y75.336400 Z#101 R#100
+G81 X160.020000 Y72.567800 Z#101 R#100
+G81 X160.020000 Y69.799200 Z#101 R#100
+G81 X160.020000 Y67.030600 Z#101 R#100
+G81 X162.560000 Y68.427600 Z#101 R#100
+G81 X162.560000 Y71.196200 Z#101 R#100
+G81 X162.560000 Y73.964800 Z#101 R#100
+G81 X162.560000 Y76.733400 Z#101 R#100
+G81 X125.095000 Y59.690000 Z#101 R#100
+G81 X118.745000 Y59.690000 Z#101 R#100
+G81 X116.205000 Y59.690000 Z#101 R#100
+G81 X113.665000 Y59.690000 Z#101 R#100
+G81 X118.745000 Y62.230000 Z#101 R#100
+G81 X118.745000 Y66.040000 Z#101 R#100
+G81 X116.205000 Y66.040000 Z#101 R#100
+G81 X111.760000 Y66.040000 Z#101 R#100
+G81 X109.855000 Y66.040000 Z#101 R#100
+G81 X107.315000 Y66.040000 Z#101 R#100
+G81 X101.600000 Y66.040000 Z#101 R#100
+G81 X99.060000 Y66.040000 Z#101 R#100
+G81 X93.345000 Y66.040000 Z#101 R#100
+G81 X88.900000 Y67.945000 Z#101 R#100
+G81 X83.185000 Y66.040000 Z#101 R#100
+G81 X81.915000 Y67.945000 Z#101 R#100
+G81 X78.740000 Y66.040000 Z#101 R#100
+G81 X78.740000 Y62.230000 Z#101 R#100
+G81 X82.550000 Y62.230000 Z#101 R#100
+G81 X72.390000 Y69.850000 Z#101 R#100
+G81 X67.945000 Y69.850000 Z#101 R#100
+G81 X68.580000 Y66.040000 Z#101 R#100
+G81 X63.500000 Y66.040000 Z#101 R#100
+G81 X60.325000 Y62.230000 Z#101 R#100
+G81 X53.340000 Y66.040000 Z#101 R#100
+G81 X48.895000 Y66.040000 Z#101 R#100
+G81 X48.895000 Y62.230000 Z#101 R#100
+G81 X38.735000 Y66.040000 Z#101 R#100
+G81 X34.290000 Y66.040000 Z#101 R#100
+G81 X27.305000 Y64.135000 Z#101 R#100
+G81 X24.130000 Y66.040000 Z#101 R#100
+G81 X24.130000 Y76.835000 Z#101 R#100
+G81 X37.465000 Y83.820000 Z#101 R#100
+G81 X41.275000 Y83.820000 Z#101 R#100
+G81 X45.085000 Y83.820000 Z#101 R#100
+G81 X48.260000 Y86.360000 Z#101 R#100
+G81 X45.085000 Y93.980000 Z#101 R#100
+G81 X41.275000 Y93.980000 Z#101 R#100
+G81 X37.465000 Y93.980000 Z#101 R#100
+G81 X60.325000 Y81.915000 Z#101 R#100
+G81 X63.500000 Y83.820000 Z#101 R#100
+G81 X67.945000 Y83.820000 Z#101 R#100
+G81 X67.945000 Y80.010000 Z#101 R#100
+G81 X72.390000 Y80.010000 Z#101 R#100
+G81 X72.390000 Y83.820000 Z#101 R#100
+G81 X76.200000 Y86.360000 Z#101 R#100
+G81 X72.390000 Y93.980000 Z#101 R#100
+G81 X67.945000 Y93.980000 Z#101 R#100
+G81 X63.500000 Y93.980000 Z#101 R#100
+G81 X88.900000 Y96.520000 Z#101 R#100
+G81 X92.710000 Y93.980000 Z#101 R#100
+G81 X97.155000 Y96.520000 Z#101 R#100
+G81 X100.330000 Y92.710000 Z#101 R#100
+G81 X100.330000 Y90.170000 Z#101 R#100
+G81 X101.600000 Y85.090000 Z#101 R#100
+G81 X99.060000 Y85.090000 Z#101 R#100
+G81 X103.505000 Y81.915000 Z#101 R#100
+G81 X106.680000 Y85.090000 Z#101 R#100
+G81 X109.220000 Y85.090000 Z#101 R#100
+G81 X109.220000 Y81.915000 Z#101 R#100
+G81 X113.665000 Y76.835000 Z#101 R#100
+G81 X111.760000 Y73.025000 Z#101 R#100
+G81 X105.410000 Y88.900000 Z#101 R#100
+G81 X106.680000 Y91.440000 Z#101 R#100
+G81 X109.220000 Y91.440000 Z#101 R#100
+G81 X111.760000 Y96.520000 Z#101 R#100
+G81 X92.710000 Y83.820000 Z#101 R#100
+G81 X70.485000 Y57.785000 Z#101 R#100
+G81 X53.975000 Y36.195000 Z#101 R#100
+G81 X111.125000 Y39.370000 Z#101 R#100
+G81 X111.125000 Y49.530000 Z#101 R#100
+G81 X113.665000 Y52.705000 Z#101 R#100
+G81 X121.285000 Y49.530000 Z#101 R#100
+G81 X125.095000 Y49.530000 Z#101 R#100
+G81 X125.095000 Y47.625000 Z#101 R#100
+(443 predrills)
+(milling distance 8817.39mm = 347.14in)
+M5 M9 M2
--- /dev/null
+(Created by G-code exporter)
+(Wed Jul 15 16:09:51 2015)
+(Units: mm)
+(Board size: 180.34 x 104.14 mm)
+(Drillmill file)
+(Tool diameter: 1.000000 mm)
+#100=2.000000 (safe Z)
+#105=-1.000000 (mill depth)
+#106=25.000000 (mill plunge feedrate)
+#107=50.000000 (mill feedrate)
+(---------------------------------)
+G17 G21 G90 G64 P0.003 M3 S3000 M7
+G0 X12.065000 Y8.255000
+G1 Z#105 F#106
+G0 Z#100
+G0 X12.065000 Y8.585200
+G1 Z#105 F#106
+G0 Z#100
+G0 X24.130000 Y31.115000
+G1 Z#105 F#106
+G0 Z#100
+G0 X29.845000 Y27.940000
+G1 Z#105 F#106
+G0 Z#100
+G0 X40.005000 Y27.940000
+G1 Z#105 F#106
+G0 Z#100
+G0 X45.085000 Y40.005000
+G1 Z#105 F#106
+G0 Z#100
+G0 X40.005000 Y43.815000
+G1 Z#105 F#106
+G0 Z#100
+G0 X40.005000 Y52.705000
+G1 Z#105 F#106
+G0 Z#100
+G0 X29.845000 Y52.705000
+G1 Z#105 F#106
+G0 Z#100
+G0 X24.130000 Y47.625000
+G1 Z#105 F#106
+G0 Z#100
+G0 X29.845000 Y40.005000
+G1 Z#105 F#106
+G0 Z#100
+G0 X59.055000 Y31.750000
+G1 Z#105 F#106
+G0 Z#100
+G0 X61.595000 Y31.750000
+G1 Z#105 F#106
+G0 Z#100
+G0 X64.135000 Y31.750000
+G1 Z#105 F#106
+G0 Z#100
+G0 X64.135000 Y50.800000
+G1 Z#105 F#106
+G0 Z#100
+G0 X61.595000 Y50.800000
+G1 Z#105 F#106
+G0 Z#100
+G0 X59.055000 Y50.800000
+G1 Z#105 F#106
+G0 Z#100
+G0 X91.440000 Y50.800000
+G1 Z#105 F#106
+G0 Z#100
+G0 X93.980000 Y50.800000
+G1 Z#105 F#106
+G0 Z#100
+G0 X96.520000 Y50.800000
+G1 Z#105 F#106
+G0 Z#100
+G0 X93.980000 Y43.815000
+G1 Z#105 F#106
+F#107
+G1 X94.026100 Y43.815000
+G1 X93.980000 Y43.861100
+G1 X93.933900 Y43.815000
+G1 X93.980000 Y43.768900
+G1 X94.026100 Y43.815000
+G0 X93.980000 Y43.815000
+G0 Z#100
+G0 X93.980000 Y31.750000
+G1 Z#105 F#106
+F#107
+G1 X94.026100 Y31.750000
+G1 X93.980000 Y31.796100
+G1 X93.933900 Y31.750000
+G1 X93.980000 Y31.703900
+G1 X94.026100 Y31.750000
+G0 X93.980000 Y31.750000
+G0 Z#100
+G0 X96.520000 Y31.750000
+G1 Z#105 F#106
+F#107
+G1 X96.566100 Y31.750000
+G1 X96.520000 Y31.796100
+G1 X96.473900 Y31.750000
+G1 X96.520000 Y31.703900
+G1 X96.566100 Y31.750000
+G0 X96.520000 Y31.750000
+G0 Z#100
+G0 X91.440000 Y31.750000
+G1 Z#105 F#106
+F#107
+G1 X91.486100 Y31.750000
+G1 X91.440000 Y31.796100
+G1 X91.393900 Y31.750000
+G1 X91.440000 Y31.703900
+G1 X91.486100 Y31.750000
+G0 X91.440000 Y31.750000
+G0 Z#100
+G0 X91.440000 Y12.700000
+G1 Z#105 F#106
+F#107
+G1 X91.486100 Y12.700000
+G1 X91.440000 Y12.746100
+G1 X91.393900 Y12.700000
+G1 X91.440000 Y12.653900
+G1 X91.486100 Y12.700000
+G0 X91.440000 Y12.700000
+G0 Z#100
+G0 X93.980000 Y12.700000
+G1 Z#105 F#106
+F#107
+G1 X94.026100 Y12.700000
+G1 X93.980000 Y12.746100
+G1 X93.933900 Y12.700000
+G1 X93.980000 Y12.653900
+G1 X94.026100 Y12.700000
+G0 X93.980000 Y12.700000
+G0 Z#100
+G0 X96.520000 Y12.700000
+G1 Z#105 F#106
+F#107
+G1 X96.680400 Y12.700000
+G1 X96.520000 Y12.860400
+G1 X96.359600 Y12.700000
+G1 X96.520000 Y12.539600
+G1 X96.680400 Y12.700000
+G0 X96.520000 Y12.700000
+G0 Z#100
+G0 X64.135000 Y12.700000
+G1 Z#105 F#106
+F#107
+G1 X64.295400 Y12.700000
+G1 X64.135000 Y12.860400
+G1 X63.974600 Y12.700000
+G1 X64.135000 Y12.539600
+G1 X64.295400 Y12.700000
+G0 X64.135000 Y12.700000
+G0 Z#100
+G0 X61.595000 Y12.700000
+G1 Z#105 F#106
+F#107
+G1 X61.793500 Y12.700000
+G1 X61.656340 Y12.888785
+G1 X61.434410 Y12.816675
+G1 X61.434410 Y12.583325
+G1 X61.656340 Y12.511215
+G1 X61.793500 Y12.700000
+G0 X61.595000 Y12.700000
+G0 Z#100
+G0 X59.055000 Y12.700000
+G1 Z#105 F#106
+F#107
+G1 X59.253500 Y12.700000
+G1 X59.116340 Y12.888785
+G1 X58.894410 Y12.816675
+G1 X58.894410 Y12.583325
+G1 X59.116340 Y12.511215
+G1 X59.253500 Y12.700000
+G0 X59.055000 Y12.700000
+G0 Z#100
+G0 X45.085000 Y4.445000
+G1 Z#105 F#106
+F#107
+G1 X45.283500 Y4.445000
+G1 X45.146340 Y4.633785
+G1 X44.924410 Y4.561675
+G1 X44.924410 Y4.328325
+G1 X45.146340 Y4.256215
+G1 X45.283500 Y4.445000
+G0 X45.085000 Y4.445000
+G0 Z#100
+G0 X12.065000 Y97.155000
+G1 Z#105 F#106
+F#107
+G1 X12.263500 Y97.155000
+G1 X12.126340 Y97.343785
+G1 X11.904410 Y97.271675
+G1 X11.904410 Y97.038325
+G1 X12.126340 Y96.966215
+G1 X12.263500 Y97.155000
+G0 X12.065000 Y97.155000
+G0 Z#100
+G0 X12.065000 Y97.155000
+G1 Z#105 F#106
+F#107
+G1 X12.263500 Y97.155000
+G1 X12.126340 Y97.343785
+G1 X11.904410 Y97.271675
+G1 X11.904410 Y97.038325
+G1 X12.126340 Y96.966215
+G1 X12.263500 Y97.155000
+G0 X12.065000 Y97.155000
+G0 Z#100
+G0 X161.290000 Y84.963000
+G1 Z#105 F#106
+F#107
+G1 X161.488500 Y84.963000
+G1 X161.351340 Y85.151785
+G1 X161.129410 Y85.079675
+G1 X161.129410 Y84.846325
+G1 X161.351340 Y84.774215
+G1 X161.488500 Y84.963000
+G0 X161.290000 Y84.963000
+G0 Z#100
+G0 X165.735000 Y97.155000
+G1 Z#105 F#106
+F#107
+G1 X165.933500 Y97.155000
+G1 X165.796340 Y97.343785
+G1 X165.574410 Y97.271675
+G1 X165.574410 Y97.038325
+G1 X165.796340 Y96.966215
+G1 X165.933500 Y97.155000
+G0 X165.735000 Y97.155000
+G0 Z#100
+G0 X161.290000 Y60.172600
+G1 Z#105 F#106
+F#107
+G1 X161.552000 Y60.172600
+G1 X161.370962 Y60.421777
+G1 X161.078038 Y60.326600
+G1 X161.078038 Y60.018600
+G1 X161.370962 Y59.923423
+G1 X161.552000 Y60.172600
+G0 X161.290000 Y60.172600
+G0 Z#100
+G0 X164.465000 Y51.435000
+G1 Z#105 F#106
+F#107
+G1 X164.727000 Y51.435000
+G1 X164.545962 Y51.684177
+G1 X164.253038 Y51.589000
+G1 X164.253038 Y51.281000
+G1 X164.545962 Y51.185823
+G1 X164.727000 Y51.435000
+G0 X164.465000 Y51.435000
+G0 Z#100
+G0 X164.465000 Y48.895000
+G1 Z#105 F#106
+F#107
+G1 X164.727000 Y48.895000
+G1 X164.545962 Y49.144177
+G1 X164.253038 Y49.049000
+G1 X164.253038 Y48.741000
+G1 X164.545962 Y48.645823
+G1 X164.727000 Y48.895000
+G0 X164.465000 Y48.895000
+G0 Z#100
+G0 X164.465000 Y41.910000
+G1 Z#105 F#106
+F#107
+G1 X164.727000 Y41.910000
+G1 X164.545962 Y42.159177
+G1 X164.253038 Y42.064000
+G1 X164.253038 Y41.756000
+G1 X164.545962 Y41.660823
+G1 X164.727000 Y41.910000
+G0 X164.465000 Y41.910000
+G0 Z#100
+G0 X164.465000 Y39.370000
+G1 Z#105 F#106
+F#107
+G1 X164.981000 Y39.370000
+G1 X164.829867 Y39.734867
+G1 X164.465000 Y39.886000
+G1 X164.100133 Y39.734867
+G1 X163.949000 Y39.370000
+G1 X164.100133 Y39.005133
+G1 X164.465000 Y38.854000
+G1 X164.829867 Y39.005133
+G1 X164.981000 Y39.370000
+G0 X164.465000 Y39.370000
+G0 Z#100
+G0 X164.465000 Y32.385000
+G1 Z#105 F#106
+F#107
+G1 X164.981000 Y32.385000
+G1 X164.829867 Y32.749867
+G1 X164.465000 Y32.901000
+G1 X164.100133 Y32.749867
+G1 X163.949000 Y32.385000
+G1 X164.100133 Y32.020133
+G1 X164.465000 Y31.869000
+G1 X164.829867 Y32.020133
+G1 X164.981000 Y32.385000
+G0 X164.465000 Y32.385000
+G0 Z#100
+G0 X164.465000 Y29.845000
+G1 Z#105 F#106
+F#107
+G1 X164.981000 Y29.845000
+G1 X164.829867 Y30.209867
+G1 X164.465000 Y30.361000
+G1 X164.100133 Y30.209867
+G1 X163.949000 Y29.845000
+G1 X164.100133 Y29.480133
+G1 X164.465000 Y29.329000
+G1 X164.829867 Y29.480133
+G1 X164.981000 Y29.845000
+G0 X164.465000 Y29.845000
+G0 Z#100
+G0 X163.880800 Y24.104600
+G1 Z#105 F#106
+F#107
+G1 X164.396800 Y24.104600
+G1 X164.245667 Y24.469467
+G1 X163.880800 Y24.620600
+G1 X163.515933 Y24.469467
+G1 X163.364800 Y24.104600
+G1 X163.515933 Y23.739733
+G1 X163.880800 Y23.588600
+G1 X164.245667 Y23.739733
+G1 X164.396800 Y24.104600
+G0 X163.880800 Y24.104600
+G0 Z#100
+G0 X166.370000 Y22.860000
+G1 Z#105 F#106
+F#107
+G1 X166.886000 Y22.860000
+G1 X166.734867 Y23.224867
+G1 X166.370000 Y23.376000
+G1 X166.005133 Y23.224867
+G1 X165.854000 Y22.860000
+G1 X166.005133 Y22.495133
+G1 X166.370000 Y22.344000
+G1 X166.734867 Y22.495133
+G1 X166.886000 Y22.860000
+G0 X166.370000 Y22.860000
+G0 Z#100
+G0 X166.370000 Y18.364200
+G1 Z#105 F#106
+F#107
+G1 X166.886000 Y18.364200
+G1 X166.734867 Y18.729067
+G1 X166.370000 Y18.880200
+G1 X166.005133 Y18.729067
+G1 X165.854000 Y18.364200
+G1 X166.005133 Y17.999333
+G1 X166.370000 Y17.848200
+G1 X166.734867 Y17.999333
+G1 X166.886000 Y18.364200
+G0 X166.370000 Y18.364200
+G0 Z#100
+G0 X163.880800 Y17.094200
+G1 Z#105 F#106
+F#107
+G1 X164.904800 Y17.094200
+G1 X164.742244 Y17.647816
+G1 X164.306185 Y18.025663
+G1 X163.735070 Y18.107777
+G1 X163.210223 Y17.868088
+G1 X162.898279 Y17.382694
+G1 X162.898279 Y16.805706
+G1 X163.210223 Y16.320312
+G1 X163.735070 Y16.080623
+G1 X164.306185 Y16.162737
+G1 X164.742244 Y16.540584
+G1 X164.904800 Y17.094200
+G0 X163.880800 Y17.094200
+G0 Z#100
+G0 X165.735000 Y8.585200
+G1 Z#105 F#106
+F#107
+G1 X166.759000 Y8.585200
+G1 X166.596444 Y9.138816
+G1 X166.160385 Y9.516663
+G1 X165.589270 Y9.598777
+G1 X165.064423 Y9.359088
+G1 X164.752479 Y8.873694
+G1 X164.752479 Y8.296706
+G1 X165.064423 Y7.811312
+G1 X165.589270 Y7.571623
+G1 X166.160385 Y7.653737
+G1 X166.596444 Y8.031584
+G1 X166.759000 Y8.585200
+G0 X165.735000 Y8.585200
+G0 Z#100
+M5 M9 M2
--- /dev/null
+(Created by G-code exporter)
+(Wed Jul 15 16:09:51 2015)
+(Units: mm)
+(Board size: 180.34 x 104.14 mm)
+(Outline mill file)
+(Tool diameter: 1.000000 mm)
+#100=2.000000 (safe Z)
+#105=-1.000000 (mill depth)
+#106=25.000000 (mill plunge feedrate)
+#107=50.000000 (mill feedrate)
+(---------------------------------)
+G17 G21 G90 G64 P0.003 M3 S3000 M7
+G0 Z#100
+G0 X180.840000 Y-0.500000
+G1 Z#105 F#106
+G1 X-0.500000 Y-0.500000 F#107
+G1 X-0.500000 Y104.640000
+G1 X180.840000 Y104.640000
+G1 X180.840000 Y-0.500000
+G0 Z#100
+M5 M9 M2
+(end, total distance G0 3.00 mm = 0.12 in)
+( total distance G1 575.96 mm = 22.68 in)
--- /dev/null
+G04 start of page 2 for group 0 idx 0 *\r
+G04 Title: (unknown), solder *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNBOTTOM*%\r
+%ADD34C,1.321*%\r
+%ADD33C,1.092*%\r
+%ADD32C,1.067*%\r
+%ADD31C,0.711*%\r
+%ADD30C,0.889*%\r
+%ADD29C,2.667*%\r
+%ADD28C,3.556*%\r
+%ADD27C,2.032*%\r
+%ADD26C,1.524*%\r
+%ADD25C,0.002*%\r
+%ADD24C,2.540*%\r
+%ADD23C,2.159*%\r
+%ADD22C,0.508*%\r
+%ADD21C,1.397*%\r
+%ADD20C,1.016*%\r
+%ADD19C,0.762*%\r
+%ADD18C,2.921*%\r
+%ADD17C,1.651*%\r
+%ADD16C,2.286*%\r
+%ADD15C,3.048*%\r
+%ADD14C,1.778*%\r
+%ADD13C,0.635*%\r
+%ADD12C,0.254*%\r
+%ADD11C,0.203*%\r
+G54D11*X0Y104140D02*X180340D01*\r
+X0D02*Y0D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+G54D12*X10160Y104140D02*X50800D01*\r
+X92710Y23495D02*X68580D01*\r
+X66675Y21590D02*X68580Y23495D01*\r
+G54D13*X83820Y12700D02*Y19050D01*\r
+X86360Y21590D01*\r
+X69215Y39370D02*X118110D01*\r
+G54D14*X83820Y32385D02*Y34290D01*\r
+G54D15*X85090Y34925D02*X116840D01*\r
+G54D16*X117475D02*X118745Y33655D01*\r
+G54D13*X88900Y30480D02*Y31750D01*\r
+X88265Y29845D02*X88900Y30480D01*\r
+G54D15*X123825Y24130D02*X119380Y28575D01*\r
+G54D17*X86360Y17780D02*X88265Y19685D01*\r
+G54D13*X64770Y16510D02*Y15240D01*\r
+G54D17*X59690D02*Y12700D01*\r
+Y15240D02*X62230D01*\r
+G54D13*X109855D02*X120650D01*\r
+G54D14*X94615Y10160D02*X126365D01*\r
+X118110D02*X118745Y10795D01*\r
+Y12700D01*\r
+G54D13*X128905Y17780D02*X90170D01*\r
+G54D17*X130810Y19685D02*X137795Y12700D01*\r
+G54D13*X90170Y17780D02*X88900Y16510D01*\r
+Y10160D01*\r
+G54D17*X86360Y10795D02*Y17780D01*\r
+G54D13*Y21590D02*X132715D01*\r
+G54D17*X88265Y19685D02*X130810D01*\r
+G54D12*X48260Y21590D02*X66675D01*\r
+X57150Y10795D02*X39370D01*\r
+G54D13*X55245Y47625D02*X87630D01*\r
+X84455Y52705D02*X67310D01*\r
+G54D16*X83820Y53340D02*X84455Y53975D01*\r
+G54D14*X83820Y50800D02*Y53340D01*\r
+G54D13*X52705Y39370D02*X45085D01*\r
+X118110Y56515D02*X71120D01*\r
+X88900Y48895D02*Y50800D01*\r
+X87630Y47625D02*X88900Y48895D01*\r
+G54D18*X116840Y53975D02*X85090D01*\r
+G54D13*X121285Y50800D02*Y53340D01*\r
+G54D15*X86360Y43815D02*X140335D01*\r
+G54D12*X57150Y60960D02*X89535D01*\r
+G54D13*X109855Y57785D02*X38735D01*\r
+G54D19*X97790Y62230D02*X41275D01*\r
+G54D12*X125095Y59690D02*X84455D01*\r
+G54D13*X101600Y62230D02*X144145D01*\r
+G54D12*X143510Y63500D02*X82550D01*\r
+G54D13*X61595Y27940D02*X53340D01*\r
+X60960Y20320D02*X64770Y16510D01*\r
+X53340Y27940D02*X52070Y26670D01*\r
+Y22860D01*\r
+X64135Y31750D02*X83820D01*\r
+G54D17*X64135Y34290D02*Y34925D01*\r
+G54D12*X39370Y34290D02*X45085D01*\r
+G54D17*X55245D02*X48260D01*\r
+X55245D02*Y34925D01*\r
+X62865Y36195D02*X64135Y34925D01*\r
+X45085Y21590D02*X48260Y24765D01*\r
+X55245Y34925D02*X56515Y36195D01*\r
+X62865D01*\r
+G54D12*X40640Y12065D02*X54610D01*\r
+X14656Y18415D02*X45085D01*\r
+X41910Y13335D02*X52070D01*\r
+G54D13*X46355Y15240D02*X49530D01*\r
+X45085Y16510D02*X46355Y15240D01*\r
+X45085Y31750D02*X61595D01*\r
+G54D16*X83820Y34290D02*X84455Y34925D01*\r
+G54D12*X80010Y33020D02*X19050D01*\r
+X18415Y32385D01*\r
+X15875D01*\r
+G54D13*X88265Y29845D02*X57150D01*\r
+G54D12*X48260Y21590D02*X45085Y18415D01*\r
+X15875Y51435D02*X31115D01*\r
+X36195Y46355D02*X31115Y51435D01*\r
+X71755Y41910D02*X15875D01*\r
+X40640Y56515D02*X57150D01*\r
+G54D13*X71120D02*X70485Y55880D01*\r
+X64135Y59690D02*X66675D01*\r
+X70485Y55880D02*X69215Y54610D01*\r
+G54D12*X36195Y46355D02*X91440D01*\r
+G54D13*X88900Y10160D02*X86360Y7620D01*\r
+X57150Y24765D02*X64135D01*\r
+G54D17*X86360Y10795D02*X85090Y9525D01*\r
+G54D13*X86360Y7620D02*X49530D01*\r
+G54D17*X62865Y9525D02*X85090D01*\r
+X59690Y12700D02*X62865Y9525D01*\r
+G54D13*X61595Y59690D02*X47625D01*\r
+G54D17*X64135Y66040D02*Y64135D01*\r
+X55245Y66040D02*Y64135D01*\r
+G54D13*X41275Y85090D02*X48895D01*\r
+X62230Y92710D02*X59690D01*\r
+G54D17*X61595Y73025D02*X59690Y71120D01*\r
+X62230D01*\r
+G54D13*X50800Y86995D02*X55245D01*\r
+G54D17*X51435Y83820D02*X45085Y77470D01*\r
+G54D12*X103505Y101600D02*X104140Y100965D01*\r
+X106045Y101600D02*Y93980D01*\r
+X44450Y101600D02*X103505D01*\r
+G54D17*X50165Y96520D02*X52070Y98425D01*\r
+X61595D01*\r
+X63500Y96520D01*\r
+G54D12*X43180Y100330D02*X44450Y101600D01*\r
+X43180Y92710D02*Y100330D01*\r
+X101600Y67310D02*X138430D01*\r
+X102870Y68580D02*X128905D01*\r
+G54D17*X120015Y72390D02*X120650Y73025D01*\r
+X104775Y72390D02*X120015D01*\r
+X103505Y71120D02*X104775Y72390D01*\r
+X125095Y78740D02*Y73025D01*\r
+G54D13*X142875Y78740D02*Y77470D01*\r
+X143510Y76835D01*\r
+G54D17*X140335Y71120D02*Y73025D01*\r
+G54D12*X126365Y83820D02*Y86360D01*\r
+X116205Y80010D02*X125730D01*\r
+X126365Y80645D02*X123825Y83185D01*\r
+X102870Y89535D02*X135255D01*\r
+X112395Y74930D02*X117475D01*\r
+X109220D02*X107950D01*\r
+X110490Y76200D02*X109220Y74930D01*\r
+X104140Y73660D02*X117475D01*\r
+X119380Y83185D02*X117475Y85090D01*\r
+X112395Y80010D02*X110490D01*\r
+X108585Y78105D01*\r
+X114300D02*X116205Y80010D01*\r
+X112395Y87630D02*X125095D01*\r
+G54D20*X116840Y86360D02*X104140D01*\r
+G54D12*X104775Y83185D02*X105410Y83820D01*\r
+X99695Y86360D02*X102870Y89535D01*\r
+G54D13*X94615Y92710D02*X96520D01*\r
+X120650Y90805D02*X101600D01*\r
+G54D12*X104140Y93345D02*X104775Y92710D01*\r
+X110490D01*\r
+X108585Y99695D02*X110490Y101600D01*\r
+X118745D01*\r
+X121285Y99060D01*\r
+X112395Y93980D02*Y99695D01*\r
+X121285Y99060D02*Y98425D01*\r
+G54D13*X122555Y95250D02*X125730Y98425D01*\r
+X137160D02*X139065Y96520D01*\r
+X125730Y98425D02*X137160D01*\r
+G54D12*X104140Y100965D02*Y93345D01*\r
+G54D17*X102235Y92710D02*Y93980D01*\r
+X100965Y95250D01*\r
+G54D12*X110490Y64770D02*X111760Y66040D01*\r
+X116840D02*X111760D01*\r
+X92710Y64770D02*X110490D01*\r
+G54D17*X68580Y66040D02*X66675Y64135D01*\r
+G54D12*X88900Y73025D02*X103505D01*\r
+X89535Y74295D02*X103505D01*\r
+X106045Y76835D01*\r
+X110490Y78105D02*X114300D01*\r
+X102870Y68580D02*X101600Y69850D01*\r
+X103505Y73025D02*X104140Y73660D01*\r
+G54D17*X102235Y71120D02*X103505D01*\r
+G54D12*X109220Y76835D02*X106045D01*\r
+X105410Y80010D02*X102235Y76835D01*\r
+X105410Y78105D02*X102870Y75565D01*\r
+X107950Y80010D02*X105410D01*\r
+X108585Y78105D02*X105410D01*\r
+G54D13*X71120Y81915D02*X120015D01*\r
+G54D12*X117475Y76200D02*X110490D01*\r
+X117475Y85090D02*X109220D01*\r
+X107950Y83820D01*\r
+X105410D02*X107950D01*\r
+X109220Y76835D02*X110490Y78105D01*\r
+X112395Y83820D02*X116840D01*\r
+X95885Y75565D02*X102870D01*\r
+X95885Y83185D02*X104775D01*\r
+X71755Y74295D02*X70485Y75565D01*\r
+X71755Y74295D02*X85725D01*\r
+X71120Y73025D02*X84455D01*\r
+X99695Y85090D02*Y86360D01*\r
+G54D13*X97155D02*Y85090D01*\r
+G54D12*X102235Y76835D03*\r
+X72390D02*X102235D01*\r
+G54D13*X94615Y78740D02*Y81915D01*\r
+G54D12*X43180Y92710D02*X45085Y90805D01*\r
+Y96520D02*X47625Y93980D01*\r
+G54D13*X73660Y92710D02*X75565Y94615D01*\r
+X38735Y88265D02*X55245D01*\r
+X73660Y91440D02*Y92710D01*\r
+X48895Y85090D02*X50800Y86995D01*\r
+G54D17*X51435Y85090D02*Y83820D01*\r
+G54D13*X55245Y88265D02*X59690Y92710D01*\r
+X55245Y86995D02*X57150Y85090D01*\r
+G54D12*X47625Y93980D02*X53340D01*\r
+X77470Y68580D02*X23495D01*\r
+X74930Y69850D02*X22225D01*\r
+X24765Y74295D02*X69850D01*\r
+X17780Y73965D02*X24435D01*\r
+X24765Y74295D01*\r
+X26035Y75565D02*X70485D01*\r
+G54D13*X41275Y72390D02*X48260D01*\r
+G54D12*X26035Y71120D02*X17856D01*\r
+G54D13*X48260Y72390D02*X49530Y71120D01*\r
+G54D12*X55245Y73025D02*X57150Y71120D01*\r
+X50800Y66040D02*X45085D01*\r
+X17856Y71120D02*X17780Y71196D01*\r
+G54D17*X21590Y64135D02*X20320Y65405D01*\r
+Y67031D01*\r
+X66675Y64135D02*X21590D01*\r
+G54D12*X90170Y80645D02*X78740D01*\r
+G54D13*X87630Y83820D02*Y81915D01*\r
+G54D12*X93345Y80645D02*X89535D01*\r
+G54D13*X78740Y88900D02*X80010Y90170D01*\r
+X97155Y86360D02*X101600Y90805D01*\r
+G54D12*X88900Y71120D02*X85725Y74295D01*\r
+X86360Y71120D02*X84455Y73025D01*\r
+X91440Y66040D02*X94615D01*\r
+X87630Y67945D02*X80010D01*\r
+X100965D02*X101600Y67310D01*\r
+Y69850D02*X80010D01*\r
+G54D17*X92075Y67945D02*X98425D01*\r
+G54D12*X62865Y99695D02*X102235D01*\r
+G54D17*X93345Y98425D02*X100330D01*\r
+G54D12*X69850Y74295D02*X71120Y73025D01*\r
+G54D17*Y96520D02*Y91440D01*\r
+G54D13*X75565Y94615D02*X85090D01*\r
+G54D17*X100965Y95250D02*Y97790D01*\r
+X100330Y98425D02*X100965Y97790D01*\r
+X91440Y96520D02*X63500D01*\r
+X91440D02*X93345Y98425D01*\r
+G54D13*X74930Y88900D02*X78740D01*\r
+G54D17*X76835Y86995D02*X80645D01*\r
+X81280Y86360D02*X80645Y86995D01*\r
+X81280Y85090D02*Y86360D01*\r
+X73660Y85090D02*X74930D01*\r
+X76835Y86995D01*\r
+G54D13*X54610Y78740D02*X52705Y76835D01*\r
+X57150Y78740D02*X59055Y76835D01*\r
+X52705D02*X47625D01*\r
+X59055D02*X66675D01*\r
+G54D12*X50800Y73025D02*X55245D01*\r
+G54D17*X68580D02*X61595D01*\r
+G54D12*X164465Y94615D02*X165735Y93345D01*\r
+G54D13*X163195Y92075D02*Y89535D01*\r
+G54D12*X165735Y93345D02*Y92075D01*\r
+G54D13*X153035Y96520D02*X154305D01*\r
+G54D12*X153670Y94615D02*X164465D01*\r
+X158750Y89535D02*X160655D01*\r
+G54D13*X161925Y88265D02*X160020D01*\r
+X163195Y89535D02*X161925Y88265D01*\r
+X158750Y85090D02*Y86995D01*\r
+X160020Y88265D01*\r
+X158750Y85090D02*X156845Y83185D01*\r
+G54D12*X151765Y89535D02*X158750D01*\r
+X153035Y92710D02*Y93980D01*\r
+X153670Y94615D01*\r
+G54D21*X158750Y74930D02*X160500Y76640D01*\r
+G54D12*X147955Y78740D02*Y80010D01*\r
+G54D13*X156845Y83185D02*X146685D01*\r
+G54D12*X147955Y80010D02*X147320Y80645D01*\r
+X123825Y83185D02*X119380D01*\r
+X126365Y83820D02*X127635Y82550D01*\r
+G54D13*X146685Y83185D02*X143510Y86360D01*\r
+X150495Y85090D02*Y83185D01*\r
+G54D12*X127635Y82550D02*X133985D01*\r
+X150495Y74930D02*X128905D01*\r
+X137795Y77470D02*Y78740D01*\r
+X137160Y76835D02*X137795Y77470D01*\r
+X127000Y76835D02*X137160D01*\r
+X137795Y71120D02*Y69850D01*\r
+X147320Y80645D02*X126365D01*\r
+X137795Y69850D02*X139065Y68580D01*\r
+X154940D01*\r
+X135255Y81915D02*X155575D01*\r
+G54D17*X120650Y73025D02*X154940D01*\r
+G54D13*X122555Y92710D02*X125095D01*\r
+G54D12*X127635Y87630D02*X128270Y88265D01*\r
+X127635Y92710D02*Y91440D01*\r
+X126365Y86360D02*X125095Y87630D01*\r
+X127635Y91440D02*X128270Y90805D01*\r
+G54D13*X151130Y94615D02*X153035Y96520D01*\r
+X147955Y93980D02*X148590Y94615D01*\r
+X151130D01*\r
+X139065Y96520D02*X149225D01*\r
+X139065Y93980D02*Y96520D01*\r
+X122555Y95250D02*Y92710D01*\r
+X120650Y90805D02*X122555Y92710D01*\r
+X143510Y86360D02*X132080D01*\r
+G54D12*X128270Y90805D02*X144780D01*\r
+X128270Y88265D02*X142875D01*\r
+X144780Y90805D02*X147955Y87630D01*\r
+X150495Y90805D02*X151765Y89535D01*\r
+X150495Y92710D02*Y90805D01*\r
+G54D13*X147955Y92710D02*Y93980D01*\r
+G54D12*Y87630D02*Y85090D01*\r
+X125730Y80010D02*X126365Y79375D01*\r
+Y77470D01*\r
+X127000Y76835D01*\r
+X127635Y85090D02*Y87630D01*\r
+X122555Y66040D02*X125933D01*\r
+X127000D02*X125730D01*\r
+X121285Y77470D02*X118745D01*\r
+X117475Y76200D01*\r
+Y74930D02*X118745Y76200D01*\r
+X121920D01*\r
+X118745Y74930D02*X117475Y73660D01*\r
+X121285Y74930D02*X118745D01*\r
+X167005Y76200D02*Y80645D01*\r
+X165735Y81915D01*\r
+X167005Y76200D02*Y68580D01*\r
+Y63500D02*X166370Y62865D01*\r
+X167005Y68580D02*Y63500D01*\r
+G54D22*X163195Y81915D02*Y78105D01*\r
+G54D21*X158750Y65405D02*Y74930D01*\r
+G54D13*X146050Y64135D02*Y66040D01*\r
+G54D12*X141605Y60325D02*X157480D01*\r
+G54D13*X144145Y62230D02*X146050Y64135D01*\r
+G54D12*X156210Y67310D02*Y66040D01*\r
+X154940Y68580D02*X156210Y67310D01*\r
+G54D13*X143510Y76835D02*X156210D01*\r
+G54D22*X154940Y73025D02*X160020Y78105D01*\r
+X165100D01*\r
+X165735Y77470D01*\r
+Y76835D01*\r
+G54D21*X157440Y64135D02*X153035D01*\r
+X157440D02*X158750Y65405D01*\r
+G54D12*X157480Y60325D02*X160020Y62865D01*\r
+X166370D02*X160020D01*\r
+G54D15*X152400Y24130D02*X123825D01*\r
+G54D13*X120650Y15240D02*X121285Y14605D01*\r
+X128905Y17780D02*X135890Y10795D01*\r
+X121285Y14605D02*Y12700D01*\r
+X132715Y21590D02*X139065Y15240D01*\r
+G54D14*X165735Y33655D02*X150495D01*\r
+G54D13*X121285Y36195D02*Y31750D01*\r
+G54D14*X118745Y33655D02*Y28575D01*\r
+G54D17*X158750Y26035D02*X165735D01*\r
+G54D14*X118745Y48895D02*Y52705D01*\r
+G54D15*X156210Y47625D02*X120650D01*\r
+G54D23*X118745Y52705D02*X117475Y53975D01*\r
+G54D13*X121285Y53340D02*X118110Y56515D01*\r
+G54D14*X120015Y47625D02*X118745Y48895D01*\r
+X165735Y36195D02*X126365D01*\r
+G54D13*X118110Y39370D02*X121285Y36195D01*\r
+G54D14*X156845Y40005D02*X158115Y38735D01*\r
+X165735D02*X158115D01*\r
+G54D15*X135255Y40005D02*X156210Y40005D01*\r
+G54D13*X152400Y12700D02*X154940Y10160D01*\r
+X156195D01*\r
+G54D14*X158115Y13970D02*Y8890D01*\r
+X159795Y15665D02*X158115Y13970D01*\r
+G54D24*X145415Y27940D02*X150495Y33020D01*\r
+G54D14*X165735Y31115D02*X156210D01*\r
+X157480Y28575D02*X152400Y23495D01*\r
+X165735Y28575D02*X157480D01*\r
+X156845Y7620D02*X158115Y8890D01*\r
+G54D24*X145415Y27940D02*X141605D01*\r
+G54D13*X147955Y10795D02*X149860Y12700D01*\r
+X135890Y10795D02*X147955D01*\r
+X149980Y12700D02*X150000Y12720D01*\r
+G54D17*X137795Y12700D02*X146050D01*\r
+G54D14*X142875Y4445D02*X135255D01*\r
+X156845Y7620D02*X146050D01*\r
+X142875Y4445D01*\r
+X165735Y15875D02*X160020D01*\r
+G54D17*X158115Y18415D02*X165735D01*\r
+G54D13*X152400Y12700D02*X150000Y12720D01*\r
+X139065Y15240D02*X156210D01*\r
+G54D17*X157480Y17780D02*X140335D01*\r
+X156210Y23495D02*Y17780D01*\r
+X157480D02*X158115Y18415D01*\r
+X156210Y23495D02*X158750Y26035D01*\r
+G54D11*X19050Y9144D02*Y10160D01*\r
+X19431Y9779D01*\r
+X19812Y10160D01*\r
+Y9144D02*Y10160D01*\r
+X20498Y9652D02*X20625Y9779D01*\r
+X20244Y9652D02*X20498D01*\r
+X20117Y9779D02*X20244Y9652D01*\r
+X20117Y9779D02*Y10033D01*\r
+X20244Y10160D01*\r
+X20625Y9652D02*Y10033D01*\r
+X20752Y10160D01*\r
+X20244D02*X20498D01*\r
+X20625Y10033D01*\r
+X21057Y9144D02*Y10033D01*\r
+X21184Y10160D01*\r
+X21565Y9144D02*Y10033D01*\r
+X21692Y10160D01*\r
+X21438Y9525D02*X21692D01*\r
+X22073Y10160D02*X22454D01*\r
+X21946Y10033D02*X22073Y10160D01*\r
+X21946Y9779D02*Y10033D01*\r
+Y9779D02*X22073Y9652D01*\r
+X22327D01*\r
+X22454Y9779D01*\r
+X21946Y9906D02*X22454D01*\r
+Y9779D02*Y9906D01*\r
+X22885Y9779D02*Y10160D01*\r
+Y9779D02*X23012Y9652D01*\r
+X23266D01*\r
+X22758D02*X22885Y9779D01*\r
+X24028Y9144D02*Y10160D01*\r
+Y9144D02*X24536D01*\r
+X24028Y9652D02*X24409D01*\r
+X24968Y10160D02*X25349D01*\r
+X24841Y10033D02*X24968Y10160D01*\r
+X24841Y9779D02*Y10033D01*\r
+Y9779D02*X24968Y9652D01*\r
+X25222D01*\r
+X25349Y9779D01*\r
+X24841Y9906D02*X25349D01*\r
+Y9779D02*Y9906D01*\r
+X25781Y9144D02*Y10033D01*\r
+X25908Y10160D01*\r
+X25654Y9525D02*X25908D01*\r
+X26289Y9144D02*Y10033D01*\r
+X26416Y10160D01*\r
+X26162Y9525D02*X26416D01*\r
+X26797Y10160D02*X27178D01*\r
+X26670Y10033D02*X26797Y10160D01*\r
+X26670Y9779D02*Y10033D01*\r
+Y9779D02*X26797Y9652D01*\r
+X27051D01*\r
+X27178Y9779D01*\r
+X26670Y9906D02*X27178D01*\r
+Y9779D02*Y9906D01*\r
+X27610Y9779D02*Y10160D01*\r
+Y9779D02*X27737Y9652D01*\r
+X27991D01*\r
+X27483D02*X27610Y9779D01*\r
+X28753Y9144D02*Y10160D01*\r
+X29261D01*\r
+X29947Y9652D02*X30074Y9779D01*\r
+X29693Y9652D02*X29947D01*\r
+X29566Y9779D02*X29693Y9652D01*\r
+X29566Y9779D02*Y10033D01*\r
+X29693Y10160D01*\r
+X30074Y9652D02*Y10033D01*\r
+X30201Y10160D01*\r
+X29693D02*X29947D01*\r
+X30074Y10033D01*\r
+X30886Y9652D02*X31013Y9779D01*\r
+X30632Y9652D02*X30886D01*\r
+X30505Y9779D02*X30632Y9652D01*\r
+X30505Y9779D02*Y10033D01*\r
+X30632Y10160D01*\r
+X30886D01*\r
+X31013Y10033D01*\r
+X30505Y10414D02*X30632Y10541D01*\r
+X30886D01*\r
+X31013Y10414D01*\r
+Y9652D02*Y10414D01*\r
+X31445Y10160D02*X31826D01*\r
+X31318Y10033D02*X31445Y10160D01*\r
+X31318Y9779D02*Y10033D01*\r
+Y9779D02*X31445Y9652D01*\r
+X31699D01*\r
+X31826Y9779D01*\r
+X31318Y9906D02*X31826D01*\r
+Y9779D02*Y9906D01*\r
+X32258Y10160D02*X32639D01*\r
+X32766Y10033D01*\r
+X32639Y9906D02*X32766Y10033D01*\r
+X32258Y9906D02*X32639D01*\r
+X32131Y9779D02*X32258Y9906D01*\r
+X32131Y9779D02*X32258Y9652D01*\r
+X32639D01*\r
+X32766Y9779D01*\r
+X32131Y10033D02*X32258Y10160D01*\r
+X19177Y7239D02*Y8255D01*\r
+X19558Y7239D02*X19685Y7366D01*\r
+Y8128D01*\r
+X19558Y8255D02*X19685Y8128D01*\r
+X19050Y8255D02*X19558D01*\r
+X19050Y7239D02*X19558D01*\r
+X19990Y7493D02*Y7620D01*\r
+Y7874D02*Y8255D01*\r
+X20371D02*X20752D01*\r
+X20244Y8128D02*X20371Y8255D01*\r
+X20244Y7874D02*Y8128D01*\r
+Y7874D02*X20371Y7747D01*\r
+X20625D01*\r
+X20752Y7874D01*\r
+X20244Y8001D02*X20752D01*\r
+Y7874D02*Y8001D01*\r
+X21438Y7747D02*X21565Y7874D01*\r
+X21184Y7747D02*X21438D01*\r
+X21057Y7874D02*X21184Y7747D01*\r
+X21057Y7874D02*Y8128D01*\r
+X21184Y8255D01*\r
+X21438D01*\r
+X21565Y8128D01*\r
+X21057Y8509D02*X21184Y8636D01*\r
+X21438D01*\r
+X21565Y8509D01*\r
+Y7747D02*Y8509D01*\r
+X21869Y7874D02*Y8128D01*\r
+Y7874D02*X21996Y7747D01*\r
+X22250D01*\r
+X22377Y7874D01*\r
+Y8128D01*\r
+X22250Y8255D02*X22377Y8128D01*\r
+X21996Y8255D02*X22250D01*\r
+X21869Y8128D02*X21996Y8255D01*\r
+X23266D02*X23647D01*\r
+X23139Y8128D02*X23266Y8255D01*\r
+X23139Y7366D02*Y8128D01*\r
+Y7366D02*X23266Y7239D01*\r
+X23647D01*\r
+X24333Y7747D02*X24460Y7874D01*\r
+X24079Y7747D02*X24333D01*\r
+X23952Y7874D02*X24079Y7747D01*\r
+X23952Y7874D02*Y8128D01*\r
+X24079Y8255D01*\r
+X24460Y7747D02*Y8128D01*\r
+X24587Y8255D01*\r
+X24079D02*X24333D01*\r
+X24460Y8128D01*\r
+X24892Y7239D02*Y8255D01*\r
+Y8128D02*X25019Y8255D01*\r
+X25273D01*\r
+X25400Y8128D01*\r
+Y7874D02*Y8128D01*\r
+X25273Y7747D02*X25400Y7874D01*\r
+X25019Y7747D02*X25273D01*\r
+X24892Y7874D02*X25019Y7747D01*\r
+X25832Y8255D02*X26213D01*\r
+X25705Y8128D02*X25832Y8255D01*\r
+X25705Y7874D02*Y8128D01*\r
+Y7874D02*X25832Y7747D01*\r
+X26086D01*\r
+X26213Y7874D01*\r
+X25705Y8001D02*X26213D01*\r
+Y7874D02*Y8001D01*\r
+X26645Y7874D02*Y8255D01*\r
+Y7874D02*X26772Y7747D01*\r
+X27026D01*\r
+X26518D02*X26645Y7874D01*\r
+X27330Y7239D02*Y8128D01*\r
+X27457Y8255D01*\r
+X27711Y7874D02*Y8128D01*\r
+Y7874D02*X27838Y7747D01*\r
+X28092D01*\r
+X28219Y7874D01*\r
+Y8128D01*\r
+X28092Y8255D02*X28219Y8128D01*\r
+X27838Y8255D02*X28092D01*\r
+X27711Y8128D02*X27838Y8255D01*\r
+X28651Y7874D02*Y8255D01*\r
+Y7874D02*X28778Y7747D01*\r
+X28905D01*\r
+X29032Y7874D01*\r
+Y8255D01*\r
+X28524Y7747D02*X28651Y7874D01*\r
+X30302Y7239D02*X30429Y7366D01*\r
+X29921Y7239D02*X30302D01*\r
+X29794Y7366D02*X29921Y7239D01*\r
+X29794Y7366D02*Y7620D01*\r
+X29921Y7747D01*\r
+X30302D01*\r
+X30429Y7874D01*\r
+Y8128D01*\r
+X30302Y8255D02*X30429Y8128D01*\r
+X29921Y8255D02*X30302D01*\r
+X29794Y8128D02*X29921Y8255D01*\r
+X31115Y7747D02*X31242Y7874D01*\r
+X30861Y7747D02*X31115D01*\r
+X30734Y7874D02*X30861Y7747D01*\r
+X30734Y7874D02*Y8128D01*\r
+X30861Y8255D01*\r
+X31242Y7747D02*Y8128D01*\r
+X31369Y8255D01*\r
+X30861D02*X31115D01*\r
+X31242Y8128D01*\r
+X31801Y7874D02*Y8255D01*\r
+Y7874D02*X31928Y7747D01*\r
+X32055D01*\r
+X32182Y7874D01*\r
+Y8255D01*\r
+X31674Y7747D02*X31801Y7874D01*\r
+X32614Y7239D02*Y8128D01*\r
+X32741Y8255D01*\r
+X32487Y7620D02*X32741D01*\r
+X32995Y7493D02*Y7620D01*\r
+Y7874D02*Y8255D01*\r
+X33376Y7874D02*Y8255D01*\r
+Y7874D02*X33503Y7747D01*\r
+X33630D01*\r
+X33757Y7874D01*\r
+Y8255D01*\r
+X33249Y7747D02*X33376Y7874D01*\r
+X34061Y7493D02*Y7620D01*\r
+Y7874D02*Y8255D01*\r
+X19050Y5461D02*Y6350D01*\r
+Y5461D02*X19177Y5334D01*\r
+X19558D01*\r
+X19685Y5461D01*\r
+Y6350D01*\r
+X19050Y5842D02*X19685D01*\r
+X19990Y5334D02*X20244D01*\r
+X20117D02*Y6350D01*\r
+X19990D02*X20244D01*\r
+X20676D02*X21057D01*\r
+X20549Y6223D02*X20676Y6350D01*\r
+X20549Y5461D02*Y6223D01*\r
+Y5461D02*X20676Y5334D01*\r
+X21057D01*\r
+X21361Y5842D02*X21869D01*\r
+X22174Y5461D02*X22301Y5334D01*\r
+X22682D01*\r
+X22809Y5461D01*\r
+Y5715D01*\r
+X22174Y6350D02*X22809Y5715D01*\r
+X22174Y6350D02*X22809D01*\r
+X23114D02*X23241D01*\r
+X23546Y5461D02*X23673Y5334D01*\r
+X24054D01*\r
+X24181Y5461D01*\r
+Y5715D01*\r
+X23546Y6350D02*X24181Y5715D01*\r
+X23546Y6350D02*X24181D01*\r
+X24486D02*X24613D01*\r
+X24917Y6223D02*X25044Y6350D01*\r
+X24917Y5461D02*Y6223D01*\r
+Y5461D02*X25044Y5334D01*\r
+X25298D01*\r
+X25425Y5461D01*\r
+Y6223D01*\r
+X25298Y6350D02*X25425Y6223D01*\r
+X25044Y6350D02*X25298D01*\r
+X24917Y6096D02*X25425Y5588D01*\r
+X26187Y6223D02*X26314Y6350D01*\r
+X26187Y5461D02*X26314Y5334D01*\r
+X26187Y5461D02*Y6223D01*\r
+X26746Y5842D02*X27127D01*\r
+X26619Y5969D02*X26746Y5842D01*\r
+X26619Y5969D02*Y6223D01*\r
+X26746Y6350D01*\r
+X27127D01*\r
+X27432Y5334D02*X27559Y5461D01*\r
+Y6223D01*\r
+X27432Y6350D02*X27559Y6223D01*\r
+X28321Y5461D02*X28448Y5334D01*\r
+X28829D01*\r
+X28956Y5461D01*\r
+Y5715D01*\r
+X28321Y6350D02*X28956Y5715D01*\r
+X28321Y6350D02*X28956D01*\r
+X29261Y6223D02*X29388Y6350D01*\r
+X29261Y5461D02*Y6223D01*\r
+Y5461D02*X29388Y5334D01*\r
+X29642D01*\r
+X29769Y5461D01*\r
+Y6223D01*\r
+X29642Y6350D02*X29769Y6223D01*\r
+X29388Y6350D02*X29642D01*\r
+X29261Y6096D02*X29769Y5588D01*\r
+X30074Y6223D02*X30201Y6350D01*\r
+X30074Y5461D02*Y6223D01*\r
+Y5461D02*X30201Y5334D01*\r
+X30455D01*\r
+X30582Y5461D01*\r
+Y6223D01*\r
+X30455Y6350D02*X30582Y6223D01*\r
+X30201Y6350D02*X30455D01*\r
+X30074Y6096D02*X30582Y5588D01*\r
+X30886Y6350D02*X31394Y5842D01*\r
+Y5461D02*Y5842D01*\r
+X31267Y5334D02*X31394Y5461D01*\r
+X31013Y5334D02*X31267D01*\r
+X30886Y5461D02*X31013Y5334D01*\r
+X30886Y5461D02*Y5715D01*\r
+X31013Y5842D01*\r
+X31394D01*\r
+X19050Y11049D02*X19558D01*\r
+X19685Y11176D01*\r
+Y11430D01*\r
+X19558Y11557D02*X19685Y11430D01*\r
+X19177Y11557D02*X19558D01*\r
+X19177Y11049D02*Y12065D01*\r
+Y11557D02*X19685Y12065D01*\r
+X19990Y11684D02*Y11938D01*\r
+Y11684D02*X20117Y11557D01*\r
+X20371D01*\r
+X20498Y11684D01*\r
+Y11938D01*\r
+X20371Y12065D02*X20498Y11938D01*\r
+X20117Y12065D02*X20371D01*\r
+X19990Y11938D02*X20117Y12065D01*\r
+X21311Y11049D02*Y12065D01*\r
+X21184D02*X21311Y11938D01*\r
+X20930Y12065D02*X21184D01*\r
+X20803Y11938D02*X20930Y12065D01*\r
+X20803Y11684D02*Y11938D01*\r
+Y11684D02*X20930Y11557D01*\r
+X21184D01*\r
+X21311Y11684D01*\r
+X21742D02*Y12065D01*\r
+Y11684D02*X21869Y11557D01*\r
+X22123D01*\r
+X21615D02*X21742Y11684D01*\r
+X22428Y11303D02*Y11430D01*\r
+Y11684D02*Y12065D01*\r
+X23063Y11557D02*X23190Y11684D01*\r
+X22809Y11557D02*X23063D01*\r
+X22682Y11684D02*X22809Y11557D01*\r
+X22682Y11684D02*Y11938D01*\r
+X22809Y12065D01*\r
+X23063D01*\r
+X23190Y11938D01*\r
+X22682Y12319D02*X22809Y12446D01*\r
+X23063D01*\r
+X23190Y12319D01*\r
+Y11557D02*Y12319D01*\r
+X23495Y11684D02*Y11938D01*\r
+Y11684D02*X23622Y11557D01*\r
+X23876D01*\r
+X24003Y11684D01*\r
+Y11938D01*\r
+X23876Y12065D02*X24003Y11938D01*\r
+X23622Y12065D02*X23876D01*\r
+X23495Y11938D02*X23622Y12065D01*\r
+X24892Y11049D02*Y12065D01*\r
+X25273Y11049D02*X25400Y11176D01*\r
+Y11938D01*\r
+X25273Y12065D02*X25400Y11938D01*\r
+X24765Y12065D02*X25273D01*\r
+X24765Y11049D02*X25273D01*\r
+X26086Y11557D02*X26213Y11684D01*\r
+X25832Y11557D02*X26086D01*\r
+X25705Y11684D02*X25832Y11557D01*\r
+X25705Y11684D02*Y11938D01*\r
+X25832Y12065D01*\r
+X26213Y11557D02*Y11938D01*\r
+X26340Y12065D01*\r
+X25832D02*X26086D01*\r
+X26213Y11938D01*\r
+X26772Y11684D02*Y12065D01*\r
+Y11684D02*X26899Y11557D01*\r
+X27026D01*\r
+X27153Y11684D01*\r
+Y12065D01*\r
+X26645Y11557D02*X26772Y11684D01*\r
+X27457Y11303D02*Y11430D01*\r
+Y11684D02*Y12065D01*\r
+X27838D02*X28219D01*\r
+X27711Y11938D02*X27838Y12065D01*\r
+X27711Y11684D02*Y11938D01*\r
+Y11684D02*X27838Y11557D01*\r
+X28092D01*\r
+X28219Y11684D01*\r
+X27711Y11811D02*X28219D01*\r
+Y11684D02*Y11811D01*\r
+X28524Y11049D02*Y11938D01*\r
+X28651Y12065D01*\r
+X29362Y11049D02*X29870D01*\r
+X29616D02*Y12065D01*\r
+X30302Y11684D02*Y12065D01*\r
+Y11684D02*X30429Y11557D01*\r
+X30683D01*\r
+X30175D02*X30302Y11684D01*\r
+X31115Y12065D02*X31496D01*\r
+X30988Y11938D02*X31115Y12065D01*\r
+X30988Y11684D02*Y11938D01*\r
+Y11684D02*X31115Y11557D01*\r
+X31369D01*\r
+X31496Y11684D01*\r
+X30988Y11811D02*X31496D01*\r
+Y11684D02*Y11811D01*\r
+X31801Y11557D02*Y11811D01*\r
+X32055Y12065D01*\r
+X32309Y11811D01*\r
+Y11557D02*Y11811D01*\r
+X32614Y11303D02*Y11430D01*\r
+Y11684D02*Y12065D01*\r
+X32868Y11557D02*X33376D01*\r
+X32868Y12065D02*X33376Y11557D01*\r
+X32868Y12065D02*X33376D01*\r
+X34061Y11557D02*X34188Y11684D01*\r
+X33807Y11557D02*X34061D01*\r
+X33680Y11684D02*X33807Y11557D01*\r
+X33680Y11684D02*Y11938D01*\r
+X33807Y12065D01*\r
+X34188Y11557D02*Y11938D01*\r
+X34315Y12065D01*\r
+X33807D02*X34061D01*\r
+X34188Y11938D01*\r
+X34747Y11684D02*Y12065D01*\r
+Y11684D02*X34874Y11557D01*\r
+X35001D01*\r
+X35128Y11684D01*\r
+Y12065D01*\r
+X34620Y11557D02*X34747Y11684D01*\r
+G54D25*G36*\r
+X56388Y85852D02*Y84328D01*\r
+X57912D01*\r
+Y85852D01*\r
+X56388D01*\r
+G37*\r
+G54D26*X59690Y85090D03*\r
+G54D25*G36*\r
+X93853Y85852D02*Y84328D01*\r
+X95377D01*\r
+Y85852D01*\r
+X93853D01*\r
+G37*\r
+G54D26*X97155Y85090D03*\r
+X99695D03*\r
+X102235D03*\r
+X64770Y92710D03*\r
+X62230D03*\r
+X59690D03*\r
+G54D25*G36*\r
+X72898Y92202D02*Y90678D01*\r
+X74422D01*\r
+Y92202D01*\r
+X72898D01*\r
+G37*\r
+G54D26*X71120Y91440D03*\r
+X57150Y92710D03*\r
+G54D25*G36*\r
+X49403Y97282D02*Y95758D01*\r
+X50927D01*\r
+Y97282D01*\r
+X49403D01*\r
+G37*\r
+G54D26*X45085Y96520D03*\r
+G54D25*G36*\r
+X49403Y91567D02*Y90043D01*\r
+X50927D01*\r
+Y91567D01*\r
+X49403D01*\r
+G37*\r
+G54D26*X45085Y90805D03*\r
+G54D25*G36*\r
+X48133Y85852D02*Y84328D01*\r
+X49657D01*\r
+Y85852D01*\r
+X48133D01*\r
+G37*\r
+G54D26*X51435Y85090D03*\r
+G54D25*G36*\r
+X86868Y94742D02*Y93218D01*\r
+X88392D01*\r
+Y94742D01*\r
+X86868D01*\r
+G37*\r
+G54D26*X87630Y83820D03*\r
+X86360Y71120D03*\r
+X88900D03*\r
+Y78740D03*\r
+X86360D03*\r
+G54D25*G36*\r
+X93853Y71882D02*Y70358D01*\r
+X95377D01*\r
+Y71882D01*\r
+X93853D01*\r
+G37*\r
+G54D26*X97155Y71120D03*\r
+X99695D03*\r
+X102235D03*\r
+Y78740D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D25*G36*\r
+X79248Y93472D02*Y91948D01*\r
+X80772D01*\r
+Y93472D01*\r
+X79248D01*\r
+G37*\r
+G54D26*X80010Y90170D03*\r
+G54D25*G36*\r
+X100203Y97282D02*Y95758D01*\r
+X101727D01*\r
+Y97282D01*\r
+X100203D01*\r
+G37*\r
+G54D26*X95885Y96520D03*\r
+X102235Y92710D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D25*G36*\r
+X116078Y94742D02*Y93218D01*\r
+X117602D01*\r
+Y94742D01*\r
+X116078D01*\r
+G37*\r
+G54D26*X107950Y93980D03*\r
+G54D25*G36*\r
+X128143Y97282D02*Y95758D01*\r
+X129667D01*\r
+Y97282D01*\r
+X128143D01*\r
+G37*\r
+G54D26*X123825Y96520D03*\r
+X112395Y93980D03*\r
+X130175Y92710D03*\r
+G54D25*G36*\r
+X134493Y94742D02*Y93218D01*\r
+X136017D01*\r
+Y94742D01*\r
+X134493D01*\r
+G37*\r
+G54D26*X127635Y92710D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D25*G36*\r
+X107188Y80772D02*Y79248D01*\r
+X108712D01*\r
+Y80772D01*\r
+X107188D01*\r
+G37*\r
+G54D26*X116840Y83820D03*\r
+G54D25*G36*\r
+X107188Y84582D02*Y83058D01*\r
+X108712D01*\r
+Y84582D01*\r
+X107188D01*\r
+G37*\r
+G36*\r
+X111633Y80772D02*Y79248D01*\r
+X113157D01*\r
+Y80772D01*\r
+X111633D01*\r
+G37*\r
+G36*\r
+X116078Y73152D02*Y71628D01*\r
+X117602D01*\r
+Y73152D01*\r
+X116078D01*\r
+G37*\r
+G54D26*X116840Y77470D03*\r
+G54D25*G36*\r
+X121793Y71882D02*Y70358D01*\r
+X123317D01*\r
+Y71882D01*\r
+X121793D01*\r
+G37*\r
+G54D26*X125095Y71120D03*\r
+X127635D03*\r
+X130175D03*\r
+X132715D03*\r
+X135255D03*\r
+X137795D03*\r
+X140335D03*\r
+X142875D03*\r
+X145415D03*\r
+X147955D03*\r
+Y78740D03*\r
+X145415D03*\r
+X142875D03*\r
+X140335D03*\r
+X137795D03*\r
+X135255D03*\r
+X132715D03*\r
+X130175D03*\r
+X127635D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D25*G36*\r
+X138303Y84582D02*Y83058D01*\r
+X139827D01*\r
+Y84582D01*\r
+X138303D01*\r
+G37*\r
+G54D26*X130175Y85090D03*\r
+X135255Y83820D03*\r
+G54D25*G36*\r
+X111633Y84582D02*Y83058D01*\r
+X113157D01*\r
+Y84582D01*\r
+X111633D01*\r
+G37*\r
+G36*\r
+X121793Y85852D02*Y84328D01*\r
+X123317D01*\r
+Y85852D01*\r
+X121793D01*\r
+G37*\r
+G54D26*X125095Y85090D03*\r
+X127635D03*\r
+G54D15*X168275Y97155D03*\r
+D03*\r
+G54D25*G36*\r
+X164973Y92837D02*Y91313D01*\r
+X166497D01*\r
+Y92837D01*\r
+X164973D01*\r
+G37*\r
+G54D26*X163195Y92075D03*\r
+X165735Y89535D03*\r
+Y86995D03*\r
+X163195Y89535D03*\r
+Y86995D03*\r
+X160655Y92075D03*\r
+Y89535D03*\r
+Y86995D03*\r
+X150495Y71120D03*\r
+Y78740D03*\r
+X153035Y71120D03*\r
+X155575D03*\r
+Y78740D03*\r
+X153035D03*\r
+X165735Y79375D03*\r
+Y76835D03*\r
+Y74295D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y71755D03*\r
+X163195D03*\r
+X160655D03*\r
+X163195Y79375D03*\r
+Y76835D03*\r
+X160655Y79375D03*\r
+Y76835D03*\r
+X139065Y93980D03*\r
+X142875D03*\r
+G54D25*G36*\r
+X153543Y97282D02*Y95758D01*\r
+X155067D01*\r
+Y97282D01*\r
+X153543D01*\r
+G37*\r
+G54D26*X149225Y96520D03*\r
+X155575Y92710D03*\r
+X153035D03*\r
+X150495D03*\r
+X147955D03*\r
+G54D25*G36*\r
+X142113Y84582D02*Y83058D01*\r
+X143637D01*\r
+Y84582D01*\r
+X142113D01*\r
+G37*\r
+G36*\r
+X147193Y85852D02*Y84328D01*\r
+X148717D01*\r
+Y85852D01*\r
+X147193D01*\r
+G37*\r
+G54D26*X150495Y85090D03*\r
+X153035D03*\r
+X155575D03*\r
+X165735Y84455D03*\r
+Y81915D03*\r
+X163195Y84455D03*\r
+Y81915D03*\r
+X160655Y84455D03*\r
+Y81915D03*\r
+G54D25*G36*\r
+X120269Y13716D02*Y11684D01*\r
+X122301D01*\r
+Y13716D01*\r
+X120269D01*\r
+G37*\r
+G54D27*X118745Y12700D03*\r
+X116205D03*\r
+G54D25*G36*\r
+X87884Y13716D02*Y11684D01*\r
+X89916D01*\r
+Y13716D01*\r
+X87884D01*\r
+G37*\r
+G54D27*X86360Y12700D03*\r
+X83820D03*\r
+G54D25*G36*\r
+X120269Y32766D02*Y30734D01*\r
+X122301D01*\r
+Y32766D01*\r
+X120269D01*\r
+G37*\r
+G54D27*X118745Y31750D03*\r
+X116205D03*\r
+G54D25*G36*\r
+X87884Y32766D02*Y30734D01*\r
+X89916D01*\r
+Y32766D01*\r
+X87884D01*\r
+G37*\r
+G54D27*X86360Y31750D03*\r
+X83820D03*\r
+G54D25*G36*\r
+X87884Y51816D02*Y49784D01*\r
+X89916D01*\r
+Y51816D01*\r
+X87884D01*\r
+G37*\r
+G54D27*X86360Y50800D03*\r
+X83820D03*\r
+G54D25*G36*\r
+X15050Y30670D02*Y29020D01*\r
+X16700D01*\r
+Y30670D01*\r
+X15050D01*\r
+G37*\r
+G54D17*X15875Y32385D03*\r
+G54D25*G36*\r
+X15050Y40196D02*Y38544D01*\r
+X16700D01*\r
+Y40196D01*\r
+X15050D01*\r
+G37*\r
+G54D17*X15875Y41910D03*\r
+G54D15*X14605Y8585D03*\r
+G54D25*G36*\r
+X13208Y23622D02*Y22098D01*\r
+X14732D01*\r
+Y23622D01*\r
+X13208D01*\r
+G37*\r
+G54D26*X13970Y18364D03*\r
+G54D14*X16459Y17094D03*\r
+Y24105D03*\r
+G54D15*X14605Y97155D03*\r
+G54D28*X19050Y84963D03*\r
+G54D25*G36*\r
+X15050Y49720D02*Y48070D01*\r
+X16700D01*\r
+Y49720D01*\r
+X15050D01*\r
+G37*\r
+G54D17*X15875Y51435D03*\r
+G54D28*X19050Y60173D03*\r
+G54D25*G36*\r
+X19558Y78867D02*Y77343D01*\r
+X21082D01*\r
+Y78867D01*\r
+X19558D01*\r
+G37*\r
+G54D26*X17780Y76733D03*\r
+X20320Y75336D03*\r
+X17780Y73965D03*\r
+X20320Y72568D03*\r
+X17780Y71196D03*\r
+X20320Y69799D03*\r
+Y67031D03*\r
+X17780Y68428D03*\r
+G54D25*G36*\r
+X54483Y60452D02*Y58928D01*\r
+X56007D01*\r
+Y60452D01*\r
+X54483D01*\r
+G37*\r
+G36*\r
+X54546Y66738D02*Y65342D01*\r
+X55944D01*\r
+Y66738D01*\r
+X54546D01*\r
+G37*\r
+G36*\r
+Y45148D02*Y43752D01*\r
+X55944D01*\r
+Y45148D01*\r
+X54546D01*\r
+G37*\r
+G54D26*X55245Y39370D03*\r
+X45085Y59690D03*\r
+G54D21*Y66040D03*\r
+Y44450D03*\r
+G54D25*G36*\r
+X44323Y40132D02*Y38608D01*\r
+X45847D01*\r
+Y40132D01*\r
+X44323D01*\r
+G37*\r
+G36*\r
+X60833Y66802D02*Y65278D01*\r
+X62357D01*\r
+Y66802D01*\r
+X60833D01*\r
+G37*\r
+G36*\r
+Y60452D02*Y58928D01*\r
+X62357D01*\r
+Y60452D01*\r
+X60833D01*\r
+G37*\r
+G54D26*X64135Y59690D03*\r
+Y66040D03*\r
+G54D25*G36*\r
+X80518Y66802D02*Y65278D01*\r
+X82042D01*\r
+Y66802D01*\r
+X80518D01*\r
+G37*\r
+G54D26*X78740Y66040D03*\r
+G54D25*G36*\r
+X58293Y50292D02*Y48768D01*\r
+X59817D01*\r
+Y50292D01*\r
+X58293D01*\r
+G37*\r
+G54D21*X59055Y44450D03*\r
+G54D25*G36*\r
+X58293Y40132D02*Y38608D01*\r
+X59817D01*\r
+Y40132D01*\r
+X58293D01*\r
+G37*\r
+G36*\r
+X58356Y55308D02*Y53912D01*\r
+X59754D01*\r
+Y55308D01*\r
+X58356D01*\r
+G37*\r
+G54D26*X69215Y49530D03*\r
+G54D25*G36*\r
+X68516Y45148D02*Y43752D01*\r
+X69914D01*\r
+Y45148D01*\r
+X68516D01*\r
+G37*\r
+G54D26*X69215Y39370D03*\r
+G54D21*Y54610D03*\r
+G54D25*G36*\r
+X48768Y16002D02*Y14478D01*\r
+X50292D01*\r
+Y16002D01*\r
+X48768D01*\r
+G37*\r
+G54D26*X52070Y15240D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X62230D03*\r
+X64770D03*\r
+Y22860D03*\r
+X62230D03*\r
+G54D25*G36*\r
+X70358Y85852D02*Y84328D01*\r
+X71882D01*\r
+Y85852D01*\r
+X70358D01*\r
+G37*\r
+G54D26*X73660Y85090D03*\r
+X62230D03*\r
+X64770D03*\r
+X83820Y71120D03*\r
+Y78740D03*\r
+X81280D03*\r
+X78740D03*\r
+X76200D03*\r
+X73660D03*\r
+G54D25*G36*\r
+X62738Y97282D02*Y95758D01*\r
+X64262D01*\r
+Y97282D01*\r
+X62738D01*\r
+G37*\r
+G54D26*X58420Y96520D03*\r
+G54D25*G36*\r
+X77978Y85852D02*Y84328D01*\r
+X79502D01*\r
+Y85852D01*\r
+X77978D01*\r
+G37*\r
+G54D26*X81280Y85090D03*\r
+G54D25*G36*\r
+X44323Y78232D02*Y76708D01*\r
+X45847D01*\r
+Y78232D01*\r
+X44323D01*\r
+G37*\r
+G54D26*X45085Y72390D03*\r
+G54D25*G36*\r
+X48768Y71882D02*Y70358D01*\r
+X50292D01*\r
+Y71882D01*\r
+X48768D01*\r
+G37*\r
+G54D26*X52070Y71120D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X54610Y78740D03*\r
+G54D25*G36*\r
+X44386Y55308D02*Y53912D01*\r
+X45784D01*\r
+Y55308D01*\r
+X44386D01*\r
+G37*\r
+G54D26*X52070Y78740D03*\r
+X49530D03*\r
+G54D21*X55245Y54610D03*\r
+G54D25*G36*\r
+X72263Y66802D02*Y65278D01*\r
+X73787D01*\r
+Y66802D01*\r
+X72263D01*\r
+G37*\r
+G54D26*X70485Y66040D03*\r
+G54D25*G36*\r
+X70358Y71882D02*Y70358D01*\r
+X71882D01*\r
+Y71882D01*\r
+X70358D01*\r
+G37*\r
+G54D26*X73660Y71120D03*\r
+X76200D03*\r
+X78740D03*\r
+X81280D03*\r
+X62230D03*\r
+X64770D03*\r
+X71120Y78740D03*\r
+X64770D03*\r
+X62230D03*\r
+X59690D03*\r
+Y22860D03*\r
+G54D25*G36*\r
+X60833Y35052D02*Y33528D01*\r
+X62357D01*\r
+Y35052D01*\r
+X60833D01*\r
+G37*\r
+G54D26*X57150Y78740D03*\r
+Y22860D03*\r
+G54D25*G36*\r
+X44323Y50292D02*Y48768D01*\r
+X45847D01*\r
+Y50292D01*\r
+X44323D01*\r
+G37*\r
+G54D26*X55245Y49530D03*\r
+X54610Y22860D03*\r
+X52070D03*\r
+X49530D03*\r
+G54D25*G36*\r
+X44323Y22352D02*Y20828D01*\r
+X45847D01*\r
+Y22352D01*\r
+X44323D01*\r
+G37*\r
+G54D26*X45085Y16510D03*\r
+G54D25*G36*\r
+X54483Y28702D02*Y27178D01*\r
+X56007D01*\r
+Y28702D01*\r
+X54483D01*\r
+G37*\r
+G36*\r
+X60833D02*Y27178D01*\r
+X62357D01*\r
+Y28702D01*\r
+X60833D01*\r
+G37*\r
+G54D26*X64135Y27940D03*\r
+Y34290D03*\r
+G54D25*G36*\r
+X54546Y34988D02*Y33592D01*\r
+X55944D01*\r
+Y34988D01*\r
+X54546D01*\r
+G37*\r
+G54D26*X45085Y27940D03*\r
+G54D21*Y34290D03*\r
+G54D26*X107950Y69850D03*\r
+G54D25*G36*\r
+X120269Y51816D02*Y49784D01*\r
+X122301D01*\r
+Y51816D01*\r
+X120269D01*\r
+G37*\r
+G54D27*X118745Y50800D03*\r
+X116205D03*\r
+G54D26*X112395Y69850D03*\r
+G54D25*G36*\r
+X155448Y66802D02*Y65278D01*\r
+X156972D01*\r
+Y66802D01*\r
+X155448D01*\r
+G37*\r
+G54D26*X160655Y66675D03*\r
+Y64135D03*\r
+X165735Y69215D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y66675D03*\r
+X163195D03*\r
+Y64135D03*\r
+Y61595D03*\r
+X165735Y64135D03*\r
+Y61595D03*\r
+X160655D03*\r
+Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+Y51435D03*\r
+X146050Y66040D03*\r
+G54D25*G36*\r
+X140843Y66802D02*Y65278D01*\r
+X142367D01*\r
+Y66802D01*\r
+X140843D01*\r
+G37*\r
+G54D26*X131445Y66040D03*\r
+X127000D03*\r
+G54D25*G36*\r
+X86233Y66802D02*Y65278D01*\r
+X87757D01*\r
+Y66802D01*\r
+X86233D01*\r
+G37*\r
+G54D26*X97155Y66040D03*\r
+G54D25*G36*\r
+X110998Y66802D02*Y65278D01*\r
+X112522D01*\r
+Y66802D01*\r
+X110998D01*\r
+G37*\r
+G54D26*X101600Y66040D03*\r
+G54D25*G36*\r
+X116078Y66802D02*Y65278D01*\r
+X117602D01*\r
+Y66802D01*\r
+X116078D01*\r
+G37*\r
+G36*\r
+X155448Y10922D02*Y9398D01*\r
+X156972D01*\r
+Y10922D01*\r
+X155448D01*\r
+G37*\r
+G54D26*X156210Y7620D03*\r
+G54D25*G36*\r
+X155448Y16002D02*Y14478D01*\r
+X156972D01*\r
+Y16002D01*\r
+X155448D01*\r
+G37*\r
+G54D26*X156210Y17780D03*\r
+G54D15*X168275Y8585D03*\r
+Y8255D03*\r
+G54D25*G36*\r
+X149733Y8382D02*Y6858D01*\r
+X151257D01*\r
+Y8382D01*\r
+X149733D01*\r
+G37*\r
+G54D26*X150495Y12700D03*\r
+G54D25*G36*\r
+X139573Y13462D02*Y11938D01*\r
+X141097D01*\r
+Y13462D01*\r
+X139573D01*\r
+G37*\r
+G54D26*X140335Y7620D03*\r
+G54D25*G36*\r
+X145288Y8382D02*Y6858D01*\r
+X146812D01*\r
+Y8382D01*\r
+X145288D01*\r
+G37*\r
+G54D26*X146050Y12700D03*\r
+X165735Y15875D03*\r
+Y13335D03*\r
+X163195Y15875D03*\r
+Y13335D03*\r
+X160655Y15875D03*\r
+Y13335D03*\r
+G54D25*G36*\r
+X139065Y29210D02*Y26670D01*\r
+X141605D01*\r
+Y29210D01*\r
+X139065D01*\r
+G37*\r
+G54D24*X150495Y27940D03*\r
+G54D25*G36*\r
+X139065Y53975D02*Y51435D01*\r
+X141605D01*\r
+Y53975D01*\r
+X139065D01*\r
+G37*\r
+G54D24*X150495Y52705D03*\r
+G54D26*X165735Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X163195Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X165735Y51435D03*\r
+Y48895D03*\r
+Y46355D03*\r
+X163195Y51435D03*\r
+Y48895D03*\r
+X160655D03*\r
+X165735Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+Y43815D03*\r
+X163195D03*\r
+Y46355D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+X160655Y46355D03*\r
+Y43815D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+G54D15*X86360Y43815D03*\r
+G54D20*X92710Y23495D03*\r
+X80010Y33020D03*\r
+X91440Y46355D03*\r
+X89535Y74295D03*\r
+X88900Y73025D03*\r
+X80010Y69850D03*\r
+X82550Y63500D03*\r
+G54D23*X91440Y67945D03*\r
+G54D16*X126365Y10160D03*\r
+Y36195D03*\r
+G54D26*X138430Y15875D03*\r
+G54D16*X94615Y10160D03*\r
+G54D26*X101600Y21590D03*\r
+X97790Y17780D03*\r
+G54D27*X99695Y19685D03*\r
+G54D15*X140335Y43815D03*\r
+G54D29*X156210Y31115D03*\r
+G54D15*Y47625D03*\r
+G54D26*X153670Y15240D03*\r
+G54D27*X140335Y17780D03*\r
+G54D15*X150495Y40005D03*\r
+G54D18*X135255Y4445D03*\r
+G54D15*Y40005D03*\r
+G54D26*X109855Y15240D03*\r
+G54D20*X26035Y71120D03*\r
+G54D26*X38735Y88265D03*\r
+X40640Y85090D03*\r
+G54D20*X26035Y75565D03*\r
+G54D26*X47625Y76835D03*\r
+X40640Y72390D03*\r
+G54D20*X22225Y69850D03*\r
+X23495Y68580D03*\r
+X40640Y56515D03*\r
+G54D26*X38735Y57785D03*\r
+X45085Y62230D03*\r
+X40640D03*\r
+X47625Y59690D03*\r
+G54D20*X53340Y93980D03*\r
+G54D26*X66675Y76835D03*\r
+Y52705D03*\r
+G54D20*X77470Y68580D03*\r
+X72390Y76835D03*\r
+G54D26*X74930Y88900D03*\r
+G54D17*X68580Y66040D03*\r
+G54D26*X60960Y20320D03*\r
+X57150Y24765D03*\r
+X64135Y31750D03*\r
+Y24765D03*\r
+G54D20*X39370Y10795D03*\r
+G54D26*X49530Y7620D03*\r
+G54D20*X52070Y13335D03*\r
+X54610Y12065D03*\r
+X57150Y10795D03*\r
+X39370Y34290D03*\r
+X41910Y13335D03*\r
+G54D16*X48260Y24765D03*\r
+G54D20*X40640Y12065D03*\r
+X71755Y41910D03*\r
+G54D26*X45085Y31750D03*\r
+X55245Y47625D03*\r
+X57150Y29845D03*\r
+X61595Y31750D03*\r
+G54D14*X48260Y34290D03*\r
+G54D26*X52705Y39370D03*\r
+X71120Y81915D03*\r
+G54D20*X62865Y99695D03*\r
+G54D16*X68580Y96520D03*\r
+G54D20*X50800Y66040D03*\r
+Y73025D03*\r
+G54D26*X61595Y62230D03*\r
+G54D20*X57150Y56515D03*\r
+Y60960D03*\r
+G54D26*X66675Y59690D03*\r
+G54D14*X68580Y73025D03*\r
+G54D20*X80010Y67945D03*\r
+X74930Y69850D03*\r
+X100965Y67945D03*\r
+G54D23*X98425D03*\r
+G54D20*X93345Y80645D03*\r
+X91440Y66040D03*\r
+X92710Y64770D03*\r
+G54D16*X91440Y96520D03*\r
+G54D20*X106045Y101600D03*\r
+X89535Y60960D03*\r
+X87630Y67945D03*\r
+X84455Y59690D03*\r
+X78740Y80645D03*\r
+X95885Y75565D03*\r
+G54D26*X76835Y81915D03*\r
+G54D16*X83185Y96520D03*\r
+G54D20*X85090Y94615D03*\r
+X128905Y68580D03*\r
+X125095Y59690D03*\r
+X122555Y66040D03*\r
+X128905Y74930D03*\r
+X150495D03*\r
+X121920Y76200D03*\r
+X112395Y74930D03*\r
+X135255Y89535D03*\r
+X95885Y83185D03*\r
+G54D26*X132080Y86360D03*\r
+G54D20*X94615Y66040D03*\r
+G54D26*X97790Y62230D03*\r
+X131445D03*\r
+G54D20*X139065Y90805D03*\r
+X142875Y88265D03*\r
+X133985Y82550D03*\r
+X135255Y81915D03*\r
+G54D16*X153035Y64135D03*\r
+G54D20*X143510Y63500D03*\r
+X138430Y67310D03*\r
+X141605Y60325D03*\r
+X155575Y81915D03*\r
+G54D26*X156210Y76835D03*\r
+G54D20*X112395Y87630D03*\r
+X121285Y98425D03*\r
+X112395Y99695D03*\r
+X110490Y92710D03*\r
+X108585Y99695D03*\r
+X102235D03*\r
+X106045Y93980D03*\r
+G54D16*X104140Y86360D03*\r
+G54D26*X120015Y62230D03*\r
+G54D20*X107950Y74930D03*\r
+G54D26*X101600Y62230D03*\r
+G54D21*X109855Y57785D03*\r
+G54D20*X121285Y74930D03*\r
+G54D26*X120015Y81915D03*\r
+G54D20*X121285Y77470D03*\r
+G54D26*X116840Y86360D03*\r
+G54D21*G54D22*G54D30*G54D21*G54D30*G54D21*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D30*G54D22*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D27*G54D19*G54D31*G54D19*G54D30*G54D31*G54D30*G54D31*G54D19*G54D32*G54D33*G54D27*G54D32*G54D34*G54D27*G54D15*G54D33*G54D15*G54D30*G54D19*G54D30*G54D19*G54D30*G54D19*G54D30*G54D19*G54D30*G54D19*G54D30*G54D19*G54D31*G54D30*G54D31*G54D30*G54D31*G54D19*G54D31*G54D19*G54D30*G54D31*G54D30*G54D31*G54D30*G54D31*G54D30*G54D19*G54D30*G54D19*G54D30*G54D32*G54D30*G54D19*G54D30*G54D27*G54D31*G54D19*G54D26*G54D19*M02*\r
--- /dev/null
+G04 start of page 6 for group -4062 idx -4062 *\r
+G04 Title: (unknown), soldermask *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNBOTTOMMASK*%\r
+%ADD89C,2.692*%\r
+%ADD88C,1.549*%\r
+%ADD87C,3.708*%\r
+%ADD86C,1.930*%\r
+%ADD85C,1.803*%\r
+%ADD84C,2.184*%\r
+%ADD83C,3.200*%\r
+%ADD82C,1.676*%\r
+%ADD81C,0.002*%\r
+%ADD80C,0.203*%\r
+G54D80*X0Y104140D02*X180340D01*\r
+X0D02*Y0D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+G54D81*G36*\r
+X56312Y85928D02*Y84252D01*\r
+X57988D01*\r
+Y85928D01*\r
+X56312D01*\r
+G37*\r
+G54D82*X59690Y85090D03*\r
+G54D81*G36*\r
+X93777Y85928D02*Y84252D01*\r
+X95453D01*\r
+Y85928D01*\r
+X93777D01*\r
+G37*\r
+G54D82*X97155Y85090D03*\r
+X99695D03*\r
+X102235D03*\r
+X64770Y92710D03*\r
+X62230D03*\r
+X59690D03*\r
+G54D81*G36*\r
+X72822Y92278D02*Y90602D01*\r
+X74498D01*\r
+Y92278D01*\r
+X72822D01*\r
+G37*\r
+G54D82*X71120Y91440D03*\r
+X57150Y92710D03*\r
+G54D81*G36*\r
+X49327Y97358D02*Y95682D01*\r
+X51003D01*\r
+Y97358D01*\r
+X49327D01*\r
+G37*\r
+G54D82*X45085Y96520D03*\r
+G54D81*G36*\r
+X49327Y91643D02*Y89967D01*\r
+X51003D01*\r
+Y91643D01*\r
+X49327D01*\r
+G37*\r
+G54D82*X45085Y90805D03*\r
+G54D81*G36*\r
+X48057Y85928D02*Y84252D01*\r
+X49733D01*\r
+Y85928D01*\r
+X48057D01*\r
+G37*\r
+G54D82*X51435Y85090D03*\r
+G54D81*G36*\r
+X86792Y94818D02*Y93142D01*\r
+X88468D01*\r
+Y94818D01*\r
+X86792D01*\r
+G37*\r
+G54D82*X87630Y83820D03*\r
+X86360Y71120D03*\r
+X88900D03*\r
+Y78740D03*\r
+X86360D03*\r
+G54D81*G36*\r
+X93777Y71958D02*Y70282D01*\r
+X95453D01*\r
+Y71958D01*\r
+X93777D01*\r
+G37*\r
+G54D82*X97155Y71120D03*\r
+X99695D03*\r
+X102235D03*\r
+Y78740D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D81*G36*\r
+X79172Y93548D02*Y91872D01*\r
+X80848D01*\r
+Y93548D01*\r
+X79172D01*\r
+G37*\r
+G54D82*X80010Y90170D03*\r
+G54D81*G36*\r
+X100127Y97358D02*Y95682D01*\r
+X101803D01*\r
+Y97358D01*\r
+X100127D01*\r
+G37*\r
+G54D82*X95885Y96520D03*\r
+X102235Y92710D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D81*G36*\r
+X116002Y94818D02*Y93142D01*\r
+X117678D01*\r
+Y94818D01*\r
+X116002D01*\r
+G37*\r
+G54D82*X107950Y93980D03*\r
+G54D81*G36*\r
+X128067Y97358D02*Y95682D01*\r
+X129743D01*\r
+Y97358D01*\r
+X128067D01*\r
+G37*\r
+G54D82*X123825Y96520D03*\r
+X112395Y93980D03*\r
+X130175Y92710D03*\r
+G54D81*G36*\r
+X134417Y94818D02*Y93142D01*\r
+X136093D01*\r
+Y94818D01*\r
+X134417D01*\r
+G37*\r
+G54D82*X127635Y92710D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D81*G36*\r
+X107112Y80848D02*Y79172D01*\r
+X108788D01*\r
+Y80848D01*\r
+X107112D01*\r
+G37*\r
+G54D82*X116840Y83820D03*\r
+G54D81*G36*\r
+X107112Y84658D02*Y82982D01*\r
+X108788D01*\r
+Y84658D01*\r
+X107112D01*\r
+G37*\r
+G36*\r
+X111557Y80848D02*Y79172D01*\r
+X113233D01*\r
+Y80848D01*\r
+X111557D01*\r
+G37*\r
+G36*\r
+X116002Y73228D02*Y71552D01*\r
+X117678D01*\r
+Y73228D01*\r
+X116002D01*\r
+G37*\r
+G54D82*X116840Y77470D03*\r
+G54D81*G36*\r
+X121717Y71958D02*Y70282D01*\r
+X123393D01*\r
+Y71958D01*\r
+X121717D01*\r
+G37*\r
+G54D82*X125095Y71120D03*\r
+X127635D03*\r
+X130175D03*\r
+X132715D03*\r
+X135255D03*\r
+X137795D03*\r
+X140335D03*\r
+X142875D03*\r
+X145415D03*\r
+X147955D03*\r
+Y78740D03*\r
+X145415D03*\r
+X142875D03*\r
+X140335D03*\r
+X137795D03*\r
+X135255D03*\r
+X132715D03*\r
+X130175D03*\r
+X127635D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D81*G36*\r
+X138227Y84658D02*Y82982D01*\r
+X139903D01*\r
+Y84658D01*\r
+X138227D01*\r
+G37*\r
+G54D82*X130175Y85090D03*\r
+X135255Y83820D03*\r
+G54D81*G36*\r
+X111557Y84658D02*Y82982D01*\r
+X113233D01*\r
+Y84658D01*\r
+X111557D01*\r
+G37*\r
+G36*\r
+X121717Y85928D02*Y84252D01*\r
+X123393D01*\r
+Y85928D01*\r
+X121717D01*\r
+G37*\r
+G54D82*X125095Y85090D03*\r
+X127635D03*\r
+G54D83*X168275Y97155D03*\r
+D03*\r
+G54D81*G36*\r
+X164897Y92913D02*Y91237D01*\r
+X166573D01*\r
+Y92913D01*\r
+X164897D01*\r
+G37*\r
+G54D82*X163195Y92075D03*\r
+X165735Y89535D03*\r
+Y86995D03*\r
+X163195Y89535D03*\r
+Y86995D03*\r
+X160655Y92075D03*\r
+Y89535D03*\r
+Y86995D03*\r
+X150495Y71120D03*\r
+Y78740D03*\r
+X153035Y71120D03*\r
+X155575D03*\r
+Y78740D03*\r
+X153035D03*\r
+X165735Y79375D03*\r
+Y76835D03*\r
+Y74295D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y71755D03*\r
+X163195D03*\r
+X160655D03*\r
+X163195Y79375D03*\r
+Y76835D03*\r
+X160655Y79375D03*\r
+Y76835D03*\r
+X139065Y93980D03*\r
+X142875D03*\r
+G54D81*G36*\r
+X153467Y97358D02*Y95682D01*\r
+X155143D01*\r
+Y97358D01*\r
+X153467D01*\r
+G37*\r
+G54D82*X149225Y96520D03*\r
+X155575Y92710D03*\r
+X153035D03*\r
+X150495D03*\r
+X147955D03*\r
+G54D81*G36*\r
+X142037Y84658D02*Y82982D01*\r
+X143713D01*\r
+Y84658D01*\r
+X142037D01*\r
+G37*\r
+G36*\r
+X147117Y85928D02*Y84252D01*\r
+X148793D01*\r
+Y85928D01*\r
+X147117D01*\r
+G37*\r
+G54D82*X150495Y85090D03*\r
+X153035D03*\r
+X155575D03*\r
+X165735Y84455D03*\r
+Y81915D03*\r
+X163195Y84455D03*\r
+Y81915D03*\r
+X160655Y84455D03*\r
+Y81915D03*\r
+G54D81*G36*\r
+X120193Y13792D02*Y11608D01*\r
+X122377D01*\r
+Y13792D01*\r
+X120193D01*\r
+G37*\r
+G54D84*X118745Y12700D03*\r
+X116205D03*\r
+G54D81*G36*\r
+X87808Y13792D02*Y11608D01*\r
+X89992D01*\r
+Y13792D01*\r
+X87808D01*\r
+G37*\r
+G54D84*X86360Y12700D03*\r
+X83820D03*\r
+G54D81*G36*\r
+X120193Y32842D02*Y30658D01*\r
+X122377D01*\r
+Y32842D01*\r
+X120193D01*\r
+G37*\r
+G54D84*X118745Y31750D03*\r
+X116205D03*\r
+G54D81*G36*\r
+X87808Y32842D02*Y30658D01*\r
+X89992D01*\r
+Y32842D01*\r
+X87808D01*\r
+G37*\r
+G54D84*X86360Y31750D03*\r
+X83820D03*\r
+G54D81*G36*\r
+X87808Y51892D02*Y49708D01*\r
+X89992D01*\r
+Y51892D01*\r
+X87808D01*\r
+G37*\r
+G54D84*X86360Y50800D03*\r
+X83820D03*\r
+G54D81*G36*\r
+X14973Y30747D02*Y28943D01*\r
+X16777D01*\r
+Y30747D01*\r
+X14973D01*\r
+G37*\r
+G54D85*X15875Y32385D03*\r
+G54D81*G36*\r
+X14973Y40272D02*Y38468D01*\r
+X16777D01*\r
+Y40272D01*\r
+X14973D01*\r
+G37*\r
+G54D85*X15875Y41910D03*\r
+G54D83*X14605Y8585D03*\r
+G54D81*G36*\r
+X13132Y23698D02*Y22022D01*\r
+X14808D01*\r
+Y23698D01*\r
+X13132D01*\r
+G37*\r
+G54D82*X13970Y18364D03*\r
+G54D86*X16459Y17094D03*\r
+Y24105D03*\r
+G54D83*X14605Y97155D03*\r
+G54D87*X19050Y84963D03*\r
+G54D81*G36*\r
+X14973Y49797D02*Y47993D01*\r
+X16777D01*\r
+Y49797D01*\r
+X14973D01*\r
+G37*\r
+G54D85*X15875Y51435D03*\r
+G54D87*X19050Y60173D03*\r
+G54D81*G36*\r
+X19482Y78943D02*Y77267D01*\r
+X21158D01*\r
+Y78943D01*\r
+X19482D01*\r
+G37*\r
+G54D82*X17780Y76733D03*\r
+X20320Y75336D03*\r
+X17780Y73965D03*\r
+X20320Y72568D03*\r
+X17780Y71196D03*\r
+X20320Y69799D03*\r
+Y67031D03*\r
+X17780Y68428D03*\r
+G54D81*G36*\r
+X54407Y60528D02*Y58852D01*\r
+X56083D01*\r
+Y60528D01*\r
+X54407D01*\r
+G37*\r
+G36*\r
+X54470Y66815D02*Y65265D01*\r
+X56020D01*\r
+Y66815D01*\r
+X54470D01*\r
+G37*\r
+G36*\r
+Y45225D02*Y43675D01*\r
+X56020D01*\r
+Y45225D01*\r
+X54470D01*\r
+G37*\r
+G54D82*X55245Y39370D03*\r
+X45085Y59690D03*\r
+G54D88*Y66040D03*\r
+Y44450D03*\r
+G54D81*G36*\r
+X44247Y40208D02*Y38532D01*\r
+X45923D01*\r
+Y40208D01*\r
+X44247D01*\r
+G37*\r
+G36*\r
+X60757Y66878D02*Y65202D01*\r
+X62433D01*\r
+Y66878D01*\r
+X60757D01*\r
+G37*\r
+G36*\r
+Y60528D02*Y58852D01*\r
+X62433D01*\r
+Y60528D01*\r
+X60757D01*\r
+G37*\r
+G54D82*X64135Y59690D03*\r
+Y66040D03*\r
+G54D81*G36*\r
+X80442Y66878D02*Y65202D01*\r
+X82118D01*\r
+Y66878D01*\r
+X80442D01*\r
+G37*\r
+G54D82*X78740Y66040D03*\r
+G54D81*G36*\r
+X58217Y50368D02*Y48692D01*\r
+X59893D01*\r
+Y50368D01*\r
+X58217D01*\r
+G37*\r
+G54D88*X59055Y44450D03*\r
+G54D81*G36*\r
+X58217Y40208D02*Y38532D01*\r
+X59893D01*\r
+Y40208D01*\r
+X58217D01*\r
+G37*\r
+G36*\r
+X58280Y55385D02*Y53835D01*\r
+X59830D01*\r
+Y55385D01*\r
+X58280D01*\r
+G37*\r
+G54D82*X69215Y49530D03*\r
+G54D81*G36*\r
+X68440Y45225D02*Y43675D01*\r
+X69990D01*\r
+Y45225D01*\r
+X68440D01*\r
+G37*\r
+G54D82*X69215Y39370D03*\r
+G54D88*Y54610D03*\r
+G54D81*G36*\r
+X48692Y16078D02*Y14402D01*\r
+X50368D01*\r
+Y16078D01*\r
+X48692D01*\r
+G37*\r
+G54D82*X52070Y15240D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X62230D03*\r
+X64770D03*\r
+Y22860D03*\r
+X62230D03*\r
+G54D81*G36*\r
+X70282Y85928D02*Y84252D01*\r
+X71958D01*\r
+Y85928D01*\r
+X70282D01*\r
+G37*\r
+G54D82*X73660Y85090D03*\r
+X62230D03*\r
+X64770D03*\r
+X83820Y71120D03*\r
+Y78740D03*\r
+X81280D03*\r
+X78740D03*\r
+X76200D03*\r
+X73660D03*\r
+G54D81*G36*\r
+X62662Y97358D02*Y95682D01*\r
+X64338D01*\r
+Y97358D01*\r
+X62662D01*\r
+G37*\r
+G54D82*X58420Y96520D03*\r
+G54D81*G36*\r
+X77902Y85928D02*Y84252D01*\r
+X79578D01*\r
+Y85928D01*\r
+X77902D01*\r
+G37*\r
+G54D82*X81280Y85090D03*\r
+G54D81*G36*\r
+X44247Y78308D02*Y76632D01*\r
+X45923D01*\r
+Y78308D01*\r
+X44247D01*\r
+G37*\r
+G54D82*X45085Y72390D03*\r
+G54D81*G36*\r
+X48692Y71958D02*Y70282D01*\r
+X50368D01*\r
+Y71958D01*\r
+X48692D01*\r
+G37*\r
+G54D82*X52070Y71120D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X54610Y78740D03*\r
+G54D81*G36*\r
+X44310Y55385D02*Y53835D01*\r
+X45860D01*\r
+Y55385D01*\r
+X44310D01*\r
+G37*\r
+G54D82*X52070Y78740D03*\r
+X49530D03*\r
+G54D88*X55245Y54610D03*\r
+G54D81*G36*\r
+X72187Y66878D02*Y65202D01*\r
+X73863D01*\r
+Y66878D01*\r
+X72187D01*\r
+G37*\r
+G54D82*X70485Y66040D03*\r
+G54D81*G36*\r
+X70282Y71958D02*Y70282D01*\r
+X71958D01*\r
+Y71958D01*\r
+X70282D01*\r
+G37*\r
+G54D82*X73660Y71120D03*\r
+X76200D03*\r
+X78740D03*\r
+X81280D03*\r
+X62230D03*\r
+X64770D03*\r
+X71120Y78740D03*\r
+X64770D03*\r
+X62230D03*\r
+X59690D03*\r
+Y22860D03*\r
+G54D81*G36*\r
+X60757Y35128D02*Y33452D01*\r
+X62433D01*\r
+Y35128D01*\r
+X60757D01*\r
+G37*\r
+G54D82*X57150Y78740D03*\r
+Y22860D03*\r
+G54D81*G36*\r
+X44247Y50368D02*Y48692D01*\r
+X45923D01*\r
+Y50368D01*\r
+X44247D01*\r
+G37*\r
+G54D82*X55245Y49530D03*\r
+X54610Y22860D03*\r
+X52070D03*\r
+X49530D03*\r
+G54D81*G36*\r
+X44247Y22428D02*Y20752D01*\r
+X45923D01*\r
+Y22428D01*\r
+X44247D01*\r
+G37*\r
+G54D82*X45085Y16510D03*\r
+G54D81*G36*\r
+X54407Y28778D02*Y27102D01*\r
+X56083D01*\r
+Y28778D01*\r
+X54407D01*\r
+G37*\r
+G36*\r
+X60757D02*Y27102D01*\r
+X62433D01*\r
+Y28778D01*\r
+X60757D01*\r
+G37*\r
+G54D82*X64135Y27940D03*\r
+Y34290D03*\r
+G54D81*G36*\r
+X54470Y35065D02*Y33515D01*\r
+X56020D01*\r
+Y35065D01*\r
+X54470D01*\r
+G37*\r
+G54D82*X45085Y27940D03*\r
+G54D88*Y34290D03*\r
+G54D82*X107950Y69850D03*\r
+G54D81*G36*\r
+X120193Y51892D02*Y49708D01*\r
+X122377D01*\r
+Y51892D01*\r
+X120193D01*\r
+G37*\r
+G54D84*X118745Y50800D03*\r
+X116205D03*\r
+G54D82*X112395Y69850D03*\r
+G54D81*G36*\r
+X155372Y66878D02*Y65202D01*\r
+X157048D01*\r
+Y66878D01*\r
+X155372D01*\r
+G37*\r
+G54D82*X160655Y66675D03*\r
+Y64135D03*\r
+X165735Y69215D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y66675D03*\r
+X163195D03*\r
+Y64135D03*\r
+Y61595D03*\r
+X165735Y64135D03*\r
+Y61595D03*\r
+X160655D03*\r
+Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+Y51435D03*\r
+X146050Y66040D03*\r
+G54D81*G36*\r
+X140767Y66878D02*Y65202D01*\r
+X142443D01*\r
+Y66878D01*\r
+X140767D01*\r
+G37*\r
+G54D82*X131445Y66040D03*\r
+X127000D03*\r
+G54D81*G36*\r
+X86157Y66878D02*Y65202D01*\r
+X87833D01*\r
+Y66878D01*\r
+X86157D01*\r
+G37*\r
+G54D82*X97155Y66040D03*\r
+G54D81*G36*\r
+X110922Y66878D02*Y65202D01*\r
+X112598D01*\r
+Y66878D01*\r
+X110922D01*\r
+G37*\r
+G54D82*X101600Y66040D03*\r
+G54D81*G36*\r
+X116002Y66878D02*Y65202D01*\r
+X117678D01*\r
+Y66878D01*\r
+X116002D01*\r
+G37*\r
+G36*\r
+X155372Y10998D02*Y9322D01*\r
+X157048D01*\r
+Y10998D01*\r
+X155372D01*\r
+G37*\r
+G54D82*X156210Y7620D03*\r
+G54D81*G36*\r
+X155372Y16078D02*Y14402D01*\r
+X157048D01*\r
+Y16078D01*\r
+X155372D01*\r
+G37*\r
+G54D82*X156210Y17780D03*\r
+G54D83*X168275Y8585D03*\r
+Y8255D03*\r
+G54D81*G36*\r
+X149657Y8458D02*Y6782D01*\r
+X151333D01*\r
+Y8458D01*\r
+X149657D01*\r
+G37*\r
+G54D82*X150495Y12700D03*\r
+G54D81*G36*\r
+X139497Y13538D02*Y11862D01*\r
+X141173D01*\r
+Y13538D01*\r
+X139497D01*\r
+G37*\r
+G54D82*X140335Y7620D03*\r
+G54D81*G36*\r
+X145212Y8458D02*Y6782D01*\r
+X146888D01*\r
+Y8458D01*\r
+X145212D01*\r
+G37*\r
+G54D82*X146050Y12700D03*\r
+X165735Y15875D03*\r
+Y13335D03*\r
+X163195Y15875D03*\r
+Y13335D03*\r
+X160655Y15875D03*\r
+Y13335D03*\r
+G54D81*G36*\r
+X138989Y29286D02*Y26594D01*\r
+X141681D01*\r
+Y29286D01*\r
+X138989D01*\r
+G37*\r
+G54D89*X150495Y27940D03*\r
+G54D81*G36*\r
+X138989Y54051D02*Y51359D01*\r
+X141681D01*\r
+Y54051D01*\r
+X138989D01*\r
+G37*\r
+G54D89*X150495Y52705D03*\r
+G54D82*X165735Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X163195Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X165735Y51435D03*\r
+Y48895D03*\r
+Y46355D03*\r
+X163195Y51435D03*\r
+Y48895D03*\r
+X160655D03*\r
+X165735Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+Y43815D03*\r
+X163195D03*\r
+Y46355D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+X160655Y46355D03*\r
+Y43815D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+M02*\r
--- /dev/null
+G04 start of page 10 for group -4014 idx -4014 *\r
+G04 Title: (unknown), bottompaste *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNBOTTOMPASTE*%\r
+%ADD11C,0.0100*%\r
+M02*\r
--- /dev/null
+G04 start of page 8 for group -4078 idx -4078 *\r
+G04 Title: (unknown), bottomsilk *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNBOTTOMSILK*%\r
+%ADD94C,0.203*%\r
+G54D94*X0Y104140D02*X180340D01*\r
+X0D02*Y0D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+M02*\r
G04 start of page 11 for group -3984 idx -3984 *\r
G04 Title: (unknown), fab *\r
-G04 Creator: pcb 20100929 *\r
-G04 CreationDate: Thu 16 Dec 2010 04:58:02 PM GMT UTC *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
G04 For: fetter *\r
G04 Format: Gerber/RS-274X *\r
-G04 PCB-Dimensions: 710000 410000 *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
G04 PCB-Coordinate-Origin: lower left *\r
-%MOIN*%\r
-%FSLAX25Y25*%\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
%LNFAB*%\r
-%ADD11C,0.0100*%\r
-%ADD24C,0.0080*%\r
-%ADD42C,0.0060*%\r
-G54D24*X75000Y334500D02*Y329700D01*\r
-Y334500D02*X79160Y336900D01*\r
-X75000Y334500D02*X70840Y336900D01*\r
-X73400Y334500D02*G75*G03X76600Y334500I1600J0D01*G01*\r
-G75*G03X73400Y334500I-1600J0D01*G01*\r
-X71800D02*G75*G03X78200Y334500I3200J0D01*G01*\r
-G75*G03X71800Y334500I-3200J0D01*G01*\r
-X75000Y236900D02*Y232100D01*\r
-Y236900D02*X79160Y239300D01*\r
-X75000Y236900D02*X70840Y239300D01*\r
-X73400Y236900D02*G75*G03X76600Y236900I1600J0D01*G01*\r
-G75*G03X73400Y236900I-1600J0D01*G01*\r
-X71800D02*G75*G03X78200Y236900I3200J0D01*G01*\r
-G75*G03X71800Y236900I-3200J0D01*G01*\r
-X15000Y421250D02*Y416450D01*\r
-Y421250D02*X19160Y423650D01*\r
-X15000Y421250D02*X10840Y423650D01*\r
-X13400Y421250D02*G75*G03X16600Y421250I1600J0D01*G01*\r
-G75*G03X13400Y421250I-1600J0D01*G01*\r
-X11800D02*G75*G03X18200Y421250I3200J0D01*G01*\r
-G75*G03X11800Y421250I-3200J0D01*G01*\r
-G54D42*X135000Y423500D02*Y422750D01*\r
-X136500Y421250D01*\r
-X138000Y422750D01*\r
-Y423500D02*Y422750D01*\r
-X136500Y421250D02*Y417500D01*\r
-X139801Y420500D02*X142051D01*\r
-X139801Y417500D02*X142801D01*\r
-X139801Y423500D02*Y417500D01*\r
-Y423500D02*X142801D01*\r
-X147603D02*X148353Y422750D01*\r
-X145353Y423500D02*X147603D01*\r
-X144603Y422750D02*X145353Y423500D01*\r
-X144603Y422750D02*Y421250D01*\r
-X145353Y420500D01*\r
-X147603D01*\r
-X148353Y419750D01*\r
-Y418250D01*\r
-X147603Y417500D02*X148353Y418250D01*\r
-X145353Y417500D02*X147603D01*\r
-X144603Y418250D02*X145353Y417500D01*\r
-X135000Y414249D02*X150154D01*\r
-X98000Y422750D02*X98750Y423500D01*\r
-X101000D01*\r
-X101750Y422750D01*\r
-Y421250D01*\r
-X98000Y417500D02*X101750Y421250D01*\r
-X98000Y417500D02*X101750D01*\r
-X98000Y414249D02*X103551D01*\r
-X45000Y418250D02*X45750Y417500D01*\r
-X45000Y422750D02*Y418250D01*\r
-Y422750D02*X45750Y423500D01*\r
-X47250D01*\r
-X48000Y422750D01*\r
-Y418250D01*\r
-X47250Y417500D02*X48000Y418250D01*\r
-X45750Y417500D02*X47250D01*\r
-X45000Y419000D02*X48000Y422000D01*\r
-X49801Y417500D02*X50551D01*\r
-X53103D02*X54603D01*\r
-X53853Y423500D02*Y417500D01*\r
-X52353Y422000D02*X53853Y423500D01*\r
-X56404Y422750D02*X57154Y423500D01*\r
-X59404D01*\r
-X60154Y422750D01*\r
-Y421250D01*\r
-X56404Y417500D02*X60154Y421250D01*\r
-X56404Y417500D02*X60154D01*\r
-X61956Y418250D02*X62706Y417500D01*\r
-X61956Y422750D02*Y418250D01*\r
-Y422750D02*X62706Y423500D01*\r
-X64206D01*\r
-X64956Y422750D01*\r
-Y418250D01*\r
-X64206Y417500D02*X64956Y418250D01*\r
-X62706Y417500D02*X64206D01*\r
-X61956Y419000D02*X64956Y422000D01*\r
-X45000Y414249D02*X66757D01*\r
-X660900Y34100D02*X664100D01*\r
-X660900D02*Y30900D01*\r
-X664100D01*\r
-Y34100D02*Y30900D01*\r
-X659300Y35700D02*X665700D01*\r
-X659300D02*Y29300D01*\r
-X665700D01*\r
-Y35700D02*Y29300D01*\r
-X660900Y384100D02*X664100D01*\r
-X660900D02*Y380900D01*\r
-X664100D01*\r
-Y384100D02*Y380900D01*\r
-X659300Y385700D02*X665700D01*\r
-X659300D02*Y379300D01*\r
-X665700D01*\r
-Y385700D02*Y379300D01*\r
-X55900Y384100D02*X59100D01*\r
-X55900D02*Y380900D01*\r
-X59100D01*\r
-Y384100D02*Y380900D01*\r
-X54300Y385700D02*X60700D01*\r
-X54300D02*Y379300D01*\r
-X60700D01*\r
-Y385700D02*Y379300D01*\r
-X55900Y35400D02*X59100D01*\r
-X55900D02*Y32200D01*\r
-X59100D01*\r
-Y35400D02*Y32200D01*\r
-X54300Y37000D02*X60700D01*\r
-X54300D02*Y30600D01*\r
-X60700D01*\r
-Y37000D02*Y30600D01*\r
-X660900Y384100D02*X664100D01*\r
-X660900D02*Y380900D01*\r
-X664100D01*\r
-Y384100D02*Y380900D01*\r
-X659300Y385700D02*X665700D01*\r
-X659300D02*Y379300D01*\r
-X665700D01*\r
-Y385700D02*Y379300D01*\r
-X660900Y35400D02*X664100D01*\r
-X660900D02*Y32200D01*\r
-X664100D01*\r
-Y35400D02*Y32200D01*\r
-X659300Y37000D02*X665700D01*\r
-X659300D02*Y30600D01*\r
-X665700D01*\r
-Y37000D02*Y30600D01*\r
-X13400Y437850D02*X16600D01*\r
-X13400D02*Y434650D01*\r
-X16600D01*\r
-Y437850D02*Y434650D01*\r
-X11800Y439450D02*X18200D01*\r
-X11800D02*Y433050D01*\r
-X18200D01*\r
-Y439450D02*Y433050D01*\r
-X135000Y438500D02*Y437750D01*\r
-X136500Y436250D01*\r
-X138000Y437750D01*\r
-Y438500D02*Y437750D01*\r
-X136500Y436250D02*Y432500D01*\r
-X139801Y435500D02*X142051D01*\r
-X139801Y432500D02*X142801D01*\r
-X139801Y438500D02*Y432500D01*\r
-Y438500D02*X142801D01*\r
-X147603D02*X148353Y437750D01*\r
-X145353Y438500D02*X147603D01*\r
-X144603Y437750D02*X145353Y438500D01*\r
-X144603Y437750D02*Y436250D01*\r
-X145353Y435500D01*\r
-X147603D01*\r
-X148353Y434750D01*\r
-Y433250D01*\r
-X147603Y432500D02*X148353Y433250D01*\r
-X145353Y432500D02*X147603D01*\r
-X144603Y433250D02*X145353Y432500D01*\r
-X135000Y429249D02*X150154D01*\r
-X100250Y438500D02*X101000Y437750D01*\r
-X98750Y438500D02*X100250D01*\r
-X98000Y437750D02*X98750Y438500D01*\r
-X98000Y437750D02*Y433250D01*\r
-X98750Y432500D01*\r
-X100250Y435500D02*X101000Y434750D01*\r
-X98000Y435500D02*X100250D01*\r
-X98750Y432500D02*X100250D01*\r
-X101000Y433250D01*\r
-Y434750D02*Y433250D01*\r
-X98000Y429249D02*X102801D01*\r
-X45000Y433250D02*X45750Y432500D01*\r
-X45000Y437750D02*Y433250D01*\r
-Y437750D02*X45750Y438500D01*\r
-X47250D01*\r
-X48000Y437750D01*\r
-Y433250D01*\r
-X47250Y432500D02*X48000Y433250D01*\r
-X45750Y432500D02*X47250D01*\r
-X45000Y434000D02*X48000Y437000D01*\r
-X49801Y432500D02*X50551D01*\r
-X52353Y433250D02*X53103Y432500D01*\r
-X52353Y437750D02*Y433250D01*\r
-Y437750D02*X53103Y438500D01*\r
-X54603D01*\r
-X55353Y437750D01*\r
-Y433250D01*\r
-X54603Y432500D02*X55353Y433250D01*\r
-X53103Y432500D02*X54603D01*\r
-X52353Y434000D02*X55353Y437000D01*\r
-X57154Y433250D02*X57904Y432500D01*\r
-X57154Y434750D02*Y433250D01*\r
-Y434750D02*X57904Y435500D01*\r
-X59404D01*\r
-X60154Y434750D01*\r
-Y433250D01*\r
-X59404Y432500D02*X60154Y433250D01*\r
-X57904Y432500D02*X59404D01*\r
-X57154Y436250D02*X57904Y435500D01*\r
-X57154Y437750D02*Y436250D01*\r
-Y437750D02*X57904Y438500D01*\r
-X59404D01*\r
-X60154Y437750D01*\r
-Y436250D01*\r
-X59404Y435500D02*X60154Y436250D01*\r
-X61956Y433250D02*X62706Y432500D01*\r
-X61956Y437750D02*Y433250D01*\r
-Y437750D02*X62706Y438500D01*\r
-X64206D01*\r
-X64956Y437750D01*\r
-Y433250D01*\r
-X64206Y432500D02*X64956Y433250D01*\r
-X62706Y432500D02*X64206D01*\r
-X61956Y434000D02*X64956Y437000D01*\r
-X45000Y429249D02*X66757D01*\r
-X551700Y207500D02*G75*G03X553300Y207500I800J0D01*G01*\r
-G75*G03X551700Y207500I-800J0D01*G01*\r
-X550100D02*G75*G03X554900Y207500I2400J0D01*G01*\r
-G75*G03X550100Y207500I-2400J0D01*G01*\r
-X591700D02*G75*G03X593300Y207500I800J0D01*G01*\r
-G75*G03X591700Y207500I-800J0D01*G01*\r
-X590100D02*G75*G03X594900Y207500I2400J0D01*G01*\r
-G75*G03X590100Y207500I-2400J0D01*G01*\r
-X551700Y110000D02*G75*G03X553300Y110000I800J0D01*G01*\r
-G75*G03X551700Y110000I-800J0D01*G01*\r
-X550100D02*G75*G03X554900Y110000I2400J0D01*G01*\r
-G75*G03X550100Y110000I-2400J0D01*G01*\r
-X591700D02*G75*G03X593300Y110000I800J0D01*G01*\r
-G75*G03X591700Y110000I-800J0D01*G01*\r
-X590100D02*G75*G03X594900Y110000I2400J0D01*G01*\r
-G75*G03X590100Y110000I-2400J0D01*G01*\r
-X14200Y451250D02*G75*G03X15800Y451250I800J0D01*G01*\r
-G75*G03X14200Y451250I-800J0D01*G01*\r
-X12600D02*G75*G03X17400Y451250I2400J0D01*G01*\r
-G75*G03X12600Y451250I-2400J0D01*G01*\r
-X135000Y453500D02*Y452750D01*\r
-X136500Y451250D01*\r
-X138000Y452750D01*\r
-Y453500D02*Y452750D01*\r
-X136500Y451250D02*Y447500D01*\r
-X139801Y450500D02*X142051D01*\r
-X139801Y447500D02*X142801D01*\r
-X139801Y453500D02*Y447500D01*\r
-Y453500D02*X142801D01*\r
-X147603D02*X148353Y452750D01*\r
-X145353Y453500D02*X147603D01*\r
-X144603Y452750D02*X145353Y453500D01*\r
-X144603Y452750D02*Y451250D01*\r
-X145353Y450500D01*\r
-X147603D01*\r
-X148353Y449750D01*\r
-Y448250D01*\r
-X147603Y447500D02*X148353Y448250D01*\r
-X145353Y447500D02*X147603D01*\r
-X144603Y448250D02*X145353Y447500D01*\r
-X135000Y444249D02*X150154D01*\r
-X98000Y450500D02*X101000Y453500D01*\r
-X98000Y450500D02*X101750D01*\r
-X101000Y453500D02*Y447500D01*\r
-X98000Y444249D02*X103551D01*\r
-X45000Y448250D02*X45750Y447500D01*\r
-X45000Y452750D02*Y448250D01*\r
-Y452750D02*X45750Y453500D01*\r
-X47250D01*\r
-X48000Y452750D01*\r
-Y448250D01*\r
-X47250Y447500D02*X48000Y448250D01*\r
-X45750Y447500D02*X47250D01*\r
-X45000Y449000D02*X48000Y452000D01*\r
-X49801Y447500D02*X50551D01*\r
-X52353Y448250D02*X53103Y447500D01*\r
-X52353Y452750D02*Y448250D01*\r
-Y452750D02*X53103Y453500D01*\r
-X54603D01*\r
-X55353Y452750D01*\r
-Y448250D01*\r
-X54603Y447500D02*X55353Y448250D01*\r
-X53103Y447500D02*X54603D01*\r
-X52353Y449000D02*X55353Y452000D01*\r
-X59404Y453500D02*X60154Y452750D01*\r
-X57904Y453500D02*X59404D01*\r
-X57154Y452750D02*X57904Y453500D01*\r
-X57154Y452750D02*Y448250D01*\r
-X57904Y447500D01*\r
-X59404Y450500D02*X60154Y449750D01*\r
-X57154Y450500D02*X59404D01*\r
-X57904Y447500D02*X59404D01*\r
-X60154Y448250D01*\r
-Y449750D02*Y448250D01*\r
-X61956D02*X62706Y447500D01*\r
-X61956Y452750D02*Y448250D01*\r
-Y452750D02*X62706Y453500D01*\r
-X64206D01*\r
-X64956Y452750D01*\r
-Y448250D01*\r
-X64206Y447500D02*X64956Y448250D01*\r
-X62706Y447500D02*X64206D01*\r
-X61956Y449000D02*X64956Y452000D01*\r
-X45000Y444249D02*X66757D01*\r
-X337600Y174900D02*X342400Y170100D01*\r
-X337600D02*X342400Y174900D01*\r
-X338400Y174100D02*X341600D01*\r
-X338400D02*Y170900D01*\r
-X341600D01*\r
-Y174100D02*Y170900D01*\r
-X550100Y174900D02*X554900Y170100D01*\r
-X550100D02*X554900Y174900D01*\r
-X550900Y174100D02*X554100D01*\r
-X550900D02*Y170900D01*\r
-X554100D01*\r
-Y174100D02*Y170900D01*\r
-X612600Y124900D02*X617400Y120100D01*\r
-X612600D02*X617400Y124900D01*\r
-X613400Y124100D02*X616600D01*\r
-X613400D02*Y120900D01*\r
-X616600D01*\r
-Y124100D02*Y120900D01*\r
-X612600Y189900D02*X617400Y185100D01*\r
-X612600D02*X617400Y189900D01*\r
-X613400Y189100D02*X616600D01*\r
-X613400D02*Y185900D01*\r
-X616600D01*\r
-Y189100D02*Y185900D01*\r
-X590100Y159900D02*X594900Y155100D01*\r
-X590100D02*X594900Y159900D01*\r
-X590900Y159100D02*X594100D01*\r
-X590900D02*Y155900D01*\r
-X594100D01*\r
-Y159100D02*Y155900D01*\r
-X530100Y19900D02*X534900Y15100D01*\r
-X530100D02*X534900Y19900D01*\r
-X530900Y19100D02*X534100D01*\r
-X530900D02*Y15900D01*\r
-X534100D01*\r
-Y19100D02*Y15900D01*\r
-X530100Y159900D02*X534900Y155100D01*\r
-X530100D02*X534900Y159900D01*\r
-X530900Y159100D02*X534100D01*\r
-X530900D02*Y155900D01*\r
-X534100D01*\r
-Y159100D02*Y155900D01*\r
-X12600Y468650D02*X17400Y463850D01*\r
-X12600D02*X17400Y468650D01*\r
-X13400Y467850D02*X16600D01*\r
-X13400D02*Y464650D01*\r
-X16600D01*\r
-Y467850D02*Y464650D01*\r
-X135000Y468500D02*Y467750D01*\r
-X136500Y466250D01*\r
-X138000Y467750D01*\r
-Y468500D02*Y467750D01*\r
-X136500Y466250D02*Y462500D01*\r
-X139801Y465500D02*X142051D01*\r
-X139801Y462500D02*X142801D01*\r
-X139801Y468500D02*Y462500D01*\r
-Y468500D02*X142801D01*\r
-X147603D02*X148353Y467750D01*\r
-X145353Y468500D02*X147603D01*\r
-X144603Y467750D02*X145353Y468500D01*\r
-X144603Y467750D02*Y466250D01*\r
-X145353Y465500D01*\r
-X147603D01*\r
-X148353Y464750D01*\r
-Y463250D01*\r
-X147603Y462500D02*X148353Y463250D01*\r
-X145353Y462500D02*X147603D01*\r
-X144603Y463250D02*X145353Y462500D01*\r
-X135000Y459249D02*X150154D01*\r
-X98000Y462500D02*X101750Y466250D01*\r
-Y468500D02*Y466250D01*\r
-X98000Y468500D02*X101750D01*\r
-X98000Y459249D02*X103551D01*\r
-X45000Y463250D02*X45750Y462500D01*\r
-X45000Y467750D02*Y463250D01*\r
-Y467750D02*X45750Y468500D01*\r
-X47250D01*\r
-X48000Y467750D01*\r
-Y463250D01*\r
-X47250Y462500D02*X48000Y463250D01*\r
-X45750Y462500D02*X47250D01*\r
-X45000Y464000D02*X48000Y467000D01*\r
-X49801Y462500D02*X50551D01*\r
-X52353Y463250D02*X53103Y462500D01*\r
-X52353Y467750D02*Y463250D01*\r
-Y467750D02*X53103Y468500D01*\r
-X54603D01*\r
-X55353Y467750D01*\r
-Y463250D01*\r
-X54603Y462500D02*X55353Y463250D01*\r
-X53103Y462500D02*X54603D01*\r
-X52353Y464000D02*X55353Y467000D01*\r
-X57154Y468500D02*X60154D01*\r
-X57154D02*Y465500D01*\r
-X57904Y466250D01*\r
-X59404D01*\r
-X60154Y465500D01*\r
-Y463250D01*\r
-X59404Y462500D02*X60154Y463250D01*\r
-X57904Y462500D02*X59404D01*\r
-X57154Y463250D02*X57904Y462500D01*\r
-X61956Y468500D02*X64956D01*\r
-X61956D02*Y465500D01*\r
-X62706Y466250D01*\r
-X64206D01*\r
-X64956Y465500D01*\r
-Y463250D01*\r
-X64206Y462500D02*X64956Y463250D01*\r
-X62706Y462500D02*X64206D01*\r
-X61956Y463250D02*X62706Y462500D01*\r
-X45000Y459249D02*X66757D01*\r
-X64800Y98100D02*Y91700D01*\r
-X61600Y94900D02*X68000D01*\r
-X63200Y96500D02*X66400D01*\r
-X63200D02*Y93300D01*\r
-X66400D01*\r
-Y96500D02*Y93300D01*\r
-X64800Y70500D02*Y64100D01*\r
-X61600Y67300D02*X68000D01*\r
-X63200Y68900D02*X66400D01*\r
-X63200D02*Y65700D01*\r
-X66400D01*\r
-Y68900D02*Y65700D01*\r
-X15000Y484450D02*Y478050D01*\r
-X11800Y481250D02*X18200D01*\r
-X13400Y482850D02*X16600D01*\r
-X13400D02*Y479650D01*\r
-X16600D01*\r
-Y482850D02*Y479650D01*\r
-X135000Y483500D02*Y482750D01*\r
-X136500Y481250D01*\r
-X138000Y482750D01*\r
-Y483500D02*Y482750D01*\r
-X136500Y481250D02*Y477500D01*\r
-X139801Y480500D02*X142051D01*\r
-X139801Y477500D02*X142801D01*\r
-X139801Y483500D02*Y477500D01*\r
-Y483500D02*X142801D01*\r
-X147603D02*X148353Y482750D01*\r
-X145353Y483500D02*X147603D01*\r
-X144603Y482750D02*X145353Y483500D01*\r
-X144603Y482750D02*Y481250D01*\r
-X145353Y480500D01*\r
-X147603D01*\r
-X148353Y479750D01*\r
-Y478250D01*\r
-X147603Y477500D02*X148353Y478250D01*\r
-X145353Y477500D02*X147603D01*\r
-X144603Y478250D02*X145353Y477500D01*\r
-X135000Y474249D02*X150154D01*\r
-X98000Y482750D02*X98750Y483500D01*\r
-X101000D01*\r
-X101750Y482750D01*\r
-Y481250D01*\r
-X98000Y477500D02*X101750Y481250D01*\r
-X98000Y477500D02*X101750D01*\r
-X98000Y474249D02*X103551D01*\r
-X45000Y478250D02*X45750Y477500D01*\r
-X45000Y482750D02*Y478250D01*\r
-Y482750D02*X45750Y483500D01*\r
-X47250D01*\r
-X48000Y482750D01*\r
-Y478250D01*\r
-X47250Y477500D02*X48000Y478250D01*\r
-X45750Y477500D02*X47250D01*\r
-X45000Y479000D02*X48000Y482000D01*\r
-X49801Y477500D02*X50551D01*\r
-X52353Y478250D02*X53103Y477500D01*\r
-X52353Y482750D02*Y478250D01*\r
-Y482750D02*X53103Y483500D01*\r
-X54603D01*\r
-X55353Y482750D01*\r
-Y478250D01*\r
-X54603Y477500D02*X55353Y478250D01*\r
-X53103Y477500D02*X54603D01*\r
-X52353Y479000D02*X55353Y482000D01*\r
-X57154Y483500D02*X60154D01*\r
-X57154D02*Y480500D01*\r
-X57904Y481250D01*\r
-X59404D01*\r
-X60154Y480500D01*\r
-Y478250D01*\r
-X59404Y477500D02*X60154Y478250D01*\r
-X57904Y477500D02*X59404D01*\r
-X57154Y478250D02*X57904Y477500D01*\r
-X61956Y482750D02*X62706Y483500D01*\r
-X64956D01*\r
-X65706Y482750D01*\r
-Y481250D01*\r
-X61956Y477500D02*X65706Y481250D01*\r
-X61956Y477500D02*X65706D01*\r
-X45000Y474249D02*X67507D01*\r
-X62500Y155000D02*Y151800D01*\r
-Y155000D02*X65273Y156600D01*\r
-X62500Y155000D02*X59727Y156600D01*\r
-X60900Y155000D02*G75*G03X64100Y155000I1600J0D01*G01*\r
-G75*G03X60900Y155000I-1600J0D01*G01*\r
-X62500Y165000D02*Y161800D01*\r
-Y165000D02*X65273Y166600D01*\r
-X62500Y165000D02*X59727Y166600D01*\r
-X60900Y165000D02*G75*G03X64100Y165000I1600J0D01*G01*\r
-G75*G03X60900Y165000I-1600J0D01*G01*\r
-X62500Y117500D02*Y114300D01*\r
-Y117500D02*X65273Y119100D01*\r
-X62500Y117500D02*X59727Y119100D01*\r
-X60900Y117500D02*G75*G03X64100Y117500I1600J0D01*G01*\r
-G75*G03X60900Y117500I-1600J0D01*G01*\r
-X62500Y127500D02*Y124300D01*\r
-Y127500D02*X65273Y129100D01*\r
-X62500Y127500D02*X59727Y129100D01*\r
-X60900Y127500D02*G75*G03X64100Y127500I1600J0D01*G01*\r
-G75*G03X60900Y127500I-1600J0D01*G01*\r
-X62500Y192500D02*Y189300D01*\r
-Y192500D02*X65273Y194100D01*\r
-X62500Y192500D02*X59727Y194100D01*\r
-X60900Y192500D02*G75*G03X64100Y192500I1600J0D01*G01*\r
-G75*G03X60900Y192500I-1600J0D01*G01*\r
-X62500Y202500D02*Y199300D01*\r
-Y202500D02*X65273Y204100D01*\r
-X62500Y202500D02*X59727Y204100D01*\r
-X60900Y202500D02*G75*G03X64100Y202500I1600J0D01*G01*\r
-G75*G03X60900Y202500I-1600J0D01*G01*\r
-X15000Y496250D02*Y493050D01*\r
-Y496250D02*X17773Y497850D01*\r
-X15000Y496250D02*X12227Y497850D01*\r
-X13400Y496250D02*G75*G03X16600Y496250I1600J0D01*G01*\r
-G75*G03X13400Y496250I-1600J0D01*G01*\r
-X135000Y498500D02*Y497750D01*\r
-X136500Y496250D01*\r
-X138000Y497750D01*\r
-Y498500D02*Y497750D01*\r
-X136500Y496250D02*Y492500D01*\r
-X139801Y495500D02*X142051D01*\r
-X139801Y492500D02*X142801D01*\r
-X139801Y498500D02*Y492500D01*\r
-Y498500D02*X142801D01*\r
-X147603D02*X148353Y497750D01*\r
-X145353Y498500D02*X147603D01*\r
-X144603Y497750D02*X145353Y498500D01*\r
-X144603Y497750D02*Y496250D01*\r
-X145353Y495500D01*\r
-X147603D01*\r
-X148353Y494750D01*\r
-Y493250D01*\r
-X147603Y492500D02*X148353Y493250D01*\r
-X145353Y492500D02*X147603D01*\r
-X144603Y493250D02*X145353Y492500D01*\r
-X135000Y489249D02*X150154D01*\r
-X100250Y498500D02*X101000Y497750D01*\r
-X98750Y498500D02*X100250D01*\r
-X98000Y497750D02*X98750Y498500D01*\r
-X98000Y497750D02*Y493250D01*\r
-X98750Y492500D01*\r
-X100250Y495500D02*X101000Y494750D01*\r
-X98000Y495500D02*X100250D01*\r
-X98750Y492500D02*X100250D01*\r
-X101000Y493250D01*\r
-Y494750D02*Y493250D01*\r
-X98000Y489249D02*X102801D01*\r
-X45000Y493250D02*X45750Y492500D01*\r
-X45000Y497750D02*Y493250D01*\r
-Y497750D02*X45750Y498500D01*\r
-X47250D01*\r
-X48000Y497750D01*\r
-Y493250D01*\r
-X47250Y492500D02*X48000Y493250D01*\r
-X45750Y492500D02*X47250D01*\r
-X45000Y494000D02*X48000Y497000D01*\r
-X49801Y492500D02*X50551D01*\r
-X52353Y493250D02*X53103Y492500D01*\r
-X52353Y497750D02*Y493250D01*\r
-Y497750D02*X53103Y498500D01*\r
-X54603D01*\r
-X55353Y497750D01*\r
-Y493250D01*\r
-X54603Y492500D02*X55353Y493250D01*\r
-X53103Y492500D02*X54603D01*\r
-X52353Y494000D02*X55353Y497000D01*\r
-X57154Y495500D02*X60154Y498500D01*\r
-X57154Y495500D02*X60904D01*\r
-X60154Y498500D02*Y492500D01*\r
-X62706Y497750D02*X63456Y498500D01*\r
-X64956D01*\r
-X65706Y497750D01*\r
-Y493250D01*\r
-X64956Y492500D02*X65706Y493250D01*\r
-X63456Y492500D02*X64956D01*\r
-X62706Y493250D02*X63456Y492500D01*\r
-Y495500D02*X65706D01*\r
-X45000Y489249D02*X67507D01*\r
-X348400Y201600D02*X351600D01*\r
-X348400D02*Y198400D01*\r
-X351600D01*\r
-Y201600D02*Y198400D01*\r
-X338400Y201600D02*X341600D01*\r
-X338400D02*Y198400D01*\r
-X341600D01*\r
-Y201600D02*Y198400D01*\r
-X328400Y201600D02*X331600D01*\r
-X328400D02*Y198400D01*\r
-X331600D01*\r
-Y201600D02*Y198400D01*\r
-X475900Y126600D02*X479100D01*\r
-X475900D02*Y123400D01*\r
-X479100D01*\r
-Y126600D02*Y123400D01*\r
-X465900Y126600D02*X469100D01*\r
-X465900D02*Y123400D01*\r
-X469100D01*\r
-Y126600D02*Y123400D01*\r
-X455900Y126600D02*X459100D01*\r
-X455900D02*Y123400D01*\r
-X459100D01*\r
-Y126600D02*Y123400D01*\r
-X475900Y201600D02*X479100D01*\r
-X475900D02*Y198400D01*\r
-X479100D01*\r
-Y201600D02*Y198400D01*\r
-X465900Y201600D02*X469100D01*\r
-X465900D02*Y198400D01*\r
-X469100D01*\r
-Y201600D02*Y198400D01*\r
-X455900Y201600D02*X459100D01*\r
-X455900D02*Y198400D01*\r
-X459100D01*\r
-Y201600D02*Y198400D01*\r
-X53400Y91600D02*X56600D01*\r
-X53400D02*Y88400D01*\r
-X56600D01*\r
-Y91600D02*Y88400D01*\r
-X53400Y73900D02*X56600D01*\r
-X53400D02*Y70700D01*\r
-X56600D01*\r
-Y73900D02*Y70700D01*\r
-X348400Y51600D02*X351600D01*\r
-X348400D02*Y48400D01*\r
-X351600D01*\r
-Y51600D02*Y48400D01*\r
-X338400Y51600D02*X341600D01*\r
-X338400D02*Y48400D01*\r
-X341600D01*\r
-Y51600D02*Y48400D01*\r
-X328400Y51600D02*X331600D01*\r
-X328400D02*Y48400D01*\r
-X331600D01*\r
-Y51600D02*Y48400D01*\r
-X475900Y51600D02*X479100D01*\r
-X475900D02*Y48400D01*\r
-X479100D01*\r
-Y51600D02*Y48400D01*\r
-X465900Y51600D02*X469100D01*\r
-X465900D02*Y48400D01*\r
-X469100D01*\r
-Y51600D02*Y48400D01*\r
-X455900Y51600D02*X459100D01*\r
-X455900D02*Y48400D01*\r
-X459100D01*\r
-Y51600D02*Y48400D01*\r
-X348400Y126600D02*X351600D01*\r
-X348400D02*Y123400D01*\r
-X351600D01*\r
-Y126600D02*Y123400D01*\r
-X338400Y126600D02*X341600D01*\r
-X338400D02*Y123400D01*\r
-X341600D01*\r
-Y126600D02*Y123400D01*\r
-X328400Y126600D02*X331600D01*\r
-X328400D02*Y123400D01*\r
-X331600D01*\r
-Y126600D02*Y123400D01*\r
-X13400Y512850D02*X16600D01*\r
-X13400D02*Y509650D01*\r
-X16600D01*\r
-Y512850D02*Y509650D01*\r
-X135000Y513500D02*Y512750D01*\r
-X136500Y511250D01*\r
-X138000Y512750D01*\r
-Y513500D02*Y512750D01*\r
-X136500Y511250D02*Y507500D01*\r
-X139801Y510500D02*X142051D01*\r
-X139801Y507500D02*X142801D01*\r
-X139801Y513500D02*Y507500D01*\r
-Y513500D02*X142801D01*\r
-X147603D02*X148353Y512750D01*\r
-X145353Y513500D02*X147603D01*\r
-X144603Y512750D02*X145353Y513500D01*\r
-X144603Y512750D02*Y511250D01*\r
-X145353Y510500D01*\r
-X147603D01*\r
-X148353Y509750D01*\r
-Y508250D01*\r
-X147603Y507500D02*X148353Y508250D01*\r
-X145353Y507500D02*X147603D01*\r
-X144603Y508250D02*X145353Y507500D01*\r
-X135000Y504249D02*X150154D01*\r
-X98000Y512750D02*X98750Y513500D01*\r
-X101000D01*\r
-X101750Y512750D01*\r
-Y511250D01*\r
-X98000Y507500D02*X101750Y511250D01*\r
-X98000Y507500D02*X101750D01*\r
-X103551Y508250D02*X104301Y507500D01*\r
-X103551Y512750D02*Y508250D01*\r
-Y512750D02*X104301Y513500D01*\r
-X105801D01*\r
-X106551Y512750D01*\r
-Y508250D01*\r
-X105801Y507500D02*X106551Y508250D01*\r
-X104301Y507500D02*X105801D01*\r
-X103551Y509000D02*X106551Y512000D01*\r
-X98000Y504249D02*X108353D01*\r
-X45000Y508250D02*X45750Y507500D01*\r
-X45000Y512750D02*Y508250D01*\r
-Y512750D02*X45750Y513500D01*\r
-X47250D01*\r
-X48000Y512750D01*\r
-Y508250D01*\r
-X47250Y507500D02*X48000Y508250D01*\r
-X45750Y507500D02*X47250D01*\r
-X45000Y509000D02*X48000Y512000D01*\r
-X49801Y507500D02*X50551D01*\r
-X52353Y508250D02*X53103Y507500D01*\r
-X52353Y512750D02*Y508250D01*\r
-Y512750D02*X53103Y513500D01*\r
-X54603D01*\r
-X55353Y512750D01*\r
-Y508250D01*\r
-X54603Y507500D02*X55353Y508250D01*\r
-X53103Y507500D02*X54603D01*\r
-X52353Y509000D02*X55353Y512000D01*\r
-X57154Y510500D02*X60154Y513500D01*\r
-X57154Y510500D02*X60904D01*\r
-X60154Y513500D02*Y507500D01*\r
-X62706Y512750D02*X63456Y513500D01*\r
-X65706D01*\r
-X66456Y512750D01*\r
-Y511250D01*\r
-X62706Y507500D02*X66456Y511250D01*\r
-X62706Y507500D02*X66456D01*\r
-X45000Y504249D02*X68257D01*\r
-X241700Y135000D02*G75*G03X243300Y135000I800J0D01*G01*\r
-G75*G03X241700Y135000I-800J0D01*G01*\r
-X251700D02*G75*G03X253300Y135000I800J0D01*G01*\r
-G75*G03X251700Y135000I-800J0D01*G01*\r
-X241700Y110000D02*G75*G03X243300Y110000I800J0D01*G01*\r
-G75*G03X241700Y110000I-800J0D01*G01*\r
-X251700D02*G75*G03X253300Y110000I800J0D01*G01*\r
-G75*G03X251700Y110000I-800J0D01*G01*\r
-X216700D02*G75*G03X218300Y110000I800J0D01*G01*\r
-G75*G03X216700Y110000I-800J0D01*G01*\r
-X176700D02*G75*G03X178300Y110000I800J0D01*G01*\r
-G75*G03X176700Y110000I-800J0D01*G01*\r
-Y195000D02*G75*G03X178300Y195000I800J0D01*G01*\r
-G75*G03X176700Y195000I-800J0D01*G01*\r
-X216700D02*G75*G03X218300Y195000I800J0D01*G01*\r
-G75*G03X216700Y195000I-800J0D01*G01*\r
-X176700Y155000D02*G75*G03X178300Y155000I800J0D01*G01*\r
-G75*G03X176700Y155000I-800J0D01*G01*\r
-X216700D02*G75*G03X218300Y155000I800J0D01*G01*\r
-G75*G03X216700Y155000I-800J0D01*G01*\r
-X231700D02*G75*G03X233300Y155000I800J0D01*G01*\r
-G75*G03X231700Y155000I-800J0D01*G01*\r
-X271700D02*G75*G03X273300Y155000I800J0D01*G01*\r
-G75*G03X271700Y155000I-800J0D01*G01*\r
-X344200Y370000D02*G75*G03X345800Y370000I800J0D01*G01*\r
-G75*G03X344200Y370000I-800J0D01*G01*\r
-Y330000D02*G75*G03X345800Y330000I800J0D01*G01*\r
-G75*G03X344200Y330000I-800J0D01*G01*\r
-X79200Y307500D02*G75*G03X80800Y307500I800J0D01*G01*\r
-G75*G03X79200Y307500I-800J0D01*G01*\r
-Y296600D02*G75*G03X80800Y296600I800J0D01*G01*\r
-G75*G03X79200Y296600I-800J0D01*G01*\r
-Y285700D02*G75*G03X80800Y285700I800J0D01*G01*\r
-G75*G03X79200Y285700I-800J0D01*G01*\r
-Y274800D02*G75*G03X80800Y274800I800J0D01*G01*\r
-G75*G03X79200Y274800I-800J0D01*G01*\r
-Y263900D02*G75*G03X80800Y263900I800J0D01*G01*\r
-G75*G03X79200Y263900I-800J0D01*G01*\r
-X69200Y302100D02*G75*G03X70800Y302100I800J0D01*G01*\r
-G75*G03X69200Y302100I-800J0D01*G01*\r
-Y291200D02*G75*G03X70800Y291200I800J0D01*G01*\r
-G75*G03X69200Y291200I-800J0D01*G01*\r
-Y280300D02*G75*G03X70800Y280300I800J0D01*G01*\r
-G75*G03X69200Y280300I-800J0D01*G01*\r
-Y269400D02*G75*G03X70800Y269400I800J0D01*G01*\r
-G75*G03X69200Y269400I-800J0D01*G01*\r
-X309200Y335000D02*G75*G03X310800Y335000I800J0D01*G01*\r
-G75*G03X309200Y335000I-800J0D01*G01*\r
-X319200D02*G75*G03X320800Y335000I800J0D01*G01*\r
-G75*G03X319200Y335000I-800J0D01*G01*\r
-X561700Y330000D02*G75*G03X563300Y330000I800J0D01*G01*\r
-G75*G03X561700Y330000I-800J0D01*G01*\r
-Y370000D02*G75*G03X563300Y370000I800J0D01*G01*\r
-G75*G03X561700Y370000I-800J0D01*G01*\r
-X231700Y195000D02*G75*G03X233300Y195000I800J0D01*G01*\r
-G75*G03X231700Y195000I-800J0D01*G01*\r
-X271700D02*G75*G03X273300Y195000I800J0D01*G01*\r
-G75*G03X271700Y195000I-800J0D01*G01*\r
-X531700Y370000D02*G75*G03X533300Y370000I800J0D01*G01*\r
-G75*G03X531700Y370000I-800J0D01*G01*\r
-Y330000D02*G75*G03X533300Y330000I800J0D01*G01*\r
-G75*G03X531700Y330000I-800J0D01*G01*\r
-X441700Y315000D02*G75*G03X443300Y315000I800J0D01*G01*\r
-G75*G03X441700Y315000I-800J0D01*G01*\r
-Y275000D02*G75*G03X443300Y275000I800J0D01*G01*\r
-G75*G03X441700Y275000I-800J0D01*G01*\r
-X191700Y335000D02*G75*G03X193300Y335000I800J0D01*G01*\r
-G75*G03X191700Y335000I-800J0D01*G01*\r
-X201700D02*G75*G03X203300Y335000I800J0D01*G01*\r
-G75*G03X201700Y335000I-800J0D01*G01*\r
-X319200Y260000D02*G75*G03X320800Y260000I800J0D01*G01*\r
-G75*G03X319200Y260000I-800J0D01*G01*\r
-X309200D02*G75*G03X310800Y260000I800J0D01*G01*\r
-G75*G03X309200Y260000I-800J0D01*G01*\r
-X441700Y330000D02*G75*G03X443300Y330000I800J0D01*G01*\r
-G75*G03X441700Y330000I-800J0D01*G01*\r
-Y370000D02*G75*G03X443300Y370000I800J0D01*G01*\r
-G75*G03X441700Y370000I-800J0D01*G01*\r
-X241700Y235000D02*G75*G03X243300Y235000I800J0D01*G01*\r
-G75*G03X241700Y235000I-800J0D01*G01*\r
-X251700D02*G75*G03X253300Y235000I800J0D01*G01*\r
-G75*G03X251700Y235000I-800J0D01*G01*\r
-X546700Y330000D02*G75*G03X548300Y330000I800J0D01*G01*\r
-G75*G03X546700Y330000I-800J0D01*G01*\r
-Y370000D02*G75*G03X548300Y370000I800J0D01*G01*\r
-G75*G03X546700Y370000I-800J0D01*G01*\r
-X459200Y260000D02*G75*G03X460800Y260000I800J0D01*G01*\r
-G75*G03X459200Y260000I-800J0D01*G01*\r
-X499200D02*G75*G03X500800Y260000I800J0D01*G01*\r
-G75*G03X499200Y260000I-800J0D01*G01*\r
-X439200D02*G75*G03X440800Y260000I800J0D01*G01*\r
-G75*G03X439200Y260000I-800J0D01*G01*\r
-X399200D02*G75*G03X400800Y260000I800J0D01*G01*\r
-G75*G03X399200Y260000I-800J0D01*G01*\r
-X424200Y330000D02*G75*G03X425800Y330000I800J0D01*G01*\r
-G75*G03X424200Y330000I-800J0D01*G01*\r
-Y370000D02*G75*G03X425800Y370000I800J0D01*G01*\r
-G75*G03X424200Y370000I-800J0D01*G01*\r
-X614200Y60000D02*G75*G03X615800Y60000I800J0D01*G01*\r
-G75*G03X614200Y60000I-800J0D01*G01*\r
-Y70000D02*G75*G03X615800Y70000I800J0D01*G01*\r
-G75*G03X614200Y70000I-800J0D01*G01*\r
-X341700Y260000D02*G75*G03X343300Y260000I800J0D01*G01*\r
-G75*G03X341700Y260000I-800J0D01*G01*\r
-X381700D02*G75*G03X383300Y260000I800J0D01*G01*\r
-G75*G03X381700Y260000I-800J0D01*G01*\r
-X556700D02*G75*G03X558300Y260000I800J0D01*G01*\r
-G75*G03X556700Y260000I-800J0D01*G01*\r
-X516700D02*G75*G03X518300Y260000I800J0D01*G01*\r
-G75*G03X516700Y260000I-800J0D01*G01*\r
-X614200D02*G75*G03X615800Y260000I800J0D01*G01*\r
-G75*G03X614200Y260000I-800J0D01*G01*\r
-X574200D02*G75*G03X575800Y260000I800J0D01*G01*\r
-G75*G03X574200Y260000I-800J0D01*G01*\r
-X314200Y365000D02*G75*G03X315800Y365000I800J0D01*G01*\r
-G75*G03X314200Y365000I-800J0D01*G01*\r
-Y355000D02*G75*G03X315800Y355000I800J0D01*G01*\r
-G75*G03X314200Y355000I-800J0D01*G01*\r
-X459200Y370000D02*G75*G03X460800Y370000I800J0D01*G01*\r
-G75*G03X459200Y370000I-800J0D01*G01*\r
-Y330000D02*G75*G03X460800Y330000I800J0D01*G01*\r
-G75*G03X459200Y330000I-800J0D01*G01*\r
-X614200Y40000D02*G75*G03X615800Y40000I800J0D01*G01*\r
-G75*G03X614200Y40000I-800J0D01*G01*\r
-Y30000D02*G75*G03X615800Y30000I800J0D01*G01*\r
-G75*G03X614200Y30000I-800J0D01*G01*\r
-X289200Y360000D02*G75*G03X290800Y360000I800J0D01*G01*\r
-G75*G03X289200Y360000I-800J0D01*G01*\r
-X279200D02*G75*G03X280800Y360000I800J0D01*G01*\r
-G75*G03X279200Y360000I-800J0D01*G01*\r
-X241700Y260000D02*G75*G03X243300Y260000I800J0D01*G01*\r
-G75*G03X241700Y260000I-800J0D01*G01*\r
-X251700D02*G75*G03X253300Y260000I800J0D01*G01*\r
-G75*G03X251700Y260000I-800J0D01*G01*\r
-X286700D02*G75*G03X288300Y260000I800J0D01*G01*\r
-G75*G03X286700Y260000I-800J0D01*G01*\r
-X276700D02*G75*G03X278300Y260000I800J0D01*G01*\r
-G75*G03X276700Y260000I-800J0D01*G01*\r
-X216700Y235000D02*G75*G03X218300Y235000I800J0D01*G01*\r
-G75*G03X216700Y235000I-800J0D01*G01*\r
-X176700D02*G75*G03X178300Y235000I800J0D01*G01*\r
-G75*G03X176700Y235000I-800J0D01*G01*\r
-X424200Y315000D02*G75*G03X425800Y315000I800J0D01*G01*\r
-G75*G03X424200Y315000I-800J0D01*G01*\r
-Y275000D02*G75*G03X425800Y275000I800J0D01*G01*\r
-G75*G03X424200Y275000I-800J0D01*G01*\r
-X279200Y335000D02*G75*G03X280800Y335000I800J0D01*G01*\r
-G75*G03X279200Y335000I-800J0D01*G01*\r
-X289200D02*G75*G03X290800Y335000I800J0D01*G01*\r
-G75*G03X289200Y335000I-800J0D01*G01*\r
-X496700Y40000D02*G75*G03X498300Y40000I800J0D01*G01*\r
-G75*G03X496700Y40000I-800J0D01*G01*\r
-X279200Y322500D02*G75*G03X280800Y322500I800J0D01*G01*\r
-G75*G03X279200Y322500I-800J0D01*G01*\r
-X241700Y245000D02*G75*G03X243300Y245000I800J0D01*G01*\r
-G75*G03X241700Y245000I-800J0D01*G01*\r
-X431700Y60000D02*G75*G03X433300Y60000I800J0D01*G01*\r
-G75*G03X431700Y60000I-800J0D01*G01*\r
-X239200Y80000D02*G75*G03X240800Y80000I800J0D01*G01*\r
-G75*G03X239200Y80000I-800J0D01*G01*\r
-X176700Y125000D02*G75*G03X178300Y125000I800J0D01*G01*\r
-G75*G03X176700Y125000I-800J0D01*G01*\r
-X371700Y40000D02*G75*G03X373300Y40000I800J0D01*G01*\r
-G75*G03X371700Y40000I-800J0D01*G01*\r
-X399200Y85000D02*G75*G03X400800Y85000I800J0D01*G01*\r
-G75*G03X399200Y85000I-800J0D01*G01*\r
-X151700Y347500D02*G75*G03X153300Y347500I800J0D01*G01*\r
-G75*G03X151700Y347500I-800J0D01*G01*\r
-X496700Y142500D02*G75*G03X498300Y142500I800J0D01*G01*\r
-G75*G03X496700Y142500I-800J0D01*G01*\r
-X194200Y30000D02*G75*G03X195800Y30000I800J0D01*G01*\r
-G75*G03X194200Y30000I-800J0D01*G01*\r
-X216700Y187500D02*G75*G03X218300Y187500I800J0D01*G01*\r
-G75*G03X216700Y187500I-800J0D01*G01*\r
-X186700Y235000D02*G75*G03X188300Y235000I800J0D01*G01*\r
-G75*G03X186700Y235000I-800J0D01*G01*\r
-X471700Y322500D02*G75*G03X473300Y322500I800J0D01*G01*\r
-G75*G03X471700Y322500I-800J0D01*G01*\r
-X601700Y252500D02*G75*G03X603300Y252500I800J0D01*G01*\r
-G75*G03X601700Y252500I-800J0D01*G01*\r
-X399200Y245000D02*G75*G03X400800Y245000I800J0D01*G01*\r
-G75*G03X399200Y245000I-800J0D01*G01*\r
-X261700Y302500D02*G75*G03X263300Y302500I800J0D01*G01*\r
-G75*G03X261700Y302500I-800J0D01*G01*\r
-X159200Y335000D02*G75*G03X160800Y335000I800J0D01*G01*\r
-G75*G03X159200Y335000I-800J0D01*G01*\r
-X224200Y117500D02*G75*G03X225800Y117500I800J0D01*G01*\r
-G75*G03X224200Y117500I-800J0D01*G01*\r
-X519200Y340000D02*G75*G03X520800Y340000I800J0D01*G01*\r
-G75*G03X519200Y340000I-800J0D01*G01*\r
-X384200Y245000D02*G75*G03X385800Y245000I800J0D01*G01*\r
-G75*G03X384200Y245000I-800J0D01*G01*\r
-X186700Y302500D02*G75*G03X188300Y302500I800J0D01*G01*\r
-G75*G03X186700Y302500I-800J0D01*G01*\r
-X224200Y97500D02*G75*G03X225800Y97500I800J0D01*G01*\r
-G75*G03X224200Y97500I-800J0D01*G01*\r
-X431700Y227500D02*G75*G03X433300Y227500I800J0D01*G01*\r
-G75*G03X431700Y227500I-800J0D01*G01*\r
-X251700Y125000D02*G75*G03X253300Y125000I800J0D01*G01*\r
-G75*G03X251700Y125000I-800J0D01*G01*\r
-X241700D02*G75*G03X243300Y125000I800J0D01*G01*\r
-G75*G03X241700Y125000I-800J0D01*G01*\r
-X544200Y62500D02*G75*G03X545800Y62500I800J0D01*G01*\r
-G75*G03X544200Y62500I-800J0D01*G01*\r
-X301700Y322500D02*G75*G03X303300Y322500I800J0D01*G01*\r
-G75*G03X301700Y322500I-800J0D01*G01*\r
-X294200Y350000D02*G75*G03X295800Y350000I800J0D01*G01*\r
-G75*G03X294200Y350000I-800J0D01*G01*\r
-X176700Y245000D02*G75*G03X178300Y245000I800J0D01*G01*\r
-G75*G03X176700Y245000I-800J0D01*G01*\r
-X189200Y135000D02*G75*G03X190800Y135000I800J0D01*G01*\r
-G75*G03X189200Y135000I-800J0D01*G01*\r
-X251700Y97500D02*G75*G03X253300Y97500I800J0D01*G01*\r
-G75*G03X251700Y97500I-800J0D01*G01*\r
-X614200Y302500D02*G75*G03X615800Y302500I800J0D01*G01*\r
-G75*G03X614200Y302500I-800J0D01*G01*\r
-X384200Y70000D02*G75*G03X385800Y70000I800J0D01*G01*\r
-G75*G03X384200Y70000I-800J0D01*G01*\r
-X471700Y245000D02*G75*G03X473300Y245000I800J0D01*G01*\r
-G75*G03X471700Y245000I-800J0D01*G01*\r
-X261700Y207500D02*G75*G03X263300Y207500I800J0D01*G01*\r
-G75*G03X261700Y207500I-800J0D01*G01*\r
-Y235000D02*G75*G03X263300Y235000I800J0D01*G01*\r
-G75*G03X261700Y235000I-800J0D01*G01*\r
-X151700Y227500D02*G75*G03X153300Y227500I800J0D01*G01*\r
-G75*G03X151700Y227500I-800J0D01*G01*\r
-X604200Y60000D02*G75*G03X605800Y60000I800J0D01*G01*\r
-G75*G03X604200Y60000I-800J0D01*G01*\r
-X206700Y155000D02*G75*G03X208300Y155000I800J0D01*G01*\r
-G75*G03X206700Y155000I-800J0D01*G01*\r
-X516700Y245000D02*G75*G03X518300Y245000I800J0D01*G01*\r
-G75*G03X516700Y245000I-800J0D01*G01*\r
-X159200D02*G75*G03X160800Y245000I800J0D01*G01*\r
-G75*G03X159200Y245000I-800J0D01*G01*\r
-X551700Y70000D02*G75*G03X553300Y70000I800J0D01*G01*\r
-G75*G03X551700Y70000I-800J0D01*G01*\r
-X391700Y77500D02*G75*G03X393300Y77500I800J0D01*G01*\r
-G75*G03X391700Y77500I-800J0D01*G01*\r
-X386700Y267500D02*G75*G03X388300Y267500I800J0D01*G01*\r
-G75*G03X386700Y267500I-800J0D01*G01*\r
-X269200Y287500D02*G75*G03X270800Y287500I800J0D01*G01*\r
-G75*G03X269200Y287500I-800J0D01*G01*\r
-X359200Y267500D02*G75*G03X360800Y267500I800J0D01*G01*\r
-G75*G03X359200Y267500I-800J0D01*G01*\r
-X409200Y340000D02*G75*G03X410800Y340000I800J0D01*G01*\r
-G75*G03X409200Y340000I-800J0D01*G01*\r
-X269200Y380000D02*G75*G03X270800Y380000I800J0D01*G01*\r
-G75*G03X269200Y380000I-800J0D01*G01*\r
-X359200D02*G75*G03X360800Y380000I800J0D01*G01*\r
-G75*G03X359200Y380000I-800J0D01*G01*\r
-X189200Y97500D02*G75*G03X190800Y97500I800J0D01*G01*\r
-G75*G03X189200Y97500I-800J0D01*G01*\r
-X269200Y260000D02*G75*G03X270800Y260000I800J0D01*G01*\r
-G75*G03X269200Y260000I-800J0D01*G01*\r
-X326700Y380000D02*G75*G03X328300Y380000I800J0D01*G01*\r
-G75*G03X326700Y380000I-800J0D01*G01*\r
-X159200Y285000D02*G75*G03X160800Y285000I800J0D01*G01*\r
-G75*G03X159200Y285000I-800J0D01*G01*\r
-X14200Y526250D02*G75*G03X15800Y526250I800J0D01*G01*\r
-G75*G03X14200Y526250I-800J0D01*G01*\r
-X135000Y528500D02*Y527750D01*\r
-X136500Y526250D01*\r
-X138000Y527750D01*\r
-Y528500D02*Y527750D01*\r
-X136500Y526250D02*Y522500D01*\r
-X139801Y525500D02*X142051D01*\r
-X139801Y522500D02*X142801D01*\r
-X139801Y528500D02*Y522500D01*\r
-Y528500D02*X142801D01*\r
-X147603D02*X148353Y527750D01*\r
-X145353Y528500D02*X147603D01*\r
-X144603Y527750D02*X145353Y528500D01*\r
-X144603Y527750D02*Y526250D01*\r
-X145353Y525500D01*\r
-X147603D01*\r
-X148353Y524750D01*\r
-Y523250D01*\r
-X147603Y522500D02*X148353Y523250D01*\r
-X145353Y522500D02*X147603D01*\r
-X144603Y523250D02*X145353Y522500D01*\r
-X135000Y519249D02*X150154D01*\r
-X98750Y522500D02*X100250D01*\r
-X99500Y528500D02*Y522500D01*\r
-X98000Y527000D02*X99500Y528500D01*\r
-X102051Y527750D02*X102801Y528500D01*\r
-X105051D01*\r
-X105801Y527750D01*\r
-Y526250D01*\r
-X102051Y522500D02*X105801Y526250D01*\r
-X102051Y522500D02*X105801D01*\r
-X107603D02*X110603Y525500D01*\r
-Y527750D02*Y525500D01*\r
-X109853Y528500D02*X110603Y527750D01*\r
-X108353Y528500D02*X109853D01*\r
-X107603Y527750D02*X108353Y528500D01*\r
-X107603Y527750D02*Y526250D01*\r
-X108353Y525500D01*\r
-X110603D01*\r
-X98000Y519249D02*X112404D01*\r
-X45000Y523250D02*X45750Y522500D01*\r
-X45000Y527750D02*Y523250D01*\r
-Y527750D02*X45750Y528500D01*\r
-X47250D01*\r
-X48000Y527750D01*\r
-Y523250D01*\r
-X47250Y522500D02*X48000Y523250D01*\r
-X45750Y522500D02*X47250D01*\r
-X45000Y524000D02*X48000Y527000D01*\r
-X49801Y522500D02*X50551D01*\r
-X52353Y523250D02*X53103Y522500D01*\r
-X52353Y527750D02*Y523250D01*\r
-Y527750D02*X53103Y528500D01*\r
-X54603D01*\r
-X55353Y527750D01*\r
-Y523250D01*\r
-X54603Y522500D02*X55353Y523250D01*\r
-X53103Y522500D02*X54603D01*\r
-X52353Y524000D02*X55353Y527000D01*\r
-X57154Y527750D02*X57904Y528500D01*\r
-X59404D01*\r
-X60154Y527750D01*\r
-Y523250D01*\r
-X59404Y522500D02*X60154Y523250D01*\r
-X57904Y522500D02*X59404D01*\r
-X57154Y523250D02*X57904Y522500D01*\r
-Y525500D02*X60154D01*\r
-X61956Y528500D02*X64956D01*\r
-X61956D02*Y525500D01*\r
-X62706Y526250D01*\r
-X64206D01*\r
-X64956Y525500D01*\r
-Y523250D01*\r
-X64206Y522500D02*X64956Y523250D01*\r
-X62706Y522500D02*X64206D01*\r
-X61956Y523250D02*X62706Y522500D01*\r
-X45000Y519249D02*X66757D01*\r
-X651300Y363700D02*X653700Y361300D01*\r
-X651300D02*X653700Y363700D01*\r
-X651300Y353700D02*X653700Y351300D01*\r
-X651300D02*X653700Y353700D01*\r
-X651300Y343700D02*X653700Y341300D01*\r
-X651300D02*X653700Y343700D01*\r
-X651300Y333700D02*X653700Y331300D01*\r
-X651300D02*X653700Y333700D01*\r
-X651300Y323700D02*X653700Y321300D01*\r
-X651300D02*X653700Y323700D01*\r
-X651300Y313700D02*X653700Y311300D01*\r
-X651300D02*X653700Y313700D01*\r
-X651300Y303700D02*X653700Y301300D01*\r
-X651300D02*X653700Y303700D01*\r
-X651300Y293700D02*X653700Y291300D01*\r
-X651300D02*X653700Y293700D01*\r
-X651300Y283700D02*X653700Y281300D01*\r
-X651300D02*X653700Y283700D01*\r
-X651300Y273700D02*X653700Y271300D01*\r
-X651300D02*X653700Y273700D01*\r
-X651300Y263700D02*X653700Y261300D01*\r
-X651300D02*X653700Y263700D01*\r
-X651300Y253700D02*X653700Y251300D01*\r
-X651300D02*X653700Y253700D01*\r
-X651300Y243700D02*X653700Y241300D01*\r
-X651300D02*X653700Y243700D01*\r
-X651300Y233700D02*X653700Y231300D01*\r
-X651300D02*X653700Y233700D01*\r
-X651300Y223700D02*X653700Y221300D01*\r
-X651300D02*X653700Y223700D01*\r
-X651300Y213700D02*X653700Y211300D01*\r
-X651300D02*X653700Y213700D01*\r
-X651300Y203700D02*X653700Y201300D01*\r
-X651300D02*X653700Y203700D01*\r
-X651300Y193700D02*X653700Y191300D01*\r
-X651300D02*X653700Y193700D01*\r
-X651300Y183700D02*X653700Y181300D01*\r
-X651300D02*X653700Y183700D01*\r
-X651300Y173700D02*X653700Y171300D01*\r
-X651300D02*X653700Y173700D01*\r
-X651300Y163700D02*X653700Y161300D01*\r
-X651300D02*X653700Y163700D01*\r
-X651300Y153700D02*X653700Y151300D01*\r
-X651300D02*X653700Y153700D01*\r
-X651300Y143700D02*X653700Y141300D01*\r
-X651300D02*X653700Y143700D01*\r
-X651300Y133700D02*X653700Y131300D01*\r
-X651300D02*X653700Y133700D01*\r
-X651300Y123700D02*X653700Y121300D01*\r
-X651300D02*X653700Y123700D01*\r
-X651300Y113700D02*X653700Y111300D01*\r
-X651300D02*X653700Y113700D01*\r
-X651300Y103700D02*X653700Y101300D01*\r
-X651300D02*X653700Y103700D01*\r
-X651300Y93700D02*X653700Y91300D01*\r
-X651300D02*X653700Y93700D01*\r
-X651300Y83700D02*X653700Y81300D01*\r
-X651300D02*X653700Y83700D01*\r
-X651300Y73700D02*X653700Y71300D01*\r
-X651300D02*X653700Y73700D01*\r
-X651300Y63700D02*X653700Y61300D01*\r
-X651300D02*X653700Y63700D01*\r
-X651300Y53700D02*X653700Y51300D01*\r
-X651300D02*X653700Y53700D01*\r
-X641300Y363700D02*X643700Y361300D01*\r
-X641300D02*X643700Y363700D01*\r
-X641300Y353700D02*X643700Y351300D01*\r
-X641300D02*X643700Y353700D01*\r
-X641300Y343700D02*X643700Y341300D01*\r
-X641300D02*X643700Y343700D01*\r
-X641300Y333700D02*X643700Y331300D01*\r
-X641300D02*X643700Y333700D01*\r
-X641300Y323700D02*X643700Y321300D01*\r
-X641300D02*X643700Y323700D01*\r
-X641300Y313700D02*X643700Y311300D01*\r
-X641300D02*X643700Y313700D01*\r
-X641300Y303700D02*X643700Y301300D01*\r
-X641300D02*X643700Y303700D01*\r
-X641300Y293700D02*X643700Y291300D01*\r
-X641300D02*X643700Y293700D01*\r
-X641300Y283700D02*X643700Y281300D01*\r
-X641300D02*X643700Y283700D01*\r
-X641300Y273700D02*X643700Y271300D01*\r
-X641300D02*X643700Y273700D01*\r
-X641300Y263700D02*X643700Y261300D01*\r
-X641300D02*X643700Y263700D01*\r
-X641300Y253700D02*X643700Y251300D01*\r
-X641300D02*X643700Y253700D01*\r
-X641300Y243700D02*X643700Y241300D01*\r
-X641300D02*X643700Y243700D01*\r
-X641300Y233700D02*X643700Y231300D01*\r
-X641300D02*X643700Y233700D01*\r
-X641300Y223700D02*X643700Y221300D01*\r
-X641300D02*X643700Y223700D01*\r
-X641300Y213700D02*X643700Y211300D01*\r
-X641300D02*X643700Y213700D01*\r
-X641300Y203700D02*X643700Y201300D01*\r
-X641300D02*X643700Y203700D01*\r
-X641300Y193700D02*X643700Y191300D01*\r
-X641300D02*X643700Y193700D01*\r
-X641300Y183700D02*X643700Y181300D01*\r
-X641300D02*X643700Y183700D01*\r
-X641300Y173700D02*X643700Y171300D01*\r
-X641300D02*X643700Y173700D01*\r
-X641300Y163700D02*X643700Y161300D01*\r
-X641300D02*X643700Y163700D01*\r
-X641300Y153700D02*X643700Y151300D01*\r
-X641300D02*X643700Y153700D01*\r
-X641300Y143700D02*X643700Y141300D01*\r
-X641300D02*X643700Y143700D01*\r
-X641300Y133700D02*X643700Y131300D01*\r
-X641300D02*X643700Y133700D01*\r
-X641300Y123700D02*X643700Y121300D01*\r
-X641300D02*X643700Y123700D01*\r
-X641300Y113700D02*X643700Y111300D01*\r
-X641300D02*X643700Y113700D01*\r
-X641300Y103700D02*X643700Y101300D01*\r
-X641300D02*X643700Y103700D01*\r
-X641300Y93700D02*X643700Y91300D01*\r
-X641300D02*X643700Y93700D01*\r
-X641300Y83700D02*X643700Y81300D01*\r
-X641300D02*X643700Y83700D01*\r
-X641300Y73700D02*X643700Y71300D01*\r
-X641300D02*X643700Y73700D01*\r
-X641300Y63700D02*X643700Y61300D01*\r
-X641300D02*X643700Y63700D01*\r
-X641300Y53700D02*X643700Y51300D01*\r
-X641300D02*X643700Y53700D01*\r
-X631300Y363700D02*X633700Y361300D01*\r
-X631300D02*X633700Y363700D01*\r
-X631300Y353700D02*X633700Y351300D01*\r
-X631300D02*X633700Y353700D01*\r
-X631300Y343700D02*X633700Y341300D01*\r
-X631300D02*X633700Y343700D01*\r
-X631300Y333700D02*X633700Y331300D01*\r
-X631300D02*X633700Y333700D01*\r
-X631300Y323700D02*X633700Y321300D01*\r
-X631300D02*X633700Y323700D01*\r
-X631300Y313700D02*X633700Y311300D01*\r
-X631300D02*X633700Y313700D01*\r
-X631300Y303700D02*X633700Y301300D01*\r
-X631300D02*X633700Y303700D01*\r
-X631300Y293700D02*X633700Y291300D01*\r
-X631300D02*X633700Y293700D01*\r
-X631300Y283700D02*X633700Y281300D01*\r
-X631300D02*X633700Y283700D01*\r
-X631300Y273700D02*X633700Y271300D01*\r
-X631300D02*X633700Y273700D01*\r
-X631300Y263700D02*X633700Y261300D01*\r
-X631300D02*X633700Y263700D01*\r
-X631300Y253700D02*X633700Y251300D01*\r
-X631300D02*X633700Y253700D01*\r
-X631300Y243700D02*X633700Y241300D01*\r
-X631300D02*X633700Y243700D01*\r
-X631300Y233700D02*X633700Y231300D01*\r
-X631300D02*X633700Y233700D01*\r
-X631300Y223700D02*X633700Y221300D01*\r
-X631300D02*X633700Y223700D01*\r
-X631300Y213700D02*X633700Y211300D01*\r
-X631300D02*X633700Y213700D01*\r
-X631300Y203700D02*X633700Y201300D01*\r
-X631300D02*X633700Y203700D01*\r
-X631300Y193700D02*X633700Y191300D01*\r
-X631300D02*X633700Y193700D01*\r
-X631300Y183700D02*X633700Y181300D01*\r
-X631300D02*X633700Y183700D01*\r
-X631300Y173700D02*X633700Y171300D01*\r
-X631300D02*X633700Y173700D01*\r
-X631300Y163700D02*X633700Y161300D01*\r
-X631300D02*X633700Y163700D01*\r
-X631300Y153700D02*X633700Y151300D01*\r
-X631300D02*X633700Y153700D01*\r
-X631300Y143700D02*X633700Y141300D01*\r
-X631300D02*X633700Y143700D01*\r
-X631300Y133700D02*X633700Y131300D01*\r
-X631300D02*X633700Y133700D01*\r
-X631300Y123700D02*X633700Y121300D01*\r
-X631300D02*X633700Y123700D01*\r
-X631300Y113700D02*X633700Y111300D01*\r
-X631300D02*X633700Y113700D01*\r
-X631300Y103700D02*X633700Y101300D01*\r
-X631300D02*X633700Y103700D01*\r
-X631300Y93700D02*X633700Y91300D01*\r
-X631300D02*X633700Y93700D01*\r
-X631300Y83700D02*X633700Y81300D01*\r
-X631300D02*X633700Y83700D01*\r
-X631300Y73700D02*X633700Y71300D01*\r
-X631300D02*X633700Y73700D01*\r
-X631300Y63700D02*X633700Y61300D01*\r
-X631300D02*X633700Y63700D01*\r
-X631300Y53700D02*X633700Y51300D01*\r
-X631300D02*X633700Y53700D01*\r
-X231300Y216200D02*X233700Y213800D01*\r
-X231300D02*X233700Y216200D01*\r
-X271300D02*X273700Y213800D01*\r
-X271300D02*X273700Y216200D01*\r
-X216300Y136200D02*X218700Y133800D01*\r
-X216300D02*X218700Y136200D01*\r
-X176300D02*X178700Y133800D01*\r
-X176300D02*X178700Y136200D01*\r
-X176300Y216200D02*X178700Y213800D01*\r
-X176300D02*X178700Y216200D01*\r
-X216300D02*X218700Y213800D01*\r
-X216300D02*X218700Y216200D01*\r
-X271300Y176200D02*X273700Y173800D01*\r
-X271300D02*X273700Y176200D01*\r
-X231300D02*X233700Y173800D01*\r
-X231300D02*X233700Y176200D01*\r
-X216300D02*X218700Y173800D01*\r
-X216300D02*X218700Y176200D01*\r
-X176300D02*X178700Y173800D01*\r
-X176300D02*X178700Y176200D01*\r
-X216300Y261200D02*X218700Y258800D01*\r
-X216300D02*X218700Y261200D01*\r
-X176300D02*X178700Y258800D01*\r
-X176300D02*X178700Y261200D01*\r
-X13800Y542450D02*X16200Y540050D01*\r
-X13800D02*X16200Y542450D01*\r
-X135000Y543500D02*Y542750D01*\r
-X136500Y541250D01*\r
-X138000Y542750D01*\r
-Y543500D02*Y542750D01*\r
-X136500Y541250D02*Y537500D01*\r
-X139801Y540500D02*X142051D01*\r
-X139801Y537500D02*X142801D01*\r
-X139801Y543500D02*Y537500D01*\r
-Y543500D02*X142801D01*\r
-X147603D02*X148353Y542750D01*\r
-X145353Y543500D02*X147603D01*\r
-X144603Y542750D02*X145353Y543500D01*\r
-X144603Y542750D02*Y541250D01*\r
-X145353Y540500D01*\r
-X147603D01*\r
-X148353Y539750D01*\r
-Y538250D01*\r
-X147603Y537500D02*X148353Y538250D01*\r
-X145353Y537500D02*X147603D01*\r
-X144603Y538250D02*X145353Y537500D01*\r
-X135000Y534249D02*X150154D01*\r
-X98750Y537500D02*X100250D01*\r
-X99500Y543500D02*Y537500D01*\r
-X98000Y542000D02*X99500Y543500D01*\r
-X102051Y538250D02*X102801Y537500D01*\r
-X102051Y542750D02*Y538250D01*\r
-Y542750D02*X102801Y543500D01*\r
-X104301D01*\r
-X105051Y542750D01*\r
-Y538250D01*\r
-X104301Y537500D02*X105051Y538250D01*\r
-X102801Y537500D02*X104301D01*\r
-X102051Y539000D02*X105051Y542000D01*\r
-X106853Y538250D02*X107603Y537500D01*\r
-X106853Y539750D02*Y538250D01*\r
-Y539750D02*X107603Y540500D01*\r
-X109103D01*\r
-X109853Y539750D01*\r
-Y538250D01*\r
-X109103Y537500D02*X109853Y538250D01*\r
-X107603Y537500D02*X109103D01*\r
-X106853Y541250D02*X107603Y540500D01*\r
-X106853Y542750D02*Y541250D01*\r
-Y542750D02*X107603Y543500D01*\r
-X109103D01*\r
-X109853Y542750D01*\r
-Y541250D01*\r
-X109103Y540500D02*X109853Y541250D01*\r
-X98000Y534249D02*X111654D01*\r
-X45000Y538250D02*X45750Y537500D01*\r
-X45000Y542750D02*Y538250D01*\r
-Y542750D02*X45750Y543500D01*\r
-X47250D01*\r
-X48000Y542750D01*\r
-Y538250D01*\r
-X47250Y537500D02*X48000Y538250D01*\r
-X45750Y537500D02*X47250D01*\r
-X45000Y539000D02*X48000Y542000D01*\r
-X49801Y537500D02*X50551D01*\r
-X52353Y538250D02*X53103Y537500D01*\r
-X52353Y542750D02*Y538250D01*\r
-Y542750D02*X53103Y543500D01*\r
-X54603D01*\r
-X55353Y542750D01*\r
-Y538250D01*\r
-X54603Y537500D02*X55353Y538250D01*\r
-X53103Y537500D02*X54603D01*\r
-X52353Y539000D02*X55353Y542000D01*\r
-X57154Y542750D02*X57904Y543500D01*\r
-X59404D01*\r
-X60154Y542750D01*\r
-Y538250D01*\r
-X59404Y537500D02*X60154Y538250D01*\r
-X57904Y537500D02*X59404D01*\r
-X57154Y538250D02*X57904Y537500D01*\r
-Y540500D02*X60154D01*\r
-X61956Y538250D02*X62706Y537500D01*\r
-X61956Y542750D02*Y538250D01*\r
-Y542750D02*X62706Y543500D01*\r
-X64206D01*\r
-X64956Y542750D01*\r
-Y538250D01*\r
-X64206Y537500D02*X64956Y538250D01*\r
-X62706Y537500D02*X64206D01*\r
-X61956Y539000D02*X64956Y542000D01*\r
-X45000Y534249D02*X66757D01*\r
-X177500Y86600D02*Y83400D01*\r
-X175900Y85000D02*X179100D01*\r
-X177500Y66600D02*Y63400D01*\r
-X175900Y65000D02*X179100D01*\r
-X195000Y61600D02*Y58400D01*\r
-X193400Y60000D02*X196600D01*\r
-X205000Y61600D02*Y58400D01*\r
-X203400Y60000D02*X206600D01*\r
-X215000Y61600D02*Y58400D01*\r
-X213400Y60000D02*X216600D01*\r
-X225000Y61600D02*Y58400D01*\r
-X223400Y60000D02*X226600D01*\r
-X235000Y61600D02*Y58400D01*\r
-X233400Y60000D02*X236600D01*\r
-X245000Y61600D02*Y58400D01*\r
-X243400Y60000D02*X246600D01*\r
-X255000Y61600D02*Y58400D01*\r
-X253400Y60000D02*X256600D01*\r
-X255000Y91600D02*Y88400D01*\r
-X253400Y90000D02*X256600D01*\r
-X245000Y91600D02*Y88400D01*\r
-X243400Y90000D02*X246600D01*\r
-X235000Y91600D02*Y88400D01*\r
-X233400Y90000D02*X236600D01*\r
-X225000Y91600D02*Y88400D01*\r
-X223400Y90000D02*X226600D01*\r
-X215000Y91600D02*Y88400D01*\r
-X213400Y90000D02*X216600D01*\r
-X205000Y91600D02*Y88400D01*\r
-X203400Y90000D02*X206600D01*\r
-X195000Y91600D02*Y88400D01*\r
-X193400Y90000D02*X196600D01*\r
-X250000Y381600D02*Y378400D01*\r
-X248400Y380000D02*X251600D01*\r
-X230000Y381600D02*Y378400D01*\r
-X228400Y380000D02*X231600D01*\r
-X195000Y281600D02*Y278400D01*\r
-X193400Y280000D02*X196600D01*\r
-X205000Y281600D02*Y278400D01*\r
-X203400Y280000D02*X206600D01*\r
-X215000Y281600D02*Y278400D01*\r
-X213400Y280000D02*X216600D01*\r
-X225000Y281600D02*Y278400D01*\r
-X223400Y280000D02*X226600D01*\r
-X235000Y281600D02*Y278400D01*\r
-X233400Y280000D02*X236600D01*\r
-X245000Y281600D02*Y278400D01*\r
-X243400Y280000D02*X246600D01*\r
-X255000Y281600D02*Y278400D01*\r
-X253400Y280000D02*X256600D01*\r
-X255000Y311600D02*Y308400D01*\r
-X253400Y310000D02*X256600D01*\r
-X245000Y311600D02*Y308400D01*\r
-X243400Y310000D02*X246600D01*\r
-X235000Y311600D02*Y308400D01*\r
-X233400Y310000D02*X236600D01*\r
-X225000Y311600D02*Y308400D01*\r
-X223400Y310000D02*X226600D01*\r
-X215000Y311600D02*Y308400D01*\r
-X213400Y310000D02*X216600D01*\r
-X205000Y311600D02*Y308400D01*\r
-X203400Y310000D02*X206600D01*\r
-X195000Y311600D02*Y308400D01*\r
-X193400Y310000D02*X196600D01*\r
-X372500Y336600D02*Y333400D01*\r
-X370900Y335000D02*X374100D01*\r
-X382500Y336600D02*Y333400D01*\r
-X380900Y335000D02*X384100D01*\r
-X392500Y336600D02*Y333400D01*\r
-X390900Y335000D02*X394100D01*\r
-X402500Y336600D02*Y333400D01*\r
-X400900Y335000D02*X404100D01*\r
-X402500Y366600D02*Y363400D01*\r
-X400900Y365000D02*X404100D01*\r
-X392500Y366600D02*Y363400D01*\r
-X390900Y365000D02*X394100D01*\r
-X382500Y366600D02*Y363400D01*\r
-X380900Y365000D02*X384100D01*\r
-X372500Y366600D02*Y363400D01*\r
-X370900Y365000D02*X374100D01*\r
-X397500Y381600D02*Y378400D01*\r
-X395900Y380000D02*X399100D01*\r
-X377500Y381600D02*Y378400D01*\r
-X375900Y380000D02*X379100D01*\r
-X372500Y281600D02*Y278400D01*\r
-X370900Y280000D02*X374100D01*\r
-X382500Y281600D02*Y278400D01*\r
-X380900Y280000D02*X384100D01*\r
-X392500Y281600D02*Y278400D01*\r
-X390900Y280000D02*X394100D01*\r
-X402500Y281600D02*Y278400D01*\r
-X400900Y280000D02*X404100D01*\r
-X402500Y311600D02*Y308400D01*\r
-X400900Y310000D02*X404100D01*\r
-X392500Y311600D02*Y308400D01*\r
-X390900Y310000D02*X394100D01*\r
-X382500Y311600D02*Y308400D01*\r
-X380900Y310000D02*X384100D01*\r
-X372500Y311600D02*Y308400D01*\r
-X370900Y310000D02*X374100D01*\r
-X582500Y336600D02*Y333400D01*\r
-X580900Y335000D02*X584100D01*\r
-X592500Y336600D02*Y333400D01*\r
-X590900Y335000D02*X594100D01*\r
-X602500Y336600D02*Y333400D01*\r
-X600900Y335000D02*X604100D01*\r
-X612500Y336600D02*Y333400D01*\r
-X610900Y335000D02*X614100D01*\r
-X612500Y366600D02*Y363400D01*\r
-X610900Y365000D02*X614100D01*\r
-X602500Y366600D02*Y363400D01*\r
-X600900Y365000D02*X604100D01*\r
-X592500Y366600D02*Y363400D01*\r
-X590900Y365000D02*X594100D01*\r
-X582500Y366600D02*Y363400D01*\r
-X580900Y365000D02*X584100D01*\r
-X482500Y336600D02*Y333400D01*\r
-X480900Y335000D02*X484100D01*\r
-X492500Y336600D02*Y333400D01*\r
-X490900Y335000D02*X494100D01*\r
-X502500Y336600D02*Y333400D01*\r
-X500900Y335000D02*X504100D01*\r
-X512500Y336600D02*Y333400D01*\r
-X510900Y335000D02*X514100D01*\r
-X512500Y366600D02*Y363400D01*\r
-X510900Y365000D02*X514100D01*\r
-X502500Y366600D02*Y363400D01*\r
-X500900Y365000D02*X504100D01*\r
-X492500Y366600D02*Y363400D01*\r
-X490900Y365000D02*X494100D01*\r
-X482500Y366600D02*Y363400D01*\r
-X480900Y365000D02*X484100D01*\r
-X482500Y281600D02*Y278400D01*\r
-X480900Y280000D02*X484100D01*\r
-X492500Y281600D02*Y278400D01*\r
-X490900Y280000D02*X494100D01*\r
-X502500Y281600D02*Y278400D01*\r
-X500900Y280000D02*X504100D01*\r
-X512500Y281600D02*Y278400D01*\r
-X510900Y280000D02*X514100D01*\r
-X522500Y281600D02*Y278400D01*\r
-X520900Y280000D02*X524100D01*\r
-X532500Y281600D02*Y278400D01*\r
-X530900Y280000D02*X534100D01*\r
-X542500Y281600D02*Y278400D01*\r
-X540900Y280000D02*X544100D01*\r
-X552500Y281600D02*Y278400D01*\r
-X550900Y280000D02*X554100D01*\r
-X562500Y281600D02*Y278400D01*\r
-X560900Y280000D02*X564100D01*\r
-X572500Y281600D02*Y278400D01*\r
-X570900Y280000D02*X574100D01*\r
-X582500Y281600D02*Y278400D01*\r
-X580900Y280000D02*X584100D01*\r
-X592500Y281600D02*Y278400D01*\r
-X590900Y280000D02*X594100D01*\r
-X602500Y281600D02*Y278400D01*\r
-X600900Y280000D02*X604100D01*\r
-X612500Y281600D02*Y278400D01*\r
-X610900Y280000D02*X614100D01*\r
-X612500Y311600D02*Y308400D01*\r
-X610900Y310000D02*X614100D01*\r
-X602500Y311600D02*Y308400D01*\r
-X600900Y310000D02*X604100D01*\r
-X592500Y311600D02*Y308400D01*\r
-X590900Y310000D02*X594100D01*\r
-X582500Y311600D02*Y308400D01*\r
-X580900Y310000D02*X584100D01*\r
-X572500Y311600D02*Y308400D01*\r
-X570900Y310000D02*X574100D01*\r
-X562500Y311600D02*Y308400D01*\r
-X560900Y310000D02*X564100D01*\r
-X552500Y311600D02*Y308400D01*\r
-X550900Y310000D02*X554100D01*\r
-X542500Y311600D02*Y308400D01*\r
-X540900Y310000D02*X544100D01*\r
-X532500Y311600D02*Y308400D01*\r
-X530900Y310000D02*X534100D01*\r
-X522500Y311600D02*Y308400D01*\r
-X520900Y310000D02*X524100D01*\r
-X512500Y311600D02*Y308400D01*\r
-X510900Y310000D02*X514100D01*\r
-X502500Y311600D02*Y308400D01*\r
-X500900Y310000D02*X504100D01*\r
-X492500Y311600D02*Y308400D01*\r
-X490900Y310000D02*X494100D01*\r
-X482500Y311600D02*Y308400D01*\r
-X480900Y310000D02*X484100D01*\r
-X607500Y381600D02*Y378400D01*\r
-X605900Y380000D02*X609100D01*\r
-X587500Y381600D02*Y378400D01*\r
-X585900Y380000D02*X589100D01*\r
-X460000Y286600D02*Y283400D01*\r
-X458400Y285000D02*X461600D01*\r
-X460000Y306600D02*Y303400D01*\r
-X458400Y305000D02*X461600D01*\r
-X507500Y381600D02*Y378400D01*\r
-X505900Y380000D02*X509100D01*\r
-X487500Y381600D02*Y378400D01*\r
-X485900Y380000D02*X489100D01*\r
-X177500Y306600D02*Y303400D01*\r
-X175900Y305000D02*X179100D01*\r
-X177500Y286600D02*Y283400D01*\r
-X175900Y285000D02*X179100D01*\r
-X575000Y31600D02*Y28400D01*\r
-X573400Y30000D02*X576600D01*\r
-X575000Y51600D02*Y48400D01*\r
-X573400Y50000D02*X576600D01*\r
-X552500Y51600D02*Y48400D01*\r
-X550900Y50000D02*X554100D01*\r
-X552500Y31600D02*Y28400D01*\r
-X550900Y30000D02*X554100D01*\r
-X197500Y359100D02*Y355900D01*\r
-X195900Y357500D02*X199100D01*\r
-X177500Y359100D02*Y355900D01*\r
-X175900Y357500D02*X179100D01*\r
-X592500Y31600D02*Y28400D01*\r
-X590900Y30000D02*X594100D01*\r
-X592500Y51600D02*Y48400D01*\r
-X590900Y50000D02*X594100D01*\r
-X280000Y281600D02*Y278400D01*\r
-X278400Y280000D02*X281600D01*\r
-X290000Y281600D02*Y278400D01*\r
-X288400Y280000D02*X291600D01*\r
-X300000Y281600D02*Y278400D01*\r
-X298400Y280000D02*X301600D01*\r
-X310000Y281600D02*Y278400D01*\r
-X308400Y280000D02*X311600D01*\r
-X320000Y281600D02*Y278400D01*\r
-X318400Y280000D02*X321600D01*\r
-X330000Y281600D02*Y278400D01*\r
-X328400Y280000D02*X331600D01*\r
-X340000Y281600D02*Y278400D01*\r
-X338400Y280000D02*X341600D01*\r
-X350000Y281600D02*Y278400D01*\r
-X348400Y280000D02*X351600D01*\r
-X350000Y311600D02*Y308400D01*\r
-X348400Y310000D02*X351600D01*\r
-X340000Y311600D02*Y308400D01*\r
-X338400Y310000D02*X341600D01*\r
-X330000Y311600D02*Y308400D01*\r
-X328400Y310000D02*X331600D01*\r
-X320000Y311600D02*Y308400D01*\r
-X318400Y310000D02*X321600D01*\r
-X310000Y311600D02*Y308400D01*\r
-X308400Y310000D02*X311600D01*\r
-X300000Y311600D02*Y308400D01*\r
-X298400Y310000D02*X301600D01*\r
-X290000Y311600D02*Y308400D01*\r
-X288400Y310000D02*X291600D01*\r
-X280000Y311600D02*Y308400D01*\r
-X278400Y310000D02*X281600D01*\r
-X197500Y381600D02*Y378400D01*\r
-X195900Y380000D02*X199100D01*\r
-X177500Y381600D02*Y378400D01*\r
-X175900Y380000D02*X179100D01*\r
-X225000Y336600D02*Y333400D01*\r
-X223400Y335000D02*X226600D01*\r
-X235000Y336600D02*Y333400D01*\r
-X233400Y335000D02*X236600D01*\r
-X245000Y336600D02*Y333400D01*\r
-X243400Y335000D02*X246600D01*\r
-X255000Y336600D02*Y333400D01*\r
-X253400Y335000D02*X256600D01*\r
-X255000Y366600D02*Y363400D01*\r
-X253400Y365000D02*X256600D01*\r
-X245000Y366600D02*Y363400D01*\r
-X243400Y365000D02*X246600D01*\r
-X235000Y366600D02*Y363400D01*\r
-X233400Y365000D02*X236600D01*\r
-X225000Y366600D02*Y363400D01*\r
-X223400Y365000D02*X226600D01*\r
-X15000Y557850D02*Y554650D01*\r
-X13400Y556250D02*X16600D01*\r
-X135000Y558500D02*Y557750D01*\r
-X136500Y556250D01*\r
-X138000Y557750D01*\r
-Y558500D02*Y557750D01*\r
-X136500Y556250D02*Y552500D01*\r
-X139801Y555500D02*X142051D01*\r
-X139801Y552500D02*X142801D01*\r
-X139801Y558500D02*Y552500D01*\r
-Y558500D02*X142801D01*\r
-X147603D02*X148353Y557750D01*\r
-X145353Y558500D02*X147603D01*\r
-X144603Y557750D02*X145353Y558500D01*\r
-X144603Y557750D02*Y556250D01*\r
-X145353Y555500D01*\r
-X147603D01*\r
-X148353Y554750D01*\r
-Y553250D01*\r
-X147603Y552500D02*X148353Y553250D01*\r
-X145353Y552500D02*X147603D01*\r
-X144603Y553250D02*X145353Y552500D01*\r
-X135000Y549249D02*X150154D01*\r
-X98750Y552500D02*X100250D01*\r
-X99500Y558500D02*Y552500D01*\r
-X98000Y557000D02*X99500Y558500D01*\r
-X102051Y557750D02*X102801Y558500D01*\r
-X104301D01*\r
-X105051Y557750D01*\r
-Y553250D01*\r
-X104301Y552500D02*X105051Y553250D01*\r
-X102801Y552500D02*X104301D01*\r
-X102051Y553250D02*X102801Y552500D01*\r
-Y555500D02*X105051D01*\r
-X109103Y558500D02*X109853Y557750D01*\r
-X107603Y558500D02*X109103D01*\r
-X106853Y557750D02*X107603Y558500D01*\r
-X106853Y557750D02*Y553250D01*\r
-X107603Y552500D01*\r
-X109103Y555500D02*X109853Y554750D01*\r
-X106853Y555500D02*X109103D01*\r
-X107603Y552500D02*X109103D01*\r
-X109853Y553250D01*\r
-Y554750D02*Y553250D01*\r
-X98000Y549249D02*X111654D01*\r
-X45000Y553250D02*X45750Y552500D01*\r
-X45000Y557750D02*Y553250D01*\r
-Y557750D02*X45750Y558500D01*\r
-X47250D01*\r
-X48000Y557750D01*\r
-Y553250D01*\r
-X47250Y552500D02*X48000Y553250D01*\r
-X45750Y552500D02*X47250D01*\r
-X45000Y554000D02*X48000Y557000D01*\r
-X49801Y552500D02*X50551D01*\r
-X52353Y553250D02*X53103Y552500D01*\r
-X52353Y557750D02*Y553250D01*\r
-Y557750D02*X53103Y558500D01*\r
-X54603D01*\r
-X55353Y557750D01*\r
-Y553250D01*\r
-X54603Y552500D02*X55353Y553250D01*\r
-X53103Y552500D02*X54603D01*\r
-X52353Y554000D02*X55353Y557000D01*\r
-X57154Y557750D02*X57904Y558500D01*\r
-X60154D01*\r
-X60904Y557750D01*\r
-Y556250D01*\r
-X57154Y552500D02*X60904Y556250D01*\r
-X57154Y552500D02*X60904D01*\r
-X62706Y553250D02*X63456Y552500D01*\r
-X62706Y554750D02*Y553250D01*\r
-Y554750D02*X63456Y555500D01*\r
-X64956D01*\r
-X65706Y554750D01*\r
-Y553250D01*\r
-X64956Y552500D02*X65706Y553250D01*\r
-X63456Y552500D02*X64956D01*\r
-X62706Y556250D02*X63456Y555500D01*\r
-X62706Y557750D02*Y556250D01*\r
-Y557750D02*X63456Y558500D01*\r
-X64956D01*\r
-X65706Y557750D01*\r
-Y556250D01*\r
-X64956Y555500D02*X65706Y556250D01*\r
-X45000Y549249D02*X67507D01*\r
-X102500Y280000D02*Y278400D01*\r
-Y280000D02*X103886Y280800D01*\r
-X102500Y280000D02*X101114Y280800D01*\r
-X365000Y92500D02*Y90900D01*\r
-Y92500D02*X366386Y93300D01*\r
-X365000Y92500D02*X363614Y93300D01*\r
-X282500Y165000D02*Y163400D01*\r
-Y165000D02*X283886Y165800D01*\r
-X282500Y165000D02*X281114Y165800D01*\r
-X315000Y130000D02*Y128400D01*\r
-Y130000D02*X316386Y130800D01*\r
-X315000Y130000D02*X313614Y130800D01*\r
-X427500Y392500D02*Y390900D01*\r
-Y392500D02*X428886Y393300D01*\r
-X427500Y392500D02*X426114Y393300D01*\r
-X402500Y392500D02*Y390900D01*\r
-Y392500D02*X403886Y393300D01*\r
-X402500Y392500D02*X401114Y393300D01*\r
-X360000Y182500D02*Y180900D01*\r
-Y182500D02*X361386Y183300D01*\r
-X360000Y182500D02*X358614Y183300D01*\r
-X87500Y275000D02*Y273400D01*\r
-Y275000D02*X88886Y275800D01*\r
-X87500Y275000D02*X86114Y275800D01*\r
-X247500Y392500D02*Y390900D01*\r
-Y392500D02*X248886Y393300D01*\r
-X247500Y392500D02*X246114Y393300D01*\r
-X367500Y317500D02*Y315900D01*\r
-Y317500D02*X368886Y318300D01*\r
-X367500Y317500D02*X366114Y318300D01*\r
-X225000Y222500D02*Y220900D01*\r
-Y222500D02*X226386Y223300D01*\r
-X225000Y222500D02*X223614Y223300D01*\r
-X225000Y240000D02*Y238400D01*\r
-Y240000D02*X226386Y240800D01*\r
-X225000Y240000D02*X223614Y240800D01*\r
-X442500Y345000D02*Y343400D01*\r
-Y345000D02*X443886Y345800D01*\r
-X442500Y345000D02*X441114Y345800D01*\r
-X352500Y240000D02*Y238400D01*\r
-Y240000D02*X353886Y240800D01*\r
-X352500Y240000D02*X351114Y240800D01*\r
-X507500Y270000D02*Y268400D01*\r
-Y270000D02*X508886Y270800D01*\r
-X507500Y270000D02*X506114Y270800D01*\r
-X345000Y267500D02*Y265900D01*\r
-Y267500D02*X346386Y268300D01*\r
-X345000Y267500D02*X343614Y268300D01*\r
-X507500Y295000D02*Y293400D01*\r
-Y295000D02*X508886Y295800D01*\r
-X507500Y295000D02*X506114Y295800D01*\r
-X315000Y267500D02*Y265900D01*\r
-Y267500D02*X316386Y268300D01*\r
-X315000Y267500D02*X313614Y268300D01*\r
-X477500Y387500D02*Y385900D01*\r
-Y387500D02*X478886Y388300D01*\r
-X477500Y387500D02*X476114Y388300D01*\r
-X477500Y295000D02*Y293400D01*\r
-Y295000D02*X478886Y295800D01*\r
-X477500Y295000D02*X476114Y295800D01*\r
-X417500Y370000D02*Y368400D01*\r
-Y370000D02*X418886Y370800D01*\r
-X417500Y370000D02*X416114Y370800D01*\r
-X295000Y275000D02*Y273400D01*\r
-Y275000D02*X296386Y275800D01*\r
-X295000Y275000D02*X293614Y275800D01*\r
-X155000Y42500D02*Y40900D01*\r
-Y42500D02*X156386Y43300D01*\r
-X155000Y42500D02*X153614Y43300D01*\r
-X360000Y260000D02*Y258400D01*\r
-Y260000D02*X361386Y260800D01*\r
-X360000Y260000D02*X358614Y260800D01*\r
-X425000Y295000D02*Y293400D01*\r
-Y295000D02*X426386Y295800D01*\r
-X425000Y295000D02*X423614Y295800D01*\r
-X205000Y52500D02*Y50900D01*\r
-Y52500D02*X206386Y53300D01*\r
-X205000Y52500D02*X203614Y53300D01*\r
-X547500Y357500D02*Y355900D01*\r
-Y357500D02*X548886Y358300D01*\r
-X547500Y357500D02*X546114Y358300D01*\r
-X532500Y352500D02*Y350900D01*\r
-Y352500D02*X533886Y353300D01*\r
-X532500Y352500D02*X531114Y353300D01*\r
-X562500Y347500D02*Y345900D01*\r
-Y347500D02*X563886Y348300D01*\r
-X562500Y347500D02*X561114Y348300D01*\r
-X332500Y235000D02*Y233400D01*\r
-Y235000D02*X333886Y235800D01*\r
-X332500Y235000D02*X331114Y235800D01*\r
-X492500Y235000D02*Y233400D01*\r
-Y235000D02*X493886Y235800D01*\r
-X492500Y235000D02*X491114Y235800D01*\r
-X210000Y370000D02*Y368400D01*\r
-Y370000D02*X211386Y370800D01*\r
-X210000Y370000D02*X208614Y370800D01*\r
-X592500Y295000D02*Y293400D01*\r
-Y295000D02*X593886Y295800D01*\r
-X592500Y295000D02*X591114Y295800D01*\r
-X482500Y260000D02*Y258400D01*\r
-Y260000D02*X483886Y260800D01*\r
-X482500Y260000D02*X481114Y260800D01*\r
-X477500Y305000D02*Y303400D01*\r
-Y305000D02*X478886Y305800D01*\r
-X477500Y305000D02*X476114Y305800D01*\r
-X160000Y222500D02*Y220900D01*\r
-Y222500D02*X161386Y223300D01*\r
-X160000Y222500D02*X158614Y223300D01*\r
-X480000Y300000D02*Y298400D01*\r
-Y300000D02*X481386Y300800D01*\r
-X480000Y300000D02*X478614Y300800D01*\r
-X92500Y270000D02*Y268400D01*\r
-Y270000D02*X93886Y270800D01*\r
-X92500Y270000D02*X91114Y270800D01*\r
-X397500Y267500D02*Y265900D01*\r
-Y267500D02*X398886Y268300D01*\r
-X397500Y267500D02*X396114Y268300D01*\r
-X442500Y392500D02*Y390900D01*\r
-Y392500D02*X443886Y393300D01*\r
-X442500Y392500D02*X441114Y393300D01*\r
-X365000Y255000D02*Y253400D01*\r
-Y255000D02*X366386Y255800D01*\r
-X365000Y255000D02*X363614Y255800D01*\r
-X417500Y400000D02*Y398400D01*\r
-Y400000D02*X418886Y400800D01*\r
-X417500Y400000D02*X416114Y400800D01*\r
-X565000Y250000D02*Y248400D01*\r
-Y250000D02*X566386Y250800D01*\r
-X565000Y250000D02*X563614Y250800D01*\r
-X435000Y365000D02*Y363400D01*\r
-Y365000D02*X436386Y365800D01*\r
-X435000Y365000D02*X433614Y365800D01*\r
-X305000Y270000D02*Y268400D01*\r
-Y270000D02*X306386Y270800D01*\r
-X305000Y270000D02*X303614Y270800D01*\r
-X442500Y295000D02*Y293400D01*\r
-Y295000D02*X443886Y295800D01*\r
-X442500Y295000D02*X441114Y295800D01*\r
-X102500Y297500D02*Y295900D01*\r
-Y297500D02*X103886Y298300D01*\r
-X102500Y297500D02*X101114Y298300D01*\r
-X377500Y327500D02*Y325900D01*\r
-Y327500D02*X378886Y328300D01*\r
-X377500Y327500D02*X376114Y328300D01*\r
-X352500Y292500D02*Y290900D01*\r
-Y292500D02*X353886Y293300D01*\r
-X352500Y292500D02*X351114Y293300D01*\r
-X350000Y287500D02*Y285900D01*\r
-Y287500D02*X351386Y288300D01*\r
-X350000Y287500D02*X348614Y288300D01*\r
-X372500Y260000D02*Y258400D01*\r
-Y260000D02*X373886Y260800D01*\r
-X372500Y260000D02*X371114Y260800D01*\r
-X310000Y317500D02*Y315900D01*\r
-Y317500D02*X311386Y318300D01*\r
-X310000Y317500D02*X308614Y318300D01*\r
-X215000Y47500D02*Y45900D01*\r
-Y47500D02*X216386Y48300D01*\r
-X215000Y47500D02*X213614Y48300D01*\r
-X285000Y302500D02*Y300900D01*\r
-Y302500D02*X286386Y303300D01*\r
-X285000Y302500D02*X283614Y303300D01*\r
-X225000Y42500D02*Y40900D01*\r
-Y42500D02*X226386Y43300D01*\r
-X225000Y42500D02*X223614Y43300D01*\r
-X377500Y297500D02*Y295900D01*\r
-Y297500D02*X378886Y298300D01*\r
-X377500Y297500D02*X376114Y298300D01*\r
-X315000Y275000D02*Y273400D01*\r
-Y275000D02*X316386Y275800D01*\r
-X315000Y275000D02*X313614Y275800D01*\r
-X325000Y250000D02*Y248400D01*\r
-Y250000D02*X326386Y250800D01*\r
-X325000Y250000D02*X323614Y250800D01*\r
-X527500Y325000D02*Y323400D01*\r
-Y325000D02*X528886Y325800D01*\r
-X527500Y325000D02*X526114Y325800D01*\r
-X532500Y322500D02*Y320900D01*\r
-Y322500D02*X533886Y323300D01*\r
-X532500Y322500D02*X531114Y323300D01*\r
-X545000Y265000D02*Y263400D01*\r
-Y265000D02*X546386Y265800D01*\r
-X545000Y265000D02*X543614Y265800D01*\r
-X557500Y237500D02*Y235900D01*\r
-Y237500D02*X558886Y238300D01*\r
-X557500Y237500D02*X556114Y238300D01*\r
-X612500Y322500D02*Y320900D01*\r
-Y322500D02*X613886Y323300D01*\r
-X612500Y322500D02*X611114Y323300D01*\r
-X200000Y260000D02*Y258400D01*\r
-Y260000D02*X201386Y260800D01*\r
-X200000Y260000D02*X198614Y260800D01*\r
-X155000Y135000D02*Y133400D01*\r
-Y135000D02*X156386Y135800D01*\r
-X155000Y135000D02*X153614Y135800D01*\r
-X165000Y52500D02*Y50900D01*\r
-Y52500D02*X166386Y53300D01*\r
-X165000Y52500D02*X163614Y53300D01*\r
-X160000Y47500D02*Y45900D01*\r
-Y47500D02*X161386Y48300D01*\r
-X160000Y47500D02*X158614Y48300D01*\r
-X200000Y287500D02*Y285900D01*\r
-Y287500D02*X201386Y288300D01*\r
-X200000Y287500D02*X198614Y288300D01*\r
-X460000Y340000D02*Y338400D01*\r
-Y340000D02*X461386Y340800D01*\r
-X460000Y340000D02*X458614Y340800D01*\r
-X335000Y372500D02*Y370900D01*\r
-Y372500D02*X336386Y373300D01*\r
-X335000Y372500D02*X333614Y373300D01*\r
-X15000Y571250D02*Y569650D01*\r
-Y571250D02*X16386Y572050D01*\r
-X15000Y571250D02*X13614Y572050D01*\r
-X135000Y573500D02*Y572750D01*\r
-X136500Y571250D01*\r
-X138000Y572750D01*\r
-Y573500D02*Y572750D01*\r
-X136500Y571250D02*Y567500D01*\r
-X139801Y570500D02*X142051D01*\r
-X139801Y567500D02*X142801D01*\r
-X139801Y573500D02*Y567500D01*\r
-Y573500D02*X142801D01*\r
-X147603D02*X148353Y572750D01*\r
-X145353Y573500D02*X147603D01*\r
-X144603Y572750D02*X145353Y573500D01*\r
-X144603Y572750D02*Y571250D01*\r
-X145353Y570500D01*\r
-X147603D01*\r
-X148353Y569750D01*\r
-Y568250D01*\r
-X147603Y567500D02*X148353Y568250D01*\r
-X145353Y567500D02*X147603D01*\r
-X144603Y568250D02*X145353Y567500D01*\r
-X135000Y564249D02*X150154D01*\r
-X98000Y567500D02*X101750Y571250D01*\r
-Y573500D02*Y571250D01*\r
-X98000Y573500D02*X101750D01*\r
-X103551Y568250D02*X104301Y567500D01*\r
-X103551Y572750D02*Y568250D01*\r
-Y572750D02*X104301Y573500D01*\r
-X105801D01*\r
-X106551Y572750D01*\r
-Y568250D01*\r
-X105801Y567500D02*X106551Y568250D01*\r
-X104301Y567500D02*X105801D01*\r
-X103551Y569000D02*X106551Y572000D01*\r
-X98000Y564249D02*X108353D01*\r
-X45000Y568250D02*X45750Y567500D01*\r
-X45000Y572750D02*Y568250D01*\r
-Y572750D02*X45750Y573500D01*\r
-X47250D01*\r
-X48000Y572750D01*\r
-Y568250D01*\r
-X47250Y567500D02*X48000Y568250D01*\r
-X45750Y567500D02*X47250D01*\r
-X45000Y569000D02*X48000Y572000D01*\r
-X49801Y567500D02*X50551D01*\r
-X52353Y568250D02*X53103Y567500D01*\r
-X52353Y572750D02*Y568250D01*\r
-Y572750D02*X53103Y573500D01*\r
-X54603D01*\r
-X55353Y572750D01*\r
-Y568250D01*\r
-X54603Y567500D02*X55353Y568250D01*\r
-X53103Y567500D02*X54603D01*\r
-X52353Y569000D02*X55353Y572000D01*\r
-X57154Y572750D02*X57904Y573500D01*\r
-X60154D01*\r
-X60904Y572750D01*\r
-Y571250D01*\r
-X57154Y567500D02*X60904Y571250D01*\r
-X57154Y567500D02*X60904D01*\r
-X62706Y568250D02*X63456Y567500D01*\r
-X62706Y572750D02*Y568250D01*\r
-Y572750D02*X63456Y573500D01*\r
-X64956D01*\r
-X65706Y572750D01*\r
-Y568250D01*\r
-X64956Y567500D02*X65706Y568250D01*\r
-X63456Y567500D02*X64956D01*\r
-X62706Y569000D02*X65706Y572000D01*\r
-X45000Y564249D02*X67507D01*\r
-X3000Y588500D02*X3750Y587750D01*\r
-X750Y588500D02*X3000D01*\r
-X0Y587750D02*X750Y588500D01*\r
-X0Y587750D02*Y586250D01*\r
-X750Y585500D01*\r
-X3000D01*\r
-X3750Y584750D01*\r
-Y583250D01*\r
-X3000Y582500D02*X3750Y583250D01*\r
-X750Y582500D02*X3000D01*\r
-X0Y583250D02*X750Y582500D01*\r
-X5551Y585500D02*Y583250D01*\r
-X6301Y582500D01*\r
-X8551Y585500D02*Y581000D01*\r
-X7801Y580250D02*X8551Y581000D01*\r
-X6301Y580250D02*X7801D01*\r
-X5551Y581000D02*X6301Y580250D01*\r
-Y582500D02*X7801D01*\r
-X8551Y583250D01*\r
-X11103Y584750D02*Y582500D01*\r
-Y584750D02*X11853Y585500D01*\r
-X12603D01*\r
-X13353Y584750D01*\r
-Y582500D01*\r
-Y584750D02*X14103Y585500D01*\r
-X14853D01*\r
-X15603Y584750D01*\r
-Y582500D01*\r
-X10353Y585500D02*X11103Y584750D01*\r
-X17404Y588500D02*Y582500D01*\r
-Y583250D02*X18154Y582500D01*\r
-X19654D01*\r
-X20404Y583250D01*\r
-Y584750D02*Y583250D01*\r
-X19654Y585500D02*X20404Y584750D01*\r
-X18154Y585500D02*X19654D01*\r
-X17404Y584750D02*X18154Y585500D01*\r
-X22206Y584750D02*Y583250D01*\r
-Y584750D02*X22956Y585500D01*\r
-X24456D01*\r
-X25206Y584750D01*\r
-Y583250D01*\r
-X24456Y582500D02*X25206Y583250D01*\r
-X22956Y582500D02*X24456D01*\r
-X22206Y583250D02*X22956Y582500D01*\r
-X27007Y588500D02*Y583250D01*\r
-X27757Y582500D01*\r
-X41750Y588500D02*Y582500D01*\r
-X44000Y588500D02*X44750Y587750D01*\r
-Y583250D01*\r
-X44000Y582500D02*X44750Y583250D01*\r
-X41000Y582500D02*X44000D01*\r
-X41000Y588500D02*X44000D01*\r
-X46551Y587000D02*Y586250D01*\r
-Y584750D02*Y582500D01*\r
-X50303Y585500D02*X51053Y584750D01*\r
-X48803Y585500D02*X50303D01*\r
-X48053Y584750D02*X48803Y585500D01*\r
-X48053Y584750D02*Y583250D01*\r
-X48803Y582500D01*\r
-X51053Y585500D02*Y583250D01*\r
-X51803Y582500D01*\r
-X48803D02*X50303D01*\r
-X51053Y583250D01*\r
-X54354Y584750D02*Y582500D01*\r
-Y584750D02*X55104Y585500D01*\r
-X55854D01*\r
-X56604Y584750D01*\r
-Y582500D01*\r
-Y584750D02*X57354Y585500D01*\r
-X58104D01*\r
-X58854Y584750D01*\r
-Y582500D01*\r
-X53604Y585500D02*X54354Y584750D01*\r
-X60656Y582500D02*X61406D01*\r
-X65907Y583250D02*X66657Y582500D01*\r
-X65907Y587750D02*X66657Y588500D01*\r
-X65907Y587750D02*Y583250D01*\r
-X68459Y588500D02*X69959D01*\r
-X69209D02*Y582500D01*\r
-X68459D02*X69959D01*\r
-X72510Y584750D02*Y582500D01*\r
-Y584750D02*X73260Y585500D01*\r
-X74010D01*\r
-X74760Y584750D01*\r
-Y582500D01*\r
-X71760Y585500D02*X72510Y584750D01*\r
-X77312Y585500D02*X79562D01*\r
-X76562Y584750D02*X77312Y585500D01*\r
-X76562Y584750D02*Y583250D01*\r
-X77312Y582500D01*\r
-X79562D01*\r
-X81363Y588500D02*Y582500D01*\r
-Y584750D02*X82113Y585500D01*\r
-X83613D01*\r
-X84363Y584750D01*\r
-Y582500D01*\r
-X86165Y588500D02*X86915Y587750D01*\r
-Y583250D01*\r
-X86165Y582500D02*X86915Y583250D01*\r
-X95750Y582500D02*X98000D01*\r
-X95000Y583250D02*X95750Y582500D01*\r
-X95000Y587750D02*Y583250D01*\r
-Y587750D02*X95750Y588500D01*\r
-X98000D01*\r
-X99801Y584750D02*Y583250D01*\r
-Y584750D02*X100551Y585500D01*\r
-X102051D01*\r
-X102801Y584750D01*\r
-Y583250D01*\r
-X102051Y582500D02*X102801Y583250D01*\r
-X100551Y582500D02*X102051D01*\r
-X99801Y583250D02*X100551Y582500D01*\r
-X104603Y585500D02*Y583250D01*\r
-X105353Y582500D01*\r
-X106853D01*\r
-X107603Y583250D01*\r
-Y585500D02*Y583250D01*\r
-X110154Y584750D02*Y582500D01*\r
-Y584750D02*X110904Y585500D01*\r
-X111654D01*\r
-X112404Y584750D01*\r
-Y582500D01*\r
-X109404Y585500D02*X110154Y584750D01*\r
-X114956Y588500D02*Y583250D01*\r
-X115706Y582500D01*\r
-X114206Y586250D02*X115706D01*\r
-X130750Y588500D02*Y582500D01*\r
-X130000Y588500D02*X133000D01*\r
-X133750Y587750D01*\r
-Y586250D01*\r
-X133000Y585500D02*X133750Y586250D01*\r
-X130750Y585500D02*X133000D01*\r
-X135551Y588500D02*Y583250D01*\r
-X136301Y582500D01*\r
-X140053Y585500D02*X140803Y584750D01*\r
-X138553Y585500D02*X140053D01*\r
-X137803Y584750D02*X138553Y585500D01*\r
-X137803Y584750D02*Y583250D01*\r
-X138553Y582500D01*\r
-X140803Y585500D02*Y583250D01*\r
-X141553Y582500D01*\r
-X138553D02*X140053D01*\r
-X140803Y583250D01*\r
-X144104Y588500D02*Y583250D01*\r
-X144854Y582500D01*\r
-X143354Y586250D02*X144854D01*\r
-X147106Y582500D02*X149356D01*\r
-X146356Y583250D02*X147106Y582500D01*\r
-X146356Y584750D02*Y583250D01*\r
-Y584750D02*X147106Y585500D01*\r
-X148606D01*\r
-X149356Y584750D01*\r
-X146356Y584000D02*X149356D01*\r
-Y584750D02*Y584000D01*\r
-X154157Y588500D02*Y582500D01*\r
-X153407D02*X154157Y583250D01*\r
-X151907Y582500D02*X153407D01*\r
-X151157Y583250D02*X151907Y582500D01*\r
-X151157Y584750D02*Y583250D01*\r
-Y584750D02*X151907Y585500D01*\r
-X153407D01*\r
-X154157Y584750D01*\r
-X157459Y585500D02*Y584750D01*\r
-Y583250D02*Y582500D01*\r
-X155959Y587750D02*Y587000D01*\r
-Y587750D02*X156709Y588500D01*\r
-X158209D01*\r
-X158959Y587750D01*\r
-Y587000D01*\r
-X157459Y585500D02*X158959Y587000D01*\r
-X0Y603500D02*X3000D01*\r
-X1500D02*Y597500D01*\r
-X4801Y603500D02*Y597500D01*\r
-Y599750D02*X5551Y600500D01*\r
-X7051D01*\r
-X7801Y599750D01*\r
-Y597500D01*\r
-X10353D02*X12603D01*\r
-X9603Y598250D02*X10353Y597500D01*\r
-X9603Y599750D02*Y598250D01*\r
-Y599750D02*X10353Y600500D01*\r
-X11853D01*\r
-X12603Y599750D01*\r
-X9603Y599000D02*X12603D01*\r
-Y599750D02*Y599000D01*\r
-X15154Y599750D02*Y597500D01*\r
-Y599750D02*X15904Y600500D01*\r
-X17404D01*\r
-X14404D02*X15154Y599750D01*\r
-X19956Y597500D02*X22206D01*\r
-X19206Y598250D02*X19956Y597500D01*\r
-X19206Y599750D02*Y598250D01*\r
-Y599750D02*X19956Y600500D01*\r
-X21456D01*\r
-X22206Y599750D01*\r
-X19206Y599000D02*X22206D01*\r
-Y599750D02*Y599000D01*\r
-X28957Y600500D02*X29707Y599750D01*\r
-X27457Y600500D02*X28957D01*\r
-X26707Y599750D02*X27457Y600500D01*\r
-X26707Y599750D02*Y598250D01*\r
-X27457Y597500D01*\r
-X29707Y600500D02*Y598250D01*\r
-X30457Y597500D01*\r
-X27457D02*X28957D01*\r
-X29707Y598250D01*\r
-X33009Y599750D02*Y597500D01*\r
-Y599750D02*X33759Y600500D01*\r
-X35259D01*\r
-X32259D02*X33009Y599750D01*\r
-X37810Y597500D02*X40060D01*\r
-X37060Y598250D02*X37810Y597500D01*\r
-X37060Y599750D02*Y598250D01*\r
-Y599750D02*X37810Y600500D01*\r
-X39310D01*\r
-X40060Y599750D01*\r
-X37060Y599000D02*X40060D01*\r
-Y599750D02*Y599000D01*\r
-X45312Y597500D02*X46812D01*\r
-X46062Y603500D02*Y597500D01*\r
-X44562Y602000D02*X46062Y603500D01*\r
-X49363Y597500D02*X50863D01*\r
-X50113Y603500D02*Y597500D01*\r
-X48613Y602000D02*X50113Y603500D01*\r
-X58365D02*Y597500D01*\r
-X57615D02*X58365Y598250D01*\r
-X56115Y597500D02*X57615D01*\r
-X55365Y598250D02*X56115Y597500D01*\r
-X55365Y599750D02*Y598250D01*\r
-Y599750D02*X56115Y600500D01*\r
-X57615D01*\r
-X58365Y599750D01*\r
-X60166Y602000D02*Y601250D01*\r
-Y599750D02*Y597500D01*\r
-X62418Y602750D02*Y597500D01*\r
-Y602750D02*X63168Y603500D01*\r
-X63918D01*\r
-X61668Y600500D02*X63168D01*\r
-X66169Y602750D02*Y597500D01*\r
-Y602750D02*X66919Y603500D01*\r
-X67669D01*\r
-X65419Y600500D02*X66919D01*\r
-X69921Y597500D02*X72171D01*\r
-X69171Y598250D02*X69921Y597500D01*\r
-X69171Y599750D02*Y598250D01*\r
-Y599750D02*X69921Y600500D01*\r
-X71421D01*\r
-X72171Y599750D01*\r
-X69171Y599000D02*X72171D01*\r
-Y599750D02*Y599000D01*\r
-X74722Y599750D02*Y597500D01*\r
-Y599750D02*X75472Y600500D01*\r
-X76972D01*\r
-X73972D02*X74722Y599750D01*\r
-X79524Y597500D02*X81774D01*\r
-X78774Y598250D02*X79524Y597500D01*\r
-X78774Y599750D02*Y598250D01*\r
-Y599750D02*X79524Y600500D01*\r
-X81024D01*\r
-X81774Y599750D01*\r
-X78774Y599000D02*X81774D01*\r
-Y599750D02*Y599000D01*\r
-X84325Y599750D02*Y597500D01*\r
-Y599750D02*X85075Y600500D01*\r
-X85825D01*\r
-X86575Y599750D01*\r
-Y597500D01*\r
-X83575Y600500D02*X84325Y599750D01*\r
-X89127Y603500D02*Y598250D01*\r
-X89877Y597500D01*\r
-X88377Y601250D02*X89877D01*\r
-X97078Y603500D02*Y597500D01*\r
-X96328D02*X97078Y598250D01*\r
-X94828Y597500D02*X96328D01*\r
-X94078Y598250D02*X94828Y597500D01*\r
-X94078Y599750D02*Y598250D01*\r
-Y599750D02*X94828Y600500D01*\r
-X96328D01*\r
-X97078Y599750D01*\r
-X99630D02*Y597500D01*\r
-Y599750D02*X100380Y600500D01*\r
-X101880D01*\r
-X98880D02*X99630Y599750D01*\r
-X103681Y602000D02*Y601250D01*\r
-Y599750D02*Y597500D01*\r
-X105183Y603500D02*Y598250D01*\r
-X105933Y597500D01*\r
-X107434Y603500D02*Y598250D01*\r
-X108184Y597500D01*\r
-X113136D02*X115386D01*\r
-X116136Y598250D01*\r
-X115386Y599000D02*X116136Y598250D01*\r
-X113136Y599000D02*X115386D01*\r
-X112386Y599750D02*X113136Y599000D01*\r
-X112386Y599750D02*X113136Y600500D01*\r
-X115386D01*\r
-X116136Y599750D01*\r
-X112386Y598250D02*X113136Y597500D01*\r
-X117937Y602000D02*Y601250D01*\r
-Y599750D02*Y597500D01*\r
-X119439Y600500D02*X122439D01*\r
-X119439Y597500D02*X122439Y600500D01*\r
-X119439Y597500D02*X122439D01*\r
-X124990D02*X127240D01*\r
-X124240Y598250D02*X124990Y597500D01*\r
-X124240Y599750D02*Y598250D01*\r
-Y599750D02*X124990Y600500D01*\r
-X126490D01*\r
-X127240Y599750D01*\r
-X124240Y599000D02*X127240D01*\r
-Y599750D02*Y599000D01*\r
-X129792Y597500D02*X132042D01*\r
-X132792Y598250D01*\r
-X132042Y599000D02*X132792Y598250D01*\r
-X129792Y599000D02*X132042D01*\r
-X129042Y599750D02*X129792Y599000D01*\r
-X129042Y599750D02*X129792Y600500D01*\r
-X132042D01*\r
-X132792Y599750D01*\r
-X129042Y598250D02*X129792Y597500D01*\r
-X137293Y600500D02*Y598250D01*\r
-X138043Y597500D01*\r
-X139543D01*\r
-X140293Y598250D01*\r
-Y600500D02*Y598250D01*\r
-X142845Y597500D02*X145095D01*\r
-X145845Y598250D01*\r
-X145095Y599000D02*X145845Y598250D01*\r
-X142845Y599000D02*X145095D01*\r
-X142095Y599750D02*X142845Y599000D01*\r
-X142095Y599750D02*X142845Y600500D01*\r
-X145095D01*\r
-X145845Y599750D01*\r
-X142095Y598250D02*X142845Y597500D01*\r
-X148396D02*X150646D01*\r
-X147646Y598250D02*X148396Y597500D01*\r
-X147646Y599750D02*Y598250D01*\r
-Y599750D02*X148396Y600500D01*\r
-X149896D01*\r
-X150646Y599750D01*\r
-X147646Y599000D02*X150646D01*\r
-Y599750D02*Y599000D01*\r
-X155448Y603500D02*Y597500D01*\r
-X154698D02*X155448Y598250D01*\r
-X153198Y597500D02*X154698D01*\r
-X152448Y598250D02*X153198Y597500D01*\r
-X152448Y599750D02*Y598250D01*\r
-Y599750D02*X153198Y600500D01*\r
-X154698D01*\r
-X155448Y599750D01*\r
-X159949Y602000D02*Y601250D01*\r
-Y599750D02*Y597500D01*\r
-X162201Y599750D02*Y597500D01*\r
-Y599750D02*X162951Y600500D01*\r
-X163701D01*\r
-X164451Y599750D01*\r
-Y597500D01*\r
-X161451Y600500D02*X162201Y599750D01*\r
-X169702Y603500D02*Y598250D01*\r
-X170452Y597500D01*\r
-X168952Y601250D02*X170452D01*\r
-X171954Y603500D02*Y597500D01*\r
-Y599750D02*X172704Y600500D01*\r
-X174204D01*\r
-X174954Y599750D01*\r
-Y597500D01*\r
-X176755Y602000D02*Y601250D01*\r
-Y599750D02*Y597500D01*\r
-X179007D02*X181257D01*\r
-X182007Y598250D01*\r
-X181257Y599000D02*X182007Y598250D01*\r
-X179007Y599000D02*X181257D01*\r
-X178257Y599750D02*X179007Y599000D01*\r
-X178257Y599750D02*X179007Y600500D01*\r
-X181257D01*\r
-X182007Y599750D01*\r
-X178257Y598250D02*X179007Y597500D01*\r
-X186508Y603500D02*Y598250D01*\r
-X187258Y597500D01*\r
-X191010Y600500D02*X191760Y599750D01*\r
-X189510Y600500D02*X191010D01*\r
-X188760Y599750D02*X189510Y600500D01*\r
-X188760Y599750D02*Y598250D01*\r
-X189510Y597500D01*\r
-X191760Y600500D02*Y598250D01*\r
-X192510Y597500D01*\r
-X189510D02*X191010D01*\r
-X191760Y598250D01*\r
-X194311Y600500D02*Y598250D01*\r
-X195061Y597500D01*\r
-X197311Y600500D02*Y596000D01*\r
-X196561Y595250D02*X197311Y596000D01*\r
-X195061Y595250D02*X196561D01*\r
-X194311Y596000D02*X195061Y595250D01*\r
-Y597500D02*X196561D01*\r
-X197311Y598250D01*\r
-X199113Y599750D02*Y598250D01*\r
-Y599750D02*X199863Y600500D01*\r
-X201363D01*\r
-X202113Y599750D01*\r
-Y598250D01*\r
-X201363Y597500D02*X202113Y598250D01*\r
-X199863Y597500D02*X201363D01*\r
-X199113Y598250D02*X199863Y597500D01*\r
-X203914Y600500D02*Y598250D01*\r
-X204664Y597500D01*\r
-X206164D01*\r
-X206914Y598250D01*\r
-Y600500D02*Y598250D01*\r
-X209466Y603500D02*Y598250D01*\r
-X210216Y597500D01*\r
-X208716Y601250D02*X210216D01*\r
-X211717Y596000D02*X213217Y597500D01*\r
-X217719Y600500D02*X220719Y603500D01*\r
-X217719Y600500D02*X221469D01*\r
-X220719Y603500D02*Y597500D01*\r
-X223270D02*X226270Y600500D01*\r
-Y602750D02*Y600500D01*\r
-X225520Y603500D02*X226270Y602750D01*\r
-X224020Y603500D02*X225520D01*\r
-X223270Y602750D02*X224020Y603500D01*\r
-X223270Y602750D02*Y601250D01*\r
-X224020Y600500D01*\r
-X226270D01*\r
-X228072Y598250D02*X228822Y597500D01*\r
-X228072Y602750D02*Y598250D01*\r
-Y602750D02*X228822Y603500D01*\r
-X230322D01*\r
-X231072Y602750D01*\r
-Y598250D01*\r
-X230322Y597500D02*X231072Y598250D01*\r
-X228822Y597500D02*X230322D01*\r
-X228072Y599000D02*X231072Y602000D01*\r
-X235573Y603500D02*Y597500D01*\r
-Y599750D02*X236323Y600500D01*\r
-X237823D01*\r
-X238573Y599750D01*\r
-Y597500D01*\r
-X240375Y599750D02*Y598250D01*\r
-Y599750D02*X241125Y600500D01*\r
-X242625D01*\r
-X243375Y599750D01*\r
-Y598250D01*\r
-X242625Y597500D02*X243375Y598250D01*\r
-X241125Y597500D02*X242625D01*\r
-X240375Y598250D02*X241125Y597500D01*\r
-X245176Y603500D02*Y598250D01*\r
-X245926Y597500D01*\r
-X248178D02*X250428D01*\r
-X247428Y598250D02*X248178Y597500D01*\r
-X247428Y599750D02*Y598250D01*\r
-Y599750D02*X248178Y600500D01*\r
-X249678D01*\r
-X250428Y599750D01*\r
-X247428Y599000D02*X250428D01*\r
-Y599750D02*Y599000D01*\r
-X252979Y597500D02*X255229D01*\r
-X255979Y598250D01*\r
-X255229Y599000D02*X255979Y598250D01*\r
-X252979Y599000D02*X255229D01*\r
-X252229Y599750D02*X252979Y599000D01*\r
-X252229Y599750D02*X252979Y600500D01*\r
-X255229D01*\r
-X255979Y599750D01*\r
-X252229Y598250D02*X252979Y597500D01*\r
-X261231Y603500D02*Y598250D01*\r
-X261981Y597500D01*\r
-X260481Y601250D02*X261981D01*\r
-X263482Y599750D02*Y598250D01*\r
-Y599750D02*X264232Y600500D01*\r
-X265732D01*\r
-X266482Y599750D01*\r
-Y598250D01*\r
-X265732Y597500D02*X266482Y598250D01*\r
-X264232Y597500D02*X265732D01*\r
-X263482Y598250D02*X264232Y597500D01*\r
-X269034Y603500D02*Y598250D01*\r
-X269784Y597500D01*\r
-X268284Y601250D02*X269784D01*\r
-X273535Y600500D02*X274285Y599750D01*\r
-X272035Y600500D02*X273535D01*\r
-X271285Y599750D02*X272035Y600500D01*\r
-X271285Y599750D02*Y598250D01*\r
-X272035Y597500D01*\r
-X274285Y600500D02*Y598250D01*\r
-X275035Y597500D01*\r
-X272035D02*X273535D01*\r
-X274285Y598250D01*\r
-X276837Y603500D02*Y598250D01*\r
-X277587Y597500D01*\r
-G54D11*X0Y410000D02*X710000D01*\r
+%ADD97C,0.254*%\r
+%ADD96C,0.152*%\r
+%ADD95C,0.203*%\r
+G54D95*X0Y104140D02*X180340D01*\r
X0D02*Y0D01*\r
-X710000Y410000D02*Y0D01*\r
-X0D02*X710000D01*\r
-G54D42*X200000Y423500D02*Y417500D01*\r
-Y423500D02*X202250Y421250D01*\r
-X204500Y423500D01*\r
-Y417500D01*\r
-X208551Y420500D02*X209301Y419750D01*\r
-X207051Y420500D02*X208551D01*\r
-X206301Y419750D02*X207051Y420500D01*\r
-X206301Y419750D02*Y418250D01*\r
-X207051Y417500D01*\r
-X209301Y420500D02*Y418250D01*\r
-X210051Y417500D01*\r
-X207051D02*X208551D01*\r
-X209301Y418250D01*\r
-X211853Y420500D02*X214853Y417500D01*\r
-X211853D02*X214853Y420500D01*\r
-X216654Y422000D02*Y421250D01*\r
-Y419750D02*Y417500D01*\r
-X218906Y419750D02*Y417500D01*\r
-Y419750D02*X219656Y420500D01*\r
-X220406D01*\r
-X221156Y419750D01*\r
-Y417500D01*\r
-Y419750D02*X221906Y420500D01*\r
-X222656D01*\r
-X223406Y419750D01*\r
-Y417500D01*\r
-X218156Y420500D02*X218906Y419750D01*\r
-X225207Y420500D02*Y418250D01*\r
-X225957Y417500D01*\r
-X227457D01*\r
-X228207Y418250D01*\r
-Y420500D02*Y418250D01*\r
-X230759Y419750D02*Y417500D01*\r
-Y419750D02*X231509Y420500D01*\r
-X232259D01*\r
-X233009Y419750D01*\r
-Y417500D01*\r
-Y419750D02*X233759Y420500D01*\r
-X234509D01*\r
-X235259Y419750D01*\r
-Y417500D01*\r
-X230009Y420500D02*X230759Y419750D01*\r
-X240510Y423500D02*Y417500D01*\r
-X242760Y423500D02*X243510Y422750D01*\r
-Y418250D01*\r
-X242760Y417500D02*X243510Y418250D01*\r
-X239760Y417500D02*X242760D01*\r
-X239760Y423500D02*X242760D01*\r
-X245312Y422000D02*Y421250D01*\r
-Y419750D02*Y417500D01*\r
-X247563Y419750D02*Y417500D01*\r
-Y419750D02*X248313Y420500D01*\r
-X249063D01*\r
-X249813Y419750D01*\r
-Y417500D01*\r
-Y419750D02*X250563Y420500D01*\r
-X251313D01*\r
-X252063Y419750D01*\r
-Y417500D01*\r
-X246813Y420500D02*X247563Y419750D01*\r
-X254615Y417500D02*X256865D01*\r
-X253865Y418250D02*X254615Y417500D01*\r
-X253865Y419750D02*Y418250D01*\r
-Y419750D02*X254615Y420500D01*\r
-X256115D01*\r
-X256865Y419750D01*\r
-X253865Y419000D02*X256865D01*\r
-Y419750D02*Y419000D01*\r
-X259416Y419750D02*Y417500D01*\r
-Y419750D02*X260166Y420500D01*\r
-X260916D01*\r
-X261666Y419750D01*\r
-Y417500D01*\r
-X258666Y420500D02*X259416Y419750D01*\r
-X264218Y417500D02*X266468D01*\r
-X267218Y418250D01*\r
-X266468Y419000D02*X267218Y418250D01*\r
-X264218Y419000D02*X266468D01*\r
-X263468Y419750D02*X264218Y419000D01*\r
-X263468Y419750D02*X264218Y420500D01*\r
-X266468D01*\r
-X267218Y419750D01*\r
-X263468Y418250D02*X264218Y417500D01*\r
-X269019Y422000D02*Y421250D01*\r
-Y419750D02*Y417500D01*\r
-X270521Y419750D02*Y418250D01*\r
-Y419750D02*X271271Y420500D01*\r
-X272771D01*\r
-X273521Y419750D01*\r
-Y418250D01*\r
-X272771Y417500D02*X273521Y418250D01*\r
-X271271Y417500D02*X272771D01*\r
-X270521Y418250D02*X271271Y417500D01*\r
-X276072Y419750D02*Y417500D01*\r
-Y419750D02*X276822Y420500D01*\r
-X277572D01*\r
-X278322Y419750D01*\r
-Y417500D01*\r
-X275322Y420500D02*X276072Y419750D01*\r
-X280874Y417500D02*X283124D01*\r
-X283874Y418250D01*\r
-X283124Y419000D02*X283874Y418250D01*\r
-X280874Y419000D02*X283124D01*\r
-X280124Y419750D02*X280874Y419000D01*\r
-X280124Y419750D02*X280874Y420500D01*\r
-X283124D01*\r
-X283874Y419750D01*\r
-X280124Y418250D02*X280874Y417500D01*\r
-X285675Y421250D02*X286425D01*\r
-X285675Y419750D02*X286425D01*\r
-X290927Y417500D02*X294677Y421250D01*\r
-Y423500D02*Y421250D01*\r
-X290927Y423500D02*X294677D01*\r
-X297228Y417500D02*X298728D01*\r
-X297978Y423500D02*Y417500D01*\r
-X296478Y422000D02*X297978Y423500D01*\r
-X300530Y418250D02*X301280Y417500D01*\r
-X300530Y422750D02*Y418250D01*\r
-Y422750D02*X301280Y423500D01*\r
-X302780D01*\r
-X303530Y422750D01*\r
-Y418250D01*\r
-X302780Y417500D02*X303530Y418250D01*\r
-X301280Y417500D02*X302780D01*\r
-X300530Y419000D02*X303530Y422000D01*\r
-X305331Y418250D02*X306081Y417500D01*\r
-X305331Y422750D02*Y418250D01*\r
-Y422750D02*X306081Y423500D01*\r
-X307581D01*\r
-X308331Y422750D01*\r
-Y418250D01*\r
-X307581Y417500D02*X308331Y418250D01*\r
-X306081Y417500D02*X307581D01*\r
-X305331Y419000D02*X308331Y422000D01*\r
-X313583Y419750D02*Y417500D01*\r
-Y419750D02*X314333Y420500D01*\r
-X315083D01*\r
-X315833Y419750D01*\r
-Y417500D01*\r
-Y419750D02*X316583Y420500D01*\r
-X317333D01*\r
-X318083Y419750D01*\r
-Y417500D01*\r
-X312833Y420500D02*X313583Y419750D01*\r
-X319884Y422000D02*Y421250D01*\r
-Y419750D02*Y417500D01*\r
-X321386Y423500D02*Y418250D01*\r
-X322136Y417500D01*\r
-X324387D02*X326637D01*\r
-X327387Y418250D01*\r
-X326637Y419000D02*X327387Y418250D01*\r
-X324387Y419000D02*X326637D01*\r
-X323637Y419750D02*X324387Y419000D01*\r
-X323637Y419750D02*X324387Y420500D01*\r
-X326637D01*\r
-X327387Y419750D01*\r
-X323637Y418250D02*X324387Y417500D01*\r
-X331889Y420500D02*Y418250D01*\r
-X332639Y417500D01*\r
-X333389D01*\r
-X334139Y418250D01*\r
-Y420500D02*Y418250D01*\r
-X334889Y417500D01*\r
-X335639D01*\r
-X336389Y418250D01*\r
-Y420500D02*Y418250D01*\r
-X338190Y422000D02*Y421250D01*\r
-Y419750D02*Y417500D01*\r
-X342692Y423500D02*Y417500D01*\r
-X341942D02*X342692Y418250D01*\r
-X340442Y417500D02*X341942D01*\r
-X339692Y418250D02*X340442Y417500D01*\r
-X339692Y419750D02*Y418250D01*\r
-Y419750D02*X340442Y420500D01*\r
-X341942D01*\r
-X342692Y419750D01*\r
-X345243Y417500D02*X347493D01*\r
-X344493Y418250D02*X345243Y417500D01*\r
-X344493Y419750D02*Y418250D01*\r
-Y419750D02*X345243Y420500D01*\r
-X346743D01*\r
-X347493Y419750D01*\r
-X344493Y419000D02*X347493D01*\r
-Y419750D02*Y419000D01*\r
-X349295Y416000D02*X350795Y417500D01*\r
-X355296Y420500D02*X358296Y423500D01*\r
-X355296Y420500D02*X359046D01*\r
-X358296Y423500D02*Y417500D01*\r
-X361598D02*X363098D01*\r
-X362348Y423500D02*Y417500D01*\r
-X360848Y422000D02*X362348Y423500D01*\r
-X364899Y418250D02*X365649Y417500D01*\r
-X364899Y422750D02*Y418250D01*\r
-Y422750D02*X365649Y423500D01*\r
-X367149D01*\r
-X367899Y422750D01*\r
-Y418250D01*\r
-X367149Y417500D02*X367899Y418250D01*\r
-X365649Y417500D02*X367149D01*\r
-X364899Y419000D02*X367899Y422000D01*\r
-X369701Y418250D02*X370451Y417500D01*\r
-X369701Y422750D02*Y418250D01*\r
-Y422750D02*X370451Y423500D01*\r
-X371951D01*\r
-X372701Y422750D01*\r
-Y418250D01*\r
-X371951Y417500D02*X372701Y418250D01*\r
-X370451Y417500D02*X371951D01*\r
-X369701Y419000D02*X372701Y422000D01*\r
-X377952Y419750D02*Y417500D01*\r
-Y419750D02*X378702Y420500D01*\r
-X379452D01*\r
-X380202Y419750D01*\r
-Y417500D01*\r
-Y419750D02*X380952Y420500D01*\r
-X381702D01*\r
-X382452Y419750D01*\r
-Y417500D01*\r
-X377202Y420500D02*X377952Y419750D01*\r
-X384254Y422000D02*Y421250D01*\r
-Y419750D02*Y417500D01*\r
-X385755Y423500D02*Y418250D01*\r
-X386505Y417500D01*\r
-X388757D02*X391007D01*\r
-X391757Y418250D01*\r
-X391007Y419000D02*X391757Y418250D01*\r
-X388757Y419000D02*X391007D01*\r
-X388007Y419750D02*X388757Y419000D01*\r
-X388007Y419750D02*X388757Y420500D01*\r
-X391007D01*\r
-X391757Y419750D01*\r
-X388007Y418250D02*X388757Y417500D01*\r
-X396258Y423500D02*Y417500D01*\r
-Y419750D02*X397008Y420500D01*\r
-X398508D01*\r
-X399258Y419750D01*\r
-Y417500D01*\r
-X401060Y422000D02*Y421250D01*\r
-Y419750D02*Y417500D01*\r
-X404811Y420500D02*X405561Y419750D01*\r
-X403311Y420500D02*X404811D01*\r
-X402561Y419750D02*X403311Y420500D01*\r
-X402561Y419750D02*Y418250D01*\r
-X403311Y417500D01*\r
-X404811D01*\r
-X405561Y418250D01*\r
-X402561Y416000D02*X403311Y415250D01*\r
-X404811D01*\r
-X405561Y416000D01*\r
-Y420500D02*Y416000D01*\r
-X407363Y423500D02*Y417500D01*\r
-Y419750D02*X408113Y420500D01*\r
-X409613D01*\r
-X410363Y419750D01*\r
-Y417500D01*\r
-X197226Y-9500D02*X200226D01*\r
-X200976Y-8750D01*\r
-Y-7250D02*Y-8750D01*\r
-X200226Y-6500D02*X200976Y-7250D01*\r
-X197976Y-6500D02*X200226D01*\r
-X197976Y-3500D02*Y-9500D01*\r
-X197226Y-3500D02*X200226D01*\r
-X200976Y-4250D01*\r
-Y-5750D01*\r
-X200226Y-6500D02*X200976Y-5750D01*\r
-X202777Y-7250D02*Y-8750D01*\r
-Y-7250D02*X203527Y-6500D01*\r
-X205027D01*\r
-X205777Y-7250D01*\r
-Y-8750D01*\r
-X205027Y-9500D02*X205777Y-8750D01*\r
-X203527Y-9500D02*X205027D01*\r
-X202777Y-8750D02*X203527Y-9500D01*\r
-X209829Y-6500D02*X210579Y-7250D01*\r
-X208329Y-6500D02*X209829D01*\r
-X207579Y-7250D02*X208329Y-6500D01*\r
-X207579Y-7250D02*Y-8750D01*\r
-X208329Y-9500D01*\r
-X210579Y-6500D02*Y-8750D01*\r
-X211329Y-9500D01*\r
-X208329D02*X209829D01*\r
-X210579Y-8750D01*\r
-X213880Y-7250D02*Y-9500D01*\r
-Y-7250D02*X214630Y-6500D01*\r
-X216130D01*\r
-X213130D02*X213880Y-7250D01*\r
-X220932Y-3500D02*Y-9500D01*\r
-X220182D02*X220932Y-8750D01*\r
-X218682Y-9500D02*X220182D01*\r
-X217932Y-8750D02*X218682Y-9500D01*\r
-X217932Y-7250D02*Y-8750D01*\r
-Y-7250D02*X218682Y-6500D01*\r
-X220182D01*\r
-X220932Y-7250D01*\r
-X225433D02*Y-8750D01*\r
-Y-7250D02*X226183Y-6500D01*\r
-X227683D01*\r
-X228433Y-7250D01*\r
-Y-8750D01*\r
-X227683Y-9500D02*X228433Y-8750D01*\r
-X226183Y-9500D02*X227683D01*\r
-X225433Y-8750D02*X226183Y-9500D01*\r
-X230235Y-6500D02*Y-8750D01*\r
-X230985Y-9500D01*\r
-X232485D01*\r
-X233235Y-8750D01*\r
-Y-6500D02*Y-8750D01*\r
-X235786Y-3500D02*Y-8750D01*\r
-X236536Y-9500D01*\r
-X235036Y-5750D02*X236536D01*\r
-X238038Y-3500D02*Y-8750D01*\r
-X238788Y-9500D01*\r
-X240289Y-5000D02*Y-5750D01*\r
-Y-7250D02*Y-9500D01*\r
-X242541Y-7250D02*Y-9500D01*\r
-Y-7250D02*X243291Y-6500D01*\r
-X244041D01*\r
-X244791Y-7250D01*\r
-Y-9500D01*\r
-X241791Y-6500D02*X242541Y-7250D01*\r
-X247342Y-9500D02*X249592D01*\r
-X246592Y-8750D02*X247342Y-9500D01*\r
-X246592Y-7250D02*Y-8750D01*\r
-Y-7250D02*X247342Y-6500D01*\r
-X248842D01*\r
-X249592Y-7250D01*\r
-X246592Y-8000D02*X249592D01*\r
-Y-7250D02*Y-8000D01*\r
-X254094Y-5000D02*Y-5750D01*\r
-Y-7250D02*Y-9500D01*\r
-X256345D02*X258595D01*\r
-X259345Y-8750D01*\r
-X258595Y-8000D02*X259345Y-8750D01*\r
-X256345Y-8000D02*X258595D01*\r
-X255595Y-7250D02*X256345Y-8000D01*\r
-X255595Y-7250D02*X256345Y-6500D01*\r
-X258595D01*\r
-X259345Y-7250D01*\r
-X255595Y-8750D02*X256345Y-9500D01*\r
-X264597Y-3500D02*Y-8750D01*\r
-X265347Y-9500D01*\r
-X263847Y-5750D02*X265347D01*\r
-X266848Y-3500D02*Y-9500D01*\r
-Y-7250D02*X267598Y-6500D01*\r
-X269098D01*\r
-X269848Y-7250D01*\r
-Y-9500D01*\r
-X272400D02*X274650D01*\r
-X271650Y-8750D02*X272400Y-9500D01*\r
-X271650Y-7250D02*Y-8750D01*\r
-Y-7250D02*X272400Y-6500D01*\r
-X273900D01*\r
-X274650Y-7250D01*\r
-X271650Y-8000D02*X274650D01*\r
-Y-7250D02*Y-8000D01*\r
-X279901Y-6500D02*X282151D01*\r
-X279151Y-7250D02*X279901Y-6500D01*\r
-X279151Y-7250D02*Y-8750D01*\r
-X279901Y-9500D01*\r
-X282151D01*\r
-X284703D02*X286953D01*\r
-X283953Y-8750D02*X284703Y-9500D01*\r
-X283953Y-7250D02*Y-8750D01*\r
-Y-7250D02*X284703Y-6500D01*\r
-X286203D01*\r
-X286953Y-7250D01*\r
-X283953Y-8000D02*X286953D01*\r
-Y-7250D02*Y-8000D01*\r
-X289504Y-7250D02*Y-9500D01*\r
-Y-7250D02*X290254Y-6500D01*\r
-X291004D01*\r
-X291754Y-7250D01*\r
-Y-9500D01*\r
-X288754Y-6500D02*X289504Y-7250D01*\r
-X294306Y-3500D02*Y-8750D01*\r
-X295056Y-9500D01*\r
-X293556Y-5750D02*X295056D01*\r
-X297307Y-9500D02*X299557D01*\r
-X296557Y-8750D02*X297307Y-9500D01*\r
-X296557Y-7250D02*Y-8750D01*\r
-Y-7250D02*X297307Y-6500D01*\r
-X298807D01*\r
-X299557Y-7250D01*\r
-X296557Y-8000D02*X299557D01*\r
-Y-7250D02*Y-8000D01*\r
-X302109Y-7250D02*Y-9500D01*\r
-Y-7250D02*X302859Y-6500D01*\r
-X304359D01*\r
-X301359D02*X302109Y-7250D01*\r
-X306160Y-3500D02*Y-8750D01*\r
-X306910Y-9500D01*\r
-X308412Y-5000D02*Y-5750D01*\r
-Y-7250D02*Y-9500D01*\r
-X310663Y-7250D02*Y-9500D01*\r
-Y-7250D02*X311413Y-6500D01*\r
-X312163D01*\r
-X312913Y-7250D01*\r
-Y-9500D01*\r
-X309913Y-6500D02*X310663Y-7250D01*\r
-X315465Y-9500D02*X317715D01*\r
-X314715Y-8750D02*X315465Y-9500D01*\r
-X314715Y-7250D02*Y-8750D01*\r
-Y-7250D02*X315465Y-6500D01*\r
-X316965D01*\r
-X317715Y-7250D01*\r
-X314715Y-8000D02*X317715D01*\r
-Y-7250D02*Y-8000D01*\r
-X322216Y-7250D02*Y-8750D01*\r
-Y-7250D02*X322966Y-6500D01*\r
-X324466D01*\r
-X325216Y-7250D01*\r
-Y-8750D01*\r
-X324466Y-9500D02*X325216Y-8750D01*\r
-X322966Y-9500D02*X324466D01*\r
-X322216Y-8750D02*X322966Y-9500D01*\r
-X327768Y-4250D02*Y-9500D01*\r
-Y-4250D02*X328518Y-3500D01*\r
-X329268D01*\r
-X327018Y-6500D02*X328518D01*\r
-X334219Y-3500D02*Y-8750D01*\r
-X334969Y-9500D01*\r
-X333469Y-5750D02*X334969D01*\r
-X336471Y-3500D02*Y-9500D01*\r
-Y-7250D02*X337221Y-6500D01*\r
-X338721D01*\r
-X339471Y-7250D01*\r
-Y-9500D01*\r
-X341272Y-5000D02*Y-5750D01*\r
-Y-7250D02*Y-9500D01*\r
-X343524D02*X345774D01*\r
-X346524Y-8750D01*\r
-X345774Y-8000D02*X346524Y-8750D01*\r
-X343524Y-8000D02*X345774D01*\r
-X342774Y-7250D02*X343524Y-8000D01*\r
-X342774Y-7250D02*X343524Y-6500D01*\r
-X345774D01*\r
-X346524Y-7250D01*\r
-X342774Y-8750D02*X343524Y-9500D01*\r
-X351775D02*X353275D01*\r
-X352525Y-3500D02*Y-9500D01*\r
-X351025Y-5000D02*X352525Y-3500D01*\r
-X355077Y-8750D02*X355827Y-9500D01*\r
-X355077Y-4250D02*Y-8750D01*\r
-Y-4250D02*X355827Y-3500D01*\r
-X357327D01*\r
-X358077Y-4250D01*\r
-Y-8750D01*\r
-X357327Y-9500D02*X358077Y-8750D01*\r
-X355827Y-9500D02*X357327D01*\r
-X355077Y-8000D02*X358077Y-5000D01*\r
-X363328Y-7250D02*Y-9500D01*\r
-Y-7250D02*X364078Y-6500D01*\r
-X364828D01*\r
-X365578Y-7250D01*\r
-Y-9500D01*\r
-Y-7250D02*X366328Y-6500D01*\r
-X367078D01*\r
-X367828Y-7250D01*\r
-Y-9500D01*\r
-X362578Y-6500D02*X363328Y-7250D01*\r
-X369630Y-5000D02*Y-5750D01*\r
-Y-7250D02*Y-9500D01*\r
-X371131Y-3500D02*Y-8750D01*\r
-X371881Y-9500D01*\r
-X376833Y-7250D02*Y-9500D01*\r
-Y-7250D02*X377583Y-6500D01*\r
-X379083D01*\r
-X376083D02*X376833Y-7250D01*\r
-X381634Y-9500D02*X383884D01*\r
-X380884Y-8750D02*X381634Y-9500D01*\r
-X380884Y-7250D02*Y-8750D01*\r
-Y-7250D02*X381634Y-6500D01*\r
-X383134D01*\r
-X383884Y-7250D01*\r
-X380884Y-8000D02*X383884D01*\r
-Y-7250D02*Y-8000D01*\r
-X386436Y-6500D02*X388686D01*\r
-X385686Y-7250D02*X386436Y-6500D01*\r
-X385686Y-7250D02*Y-8750D01*\r
-X386436Y-9500D01*\r
-X388686D01*\r
-X391237Y-3500D02*Y-8750D01*\r
-X391987Y-9500D01*\r
-X390487Y-5750D02*X391987D01*\r
-X395739Y-6500D02*X396489Y-7250D01*\r
-X394239Y-6500D02*X395739D01*\r
-X393489Y-7250D02*X394239Y-6500D01*\r
-X393489Y-7250D02*Y-8750D01*\r
-X394239Y-9500D01*\r
-X396489Y-6500D02*Y-8750D01*\r
-X397239Y-9500D01*\r
-X394239D02*X395739D01*\r
-X396489Y-8750D01*\r
-X399790Y-7250D02*Y-9500D01*\r
-Y-7250D02*X400540Y-6500D01*\r
-X401290D01*\r
-X402040Y-7250D01*\r
-Y-9500D01*\r
-X399040Y-6500D02*X399790Y-7250D01*\r
-X406092Y-6500D02*X406842Y-7250D01*\r
-X404592Y-6500D02*X406092D01*\r
-X403842Y-7250D02*X404592Y-6500D01*\r
-X403842Y-7250D02*Y-8750D01*\r
-X404592Y-9500D01*\r
-X406092D01*\r
-X406842Y-8750D01*\r
-X403842Y-11000D02*X404592Y-11750D01*\r
-X406092D01*\r
-X406842Y-11000D01*\r
-Y-6500D02*Y-11000D01*\r
-X408643Y-3500D02*Y-8750D01*\r
-X409393Y-9500D01*\r
-X411645D02*X413895D01*\r
-X410895Y-8750D02*X411645Y-9500D01*\r
-X410895Y-7250D02*Y-8750D01*\r
-Y-7250D02*X411645Y-6500D01*\r
-X413145D01*\r
-X413895Y-7250D01*\r
-X410895Y-8000D02*X413895D01*\r
-Y-7250D02*Y-8000D01*\r
-X418396Y-6500D02*X421396D01*\r
-X425898Y-8750D02*X426648Y-9500D01*\r
-X425898Y-4250D02*Y-8750D01*\r
-Y-4250D02*X426648Y-3500D01*\r
-X428148D01*\r
-X428898Y-4250D01*\r
-Y-8750D01*\r
-X428148Y-9500D02*X428898Y-8750D01*\r
-X426648Y-9500D02*X428148D01*\r
-X425898Y-8000D02*X428898Y-5000D01*\r
-X430699Y-11000D02*X432199Y-9500D01*\r
-X434001Y-8750D02*X434751Y-9500D01*\r
-X434001Y-4250D02*Y-8750D01*\r
-Y-4250D02*X434751Y-3500D01*\r
-X436251D01*\r
-X437001Y-4250D01*\r
-Y-8750D01*\r
-X436251Y-9500D02*X437001Y-8750D01*\r
-X434751Y-9500D02*X436251D01*\r
-X434001Y-8000D02*X437001Y-5000D01*\r
-X442252Y-3500D02*Y-8750D01*\r
-X443002Y-9500D01*\r
-X441502Y-5750D02*X443002D01*\r
-X444504Y-7250D02*Y-8750D01*\r
-Y-7250D02*X445254Y-6500D01*\r
-X446754D01*\r
-X447504Y-7250D01*\r
-Y-8750D01*\r
-X446754Y-9500D02*X447504Y-8750D01*\r
-X445254Y-9500D02*X446754D01*\r
-X444504Y-8750D02*X445254Y-9500D01*\r
-X452005D02*X455755Y-5750D01*\r
-Y-3500D02*Y-5750D01*\r
-X452005Y-3500D02*X455755D01*\r
-X458307Y-9500D02*X459807D01*\r
-X459057Y-3500D02*Y-9500D01*\r
-X457557Y-5000D02*X459057Y-3500D01*\r
-X461608Y-8750D02*X462358Y-9500D01*\r
-X461608Y-4250D02*Y-8750D01*\r
-Y-4250D02*X462358Y-3500D01*\r
-X463858D01*\r
-X464608Y-4250D01*\r
-Y-8750D01*\r
-X463858Y-9500D02*X464608Y-8750D01*\r
-X462358Y-9500D02*X463858D01*\r
-X461608Y-8000D02*X464608Y-5000D01*\r
-X466410Y-8750D02*X467160Y-9500D01*\r
-X466410Y-4250D02*Y-8750D01*\r
-Y-4250D02*X467160Y-3500D01*\r
-X468660D01*\r
-X469410Y-4250D01*\r
-Y-8750D01*\r
-X468660Y-9500D02*X469410Y-8750D01*\r
-X467160Y-9500D02*X468660D01*\r
-X466410Y-8000D02*X469410Y-5000D01*\r
-X471211Y-11000D02*X472711Y-9500D01*\r
-X474513Y-6500D02*X477513Y-3500D01*\r
-X474513Y-6500D02*X478263D01*\r
-X477513Y-3500D02*Y-9500D01*\r
-X480814D02*X482314D01*\r
-X481564Y-3500D02*Y-9500D01*\r
-X480064Y-5000D02*X481564Y-3500D01*\r
-X484116Y-8750D02*X484866Y-9500D01*\r
-X484116Y-4250D02*Y-8750D01*\r
-Y-4250D02*X484866Y-3500D01*\r
-X486366D01*\r
-X487116Y-4250D01*\r
-Y-8750D01*\r
-X486366Y-9500D02*X487116Y-8750D01*\r
-X484866Y-9500D02*X486366D01*\r
-X484116Y-8000D02*X487116Y-5000D01*\r
-X488917Y-8750D02*X489667Y-9500D01*\r
-X488917Y-4250D02*Y-8750D01*\r
-Y-4250D02*X489667Y-3500D01*\r
-X491167D01*\r
-X491917Y-4250D01*\r
-Y-8750D01*\r
-X491167Y-9500D02*X491917Y-8750D01*\r
-X489667Y-9500D02*X491167D01*\r
-X488917Y-8000D02*X491917Y-5000D01*\r
-X497169Y-7250D02*Y-9500D01*\r
-Y-7250D02*X497919Y-6500D01*\r
-X498669D01*\r
-X499419Y-7250D01*\r
-Y-9500D01*\r
-Y-7250D02*X500169Y-6500D01*\r
-X500919D01*\r
-X501669Y-7250D01*\r
-Y-9500D01*\r
-X496419Y-6500D02*X497169Y-7250D01*\r
-X503470Y-5000D02*Y-5750D01*\r
-Y-7250D02*Y-9500D01*\r
-X504972Y-3500D02*Y-8750D01*\r
-X505722Y-9500D01*\r
-X507973D02*X510223D01*\r
-X510973Y-8750D01*\r
-X510223Y-8000D02*X510973Y-8750D01*\r
-X507973Y-8000D02*X510223D01*\r
-X507223Y-7250D02*X507973Y-8000D01*\r
-X507223Y-7250D02*X507973Y-6500D01*\r
-X510223D01*\r
-X510973Y-7250D01*\r
-X507223Y-8750D02*X507973Y-9500D01*\r
-X200750Y438500D02*Y432500D01*\r
-X203000Y438500D02*X203750Y437750D01*\r
-Y433250D01*\r
-X203000Y432500D02*X203750Y433250D01*\r
-X200000Y432500D02*X203000D01*\r
-X200000Y438500D02*X203000D01*\r
-X207801Y435500D02*X208551Y434750D01*\r
-X206301Y435500D02*X207801D01*\r
-X205551Y434750D02*X206301Y435500D01*\r
-X205551Y434750D02*Y433250D01*\r
-X206301Y432500D01*\r
-X208551Y435500D02*Y433250D01*\r
-X209301Y432500D01*\r
-X206301D02*X207801D01*\r
-X208551Y433250D01*\r
-X211853Y438500D02*Y433250D01*\r
-X212603Y432500D01*\r
-X211103Y436250D02*X212603D01*\r
-X214854Y432500D02*X217104D01*\r
-X214104Y433250D02*X214854Y432500D01*\r
-X214104Y434750D02*Y433250D01*\r
-Y434750D02*X214854Y435500D01*\r
-X216354D01*\r
-X217104Y434750D01*\r
-X214104Y434000D02*X217104D01*\r
-Y434750D02*Y434000D01*\r
-X218906Y436250D02*X219656D01*\r
-X218906Y434750D02*X219656D01*\r
-X224157Y438500D02*X227157D01*\r
-X225657D02*Y432500D01*\r
-X228959Y438500D02*Y432500D01*\r
-Y434750D02*X229709Y435500D01*\r
-X231209D01*\r
-X231959Y434750D01*\r
-Y432500D01*\r
-X233760Y435500D02*Y433250D01*\r
-X234510Y432500D01*\r
-X236010D01*\r
-X236760Y433250D01*\r
-Y435500D02*Y433250D01*\r
-X242012Y432500D02*X243512D01*\r
-X242762Y438500D02*Y432500D01*\r
-X241262Y437000D02*X242762Y438500D01*\r
-X247563D02*X248313Y437750D01*\r
-X246063Y438500D02*X247563D01*\r
-X245313Y437750D02*X246063Y438500D01*\r
-X245313Y437750D02*Y433250D01*\r
-X246063Y432500D01*\r
-X247563Y435500D02*X248313Y434750D01*\r
-X245313Y435500D02*X247563D01*\r
-X246063Y432500D02*X247563D01*\r
-X248313Y433250D01*\r
-Y434750D02*Y433250D01*\r
-X253565Y438500D02*Y432500D01*\r
-X255815Y438500D02*X256565Y437750D01*\r
-Y433250D01*\r
-X255815Y432500D02*X256565Y433250D01*\r
-X252815Y432500D02*X255815D01*\r
-X252815Y438500D02*X255815D01*\r
-X259116Y432500D02*X261366D01*\r
-X258366Y433250D02*X259116Y432500D01*\r
-X258366Y434750D02*Y433250D01*\r
-Y434750D02*X259116Y435500D01*\r
-X260616D01*\r
-X261366Y434750D01*\r
-X258366Y434000D02*X261366D01*\r
-Y434750D02*Y434000D01*\r
-X263918Y435500D02*X266168D01*\r
-X263168Y434750D02*X263918Y435500D01*\r
-X263168Y434750D02*Y433250D01*\r
-X263918Y432500D01*\r
-X266168D01*\r
-X270669Y437750D02*X271419Y438500D01*\r
-X273669D01*\r
-X274419Y437750D01*\r
-Y436250D01*\r
-X270669Y432500D02*X274419Y436250D01*\r
-X270669Y432500D02*X274419D01*\r
-X276221Y433250D02*X276971Y432500D01*\r
-X276221Y437750D02*Y433250D01*\r
-Y437750D02*X276971Y438500D01*\r
-X278471D01*\r
-X279221Y437750D01*\r
-Y433250D01*\r
-X278471Y432500D02*X279221Y433250D01*\r
-X276971Y432500D02*X278471D01*\r
-X276221Y434000D02*X279221Y437000D01*\r
-X281772Y432500D02*X283272D01*\r
-X282522Y438500D02*Y432500D01*\r
-X281022Y437000D02*X282522Y438500D01*\r
-X285074Y433250D02*X285824Y432500D01*\r
-X285074Y437750D02*Y433250D01*\r
-Y437750D02*X285824Y438500D01*\r
-X287324D01*\r
-X288074Y437750D01*\r
-Y433250D01*\r
-X287324Y432500D02*X288074Y433250D01*\r
-X285824Y432500D02*X287324D01*\r
-X285074Y434000D02*X288074Y437000D01*\r
-X292575Y433250D02*X293325Y432500D01*\r
-X292575Y437750D02*Y433250D01*\r
-Y437750D02*X293325Y438500D01*\r
-X294825D01*\r
-X295575Y437750D01*\r
-Y433250D01*\r
-X294825Y432500D02*X295575Y433250D01*\r
-X293325Y432500D02*X294825D01*\r
-X292575Y434000D02*X295575Y437000D01*\r
-X297377Y435500D02*X300377Y438500D01*\r
-X297377Y435500D02*X301127D01*\r
-X300377Y438500D02*Y432500D01*\r
-X302928Y436250D02*X303678D01*\r
-X302928Y434750D02*X303678D01*\r
-X305480Y438500D02*X308480D01*\r
-X305480D02*Y435500D01*\r
-X306230Y436250D01*\r
-X307730D01*\r
-X308480Y435500D01*\r
-Y433250D01*\r
-X307730Y432500D02*X308480Y433250D01*\r
-X306230Y432500D02*X307730D01*\r
-X305480Y433250D02*X306230Y432500D01*\r
-X310281Y433250D02*X311031Y432500D01*\r
-X310281Y434750D02*Y433250D01*\r
-Y434750D02*X311031Y435500D01*\r
-X312531D01*\r
-X313281Y434750D01*\r
-Y433250D01*\r
-X312531Y432500D02*X313281Y433250D01*\r
-X311031Y432500D02*X312531D01*\r
-X310281Y436250D02*X311031Y435500D01*\r
-X310281Y437750D02*Y436250D01*\r
-Y437750D02*X311031Y438500D01*\r
-X312531D01*\r
-X313281Y437750D01*\r
-Y436250D01*\r
-X312531Y435500D02*X313281Y436250D01*\r
-X315083D02*X315833D01*\r
-X315083Y434750D02*X315833D01*\r
-X317634Y433250D02*X318384Y432500D01*\r
-X317634Y437750D02*Y433250D01*\r
-Y437750D02*X318384Y438500D01*\r
-X319884D01*\r
-X320634Y437750D01*\r
-Y433250D01*\r
-X319884Y432500D02*X320634Y433250D01*\r
-X318384Y432500D02*X319884D01*\r
-X317634Y434000D02*X320634Y437000D01*\r
-X322436Y437750D02*X323186Y438500D01*\r
-X325436D01*\r
-X326186Y437750D01*\r
-Y436250D01*\r
-X322436Y432500D02*X326186Y436250D01*\r
-X322436Y432500D02*X326186D01*\r
-X331437Y438500D02*Y432500D01*\r
-X330687Y438500D02*X333687D01*\r
-X334437Y437750D01*\r
-Y436250D01*\r
-X333687Y435500D02*X334437Y436250D01*\r
-X331437Y435500D02*X333687D01*\r
-X336239Y438500D02*Y432500D01*\r
-Y438500D02*X338489Y436250D01*\r
-X340739Y438500D01*\r
-Y432500D01*\r
-X348240Y438500D02*X348990Y437750D01*\r
-X345990Y438500D02*X348240D01*\r
-X345240Y437750D02*X345990Y438500D01*\r
-X345240Y437750D02*Y433250D01*\r
-X345990Y432500D01*\r
-X348240D01*\r
-X348990Y433250D01*\r
-Y434750D02*Y433250D01*\r
-X348240Y435500D02*X348990Y434750D01*\r
-X346740Y435500D02*X348240D01*\r
-X350792Y438500D02*Y432500D01*\r
-Y438500D02*X353042Y436250D01*\r
-X355292Y438500D01*\r
-Y432500D01*\r
-X357093Y438500D02*X360093D01*\r
-X358593D02*Y432500D01*\r
-X364595Y438500D02*Y433250D01*\r
-X365345Y432500D01*\r
-X366845D01*\r
-X367595Y433250D01*\r
-Y438500D02*Y433250D01*\r
-X369396Y438500D02*X372396D01*\r
-X370896D02*Y432500D01*\r
-X374948D02*X377198D01*\r
-X374198Y433250D02*X374948Y432500D01*\r
-X374198Y437750D02*Y433250D01*\r
-Y437750D02*X374948Y438500D01*\r
-X377198D01*\r
-X200000Y452750D02*Y447500D01*\r
-Y452750D02*X200750Y453500D01*\r
-X203000D01*\r
-X203750Y452750D01*\r
-Y447500D01*\r
-X200000Y450500D02*X203750D01*\r
-X205551D02*Y448250D01*\r
-X206301Y447500D01*\r
-X207801D01*\r
-X208551Y448250D01*\r
-Y450500D02*Y448250D01*\r
-X211103Y453500D02*Y448250D01*\r
-X211853Y447500D01*\r
-X210353Y451250D02*X211853D01*\r
-X213354Y453500D02*Y447500D01*\r
-Y449750D02*X214104Y450500D01*\r
-X215604D01*\r
-X216354Y449750D01*\r
-Y447500D01*\r
-X218156Y449750D02*Y448250D01*\r
-Y449750D02*X218906Y450500D01*\r
-X220406D01*\r
-X221156Y449750D01*\r
-Y448250D01*\r
-X220406Y447500D02*X221156Y448250D01*\r
-X218906Y447500D02*X220406D01*\r
-X218156Y448250D02*X218906Y447500D01*\r
-X223707Y449750D02*Y447500D01*\r
-Y449750D02*X224457Y450500D01*\r
-X225957D01*\r
-X222957D02*X223707Y449750D01*\r
-X227759Y451250D02*X228509D01*\r
-X227759Y449750D02*X228509D01*\r
-X233010Y453500D02*Y447500D01*\r
-X235260Y449750D01*\r
-X237510Y447500D01*\r
-Y453500D02*Y447500D01*\r
-X241562Y450500D02*X242312Y449750D01*\r
-X240062Y450500D02*X241562D01*\r
-X239312Y449750D02*X240062Y450500D01*\r
-X239312Y449750D02*Y448250D01*\r
-X240062Y447500D01*\r
-X242312Y450500D02*Y448250D01*\r
-X243062Y447500D01*\r
-X240062D02*X241562D01*\r
-X242312Y448250D01*\r
-X244863Y453500D02*Y448250D01*\r
-X245613Y447500D01*\r
-X247865Y453500D02*Y448250D01*\r
-X248615Y447500D01*\r
-X247115Y451250D02*X248615D01*\r
-X250866Y447500D02*X253116D01*\r
-X250116Y448250D02*X250866Y447500D01*\r
-X250116Y449750D02*Y448250D01*\r
-Y449750D02*X250866Y450500D01*\r
-X252366D01*\r
-X253116Y449750D01*\r
-X250116Y449000D02*X253116D01*\r
-Y449750D02*Y449000D01*\r
-X255668Y449750D02*Y447500D01*\r
-Y449750D02*X256418Y450500D01*\r
-X257918D01*\r
-X254918D02*X255668Y449750D01*\r
-X262419Y453500D02*Y447500D01*\r
-Y453500D02*X265419D01*\r
-X262419Y450500D02*X264669D01*\r
-X267971Y447500D02*X270221D01*\r
-X267221Y448250D02*X267971Y447500D01*\r
-X267221Y449750D02*Y448250D01*\r
-Y449750D02*X267971Y450500D01*\r
-X269471D01*\r
-X270221Y449750D01*\r
-X267221Y449000D02*X270221D01*\r
-Y449750D02*Y449000D01*\r
-X272772Y453500D02*Y448250D01*\r
-X273522Y447500D01*\r
-X272022Y451250D02*X273522D01*\r
-X275774Y453500D02*Y448250D01*\r
-X276524Y447500D01*\r
-X275024Y451250D02*X276524D01*\r
-X278775Y447500D02*X281025D01*\r
-X278025Y448250D02*X278775Y447500D01*\r
-X278025Y449750D02*Y448250D01*\r
-Y449750D02*X278775Y450500D01*\r
-X280275D01*\r
-X281025Y449750D01*\r
-X278025Y449000D02*X281025D01*\r
-Y449750D02*Y449000D01*\r
-X283577Y449750D02*Y447500D01*\r
-Y449750D02*X284327Y450500D01*\r
-X285827D01*\r
-X282827D02*X283577Y449750D01*\r
-X290328Y453500D02*Y447500D01*\r
-X293328D01*\r
-X297380Y450500D02*X298130Y449750D01*\r
-X295880Y450500D02*X297380D01*\r
-X295130Y449750D02*X295880Y450500D01*\r
-X295130Y449750D02*Y448250D01*\r
-X295880Y447500D01*\r
-X298130Y450500D02*Y448250D01*\r
-X298880Y447500D01*\r
-X295880D02*X297380D01*\r
-X298130Y448250D01*\r
-X302931Y450500D02*X303681Y449750D01*\r
-X301431Y450500D02*X302931D01*\r
-X300681Y449750D02*X301431Y450500D01*\r
-X300681Y449750D02*Y448250D01*\r
-X301431Y447500D01*\r
-X302931D01*\r
-X303681Y448250D01*\r
-X300681Y446000D02*X301431Y445250D01*\r
-X302931D01*\r
-X303681Y446000D01*\r
-Y450500D02*Y446000D01*\r
-X306233Y447500D02*X308483D01*\r
-X305483Y448250D02*X306233Y447500D01*\r
-X305483Y449750D02*Y448250D01*\r
-Y449750D02*X306233Y450500D01*\r
-X307733D01*\r
-X308483Y449750D01*\r
-X305483Y449000D02*X308483D01*\r
-Y449750D02*Y449000D01*\r
-X311034Y447500D02*X313284D01*\r
-X314034Y448250D01*\r
-X313284Y449000D02*X314034Y448250D01*\r
-X311034Y449000D02*X313284D01*\r
-X310284Y449750D02*X311034Y449000D01*\r
-X310284Y449750D02*X311034Y450500D01*\r
-X313284D01*\r
-X314034Y449750D01*\r
-X310284Y448250D02*X311034Y447500D01*\r
-X200000Y468500D02*X203000D01*\r
-X201500D02*Y462500D01*\r
-X204801Y467000D02*Y466250D01*\r
-Y464750D02*Y462500D01*\r
-X207053Y468500D02*Y463250D01*\r
-X207803Y462500D01*\r
-X206303Y466250D02*X207803D01*\r
-X209304Y468500D02*Y463250D01*\r
-X210054Y462500D01*\r
-X212306D02*X214556D01*\r
-X211556Y463250D02*X212306Y462500D01*\r
-X211556Y464750D02*Y463250D01*\r
-Y464750D02*X212306Y465500D01*\r
-X213806D01*\r
-X214556Y464750D01*\r
-X211556Y464000D02*X214556D01*\r
-Y464750D02*Y464000D01*\r
-X216357Y466250D02*X217107D01*\r
-X216357Y464750D02*X217107D01*\r
-X221609Y463250D02*X222359Y462500D01*\r
-X221609Y467750D02*X222359Y468500D01*\r
-X221609Y467750D02*Y463250D01*\r
-X224160Y465500D02*Y463250D01*\r
-X224910Y462500D01*\r
-X226410D01*\r
-X227160Y463250D01*\r
-Y465500D02*Y463250D01*\r
-X229712Y464750D02*Y462500D01*\r
-Y464750D02*X230462Y465500D01*\r
-X231212D01*\r
-X231962Y464750D01*\r
-Y462500D01*\r
-X228962Y465500D02*X229712Y464750D01*\r
-X233763Y468500D02*Y462500D01*\r
-Y464750D02*X236013Y462500D01*\r
-X233763Y464750D02*X235263Y466250D01*\r
-X238565Y464750D02*Y462500D01*\r
-Y464750D02*X239315Y465500D01*\r
-X240065D01*\r
-X240815Y464750D01*\r
-Y462500D01*\r
-X237815Y465500D02*X238565Y464750D01*\r
-X242616D02*Y463250D01*\r
-Y464750D02*X243366Y465500D01*\r
-X244866D01*\r
-X245616Y464750D01*\r
-Y463250D01*\r
-X244866Y462500D02*X245616Y463250D01*\r
-X243366Y462500D02*X244866D01*\r
-X242616Y463250D02*X243366Y462500D01*\r
-X247418Y465500D02*Y463250D01*\r
-X248168Y462500D01*\r
-X248918D01*\r
-X249668Y463250D01*\r
-Y465500D02*Y463250D01*\r
-X250418Y462500D01*\r
-X251168D01*\r
-X251918Y463250D01*\r
-Y465500D02*Y463250D01*\r
-X254469Y464750D02*Y462500D01*\r
-Y464750D02*X255219Y465500D01*\r
-X255969D01*\r
-X256719Y464750D01*\r
-Y462500D01*\r
-X253719Y465500D02*X254469Y464750D01*\r
-X258521Y468500D02*X259271Y467750D01*\r
-Y463250D01*\r
-X258521Y462500D02*X259271Y463250D01*\r
-X263772Y465500D02*X266772D01*\r
-X271274Y468500D02*Y462500D01*\r
-Y468500D02*X274274D01*\r
-X271274Y465500D02*X273524D01*\r
-X278325D02*X279075Y464750D01*\r
-X276825Y465500D02*X278325D01*\r
-X276075Y464750D02*X276825Y465500D01*\r
-X276075Y464750D02*Y463250D01*\r
-X276825Y462500D01*\r
-X279075Y465500D02*Y463250D01*\r
-X279825Y462500D01*\r
-X276825D02*X278325D01*\r
-X279075Y463250D01*\r
-X281627Y468500D02*Y462500D01*\r
-Y463250D02*X282377Y462500D01*\r
-X283877D01*\r
-X284627Y463250D01*\r
-Y464750D02*Y463250D01*\r
-X283877Y465500D02*X284627Y464750D01*\r
-X282377Y465500D02*X283877D01*\r
-X281627Y464750D02*X282377Y465500D01*\r
-X287178Y464750D02*Y462500D01*\r
-Y464750D02*X287928Y465500D01*\r
-X289428D01*\r
-X286428D02*X287178Y464750D01*\r
-X291230Y467000D02*Y466250D01*\r
-Y464750D02*Y462500D01*\r
-X293481Y465500D02*X295731D01*\r
-X292731Y464750D02*X293481Y465500D01*\r
-X292731Y464750D02*Y463250D01*\r
-X293481Y462500D01*\r
-X295731D01*\r
-X299783Y465500D02*X300533Y464750D01*\r
-X298283Y465500D02*X299783D01*\r
-X297533Y464750D02*X298283Y465500D01*\r
-X297533Y464750D02*Y463250D01*\r
-X298283Y462500D01*\r
-X300533Y465500D02*Y463250D01*\r
-X301283Y462500D01*\r
-X298283D02*X299783D01*\r
-X300533Y463250D01*\r
-X303834Y468500D02*Y463250D01*\r
-X304584Y462500D01*\r
-X303084Y466250D02*X304584D01*\r
-X306086Y467000D02*Y466250D01*\r
-Y464750D02*Y462500D01*\r
-X307587Y464750D02*Y463250D01*\r
-Y464750D02*X308337Y465500D01*\r
-X309837D01*\r
-X310587Y464750D01*\r
-Y463250D01*\r
-X309837Y462500D02*X310587Y463250D01*\r
-X308337Y462500D02*X309837D01*\r
-X307587Y463250D02*X308337Y462500D01*\r
-X313139Y464750D02*Y462500D01*\r
-Y464750D02*X313889Y465500D01*\r
-X314639D01*\r
-X315389Y464750D01*\r
-Y462500D01*\r
-X312389Y465500D02*X313139Y464750D01*\r
-X320640Y468500D02*Y462500D01*\r
-X322890Y468500D02*X323640Y467750D01*\r
-Y463250D01*\r
-X322890Y462500D02*X323640Y463250D01*\r
-X319890Y462500D02*X322890D01*\r
-X319890Y468500D02*X322890D01*\r
-X326192Y464750D02*Y462500D01*\r
-Y464750D02*X326942Y465500D01*\r
-X328442D01*\r
-X325442D02*X326192Y464750D01*\r
-X332493Y465500D02*X333243Y464750D01*\r
-X330993Y465500D02*X332493D01*\r
-X330243Y464750D02*X330993Y465500D01*\r
-X330243Y464750D02*Y463250D01*\r
-X330993Y462500D01*\r
-X333243Y465500D02*Y463250D01*\r
-X333993Y462500D01*\r
-X330993D02*X332493D01*\r
-X333243Y463250D01*\r
-X335795Y465500D02*Y463250D01*\r
-X336545Y462500D01*\r
-X337295D01*\r
-X338045Y463250D01*\r
-Y465500D02*Y463250D01*\r
-X338795Y462500D01*\r
-X339545D01*\r
-X340295Y463250D01*\r
-Y465500D02*Y463250D01*\r
-X342096Y467000D02*Y466250D01*\r
-Y464750D02*Y462500D01*\r
-X344348Y464750D02*Y462500D01*\r
-Y464750D02*X345098Y465500D01*\r
-X345848D01*\r
-X346598Y464750D01*\r
-Y462500D01*\r
-X343598Y465500D02*X344348Y464750D01*\r
-X350649Y465500D02*X351399Y464750D01*\r
-X349149Y465500D02*X350649D01*\r
-X348399Y464750D02*X349149Y465500D01*\r
-X348399Y464750D02*Y463250D01*\r
-X349149Y462500D01*\r
-X350649D01*\r
-X351399Y463250D01*\r
-X348399Y461000D02*X349149Y460250D01*\r
-X350649D01*\r
-X351399Y461000D01*\r
-Y465500D02*Y461000D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+X19050Y84963D02*Y83744D01*\r
+Y84963D02*X20107Y85573D01*\r
+X19050Y84963D02*X17993Y85573D01*\r
+X18644Y84963D02*G75*G03X19456Y84963I406J0D01*G01*\r
+G75*G03X18644Y84963I-406J0D01*G01*\r
+X18237D02*G75*G03X19863Y84963I813J0D01*G01*\r
+G75*G03X18237Y84963I-813J0D01*G01*\r
+X19050Y60173D02*Y58953D01*\r
+Y60173D02*X20107Y60782D01*\r
+X19050Y60173D02*X17993Y60782D01*\r
+X18644Y60173D02*G75*G03X19456Y60173I406J0D01*G01*\r
+G75*G03X18644Y60173I-406J0D01*G01*\r
+X18237D02*G75*G03X19863Y60173I813J0D01*G01*\r
+G75*G03X18237Y60173I-813J0D01*G01*\r
+X3810Y106998D02*Y105778D01*\r
+Y106998D02*X4867Y107607D01*\r
+X3810Y106998D02*X2753Y107607D01*\r
+X3404Y106998D02*G75*G03X4216Y106998I406J0D01*G01*\r
+G75*G03X3404Y106998I-406J0D01*G01*\r
+X2997D02*G75*G03X4623Y106998I813J0D01*G01*\r
+G75*G03X2997Y106998I-813J0D01*G01*\r
+G54D96*X34290Y107569D02*Y107378D01*\r
+X34671Y106998D01*\r
+X35052Y107378D01*\r
+Y107569D02*Y107378D01*\r
+X34671Y106998D02*Y106045D01*\r
+X35509Y106807D02*X36081D01*\r
+X35509Y106045D02*X36271D01*\r
+X35509Y107569D02*Y106045D01*\r
+Y107569D02*X36271D01*\r
+X37490D02*X37681Y107378D01*\r
+X36919Y107569D02*X37490D01*\r
+X36728Y107378D02*X36919Y107569D01*\r
+X36728Y107378D02*Y106998D01*\r
+X36919Y106807D01*\r
+X37490D01*\r
+X37681Y106616D01*\r
+Y106236D01*\r
+X37490Y106045D02*X37681Y106236D01*\r
+X36919Y106045D02*X37490D01*\r
+X36728Y106236D02*X36919Y106045D01*\r
+X24892Y107378D02*X25082Y107569D01*\r
+X25654D01*\r
+X25844Y107378D01*\r
+Y106998D01*\r
+X24892Y106045D02*X25844Y106998D01*\r
+X24892Y106045D02*X25844D01*\r
+X11430Y106236D02*X11620Y106045D01*\r
+X11430Y107378D02*Y106236D01*\r
+Y107378D02*X11620Y107569D01*\r
+X12002D01*\r
+X12192Y107378D01*\r
+Y106236D01*\r
+X12002Y106045D02*X12192Y106236D01*\r
+X11620Y106045D02*X12002D01*\r
+X11430Y106426D02*X12192Y107188D01*\r
+X12649Y106045D02*X12840D01*\r
+X13487D02*X13868D01*\r
+X13678Y107569D02*Y106045D01*\r
+X13297Y107188D02*X13678Y107569D01*\r
+X14326Y107378D02*X14516Y107569D01*\r
+X15088D01*\r
+X15278Y107378D01*\r
+Y106998D01*\r
+X14326Y106045D02*X15278Y106998D01*\r
+X14326Y106045D02*X15278D01*\r
+X15735Y106236D02*X15926Y106045D01*\r
+X15735Y107378D02*Y106236D01*\r
+Y107378D02*X15926Y107569D01*\r
+X16307D01*\r
+X16497Y107378D01*\r
+Y106236D01*\r
+X16307Y106045D02*X16497Y106236D01*\r
+X15926Y106045D02*X16307D01*\r
+X15735Y106426D02*X16497Y107188D01*\r
+X14199Y97561D02*X15011D01*\r
+X14199D02*Y96749D01*\r
+X15011D01*\r
+Y97561D02*Y96749D01*\r
+X13792Y97968D02*X15418D01*\r
+X13792D02*Y96342D01*\r
+X15418D01*\r
+Y97968D02*Y96342D01*\r
+X14199Y8992D02*X15011D01*\r
+X14199D02*Y8179D01*\r
+X15011D01*\r
+Y8992D02*Y8179D01*\r
+X13792Y9398D02*X15418D01*\r
+X13792D02*Y7772D01*\r
+X15418D01*\r
+Y9398D02*Y7772D01*\r
+X167869Y97561D02*X168681D01*\r
+X167869D02*Y96749D01*\r
+X168681D01*\r
+Y97561D02*Y96749D01*\r
+X167462Y97968D02*X169088D01*\r
+X167462D02*Y96342D01*\r
+X169088D01*\r
+Y97968D02*Y96342D01*\r
+X167869Y8992D02*X168681D01*\r
+X167869D02*Y8179D01*\r
+X168681D01*\r
+Y8992D02*Y8179D01*\r
+X167462Y9398D02*X169088D01*\r
+X167462D02*Y7772D01*\r
+X169088D01*\r
+Y9398D02*Y7772D01*\r
+X167869Y8661D02*X168681D01*\r
+X167869D02*Y7849D01*\r
+X168681D01*\r
+Y8661D02*Y7849D01*\r
+X167462Y9068D02*X169088D01*\r
+X167462D02*Y7442D01*\r
+X169088D01*\r
+Y9068D02*Y7442D01*\r
+X167869Y97561D02*X168681D01*\r
+X167869D02*Y96749D01*\r
+X168681D01*\r
+Y97561D02*Y96749D01*\r
+X167462Y97968D02*X169088D01*\r
+X167462D02*Y96342D01*\r
+X169088D01*\r
+Y97968D02*Y96342D01*\r
+X3404Y111214D02*X4216D01*\r
+X3404D02*Y110401D01*\r
+X4216D01*\r
+Y111214D02*Y110401D01*\r
+X2997Y111620D02*X4623D01*\r
+X2997D02*Y109995D01*\r
+X4623D01*\r
+Y111620D02*Y109995D01*\r
+X34290Y111379D02*Y111188D01*\r
+X34671Y110808D01*\r
+X35052Y111188D01*\r
+Y111379D02*Y111188D01*\r
+X34671Y110808D02*Y109855D01*\r
+X35509Y110617D02*X36081D01*\r
+X35509Y109855D02*X36271D01*\r
+X35509Y111379D02*Y109855D01*\r
+Y111379D02*X36271D01*\r
+X37490D02*X37681Y111188D01*\r
+X36919Y111379D02*X37490D01*\r
+X36728Y111188D02*X36919Y111379D01*\r
+X36728Y111188D02*Y110808D01*\r
+X36919Y110617D01*\r
+X37490D01*\r
+X37681Y110426D01*\r
+Y110046D01*\r
+X37490Y109855D02*X37681Y110046D01*\r
+X36919Y109855D02*X37490D01*\r
+X36728Y110046D02*X36919Y109855D01*\r
+X25464Y111379D02*X25654Y111188D01*\r
+X25082Y111379D02*X25464D01*\r
+X24892Y111188D02*X25082Y111379D01*\r
+X24892Y111188D02*Y110046D01*\r
+X25082Y109855D01*\r
+X25464Y110617D02*X25654Y110426D01*\r
+X24892Y110617D02*X25464D01*\r
+X25082Y109855D02*X25464D01*\r
+X25654Y110046D01*\r
+Y110426D02*Y110046D01*\r
+X11430D02*X11620Y109855D01*\r
+X11430Y111188D02*Y110046D01*\r
+Y111188D02*X11620Y111379D01*\r
+X12002D01*\r
+X12192Y111188D01*\r
+Y110046D01*\r
+X12002Y109855D02*X12192Y110046D01*\r
+X11620Y109855D02*X12002D01*\r
+X11430Y110236D02*X12192Y110998D01*\r
+X12649Y109855D02*X12840D01*\r
+X13297Y110046D02*X13487Y109855D01*\r
+X13297Y111188D02*Y110046D01*\r
+Y111188D02*X13487Y111379D01*\r
+X13868D01*\r
+X14059Y111188D01*\r
+Y110046D01*\r
+X13868Y109855D02*X14059Y110046D01*\r
+X13487Y109855D02*X13868D01*\r
+X13297Y110236D02*X14059Y110998D01*\r
+X14516Y110046D02*X14707Y109855D01*\r
+X14516Y110426D02*Y110046D01*\r
+Y110426D02*X14707Y110617D01*\r
+X15088D01*\r
+X15278Y110426D01*\r
+Y110046D01*\r
+X15088Y109855D02*X15278Y110046D01*\r
+X14707Y109855D02*X15088D01*\r
+X14516Y110808D02*X14707Y110617D01*\r
+X14516Y111188D02*Y110808D01*\r
+Y111188D02*X14707Y111379D01*\r
+X15088D01*\r
+X15278Y111188D01*\r
+Y110808D01*\r
+X15088Y110617D02*X15278Y110808D01*\r
+X15735Y110046D02*X15926Y109855D01*\r
+X15735Y111188D02*Y110046D01*\r
+Y111188D02*X15926Y111379D01*\r
+X16307D01*\r
+X16497Y111188D01*\r
+Y110046D01*\r
+X16307Y109855D02*X16497Y110046D01*\r
+X15926Y109855D02*X16307D01*\r
+X15735Y110236D02*X16497Y110998D01*\r
+X140132Y27940D02*G75*G03X140538Y27940I203J0D01*G01*\r
+G75*G03X140132Y27940I-203J0D01*G01*\r
+X139725D02*G75*G03X140945Y27940I610J0D01*G01*\r
+G75*G03X139725Y27940I-610J0D01*G01*\r
+X150292D02*G75*G03X150698Y27940I203J0D01*G01*\r
+G75*G03X150292Y27940I-203J0D01*G01*\r
+X149885D02*G75*G03X151105Y27940I610J0D01*G01*\r
+G75*G03X149885Y27940I-610J0D01*G01*\r
+X140132Y52705D02*G75*G03X140538Y52705I203J0D01*G01*\r
+G75*G03X140132Y52705I-203J0D01*G01*\r
+X139725D02*G75*G03X140945Y52705I610J0D01*G01*\r
+G75*G03X139725Y52705I-610J0D01*G01*\r
+X150292D02*G75*G03X150698Y52705I203J0D01*G01*\r
+G75*G03X150292Y52705I-203J0D01*G01*\r
+X149885D02*G75*G03X151105Y52705I610J0D01*G01*\r
+G75*G03X149885Y52705I-610J0D01*G01*\r
+X3607Y114618D02*G75*G03X4013Y114618I203J0D01*G01*\r
+G75*G03X3607Y114618I-203J0D01*G01*\r
+X3200D02*G75*G03X4420Y114618I610J0D01*G01*\r
+G75*G03X3200Y114618I-610J0D01*G01*\r
+X34290Y115189D02*Y114998D01*\r
+X34671Y114618D01*\r
+X35052Y114998D01*\r
+Y115189D02*Y114998D01*\r
+X34671Y114618D02*Y113665D01*\r
+X35509Y114427D02*X36081D01*\r
+X35509Y113665D02*X36271D01*\r
+X35509Y115189D02*Y113665D01*\r
+Y115189D02*X36271D01*\r
+X37490D02*X37681Y114998D01*\r
+X36919Y115189D02*X37490D01*\r
+X36728Y114998D02*X36919Y115189D01*\r
+X36728Y114998D02*Y114618D01*\r
+X36919Y114427D01*\r
+X37490D01*\r
+X37681Y114236D01*\r
+Y113856D01*\r
+X37490Y113665D02*X37681Y113856D01*\r
+X36919Y113665D02*X37490D01*\r
+X36728Y113856D02*X36919Y113665D01*\r
+X24892Y114427D02*X25654Y115189D01*\r
+X24892Y114427D02*X25844D01*\r
+X25654Y115189D02*Y113665D01*\r
+X11430Y113856D02*X11620Y113665D01*\r
+X11430Y114998D02*Y113856D01*\r
+Y114998D02*X11620Y115189D01*\r
+X12002D01*\r
+X12192Y114998D01*\r
+Y113856D01*\r
+X12002Y113665D02*X12192Y113856D01*\r
+X11620Y113665D02*X12002D01*\r
+X11430Y114046D02*X12192Y114808D01*\r
+X12649Y113665D02*X12840D01*\r
+X13297Y113856D02*X13487Y113665D01*\r
+X13297Y114998D02*Y113856D01*\r
+Y114998D02*X13487Y115189D01*\r
+X13868D01*\r
+X14059Y114998D01*\r
+Y113856D01*\r
+X13868Y113665D02*X14059Y113856D01*\r
+X13487Y113665D02*X13868D01*\r
+X13297Y114046D02*X14059Y114808D01*\r
+X15088Y115189D02*X15278Y114998D01*\r
+X14707Y115189D02*X15088D01*\r
+X14516Y114998D02*X14707Y115189D01*\r
+X14516Y114998D02*Y113856D01*\r
+X14707Y113665D01*\r
+X15088Y114427D02*X15278Y114236D01*\r
+X14516Y114427D02*X15088D01*\r
+X14707Y113665D02*X15088D01*\r
+X15278Y113856D01*\r
+Y114236D02*Y113856D01*\r
+X15735D02*X15926Y113665D01*\r
+X15735Y114998D02*Y113856D01*\r
+Y114998D02*X15926Y115189D01*\r
+X16307D01*\r
+X16497Y114998D01*\r
+Y113856D01*\r
+X16307Y113665D02*X16497Y113856D01*\r
+X15926Y113665D02*X16307D01*\r
+X15735Y114046D02*X16497Y114808D01*\r
+X85750Y44425D02*X86970Y43205D01*\r
+X85750D02*X86970Y44425D01*\r
+X85954Y44221D02*X86766D01*\r
+X85954D02*Y43409D01*\r
+X86766D01*\r
+Y44221D02*Y43409D01*\r
+X139725Y44425D02*X140945Y43205D01*\r
+X139725D02*X140945Y44425D01*\r
+X139929Y44221D02*X140741D01*\r
+X139929D02*Y43409D01*\r
+X140741D01*\r
+Y44221D02*Y43409D01*\r
+X155600Y31725D02*X156820Y30505D01*\r
+X155600D02*X156820Y31725D01*\r
+X155804Y31521D02*X156616D01*\r
+X155804D02*Y30709D01*\r
+X156616D01*\r
+Y31521D02*Y30709D01*\r
+X155600Y48235D02*X156820Y47015D01*\r
+X155600D02*X156820Y48235D01*\r
+X155804Y48031D02*X156616D01*\r
+X155804D02*Y47219D01*\r
+X156616D01*\r
+Y48031D02*Y47219D01*\r
+X149885Y40615D02*X151105Y39395D01*\r
+X149885D02*X151105Y40615D01*\r
+X150089Y40411D02*X150901D01*\r
+X150089D02*Y39599D01*\r
+X150901D01*\r
+Y40411D02*Y39599D01*\r
+X134645Y5055D02*X135865Y3835D01*\r
+X134645D02*X135865Y5055D01*\r
+X134849Y4851D02*X135661D01*\r
+X134849D02*Y4039D01*\r
+X135661D01*\r
+Y4851D02*Y4039D01*\r
+X134645Y40615D02*X135865Y39395D01*\r
+X134645D02*X135865Y40615D01*\r
+X134849Y40411D02*X135661D01*\r
+X134849D02*Y39599D01*\r
+X135661D01*\r
+Y40411D02*Y39599D01*\r
+X3200Y119037D02*X4420Y117818D01*\r
+X3200D02*X4420Y119037D01*\r
+X3404Y118834D02*X4216D01*\r
+X3404D02*Y118021D01*\r
+X4216D01*\r
+Y118834D02*Y118021D01*\r
+X34290Y118999D02*Y118808D01*\r
+X34671Y118428D01*\r
+X35052Y118808D01*\r
+Y118999D02*Y118808D01*\r
+X34671Y118428D02*Y117475D01*\r
+X35509Y118237D02*X36081D01*\r
+X35509Y117475D02*X36271D01*\r
+X35509Y118999D02*Y117475D01*\r
+Y118999D02*X36271D01*\r
+X37490D02*X37681Y118808D01*\r
+X36919Y118999D02*X37490D01*\r
+X36728Y118808D02*X36919Y118999D01*\r
+X36728Y118808D02*Y118428D01*\r
+X36919Y118237D01*\r
+X37490D01*\r
+X37681Y118046D01*\r
+Y117666D01*\r
+X37490Y117475D02*X37681Y117666D01*\r
+X36919Y117475D02*X37490D01*\r
+X36728Y117666D02*X36919Y117475D01*\r
+X24892D02*X25844Y118428D01*\r
+Y118999D02*Y118428D01*\r
+X24892Y118999D02*X25844D01*\r
+X11430Y117666D02*X11620Y117475D01*\r
+X11430Y118808D02*Y117666D01*\r
+Y118808D02*X11620Y118999D01*\r
+X12002D01*\r
+X12192Y118808D01*\r
+Y117666D01*\r
+X12002Y117475D02*X12192Y117666D01*\r
+X11620Y117475D02*X12002D01*\r
+X11430Y117856D02*X12192Y118618D01*\r
+X12649Y117475D02*X12840D01*\r
+X13297Y117666D02*X13487Y117475D01*\r
+X13297Y118808D02*Y117666D01*\r
+Y118808D02*X13487Y118999D01*\r
+X13868D01*\r
+X14059Y118808D01*\r
+Y117666D01*\r
+X13868Y117475D02*X14059Y117666D01*\r
+X13487Y117475D02*X13868D01*\r
+X13297Y117856D02*X14059Y118618D01*\r
+X14516Y118999D02*X15278D01*\r
+X14516D02*Y118237D01*\r
+X14707Y118428D01*\r
+X15088D01*\r
+X15278Y118237D01*\r
+Y117666D01*\r
+X15088Y117475D02*X15278Y117666D01*\r
+X14707Y117475D02*X15088D01*\r
+X14516Y117666D02*X14707Y117475D01*\r
+X15735Y118999D02*X16497D01*\r
+X15735D02*Y118237D01*\r
+X15926Y118428D01*\r
+X16307D01*\r
+X16497Y118237D01*\r
+Y117666D01*\r
+X16307Y117475D02*X16497Y117666D01*\r
+X15926Y117475D02*X16307D01*\r
+X15735Y117666D02*X15926Y117475D01*\r
+X16459Y24917D02*Y23292D01*\r
+X15646Y24105D02*X17272D01*\r
+X16053Y24511D02*X16866D01*\r
+X16053D02*Y23698D01*\r
+X16866D01*\r
+Y24511D02*Y23698D01*\r
+X16459Y17907D02*Y16281D01*\r
+X15646Y17094D02*X17272D01*\r
+X16053Y17501D02*X16866D01*\r
+X16053D02*Y16688D01*\r
+X16866D01*\r
+Y17501D02*Y16688D01*\r
+X3810Y123050D02*Y121425D01*\r
+X2997Y122238D02*X4623D01*\r
+X3404Y122644D02*X4216D01*\r
+X3404D02*Y121831D01*\r
+X4216D01*\r
+Y122644D02*Y121831D01*\r
+X34290Y122809D02*Y122618D01*\r
+X34671Y122238D01*\r
+X35052Y122618D01*\r
+Y122809D02*Y122618D01*\r
+X34671Y122238D02*Y121285D01*\r
+X35509Y122047D02*X36081D01*\r
+X35509Y121285D02*X36271D01*\r
+X35509Y122809D02*Y121285D01*\r
+Y122809D02*X36271D01*\r
+X37490D02*X37681Y122618D01*\r
+X36919Y122809D02*X37490D01*\r
+X36728Y122618D02*X36919Y122809D01*\r
+X36728Y122618D02*Y122238D01*\r
+X36919Y122047D01*\r
+X37490D01*\r
+X37681Y121856D01*\r
+Y121476D01*\r
+X37490Y121285D02*X37681Y121476D01*\r
+X36919Y121285D02*X37490D01*\r
+X36728Y121476D02*X36919Y121285D01*\r
+X24892Y122618D02*X25082Y122809D01*\r
+X25654D01*\r
+X25844Y122618D01*\r
+Y122238D01*\r
+X24892Y121285D02*X25844Y122238D01*\r
+X24892Y121285D02*X25844D01*\r
+X11430Y121476D02*X11620Y121285D01*\r
+X11430Y122618D02*Y121476D01*\r
+Y122618D02*X11620Y122809D01*\r
+X12002D01*\r
+X12192Y122618D01*\r
+Y121476D01*\r
+X12002Y121285D02*X12192Y121476D01*\r
+X11620Y121285D02*X12002D01*\r
+X11430Y121666D02*X12192Y122428D01*\r
+X12649Y121285D02*X12840D01*\r
+X13297Y121476D02*X13487Y121285D01*\r
+X13297Y122618D02*Y121476D01*\r
+Y122618D02*X13487Y122809D01*\r
+X13868D01*\r
+X14059Y122618D01*\r
+Y121476D01*\r
+X13868Y121285D02*X14059Y121476D01*\r
+X13487Y121285D02*X13868D01*\r
+X13297Y121666D02*X14059Y122428D01*\r
+X14516Y122809D02*X15278D01*\r
+X14516D02*Y122047D01*\r
+X14707Y122238D01*\r
+X15088D01*\r
+X15278Y122047D01*\r
+Y121476D01*\r
+X15088Y121285D02*X15278Y121476D01*\r
+X14707Y121285D02*X15088D01*\r
+X14516Y121476D02*X14707Y121285D01*\r
+X15735Y122618D02*X15926Y122809D01*\r
+X16497D01*\r
+X16688Y122618D01*\r
+Y122238D01*\r
+X15735Y121285D02*X16688Y122238D01*\r
+X15735Y121285D02*X16688D01*\r
+X15875Y48895D02*Y48082D01*\r
+Y48895D02*X16579Y49301D01*\r
+X15875Y48895D02*X15171Y49301D01*\r
+X15469Y48895D02*G75*G03X16281Y48895I406J0D01*G01*\r
+G75*G03X15469Y48895I-406J0D01*G01*\r
+X15875Y51435D02*Y50622D01*\r
+Y51435D02*X16579Y51841D01*\r
+X15875Y51435D02*X15171Y51841D01*\r
+X15469Y51435D02*G75*G03X16281Y51435I406J0D01*G01*\r
+G75*G03X15469Y51435I-406J0D01*G01*\r
+X15875Y29845D02*Y29032D01*\r
+Y29845D02*X16579Y30251D01*\r
+X15875Y29845D02*X15171Y30251D01*\r
+X15469Y29845D02*G75*G03X16281Y29845I406J0D01*G01*\r
+G75*G03X15469Y29845I-406J0D01*G01*\r
+X15875Y32385D02*Y31572D01*\r
+Y32385D02*X16579Y32791D01*\r
+X15875Y32385D02*X15171Y32791D01*\r
+X15469Y32385D02*G75*G03X16281Y32385I406J0D01*G01*\r
+G75*G03X15469Y32385I-406J0D01*G01*\r
+X15875Y39370D02*Y38557D01*\r
+Y39370D02*X16579Y39776D01*\r
+X15875Y39370D02*X15171Y39776D01*\r
+X15469Y39370D02*G75*G03X16281Y39370I406J0D01*G01*\r
+G75*G03X15469Y39370I-406J0D01*G01*\r
+X15875Y41910D02*Y41097D01*\r
+Y41910D02*X16579Y42316D01*\r
+X15875Y41910D02*X15171Y42316D01*\r
+X15469Y41910D02*G75*G03X16281Y41910I406J0D01*G01*\r
+G75*G03X15469Y41910I-406J0D01*G01*\r
+X3810Y126048D02*Y125235D01*\r
+Y126048D02*X4514Y126454D01*\r
+X3810Y126048D02*X3106Y126454D01*\r
+X3404Y126048D02*G75*G03X4216Y126048I406J0D01*G01*\r
+G75*G03X3404Y126048I-406J0D01*G01*\r
+X34290Y126619D02*Y126428D01*\r
+X34671Y126048D01*\r
+X35052Y126428D01*\r
+Y126619D02*Y126428D01*\r
+X34671Y126048D02*Y125095D01*\r
+X35509Y125857D02*X36081D01*\r
+X35509Y125095D02*X36271D01*\r
+X35509Y126619D02*Y125095D01*\r
+Y126619D02*X36271D01*\r
+X37490D02*X37681Y126428D01*\r
+X36919Y126619D02*X37490D01*\r
+X36728Y126428D02*X36919Y126619D01*\r
+X36728Y126428D02*Y126048D01*\r
+X36919Y125857D01*\r
+X37490D01*\r
+X37681Y125666D01*\r
+Y125286D01*\r
+X37490Y125095D02*X37681Y125286D01*\r
+X36919Y125095D02*X37490D01*\r
+X36728Y125286D02*X36919Y125095D01*\r
+X25464Y126619D02*X25654Y126428D01*\r
+X25082Y126619D02*X25464D01*\r
+X24892Y126428D02*X25082Y126619D01*\r
+X24892Y126428D02*Y125286D01*\r
+X25082Y125095D01*\r
+X25464Y125857D02*X25654Y125666D01*\r
+X24892Y125857D02*X25464D01*\r
+X25082Y125095D02*X25464D01*\r
+X25654Y125286D01*\r
+Y125666D02*Y125286D01*\r
+X11430D02*X11620Y125095D01*\r
+X11430Y126428D02*Y125286D01*\r
+Y126428D02*X11620Y126619D01*\r
+X12002D01*\r
+X12192Y126428D01*\r
+Y125286D01*\r
+X12002Y125095D02*X12192Y125286D01*\r
+X11620Y125095D02*X12002D01*\r
+X11430Y125476D02*X12192Y126238D01*\r
+X12649Y125095D02*X12840D01*\r
+X13297Y125286D02*X13487Y125095D01*\r
+X13297Y126428D02*Y125286D01*\r
+Y126428D02*X13487Y126619D01*\r
+X13868D01*\r
+X14059Y126428D01*\r
+Y125286D01*\r
+X13868Y125095D02*X14059Y125286D01*\r
+X13487Y125095D02*X13868D01*\r
+X13297Y125476D02*X14059Y126238D01*\r
+X14516Y125857D02*X15278Y126619D01*\r
+X14516Y125857D02*X15469D01*\r
+X15278Y126619D02*Y125095D01*\r
+X15926Y126428D02*X16116Y126619D01*\r
+X16497D01*\r
+X16688Y126428D01*\r
+Y125286D01*\r
+X16497Y125095D02*X16688Y125286D01*\r
+X16116Y125095D02*X16497D01*\r
+X15926Y125286D02*X16116Y125095D01*\r
+Y125857D02*X16688D01*\r
+X88494Y32156D02*X89306D01*\r
+X88494D02*Y31344D01*\r
+X89306D01*\r
+Y32156D02*Y31344D01*\r
+X85954Y32156D02*X86766D01*\r
+X85954D02*Y31344D01*\r
+X86766D01*\r
+Y32156D02*Y31344D01*\r
+X83414Y32156D02*X84226D01*\r
+X83414D02*Y31344D01*\r
+X84226D01*\r
+Y32156D02*Y31344D01*\r
+X120879Y13106D02*X121691D01*\r
+X120879D02*Y12294D01*\r
+X121691D01*\r
+Y13106D02*Y12294D01*\r
+X118339Y13106D02*X119151D01*\r
+X118339D02*Y12294D01*\r
+X119151D01*\r
+Y13106D02*Y12294D01*\r
+X115799Y13106D02*X116611D01*\r
+X115799D02*Y12294D01*\r
+X116611D01*\r
+Y13106D02*Y12294D01*\r
+X88494Y13106D02*X89306D01*\r
+X88494D02*Y12294D01*\r
+X89306D01*\r
+Y13106D02*Y12294D01*\r
+X85954Y13106D02*X86766D01*\r
+X85954D02*Y12294D01*\r
+X86766D01*\r
+Y13106D02*Y12294D01*\r
+X83414Y13106D02*X84226D01*\r
+X83414D02*Y12294D01*\r
+X84226D01*\r
+Y13106D02*Y12294D01*\r
+X13564Y23266D02*X14376D01*\r
+X13564D02*Y22454D01*\r
+X14376D01*\r
+Y23266D02*Y22454D01*\r
+X13564Y18771D02*X14376D01*\r
+X13564D02*Y17958D01*\r
+X14376D01*\r
+Y18771D02*Y17958D01*\r
+X120879Y51206D02*X121691D01*\r
+X120879D02*Y50394D01*\r
+X121691D01*\r
+Y51206D02*Y50394D01*\r
+X118339Y51206D02*X119151D01*\r
+X118339D02*Y50394D01*\r
+X119151D01*\r
+Y51206D02*Y50394D01*\r
+X115799Y51206D02*X116611D01*\r
+X115799D02*Y50394D01*\r
+X116611D01*\r
+Y51206D02*Y50394D01*\r
+X120879Y32156D02*X121691D01*\r
+X120879D02*Y31344D01*\r
+X121691D01*\r
+Y32156D02*Y31344D01*\r
+X118339Y32156D02*X119151D01*\r
+X118339D02*Y31344D01*\r
+X119151D01*\r
+Y32156D02*Y31344D01*\r
+X115799Y32156D02*X116611D01*\r
+X115799D02*Y31344D01*\r
+X116611D01*\r
+Y32156D02*Y31344D01*\r
+X88494Y51206D02*X89306D01*\r
+X88494D02*Y50394D01*\r
+X89306D01*\r
+Y51206D02*Y50394D01*\r
+X85954Y51206D02*X86766D01*\r
+X85954D02*Y50394D01*\r
+X86766D01*\r
+Y51206D02*Y50394D01*\r
+X83414Y51206D02*X84226D01*\r
+X83414D02*Y50394D01*\r
+X84226D01*\r
+Y51206D02*Y50394D01*\r
+X3404Y130264D02*X4216D01*\r
+X3404D02*Y129451D01*\r
+X4216D01*\r
+Y130264D02*Y129451D01*\r
+X34290Y130429D02*Y130238D01*\r
+X34671Y129857D01*\r
+X35052Y130238D01*\r
+Y130429D02*Y130238D01*\r
+X34671Y129857D02*Y128905D01*\r
+X35509Y129667D02*X36081D01*\r
+X35509Y128905D02*X36271D01*\r
+X35509Y130429D02*Y128905D01*\r
+Y130429D02*X36271D01*\r
+X37490D02*X37681Y130238D01*\r
+X36919Y130429D02*X37490D01*\r
+X36728Y130238D02*X36919Y130429D01*\r
+X36728Y130238D02*Y129857D01*\r
+X36919Y129667D01*\r
+X37490D01*\r
+X37681Y129476D01*\r
+Y129095D01*\r
+X37490Y128905D02*X37681Y129095D01*\r
+X36919Y128905D02*X37490D01*\r
+X36728Y129095D02*X36919Y128905D01*\r
+X24892Y130238D02*X25082Y130429D01*\r
+X25654D01*\r
+X25844Y130238D01*\r
+Y129857D01*\r
+X24892Y128905D02*X25844Y129857D01*\r
+X24892Y128905D02*X25844D01*\r
+X26302Y129095D02*X26492Y128905D01*\r
+X26302Y130238D02*Y129095D01*\r
+Y130238D02*X26492Y130429D01*\r
+X26873D01*\r
+X27064Y130238D01*\r
+Y129095D01*\r
+X26873Y128905D02*X27064Y129095D01*\r
+X26492Y128905D02*X26873D01*\r
+X26302Y129286D02*X27064Y130048D01*\r
+X11430Y129095D02*X11620Y128905D01*\r
+X11430Y130238D02*Y129095D01*\r
+Y130238D02*X11620Y130429D01*\r
+X12002D01*\r
+X12192Y130238D01*\r
+Y129095D01*\r
+X12002Y128905D02*X12192Y129095D01*\r
+X11620Y128905D02*X12002D01*\r
+X11430Y129286D02*X12192Y130048D01*\r
+X12649Y128905D02*X12840D01*\r
+X13297Y129095D02*X13487Y128905D01*\r
+X13297Y130238D02*Y129095D01*\r
+Y130238D02*X13487Y130429D01*\r
+X13868D01*\r
+X14059Y130238D01*\r
+Y129095D01*\r
+X13868Y128905D02*X14059Y129095D01*\r
+X13487Y128905D02*X13868D01*\r
+X13297Y129286D02*X14059Y130048D01*\r
+X14516Y129667D02*X15278Y130429D01*\r
+X14516Y129667D02*X15469D01*\r
+X15278Y130429D02*Y128905D01*\r
+X15926Y130238D02*X16116Y130429D01*\r
+X16688D01*\r
+X16878Y130238D01*\r
+Y129857D01*\r
+X15926Y128905D02*X16878Y129857D01*\r
+X15926Y128905D02*X16878D01*\r
+X70917Y85090D02*G75*G03X71323Y85090I203J0D01*G01*\r
+G75*G03X70917Y85090I-203J0D01*G01*\r
+X73457D02*G75*G03X73863Y85090I203J0D01*G01*\r
+G75*G03X73457Y85090I-203J0D01*G01*\r
+X107747Y80010D02*G75*G03X108153Y80010I203J0D01*G01*\r
+G75*G03X107747Y80010I-203J0D01*G01*\r
+Y69850D02*G75*G03X108153Y69850I203J0D01*G01*\r
+G75*G03X107747Y69850I-203J0D01*G01*\r
+X55042Y59690D02*G75*G03X55448Y59690I203J0D01*G01*\r
+G75*G03X55042Y59690I-203J0D01*G01*\r
+X44882D02*G75*G03X45288Y59690I203J0D01*G01*\r
+G75*G03X44882Y59690I-203J0D01*G01*\r
+X72822Y66040D02*G75*G03X73228Y66040I203J0D01*G01*\r
+G75*G03X72822Y66040I-203J0D01*G01*\r
+X70282D02*G75*G03X70688Y66040I203J0D01*G01*\r
+G75*G03X70282Y66040I-203J0D01*G01*\r
+X61392D02*G75*G03X61798Y66040I203J0D01*G01*\r
+G75*G03X61392Y66040I-203J0D01*G01*\r
+X63932D02*G75*G03X64338Y66040I203J0D01*G01*\r
+G75*G03X63932Y66040I-203J0D01*G01*\r
+X73457Y91440D02*G75*G03X73863Y91440I203J0D01*G01*\r
+G75*G03X73457Y91440I-203J0D01*G01*\r
+X70917D02*G75*G03X71323Y91440I203J0D01*G01*\r
+G75*G03X70917Y91440I-203J0D01*G01*\r
+X156007Y10160D02*G75*G03X156413Y10160I203J0D01*G01*\r
+G75*G03X156007Y10160I-203J0D01*G01*\r
+Y7620D02*G75*G03X156413Y7620I203J0D01*G01*\r
+G75*G03X156007Y7620I-203J0D01*G01*\r
+X116637Y93980D02*G75*G03X117043Y93980I203J0D01*G01*\r
+G75*G03X116637Y93980I-203J0D01*G01*\r
+Y83820D02*G75*G03X117043Y83820I203J0D01*G01*\r
+G75*G03X116637Y83820I-203J0D01*G01*\r
+X79807Y92710D02*G75*G03X80213Y92710I203J0D01*G01*\r
+G75*G03X79807Y92710I-203J0D01*G01*\r
+Y90170D02*G75*G03X80213Y90170I203J0D01*G01*\r
+G75*G03X79807Y90170I-203J0D01*G01*\r
+X156007Y66040D02*G75*G03X156413Y66040I203J0D01*G01*\r
+G75*G03X156007Y66040I-203J0D01*G01*\r
+X145847D02*G75*G03X146253Y66040I203J0D01*G01*\r
+G75*G03X145847Y66040I-203J0D01*G01*\r
+X141402D02*G75*G03X141808Y66040I203J0D01*G01*\r
+G75*G03X141402Y66040I-203J0D01*G01*\r
+X131242D02*G75*G03X131648Y66040I203J0D01*G01*\r
+G75*G03X131242Y66040I-203J0D01*G01*\r
+X86792D02*G75*G03X87198Y66040I203J0D01*G01*\r
+G75*G03X86792Y66040I-203J0D01*G01*\r
+X96952D02*G75*G03X97358Y66040I203J0D01*G01*\r
+G75*G03X96952Y66040I-203J0D01*G01*\r
+X156007Y15240D02*G75*G03X156413Y15240I203J0D01*G01*\r
+G75*G03X156007Y15240I-203J0D01*G01*\r
+Y17780D02*G75*G03X156413Y17780I203J0D01*G01*\r
+G75*G03X156007Y17780I-203J0D01*G01*\r
+X107747Y83820D02*G75*G03X108153Y83820I203J0D01*G01*\r
+G75*G03X107747Y83820I-203J0D01*G01*\r
+Y93980D02*G75*G03X108153Y93980I203J0D01*G01*\r
+G75*G03X107747Y93980I-203J0D01*G01*\r
+X111557Y66040D02*G75*G03X111963Y66040I203J0D01*G01*\r
+G75*G03X111557Y66040I-203J0D01*G01*\r
+X101397D02*G75*G03X101803Y66040I203J0D01*G01*\r
+G75*G03X101397Y66040I-203J0D01*G01*\r
+X116637D02*G75*G03X117043Y66040I203J0D01*G01*\r
+G75*G03X116637Y66040I-203J0D01*G01*\r
+X126797D02*G75*G03X127203Y66040I203J0D01*G01*\r
+G75*G03X126797Y66040I-203J0D01*G01*\r
+X138862Y83820D02*G75*G03X139268Y83820I203J0D01*G01*\r
+G75*G03X138862Y83820I-203J0D01*G01*\r
+Y93980D02*G75*G03X139268Y93980I203J0D01*G01*\r
+G75*G03X138862Y93980I-203J0D01*G01*\r
+X61392Y59690D02*G75*G03X61798Y59690I203J0D01*G01*\r
+G75*G03X61392Y59690I-203J0D01*G01*\r
+X63932D02*G75*G03X64338Y59690I203J0D01*G01*\r
+G75*G03X63932Y59690I-203J0D01*G01*\r
+X112192Y83820D02*G75*G03X112598Y83820I203J0D01*G01*\r
+G75*G03X112192Y83820I-203J0D01*G01*\r
+Y93980D02*G75*G03X112598Y93980I203J0D01*G01*\r
+G75*G03X112192Y93980I-203J0D01*G01*\r
+X81077Y66040D02*G75*G03X81483Y66040I203J0D01*G01*\r
+G75*G03X81077Y66040I-203J0D01*G01*\r
+X78537D02*G75*G03X78943Y66040I203J0D01*G01*\r
+G75*G03X78537Y66040I-203J0D01*G01*\r
+X48692Y85090D02*G75*G03X49098Y85090I203J0D01*G01*\r
+G75*G03X48692Y85090I-203J0D01*G01*\r
+X51232D02*G75*G03X51638Y85090I203J0D01*G01*\r
+G75*G03X51232Y85090I-203J0D01*G01*\r
+X112192Y80010D02*G75*G03X112598Y80010I203J0D01*G01*\r
+G75*G03X112192Y80010I-203J0D01*G01*\r
+Y69850D02*G75*G03X112598Y69850I203J0D01*G01*\r
+G75*G03X112192Y69850I-203J0D01*G01*\r
+X135052Y93980D02*G75*G03X135458Y93980I203J0D01*G01*\r
+G75*G03X135052Y93980I-203J0D01*G01*\r
+Y83820D02*G75*G03X135458Y83820I203J0D01*G01*\r
+G75*G03X135052Y83820I-203J0D01*G01*\r
+X58852Y49530D02*G75*G03X59258Y49530I203J0D01*G01*\r
+G75*G03X58852Y49530I-203J0D01*G01*\r
+X69012D02*G75*G03X69418Y49530I203J0D01*G01*\r
+G75*G03X69012Y49530I-203J0D01*G01*\r
+X142672Y83820D02*G75*G03X143078Y83820I203J0D01*G01*\r
+G75*G03X142672Y83820I-203J0D01*G01*\r
+Y93980D02*G75*G03X143078Y93980I203J0D01*G01*\r
+G75*G03X142672Y93980I-203J0D01*G01*\r
+X78537Y85090D02*G75*G03X78943Y85090I203J0D01*G01*\r
+G75*G03X78537Y85090I-203J0D01*G01*\r
+X81077D02*G75*G03X81483Y85090I203J0D01*G01*\r
+G75*G03X81077Y85090I-203J0D01*G01*\r
+X20117Y78105D02*G75*G03X20523Y78105I203J0D01*G01*\r
+G75*G03X20117Y78105I-203J0D01*G01*\r
+Y75336D02*G75*G03X20523Y75336I203J0D01*G01*\r
+G75*G03X20117Y75336I-203J0D01*G01*\r
+Y72568D02*G75*G03X20523Y72568I203J0D01*G01*\r
+G75*G03X20117Y72568I-203J0D01*G01*\r
+Y69799D02*G75*G03X20523Y69799I203J0D01*G01*\r
+G75*G03X20117Y69799I-203J0D01*G01*\r
+Y67031D02*G75*G03X20523Y67031I203J0D01*G01*\r
+G75*G03X20117Y67031I-203J0D01*G01*\r
+X17577Y76733D02*G75*G03X17983Y76733I203J0D01*G01*\r
+G75*G03X17577Y76733I-203J0D01*G01*\r
+Y73965D02*G75*G03X17983Y73965I203J0D01*G01*\r
+G75*G03X17577Y73965I-203J0D01*G01*\r
+Y71196D02*G75*G03X17983Y71196I203J0D01*G01*\r
+G75*G03X17577Y71196I-203J0D01*G01*\r
+Y68428D02*G75*G03X17983Y68428I203J0D01*G01*\r
+G75*G03X17577Y68428I-203J0D01*G01*\r
+X87427Y93980D02*G75*G03X87833Y93980I203J0D01*G01*\r
+G75*G03X87427Y93980I-203J0D01*G01*\r
+Y83820D02*G75*G03X87833Y83820I203J0D01*G01*\r
+G75*G03X87427Y83820I-203J0D01*G01*\r
+X58852Y39370D02*G75*G03X59258Y39370I203J0D01*G01*\r
+G75*G03X58852Y39370I-203J0D01*G01*\r
+X69012D02*G75*G03X69418Y39370I203J0D01*G01*\r
+G75*G03X69012Y39370I-203J0D01*G01*\r
+X44882D02*G75*G03X45288Y39370I203J0D01*G01*\r
+G75*G03X44882Y39370I-203J0D01*G01*\r
+X55042D02*G75*G03X55448Y39370I203J0D01*G01*\r
+G75*G03X55042Y39370I-203J0D01*G01*\r
+X44882Y49530D02*G75*G03X45288Y49530I203J0D01*G01*\r
+G75*G03X44882Y49530I-203J0D01*G01*\r
+X55042D02*G75*G03X55448Y49530I203J0D01*G01*\r
+G75*G03X55042Y49530I-203J0D01*G01*\r
+Y27940D02*G75*G03X55448Y27940I203J0D01*G01*\r
+G75*G03X55042Y27940I-203J0D01*G01*\r
+X44882D02*G75*G03X45288Y27940I203J0D01*G01*\r
+G75*G03X44882Y27940I-203J0D01*G01*\r
+X61392D02*G75*G03X61798Y27940I203J0D01*G01*\r
+G75*G03X61392Y27940I-203J0D01*G01*\r
+X63932D02*G75*G03X64338Y27940I203J0D01*G01*\r
+G75*G03X63932Y27940I-203J0D01*G01*\r
+X61392Y34290D02*G75*G03X61798Y34290I203J0D01*G01*\r
+G75*G03X61392Y34290I-203J0D01*G01*\r
+X63932D02*G75*G03X64338Y34290I203J0D01*G01*\r
+G75*G03X63932Y34290I-203J0D01*G01*\r
+X126162Y10160D02*G75*G03X126568Y10160I203J0D01*G01*\r
+G75*G03X126162Y10160I-203J0D01*G01*\r
+X70917Y81915D02*G75*G03X71323Y81915I203J0D01*G01*\r
+G75*G03X70917Y81915I-203J0D01*G01*\r
+X61392Y62230D02*G75*G03X61798Y62230I203J0D01*G01*\r
+G75*G03X61392Y62230I-203J0D01*G01*\r
+X109652Y15240D02*G75*G03X110058Y15240I203J0D01*G01*\r
+G75*G03X109652Y15240I-203J0D01*G01*\r
+X60757Y20320D02*G75*G03X61163Y20320I203J0D01*G01*\r
+G75*G03X60757Y20320I-203J0D01*G01*\r
+X44882Y31750D02*G75*G03X45288Y31750I203J0D01*G01*\r
+G75*G03X44882Y31750I-203J0D01*G01*\r
+X94412Y10160D02*G75*G03X94818Y10160I203J0D01*G01*\r
+G75*G03X94412Y10160I-203J0D01*G01*\r
+X101397Y21590D02*G75*G03X101803Y21590I203J0D01*G01*\r
+G75*G03X101397Y21590I-203J0D01*G01*\r
+X38532Y88265D02*G75*G03X38938Y88265I203J0D01*G01*\r
+G75*G03X38532Y88265I-203J0D01*G01*\r
+X126162Y36195D02*G75*G03X126568Y36195I203J0D01*G01*\r
+G75*G03X126162Y36195I-203J0D01*G01*\r
+X49327Y7620D02*G75*G03X49733Y7620I203J0D01*G01*\r
+G75*G03X49327Y7620I-203J0D01*G01*\r
+X55042Y47625D02*G75*G03X55448Y47625I203J0D01*G01*\r
+G75*G03X55042Y47625I-203J0D01*G01*\r
+X47422Y59690D02*G75*G03X47828Y59690I203J0D01*G01*\r
+G75*G03X47422Y59690I-203J0D01*G01*\r
+X119812Y81915D02*G75*G03X120218Y81915I203J0D01*G01*\r
+G75*G03X119812Y81915I-203J0D01*G01*\r
+X152832Y64135D02*G75*G03X153238Y64135I203J0D01*G01*\r
+G75*G03X152832Y64135I-203J0D01*G01*\r
+X101397Y62230D02*G75*G03X101803Y62230I203J0D01*G01*\r
+G75*G03X101397Y62230I-203J0D01*G01*\r
+X66472Y76835D02*G75*G03X66878Y76835I203J0D01*G01*\r
+G75*G03X66472Y76835I-203J0D01*G01*\r
+X40437Y85090D02*G75*G03X40843Y85090I203J0D01*G01*\r
+G75*G03X40437Y85090I-203J0D01*G01*\r
+X56947Y29845D02*G75*G03X57353Y29845I203J0D01*G01*\r
+G75*G03X56947Y29845I-203J0D01*G01*\r
+X131877Y86360D02*G75*G03X132283Y86360I203J0D01*G01*\r
+G75*G03X131877Y86360I-203J0D01*G01*\r
+X97587Y62230D02*G75*G03X97993Y62230I203J0D01*G01*\r
+G75*G03X97587Y62230I-203J0D01*G01*\r
+X47422Y76835D02*G75*G03X47828Y76835I203J0D01*G01*\r
+G75*G03X47422Y76835I-203J0D01*G01*\r
+X56947Y24765D02*G75*G03X57353Y24765I203J0D01*G01*\r
+G75*G03X56947Y24765I-203J0D01*G01*\r
+X109652Y57785D02*G75*G03X110058Y57785I203J0D01*G01*\r
+G75*G03X109652Y57785I-203J0D01*G01*\r
+X63932Y31750D02*G75*G03X64338Y31750I203J0D01*G01*\r
+G75*G03X63932Y31750I-203J0D01*G01*\r
+X61392D02*G75*G03X61798Y31750I203J0D01*G01*\r
+G75*G03X61392Y31750I-203J0D01*G01*\r
+X138227Y15875D02*G75*G03X138633Y15875I203J0D01*G01*\r
+G75*G03X138227Y15875I-203J0D01*G01*\r
+X76632Y81915D02*G75*G03X77038Y81915I203J0D01*G01*\r
+G75*G03X76632Y81915I-203J0D01*G01*\r
+X74727Y88900D02*G75*G03X75133Y88900I203J0D01*G01*\r
+G75*G03X74727Y88900I-203J0D01*G01*\r
+X44882Y62230D02*G75*G03X45288Y62230I203J0D01*G01*\r
+G75*G03X44882Y62230I-203J0D01*G01*\r
+X48057Y34290D02*G75*G03X48463Y34290I203J0D01*G01*\r
+G75*G03X48057Y34290I-203J0D01*G01*\r
+X63932Y24765D02*G75*G03X64338Y24765I203J0D01*G01*\r
+G75*G03X63932Y24765I-203J0D01*G01*\r
+X156007Y76835D02*G75*G03X156413Y76835I203J0D01*G01*\r
+G75*G03X156007Y76835I-203J0D01*G01*\r
+X97587Y17780D02*G75*G03X97993Y17780I203J0D01*G01*\r
+G75*G03X97587Y17780I-203J0D01*G01*\r
+X119812Y62230D02*G75*G03X120218Y62230I203J0D01*G01*\r
+G75*G03X119812Y62230I-203J0D01*G01*\r
+X66472Y52705D02*G75*G03X66878Y52705I203J0D01*G01*\r
+G75*G03X66472Y52705I-203J0D01*G01*\r
+Y59690D02*G75*G03X66878Y59690I203J0D01*G01*\r
+G75*G03X66472Y59690I-203J0D01*G01*\r
+X38532Y57785D02*G75*G03X38938Y57785I203J0D01*G01*\r
+G75*G03X38532Y57785I-203J0D01*G01*\r
+X153467Y15240D02*G75*G03X153873Y15240I203J0D01*G01*\r
+G75*G03X153467Y15240I-203J0D01*G01*\r
+X52502Y39370D02*G75*G03X52908Y39370I203J0D01*G01*\r
+G75*G03X52502Y39370I-203J0D01*G01*\r
+X131242Y62230D02*G75*G03X131648Y62230I203J0D01*G01*\r
+G75*G03X131242Y62230I-203J0D01*G01*\r
+X40437D02*G75*G03X40843Y62230I203J0D01*G01*\r
+G75*G03X40437Y62230I-203J0D01*G01*\r
+X140132Y17780D02*G75*G03X140538Y17780I203J0D01*G01*\r
+G75*G03X140132Y17780I-203J0D01*G01*\r
+X99492Y19685D02*G75*G03X99898Y19685I203J0D01*G01*\r
+G75*G03X99492Y19685I-203J0D01*G01*\r
+X98222Y67945D02*G75*G03X98628Y67945I203J0D01*G01*\r
+G75*G03X98222Y67945I-203J0D01*G01*\r
+X68377Y73025D02*G75*G03X68783Y73025I203J0D01*G01*\r
+G75*G03X68377Y73025I-203J0D01*G01*\r
+X91237Y67945D02*G75*G03X91643Y67945I203J0D01*G01*\r
+G75*G03X91237Y67945I-203J0D01*G01*\r
+X103937Y86360D02*G75*G03X104343Y86360I203J0D01*G01*\r
+G75*G03X103937Y86360I-203J0D01*G01*\r
+X68377Y96520D02*G75*G03X68783Y96520I203J0D01*G01*\r
+G75*G03X68377Y96520I-203J0D01*G01*\r
+X91237D02*G75*G03X91643Y96520I203J0D01*G01*\r
+G75*G03X91237Y96520I-203J0D01*G01*\r
+X48057Y24765D02*G75*G03X48463Y24765I203J0D01*G01*\r
+G75*G03X48057Y24765I-203J0D01*G01*\r
+X68377Y66040D02*G75*G03X68783Y66040I203J0D01*G01*\r
+G75*G03X68377Y66040I-203J0D01*G01*\r
+X82982Y96520D02*G75*G03X83388Y96520I203J0D01*G01*\r
+G75*G03X82982Y96520I-203J0D01*G01*\r
+X40437Y72390D02*G75*G03X40843Y72390I203J0D01*G01*\r
+G75*G03X40437Y72390I-203J0D01*G01*\r
+X3607Y133668D02*G75*G03X4013Y133668I203J0D01*G01*\r
+G75*G03X3607Y133668I-203J0D01*G01*\r
+X34290Y134239D02*Y134048D01*\r
+X34671Y133668D01*\r
+X35052Y134048D01*\r
+Y134239D02*Y134048D01*\r
+X34671Y133668D02*Y132715D01*\r
+X35509Y133477D02*X36081D01*\r
+X35509Y132715D02*X36271D01*\r
+X35509Y134239D02*Y132715D01*\r
+Y134239D02*X36271D01*\r
+X37490D02*X37681Y134048D01*\r
+X36919Y134239D02*X37490D01*\r
+X36728Y134048D02*X36919Y134239D01*\r
+X36728Y134048D02*Y133668D01*\r
+X36919Y133477D01*\r
+X37490D01*\r
+X37681Y133286D01*\r
+Y132906D01*\r
+X37490Y132715D02*X37681Y132906D01*\r
+X36919Y132715D02*X37490D01*\r
+X36728Y132906D02*X36919Y132715D01*\r
+X25082D02*X25464D01*\r
+X25273Y134239D02*Y132715D01*\r
+X24892Y133858D02*X25273Y134239D01*\r
+X25921Y134048D02*X26111Y134239D01*\r
+X26683D01*\r
+X26873Y134048D01*\r
+Y133668D01*\r
+X25921Y132715D02*X26873Y133668D01*\r
+X25921Y132715D02*X26873D01*\r
+X27330D02*X28092Y133477D01*\r
+Y134048D02*Y133477D01*\r
+X27902Y134239D02*X28092Y134048D01*\r
+X27521Y134239D02*X27902D01*\r
+X27330Y134048D02*X27521Y134239D01*\r
+X27330Y134048D02*Y133668D01*\r
+X27521Y133477D01*\r
+X28092D01*\r
+X11430Y132906D02*X11620Y132715D01*\r
+X11430Y134048D02*Y132906D01*\r
+Y134048D02*X11620Y134239D01*\r
+X12002D01*\r
+X12192Y134048D01*\r
+Y132906D01*\r
+X12002Y132715D02*X12192Y132906D01*\r
+X11620Y132715D02*X12002D01*\r
+X11430Y133096D02*X12192Y133858D01*\r
+X12649Y132715D02*X12840D01*\r
+X13297Y132906D02*X13487Y132715D01*\r
+X13297Y134048D02*Y132906D01*\r
+Y134048D02*X13487Y134239D01*\r
+X13868D01*\r
+X14059Y134048D01*\r
+Y132906D01*\r
+X13868Y132715D02*X14059Y132906D01*\r
+X13487Y132715D02*X13868D01*\r
+X13297Y133096D02*X14059Y133858D01*\r
+X14516Y134048D02*X14707Y134239D01*\r
+X15088D01*\r
+X15278Y134048D01*\r
+Y132906D01*\r
+X15088Y132715D02*X15278Y132906D01*\r
+X14707Y132715D02*X15088D01*\r
+X14516Y132906D02*X14707Y132715D01*\r
+Y133477D02*X15278D01*\r
+X15735Y134239D02*X16497D01*\r
+X15735D02*Y133477D01*\r
+X15926Y133668D01*\r
+X16307D01*\r
+X16497Y133477D01*\r
+Y132906D01*\r
+X16307Y132715D02*X16497Y132906D01*\r
+X15926Y132715D02*X16307D01*\r
+X15735Y132906D02*X15926Y132715D01*\r
+X54940Y66345D02*X55550Y65735D01*\r
+X54940D02*X55550Y66345D01*\r
+X44780D02*X45390Y65735D01*\r
+X44780D02*X45390Y66345D01*\r
+X54940Y44755D02*X55550Y44145D01*\r
+X54940D02*X55550Y44755D01*\r
+X44780D02*X45390Y44145D01*\r
+X44780D02*X45390Y44755D01*\r
+X68910D02*X69520Y44145D01*\r
+X68910D02*X69520Y44755D01*\r
+X58750D02*X59360Y44145D01*\r
+X58750D02*X59360Y44755D01*\r
+X44780Y54915D02*X45390Y54305D01*\r
+X44780D02*X45390Y54915D01*\r
+X54940D02*X55550Y54305D01*\r
+X54940D02*X55550Y54915D01*\r
+X54940Y34595D02*X55550Y33985D01*\r
+X54940D02*X55550Y34595D01*\r
+X44780D02*X45390Y33985D01*\r
+X44780D02*X45390Y34595D01*\r
+X58750Y54915D02*X59360Y54305D01*\r
+X58750D02*X59360Y54915D01*\r
+X68910D02*X69520Y54305D01*\r
+X68910D02*X69520Y54915D01*\r
+X165430Y92380D02*X166040Y91770D01*\r
+X165430D02*X166040Y92380D01*\r
+X165430Y89840D02*X166040Y89230D01*\r
+X165430D02*X166040Y89840D01*\r
+X165430Y87300D02*X166040Y86690D01*\r
+X165430D02*X166040Y87300D01*\r
+X165430Y84760D02*X166040Y84150D01*\r
+X165430D02*X166040Y84760D01*\r
+X165430Y82220D02*X166040Y81610D01*\r
+X165430D02*X166040Y82220D01*\r
+X165430Y79680D02*X166040Y79070D01*\r
+X165430D02*X166040Y79680D01*\r
+X165430Y77140D02*X166040Y76530D01*\r
+X165430D02*X166040Y77140D01*\r
+X165430Y74600D02*X166040Y73990D01*\r
+X165430D02*X166040Y74600D01*\r
+X165430Y72060D02*X166040Y71450D01*\r
+X165430D02*X166040Y72060D01*\r
+X165430Y69520D02*X166040Y68910D01*\r
+X165430D02*X166040Y69520D01*\r
+X165430Y66980D02*X166040Y66370D01*\r
+X165430D02*X166040Y66980D01*\r
+X165430Y64440D02*X166040Y63830D01*\r
+X165430D02*X166040Y64440D01*\r
+X165430Y61900D02*X166040Y61290D01*\r
+X165430D02*X166040Y61900D01*\r
+X165430Y59360D02*X166040Y58750D01*\r
+X165430D02*X166040Y59360D01*\r
+X165430Y56820D02*X166040Y56210D01*\r
+X165430D02*X166040Y56820D01*\r
+X165430Y54280D02*X166040Y53670D01*\r
+X165430D02*X166040Y54280D01*\r
+X165430Y51740D02*X166040Y51130D01*\r
+X165430D02*X166040Y51740D01*\r
+X165430Y49200D02*X166040Y48590D01*\r
+X165430D02*X166040Y49200D01*\r
+X165430Y46660D02*X166040Y46050D01*\r
+X165430D02*X166040Y46660D01*\r
+X165430Y44120D02*X166040Y43510D01*\r
+X165430D02*X166040Y44120D01*\r
+X165430Y41580D02*X166040Y40970D01*\r
+X165430D02*X166040Y41580D01*\r
+X165430Y39040D02*X166040Y38430D01*\r
+X165430D02*X166040Y39040D01*\r
+X165430Y36500D02*X166040Y35890D01*\r
+X165430D02*X166040Y36500D01*\r
+X165430Y33960D02*X166040Y33350D01*\r
+X165430D02*X166040Y33960D01*\r
+X165430Y31420D02*X166040Y30810D01*\r
+X165430D02*X166040Y31420D01*\r
+X165430Y28880D02*X166040Y28270D01*\r
+X165430D02*X166040Y28880D01*\r
+X165430Y26340D02*X166040Y25730D01*\r
+X165430D02*X166040Y26340D01*\r
+X165430Y23800D02*X166040Y23190D01*\r
+X165430D02*X166040Y23800D01*\r
+X165430Y21260D02*X166040Y20650D01*\r
+X165430D02*X166040Y21260D01*\r
+X165430Y18720D02*X166040Y18110D01*\r
+X165430D02*X166040Y18720D01*\r
+X165430Y16180D02*X166040Y15570D01*\r
+X165430D02*X166040Y16180D01*\r
+X165430Y13640D02*X166040Y13030D01*\r
+X165430D02*X166040Y13640D01*\r
+X162890Y92380D02*X163500Y91770D01*\r
+X162890D02*X163500Y92380D01*\r
+X162890Y89840D02*X163500Y89230D01*\r
+X162890D02*X163500Y89840D01*\r
+X162890Y87300D02*X163500Y86690D01*\r
+X162890D02*X163500Y87300D01*\r
+X162890Y84760D02*X163500Y84150D01*\r
+X162890D02*X163500Y84760D01*\r
+X162890Y82220D02*X163500Y81610D01*\r
+X162890D02*X163500Y82220D01*\r
+X162890Y79680D02*X163500Y79070D01*\r
+X162890D02*X163500Y79680D01*\r
+X162890Y77140D02*X163500Y76530D01*\r
+X162890D02*X163500Y77140D01*\r
+X162890Y74600D02*X163500Y73990D01*\r
+X162890D02*X163500Y74600D01*\r
+X162890Y72060D02*X163500Y71450D01*\r
+X162890D02*X163500Y72060D01*\r
+X162890Y69520D02*X163500Y68910D01*\r
+X162890D02*X163500Y69520D01*\r
+X162890Y66980D02*X163500Y66370D01*\r
+X162890D02*X163500Y66980D01*\r
+X162890Y64440D02*X163500Y63830D01*\r
+X162890D02*X163500Y64440D01*\r
+X162890Y61900D02*X163500Y61290D01*\r
+X162890D02*X163500Y61900D01*\r
+X162890Y59360D02*X163500Y58750D01*\r
+X162890D02*X163500Y59360D01*\r
+X162890Y56820D02*X163500Y56210D01*\r
+X162890D02*X163500Y56820D01*\r
+X162890Y54280D02*X163500Y53670D01*\r
+X162890D02*X163500Y54280D01*\r
+X162890Y51740D02*X163500Y51130D01*\r
+X162890D02*X163500Y51740D01*\r
+X162890Y49200D02*X163500Y48590D01*\r
+X162890D02*X163500Y49200D01*\r
+X162890Y46660D02*X163500Y46050D01*\r
+X162890D02*X163500Y46660D01*\r
+X162890Y44120D02*X163500Y43510D01*\r
+X162890D02*X163500Y44120D01*\r
+X162890Y41580D02*X163500Y40970D01*\r
+X162890D02*X163500Y41580D01*\r
+X162890Y39040D02*X163500Y38430D01*\r
+X162890D02*X163500Y39040D01*\r
+X162890Y36500D02*X163500Y35890D01*\r
+X162890D02*X163500Y36500D01*\r
+X162890Y33960D02*X163500Y33350D01*\r
+X162890D02*X163500Y33960D01*\r
+X162890Y31420D02*X163500Y30810D01*\r
+X162890D02*X163500Y31420D01*\r
+X162890Y28880D02*X163500Y28270D01*\r
+X162890D02*X163500Y28880D01*\r
+X162890Y26340D02*X163500Y25730D01*\r
+X162890D02*X163500Y26340D01*\r
+X162890Y23800D02*X163500Y23190D01*\r
+X162890D02*X163500Y23800D01*\r
+X162890Y21260D02*X163500Y20650D01*\r
+X162890D02*X163500Y21260D01*\r
+X162890Y18720D02*X163500Y18110D01*\r
+X162890D02*X163500Y18720D01*\r
+X162890Y16180D02*X163500Y15570D01*\r
+X162890D02*X163500Y16180D01*\r
+X162890Y13640D02*X163500Y13030D01*\r
+X162890D02*X163500Y13640D01*\r
+X160350Y92380D02*X160960Y91770D01*\r
+X160350D02*X160960Y92380D01*\r
+X160350Y89840D02*X160960Y89230D01*\r
+X160350D02*X160960Y89840D01*\r
+X160350Y87300D02*X160960Y86690D01*\r
+X160350D02*X160960Y87300D01*\r
+X160350Y84760D02*X160960Y84150D01*\r
+X160350D02*X160960Y84760D01*\r
+X160350Y82220D02*X160960Y81610D01*\r
+X160350D02*X160960Y82220D01*\r
+X160350Y79680D02*X160960Y79070D01*\r
+X160350D02*X160960Y79680D01*\r
+X160350Y77140D02*X160960Y76530D01*\r
+X160350D02*X160960Y77140D01*\r
+X160350Y74600D02*X160960Y73990D01*\r
+X160350D02*X160960Y74600D01*\r
+X160350Y72060D02*X160960Y71450D01*\r
+X160350D02*X160960Y72060D01*\r
+X160350Y69520D02*X160960Y68910D01*\r
+X160350D02*X160960Y69520D01*\r
+X160350Y66980D02*X160960Y66370D01*\r
+X160350D02*X160960Y66980D01*\r
+X160350Y64440D02*X160960Y63830D01*\r
+X160350D02*X160960Y64440D01*\r
+X160350Y61900D02*X160960Y61290D01*\r
+X160350D02*X160960Y61900D01*\r
+X160350Y59360D02*X160960Y58750D01*\r
+X160350D02*X160960Y59360D01*\r
+X160350Y56820D02*X160960Y56210D01*\r
+X160350D02*X160960Y56820D01*\r
+X160350Y54280D02*X160960Y53670D01*\r
+X160350D02*X160960Y54280D01*\r
+X160350Y51740D02*X160960Y51130D01*\r
+X160350D02*X160960Y51740D01*\r
+X160350Y49200D02*X160960Y48590D01*\r
+X160350D02*X160960Y49200D01*\r
+X160350Y46660D02*X160960Y46050D01*\r
+X160350D02*X160960Y46660D01*\r
+X160350Y44120D02*X160960Y43510D01*\r
+X160350D02*X160960Y44120D01*\r
+X160350Y41580D02*X160960Y40970D01*\r
+X160350D02*X160960Y41580D01*\r
+X160350Y39040D02*X160960Y38430D01*\r
+X160350D02*X160960Y39040D01*\r
+X160350Y36500D02*X160960Y35890D01*\r
+X160350D02*X160960Y36500D01*\r
+X160350Y33960D02*X160960Y33350D01*\r
+X160350D02*X160960Y33960D01*\r
+X160350Y31420D02*X160960Y30810D01*\r
+X160350D02*X160960Y31420D01*\r
+X160350Y28880D02*X160960Y28270D01*\r
+X160350D02*X160960Y28880D01*\r
+X160350Y26340D02*X160960Y25730D01*\r
+X160350D02*X160960Y26340D01*\r
+X160350Y23800D02*X160960Y23190D01*\r
+X160350D02*X160960Y23800D01*\r
+X160350Y21260D02*X160960Y20650D01*\r
+X160350D02*X160960Y21260D01*\r
+X160350Y18720D02*X160960Y18110D01*\r
+X160350D02*X160960Y18720D01*\r
+X160350Y16180D02*X160960Y15570D01*\r
+X160350D02*X160960Y16180D01*\r
+X160350Y13640D02*X160960Y13030D01*\r
+X160350D02*X160960Y13640D01*\r
+X3505Y137782D02*X4115Y137173D01*\r
+X3505D02*X4115Y137782D01*\r
+X34290Y138049D02*Y137858D01*\r
+X34671Y137478D01*\r
+X35052Y137858D01*\r
+Y138049D02*Y137858D01*\r
+X34671Y137478D02*Y136525D01*\r
+X35509Y137287D02*X36081D01*\r
+X35509Y136525D02*X36271D01*\r
+X35509Y138049D02*Y136525D01*\r
+Y138049D02*X36271D01*\r
+X37490D02*X37681Y137858D01*\r
+X36919Y138049D02*X37490D01*\r
+X36728Y137858D02*X36919Y138049D01*\r
+X36728Y137858D02*Y137478D01*\r
+X36919Y137287D01*\r
+X37490D01*\r
+X37681Y137096D01*\r
+Y136716D01*\r
+X37490Y136525D02*X37681Y136716D01*\r
+X36919Y136525D02*X37490D01*\r
+X36728Y136716D02*X36919Y136525D01*\r
+X25082D02*X25464D01*\r
+X25273Y138049D02*Y136525D01*\r
+X24892Y137668D02*X25273Y138049D01*\r
+X25921Y136716D02*X26111Y136525D01*\r
+X25921Y137858D02*Y136716D01*\r
+Y137858D02*X26111Y138049D01*\r
+X26492D01*\r
+X26683Y137858D01*\r
+Y136716D01*\r
+X26492Y136525D02*X26683Y136716D01*\r
+X26111Y136525D02*X26492D01*\r
+X25921Y136906D02*X26683Y137668D01*\r
+X27140Y136716D02*X27330Y136525D01*\r
+X27140Y137096D02*Y136716D01*\r
+Y137096D02*X27330Y137287D01*\r
+X27711D01*\r
+X27902Y137096D01*\r
+Y136716D01*\r
+X27711Y136525D02*X27902Y136716D01*\r
+X27330Y136525D02*X27711D01*\r
+X27140Y137478D02*X27330Y137287D01*\r
+X27140Y137858D02*Y137478D01*\r
+Y137858D02*X27330Y138049D01*\r
+X27711D01*\r
+X27902Y137858D01*\r
+Y137478D01*\r
+X27711Y137287D02*X27902Y137478D01*\r
+X11430Y136716D02*X11620Y136525D01*\r
+X11430Y137858D02*Y136716D01*\r
+Y137858D02*X11620Y138049D01*\r
+X12002D01*\r
+X12192Y137858D01*\r
+Y136716D01*\r
+X12002Y136525D02*X12192Y136716D01*\r
+X11620Y136525D02*X12002D01*\r
+X11430Y136906D02*X12192Y137668D01*\r
+X12649Y136525D02*X12840D01*\r
+X13297Y136716D02*X13487Y136525D01*\r
+X13297Y137858D02*Y136716D01*\r
+Y137858D02*X13487Y138049D01*\r
+X13868D01*\r
+X14059Y137858D01*\r
+Y136716D01*\r
+X13868Y136525D02*X14059Y136716D01*\r
+X13487Y136525D02*X13868D01*\r
+X13297Y136906D02*X14059Y137668D01*\r
+X14516Y137858D02*X14707Y138049D01*\r
+X15088D01*\r
+X15278Y137858D01*\r
+Y136716D01*\r
+X15088Y136525D02*X15278Y136716D01*\r
+X14707Y136525D02*X15088D01*\r
+X14516Y136716D02*X14707Y136525D01*\r
+Y137287D02*X15278D01*\r
+X15735Y136716D02*X15926Y136525D01*\r
+X15735Y137858D02*Y136716D01*\r
+Y137858D02*X15926Y138049D01*\r
+X16307D01*\r
+X16497Y137858D01*\r
+Y136716D01*\r
+X16307Y136525D02*X16497Y136716D01*\r
+X15926Y136525D02*X16307D01*\r
+X15735Y136906D02*X16497Y137668D01*\r
+X57150Y85496D02*Y84684D01*\r
+X56744Y85090D02*X57556D01*\r
+X59690Y85496D02*Y84684D01*\r
+X59284Y85090D02*X60096D01*\r
+X62230Y85496D02*Y84684D01*\r
+X61824Y85090D02*X62636D01*\r
+X64770Y85496D02*Y84684D01*\r
+X64364Y85090D02*X65176D01*\r
+X64770Y93116D02*Y92304D01*\r
+X64364Y92710D02*X65176D01*\r
+X62230Y93116D02*Y92304D01*\r
+X61824Y92710D02*X62636D01*\r
+X59690Y93116D02*Y92304D01*\r
+X59284Y92710D02*X60096D01*\r
+X57150Y93116D02*Y92304D01*\r
+X56744Y92710D02*X57556D01*\r
+X50165Y96926D02*Y96114D01*\r
+X49759Y96520D02*X50571D01*\r
+X45085Y96926D02*Y96114D01*\r
+X44679Y96520D02*X45491D01*\r
+X71120Y71526D02*Y70714D01*\r
+X70714Y71120D02*X71526D01*\r
+X73660Y71526D02*Y70714D01*\r
+X73254Y71120D02*X74066D01*\r
+X76200Y71526D02*Y70714D01*\r
+X75794Y71120D02*X76606D01*\r
+X78740Y71526D02*Y70714D01*\r
+X78334Y71120D02*X79146D01*\r
+X81280Y71526D02*Y70714D01*\r
+X80874Y71120D02*X81686D01*\r
+X83820Y71526D02*Y70714D01*\r
+X83414Y71120D02*X84226D01*\r
+X86360Y71526D02*Y70714D01*\r
+X85954Y71120D02*X86766D01*\r
+X88900Y71526D02*Y70714D01*\r
+X88494Y71120D02*X89306D01*\r
+X88900Y79146D02*Y78334D01*\r
+X88494Y78740D02*X89306D01*\r
+X86360Y79146D02*Y78334D01*\r
+X85954Y78740D02*X86766D01*\r
+X83820Y79146D02*Y78334D01*\r
+X83414Y78740D02*X84226D01*\r
+X81280Y79146D02*Y78334D01*\r
+X80874Y78740D02*X81686D01*\r
+X78740Y79146D02*Y78334D01*\r
+X78334Y78740D02*X79146D01*\r
+X76200Y79146D02*Y78334D01*\r
+X75794Y78740D02*X76606D01*\r
+X73660Y79146D02*Y78334D01*\r
+X73254Y78740D02*X74066D01*\r
+X71120Y79146D02*Y78334D01*\r
+X70714Y78740D02*X71526D01*\r
+X150495Y8026D02*Y7214D01*\r
+X150089Y7620D02*X150901D01*\r
+X150495Y13106D02*Y12294D01*\r
+X150089Y12700D02*X150901D01*\r
+X50165Y91211D02*Y90399D01*\r
+X49759Y90805D02*X50571D01*\r
+X45085Y91211D02*Y90399D01*\r
+X44679Y90805D02*X45491D01*\r
+X140335Y13106D02*Y12294D01*\r
+X139929Y12700D02*X140741D01*\r
+X140335Y8026D02*Y7214D01*\r
+X139929Y7620D02*X140741D01*\r
+X146050Y8026D02*Y7214D01*\r
+X145644Y7620D02*X146456D01*\r
+X146050Y13106D02*Y12294D01*\r
+X145644Y12700D02*X146456D01*\r
+X45085Y77876D02*Y77064D01*\r
+X44679Y77470D02*X45491D01*\r
+X45085Y72796D02*Y71984D01*\r
+X44679Y72390D02*X45491D01*\r
+X128905Y96926D02*Y96114D01*\r
+X128499Y96520D02*X129311D01*\r
+X123825Y96926D02*Y96114D01*\r
+X123419Y96520D02*X124231D01*\r
+X116840Y72796D02*Y71984D01*\r
+X116434Y72390D02*X117246D01*\r
+X116840Y77876D02*Y77064D01*\r
+X116434Y77470D02*X117246D01*\r
+X154305Y96926D02*Y96114D01*\r
+X153899Y96520D02*X154711D01*\r
+X149225Y96926D02*Y96114D01*\r
+X148819Y96520D02*X149631D01*\r
+X122555Y71526D02*Y70714D01*\r
+X122149Y71120D02*X122961D01*\r
+X125095Y71526D02*Y70714D01*\r
+X124689Y71120D02*X125501D01*\r
+X127635Y71526D02*Y70714D01*\r
+X127229Y71120D02*X128041D01*\r
+X130175Y71526D02*Y70714D01*\r
+X129769Y71120D02*X130581D01*\r
+X132715Y71526D02*Y70714D01*\r
+X132309Y71120D02*X133121D01*\r
+X135255Y71526D02*Y70714D01*\r
+X134849Y71120D02*X135661D01*\r
+X137795Y71526D02*Y70714D01*\r
+X137389Y71120D02*X138201D01*\r
+X140335Y71526D02*Y70714D01*\r
+X139929Y71120D02*X140741D01*\r
+X142875Y71526D02*Y70714D01*\r
+X142469Y71120D02*X143281D01*\r
+X145415Y71526D02*Y70714D01*\r
+X145009Y71120D02*X145821D01*\r
+X147955Y71526D02*Y70714D01*\r
+X147549Y71120D02*X148361D01*\r
+X150495Y71526D02*Y70714D01*\r
+X150089Y71120D02*X150901D01*\r
+X153035Y71526D02*Y70714D01*\r
+X152629Y71120D02*X153441D01*\r
+X155575Y71526D02*Y70714D01*\r
+X155169Y71120D02*X155981D01*\r
+X155575Y79146D02*Y78334D01*\r
+X155169Y78740D02*X155981D01*\r
+X153035Y79146D02*Y78334D01*\r
+X152629Y78740D02*X153441D01*\r
+X150495Y79146D02*Y78334D01*\r
+X150089Y78740D02*X150901D01*\r
+X147955Y79146D02*Y78334D01*\r
+X147549Y78740D02*X148361D01*\r
+X145415Y79146D02*Y78334D01*\r
+X145009Y78740D02*X145821D01*\r
+X142875Y79146D02*Y78334D01*\r
+X142469Y78740D02*X143281D01*\r
+X140335Y79146D02*Y78334D01*\r
+X139929Y78740D02*X140741D01*\r
+X137795Y79146D02*Y78334D01*\r
+X137389Y78740D02*X138201D01*\r
+X135255Y79146D02*Y78334D01*\r
+X134849Y78740D02*X135661D01*\r
+X132715Y79146D02*Y78334D01*\r
+X132309Y78740D02*X133121D01*\r
+X130175Y79146D02*Y78334D01*\r
+X129769Y78740D02*X130581D01*\r
+X127635Y79146D02*Y78334D01*\r
+X127229Y78740D02*X128041D01*\r
+X125095Y79146D02*Y78334D01*\r
+X124689Y78740D02*X125501D01*\r
+X122555Y79146D02*Y78334D01*\r
+X122149Y78740D02*X122961D01*\r
+X122555Y85496D02*Y84684D01*\r
+X122149Y85090D02*X122961D01*\r
+X125095Y85496D02*Y84684D01*\r
+X124689Y85090D02*X125501D01*\r
+X127635Y85496D02*Y84684D01*\r
+X127229Y85090D02*X128041D01*\r
+X130175Y85496D02*Y84684D01*\r
+X129769Y85090D02*X130581D01*\r
+X130175Y93116D02*Y92304D01*\r
+X129769Y92710D02*X130581D01*\r
+X127635Y93116D02*Y92304D01*\r
+X127229Y92710D02*X128041D01*\r
+X125095Y93116D02*Y92304D01*\r
+X124689Y92710D02*X125501D01*\r
+X122555Y93116D02*Y92304D01*\r
+X122149Y92710D02*X122961D01*\r
+X147955Y85496D02*Y84684D01*\r
+X147549Y85090D02*X148361D01*\r
+X150495Y85496D02*Y84684D01*\r
+X150089Y85090D02*X150901D01*\r
+X153035Y85496D02*Y84684D01*\r
+X152629Y85090D02*X153441D01*\r
+X155575Y85496D02*Y84684D01*\r
+X155169Y85090D02*X155981D01*\r
+X155575Y93116D02*Y92304D01*\r
+X155169Y92710D02*X155981D01*\r
+X153035Y93116D02*Y92304D01*\r
+X152629Y92710D02*X153441D01*\r
+X150495Y93116D02*Y92304D01*\r
+X150089Y92710D02*X150901D01*\r
+X147955Y93116D02*Y92304D01*\r
+X147549Y92710D02*X148361D01*\r
+X94615Y71526D02*Y70714D01*\r
+X94209Y71120D02*X95021D01*\r
+X97155Y71526D02*Y70714D01*\r
+X96749Y71120D02*X97561D01*\r
+X99695Y71526D02*Y70714D01*\r
+X99289Y71120D02*X100101D01*\r
+X102235Y71526D02*Y70714D01*\r
+X101829Y71120D02*X102641D01*\r
+X102235Y79146D02*Y78334D01*\r
+X101829Y78740D02*X102641D01*\r
+X99695Y79146D02*Y78334D01*\r
+X99289Y78740D02*X100101D01*\r
+X97155Y79146D02*Y78334D01*\r
+X96749Y78740D02*X97561D01*\r
+X94615Y79146D02*Y78334D01*\r
+X94209Y78740D02*X95021D01*\r
+X100965Y96926D02*Y96114D01*\r
+X100559Y96520D02*X101371D01*\r
+X95885Y96926D02*Y96114D01*\r
+X95479Y96520D02*X96291D01*\r
+X94615Y85496D02*Y84684D01*\r
+X94209Y85090D02*X95021D01*\r
+X97155Y85496D02*Y84684D01*\r
+X96749Y85090D02*X97561D01*\r
+X99695Y85496D02*Y84684D01*\r
+X99289Y85090D02*X100101D01*\r
+X102235Y85496D02*Y84684D01*\r
+X101829Y85090D02*X102641D01*\r
+X102235Y93116D02*Y92304D01*\r
+X101829Y92710D02*X102641D01*\r
+X99695Y93116D02*Y92304D01*\r
+X99289Y92710D02*X100101D01*\r
+X97155Y93116D02*Y92304D01*\r
+X96749Y92710D02*X97561D01*\r
+X94615Y93116D02*Y92304D01*\r
+X94209Y92710D02*X95021D01*\r
+X49530Y71526D02*Y70714D01*\r
+X49124Y71120D02*X49936D01*\r
+X52070Y71526D02*Y70714D01*\r
+X51664Y71120D02*X52476D01*\r
+X54610Y71526D02*Y70714D01*\r
+X54204Y71120D02*X55016D01*\r
+X57150Y71526D02*Y70714D01*\r
+X56744Y71120D02*X57556D01*\r
+X59690Y71526D02*Y70714D01*\r
+X59284Y71120D02*X60096D01*\r
+X62230Y71526D02*Y70714D01*\r
+X61824Y71120D02*X62636D01*\r
+X64770Y71526D02*Y70714D01*\r
+X64364Y71120D02*X65176D01*\r
+X64770Y79146D02*Y78334D01*\r
+X64364Y78740D02*X65176D01*\r
+X62230Y79146D02*Y78334D01*\r
+X61824Y78740D02*X62636D01*\r
+X59690Y79146D02*Y78334D01*\r
+X59284Y78740D02*X60096D01*\r
+X57150Y79146D02*Y78334D01*\r
+X56744Y78740D02*X57556D01*\r
+X54610Y79146D02*Y78334D01*\r
+X54204Y78740D02*X55016D01*\r
+X52070Y79146D02*Y78334D01*\r
+X51664Y78740D02*X52476D01*\r
+X49530Y79146D02*Y78334D01*\r
+X49124Y78740D02*X49936D01*\r
+X63500Y96926D02*Y96114D01*\r
+X63094Y96520D02*X63906D01*\r
+X58420Y96926D02*Y96114D01*\r
+X58014Y96520D02*X58826D01*\r
+X49530Y15646D02*Y14834D01*\r
+X49124Y15240D02*X49936D01*\r
+X52070Y15646D02*Y14834D01*\r
+X51664Y15240D02*X52476D01*\r
+X54610Y15646D02*Y14834D01*\r
+X54204Y15240D02*X55016D01*\r
+X57150Y15646D02*Y14834D01*\r
+X56744Y15240D02*X57556D01*\r
+X59690Y15646D02*Y14834D01*\r
+X59284Y15240D02*X60096D01*\r
+X62230Y15646D02*Y14834D01*\r
+X61824Y15240D02*X62636D01*\r
+X64770Y15646D02*Y14834D01*\r
+X64364Y15240D02*X65176D01*\r
+X64770Y23266D02*Y22454D01*\r
+X64364Y22860D02*X65176D01*\r
+X62230Y23266D02*Y22454D01*\r
+X61824Y22860D02*X62636D01*\r
+X59690Y23266D02*Y22454D01*\r
+X59284Y22860D02*X60096D01*\r
+X57150Y23266D02*Y22454D01*\r
+X56744Y22860D02*X57556D01*\r
+X54610Y23266D02*Y22454D01*\r
+X54204Y22860D02*X55016D01*\r
+X52070Y23266D02*Y22454D01*\r
+X51664Y22860D02*X52476D01*\r
+X49530Y23266D02*Y22454D01*\r
+X49124Y22860D02*X49936D01*\r
+X45085Y21996D02*Y21184D01*\r
+X44679Y21590D02*X45491D01*\r
+X45085Y16916D02*Y16104D01*\r
+X44679Y16510D02*X45491D01*\r
+X3810Y141694D02*Y140881D01*\r
+X3404Y141288D02*X4216D01*\r
+X34290Y141859D02*Y141668D01*\r
+X34671Y141288D01*\r
+X35052Y141668D01*\r
+Y141859D02*Y141668D01*\r
+X34671Y141288D02*Y140335D01*\r
+X35509Y141097D02*X36081D01*\r
+X35509Y140335D02*X36271D01*\r
+X35509Y141859D02*Y140335D01*\r
+Y141859D02*X36271D01*\r
+X37490D02*X37681Y141668D01*\r
+X36919Y141859D02*X37490D01*\r
+X36728Y141668D02*X36919Y141859D01*\r
+X36728Y141668D02*Y141288D01*\r
+X36919Y141097D01*\r
+X37490D01*\r
+X37681Y140906D01*\r
+Y140526D01*\r
+X37490Y140335D02*X37681Y140526D01*\r
+X36919Y140335D02*X37490D01*\r
+X36728Y140526D02*X36919Y140335D01*\r
+X25082D02*X25464D01*\r
+X25273Y141859D02*Y140335D01*\r
+X24892Y141478D02*X25273Y141859D01*\r
+X25921Y141668D02*X26111Y141859D01*\r
+X26492D01*\r
+X26683Y141668D01*\r
+Y140526D01*\r
+X26492Y140335D02*X26683Y140526D01*\r
+X26111Y140335D02*X26492D01*\r
+X25921Y140526D02*X26111Y140335D01*\r
+Y141097D02*X26683D01*\r
+X27711Y141859D02*X27902Y141668D01*\r
+X27330Y141859D02*X27711D01*\r
+X27140Y141668D02*X27330Y141859D01*\r
+X27140Y141668D02*Y140526D01*\r
+X27330Y140335D01*\r
+X27711Y141097D02*X27902Y140906D01*\r
+X27140Y141097D02*X27711D01*\r
+X27330Y140335D02*X27711D01*\r
+X27902Y140526D01*\r
+Y140906D02*Y140526D01*\r
+X11430D02*X11620Y140335D01*\r
+X11430Y141668D02*Y140526D01*\r
+Y141668D02*X11620Y141859D01*\r
+X12002D01*\r
+X12192Y141668D01*\r
+Y140526D01*\r
+X12002Y140335D02*X12192Y140526D01*\r
+X11620Y140335D02*X12002D01*\r
+X11430Y140716D02*X12192Y141478D01*\r
+X12649Y140335D02*X12840D01*\r
+X13297Y140526D02*X13487Y140335D01*\r
+X13297Y141668D02*Y140526D01*\r
+Y141668D02*X13487Y141859D01*\r
+X13868D01*\r
+X14059Y141668D01*\r
+Y140526D01*\r
+X13868Y140335D02*X14059Y140526D01*\r
+X13487Y140335D02*X13868D01*\r
+X13297Y140716D02*X14059Y141478D01*\r
+X14516Y141668D02*X14707Y141859D01*\r
+X15278D01*\r
+X15469Y141668D01*\r
+Y141288D01*\r
+X14516Y140335D02*X15469Y141288D01*\r
+X14516Y140335D02*X15469D01*\r
+X15926Y140526D02*X16116Y140335D01*\r
+X15926Y140906D02*Y140526D01*\r
+Y140906D02*X16116Y141097D01*\r
+X16497D01*\r
+X16688Y140906D01*\r
+Y140526D01*\r
+X16497Y140335D02*X16688Y140526D01*\r
+X16116Y140335D02*X16497D01*\r
+X15926Y141288D02*X16116Y141097D01*\r
+X15926Y141668D02*Y141288D01*\r
+Y141668D02*X16116Y141859D01*\r
+X16497D01*\r
+X16688Y141668D01*\r
+Y141288D01*\r
+X16497Y141097D02*X16688Y141288D01*\r
+X26035Y71120D02*Y70714D01*\r
+Y71120D02*X26387Y71323D01*\r
+X26035Y71120D02*X25683Y71323D01*\r
+X92710Y23495D02*Y23089D01*\r
+Y23495D02*X93062Y23698D01*\r
+X92710Y23495D02*X92358Y23698D01*\r
+X71755Y41910D02*Y41504D01*\r
+Y41910D02*X72107Y42113D01*\r
+X71755Y41910D02*X71403Y42113D01*\r
+X80010Y33020D02*Y32614D01*\r
+Y33020D02*X80362Y33223D01*\r
+X80010Y33020D02*X79658Y33223D01*\r
+X108585Y99695D02*Y99289D01*\r
+Y99695D02*X108937Y99898D01*\r
+X108585Y99695D02*X108233Y99898D01*\r
+X102235Y99695D02*Y99289D01*\r
+Y99695D02*X102587Y99898D01*\r
+X102235Y99695D02*X101883Y99898D01*\r
+X91440Y46355D02*Y45949D01*\r
+Y46355D02*X91792Y46558D01*\r
+X91440Y46355D02*X91088Y46558D01*\r
+X22225Y69850D02*Y69444D01*\r
+Y69850D02*X22577Y70053D01*\r
+X22225Y69850D02*X21873Y70053D01*\r
+X62865Y99695D02*Y99289D01*\r
+Y99695D02*X63217Y99898D01*\r
+X62865Y99695D02*X62513Y99898D01*\r
+X93345Y80645D02*Y80239D01*\r
+Y80645D02*X93697Y80848D01*\r
+X93345Y80645D02*X92993Y80848D01*\r
+X57150Y56515D02*Y56109D01*\r
+Y56515D02*X57502Y56718D01*\r
+X57150Y56515D02*X56798Y56718D01*\r
+X57150Y60960D02*Y60554D01*\r
+Y60960D02*X57502Y61163D01*\r
+X57150Y60960D02*X56798Y61163D01*\r
+X112395Y87630D02*Y87224D01*\r
+Y87630D02*X112747Y87833D01*\r
+X112395Y87630D02*X112043Y87833D01*\r
+X89535Y60960D02*Y60554D01*\r
+Y60960D02*X89887Y61163D01*\r
+X89535Y60960D02*X89183Y61163D01*\r
+X128905Y68580D02*Y68174D01*\r
+Y68580D02*X129257Y68783D01*\r
+X128905Y68580D02*X128553Y68783D01*\r
+X87630Y67945D02*Y67539D01*\r
+Y67945D02*X87982Y68148D01*\r
+X87630Y67945D02*X87278Y68148D01*\r
+X128905Y74930D02*Y74524D01*\r
+Y74930D02*X129257Y75133D01*\r
+X128905Y74930D02*X128553Y75133D01*\r
+X80010Y67945D02*Y67539D01*\r
+Y67945D02*X80362Y68148D01*\r
+X80010Y67945D02*X79658Y68148D01*\r
+X121285Y98425D02*Y98019D01*\r
+Y98425D02*X121637Y98628D01*\r
+X121285Y98425D02*X120933Y98628D01*\r
+X121285Y74930D02*Y74524D01*\r
+Y74930D02*X121637Y75133D01*\r
+X121285Y74930D02*X120933Y75133D01*\r
+X106045Y93980D02*Y93574D01*\r
+Y93980D02*X106397Y94183D01*\r
+X106045Y93980D02*X105693Y94183D01*\r
+X74930Y69850D02*Y69444D01*\r
+Y69850D02*X75282Y70053D01*\r
+X74930Y69850D02*X74578Y70053D01*\r
+X39370Y10795D02*Y10389D01*\r
+Y10795D02*X39722Y10998D01*\r
+X39370Y10795D02*X39018Y10998D01*\r
+X91440Y66040D02*Y65634D01*\r
+Y66040D02*X91792Y66243D01*\r
+X91440Y66040D02*X91088Y66243D01*\r
+X107950Y74930D02*Y74524D01*\r
+Y74930D02*X108302Y75133D01*\r
+X107950Y74930D02*X107598Y75133D01*\r
+X52070Y13335D02*Y12929D01*\r
+Y13335D02*X52422Y13538D01*\r
+X52070Y13335D02*X51718Y13538D01*\r
+X139065Y90805D02*Y90399D01*\r
+Y90805D02*X139417Y91008D01*\r
+X139065Y90805D02*X138713Y91008D01*\r
+X135255Y89535D02*Y89129D01*\r
+Y89535D02*X135607Y89738D01*\r
+X135255Y89535D02*X134903Y89738D01*\r
+X142875Y88265D02*Y87859D01*\r
+Y88265D02*X143227Y88468D01*\r
+X142875Y88265D02*X142523Y88468D01*\r
+X84455Y59690D02*Y59284D01*\r
+Y59690D02*X84807Y59893D01*\r
+X84455Y59690D02*X84103Y59893D01*\r
+X125095Y59690D02*Y59284D01*\r
+Y59690D02*X125447Y59893D01*\r
+X125095Y59690D02*X124743Y59893D01*\r
+X53340Y93980D02*Y93574D01*\r
+Y93980D02*X53692Y94183D01*\r
+X53340Y93980D02*X52988Y94183D01*\r
+X150495Y74930D02*Y74524D01*\r
+Y74930D02*X150847Y75133D01*\r
+X150495Y74930D02*X150143Y75133D01*\r
+X122555Y66040D02*Y65634D01*\r
+Y66040D02*X122907Y66243D01*\r
+X122555Y66040D02*X122203Y66243D01*\r
+X121285Y77470D02*Y77064D01*\r
+Y77470D02*X121637Y77673D01*\r
+X121285Y77470D02*X120933Y77673D01*\r
+X40640Y56515D02*Y56109D01*\r
+Y56515D02*X40992Y56718D01*\r
+X40640Y56515D02*X40288Y56718D01*\r
+X121920Y76200D02*Y75794D01*\r
+Y76200D02*X122272Y76403D01*\r
+X121920Y76200D02*X121568Y76403D01*\r
+X23495Y68580D02*Y68174D01*\r
+Y68580D02*X23847Y68783D01*\r
+X23495Y68580D02*X23143Y68783D01*\r
+X100965Y67945D02*Y67539D01*\r
+Y67945D02*X101317Y68148D01*\r
+X100965Y67945D02*X100613Y68148D01*\r
+X112395Y99695D02*Y99289D01*\r
+Y99695D02*X112747Y99898D01*\r
+X112395Y99695D02*X112043Y99898D01*\r
+X92710Y64770D02*Y64364D01*\r
+Y64770D02*X93062Y64973D01*\r
+X92710Y64770D02*X92358Y64973D01*\r
+X106045Y101600D02*Y101194D01*\r
+Y101600D02*X106397Y101803D01*\r
+X106045Y101600D02*X105693Y101803D01*\r
+X143510Y63500D02*Y63094D01*\r
+Y63500D02*X143862Y63703D01*\r
+X143510Y63500D02*X143158Y63703D01*\r
+X110490Y92710D02*Y92304D01*\r
+Y92710D02*X110842Y92913D01*\r
+X110490Y92710D02*X110138Y92913D01*\r
+X77470Y68580D02*Y68174D01*\r
+Y68580D02*X77822Y68783D01*\r
+X77470Y68580D02*X77118Y68783D01*\r
+X112395Y74930D02*Y74524D01*\r
+Y74930D02*X112747Y75133D01*\r
+X112395Y74930D02*X112043Y75133D01*\r
+X26035Y75565D02*Y75159D01*\r
+Y75565D02*X26387Y75768D01*\r
+X26035Y75565D02*X25683Y75768D01*\r
+X95885Y83185D02*Y82779D01*\r
+Y83185D02*X96237Y83388D01*\r
+X95885Y83185D02*X95533Y83388D01*\r
+X89535Y74295D02*Y73889D01*\r
+Y74295D02*X89887Y74498D01*\r
+X89535Y74295D02*X89183Y74498D01*\r
+X88900Y73025D02*Y72619D01*\r
+Y73025D02*X89252Y73228D01*\r
+X88900Y73025D02*X88548Y73228D01*\r
+X94615Y66040D02*Y65634D01*\r
+Y66040D02*X94967Y66243D01*\r
+X94615Y66040D02*X94263Y66243D01*\r
+X78740Y80645D02*Y80239D01*\r
+Y80645D02*X79092Y80848D01*\r
+X78740Y80645D02*X78388Y80848D01*\r
+X54610Y12065D02*Y11659D01*\r
+Y12065D02*X54962Y12268D01*\r
+X54610Y12065D02*X54258Y12268D01*\r
+X72390Y76835D02*Y76429D01*\r
+Y76835D02*X72742Y77038D01*\r
+X72390Y76835D02*X72038Y77038D01*\r
+X57150Y10795D02*Y10389D01*\r
+Y10795D02*X57502Y10998D01*\r
+X57150Y10795D02*X56798Y10998D01*\r
+X95885Y75565D02*Y75159D01*\r
+Y75565D02*X96237Y75768D01*\r
+X95885Y75565D02*X95533Y75768D01*\r
+X80010Y69850D02*Y69444D01*\r
+Y69850D02*X80362Y70053D01*\r
+X80010Y69850D02*X79658Y70053D01*\r
+X82550Y63500D02*Y63094D01*\r
+Y63500D02*X82902Y63703D01*\r
+X82550Y63500D02*X82198Y63703D01*\r
+X133985Y82550D02*Y82144D01*\r
+Y82550D02*X134337Y82753D01*\r
+X133985Y82550D02*X133633Y82753D01*\r
+X135255Y81915D02*Y81509D01*\r
+Y81915D02*X135607Y82118D01*\r
+X135255Y81915D02*X134903Y82118D01*\r
+X138430Y67310D02*Y66904D01*\r
+Y67310D02*X138782Y67513D01*\r
+X138430Y67310D02*X138078Y67513D01*\r
+X141605Y60325D02*Y59919D01*\r
+Y60325D02*X141957Y60528D01*\r
+X141605Y60325D02*X141253Y60528D01*\r
+X155575Y81915D02*Y81509D01*\r
+Y81915D02*X155927Y82118D01*\r
+X155575Y81915D02*X155223Y82118D01*\r
+X50800Y66040D02*Y65634D01*\r
+Y66040D02*X51152Y66243D01*\r
+X50800Y66040D02*X50448Y66243D01*\r
+X39370Y34290D02*Y33884D01*\r
+Y34290D02*X39722Y34493D01*\r
+X39370Y34290D02*X39018Y34493D01*\r
+X41910Y13335D02*Y12929D01*\r
+Y13335D02*X42262Y13538D01*\r
+X41910Y13335D02*X41558Y13538D01*\r
+X40640Y12065D02*Y11659D01*\r
+Y12065D02*X40992Y12268D01*\r
+X40640Y12065D02*X40288Y12268D01*\r
+X50800Y73025D02*Y72619D01*\r
+Y73025D02*X51152Y73228D01*\r
+X50800Y73025D02*X50448Y73228D01*\r
+X116840Y86360D02*Y85954D01*\r
+Y86360D02*X117192Y86563D01*\r
+X116840Y86360D02*X116488Y86563D01*\r
+X85090Y94615D02*Y94209D01*\r
+Y94615D02*X85442Y94818D01*\r
+X85090Y94615D02*X84738Y94818D01*\r
+X3810Y145098D02*Y144691D01*\r
+Y145098D02*X4162Y145301D01*\r
+X3810Y145098D02*X3458Y145301D01*\r
+X34290Y145669D02*Y145478D01*\r
+X34671Y145098D01*\r
+X35052Y145478D01*\r
+Y145669D02*Y145478D01*\r
+X34671Y145098D02*Y144145D01*\r
+X35509Y144907D02*X36081D01*\r
+X35509Y144145D02*X36271D01*\r
+X35509Y145669D02*Y144145D01*\r
+Y145669D02*X36271D01*\r
+X37490D02*X37681Y145478D01*\r
+X36919Y145669D02*X37490D01*\r
+X36728Y145478D02*X36919Y145669D01*\r
+X36728Y145478D02*Y145098D01*\r
+X36919Y144907D01*\r
+X37490D01*\r
+X37681Y144716D01*\r
+Y144336D01*\r
+X37490Y144145D02*X37681Y144336D01*\r
+X36919Y144145D02*X37490D01*\r
+X36728Y144336D02*X36919Y144145D01*\r
+X24892D02*X25844Y145098D01*\r
+Y145669D02*Y145098D01*\r
+X24892Y145669D02*X25844D01*\r
+X26302Y144336D02*X26492Y144145D01*\r
+X26302Y145478D02*Y144336D01*\r
+Y145478D02*X26492Y145669D01*\r
+X26873D01*\r
+X27064Y145478D01*\r
+Y144336D01*\r
+X26873Y144145D02*X27064Y144336D01*\r
+X26492Y144145D02*X26873D01*\r
+X26302Y144526D02*X27064Y145288D01*\r
+X11430Y144336D02*X11620Y144145D01*\r
+X11430Y145478D02*Y144336D01*\r
+Y145478D02*X11620Y145669D01*\r
+X12002D01*\r
+X12192Y145478D01*\r
+Y144336D01*\r
+X12002Y144145D02*X12192Y144336D01*\r
+X11620Y144145D02*X12002D01*\r
+X11430Y144526D02*X12192Y145288D01*\r
+X12649Y144145D02*X12840D01*\r
+X13297Y144336D02*X13487Y144145D01*\r
+X13297Y145478D02*Y144336D01*\r
+Y145478D02*X13487Y145669D01*\r
+X13868D01*\r
+X14059Y145478D01*\r
+Y144336D01*\r
+X13868Y144145D02*X14059Y144336D01*\r
+X13487Y144145D02*X13868D01*\r
+X13297Y144526D02*X14059Y145288D01*\r
+X14516Y145478D02*X14707Y145669D01*\r
+X15278D01*\r
+X15469Y145478D01*\r
+Y145098D01*\r
+X14516Y144145D02*X15469Y145098D01*\r
+X14516Y144145D02*X15469D01*\r
+X15926Y144336D02*X16116Y144145D01*\r
+X15926Y145478D02*Y144336D01*\r
+Y145478D02*X16116Y145669D01*\r
+X16497D01*\r
+X16688Y145478D01*\r
+Y144336D01*\r
+X16497Y144145D02*X16688Y144336D01*\r
+X16116Y144145D02*X16497D01*\r
+X15926Y144526D02*X16688Y145288D01*\r
+X762Y149479D02*X952Y149288D01*\r
+X190Y149479D02*X762D01*\r
+X0Y149288D02*X190Y149479D01*\r
+X0Y149288D02*Y148908D01*\r
+X190Y148717D01*\r
+X762D01*\r
+X952Y148526D01*\r
+Y148146D01*\r
+X762Y147955D02*X952Y148146D01*\r
+X190Y147955D02*X762D01*\r
+X0Y148146D02*X190Y147955D01*\r
+X1410Y148717D02*Y148146D01*\r
+X1600Y147955D01*\r
+X2172Y148717D02*Y147574D01*\r
+X1981Y147384D02*X2172Y147574D01*\r
+X1600Y147384D02*X1981D01*\r
+X1410Y147574D02*X1600Y147384D01*\r
+Y147955D02*X1981D01*\r
+X2172Y148146D01*\r
+X2819Y148526D02*Y147955D01*\r
+Y148526D02*X3010Y148717D01*\r
+X3200D01*\r
+X3391Y148526D01*\r
+Y147955D01*\r
+Y148526D02*X3581Y148717D01*\r
+X3772D01*\r
+X3962Y148526D01*\r
+Y147955D01*\r
+X2629Y148717D02*X2819Y148526D01*\r
+X4420Y149479D02*Y147955D01*\r
+Y148146D02*X4610Y147955D01*\r
+X4991D01*\r
+X5182Y148146D01*\r
+Y148526D02*Y148146D01*\r
+X4991Y148717D02*X5182Y148526D01*\r
+X4610Y148717D02*X4991D01*\r
+X4420Y148526D02*X4610Y148717D01*\r
+X5639Y148526D02*Y148146D01*\r
+Y148526D02*X5829Y148717D01*\r
+X6210D01*\r
+X6401Y148526D01*\r
+Y148146D01*\r
+X6210Y147955D02*X6401Y148146D01*\r
+X5829Y147955D02*X6210D01*\r
+X5639Y148146D02*X5829Y147955D01*\r
+X6858Y149479D02*Y148146D01*\r
+X7049Y147955D01*\r
+X0Y147129D02*X7430D01*\r
+X10604Y149479D02*Y147955D01*\r
+X11176Y149479D02*X11366Y149288D01*\r
+Y148146D01*\r
+X11176Y147955D02*X11366Y148146D01*\r
+X10414Y147955D02*X11176D01*\r
+X10414Y149479D02*X11176D01*\r
+X11824Y149098D02*Y148908D01*\r
+Y148526D02*Y147955D01*\r
+X12776Y148717D02*X12967Y148526D01*\r
+X12395Y148717D02*X12776D01*\r
+X12205Y148526D02*X12395Y148717D01*\r
+X12205Y148526D02*Y148146D01*\r
+X12395Y147955D01*\r
+X12967Y148717D02*Y148146D01*\r
+X13157Y147955D01*\r
+X12395D02*X12776D01*\r
+X12967Y148146D01*\r
+X13805Y148526D02*Y147955D01*\r
+Y148526D02*X13995Y148717D01*\r
+X14186D01*\r
+X14376Y148526D01*\r
+Y147955D01*\r
+Y148526D02*X14567Y148717D01*\r
+X14757D01*\r
+X14948Y148526D01*\r
+Y147955D01*\r
+X13614Y148717D02*X13805Y148526D01*\r
+X15405Y147955D02*X15596D01*\r
+X16739Y148146D02*X16929Y147955D01*\r
+X16739Y149288D02*X16929Y149479D01*\r
+X16739Y149288D02*Y148146D01*\r
+X17386Y149479D02*X17767D01*\r
+X17577D02*Y147955D01*\r
+X17386D02*X17767D01*\r
+X18415Y148526D02*Y147955D01*\r
+Y148526D02*X18606Y148717D01*\r
+X18796D01*\r
+X18987Y148526D01*\r
+Y147955D01*\r
+X18225Y148717D02*X18415Y148526D01*\r
+X19634Y148717D02*X20206D01*\r
+X19444Y148526D02*X19634Y148717D01*\r
+X19444Y148526D02*Y148146D01*\r
+X19634Y147955D01*\r
+X20206D01*\r
+X20663Y149479D02*Y147955D01*\r
+Y148526D02*X20853Y148717D01*\r
+X21234D01*\r
+X21425Y148526D01*\r
+Y147955D01*\r
+X21882Y149479D02*X22073Y149288D01*\r
+Y148146D01*\r
+X21882Y147955D02*X22073Y148146D01*\r
+X10414Y147129D02*X22530D01*\r
+X24320Y147955D02*X24892D01*\r
+X24130Y148146D02*X24320Y147955D01*\r
+X24130Y149288D02*Y148146D01*\r
+Y149288D02*X24320Y149479D01*\r
+X24892D01*\r
+X25349Y148526D02*Y148146D01*\r
+Y148526D02*X25540Y148717D01*\r
+X25921D01*\r
+X26111Y148526D01*\r
+Y148146D01*\r
+X25921Y147955D02*X26111Y148146D01*\r
+X25540Y147955D02*X25921D01*\r
+X25349Y148146D02*X25540Y147955D01*\r
+X26568Y148717D02*Y148146D01*\r
+X26759Y147955D01*\r
+X27140D01*\r
+X27330Y148146D01*\r
+Y148717D02*Y148146D01*\r
+X27978Y148526D02*Y147955D01*\r
+Y148526D02*X28169Y148717D01*\r
+X28359D01*\r
+X28550Y148526D01*\r
+Y147955D01*\r
+X27788Y148717D02*X27978Y148526D01*\r
+X29197Y149479D02*Y148146D01*\r
+X29388Y147955D01*\r
+X29007Y148908D02*X29388D01*\r
+X24130Y147129D02*X29769D01*\r
+X33210Y149479D02*Y147955D01*\r
+X33020Y149479D02*X33782D01*\r
+X33972Y149288D01*\r
+Y148908D01*\r
+X33782Y148717D02*X33972Y148908D01*\r
+X33210Y148717D02*X33782D01*\r
+X34430Y149479D02*Y148146D01*\r
+X34620Y147955D01*\r
+X35573Y148717D02*X35763Y148526D01*\r
+X35192Y148717D02*X35573D01*\r
+X35001Y148526D02*X35192Y148717D01*\r
+X35001Y148526D02*Y148146D01*\r
+X35192Y147955D01*\r
+X35763Y148717D02*Y148146D01*\r
+X35954Y147955D01*\r
+X35192D02*X35573D01*\r
+X35763Y148146D01*\r
+X36601Y149479D02*Y148146D01*\r
+X36792Y147955D01*\r
+X36411Y148908D02*X36792D01*\r
+X37363Y147955D02*X37935D01*\r
+X37173Y148146D02*X37363Y147955D01*\r
+X37173Y148526D02*Y148146D01*\r
+Y148526D02*X37363Y148717D01*\r
+X37744D01*\r
+X37935Y148526D01*\r
+X37173Y148336D02*X37935D01*\r
+Y148526D02*Y148336D01*\r
+X39154Y149479D02*Y147955D01*\r
+X38964D02*X39154Y148146D01*\r
+X38583Y147955D02*X38964D01*\r
+X38392Y148146D02*X38583Y147955D01*\r
+X38392Y148526D02*Y148146D01*\r
+Y148526D02*X38583Y148717D01*\r
+X38964D01*\r
+X39154Y148526D01*\r
+X39992Y148717D02*Y148526D01*\r
+Y148146D02*Y147955D01*\r
+X39611Y149288D02*Y149098D01*\r
+Y149288D02*X39802Y149479D01*\r
+X40183D01*\r
+X40373Y149288D01*\r
+Y149098D01*\r
+X39992Y148717D02*X40373Y149098D01*\r
+X33020Y147129D02*X40831D01*\r
+X0Y153289D02*X762D01*\r
+X381D02*Y151765D01*\r
+X1219Y153289D02*Y151765D01*\r
+Y152336D02*X1410Y152527D01*\r
+X1791D01*\r
+X1981Y152336D01*\r
+Y151765D01*\r
+X2629D02*X3200D01*\r
+X2438Y151956D02*X2629Y151765D01*\r
+X2438Y152336D02*Y151956D01*\r
+Y152336D02*X2629Y152527D01*\r
+X3010D01*\r
+X3200Y152336D01*\r
+X2438Y152146D02*X3200D01*\r
+Y152336D02*Y152146D01*\r
+X3848Y152336D02*Y151765D01*\r
+Y152336D02*X4039Y152527D01*\r
+X4420D01*\r
+X3658D02*X3848Y152336D01*\r
+X5067Y151765D02*X5639D01*\r
+X4877Y151956D02*X5067Y151765D01*\r
+X4877Y152336D02*Y151956D01*\r
+Y152336D02*X5067Y152527D01*\r
+X5448D01*\r
+X5639Y152336D01*\r
+X4877Y152146D02*X5639D01*\r
+Y152336D02*Y152146D01*\r
+X7353Y152527D02*X7544Y152336D01*\r
+X6972Y152527D02*X7353D01*\r
+X6782Y152336D02*X6972Y152527D01*\r
+X6782Y152336D02*Y151956D01*\r
+X6972Y151765D01*\r
+X7544Y152527D02*Y151956D01*\r
+X7734Y151765D01*\r
+X6972D02*X7353D01*\r
+X7544Y151956D01*\r
+X8382Y152336D02*Y151765D01*\r
+Y152336D02*X8573Y152527D01*\r
+X8954D01*\r
+X8192D02*X8382Y152336D01*\r
+X9601Y151765D02*X10173D01*\r
+X9411Y151956D02*X9601Y151765D01*\r
+X9411Y152336D02*Y151956D01*\r
+Y152336D02*X9601Y152527D01*\r
+X9982D01*\r
+X10173Y152336D01*\r
+X9411Y152146D02*X10173D01*\r
+Y152336D02*Y152146D01*\r
+X11506Y151765D02*X11887D01*\r
+X11697Y153289D02*Y151765D01*\r
+X11316Y152908D02*X11697Y153289D01*\r
+X12535Y151765D02*X12916D01*\r
+X12725Y153289D02*Y151765D01*\r
+X12344Y152908D02*X12725Y153289D01*\r
+X14821D02*Y151765D01*\r
+X14630D02*X14821Y151956D01*\r
+X14249Y151765D02*X14630D01*\r
+X14059Y151956D02*X14249Y151765D01*\r
+X14059Y152336D02*Y151956D01*\r
+Y152336D02*X14249Y152527D01*\r
+X14630D01*\r
+X14821Y152336D01*\r
+X15278Y152908D02*Y152718D01*\r
+Y152336D02*Y151765D01*\r
+X15850Y153098D02*Y151765D01*\r
+Y153098D02*X16040Y153289D01*\r
+X16231D01*\r
+X15659Y152527D02*X16040D01*\r
+X16802Y153098D02*Y151765D01*\r
+Y153098D02*X16993Y153289D01*\r
+X17183D01*\r
+X16612Y152527D02*X16993D01*\r
+X17755Y151765D02*X18326D01*\r
+X17564Y151956D02*X17755Y151765D01*\r
+X17564Y152336D02*Y151956D01*\r
+Y152336D02*X17755Y152527D01*\r
+X18136D01*\r
+X18326Y152336D01*\r
+X17564Y152146D02*X18326D01*\r
+Y152336D02*Y152146D01*\r
+X18974Y152336D02*Y151765D01*\r
+Y152336D02*X19164Y152527D01*\r
+X19545D01*\r
+X18783D02*X18974Y152336D01*\r
+X20193Y151765D02*X20765D01*\r
+X20003Y151956D02*X20193Y151765D01*\r
+X20003Y152336D02*Y151956D01*\r
+Y152336D02*X20193Y152527D01*\r
+X20574D01*\r
+X20765Y152336D01*\r
+X20003Y152146D02*X20765D01*\r
+Y152336D02*Y152146D01*\r
+X21412Y152336D02*Y151765D01*\r
+Y152336D02*X21603Y152527D01*\r
+X21793D01*\r
+X21984Y152336D01*\r
+Y151765D01*\r
+X21222Y152527D02*X21412Y152336D01*\r
+X22631Y153289D02*Y151956D01*\r
+X22822Y151765D01*\r
+X22441Y152718D02*X22822D01*\r
+X24651Y153289D02*Y151765D01*\r
+X24460D02*X24651Y151956D01*\r
+X24079Y151765D02*X24460D01*\r
+X23889Y151956D02*X24079Y151765D01*\r
+X23889Y152336D02*Y151956D01*\r
+Y152336D02*X24079Y152527D01*\r
+X24460D01*\r
+X24651Y152336D01*\r
+X25298D02*Y151765D01*\r
+Y152336D02*X25489Y152527D01*\r
+X25870D01*\r
+X25108D02*X25298Y152336D01*\r
+X26327Y152908D02*Y152718D01*\r
+Y152336D02*Y151765D01*\r
+X26708Y153289D02*Y151956D01*\r
+X26899Y151765D01*\r
+X27280Y153289D02*Y151956D01*\r
+X27470Y151765D01*\r
+X28727D02*X29299D01*\r
+X29489Y151956D01*\r
+X29299Y152146D02*X29489Y151956D01*\r
+X28727Y152146D02*X29299D01*\r
+X28537Y152336D02*X28727Y152146D01*\r
+X28537Y152336D02*X28727Y152527D01*\r
+X29299D01*\r
+X29489Y152336D01*\r
+X28537Y151956D02*X28727Y151765D01*\r
+X29947Y152908D02*Y152718D01*\r
+Y152336D02*Y151765D01*\r
+X30328Y152527D02*X31090D01*\r
+X30328Y151765D02*X31090Y152527D01*\r
+X30328Y151765D02*X31090D01*\r
+X31737D02*X32309D01*\r
+X31547Y151956D02*X31737Y151765D01*\r
+X31547Y152336D02*Y151956D01*\r
+Y152336D02*X31737Y152527D01*\r
+X32118D01*\r
+X32309Y152336D01*\r
+X31547Y152146D02*X32309D01*\r
+Y152336D02*Y152146D01*\r
+X32957Y151765D02*X33528D01*\r
+X33719Y151956D01*\r
+X33528Y152146D02*X33719Y151956D01*\r
+X32957Y152146D02*X33528D01*\r
+X32766Y152336D02*X32957Y152146D01*\r
+X32766Y152336D02*X32957Y152527D01*\r
+X33528D01*\r
+X33719Y152336D01*\r
+X32766Y151956D02*X32957Y151765D01*\r
+X34862Y152527D02*Y151956D01*\r
+X35052Y151765D01*\r
+X35433D01*\r
+X35624Y151956D01*\r
+Y152527D02*Y151956D01*\r
+X36271Y151765D02*X36843D01*\r
+X37033Y151956D01*\r
+X36843Y152146D02*X37033Y151956D01*\r
+X36271Y152146D02*X36843D01*\r
+X36081Y152336D02*X36271Y152146D01*\r
+X36081Y152336D02*X36271Y152527D01*\r
+X36843D01*\r
+X37033Y152336D01*\r
+X36081Y151956D02*X36271Y151765D01*\r
+X37681D02*X38252D01*\r
+X37490Y151956D02*X37681Y151765D01*\r
+X37490Y152336D02*Y151956D01*\r
+Y152336D02*X37681Y152527D01*\r
+X38062D01*\r
+X38252Y152336D01*\r
+X37490Y152146D02*X38252D01*\r
+Y152336D02*Y152146D01*\r
+X39472Y153289D02*Y151765D01*\r
+X39281D02*X39472Y151956D01*\r
+X38900Y151765D02*X39281D01*\r
+X38710Y151956D02*X38900Y151765D01*\r
+X38710Y152336D02*Y151956D01*\r
+Y152336D02*X38900Y152527D01*\r
+X39281D01*\r
+X39472Y152336D01*\r
+X40615Y152908D02*Y152718D01*\r
+Y152336D02*Y151765D01*\r
+X41186Y152336D02*Y151765D01*\r
+Y152336D02*X41377Y152527D01*\r
+X41567D01*\r
+X41758Y152336D01*\r
+Y151765D01*\r
+X40996Y152527D02*X41186Y152336D01*\r
+X43091Y153289D02*Y151956D01*\r
+X43282Y151765D01*\r
+X42901Y152718D02*X43282D01*\r
+X43663Y153289D02*Y151765D01*\r
+Y152336D02*X43853Y152527D01*\r
+X44234D01*\r
+X44425Y152336D01*\r
+Y151765D01*\r
+X44882Y152908D02*Y152718D01*\r
+Y152336D02*Y151765D01*\r
+X45453D02*X46025D01*\r
+X46215Y151956D01*\r
+X46025Y152146D02*X46215Y151956D01*\r
+X45453Y152146D02*X46025D01*\r
+X45263Y152336D02*X45453Y152146D01*\r
+X45263Y152336D02*X45453Y152527D01*\r
+X46025D01*\r
+X46215Y152336D01*\r
+X45263Y151956D02*X45453Y151765D01*\r
+X47358Y153289D02*Y151956D01*\r
+X47549Y151765D01*\r
+X48501Y152527D02*X48692Y152336D01*\r
+X48120Y152527D02*X48501D01*\r
+X47930Y152336D02*X48120Y152527D01*\r
+X47930Y152336D02*Y151956D01*\r
+X48120Y151765D01*\r
+X48692Y152527D02*Y151956D01*\r
+X48882Y151765D01*\r
+X48120D02*X48501D01*\r
+X48692Y151956D01*\r
+X49340Y152527D02*Y151956D01*\r
+X49530Y151765D01*\r
+X50102Y152527D02*Y151384D01*\r
+X49911Y151194D02*X50102Y151384D01*\r
+X49530Y151194D02*X49911D01*\r
+X49340Y151384D02*X49530Y151194D01*\r
+Y151765D02*X49911D01*\r
+X50102Y151956D01*\r
+X50559Y152336D02*Y151956D01*\r
+Y152336D02*X50749Y152527D01*\r
+X51130D01*\r
+X51321Y152336D01*\r
+Y151956D01*\r
+X51130Y151765D02*X51321Y151956D01*\r
+X50749Y151765D02*X51130D01*\r
+X50559Y151956D02*X50749Y151765D01*\r
+X51778Y152527D02*Y151956D01*\r
+X51968Y151765D01*\r
+X52349D01*\r
+X52540Y151956D01*\r
+Y152527D02*Y151956D01*\r
+X53188Y153289D02*Y151956D01*\r
+X53378Y151765D01*\r
+X52997Y152718D02*X53378D01*\r
+X53759Y151384D02*X54140Y151765D01*\r
+X55283Y152527D02*X56045Y153289D01*\r
+X55283Y152527D02*X56236D01*\r
+X56045Y153289D02*Y151765D01*\r
+X56693D02*X57455Y152527D01*\r
+Y153098D02*Y152527D01*\r
+X57264Y153289D02*X57455Y153098D01*\r
+X56883Y153289D02*X57264D01*\r
+X56693Y153098D02*X56883Y153289D01*\r
+X56693Y153098D02*Y152718D01*\r
+X56883Y152527D01*\r
+X57455D01*\r
+X57912Y151956D02*X58103Y151765D01*\r
+X57912Y153098D02*Y151956D01*\r
+Y153098D02*X58103Y153289D01*\r
+X58484D01*\r
+X58674Y153098D01*\r
+Y151956D01*\r
+X58484Y151765D02*X58674Y151956D01*\r
+X58103Y151765D02*X58484D01*\r
+X57912Y152146D02*X58674Y152908D01*\r
+X59817Y153289D02*Y151765D01*\r
+Y152336D02*X60008Y152527D01*\r
+X60389D01*\r
+X60579Y152336D01*\r
+Y151765D01*\r
+X61036Y152336D02*Y151956D01*\r
+Y152336D02*X61227Y152527D01*\r
+X61608D01*\r
+X61798Y152336D01*\r
+Y151956D01*\r
+X61608Y151765D02*X61798Y151956D01*\r
+X61227Y151765D02*X61608D01*\r
+X61036Y151956D02*X61227Y151765D01*\r
+X62255Y153289D02*Y151956D01*\r
+X62446Y151765D01*\r
+X63017D02*X63589D01*\r
+X62827Y151956D02*X63017Y151765D01*\r
+X62827Y152336D02*Y151956D01*\r
+Y152336D02*X63017Y152527D01*\r
+X63398D01*\r
+X63589Y152336D01*\r
+X62827Y152146D02*X63589D01*\r
+Y152336D02*Y152146D01*\r
+X64237Y151765D02*X64808D01*\r
+X64999Y151956D01*\r
+X64808Y152146D02*X64999Y151956D01*\r
+X64237Y152146D02*X64808D01*\r
+X64046Y152336D02*X64237Y152146D01*\r
+X64046Y152336D02*X64237Y152527D01*\r
+X64808D01*\r
+X64999Y152336D01*\r
+X64046Y151956D02*X64237Y151765D01*\r
+X66332Y153289D02*Y151956D01*\r
+X66523Y151765D01*\r
+X66142Y152718D02*X66523D01*\r
+X66904Y152336D02*Y151956D01*\r
+Y152336D02*X67094Y152527D01*\r
+X67475D01*\r
+X67666Y152336D01*\r
+Y151956D01*\r
+X67475Y151765D02*X67666Y151956D01*\r
+X67094Y151765D02*X67475D01*\r
+X66904Y151956D02*X67094Y151765D01*\r
+X68313Y153289D02*Y151956D01*\r
+X68504Y151765D01*\r
+X68123Y152718D02*X68504D01*\r
+X69456Y152527D02*X69647Y152336D01*\r
+X69075Y152527D02*X69456D01*\r
+X68885Y152336D02*X69075Y152527D01*\r
+X68885Y152336D02*Y151956D01*\r
+X69075Y151765D01*\r
+X69647Y152527D02*Y151956D01*\r
+X69837Y151765D01*\r
+X69075D02*X69456D01*\r
+X69647Y151956D01*\r
+X70295Y153289D02*Y151956D01*\r
+X70485Y151765D01*\r
+G54D97*X0Y104140D02*X180340D01*\r
+X0D02*Y0D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+G54D96*X50800Y107569D02*Y106045D01*\r
+Y107569D02*X51372Y106998D01*\r
+X51943Y107569D01*\r
+Y106045D01*\r
+X52972Y106807D02*X53162Y106616D01*\r
+X52591Y106807D02*X52972D01*\r
+X52400Y106616D02*X52591Y106807D01*\r
+X52400Y106616D02*Y106236D01*\r
+X52591Y106045D01*\r
+X53162Y106807D02*Y106236D01*\r
+X53353Y106045D01*\r
+X52591D02*X52972D01*\r
+X53162Y106236D01*\r
+X53810Y106807D02*X54572Y106045D01*\r
+X53810D02*X54572Y106807D01*\r
+X55029Y107188D02*Y106998D01*\r
+Y106616D02*Y106045D01*\r
+X55601Y106616D02*Y106045D01*\r
+Y106616D02*X55791Y106807D01*\r
+X55982D01*\r
+X56172Y106616D01*\r
+Y106045D01*\r
+Y106616D02*X56363Y106807D01*\r
+X56553D01*\r
+X56744Y106616D01*\r
+Y106045D01*\r
+X55410Y106807D02*X55601Y106616D01*\r
+X57201Y106807D02*Y106236D01*\r
+X57391Y106045D01*\r
+X57772D01*\r
+X57963Y106236D01*\r
+Y106807D02*Y106236D01*\r
+X58611Y106616D02*Y106045D01*\r
+Y106616D02*X58801Y106807D01*\r
+X58992D01*\r
+X59182Y106616D01*\r
+Y106045D01*\r
+Y106616D02*X59373Y106807D01*\r
+X59563D01*\r
+X59754Y106616D01*\r
+Y106045D01*\r
+X58420Y106807D02*X58611Y106616D01*\r
+X61087Y107569D02*Y106045D01*\r
+X61659Y107569D02*X61849Y107378D01*\r
+Y106236D01*\r
+X61659Y106045D02*X61849Y106236D01*\r
+X60897Y106045D02*X61659D01*\r
+X60897Y107569D02*X61659D01*\r
+X62306Y107188D02*Y106998D01*\r
+Y106616D02*Y106045D01*\r
+X62878Y106616D02*Y106045D01*\r
+Y106616D02*X63068Y106807D01*\r
+X63259D01*\r
+X63449Y106616D01*\r
+Y106045D01*\r
+Y106616D02*X63640Y106807D01*\r
+X63830D01*\r
+X64021Y106616D01*\r
+Y106045D01*\r
+X62687Y106807D02*X62878Y106616D01*\r
+X64668Y106045D02*X65240D01*\r
+X64478Y106236D02*X64668Y106045D01*\r
+X64478Y106616D02*Y106236D01*\r
+Y106616D02*X64668Y106807D01*\r
+X65049D01*\r
+X65240Y106616D01*\r
+X64478Y106426D02*X65240D01*\r
+Y106616D02*Y106426D01*\r
+X65888Y106616D02*Y106045D01*\r
+Y106616D02*X66078Y106807D01*\r
+X66269D01*\r
+X66459Y106616D01*\r
+Y106045D01*\r
+X65697Y106807D02*X65888Y106616D01*\r
+X67107Y106045D02*X67678D01*\r
+X67869Y106236D01*\r
+X67678Y106426D02*X67869Y106236D01*\r
+X67107Y106426D02*X67678D01*\r
+X66916Y106616D02*X67107Y106426D01*\r
+X66916Y106616D02*X67107Y106807D01*\r
+X67678D01*\r
+X67869Y106616D01*\r
+X66916Y106236D02*X67107Y106045D01*\r
+X68326Y107188D02*Y106998D01*\r
+Y106616D02*Y106045D01*\r
+X68707Y106616D02*Y106236D01*\r
+Y106616D02*X68898Y106807D01*\r
+X69279D01*\r
+X69469Y106616D01*\r
+Y106236D01*\r
+X69279Y106045D02*X69469Y106236D01*\r
+X68898Y106045D02*X69279D01*\r
+X68707Y106236D02*X68898Y106045D01*\r
+X70117Y106616D02*Y106045D01*\r
+Y106616D02*X70307Y106807D01*\r
+X70498D01*\r
+X70688Y106616D01*\r
+Y106045D01*\r
+X69926Y106807D02*X70117Y106616D01*\r
+X71336Y106045D02*X71907D01*\r
+X72098Y106236D01*\r
+X71907Y106426D02*X72098Y106236D01*\r
+X71336Y106426D02*X71907D01*\r
+X71145Y106616D02*X71336Y106426D01*\r
+X71145Y106616D02*X71336Y106807D01*\r
+X71907D01*\r
+X72098Y106616D01*\r
+X71145Y106236D02*X71336Y106045D01*\r
+X72555Y106998D02*X72746D01*\r
+X72555Y106616D02*X72746D01*\r
+X73889Y106045D02*X74841Y106998D01*\r
+Y107569D02*Y106998D01*\r
+X73889Y107569D02*X74841D01*\r
+X75489Y106045D02*X75870D01*\r
+X75679Y107569D02*Y106045D01*\r
+X75298Y107188D02*X75679Y107569D01*\r
+X76327Y106236D02*X76518Y106045D01*\r
+X76327Y107378D02*Y106236D01*\r
+Y107378D02*X76518Y107569D01*\r
+X76899D01*\r
+X77089Y107378D01*\r
+Y106236D01*\r
+X76899Y106045D02*X77089Y106236D01*\r
+X76518Y106045D02*X76899D01*\r
+X76327Y106426D02*X77089Y107188D01*\r
+X77546Y106236D02*X77737Y106045D01*\r
+X77546Y107378D02*Y106236D01*\r
+Y107378D02*X77737Y107569D01*\r
+X78118D01*\r
+X78308Y107378D01*\r
+Y106236D01*\r
+X78118Y106045D02*X78308Y106236D01*\r
+X77737Y106045D02*X78118D01*\r
+X77546Y106426D02*X78308Y107188D01*\r
+X78765Y106045D02*X78956D01*\r
+X79413Y106236D02*X79604Y106045D01*\r
+X79413Y107378D02*Y106236D01*\r
+Y107378D02*X79604Y107569D01*\r
+X79985D01*\r
+X80175Y107378D01*\r
+Y106236D01*\r
+X79985Y106045D02*X80175Y106236D01*\r
+X79604Y106045D02*X79985D01*\r
+X79413Y106426D02*X80175Y107188D01*\r
+X80632Y106236D02*X80823Y106045D01*\r
+X80632Y107378D02*Y106236D01*\r
+Y107378D02*X80823Y107569D01*\r
+X81204D01*\r
+X81394Y107378D01*\r
+Y106236D01*\r
+X81204Y106045D02*X81394Y106236D01*\r
+X80823Y106045D02*X81204D01*\r
+X80632Y106426D02*X81394Y107188D01*\r
+X81852Y106236D02*X82042Y106045D01*\r
+X81852Y107378D02*Y106236D01*\r
+Y107378D02*X82042Y107569D01*\r
+X82423D01*\r
+X82614Y107378D01*\r
+Y106236D01*\r
+X82423Y106045D02*X82614Y106236D01*\r
+X82042Y106045D02*X82423D01*\r
+X81852Y106426D02*X82614Y107188D01*\r
+X83071Y106236D02*X83261Y106045D01*\r
+X83071Y107378D02*Y106236D01*\r
+Y107378D02*X83261Y107569D01*\r
+X83642D01*\r
+X83833Y107378D01*\r
+Y106236D01*\r
+X83642Y106045D02*X83833Y106236D01*\r
+X83261Y106045D02*X83642D01*\r
+X83071Y106426D02*X83833Y107188D01*\r
+X84290Y106236D02*X84480Y106045D01*\r
+X84290Y107378D02*Y106236D01*\r
+Y107378D02*X84480Y107569D01*\r
+X84861D01*\r
+X85052Y107378D01*\r
+Y106236D01*\r
+X84861Y106045D02*X85052Y106236D01*\r
+X84480Y106045D02*X84861D01*\r
+X84290Y106426D02*X85052Y107188D01*\r
+X85509Y106236D02*X85700Y106045D01*\r
+X85509Y107378D02*Y106236D01*\r
+Y107378D02*X85700Y107569D01*\r
+X86081D01*\r
+X86271Y107378D01*\r
+Y106236D01*\r
+X86081Y106045D02*X86271Y106236D01*\r
+X85700Y106045D02*X86081D01*\r
+X85509Y106426D02*X86271Y107188D01*\r
+X87605Y106616D02*Y106045D01*\r
+Y106616D02*X87795Y106807D01*\r
+X87986D01*\r
+X88176Y106616D01*\r
+Y106045D01*\r
+Y106616D02*X88367Y106807D01*\r
+X88557D01*\r
+X88748Y106616D01*\r
+Y106045D01*\r
+X87414Y106807D02*X87605Y106616D01*\r
+X89205Y107188D02*Y106998D01*\r
+Y106616D02*Y106045D01*\r
+X89586Y107569D02*Y106236D01*\r
+X89776Y106045D01*\r
+X90348D02*X90919D01*\r
+X91110Y106236D01*\r
+X90919Y106426D02*X91110Y106236D01*\r
+X90348Y106426D02*X90919D01*\r
+X90157Y106616D02*X90348Y106426D01*\r
+X90157Y106616D02*X90348Y106807D01*\r
+X90919D01*\r
+X91110Y106616D01*\r
+X90157Y106236D02*X90348Y106045D01*\r
+X92253Y106807D02*Y106236D01*\r
+X92443Y106045D01*\r
+X92634D01*\r
+X92824Y106236D01*\r
+Y106807D02*Y106236D01*\r
+X93015Y106045D01*\r
+X93205D01*\r
+X93396Y106236D01*\r
+Y106807D02*Y106236D01*\r
+X93853Y107188D02*Y106998D01*\r
+Y106616D02*Y106045D01*\r
+X94996Y107569D02*Y106045D01*\r
+X94806D02*X94996Y106236D01*\r
+X94425Y106045D02*X94806D01*\r
+X94234Y106236D02*X94425Y106045D01*\r
+X94234Y106616D02*Y106236D01*\r
+Y106616D02*X94425Y106807D01*\r
+X94806D01*\r
+X94996Y106616D01*\r
+X95644Y106045D02*X96215D01*\r
+X95453Y106236D02*X95644Y106045D01*\r
+X95453Y106616D02*Y106236D01*\r
+Y106616D02*X95644Y106807D01*\r
+X96025D01*\r
+X96215Y106616D01*\r
+X95453Y106426D02*X96215D01*\r
+Y106616D02*Y106426D01*\r
+X96672Y105664D02*X97053Y106045D01*\r
+X98196Y106807D02*X98958Y107569D01*\r
+X98196Y106807D02*X99149D01*\r
+X98958Y107569D02*Y106045D01*\r
+X99797D02*X100178D01*\r
+X99987Y107569D02*Y106045D01*\r
+X99606Y107188D02*X99987Y107569D01*\r
+X100635Y106236D02*X100825Y106045D01*\r
+X100635Y107378D02*Y106236D01*\r
+Y107378D02*X100825Y107569D01*\r
+X101206D01*\r
+X101397Y107378D01*\r
+Y106236D01*\r
+X101206Y106045D02*X101397Y106236D01*\r
+X100825Y106045D02*X101206D01*\r
+X100635Y106426D02*X101397Y107188D01*\r
+X101854Y106236D02*X102045Y106045D01*\r
+X101854Y107378D02*Y106236D01*\r
+Y107378D02*X102045Y107569D01*\r
+X102426D01*\r
+X102616Y107378D01*\r
+Y106236D01*\r
+X102426Y106045D02*X102616Y106236D01*\r
+X102045Y106045D02*X102426D01*\r
+X101854Y106426D02*X102616Y107188D01*\r
+X103073Y106045D02*X103264D01*\r
+X103721Y106236D02*X103911Y106045D01*\r
+X103721Y107378D02*Y106236D01*\r
+Y107378D02*X103911Y107569D01*\r
+X104292D01*\r
+X104483Y107378D01*\r
+Y106236D01*\r
+X104292Y106045D02*X104483Y106236D01*\r
+X103911Y106045D02*X104292D01*\r
+X103721Y106426D02*X104483Y107188D01*\r
+X104940Y106236D02*X105131Y106045D01*\r
+X104940Y107378D02*Y106236D01*\r
+Y107378D02*X105131Y107569D01*\r
+X105512D01*\r
+X105702Y107378D01*\r
+Y106236D01*\r
+X105512Y106045D02*X105702Y106236D01*\r
+X105131Y106045D02*X105512D01*\r
+X104940Y106426D02*X105702Y107188D01*\r
+X106159Y106236D02*X106350Y106045D01*\r
+X106159Y107378D02*Y106236D01*\r
+Y107378D02*X106350Y107569D01*\r
+X106731D01*\r
+X106921Y107378D01*\r
+Y106236D01*\r
+X106731Y106045D02*X106921Y106236D01*\r
+X106350Y106045D02*X106731D01*\r
+X106159Y106426D02*X106921Y107188D01*\r
+X107379Y106236D02*X107569Y106045D01*\r
+X107379Y107378D02*Y106236D01*\r
+Y107378D02*X107569Y107569D01*\r
+X107950D01*\r
+X108141Y107378D01*\r
+Y106236D01*\r
+X107950Y106045D02*X108141Y106236D01*\r
+X107569Y106045D02*X107950D01*\r
+X107379Y106426D02*X108141Y107188D01*\r
+X108598Y106236D02*X108788Y106045D01*\r
+X108598Y107378D02*Y106236D01*\r
+Y107378D02*X108788Y107569D01*\r
+X109169D01*\r
+X109360Y107378D01*\r
+Y106236D01*\r
+X109169Y106045D02*X109360Y106236D01*\r
+X108788Y106045D02*X109169D01*\r
+X108598Y106426D02*X109360Y107188D01*\r
+X109817Y106236D02*X110007Y106045D01*\r
+X109817Y107378D02*Y106236D01*\r
+Y107378D02*X110007Y107569D01*\r
+X110388D01*\r
+X110579Y107378D01*\r
+Y106236D01*\r
+X110388Y106045D02*X110579Y106236D01*\r
+X110007Y106045D02*X110388D01*\r
+X109817Y106426D02*X110579Y107188D01*\r
+X111912Y106616D02*Y106045D01*\r
+Y106616D02*X112103Y106807D01*\r
+X112293D01*\r
+X112484Y106616D01*\r
+Y106045D01*\r
+Y106616D02*X112674Y106807D01*\r
+X112865D01*\r
+X113055Y106616D01*\r
+Y106045D01*\r
+X111722Y106807D02*X111912Y106616D01*\r
+X113513Y107188D02*Y106998D01*\r
+Y106616D02*Y106045D01*\r
+X113894Y107569D02*Y106236D01*\r
+X114084Y106045D01*\r
+X114656D02*X115227D01*\r
+X115418Y106236D01*\r
+X115227Y106426D02*X115418Y106236D01*\r
+X114656Y106426D02*X115227D01*\r
+X114465Y106616D02*X114656Y106426D01*\r
+X114465Y106616D02*X114656Y106807D01*\r
+X115227D01*\r
+X115418Y106616D01*\r
+X114465Y106236D02*X114656Y106045D01*\r
+X116561Y107569D02*Y106045D01*\r
+Y106616D02*X116751Y106807D01*\r
+X117132D01*\r
+X117323Y106616D01*\r
+Y106045D01*\r
+X117780Y107188D02*Y106998D01*\r
+Y106616D02*Y106045D01*\r
+X118732Y106807D02*X118923Y106616D01*\r
+X118351Y106807D02*X118732D01*\r
+X118161Y106616D02*X118351Y106807D01*\r
+X118161Y106616D02*Y106236D01*\r
+X118351Y106045D01*\r
+X118732D01*\r
+X118923Y106236D01*\r
+X118161Y105664D02*X118351Y105474D01*\r
+X118732D01*\r
+X118923Y105664D01*\r
+Y106807D02*Y105664D01*\r
+X119380Y107569D02*Y106045D01*\r
+Y106616D02*X119571Y106807D01*\r
+X119952D01*\r
+X120142Y106616D01*\r
+Y106045D01*\r
+X38678Y-2413D02*X39440D01*\r
+X39630Y-2222D01*\r
+Y-1842D02*Y-2222D01*\r
+X39440Y-1651D02*X39630Y-1842D01*\r
+X38868Y-1651D02*X39440D01*\r
+X38868Y-889D02*Y-2413D01*\r
+X38678Y-889D02*X39440D01*\r
+X39630Y-1080D01*\r
+Y-1460D01*\r
+X39440Y-1651D02*X39630Y-1460D01*\r
+X40087Y-1842D02*Y-2222D01*\r
+Y-1842D02*X40278Y-1651D01*\r
+X40659D01*\r
+X40849Y-1842D01*\r
+Y-2222D01*\r
+X40659Y-2413D02*X40849Y-2222D01*\r
+X40278Y-2413D02*X40659D01*\r
+X40087Y-2222D02*X40278Y-2413D01*\r
+X41878Y-1651D02*X42069Y-1842D01*\r
+X41497Y-1651D02*X41878D01*\r
+X41307Y-1842D02*X41497Y-1651D01*\r
+X41307Y-1842D02*Y-2222D01*\r
+X41497Y-2413D01*\r
+X42069Y-1651D02*Y-2222D01*\r
+X42259Y-2413D01*\r
+X41497D02*X41878D01*\r
+X42069Y-2222D01*\r
+X42907Y-1842D02*Y-2413D01*\r
+Y-1842D02*X43097Y-1651D01*\r
+X43478D01*\r
+X42716D02*X42907Y-1842D01*\r
+X44698Y-889D02*Y-2413D01*\r
+X44507D02*X44698Y-2222D01*\r
+X44126Y-2413D02*X44507D01*\r
+X43936Y-2222D02*X44126Y-2413D01*\r
+X43936Y-1842D02*Y-2222D01*\r
+Y-1842D02*X44126Y-1651D01*\r
+X44507D01*\r
+X44698Y-1842D01*\r
+X45841D02*Y-2222D01*\r
+Y-1842D02*X46031Y-1651D01*\r
+X46412D01*\r
+X46603Y-1842D01*\r
+Y-2222D01*\r
+X46412Y-2413D02*X46603Y-2222D01*\r
+X46031Y-2413D02*X46412D01*\r
+X45841Y-2222D02*X46031Y-2413D01*\r
+X47060Y-1651D02*Y-2222D01*\r
+X47250Y-2413D01*\r
+X47631D01*\r
+X47822Y-2222D01*\r
+Y-1651D02*Y-2222D01*\r
+X48469Y-889D02*Y-2222D01*\r
+X48660Y-2413D01*\r
+X48279Y-1460D02*X48660D01*\r
+X49041Y-889D02*Y-2222D01*\r
+X49231Y-2413D01*\r
+X49612Y-1270D02*Y-1460D01*\r
+Y-1842D02*Y-2413D01*\r
+X50184Y-1842D02*Y-2413D01*\r
+Y-1842D02*X50375Y-1651D01*\r
+X50565D01*\r
+X50756Y-1842D01*\r
+Y-2413D01*\r
+X49994Y-1651D02*X50184Y-1842D01*\r
+X51403Y-2413D02*X51975D01*\r
+X51213Y-2222D02*X51403Y-2413D01*\r
+X51213Y-1842D02*Y-2222D01*\r
+Y-1842D02*X51403Y-1651D01*\r
+X51784D01*\r
+X51975Y-1842D01*\r
+X51213Y-2032D02*X51975D01*\r
+Y-1842D02*Y-2032D01*\r
+X53118Y-1270D02*Y-1460D01*\r
+Y-1842D02*Y-2413D01*\r
+X53689D02*X54261D01*\r
+X54451Y-2222D01*\r
+X54261Y-2032D02*X54451Y-2222D01*\r
+X53689Y-2032D02*X54261D01*\r
+X53499Y-1842D02*X53689Y-2032D01*\r
+X53499Y-1842D02*X53689Y-1651D01*\r
+X54261D01*\r
+X54451Y-1842D01*\r
+X53499Y-2222D02*X53689Y-2413D01*\r
+X55785Y-889D02*Y-2222D01*\r
+X55975Y-2413D01*\r
+X55594Y-1460D02*X55975D01*\r
+X56356Y-889D02*Y-2413D01*\r
+Y-1842D02*X56547Y-1651D01*\r
+X56928D01*\r
+X57118Y-1842D01*\r
+Y-2413D01*\r
+X57766D02*X58337D01*\r
+X57575Y-2222D02*X57766Y-2413D01*\r
+X57575Y-1842D02*Y-2222D01*\r
+Y-1842D02*X57766Y-1651D01*\r
+X58147D01*\r
+X58337Y-1842D01*\r
+X57575Y-2032D02*X58337D01*\r
+Y-1842D02*Y-2032D01*\r
+X59671Y-1651D02*X60242D01*\r
+X59480Y-1842D02*X59671Y-1651D01*\r
+X59480Y-1842D02*Y-2222D01*\r
+X59671Y-2413D01*\r
+X60242D01*\r
+X60890D02*X61462D01*\r
+X60700Y-2222D02*X60890Y-2413D01*\r
+X60700Y-1842D02*Y-2222D01*\r
+Y-1842D02*X60890Y-1651D01*\r
+X61271D01*\r
+X61462Y-1842D01*\r
+X60700Y-2032D02*X61462D01*\r
+Y-1842D02*Y-2032D01*\r
+X62109Y-1842D02*Y-2413D01*\r
+Y-1842D02*X62300Y-1651D01*\r
+X62490D01*\r
+X62681Y-1842D01*\r
+Y-2413D01*\r
+X61919Y-1651D02*X62109Y-1842D01*\r
+X63329Y-889D02*Y-2222D01*\r
+X63519Y-2413D01*\r
+X63138Y-1460D02*X63519D01*\r
+X64091Y-2413D02*X64662D01*\r
+X63900Y-2222D02*X64091Y-2413D01*\r
+X63900Y-1842D02*Y-2222D01*\r
+Y-1842D02*X64091Y-1651D01*\r
+X64472D01*\r
+X64662Y-1842D01*\r
+X63900Y-2032D02*X64662D01*\r
+Y-1842D02*Y-2032D01*\r
+X65310Y-1842D02*Y-2413D01*\r
+Y-1842D02*X65500Y-1651D01*\r
+X65881D01*\r
+X65119D02*X65310Y-1842D01*\r
+X66338Y-889D02*Y-2222D01*\r
+X66529Y-2413D01*\r
+X66910Y-1270D02*Y-1460D01*\r
+Y-1842D02*Y-2413D01*\r
+X67481Y-1842D02*Y-2413D01*\r
+Y-1842D02*X67672Y-1651D01*\r
+X67862D01*\r
+X68053Y-1842D01*\r
+Y-2413D01*\r
+X67291Y-1651D02*X67481Y-1842D01*\r
+X68701Y-2413D02*X69272D01*\r
+X68510Y-2222D02*X68701Y-2413D01*\r
+X68510Y-1842D02*Y-2222D01*\r
+Y-1842D02*X68701Y-1651D01*\r
+X69082D01*\r
+X69272Y-1842D01*\r
+X68510Y-2032D02*X69272D01*\r
+Y-1842D02*Y-2032D01*\r
+X70415Y-1842D02*Y-2222D01*\r
+Y-1842D02*X70606Y-1651D01*\r
+X70987D01*\r
+X71177Y-1842D01*\r
+Y-2222D01*\r
+X70987Y-2413D02*X71177Y-2222D01*\r
+X70606Y-2413D02*X70987D01*\r
+X70415Y-2222D02*X70606Y-2413D01*\r
+X71825Y-1080D02*Y-2413D01*\r
+Y-1080D02*X72015Y-889D01*\r
+X72206D01*\r
+X71634Y-1651D02*X72015D01*\r
+X73463Y-889D02*Y-2222D01*\r
+X73654Y-2413D01*\r
+X73273Y-1460D02*X73654D01*\r
+X74035Y-889D02*Y-2413D01*\r
+Y-1842D02*X74225Y-1651D01*\r
+X74606D01*\r
+X74797Y-1842D01*\r
+Y-2413D01*\r
+X75254Y-1270D02*Y-1460D01*\r
+Y-1842D02*Y-2413D01*\r
+X75825D02*X76397D01*\r
+X76587Y-2222D01*\r
+X76397Y-2032D02*X76587Y-2222D01*\r
+X75825Y-2032D02*X76397D01*\r
+X75635Y-1842D02*X75825Y-2032D01*\r
+X75635Y-1842D02*X75825Y-1651D01*\r
+X76397D01*\r
+X76587Y-1842D01*\r
+X75635Y-2222D02*X75825Y-2413D01*\r
+X77730Y-2222D02*X77921Y-2413D01*\r
+X77730Y-1842D02*Y-2222D01*\r
+Y-1842D02*X77921Y-1651D01*\r
+X78302D01*\r
+X78492Y-1842D01*\r
+Y-2222D01*\r
+X78302Y-2413D02*X78492Y-2222D01*\r
+X77921Y-2413D02*X78302D01*\r
+X77730Y-1460D02*X77921Y-1651D01*\r
+X77730Y-1080D02*Y-1460D01*\r
+Y-1080D02*X77921Y-889D01*\r
+X78302D01*\r
+X78492Y-1080D01*\r
+Y-1460D01*\r
+X78302Y-1651D02*X78492Y-1460D01*\r
+X78950Y-2413D02*X79140D01*\r
+X79597Y-2222D02*X79788Y-2413D01*\r
+X79597Y-1080D02*Y-2222D01*\r
+Y-1080D02*X79788Y-889D01*\r
+X80169D01*\r
+X80359Y-1080D01*\r
+Y-2222D01*\r
+X80169Y-2413D02*X80359Y-2222D01*\r
+X79788Y-2413D02*X80169D01*\r
+X79597Y-2032D02*X80359Y-1270D01*\r
+X80816Y-2222D02*X81007Y-2413D01*\r
+X80816Y-1080D02*Y-2222D01*\r
+Y-1080D02*X81007Y-889D01*\r
+X81388D01*\r
+X81578Y-1080D01*\r
+Y-2222D01*\r
+X81388Y-2413D02*X81578Y-2222D01*\r
+X81007Y-2413D02*X81388D01*\r
+X80816Y-2032D02*X81578Y-1270D01*\r
+X82036Y-2222D02*X82226Y-2413D01*\r
+X82036Y-1080D02*Y-2222D01*\r
+Y-1080D02*X82226Y-889D01*\r
+X82607D01*\r
+X82798Y-1080D01*\r
+Y-2222D01*\r
+X82607Y-2413D02*X82798Y-2222D01*\r
+X82226Y-2413D02*X82607D01*\r
+X82036Y-2032D02*X82798Y-1270D01*\r
+X83255Y-2222D02*X83445Y-2413D01*\r
+X83255Y-1080D02*Y-2222D01*\r
+Y-1080D02*X83445Y-889D01*\r
+X83826D01*\r
+X84017Y-1080D01*\r
+Y-2222D01*\r
+X83826Y-2413D02*X84017Y-2222D01*\r
+X83445Y-2413D02*X83826D01*\r
+X83255Y-2032D02*X84017Y-1270D01*\r
+X84474Y-2222D02*X84665Y-2413D01*\r
+X84474Y-1080D02*Y-2222D01*\r
+Y-1080D02*X84665Y-889D01*\r
+X85046D01*\r
+X85236Y-1080D01*\r
+Y-2222D01*\r
+X85046Y-2413D02*X85236Y-2222D01*\r
+X84665Y-2413D02*X85046D01*\r
+X84474Y-2032D02*X85236Y-1270D01*\r
+X85693Y-2222D02*X85884Y-2413D01*\r
+X85693Y-1080D02*Y-2222D01*\r
+Y-1080D02*X85884Y-889D01*\r
+X86265D01*\r
+X86455Y-1080D01*\r
+Y-2222D01*\r
+X86265Y-2413D02*X86455Y-2222D01*\r
+X85884Y-2413D02*X86265D01*\r
+X85693Y-2032D02*X86455Y-1270D01*\r
+X87789Y-1842D02*Y-2413D01*\r
+Y-1842D02*X87979Y-1651D01*\r
+X88170D01*\r
+X88360Y-1842D01*\r
+Y-2413D01*\r
+Y-1842D02*X88551Y-1651D01*\r
+X88741D01*\r
+X88932Y-1842D01*\r
+Y-2413D01*\r
+X87598Y-1651D02*X87789Y-1842D01*\r
+X89389Y-1270D02*Y-1460D01*\r
+Y-1842D02*Y-2413D01*\r
+X89770Y-889D02*Y-2222D01*\r
+X89960Y-2413D01*\r
+X91218Y-1842D02*Y-2413D01*\r
+Y-1842D02*X91408Y-1651D01*\r
+X91789D01*\r
+X91027D02*X91218Y-1842D01*\r
+X92437Y-2413D02*X93008D01*\r
+X92246Y-2222D02*X92437Y-2413D01*\r
+X92246Y-1842D02*Y-2222D01*\r
+Y-1842D02*X92437Y-1651D01*\r
+X92818D01*\r
+X93008Y-1842D01*\r
+X92246Y-2032D02*X93008D01*\r
+Y-1842D02*Y-2032D01*\r
+X93656Y-1651D02*X94228D01*\r
+X93466Y-1842D02*X93656Y-1651D01*\r
+X93466Y-1842D02*Y-2222D01*\r
+X93656Y-2413D01*\r
+X94228D01*\r
+X94875Y-889D02*Y-2222D01*\r
+X95066Y-2413D01*\r
+X94685Y-1460D02*X95066D01*\r
+X96018Y-1651D02*X96209Y-1842D01*\r
+X95637Y-1651D02*X96018D01*\r
+X95447Y-1842D02*X95637Y-1651D01*\r
+X95447Y-1842D02*Y-2222D01*\r
+X95637Y-2413D01*\r
+X96209Y-1651D02*Y-2222D01*\r
+X96399Y-2413D01*\r
+X95637D02*X96018D01*\r
+X96209Y-2222D01*\r
+X97047Y-1842D02*Y-2413D01*\r
+Y-1842D02*X97238Y-1651D01*\r
+X97428D01*\r
+X97619Y-1842D01*\r
+Y-2413D01*\r
+X96857Y-1651D02*X97047Y-1842D01*\r
+X98647Y-1651D02*X98838Y-1842D01*\r
+X98266Y-1651D02*X98647D01*\r
+X98076Y-1842D02*X98266Y-1651D01*\r
+X98076Y-1842D02*Y-2222D01*\r
+X98266Y-2413D01*\r
+X98647D01*\r
+X98838Y-2222D01*\r
+X98076Y-2794D02*X98266Y-2984D01*\r
+X98647D01*\r
+X98838Y-2794D01*\r
+Y-1651D02*Y-2794D01*\r
+X99295Y-889D02*Y-2222D01*\r
+X99485Y-2413D01*\r
+X100057D02*X100628D01*\r
+X99866Y-2222D02*X100057Y-2413D01*\r
+X99866Y-1842D02*Y-2222D01*\r
+Y-1842D02*X100057Y-1651D01*\r
+X100438D01*\r
+X100628Y-1842D01*\r
+X99866Y-2032D02*X100628D01*\r
+Y-1842D02*Y-2032D01*\r
+X101771Y-1651D02*X102533D01*\r
+X103676Y-2222D02*X103867Y-2413D01*\r
+X103676Y-1080D02*Y-2222D01*\r
+Y-1080D02*X103867Y-889D01*\r
+X104248D01*\r
+X104438Y-1080D01*\r
+Y-2222D01*\r
+X104248Y-2413D02*X104438Y-2222D01*\r
+X103867Y-2413D02*X104248D01*\r
+X103676Y-2032D02*X104438Y-1270D01*\r
+X104896Y-2794D02*X105277Y-2413D01*\r
+X105734Y-2222D02*X105924Y-2413D01*\r
+X105734Y-1080D02*Y-2222D01*\r
+Y-1080D02*X105924Y-889D01*\r
+X106305D01*\r
+X106496Y-1080D01*\r
+Y-2222D01*\r
+X106305Y-2413D02*X106496Y-2222D01*\r
+X105924Y-2413D02*X106305D01*\r
+X105734Y-2032D02*X106496Y-1270D01*\r
+X107829Y-889D02*Y-2222D01*\r
+X108020Y-2413D01*\r
+X107639Y-1460D02*X108020D01*\r
+X108401Y-1842D02*Y-2222D01*\r
+Y-1842D02*X108591Y-1651D01*\r
+X108972D01*\r
+X109163Y-1842D01*\r
+Y-2222D01*\r
+X108972Y-2413D02*X109163Y-2222D01*\r
+X108591Y-2413D02*X108972D01*\r
+X108401Y-2222D02*X108591Y-2413D01*\r
+X110306D02*X111258Y-1460D01*\r
+Y-889D02*Y-1460D01*\r
+X110306Y-889D02*X111258D01*\r
+X111906Y-2413D02*X112287D01*\r
+X112097Y-889D02*Y-2413D01*\r
+X111716Y-1270D02*X112097Y-889D01*\r
+X112744Y-2222D02*X112935Y-2413D01*\r
+X112744Y-1080D02*Y-2222D01*\r
+Y-1080D02*X112935Y-889D01*\r
+X113316D01*\r
+X113506Y-1080D01*\r
+Y-2222D01*\r
+X113316Y-2413D02*X113506Y-2222D01*\r
+X112935Y-2413D02*X113316D01*\r
+X112744Y-2032D02*X113506Y-1270D01*\r
+X113963Y-2222D02*X114154Y-2413D01*\r
+X113963Y-1080D02*Y-2222D01*\r
+Y-1080D02*X114154Y-889D01*\r
+X114535D01*\r
+X114725Y-1080D01*\r
+Y-2222D01*\r
+X114535Y-2413D02*X114725Y-2222D01*\r
+X114154Y-2413D02*X114535D01*\r
+X113963Y-2032D02*X114725Y-1270D01*\r
+X115183Y-2413D02*X115373D01*\r
+X115830Y-2222D02*X116021Y-2413D01*\r
+X115830Y-1080D02*Y-2222D01*\r
+Y-1080D02*X116021Y-889D01*\r
+X116402D01*\r
+X116592Y-1080D01*\r
+Y-2222D01*\r
+X116402Y-2413D02*X116592Y-2222D01*\r
+X116021Y-2413D02*X116402D01*\r
+X115830Y-2032D02*X116592Y-1270D01*\r
+X117050Y-2222D02*X117240Y-2413D01*\r
+X117050Y-1080D02*Y-2222D01*\r
+Y-1080D02*X117240Y-889D01*\r
+X117621D01*\r
+X117812Y-1080D01*\r
+Y-2222D01*\r
+X117621Y-2413D02*X117812Y-2222D01*\r
+X117240Y-2413D02*X117621D01*\r
+X117050Y-2032D02*X117812Y-1270D01*\r
+X118269Y-2222D02*X118459Y-2413D01*\r
+X118269Y-1080D02*Y-2222D01*\r
+Y-1080D02*X118459Y-889D01*\r
+X118840D01*\r
+X119031Y-1080D01*\r
+Y-2222D01*\r
+X118840Y-2413D02*X119031Y-2222D01*\r
+X118459Y-2413D02*X118840D01*\r
+X118269Y-2032D02*X119031Y-1270D01*\r
+X119488Y-2222D02*X119678Y-2413D01*\r
+X119488Y-1080D02*Y-2222D01*\r
+Y-1080D02*X119678Y-889D01*\r
+X120059D01*\r
+X120250Y-1080D01*\r
+Y-2222D01*\r
+X120059Y-2413D02*X120250Y-2222D01*\r
+X119678Y-2413D02*X120059D01*\r
+X119488Y-2032D02*X120250Y-1270D01*\r
+X120707Y-2222D02*X120898Y-2413D01*\r
+X120707Y-1080D02*Y-2222D01*\r
+Y-1080D02*X120898Y-889D01*\r
+X121279D01*\r
+X121469Y-1080D01*\r
+Y-2222D01*\r
+X121279Y-2413D02*X121469Y-2222D01*\r
+X120898Y-2413D02*X121279D01*\r
+X120707Y-2032D02*X121469Y-1270D01*\r
+X121926Y-2222D02*X122117Y-2413D01*\r
+X121926Y-1080D02*Y-2222D01*\r
+Y-1080D02*X122117Y-889D01*\r
+X122498D01*\r
+X122688Y-1080D01*\r
+Y-2222D01*\r
+X122498Y-2413D02*X122688Y-2222D01*\r
+X122117Y-2413D02*X122498D01*\r
+X121926Y-2032D02*X122688Y-1270D01*\r
+X123146Y-2794D02*X123527Y-2413D01*\r
+X123984Y-1651D02*X124746Y-889D01*\r
+X123984Y-1651D02*X124936D01*\r
+X124746Y-889D02*Y-2413D01*\r
+X125584D02*X125965D01*\r
+X125774Y-889D02*Y-2413D01*\r
+X125393Y-1270D02*X125774Y-889D01*\r
+X126422Y-2222D02*X126613Y-2413D01*\r
+X126422Y-1080D02*Y-2222D01*\r
+Y-1080D02*X126613Y-889D01*\r
+X126994D01*\r
+X127184Y-1080D01*\r
+Y-2222D01*\r
+X126994Y-2413D02*X127184Y-2222D01*\r
+X126613Y-2413D02*X126994D01*\r
+X126422Y-2032D02*X127184Y-1270D01*\r
+X127641Y-2222D02*X127832Y-2413D01*\r
+X127641Y-1080D02*Y-2222D01*\r
+Y-1080D02*X127832Y-889D01*\r
+X128213D01*\r
+X128403Y-1080D01*\r
+Y-2222D01*\r
+X128213Y-2413D02*X128403Y-2222D01*\r
+X127832Y-2413D02*X128213D01*\r
+X127641Y-2032D02*X128403Y-1270D01*\r
+X128861Y-2413D02*X129051D01*\r
+X129508Y-2222D02*X129699Y-2413D01*\r
+X129508Y-1080D02*Y-2222D01*\r
+Y-1080D02*X129699Y-889D01*\r
+X130080D01*\r
+X130270Y-1080D01*\r
+Y-2222D01*\r
+X130080Y-2413D02*X130270Y-2222D01*\r
+X129699Y-2413D02*X130080D01*\r
+X129508Y-2032D02*X130270Y-1270D01*\r
+X130728Y-2222D02*X130918Y-2413D01*\r
+X130728Y-1080D02*Y-2222D01*\r
+Y-1080D02*X130918Y-889D01*\r
+X131299D01*\r
+X131490Y-1080D01*\r
+Y-2222D01*\r
+X131299Y-2413D02*X131490Y-2222D01*\r
+X130918Y-2413D02*X131299D01*\r
+X130728Y-2032D02*X131490Y-1270D01*\r
+X131947Y-2222D02*X132137Y-2413D01*\r
+X131947Y-1080D02*Y-2222D01*\r
+Y-1080D02*X132137Y-889D01*\r
+X132518D01*\r
+X132709Y-1080D01*\r
+Y-2222D01*\r
+X132518Y-2413D02*X132709Y-2222D01*\r
+X132137Y-2413D02*X132518D01*\r
+X131947Y-2032D02*X132709Y-1270D01*\r
+X133166Y-2222D02*X133356Y-2413D01*\r
+X133166Y-1080D02*Y-2222D01*\r
+Y-1080D02*X133356Y-889D01*\r
+X133737D01*\r
+X133928Y-1080D01*\r
+Y-2222D01*\r
+X133737Y-2413D02*X133928Y-2222D01*\r
+X133356Y-2413D02*X133737D01*\r
+X133166Y-2032D02*X133928Y-1270D01*\r
+X134385Y-2222D02*X134576Y-2413D01*\r
+X134385Y-1080D02*Y-2222D01*\r
+Y-1080D02*X134576Y-889D01*\r
+X134957D01*\r
+X135147Y-1080D01*\r
+Y-2222D01*\r
+X134957Y-2413D02*X135147Y-2222D01*\r
+X134576Y-2413D02*X134957D01*\r
+X134385Y-2032D02*X135147Y-1270D01*\r
+X135604Y-2222D02*X135795Y-2413D01*\r
+X135604Y-1080D02*Y-2222D01*\r
+Y-1080D02*X135795Y-889D01*\r
+X136176D01*\r
+X136366Y-1080D01*\r
+Y-2222D01*\r
+X136176Y-2413D02*X136366Y-2222D01*\r
+X135795Y-2413D02*X136176D01*\r
+X135604Y-2032D02*X136366Y-1270D01*\r
+X137700Y-1842D02*Y-2413D01*\r
+Y-1842D02*X137890Y-1651D01*\r
+X138081D01*\r
+X138271Y-1842D01*\r
+Y-2413D01*\r
+Y-1842D02*X138462Y-1651D01*\r
+X138652D01*\r
+X138843Y-1842D01*\r
+Y-2413D01*\r
+X137509Y-1651D02*X137700Y-1842D01*\r
+X139300Y-1270D02*Y-1460D01*\r
+Y-1842D02*Y-2413D01*\r
+X139681Y-889D02*Y-2222D01*\r
+X139872Y-2413D01*\r
+X140443D02*X141015D01*\r
+X141205Y-2222D01*\r
+X141015Y-2032D02*X141205Y-2222D01*\r
+X140443Y-2032D02*X141015D01*\r
+X140253Y-1842D02*X140443Y-2032D01*\r
+X140253Y-1842D02*X140443Y-1651D01*\r
+X141015D01*\r
+X141205Y-1842D01*\r
+X140253Y-2222D02*X140443Y-2413D01*\r
+X50990Y111379D02*Y109855D01*\r
+X51562Y111379D02*X51752Y111188D01*\r
+Y110046D01*\r
+X51562Y109855D02*X51752Y110046D01*\r
+X50800Y109855D02*X51562D01*\r
+X50800Y111379D02*X51562D01*\r
+X52781Y110617D02*X52972Y110426D01*\r
+X52400Y110617D02*X52781D01*\r
+X52210Y110426D02*X52400Y110617D01*\r
+X52210Y110426D02*Y110046D01*\r
+X52400Y109855D01*\r
+X52972Y110617D02*Y110046D01*\r
+X53162Y109855D01*\r
+X52400D02*X52781D01*\r
+X52972Y110046D01*\r
+X53810Y111379D02*Y110046D01*\r
+X54000Y109855D01*\r
+X53619Y110808D02*X54000D01*\r
+X54572Y109855D02*X55143D01*\r
+X54381Y110046D02*X54572Y109855D01*\r
+X54381Y110426D02*Y110046D01*\r
+Y110426D02*X54572Y110617D01*\r
+X54953D01*\r
+X55143Y110426D01*\r
+X54381Y110236D02*X55143D01*\r
+Y110426D02*Y110236D01*\r
+X55601Y110808D02*X55791D01*\r
+X55601Y110426D02*X55791D01*\r
+X56934Y111379D02*Y109855D01*\r
+X57506Y110426D01*\r
+X58077Y109855D01*\r
+Y111379D02*Y109855D01*\r
+X58725D02*X59296D01*\r
+X58534Y110046D02*X58725Y109855D01*\r
+X58534Y110426D02*Y110046D01*\r
+Y110426D02*X58725Y110617D01*\r
+X59106D01*\r
+X59296Y110426D01*\r
+X58534Y110236D02*X59296D01*\r
+Y110426D02*Y110236D01*\r
+X60516Y111379D02*Y109855D01*\r
+X60325D02*X60516Y110046D01*\r
+X59944Y109855D02*X60325D01*\r
+X59754Y110046D02*X59944Y109855D01*\r
+X59754Y110426D02*Y110046D01*\r
+Y110426D02*X59944Y110617D01*\r
+X60325D01*\r
+X60516Y110426D01*\r
+X61849Y109855D02*X62230D01*\r
+X62040Y111379D02*Y109855D01*\r
+X61659Y110998D02*X62040Y111379D01*\r
+X62687D02*X63449D01*\r
+X62687D02*Y110617D01*\r
+X62878Y110808D01*\r
+X63259D01*\r
+X63449Y110617D01*\r
+Y110046D01*\r
+X63259Y109855D02*X63449Y110046D01*\r
+X62878Y109855D02*X63259D01*\r
+X62687Y110046D02*X62878Y109855D01*\r
+X64592Y111379D02*X65164D01*\r
+Y110046D01*\r
+X64973Y109855D02*X65164Y110046D01*\r
+X64783Y109855D02*X64973D01*\r
+X64592Y110046D02*X64783Y109855D01*\r
+X65621Y110617D02*Y110046D01*\r
+X65811Y109855D01*\r
+X66192D01*\r
+X66383Y110046D01*\r
+Y110617D02*Y110046D01*\r
+X66840Y111379D02*Y110046D01*\r
+X67031Y109855D01*\r
+X68097Y111188D02*X68288Y111379D01*\r
+X68859D01*\r
+X69050Y111188D01*\r
+Y110808D01*\r
+X68097Y109855D02*X69050Y110808D01*\r
+X68097Y109855D02*X69050D01*\r
+X69507Y110046D02*X69698Y109855D01*\r
+X69507Y111188D02*Y110046D01*\r
+Y111188D02*X69698Y111379D01*\r
+X70079D01*\r
+X70269Y111188D01*\r
+Y110046D01*\r
+X70079Y109855D02*X70269Y110046D01*\r
+X69698Y109855D02*X70079D01*\r
+X69507Y110236D02*X70269Y110998D01*\r
+X70917Y109855D02*X71298D01*\r
+X71107Y111379D02*Y109855D01*\r
+X70726Y110998D02*X71107Y111379D01*\r
+X71755D02*X72517D01*\r
+X71755D02*Y110617D01*\r
+X71946Y110808D01*\r
+X72327D01*\r
+X72517Y110617D01*\r
+Y110046D01*\r
+X72327Y109855D02*X72517Y110046D01*\r
+X71946Y109855D02*X72327D01*\r
+X71755Y110046D02*X71946Y109855D01*\r
+X73660Y110046D02*X73851Y109855D01*\r
+X73660Y111188D02*Y110046D01*\r
+Y111188D02*X73851Y111379D01*\r
+X74232D01*\r
+X74422Y111188D01*\r
+Y110046D01*\r
+X74232Y109855D02*X74422Y110046D01*\r
+X73851Y109855D02*X74232D01*\r
+X73660Y110236D02*X74422Y110998D01*\r
+X74879Y109855D02*X75832Y110808D01*\r
+Y111379D02*Y110808D01*\r
+X74879Y111379D02*X75832D01*\r
+X76289Y110808D02*X76479D01*\r
+X76289Y110426D02*X76479D01*\r
+X77127Y109855D02*X77508D01*\r
+X77318Y111379D02*Y109855D01*\r
+X76937Y110998D02*X77318Y111379D01*\r
+X77965Y110046D02*X78156Y109855D01*\r
+X77965Y111188D02*Y110046D01*\r
+Y111188D02*X78156Y111379D01*\r
+X78537D01*\r
+X78727Y111188D01*\r
+Y110046D01*\r
+X78537Y109855D02*X78727Y110046D01*\r
+X78156Y109855D02*X78537D01*\r
+X77965Y110236D02*X78727Y110998D01*\r
+X79185Y110808D02*X79375D01*\r
+X79185Y110426D02*X79375D01*\r
+X80023Y109855D02*X80404D01*\r
+X80213Y111379D02*Y109855D01*\r
+X79832Y110998D02*X80213Y111379D01*\r
+X80861Y109855D02*X81623Y110617D01*\r
+Y111188D02*Y110617D01*\r
+X81432Y111379D02*X81623Y111188D01*\r
+X81051Y111379D02*X81432D01*\r
+X80861Y111188D02*X81051Y111379D01*\r
+X80861Y111188D02*Y110808D01*\r
+X81051Y110617D01*\r
+X81623D01*\r
+X82956Y111379D02*Y109855D01*\r
+X82766Y111379D02*X83528D01*\r
+X83718Y111188D01*\r
+Y110808D01*\r
+X83528Y110617D02*X83718Y110808D01*\r
+X82956Y110617D02*X83528D01*\r
+X84176Y111379D02*Y109855D01*\r
+Y111379D02*X84747Y110808D01*\r
+X85319Y111379D01*\r
+Y109855D01*\r
+X87224Y111379D02*X87414Y111188D01*\r
+X86652Y111379D02*X87224D01*\r
+X86462Y111188D02*X86652Y111379D01*\r
+X86462Y111188D02*Y110046D01*\r
+X86652Y109855D01*\r
+X87224D01*\r
+X87414Y110046D01*\r
+Y110426D02*Y110046D01*\r
+X87224Y110617D02*X87414Y110426D01*\r
+X86843Y110617D02*X87224D01*\r
+X87871Y111379D02*Y109855D01*\r
+Y111379D02*X88443Y110808D01*\r
+X89014Y111379D01*\r
+Y109855D01*\r
+X89472Y111379D02*X90234D01*\r
+X89853D02*Y109855D01*\r
+X91377Y111379D02*Y110046D01*\r
+X91567Y109855D01*\r
+X91948D01*\r
+X92139Y110046D01*\r
+Y111379D02*Y110046D01*\r
+X92596Y111379D02*X93358D01*\r
+X92977D02*Y109855D01*\r
+X94005D02*X94577D01*\r
+X93815Y110046D02*X94005Y109855D01*\r
+X93815Y111188D02*Y110046D01*\r
+Y111188D02*X94005Y111379D01*\r
+X94577D01*\r
+X50800Y114998D02*Y113665D01*\r
+Y114998D02*X50990Y115189D01*\r
+X51562D01*\r
+X51752Y114998D01*\r
+Y113665D01*\r
+X50800Y114427D02*X51752D01*\r
+X52210D02*Y113856D01*\r
+X52400Y113665D01*\r
+X52781D01*\r
+X52972Y113856D01*\r
+Y114427D02*Y113856D01*\r
+X53619Y115189D02*Y113856D01*\r
+X53810Y113665D01*\r
+X53429Y114618D02*X53810D01*\r
+X54191Y115189D02*Y113665D01*\r
+Y114236D02*X54381Y114427D01*\r
+X54762D01*\r
+X54953Y114236D01*\r
+Y113665D01*\r
+X55410Y114236D02*Y113856D01*\r
+Y114236D02*X55601Y114427D01*\r
+X55982D01*\r
+X56172Y114236D01*\r
+Y113856D01*\r
+X55982Y113665D02*X56172Y113856D01*\r
+X55601Y113665D02*X55982D01*\r
+X55410Y113856D02*X55601Y113665D01*\r
+X56820Y114236D02*Y113665D01*\r
+Y114236D02*X57010Y114427D01*\r
+X57391D01*\r
+X56629D02*X56820Y114236D01*\r
+X57849Y114618D02*X58039D01*\r
+X57849Y114236D02*X58039D01*\r
+X59182Y115189D02*Y113665D01*\r
+X59754Y114236D01*\r
+X60325Y113665D01*\r
+Y115189D02*Y113665D01*\r
+X61354Y114427D02*X61544Y114236D01*\r
+X60973Y114427D02*X61354D01*\r
+X60782Y114236D02*X60973Y114427D01*\r
+X60782Y114236D02*Y113856D01*\r
+X60973Y113665D01*\r
+X61544Y114427D02*Y113856D01*\r
+X61735Y113665D01*\r
+X60973D02*X61354D01*\r
+X61544Y113856D01*\r
+X62192Y115189D02*Y113856D01*\r
+X62382Y113665D01*\r
+X62954Y115189D02*Y113856D01*\r
+X63144Y113665D01*\r
+X62763Y114618D02*X63144D01*\r
+X63716Y113665D02*X64287D01*\r
+X63525Y113856D02*X63716Y113665D01*\r
+X63525Y114236D02*Y113856D01*\r
+Y114236D02*X63716Y114427D01*\r
+X64097D01*\r
+X64287Y114236D01*\r
+X63525Y114046D02*X64287D01*\r
+Y114236D02*Y114046D01*\r
+X64935Y114236D02*Y113665D01*\r
+Y114236D02*X65126Y114427D01*\r
+X65507D01*\r
+X64745D02*X64935Y114236D01*\r
+X66650Y115189D02*Y113665D01*\r
+Y115189D02*X67412D01*\r
+X66650Y114427D02*X67221D01*\r
+X68059Y113665D02*X68631D01*\r
+X67869Y113856D02*X68059Y113665D01*\r
+X67869Y114236D02*Y113856D01*\r
+Y114236D02*X68059Y114427D01*\r
+X68440D01*\r
+X68631Y114236D01*\r
+X67869Y114046D02*X68631D01*\r
+Y114236D02*Y114046D01*\r
+X69279Y115189D02*Y113856D01*\r
+X69469Y113665D01*\r
+X69088Y114618D02*X69469D01*\r
+X70041Y115189D02*Y113856D01*\r
+X70231Y113665D01*\r
+X69850Y114618D02*X70231D01*\r
+X70803Y113665D02*X71374D01*\r
+X70612Y113856D02*X70803Y113665D01*\r
+X70612Y114236D02*Y113856D01*\r
+Y114236D02*X70803Y114427D01*\r
+X71184D01*\r
+X71374Y114236D01*\r
+X70612Y114046D02*X71374D01*\r
+Y114236D02*Y114046D01*\r
+X72022Y114236D02*Y113665D01*\r
+Y114236D02*X72212Y114427D01*\r
+X72593D01*\r
+X71831D02*X72022Y114236D01*\r
+X73736Y115189D02*Y113665D01*\r
+X74498D01*\r
+X75527Y114427D02*X75717Y114236D01*\r
+X75146Y114427D02*X75527D01*\r
+X74955Y114236D02*X75146Y114427D01*\r
+X74955Y114236D02*Y113856D01*\r
+X75146Y113665D01*\r
+X75717Y114427D02*Y113856D01*\r
+X75908Y113665D01*\r
+X75146D02*X75527D01*\r
+X75717Y113856D01*\r
+X76937Y114427D02*X77127Y114236D01*\r
+X76556Y114427D02*X76937D01*\r
+X76365Y114236D02*X76556Y114427D01*\r
+X76365Y114236D02*Y113856D01*\r
+X76556Y113665D01*\r
+X76937D01*\r
+X77127Y113856D01*\r
+X76365Y113284D02*X76556Y113094D01*\r
+X76937D01*\r
+X77127Y113284D01*\r
+Y114427D02*Y113284D01*\r
+X77775Y113665D02*X78346D01*\r
+X77584Y113856D02*X77775Y113665D01*\r
+X77584Y114236D02*Y113856D01*\r
+Y114236D02*X77775Y114427D01*\r
+X78156D01*\r
+X78346Y114236D01*\r
+X77584Y114046D02*X78346D01*\r
+Y114236D02*Y114046D01*\r
+X78994Y113665D02*X79566D01*\r
+X79756Y113856D01*\r
+X79566Y114046D02*X79756Y113856D01*\r
+X78994Y114046D02*X79566D01*\r
+X78804Y114236D02*X78994Y114046D01*\r
+X78804Y114236D02*X78994Y114427D01*\r
+X79566D01*\r
+X79756Y114236D01*\r
+X78804Y113856D02*X78994Y113665D01*\r
+X50800Y118999D02*X51562D01*\r
+X51181D02*Y117475D01*\r
+X52019Y118618D02*Y118428D01*\r
+Y118046D02*Y117475D01*\r
+X52591Y118999D02*Y117666D01*\r
+X52781Y117475D01*\r
+X52400Y118428D02*X52781D01*\r
+X53162Y118999D02*Y117666D01*\r
+X53353Y117475D01*\r
+X53924D02*X54496D01*\r
+X53734Y117666D02*X53924Y117475D01*\r
+X53734Y118046D02*Y117666D01*\r
+Y118046D02*X53924Y118237D01*\r
+X54305D01*\r
+X54496Y118046D01*\r
+X53734Y117856D02*X54496D01*\r
+Y118046D02*Y117856D01*\r
+X54953Y118428D02*X55143D01*\r
+X54953Y118046D02*X55143D01*\r
+X56286Y117666D02*X56477Y117475D01*\r
+X56286Y118808D02*X56477Y118999D01*\r
+X56286Y118808D02*Y117666D01*\r
+X56934Y118237D02*Y117666D01*\r
+X57125Y117475D01*\r
+X57506D01*\r
+X57696Y117666D01*\r
+Y118237D02*Y117666D01*\r
+X58344Y118046D02*Y117475D01*\r
+Y118046D02*X58534Y118237D01*\r
+X58725D01*\r
+X58915Y118046D01*\r
+Y117475D01*\r
+X58153Y118237D02*X58344Y118046D01*\r
+X59373Y118999D02*Y117475D01*\r
+Y118046D02*X59944Y117475D01*\r
+X59373Y118046D02*X59754Y118428D01*\r
+X60592Y118046D02*Y117475D01*\r
+Y118046D02*X60782Y118237D01*\r
+X60973D01*\r
+X61163Y118046D01*\r
+Y117475D01*\r
+X60401Y118237D02*X60592Y118046D01*\r
+X61620D02*Y117666D01*\r
+Y118046D02*X61811Y118237D01*\r
+X62192D01*\r
+X62382Y118046D01*\r
+Y117666D01*\r
+X62192Y117475D02*X62382Y117666D01*\r
+X61811Y117475D02*X62192D01*\r
+X61620Y117666D02*X61811Y117475D01*\r
+X62840Y118237D02*Y117666D01*\r
+X63030Y117475D01*\r
+X63221D01*\r
+X63411Y117666D01*\r
+Y118237D02*Y117666D01*\r
+X63602Y117475D01*\r
+X63792D01*\r
+X63983Y117666D01*\r
+Y118237D02*Y117666D01*\r
+X64630Y118046D02*Y117475D01*\r
+Y118046D02*X64821Y118237D01*\r
+X65011D01*\r
+X65202Y118046D01*\r
+Y117475D01*\r
+X64440Y118237D02*X64630Y118046D01*\r
+X65659Y118999D02*X65850Y118808D01*\r
+Y117666D01*\r
+X65659Y117475D02*X65850Y117666D01*\r
+X66993Y118237D02*X67755D01*\r
+X68898Y118999D02*Y117475D01*\r
+Y118999D02*X69660D01*\r
+X68898Y118237D02*X69469D01*\r
+X70688D02*X70879Y118046D01*\r
+X70307Y118237D02*X70688D01*\r
+X70117Y118046D02*X70307Y118237D01*\r
+X70117Y118046D02*Y117666D01*\r
+X70307Y117475D01*\r
+X70879Y118237D02*Y117666D01*\r
+X71069Y117475D01*\r
+X70307D02*X70688D01*\r
+X70879Y117666D01*\r
+X71526Y118999D02*Y117475D01*\r
+Y117666D02*X71717Y117475D01*\r
+X72098D01*\r
+X72288Y117666D01*\r
+Y118046D02*Y117666D01*\r
+X72098Y118237D02*X72288Y118046D01*\r
+X71717Y118237D02*X72098D01*\r
+X71526Y118046D02*X71717Y118237D01*\r
+X72936Y118046D02*Y117475D01*\r
+Y118046D02*X73127Y118237D01*\r
+X73508D01*\r
+X72746D02*X72936Y118046D01*\r
+X73965Y118618D02*Y118428D01*\r
+Y118046D02*Y117475D01*\r
+X74536Y118237D02*X75108D01*\r
+X74346Y118046D02*X74536Y118237D01*\r
+X74346Y118046D02*Y117666D01*\r
+X74536Y117475D01*\r
+X75108D01*\r
+X76137Y118237D02*X76327Y118046D01*\r
+X75756Y118237D02*X76137D01*\r
+X75565Y118046D02*X75756Y118237D01*\r
+X75565Y118046D02*Y117666D01*\r
+X75756Y117475D01*\r
+X76327Y118237D02*Y117666D01*\r
+X76518Y117475D01*\r
+X75756D02*X76137D01*\r
+X76327Y117666D01*\r
+X77165Y118999D02*Y117666D01*\r
+X77356Y117475D01*\r
+X76975Y118428D02*X77356D01*\r
+X77737Y118618D02*Y118428D01*\r
+Y118046D02*Y117475D01*\r
+X78118Y118046D02*Y117666D01*\r
+Y118046D02*X78308Y118237D01*\r
+X78689D01*\r
+X78880Y118046D01*\r
+Y117666D01*\r
+X78689Y117475D02*X78880Y117666D01*\r
+X78308Y117475D02*X78689D01*\r
+X78118Y117666D02*X78308Y117475D01*\r
+X79527Y118046D02*Y117475D01*\r
+Y118046D02*X79718Y118237D01*\r
+X79908D01*\r
+X80099Y118046D01*\r
+Y117475D01*\r
+X79337Y118237D02*X79527Y118046D01*\r
+X81432Y118999D02*Y117475D01*\r
+X82004Y118999D02*X82194Y118808D01*\r
+Y117666D01*\r
+X82004Y117475D02*X82194Y117666D01*\r
+X81242Y117475D02*X82004D01*\r
+X81242Y118999D02*X82004D01*\r
+X82842Y118046D02*Y117475D01*\r
+Y118046D02*X83033Y118237D01*\r
+X83414D01*\r
+X82652D02*X82842Y118046D01*\r
+X84442Y118237D02*X84633Y118046D01*\r
+X84061Y118237D02*X84442D01*\r
+X83871Y118046D02*X84061Y118237D01*\r
+X83871Y118046D02*Y117666D01*\r
+X84061Y117475D01*\r
+X84633Y118237D02*Y117666D01*\r
+X84823Y117475D01*\r
+X84061D02*X84442D01*\r
+X84633Y117666D01*\r
+X85281Y118237D02*Y117666D01*\r
+X85471Y117475D01*\r
+X85662D01*\r
+X85852Y117666D01*\r
+Y118237D02*Y117666D01*\r
+X86043Y117475D01*\r
+X86233D01*\r
+X86424Y117666D01*\r
+Y118237D02*Y117666D01*\r
+X86881Y118618D02*Y118428D01*\r
+Y118046D02*Y117475D01*\r
+X87452Y118046D02*Y117475D01*\r
+Y118046D02*X87643Y118237D01*\r
+X87833D01*\r
+X88024Y118046D01*\r
+Y117475D01*\r
+X87262Y118237D02*X87452Y118046D01*\r
+X89052Y118237D02*X89243Y118046D01*\r
+X88671Y118237D02*X89052D01*\r
+X88481Y118046D02*X88671Y118237D01*\r
+X88481Y118046D02*Y117666D01*\r
+X88671Y117475D01*\r
+X89052D01*\r
+X89243Y117666D01*\r
+X88481Y117094D02*X88671Y116904D01*\r
+X89052D01*\r
+X89243Y117094D01*\r
+Y118237D02*Y117094D01*\r
M02*\r
--- /dev/null
+/* Made with PCB Nelma export HID *//* Wed Jul 15 16:10:34 2015
+ */
+/* **** Nets **** */
+
+net +5V {
+ objects = {
+ "C3-1-bottom",
+ "C3-1-top",
+ "C4-2-bottom",
+ "C4-2-top",
+ "C7-1-bottom",
+ "C7-1-top",
+ "C8-2-bottom",
+ "C8-2-top",
+ "C9-2-bottom",
+ "C9-2-top",
+ "C10-1-bottom",
+ "C10-1-top",
+ "J2-A6-bottom",
+ "J2-A6-top",
+ "J2-A28-bottom",
+ "J2-A28-top",
+ "J2-B28-bottom",
+ "J2-B28-top",
+ "J2-C5-bottom",
+ "J2-C5-top",
+ "J2-C28-bottom",
+ "J2-C28-top",
+ "R1-2-bottom",
+ "R1-2-top",
+ "R3-2-bottom",
+ "R3-2-top",
+ "R4-2-bottom",
+ "R4-2-top",
+ "R5-2-bottom",
+ "R5-2-top",
+ "R11-2-bottom",
+ "R11-2-top",
+ "U1-3-bottom",
+ "U1-3-top",
+ "U2-8-bottom",
+ "U2-8-top",
+ "U4-2-bottom",
+ "U4-2-top",
+ "U5-7-bottom",
+ "U5-7-top",
+ "U5-8-bottom",
+ "U5-8-top",
+ "U6-16-bottom",
+ "U6-16-top",
+ "U7-13-bottom",
+ "U7-13-top",
+ "U7-20-bottom",
+ "U7-20-top",
+ "U7-28-bottom",
+ "U7-28-top"
+ }
+}
+net +12V {
+ objects = {
+ "C1-1-bottom",
+ "C1-1-top",
+ "C2-2-bottom",
+ "C2-2-top",
+ "C16-1-bottom",
+ "C16-1-top",
+ "C17-2-bottom",
+ "C17-2-top",
+ "C19-1-bottom",
+ "C19-1-top",
+ "C20-2-bottom",
+ "C20-2-top",
+ "C23-1-bottom",
+ "C23-1-top",
+ "C24-2-bottom",
+ "C24-2-top",
+ "D5-1-bottom",
+ "D5-1-top",
+ "D6-1-bottom",
+ "D6-1-top",
+ "J2-A29-bottom",
+ "J2-A29-top",
+ "J2-B29-bottom",
+ "J2-B29-top",
+ "J2-C29-bottom",
+ "J2-C29-top",
+ "U1-1-bottom",
+ "U1-1-top",
+ "U8-1-bottom",
+ "U8-1-top",
+ "U8-8-bottom",
+ "U8-8-top",
+ "U9-1-bottom",
+ "U9-1-top",
+ "U10-1-bottom",
+ "U10-1-top"
+ }
+}
+net /RELEASE {
+ objects = {
+ "D4-1-bottom",
+ "D4-1-top",
+ "J2-A23-bottom",
+ "J2-A23-top",
+ "J2-B23-bottom",
+ "J2-B23-top",
+ "J2-C23-bottom",
+ "J2-C23-top",
+ "Q1-2-bottom",
+ "Q1-2-top"
+ }
+}
+net /SD {
+ objects = {
+ "U7-22-bottom",
+ "U7-22-top",
+ "U9-3-bottom",
+ "U9-3-top",
+ "U10-3-bottom",
+ "U10-3-top"
+ }
+}
+net BRAKE {
+ objects = {
+ "U7-4-bottom",
+ "U7-4-top",
+ "U8-2-bottom",
+ "U8-2-top"
+ }
+}
+net CANH {
+ objects = {
+ "J2-C2-bottom",
+ "J2-C2-top",
+ "U3-7-bottom",
+ "U3-7-top"
+ }
+}
+net CANL {
+ objects = {
+ "J2-A1-bottom",
+ "J2-A1-top",
+ "U3-6-bottom",
+ "U3-6-top"
+ }
+}
+net CHA {
+ objects = {
+ "J2-A5-bottom",
+ "J2-A5-top",
+ "R5-1-bottom",
+ "R5-1-top",
+ "U7-6-bottom",
+ "U7-6-top"
+ }
+}
+net CHB {
+ objects = {
+ "J2-C6-bottom",
+ "J2-C6-top",
+ "R4-1-bottom",
+ "R4-1-top",
+ "U7-7-bottom",
+ "U7-7-top"
+ }
+}
+net CLOCK {
+ objects = {
+ "U2-5-bottom",
+ "U2-5-top",
+ "U7-9-bottom",
+ "U7-9-top"
+ }
+}
+net CTS {
+ objects = {
+ "J1-8-bottom",
+ "J1-8-top",
+ "U6-8-bottom",
+ "U6-8-top"
+ }
+}
+net DRVA {
+ objects = {
+ "C26-2-bottom",
+ "C26-2-top",
+ "R6-2-bottom",
+ "R6-2-top",
+ "U7-26-bottom",
+ "U7-26-top",
+ "U9-2-bottom",
+ "U9-2-top"
+ }
+}
+net DRVB {
+ objects = {
+ "C27-2-bottom",
+ "C27-2-top",
+ "R7-2-bottom",
+ "R7-2-top",
+ "U7-25-bottom",
+ "U7-25-top",
+ "U10-2-bottom",
+ "U10-2-top"
+ }
+}
+net GNDCAN {
+ objects = {
+ "C14-1-bottom",
+ "C14-1-top",
+ "C15-1-bottom",
+ "C15-1-top",
+ "J2-B1-bottom",
+ "J2-B1-top",
+ "J2-B2-bottom",
+ "J2-B2-top",
+ "U3-2-bottom",
+ "U3-2-top",
+ "U3-8-bottom",
+ "U3-8-top",
+ "U4-5-bottom",
+ "U4-5-top"
+ }
+}
+net INDEX {
+ objects = {
+ "J2-B7-bottom",
+ "J2-B7-top",
+ "R12-2-bottom",
+ "R12-2-top"
+ }
+}
+net MOTOR+ {
+ objects = {
+ "C21-2-bottom",
+ "C21-2-top",
+ "J2-A25-bottom",
+ "J2-A25-top",
+ "J2-B25-bottom",
+ "J2-B25-top",
+ "J2-C25-bottom",
+ "J2-C25-top",
+ "Q2-3-bottom",
+ "Q2-3-top",
+ "Q3-2-bottom",
+ "Q3-2-top",
+ "U9-11-bottom",
+ "U9-11-top"
+ }
+}
+net MOTOR- {
+ objects = {
+ "C25-2-bottom",
+ "C25-2-top",
+ "J2-A26-bottom",
+ "J2-A26-top",
+ "J2-B26-bottom",
+ "J2-B26-top",
+ "J2-C26-bottom",
+ "J2-C26-top",
+ "Q4-3-bottom",
+ "Q4-3-top",
+ "Q5-2-bottom",
+ "Q5-2-top",
+ "U10-11-bottom",
+ "U10-11-top"
+ }
+}
+net PGND {
+ objects = {
+ "C1-2-bottom",
+ "C1-2-top",
+ "C2-1-bottom",
+ "C2-1-top",
+ "C3-2-bottom",
+ "C3-2-top",
+ "C4-1-bottom",
+ "C4-1-top",
+ "C5-2-bottom",
+ "C5-2-top",
+ "C6-1-bottom",
+ "C6-1-top",
+ "C6-2-bottom",
+ "C6-2-top",
+ "C7-2-bottom",
+ "C7-2-top",
+ "C8-1-bottom",
+ "C8-1-top",
+ "C9-1-bottom",
+ "C9-1-top",
+ "C13-2-bottom",
+ "C13-2-top",
+ "C16-2-bottom",
+ "C16-2-top",
+ "C17-1-bottom",
+ "C17-1-top",
+ "C18-2-bottom",
+ "C18-2-top",
+ "C19-2-bottom",
+ "C19-2-top",
+ "C20-1-bottom",
+ "C20-1-top",
+ "C22-2-bottom",
+ "C22-2-top",
+ "C23-2-bottom",
+ "C23-2-top",
+ "C24-1-bottom",
+ "C24-1-top",
+ "C26-1-bottom",
+ "C26-1-top",
+ "C27-1-bottom",
+ "C27-1-top",
+ "D1-1-bottom",
+ "D1-1-top",
+ "D2-1-bottom",
+ "D2-1-top",
+ "D3-1-bottom",
+ "D3-1-top",
+ "J1-5-bottom",
+ "J1-5-top",
+ "J2-A7-bottom",
+ "J2-A7-top",
+ "J2-A22-bottom",
+ "J2-A22-top",
+ "J2-A27-bottom",
+ "J2-A27-top",
+ "J2-A30-bottom",
+ "J2-A30-top",
+ "J2-A31-bottom",
+ "J2-A31-top",
+ "J2-B5-bottom",
+ "J2-B5-top",
+ "J2-B6-bottom",
+ "J2-B6-top",
+ "J2-B22-bottom",
+ "J2-B22-top",
+ "J2-B27-bottom",
+ "J2-B27-top",
+ "J2-B30-bottom",
+ "J2-B30-top",
+ "J2-B31-bottom",
+ "J2-B31-top",
+ "J2-C22-bottom",
+ "J2-C22-top",
+ "J2-C27-bottom",
+ "J2-C27-top",
+ "J2-C30-bottom",
+ "J2-C30-top",
+ "J2-C31-bottom",
+ "J2-C31-top",
+ "Q1-3-bottom",
+ "Q1-3-top",
+ "Q3-3-bottom",
+ "Q3-3-top",
+ "Q5-3-bottom",
+ "Q5-3-top",
+ "R13-1-bottom",
+ "R13-1-top",
+ "R14-1-bottom",
+ "R14-1-top",
+ "R15-1-bottom",
+ "R15-1-top",
+ "S1-1-bottom",
+ "S1-1-top",
+ "U1-2-bottom",
+ "U1-2-top",
+ "U2-4-bottom",
+ "U2-4-top",
+ "U5-5-bottom",
+ "U5-5-top",
+ "U6-15-bottom",
+ "U6-15-top",
+ "U7-8-bottom",
+ "U7-8-top",
+ "U7-19-bottom",
+ "U7-19-top",
+ "U7-27-bottom",
+ "U7-27-top",
+ "U8-4-bottom",
+ "U8-4-top",
+ "U8-5-bottom",
+ "U8-5-top",
+ "U9-5-bottom",
+ "U9-5-top",
+ "U9-6-bottom",
+ "U9-6-top",
+ "U10-5-bottom",
+ "U10-5-top",
+ "U10-6-bottom",
+ "U10-6-top"
+ }
+}
+net REFPOS {
+ objects = {
+ "R12-1-bottom",
+ "R12-1-top",
+ "R13-2-bottom",
+ "R13-2-top",
+ "U7-5-bottom",
+ "U7-5-top"
+ }
+}
+net RTS {
+ objects = {
+ "J1-7-bottom",
+ "J1-7-top",
+ "U6-7-bottom",
+ "U6-7-top"
+ }
+}
+net RX {
+ objects = {
+ "J1-2-bottom",
+ "J1-2-top",
+ "U6-13-bottom",
+ "U6-13-top"
+ }
+}
+net TX {
+ objects = {
+ "J1-3-bottom",
+ "J1-3-top",
+ "U6-14-bottom",
+ "U6-14-top"
+ }
+}
+net unnamed_net1 {
+ objects = {
+ "D1-2-bottom",
+ "D1-2-top",
+ "R1-1-bottom",
+ "R1-1-top"
+ }
+}
+net unnamed_net2 {
+ objects = {
+ "R2-2-bottom",
+ "R2-2-top",
+ "U7-1-bottom",
+ "U7-1-top"
+ }
+}
+net unnamed_net3 {
+ objects = {
+ "C5-1-bottom",
+ "C5-1-top",
+ "R2-1-bottom",
+ "R2-1-top",
+ "R3-1-bottom",
+ "R3-1-top",
+ "S1-2-bottom",
+ "S1-2-top"
+ }
+}
+net unnamed_net4 {
+ objects = {
+ "D2-2-bottom",
+ "D2-2-top",
+ "R6-1-bottom",
+ "R6-1-top"
+ }
+}
+net unnamed_net5 {
+ objects = {
+ "D3-2-bottom",
+ "D3-2-top",
+ "R7-1-bottom",
+ "R7-1-top"
+ }
+}
+net unnamed_net6 {
+ objects = {
+ "R8-1-bottom",
+ "R8-1-top",
+ "U3-1-bottom",
+ "U3-1-top",
+ "U4-6-bottom",
+ "U4-6-top"
+ }
+}
+net unnamed_net7 {
+ objects = {
+ "R10-2-bottom",
+ "R10-2-top",
+ "U3-4-bottom",
+ "U3-4-top"
+ }
+}
+net unnamed_net8 {
+ objects = {
+ "R9-2-bottom",
+ "R9-2-top",
+ "U4-3-bottom",
+ "U4-3-top"
+ }
+}
+net unnamed_net9 {
+ objects = {
+ "R9-1-bottom",
+ "R9-1-top",
+ "U7-17-bottom",
+ "U7-17-top"
+ }
+}
+net unnamed_net10 {
+ objects = {
+ "R10-1-bottom",
+ "R10-1-top",
+ "U5-3-bottom",
+ "U5-3-top"
+ }
+}
+net unnamed_net11 {
+ objects = {
+ "R11-1-bottom",
+ "R11-1-top",
+ "U5-6-bottom",
+ "U5-6-top",
+ "U7-18-bottom",
+ "U7-18-top"
+ }
+}
+net unnamed_net12 {
+ objects = {
+ "C10-2-bottom",
+ "C10-2-top",
+ "U6-2-bottom",
+ "U6-2-top"
+ }
+}
+net unnamed_net13 {
+ objects = {
+ "C11-1-bottom",
+ "C11-1-top",
+ "U6-3-bottom",
+ "U6-3-top"
+ }
+}
+net unnamed_net14 {
+ objects = {
+ "C12-2-bottom",
+ "C12-2-top",
+ "U6-4-bottom",
+ "U6-4-top"
+ }
+}
+net unnamed_net15 {
+ objects = {
+ "C12-1-bottom",
+ "C12-1-top",
+ "U6-5-bottom",
+ "U6-5-top"
+ }
+}
+net unnamed_net16 {
+ objects = {
+ "C13-1-bottom",
+ "C13-1-top",
+ "U6-6-bottom",
+ "U6-6-top"
+ }
+}
+net unnamed_net17 {
+ objects = {
+ "U6-9-bottom",
+ "U6-9-top",
+ "U7-3-bottom",
+ "U7-3-top"
+ }
+}
+net unnamed_net18 {
+ objects = {
+ "U6-10-bottom",
+ "U6-10-top",
+ "U7-2-bottom",
+ "U7-2-top"
+ }
+}
+net unnamed_net19 {
+ objects = {
+ "U6-11-bottom",
+ "U6-11-top",
+ "U7-11-bottom",
+ "U7-11-top"
+ }
+}
+net unnamed_net20 {
+ objects = {
+ "U6-12-bottom",
+ "U6-12-top",
+ "U7-12-bottom",
+ "U7-12-top"
+ }
+}
+net unnamed_net21 {
+ objects = {
+ "C11-2-bottom",
+ "C11-2-top",
+ "U6-1-bottom",
+ "U6-1-top"
+ }
+}
+net unnamed_net22 {
+ objects = {
+ "Q1-1-bottom",
+ "Q1-1-top",
+ "U8-6-bottom",
+ "U8-6-top",
+ "U8-7-bottom",
+ "U8-7-top"
+ }
+}
+net unnamed_net23 {
+ objects = {
+ "D7-1-bottom",
+ "D7-1-top",
+ "Q2-1-bottom",
+ "Q2-1-top",
+ "R16-2-bottom",
+ "R16-2-top"
+ }
+}
+net unnamed_net24 {
+ objects = {
+ "D8-1-bottom",
+ "D8-1-top",
+ "Q3-1-bottom",
+ "Q3-1-top",
+ "R17-2-bottom",
+ "R17-2-top"
+ }
+}
+net unnamed_net25 {
+ objects = {
+ "D9-1-bottom",
+ "D9-1-top",
+ "Q4-1-bottom",
+ "Q4-1-top",
+ "R18-1-bottom",
+ "R18-1-top"
+ }
+}
+net unnamed_net26 {
+ objects = {
+ "D10-1-bottom",
+ "D10-1-top",
+ "Q5-1-bottom",
+ "Q5-1-top",
+ "R19-1-bottom",
+ "R19-1-top"
+ }
+}
+net unnamed_net27 {
+ objects = {
+ "C21-1-bottom",
+ "C21-1-top",
+ "D5-2-bottom",
+ "D5-2-top",
+ "U9-13-bottom",
+ "U9-13-top"
+ }
+}
+net unnamed_net28 {
+ objects = {
+ "C25-1-bottom",
+ "C25-1-top",
+ "D6-2-bottom",
+ "D6-2-top",
+ "U10-13-bottom",
+ "U10-13-top"
+ }
+}
+net unnamed_net29 {
+ objects = {
+ "R15-2-bottom",
+ "R15-2-top",
+ "U10-4-bottom",
+ "U10-4-top"
+ }
+}
+net unnamed_net30 {
+ objects = {
+ "R14-2-bottom",
+ "R14-2-top",
+ "U9-4-bottom",
+ "U9-4-top"
+ }
+}
+net unnamed_net31 {
+ objects = {
+ "D8-2-bottom",
+ "D8-2-top",
+ "R17-1-bottom",
+ "R17-1-top",
+ "U9-7-bottom",
+ "U9-7-top"
+ }
+}
+net unnamed_net32 {
+ objects = {
+ "D7-2-bottom",
+ "D7-2-top",
+ "R16-1-bottom",
+ "R16-1-top",
+ "U9-12-bottom",
+ "U9-12-top"
+ }
+}
+net unnamed_net33 {
+ objects = {
+ "D10-2-bottom",
+ "D10-2-top",
+ "R19-2-bottom",
+ "R19-2-top",
+ "U10-7-bottom",
+ "U10-7-top"
+ }
+}
+net unnamed_net34 {
+ objects = {
+ "D9-2-bottom",
+ "D9-2-top",
+ "R18-2-bottom",
+ "R18-2-top",
+ "U10-12-bottom",
+ "U10-12-top"
+ }
+}
+net VCAN {
+ objects = {
+ "C14-2-bottom",
+ "C14-2-top",
+ "C15-2-bottom",
+ "C15-2-top",
+ "J2-A2-bottom",
+ "J2-A2-top",
+ "J2-C1-bottom",
+ "J2-C1-top",
+ "R8-2-bottom",
+ "R8-2-top",
+ "U3-3-bottom",
+ "U3-3-top",
+ "U4-7-bottom",
+ "U4-7-top",
+ "U4-8-bottom",
+ "U4-8-top",
+ "U5-2-bottom",
+ "U5-2-top"
+ }
+}
+net Vpp {
+ objects = {
+ "C18-1-bottom",
+ "C18-1-top",
+ "C22-1-bottom",
+ "C22-1-top",
+ "D4-2-bottom",
+ "D4-2-top",
+ "J2-A24-bottom",
+ "J2-A24-top",
+ "J2-A32-bottom",
+ "J2-A32-top",
+ "J2-B24-bottom",
+ "J2-B24-top",
+ "J2-B32-bottom",
+ "J2-B32-top",
+ "J2-C7-bottom",
+ "J2-C7-top",
+ "J2-C24-bottom",
+ "J2-C24-top",
+ "J2-C32-bottom",
+ "J2-C32-top",
+ "Q2-2-bottom",
+ "Q2-2-top",
+ "Q4-2-bottom",
+ "Q4-2-top"
+ }
+}
+
+/* **** Objects **** */
+
+object C3-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 615, 350 }
+}
+object C3-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 615, 350 }
+}
+object C4-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 552, 380 }
+}
+object C4-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 552, 380 }
+}
+object C7-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 280, 75 }
+}
+object C7-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 280, 75 }
+}
+object C8-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 459, 105 }
+}
+object C8-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 459, 105 }
+}
+object C9-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 377, 30 }
+}
+object C9-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 377, 30 }
+}
+object C10-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 315, 45 }
+}
+object C10-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 315, 45 }
+}
+object J2-A6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 97 }
+}
+object J2-A6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 97 }
+}
+object J2-A28-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 317 }
+}
+object J2-A28-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 317 }
+}
+object J2-B28-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 317 }
+}
+object J2-B28-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 317 }
+}
+object J2-C5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 87 }
+}
+object J2-C5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 87 }
+}
+object J2-C28-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 317 }
+}
+object J2-C28-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 317 }
+}
+object R1-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 345, 80 }
+}
+object R1-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 345, 80 }
+}
+object R3-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 400, 150 }
+}
+object R3-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 400, 150 }
+}
+object R4-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 575, 150 }
+}
+object R4-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 575, 150 }
+}
+object R5-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 517, 150 }
+}
+object R5-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 517, 150 }
+}
+object R11-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 425, 40 }
+}
+object R11-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 425, 40 }
+}
+object U1-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 330, 360 }
+}
+object U1-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 330, 360 }
+}
+object U2-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 372, 100 }
+}
+object U2-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 372, 100 }
+}
+object U4-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 492, 75 }
+}
+object U4-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 492, 75 }
+}
+object U5-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 382, 45 }
+}
+object U5-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 382, 45 }
+}
+object U5-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 372, 45 }
+}
+object U5-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 372, 45 }
+}
+object U6-16-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 280, 100 }
+}
+object U6-16-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 280, 100 }
+}
+object U7-13-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 602, 130 }
+}
+object U7-13-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 602, 130 }
+}
+object U7-20-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 562, 100 }
+}
+object U7-20-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 562, 100 }
+}
+object U7-28-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 482, 100 }
+}
+object U7-28-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 482, 100 }
+}
+object C1-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 615, 370 }
+}
+object C1-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 615, 370 }
+}
+object C2-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 360 }
+}
+object C2-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 360 }
+}
+object C16-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 192, 75 }
+}
+object C16-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 192, 75 }
+}
+object C17-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 229, 30 }
+}
+object C17-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 229, 30 }
+}
+object C19-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 242, 150 }
+}
+object C19-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 242, 150 }
+}
+object C20-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 125 }
+}
+object C20-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 125 }
+}
+object C23-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 242, 275 }
+}
+object C23-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 242, 275 }
+}
+object C24-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 345 }
+}
+object C24-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 345 }
+}
+object D5-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 175 }
+}
+object D5-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 175 }
+}
+object D6-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 300 }
+}
+object D6-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 300 }
+}
+object J2-A29-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 327 }
+}
+object J2-A29-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 327 }
+}
+object J2-B29-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 327 }
+}
+object J2-B29-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 327 }
+}
+object J2-C29-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 327 }
+}
+object J2-C29-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 327 }
+}
+object U1-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 350, 360 }
+}
+object U1-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 350, 360 }
+}
+object U8-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 225, 75 }
+}
+object U8-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 225, 75 }
+}
+object U8-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 225, 45 }
+}
+object U8-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 225, 45 }
+}
+object U9-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 195, 130 }
+}
+object U9-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 195, 130 }
+}
+object U10-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 195, 350 }
+}
+object U10-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 195, 350 }
+}
+object D4-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 382, 150 }
+}
+object D4-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 382, 150 }
+}
+object J2-A23-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 267 }
+}
+object J2-A23-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 267 }
+}
+object J2-B23-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 267 }
+}
+object J2-B23-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 267 }
+}
+object J2-C23-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 267 }
+}
+object J2-C23-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 267 }
+}
+object Q1-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 467, 360 }
+}
+object Q1-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 467, 360 }
+}
+object U7-22-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 542, 100 }
+}
+object U7-22-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 542, 100 }
+}
+object U9-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 215, 130 }
+}
+object U9-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 215, 130 }
+}
+object U10-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 215, 350 }
+}
+object U10-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 215, 350 }
+}
+object U7-4-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 512, 130 }
+}
+object U7-4-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 512, 130 }
+}
+object U8-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 235, 75 }
+}
+object U8-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 235, 75 }
+}
+object J2-C2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 57 }
+}
+object J2-C2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 57 }
+}
+object U3-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 45 }
+}
+object U3-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 45 }
+}
+object J2-A1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 47 }
+}
+object J2-A1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 47 }
+}
+object U3-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 602, 45 }
+}
+object U3-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 602, 45 }
+}
+object J2-A5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 87 }
+}
+object J2-A5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 87 }
+}
+object R5-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 557, 150 }
+}
+object R5-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 557, 150 }
+}
+object U7-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 532, 130 }
+}
+object U7-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 532, 130 }
+}
+object J2-C6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 97 }
+}
+object J2-C6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 97 }
+}
+object R4-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 615, 150 }
+}
+object R4-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 615, 150 }
+}
+object U7-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 542, 130 }
+}
+object U7-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 542, 130 }
+}
+object U2-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 402, 100 }
+}
+object U2-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 402, 100 }
+}
+object U7-9-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 562, 130 }
+}
+object U7-9-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 562, 130 }
+}
+object J1-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 70, 129 }
+}
+object J1-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 70, 129 }
+}
+object U6-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 350, 130 }
+}
+object U6-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 350, 130 }
+}
+object C26-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 30 }
+}
+object C26-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 30 }
+}
+object R6-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 425, 135 }
+}
+object R6-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 425, 135 }
+}
+object U7-26-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 502, 100 }
+}
+object U7-26-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 502, 100 }
+}
+object U9-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 204, 130 }
+}
+object U9-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 204, 130 }
+}
+object C27-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 52 }
+}
+object C27-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 52 }
+}
+object R7-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 442, 135 }
+}
+object R7-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 442, 135 }
+}
+object U7-25-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 512, 100 }
+}
+object U7-25-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 512, 100 }
+}
+object U10-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 204, 350 }
+}
+object U10-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 204, 350 }
+}
+object C14-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 507, 30 }
+}
+object C14-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 507, 30 }
+}
+object C15-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 607, 30 }
+}
+object C15-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 607, 30 }
+}
+object J2-B1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 47 }
+}
+object J2-B1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 47 }
+}
+object J2-B2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 57 }
+}
+object J2-B2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 57 }
+}
+object U3-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 75 }
+}
+object U3-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 75 }
+}
+object U3-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 582, 45 }
+}
+object U3-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 582, 45 }
+}
+object U4-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 512, 45 }
+}
+object U4-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 512, 45 }
+}
+object J2-B7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 107 }
+}
+object J2-B7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 107 }
+}
+object R12-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 442, 40 }
+}
+object R12-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 442, 40 }
+}
+object C21-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 252, 175 }
+}
+object C21-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 252, 175 }
+}
+object J2-A25-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 287 }
+}
+object J2-A25-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 287 }
+}
+object J2-B25-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 287 }
+}
+object J2-B25-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 287 }
+}
+object J2-C25-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 287 }
+}
+object J2-C25-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 287 }
+}
+object Q2-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 330, 210 }
+}
+object Q2-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 330, 210 }
+}
+object Q3-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 467, 210 }
+}
+object Q3-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 467, 210 }
+}
+object U9-11-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 225, 100 }
+}
+object U9-11-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 225, 100 }
+}
+object C25-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 252, 300 }
+}
+object C25-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 252, 300 }
+}
+object J2-A26-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 297 }
+}
+object J2-A26-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 297 }
+}
+object J2-B26-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 297 }
+}
+object J2-B26-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 297 }
+}
+object J2-C26-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 297 }
+}
+object J2-C26-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 297 }
+}
+object Q4-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 330, 285 }
+}
+object Q4-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 330, 285 }
+}
+object Q5-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 467, 285 }
+}
+object Q5-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 467, 285 }
+}
+object U10-11-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 225, 320 }
+}
+object U10-11-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 225, 320 }
+}
+object C1-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 615, 380 }
+}
+object C1-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 615, 380 }
+}
+object C2-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 380 }
+}
+object C2-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 380 }
+}
+object C3-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 615, 340 }
+}
+object C3-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 615, 340 }
+}
+object C4-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 552, 360 }
+}
+object C4-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 552, 360 }
+}
+object C5-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 320, 75 }
+}
+object C5-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 320, 75 }
+}
+object C6-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 575, 380 }
+}
+object C6-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 575, 380 }
+}
+object C6-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 575, 360 }
+}
+object C6-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 575, 360 }
+}
+object C7-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 290, 75 }
+}
+object C7-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 290, 75 }
+}
+object C8-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 459, 125 }
+}
+object C8-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 459, 125 }
+}
+object C9-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 397, 30 }
+}
+object C9-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 397, 30 }
+}
+object C13-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 280, 50 }
+}
+object C13-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 280, 50 }
+}
+object C16-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 202, 75 }
+}
+object C16-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 202, 75 }
+}
+object C17-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 250, 30 }
+}
+object C17-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 250, 30 }
+}
+object C18-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 202 }
+}
+object C18-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 202 }
+}
+object C19-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 252, 150 }
+}
+object C19-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 252, 150 }
+}
+object C20-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 105 }
+}
+object C20-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 105 }
+}
+object C22-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 300 }
+}
+object C22-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 300 }
+}
+object C23-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 252, 275 }
+}
+object C23-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 252, 275 }
+}
+object C24-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 325 }
+}
+object C24-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 325 }
+}
+object C26-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 197, 30 }
+}
+object C26-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 197, 30 }
+}
+object C27-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 197, 52 }
+}
+object C27-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 197, 52 }
+}
+object D1-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 62, 292 }
+}
+object D1-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 62, 292 }
+}
+object D2-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 62, 254 }
+}
+object D2-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 62, 254 }
+}
+object D3-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 62, 217 }
+}
+object D3-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 62, 217 }
+}
+object J1-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 80, 146 }
+}
+object J1-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 80, 146 }
+}
+object J2-A7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 107 }
+}
+object J2-A7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 107 }
+}
+object J2-A22-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 257 }
+}
+object J2-A22-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 257 }
+}
+object J2-A27-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 307 }
+}
+object J2-A27-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 307 }
+}
+object J2-A30-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 337 }
+}
+object J2-A30-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 337 }
+}
+object J2-A31-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 347 }
+}
+object J2-A31-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 347 }
+}
+object J2-B5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 87 }
+}
+object J2-B5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 87 }
+}
+object J2-B6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 97 }
+}
+object J2-B6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 97 }
+}
+object J2-B22-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 257 }
+}
+object J2-B22-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 257 }
+}
+object J2-B27-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 307 }
+}
+object J2-B27-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 307 }
+}
+object J2-B30-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 337 }
+}
+object J2-B30-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 337 }
+}
+object J2-B31-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 347 }
+}
+object J2-B31-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 347 }
+}
+object J2-C22-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 257 }
+}
+object J2-C22-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 257 }
+}
+object J2-C27-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 307 }
+}
+object J2-C27-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 307 }
+}
+object J2-C30-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 337 }
+}
+object J2-C30-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 337 }
+}
+object J2-C31-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 347 }
+}
+object J2-C31-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 347 }
+}
+object Q1-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 457, 360 }
+}
+object Q1-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 457, 360 }
+}
+object Q3-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 457, 210 }
+}
+object Q3-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 457, 210 }
+}
+object Q5-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 457, 285 }
+}
+object Q5-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 457, 285 }
+}
+object R13-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 459, 40 }
+}
+object R13-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 459, 40 }
+}
+object R14-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 150 }
+}
+object R14-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 150 }
+}
+object R15-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 275 }
+}
+object R15-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 275 }
+}
+object S1-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 55, 320 }
+}
+object S1-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 55, 320 }
+}
+object U1-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 340, 360 }
+}
+object U1-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 340, 360 }
+}
+object U2-4-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 402, 130 }
+}
+object U2-4-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 402, 130 }
+}
+object U5-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 402, 45 }
+}
+object U5-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 402, 45 }
+}
+object U6-15-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 290, 100 }
+}
+object U6-15-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 290, 100 }
+}
+object U7-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 552, 130 }
+}
+object U7-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 552, 130 }
+}
+object U7-19-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 572, 100 }
+}
+object U7-19-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 572, 100 }
+}
+object U7-27-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 492, 100 }
+}
+object U7-27-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 492, 100 }
+}
+object U8-4-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 254, 75 }
+}
+object U8-4-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 254, 75 }
+}
+object U8-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 254, 45 }
+}
+object U8-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 254, 45 }
+}
+object U9-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 235, 130 }
+}
+object U9-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 235, 130 }
+}
+object U9-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 245, 130 }
+}
+object U9-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 245, 130 }
+}
+object U10-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 235, 350 }
+}
+object U10-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 235, 350 }
+}
+object U10-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 245, 350 }
+}
+object U10-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 245, 350 }
+}
+object R12-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 442, 80 }
+}
+object R12-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 442, 80 }
+}
+object R13-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 459, 80 }
+}
+object R13-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 459, 80 }
+}
+object U7-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 522, 130 }
+}
+object U7-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 522, 130 }
+}
+object J1-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 70, 118 }
+}
+object J1-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 70, 118 }
+}
+object U6-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 340, 130 }
+}
+object U6-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 340, 130 }
+}
+object J1-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 80, 113 }
+}
+object J1-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 80, 113 }
+}
+object U6-13-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 310, 100 }
+}
+object U6-13-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 310, 100 }
+}
+object J1-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 80, 124 }
+}
+object J1-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 80, 124 }
+}
+object U6-14-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 300, 100 }
+}
+object U6-14-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 300, 100 }
+}
+object D1-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 62, 282 }
+}
+object D1-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 62, 282 }
+}
+object R1-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 345, 40 }
+}
+object R1-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 345, 40 }
+}
+object R2-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 500, 150 }
+}
+object R2-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 500, 150 }
+}
+object U7-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 482, 130 }
+}
+object U7-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 482, 130 }
+}
+object C5-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 310, 75 }
+}
+object C5-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 310, 75 }
+}
+object R2-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 459, 150 }
+}
+object R2-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 459, 150 }
+}
+object R3-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 440, 150 }
+}
+object R3-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 440, 150 }
+}
+object S1-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 55, 337 }
+}
+object S1-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 55, 337 }
+}
+object D2-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 62, 245 }
+}
+object D2-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 62, 245 }
+}
+object R6-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 425, 95 }
+}
+object R6-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 425, 95 }
+}
+object D3-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 62, 207 }
+}
+object D3-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 62, 207 }
+}
+object R7-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 442, 95 }
+}
+object R7-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 442, 95 }
+}
+object R8-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 547, 80 }
+}
+object R8-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 547, 80 }
+}
+object U3-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 582, 75 }
+}
+object U3-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 582, 75 }
+}
+object U4-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 502, 45 }
+}
+object U4-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 502, 45 }
+}
+object R10-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 532, 80 }
+}
+object R10-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 532, 80 }
+}
+object U3-4-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 612, 75 }
+}
+object U3-4-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 612, 75 }
+}
+object R9-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 562, 40 }
+}
+object R9-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 562, 40 }
+}
+object U4-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 502, 75 }
+}
+object U4-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 502, 75 }
+}
+object R9-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 562, 80 }
+}
+object R9-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 562, 80 }
+}
+object U7-17-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 100 }
+}
+object U7-17-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 100 }
+}
+object R10-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 532, 40 }
+}
+object R10-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 532, 40 }
+}
+object U5-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 392, 75 }
+}
+object U5-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 392, 75 }
+}
+object R11-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 425, 80 }
+}
+object R11-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 425, 80 }
+}
+object U5-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 392, 45 }
+}
+object U5-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 392, 45 }
+}
+object U7-18-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 582, 100 }
+}
+object U7-18-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 582, 100 }
+}
+object C10-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 315, 55 }
+}
+object C10-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 315, 55 }
+}
+object U6-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 290, 130 }
+}
+object U6-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 290, 130 }
+}
+object C11-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 287, 150 }
+}
+object C11-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 287, 150 }
+}
+object U6-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 300, 130 }
+}
+object U6-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 300, 130 }
+}
+object C12-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 310, 150 }
+}
+object C12-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 310, 150 }
+}
+object U6-4-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 310, 130 }
+}
+object U6-4-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 310, 130 }
+}
+object C12-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 320, 150 }
+}
+object C12-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 320, 150 }
+}
+object U6-5-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 320, 130 }
+}
+object U6-5-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 320, 130 }
+}
+object C13-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 290, 50 }
+}
+object C13-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 290, 50 }
+}
+object U6-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 330, 130 }
+}
+object U6-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 330, 130 }
+}
+object U6-9-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 350, 100 }
+}
+object U6-9-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 350, 100 }
+}
+object U7-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 502, 130 }
+}
+object U7-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 502, 130 }
+}
+object U6-10-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 340, 100 }
+}
+object U6-10-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 340, 100 }
+}
+object U7-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 492, 130 }
+}
+object U7-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 492, 130 }
+}
+object U6-11-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 330, 100 }
+}
+object U6-11-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 330, 100 }
+}
+object U7-11-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 582, 130 }
+}
+object U7-11-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 582, 130 }
+}
+object U6-12-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 320, 100 }
+}
+object U6-12-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 320, 100 }
+}
+object U7-12-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 592, 130 }
+}
+object U7-12-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 592, 130 }
+}
+object C11-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 277, 150 }
+}
+object C11-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 277, 150 }
+}
+object U6-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 280, 130 }
+}
+object U6-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 280, 130 }
+}
+object Q1-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 477, 360 }
+}
+object Q1-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 477, 360 }
+}
+object U8-6-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 245, 45 }
+}
+object U8-6-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 245, 45 }
+}
+object U8-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 235, 45 }
+}
+object U8-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 235, 45 }
+}
+object D7-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 215 }
+}
+object D7-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 215 }
+}
+object Q2-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 350, 210 }
+}
+object Q2-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 350, 210 }
+}
+object R16-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 195 }
+}
+object R16-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 195 }
+}
+object D8-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 272, 215 }
+}
+object D8-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 272, 215 }
+}
+object Q3-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 477, 210 }
+}
+object Q3-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 477, 210 }
+}
+object R17-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 272, 195 }
+}
+object R17-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 272, 195 }
+}
+object D9-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 254 }
+}
+object D9-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 254 }
+}
+object Q4-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 350, 285 }
+}
+object Q4-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 350, 285 }
+}
+object R18-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 235 }
+}
+object R18-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 235 }
+}
+object D10-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 272, 254 }
+}
+object D10-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 272, 254 }
+}
+object Q5-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 477, 285 }
+}
+object Q5-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 477, 285 }
+}
+object R19-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 272, 235 }
+}
+object R19-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 272, 235 }
+}
+object C21-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 242, 175 }
+}
+object C21-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 242, 175 }
+}
+object D5-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 175 }
+}
+object D5-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 175 }
+}
+object U9-13-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 204, 100 }
+}
+object U9-13-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 204, 100 }
+}
+object C25-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 242, 300 }
+}
+object C25-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 242, 300 }
+}
+object D6-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 217, 300 }
+}
+object D6-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 217, 300 }
+}
+object U10-13-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 204, 320 }
+}
+object U10-13-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 204, 320 }
+}
+object R15-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 275 }
+}
+object R15-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 275 }
+}
+object U10-4-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 225, 350 }
+}
+object U10-4-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 225, 350 }
+}
+object R14-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 150 }
+}
+object R14-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 150 }
+}
+object U9-4-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 225, 130 }
+}
+object U9-4-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 225, 130 }
+}
+object D8-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 232, 215 }
+}
+object D8-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 232, 215 }
+}
+object R17-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 232, 195 }
+}
+object R17-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 232, 195 }
+}
+object U9-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 254, 130 }
+}
+object U9-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 254, 130 }
+}
+object D7-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 215 }
+}
+object D7-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 215 }
+}
+object R16-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 195 }
+}
+object R16-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 195 }
+}
+object U9-12-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 215, 100 }
+}
+object U9-12-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 215, 100 }
+}
+object D10-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 232, 254 }
+}
+object D10-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 232, 254 }
+}
+object R19-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 232, 235 }
+}
+object R19-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 232, 235 }
+}
+object U10-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 254, 350 }
+}
+object U10-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 254, 350 }
+}
+object D9-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 254 }
+}
+object D9-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 254 }
+}
+object R18-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 177, 235 }
+}
+object R18-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 177, 235 }
+}
+object U10-12-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 215, 320 }
+}
+object U10-12-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 215, 320 }
+}
+object C14-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 487, 30 }
+}
+object C14-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 487, 30 }
+}
+object C15-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 587, 30 }
+}
+object C15-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 587, 30 }
+}
+object J2-A2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 57 }
+}
+object J2-A2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 57 }
+}
+object J2-C1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 47 }
+}
+object J2-C1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 47 }
+}
+object R8-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 547, 40 }
+}
+object R8-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 547, 40 }
+}
+object U3-3-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 602, 75 }
+}
+object U3-3-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 602, 75 }
+}
+object U4-7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 492, 45 }
+}
+object U4-7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 492, 45 }
+}
+object U4-8-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 482, 45 }
+}
+object U4-8-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 482, 45 }
+}
+object U5-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 382, 75 }
+}
+object U5-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 382, 75 }
+}
+object C18-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 552, 202 }
+}
+object C18-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 552, 202 }
+}
+object C22-1-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 552, 300 }
+}
+object C22-1-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 552, 300 }
+}
+object D4-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 342, 150 }
+}
+object D4-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 342, 150 }
+}
+object J2-A24-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 277 }
+}
+object J2-A24-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 277 }
+}
+object J2-A32-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 652, 357 }
+}
+object J2-A32-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 652, 357 }
+}
+object J2-B24-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 277 }
+}
+object J2-B24-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 277 }
+}
+object J2-B32-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 642, 357 }
+}
+object J2-B32-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 642, 357 }
+}
+object J2-C7-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 107 }
+}
+object J2-C7-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 107 }
+}
+object J2-C24-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 277 }
+}
+object J2-C24-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 277 }
+}
+object J2-C32-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 632, 357 }
+}
+object J2-C32-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 632, 357 }
+}
+object Q2-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 340, 210 }
+}
+object Q2-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 340, 210 }
+}
+object Q4-2-bottom {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.bottom.png"
+ file-pos = { 340, 285 }
+}
+object Q4-2-top {
+ position = { 0, 0 }
+ material = "copper"
+ type = "image"
+ role = "net"
+ file = "aic.nelma.top.png"
+ file-pos = { 340, 285 }
+}
+
+/* **** Layers **** */
+
+layer air-top {
+ height = 40
+ z-order = 1
+ material = "air"
+}
+layer air-bottom {
+ height = 40
+ z-order = 1000
+ material = "air"
+}
+layer bottom {
+ height = 1
+ z-order = 10
+ material = "air"
+ objects = {
+ "C3-1-bottom",
+ "C4-2-bottom",
+ "C7-1-bottom",
+ "C8-2-bottom",
+ "C9-2-bottom",
+ "C10-1-bottom",
+ "J2-A6-bottom",
+ "J2-A28-bottom",
+ "J2-B28-bottom",
+ "J2-C5-bottom",
+ "J2-C28-bottom",
+ "R1-2-bottom",
+ "R3-2-bottom",
+ "R4-2-bottom",
+ "R5-2-bottom",
+ "R11-2-bottom",
+ "U1-3-bottom",
+ "U2-8-bottom",
+ "U4-2-bottom",
+ "U5-7-bottom",
+ "U5-8-bottom",
+ "U6-16-bottom",
+ "U7-13-bottom",
+ "U7-20-bottom",
+ "U7-28-bottom",
+ "C1-1-bottom",
+ "C2-2-bottom",
+ "C16-1-bottom",
+ "C17-2-bottom",
+ "C19-1-bottom",
+ "C20-2-bottom",
+ "C23-1-bottom",
+ "C24-2-bottom",
+ "D5-1-bottom",
+ "D6-1-bottom",
+ "J2-A29-bottom",
+ "J2-B29-bottom",
+ "J2-C29-bottom",
+ "U1-1-bottom",
+ "U8-1-bottom",
+ "U8-8-bottom",
+ "U9-1-bottom",
+ "U10-1-bottom",
+ "D4-1-bottom",
+ "J2-A23-bottom",
+ "J2-B23-bottom",
+ "J2-C23-bottom",
+ "Q1-2-bottom",
+ "U7-22-bottom",
+ "U9-3-bottom",
+ "U10-3-bottom",
+ "U7-4-bottom",
+ "U8-2-bottom",
+ "J2-C2-bottom",
+ "U3-7-bottom",
+ "J2-A1-bottom",
+ "U3-6-bottom",
+ "J2-A5-bottom",
+ "R5-1-bottom",
+ "U7-6-bottom",
+ "J2-C6-bottom",
+ "R4-1-bottom",
+ "U7-7-bottom",
+ "U2-5-bottom",
+ "U7-9-bottom",
+ "J1-8-bottom",
+ "U6-8-bottom",
+ "C26-2-bottom",
+ "R6-2-bottom",
+ "U7-26-bottom",
+ "U9-2-bottom",
+ "C27-2-bottom",
+ "R7-2-bottom",
+ "U7-25-bottom",
+ "U10-2-bottom",
+ "C14-1-bottom",
+ "C15-1-bottom",
+ "J2-B1-bottom",
+ "J2-B2-bottom",
+ "U3-2-bottom",
+ "U3-8-bottom",
+ "U4-5-bottom",
+ "J2-B7-bottom",
+ "R12-2-bottom",
+ "C21-2-bottom",
+ "J2-A25-bottom",
+ "J2-B25-bottom",
+ "J2-C25-bottom",
+ "Q2-3-bottom",
+ "Q3-2-bottom",
+ "U9-11-bottom",
+ "C25-2-bottom",
+ "J2-A26-bottom",
+ "J2-B26-bottom",
+ "J2-C26-bottom",
+ "Q4-3-bottom",
+ "Q5-2-bottom",
+ "U10-11-bottom",
+ "C1-2-bottom",
+ "C2-1-bottom",
+ "C3-2-bottom",
+ "C4-1-bottom",
+ "C5-2-bottom",
+ "C6-1-bottom",
+ "C6-2-bottom",
+ "C7-2-bottom",
+ "C8-1-bottom",
+ "C9-1-bottom",
+ "C13-2-bottom",
+ "C16-2-bottom",
+ "C17-1-bottom",
+ "C18-2-bottom",
+ "C19-2-bottom",
+ "C20-1-bottom",
+ "C22-2-bottom",
+ "C23-2-bottom",
+ "C24-1-bottom",
+ "C26-1-bottom",
+ "C27-1-bottom",
+ "D1-1-bottom",
+ "D2-1-bottom",
+ "D3-1-bottom",
+ "J1-5-bottom",
+ "J2-A7-bottom",
+ "J2-A22-bottom",
+ "J2-A27-bottom",
+ "J2-A30-bottom",
+ "J2-A31-bottom",
+ "J2-B5-bottom",
+ "J2-B6-bottom",
+ "J2-B22-bottom",
+ "J2-B27-bottom",
+ "J2-B30-bottom",
+ "J2-B31-bottom",
+ "J2-C22-bottom",
+ "J2-C27-bottom",
+ "J2-C30-bottom",
+ "J2-C31-bottom",
+ "Q1-3-bottom",
+ "Q3-3-bottom",
+ "Q5-3-bottom",
+ "R13-1-bottom",
+ "R14-1-bottom",
+ "R15-1-bottom",
+ "S1-1-bottom",
+ "U1-2-bottom",
+ "U2-4-bottom",
+ "U5-5-bottom",
+ "U6-15-bottom",
+ "U7-8-bottom",
+ "U7-19-bottom",
+ "U7-27-bottom",
+ "U8-4-bottom",
+ "U8-5-bottom",
+ "U9-5-bottom",
+ "U9-6-bottom",
+ "U10-5-bottom",
+ "U10-6-bottom",
+ "R12-1-bottom",
+ "R13-2-bottom",
+ "U7-5-bottom",
+ "J1-7-bottom",
+ "U6-7-bottom",
+ "J1-2-bottom",
+ "U6-13-bottom",
+ "J1-3-bottom",
+ "U6-14-bottom",
+ "D1-2-bottom",
+ "R1-1-bottom",
+ "R2-2-bottom",
+ "U7-1-bottom",
+ "C5-1-bottom",
+ "R2-1-bottom",
+ "R3-1-bottom",
+ "S1-2-bottom",
+ "D2-2-bottom",
+ "R6-1-bottom",
+ "D3-2-bottom",
+ "R7-1-bottom",
+ "R8-1-bottom",
+ "U3-1-bottom",
+ "U4-6-bottom",
+ "R10-2-bottom",
+ "U3-4-bottom",
+ "R9-2-bottom",
+ "U4-3-bottom",
+ "R9-1-bottom",
+ "U7-17-bottom",
+ "R10-1-bottom",
+ "U5-3-bottom",
+ "R11-1-bottom",
+ "U5-6-bottom",
+ "U7-18-bottom",
+ "C10-2-bottom",
+ "U6-2-bottom",
+ "C11-1-bottom",
+ "U6-3-bottom",
+ "C12-2-bottom",
+ "U6-4-bottom",
+ "C12-1-bottom",
+ "U6-5-bottom",
+ "C13-1-bottom",
+ "U6-6-bottom",
+ "U6-9-bottom",
+ "U7-3-bottom",
+ "U6-10-bottom",
+ "U7-2-bottom",
+ "U6-11-bottom",
+ "U7-11-bottom",
+ "U6-12-bottom",
+ "U7-12-bottom",
+ "C11-2-bottom",
+ "U6-1-bottom",
+ "Q1-1-bottom",
+ "U8-6-bottom",
+ "U8-7-bottom",
+ "D7-1-bottom",
+ "Q2-1-bottom",
+ "R16-2-bottom",
+ "D8-1-bottom",
+ "Q3-1-bottom",
+ "R17-2-bottom",
+ "D9-1-bottom",
+ "Q4-1-bottom",
+ "R18-1-bottom",
+ "D10-1-bottom",
+ "Q5-1-bottom",
+ "R19-1-bottom",
+ "C21-1-bottom",
+ "D5-2-bottom",
+ "U9-13-bottom",
+ "C25-1-bottom",
+ "D6-2-bottom",
+ "U10-13-bottom",
+ "R15-2-bottom",
+ "U10-4-bottom",
+ "R14-2-bottom",
+ "U9-4-bottom",
+ "D8-2-bottom",
+ "R17-1-bottom",
+ "U9-7-bottom",
+ "D7-2-bottom",
+ "R16-1-bottom",
+ "U9-12-bottom",
+ "D10-2-bottom",
+ "R19-2-bottom",
+ "U10-7-bottom",
+ "D9-2-bottom",
+ "R18-2-bottom",
+ "U10-12-bottom",
+ "C14-2-bottom",
+ "C15-2-bottom",
+ "J2-A2-bottom",
+ "J2-C1-bottom",
+ "R8-2-bottom",
+ "U3-3-bottom",
+ "U4-7-bottom",
+ "U4-8-bottom",
+ "U5-2-bottom",
+ "C18-1-bottom",
+ "C22-1-bottom",
+ "D4-2-bottom",
+ "J2-A24-bottom",
+ "J2-A32-bottom",
+ "J2-B24-bottom",
+ "J2-B32-bottom",
+ "J2-C7-bottom",
+ "J2-C24-bottom",
+ "J2-C32-bottom",
+ "Q2-2-bottom",
+ "Q4-2-bottom"
+ }
+}
+layer substrate-11 {
+ height = 20
+ z-order = 11
+ material = "composite"
+}
+layer top {
+ height = 1
+ z-order = 12
+ material = "air"
+ objects = {
+ "C3-1-top",
+ "C4-2-top",
+ "C7-1-top",
+ "C8-2-top",
+ "C9-2-top",
+ "C10-1-top",
+ "J2-A6-top",
+ "J2-A28-top",
+ "J2-B28-top",
+ "J2-C5-top",
+ "J2-C28-top",
+ "R1-2-top",
+ "R3-2-top",
+ "R4-2-top",
+ "R5-2-top",
+ "R11-2-top",
+ "U1-3-top",
+ "U2-8-top",
+ "U4-2-top",
+ "U5-7-top",
+ "U5-8-top",
+ "U6-16-top",
+ "U7-13-top",
+ "U7-20-top",
+ "U7-28-top",
+ "C1-1-top",
+ "C2-2-top",
+ "C16-1-top",
+ "C17-2-top",
+ "C19-1-top",
+ "C20-2-top",
+ "C23-1-top",
+ "C24-2-top",
+ "D5-1-top",
+ "D6-1-top",
+ "J2-A29-top",
+ "J2-B29-top",
+ "J2-C29-top",
+ "U1-1-top",
+ "U8-1-top",
+ "U8-8-top",
+ "U9-1-top",
+ "U10-1-top",
+ "D4-1-top",
+ "J2-A23-top",
+ "J2-B23-top",
+ "J2-C23-top",
+ "Q1-2-top",
+ "U7-22-top",
+ "U9-3-top",
+ "U10-3-top",
+ "U7-4-top",
+ "U8-2-top",
+ "J2-C2-top",
+ "U3-7-top",
+ "J2-A1-top",
+ "U3-6-top",
+ "J2-A5-top",
+ "R5-1-top",
+ "U7-6-top",
+ "J2-C6-top",
+ "R4-1-top",
+ "U7-7-top",
+ "U2-5-top",
+ "U7-9-top",
+ "J1-8-top",
+ "U6-8-top",
+ "C26-2-top",
+ "R6-2-top",
+ "U7-26-top",
+ "U9-2-top",
+ "C27-2-top",
+ "R7-2-top",
+ "U7-25-top",
+ "U10-2-top",
+ "C14-1-top",
+ "C15-1-top",
+ "J2-B1-top",
+ "J2-B2-top",
+ "U3-2-top",
+ "U3-8-top",
+ "U4-5-top",
+ "J2-B7-top",
+ "R12-2-top",
+ "C21-2-top",
+ "J2-A25-top",
+ "J2-B25-top",
+ "J2-C25-top",
+ "Q2-3-top",
+ "Q3-2-top",
+ "U9-11-top",
+ "C25-2-top",
+ "J2-A26-top",
+ "J2-B26-top",
+ "J2-C26-top",
+ "Q4-3-top",
+ "Q5-2-top",
+ "U10-11-top",
+ "C1-2-top",
+ "C2-1-top",
+ "C3-2-top",
+ "C4-1-top",
+ "C5-2-top",
+ "C6-1-top",
+ "C6-2-top",
+ "C7-2-top",
+ "C8-1-top",
+ "C9-1-top",
+ "C13-2-top",
+ "C16-2-top",
+ "C17-1-top",
+ "C18-2-top",
+ "C19-2-top",
+ "C20-1-top",
+ "C22-2-top",
+ "C23-2-top",
+ "C24-1-top",
+ "C26-1-top",
+ "C27-1-top",
+ "D1-1-top",
+ "D2-1-top",
+ "D3-1-top",
+ "J1-5-top",
+ "J2-A7-top",
+ "J2-A22-top",
+ "J2-A27-top",
+ "J2-A30-top",
+ "J2-A31-top",
+ "J2-B5-top",
+ "J2-B6-top",
+ "J2-B22-top",
+ "J2-B27-top",
+ "J2-B30-top",
+ "J2-B31-top",
+ "J2-C22-top",
+ "J2-C27-top",
+ "J2-C30-top",
+ "J2-C31-top",
+ "Q1-3-top",
+ "Q3-3-top",
+ "Q5-3-top",
+ "R13-1-top",
+ "R14-1-top",
+ "R15-1-top",
+ "S1-1-top",
+ "U1-2-top",
+ "U2-4-top",
+ "U5-5-top",
+ "U6-15-top",
+ "U7-8-top",
+ "U7-19-top",
+ "U7-27-top",
+ "U8-4-top",
+ "U8-5-top",
+ "U9-5-top",
+ "U9-6-top",
+ "U10-5-top",
+ "U10-6-top",
+ "R12-1-top",
+ "R13-2-top",
+ "U7-5-top",
+ "J1-7-top",
+ "U6-7-top",
+ "J1-2-top",
+ "U6-13-top",
+ "J1-3-top",
+ "U6-14-top",
+ "D1-2-top",
+ "R1-1-top",
+ "R2-2-top",
+ "U7-1-top",
+ "C5-1-top",
+ "R2-1-top",
+ "R3-1-top",
+ "S1-2-top",
+ "D2-2-top",
+ "R6-1-top",
+ "D3-2-top",
+ "R7-1-top",
+ "R8-1-top",
+ "U3-1-top",
+ "U4-6-top",
+ "R10-2-top",
+ "U3-4-top",
+ "R9-2-top",
+ "U4-3-top",
+ "R9-1-top",
+ "U7-17-top",
+ "R10-1-top",
+ "U5-3-top",
+ "R11-1-top",
+ "U5-6-top",
+ "U7-18-top",
+ "C10-2-top",
+ "U6-2-top",
+ "C11-1-top",
+ "U6-3-top",
+ "C12-2-top",
+ "U6-4-top",
+ "C12-1-top",
+ "U6-5-top",
+ "C13-1-top",
+ "U6-6-top",
+ "U6-9-top",
+ "U7-3-top",
+ "U6-10-top",
+ "U7-2-top",
+ "U6-11-top",
+ "U7-11-top",
+ "U6-12-top",
+ "U7-12-top",
+ "C11-2-top",
+ "U6-1-top",
+ "Q1-1-top",
+ "U8-6-top",
+ "U8-7-top",
+ "D7-1-top",
+ "Q2-1-top",
+ "R16-2-top",
+ "D8-1-top",
+ "Q3-1-top",
+ "R17-2-top",
+ "D9-1-top",
+ "Q4-1-top",
+ "R18-1-top",
+ "D10-1-top",
+ "Q5-1-top",
+ "R19-1-top",
+ "C21-1-top",
+ "D5-2-top",
+ "U9-13-top",
+ "C25-1-top",
+ "D6-2-top",
+ "U10-13-top",
+ "R15-2-top",
+ "U10-4-top",
+ "R14-2-top",
+ "U9-4-top",
+ "D8-2-top",
+ "R17-1-top",
+ "U9-7-top",
+ "D7-2-top",
+ "R16-1-top",
+ "U9-12-top",
+ "D10-2-top",
+ "R19-2-top",
+ "U10-7-top",
+ "D9-2-top",
+ "R18-2-top",
+ "U10-12-top",
+ "C14-2-top",
+ "C15-2-top",
+ "J2-A2-top",
+ "J2-C1-top",
+ "R8-2-top",
+ "U3-3-top",
+ "U4-7-top",
+ "U4-8-top",
+ "U5-2-top",
+ "C18-1-top",
+ "C22-1-top",
+ "D4-2-top",
+ "J2-A24-top",
+ "J2-A32-top",
+ "J2-B24-top",
+ "J2-B32-top",
+ "J2-C7-top",
+ "J2-C24-top",
+ "J2-C32-top",
+ "Q2-2-top",
+ "Q4-2-top"
+ }
+}
+
+/* **** Materials **** */
+
+material copper {
+ type = "metal"
+ permittivity = 8.850000e-12
+ conductivity = 0.0
+ permeability = 0.0
+}
+material air {
+ type = "dielectric"
+ permittivity = 8.850000e-12
+ conductivity = 0.0
+ permeability = 0.0
+}
+material composite {
+ type = "dielectric"
+ permittivity = 3.540000e-11
+ conductivity = 0.0
+ permeability = 0.0
+}
+
+/* **** Space **** */
+
+space pcb {
+ step = { 2.540000e-04, 2.540000e-04, 1.000000e-04 }
+ layers = {
+ "air-top",
+ "air-bottom",
+ "bottom",
+ "substrate-11",
+ "top"
+ }
+}
M48\r
-INCH\r
-T14C0.120\r
-T18C0.030\r
-T20C0.055\r
-T21C0.020\r
-T25C0.060\r
-T26C0.080\r
-T29C0.028\r
-T30C0.035\r
-T31C0.042\r
-T32C0.043\r
-T33C0.052\r
+METRIC,000.000\r
+T69C0.508\r
+T68C1.397\r
+T67C1.524\r
+T66C3.048\r
+T65C1.321\r
+T64C1.092\r
+T63C1.067\r
+T62C0.762\r
+T61C2.032\r
+T60C0.889\r
+T59C0.711\r
%\r
-T21\r
-X036500Y009250\r
-X031500Y013000\r
-X036000Y018250\r
-X035250Y029250\r
-X035000Y028750\r
-X031500Y027500\r
-X032500Y025000\r
-X010250Y028000\r
-X010250Y029750\r
-X008750Y027500\r
-X009250Y027000\r
-X016000Y022250\r
-X021000Y037000\r
-X030500Y027000\r
-X028500Y030250\r
-X015500Y004250\r
-X020500Y005250\r
-X021500Y004750\r
-X022500Y004250\r
-X015500Y013500\r
-X016500Y005250\r
-X016000Y004750\r
-X028250Y016500\r
-X024750Y039250\r
-X020000Y026000\r
-X020000Y028750\r
-X022500Y022250\r
-X022500Y024000\r
-X031500Y026750\r
-X029500Y027500\r
-X039750Y026750\r
-X036750Y031750\r
-X036000Y026000\r
-X036500Y025500\r
-X041750Y040000\r
-X035250Y024000\r
-X034500Y026750\r
-X033250Y023500\r
-X031000Y031750\r
-X037750Y029750\r
-X033500Y037250\r
-X050750Y027000\r
-X049250Y023500\r
-X048250Y026000\r
-X050750Y029500\r
-X059250Y029500\r
-X048000Y030000\r
-X044250Y029500\r
-X053250Y035250\r
-X037750Y032750\r
-X037250Y026000\r
-X054750Y035750\r
-X056250Y034750\r
-X052750Y032500\r
-X053250Y032250\r
-X056500Y025000\r
-X054500Y026500\r
-X055750Y023750\r
-X061250Y032250\r
-X044250Y034500\r
-X047750Y038750\r
-X044250Y039250\r
-X043500Y036500\r
-X042750Y039250\r
-X040250Y039250\r
-X041750Y037000\r
-X042500Y029500\r
-X047750Y029500\r
-X047750Y030500\r
-X046000Y034000\r
-T29\r
-X022500Y033500\r
-X023500Y033500\r
-X037250Y033500\r
-X038250Y033500\r
-X039250Y033500\r
-X040250Y033500\r
-X025500Y036500\r
-X024500Y036500\r
-X023500Y036500\r
-X022500Y036500\r
-X019750Y038000\r
-X017750Y038000\r
-X019750Y035750\r
-X017750Y035750\r
-X034000Y028000\r
-X035000Y028000\r
-X035000Y031000\r
-X034000Y031000\r
-X037250Y028000\r
-X038250Y028000\r
-X039250Y028000\r
-X040250Y028000\r
-X040250Y031000\r
-X039250Y031000\r
-X038250Y031000\r
-X037250Y031000\r
-X039750Y038000\r
-X037750Y038000\r
-X040250Y036500\r
-X039250Y036500\r
-X038250Y036500\r
-X037250Y036500\r
-X050750Y038000\r
-X048750Y038000\r
-X051250Y036500\r
-X050250Y036500\r
-X049250Y036500\r
-X048250Y036500\r
-X046000Y028500\r
-X046000Y030500\r
-X048250Y028000\r
-X049250Y028000\r
-X050250Y028000\r
-X051250Y028000\r
-X052250Y028000\r
-X053250Y028000\r
-X054250Y028000\r
-X055250Y028000\r
-X056250Y028000\r
-X057250Y028000\r
-X058250Y028000\r
-X058250Y031000\r
-X057250Y031000\r
-X056250Y031000\r
-X055250Y031000\r
-X054250Y031000\r
-X053250Y031000\r
-X052250Y031000\r
-X051250Y031000\r
-X050250Y031000\r
-X049250Y031000\r
-X048250Y031000\r
-X051250Y033500\r
-X048250Y033500\r
-X049250Y033500\r
-X050250Y033500\r
-X059250Y028000\r
-X059250Y031000\r
-X060250Y028000\r
-X061250Y028000\r
-X061250Y031000\r
-X060250Y031000\r
-X060750Y038000\r
-X058750Y038000\r
-X061250Y036500\r
-X060250Y036500\r
-X059250Y036500\r
-X058250Y036500\r
-X058250Y033500\r
-X059250Y033500\r
-X060250Y033500\r
-X061250Y033500\r
-X019500Y006000\r
-X020500Y006000\r
-X021500Y006000\r
-X022500Y006000\r
-X023500Y006000\r
-X024500Y006000\r
-X025500Y006000\r
-X025500Y009000\r
-X024500Y009000\r
-X024500Y033500\r
-X025500Y033500\r
-X033000Y028000\r
-X033000Y031000\r
-X032000Y031000\r
-X031000Y031000\r
-X030000Y031000\r
-X029000Y031000\r
-X025000Y038000\r
-X023000Y038000\r
-X017750Y030500\r
-X017750Y028500\r
-X019500Y028000\r
-X020500Y028000\r
-X021500Y028000\r
-X022500Y028000\r
-X023500Y028000\r
-X021500Y031000\r
-X020500Y031000\r
-X019500Y031000\r
-X028000Y028000\r
-X029000Y028000\r
-X030000Y028000\r
-X031000Y028000\r
-X032000Y028000\r
-X024500Y028000\r
-X025500Y028000\r
-X028000Y031000\r
-X025500Y031000\r
-X024500Y031000\r
-X023500Y031000\r
-X023500Y009000\r
-X022500Y031000\r
-X022500Y009000\r
-X021500Y009000\r
-X020500Y009000\r
-X019500Y009000\r
-X017750Y008500\r
-X017750Y006500\r
-X059250Y003000\r
-X059250Y005000\r
-X055250Y005000\r
-X055250Y003000\r
-X057500Y003000\r
-X057500Y005000\r
-T18\r
-X065250Y036250\r
-X064250Y036250\r
-X065250Y035250\r
-X065250Y034250\r
-X064250Y035250\r
-X064250Y034250\r
-X063250Y036250\r
-X063250Y035250\r
-X063250Y034250\r
-X065250Y031250\r
-X065250Y030250\r
-X065250Y029250\r
-X064250Y029250\r
-X063250Y029250\r
-X065250Y028250\r
-X064250Y028250\r
-X063250Y028250\r
-X064250Y031250\r
-X064250Y030250\r
-X063250Y031250\r
-X063250Y030250\r
-X065250Y033250\r
-X065250Y032250\r
-X064250Y033250\r
-X064250Y032250\r
-X063250Y033250\r
-X063250Y032250\r
-X021750Y026000\r
-X021750Y017500\r
-X017750Y026000\r
-X017750Y017500\r
-X023250Y017500\r
-X023250Y021500\r
-X027250Y017500\r
-X027250Y021500\r
-X017750Y021500\r
-X021750Y021500\r
-X021750Y013500\r
-X017750Y013500\r
-X063250Y026250\r
-X063250Y025250\r
-X065250Y027250\r
-X064250Y027250\r
-X063250Y027250\r
-X065250Y026250\r
-X064250Y026250\r
-X064250Y025250\r
-X064250Y024250\r
-X065250Y025250\r
-X065250Y024250\r
-X063250Y024250\r
-X063250Y023250\r
-X063250Y022250\r
-X063250Y021250\r
-X063250Y020250\r
-X065250Y006250\r
-X065250Y005250\r
-X064250Y006250\r
-X064250Y005250\r
-X063250Y006250\r
-X063250Y005250\r
-X065250Y023250\r
-X065250Y022250\r
-X065250Y021250\r
-X064250Y023250\r
-X064250Y022250\r
-X064250Y021250\r
-X065250Y020250\r
-X065250Y019250\r
-X065250Y018250\r
-X064250Y020250\r
-X064250Y019250\r
-X063250Y019250\r
-X065250Y016250\r
-X065250Y015250\r
-X065250Y014250\r
-X065250Y013250\r
-X065250Y012250\r
-X065250Y011250\r
-X065250Y010250\r
-X065250Y009250\r
-X065250Y008250\r
-X065250Y007250\r
-X065250Y017250\r
-X064250Y017250\r
-X064250Y018250\r
-X064250Y016250\r
-X064250Y015250\r
-X064250Y014250\r
-X064250Y013250\r
-X064250Y012250\r
-X064250Y011250\r
-X064250Y010250\r
-X064250Y009250\r
-X064250Y008250\r
-X064250Y007250\r
-X063250Y018250\r
-X063250Y017250\r
-X063250Y016250\r
-X063250Y015250\r
-X063250Y014250\r
-X063250Y013250\r
-X063250Y012250\r
-X063250Y011250\r
-X063250Y010250\r
-X063250Y009250\r
-X063250Y008250\r
-X063250Y007250\r
-T30\r
-X029000Y036000\r
-X028000Y036000\r
-X019250Y033500\r
-X020250Y033500\r
-X034500Y037000\r
-X034500Y033000\r
-X031500Y036500\r
-X031500Y035500\r
-X046000Y037000\r
-X042500Y037000\r
-X044250Y037000\r
-X053250Y037000\r
-X042500Y031500\r
-X046000Y033000\r
-X042500Y033000\r
-X044250Y031500\r
-X054750Y033000\r
-X053250Y033000\r
-X044250Y033000\r
-X054750Y037000\r
-X056250Y037000\r
-X056250Y033000\r
-X008000Y030750\r
-X007000Y030210\r
-X008000Y029660\r
-X007000Y029120\r
-X008000Y028570\r
-X007000Y028030\r
-X008000Y027480\r
-X008000Y026390\r
-X007000Y026940\r
-X021750Y023500\r
-X021750Y015500\r
-X017750Y023500\r
-X017750Y015500\r
-X024250Y026000\r
-X024250Y023500\r
-X025250Y023500\r
-X025250Y026000\r
-X032000Y026000\r
-X031000Y026000\r
-X023250Y019500\r
-X023250Y015500\r
-X027250Y019500\r
-X027250Y015500\r
-X028000Y033500\r
-X029000Y033500\r
-X031000Y033500\r
-X032000Y033500\r
-X028750Y026000\r
-X027750Y026000\r
-X024250Y013500\r
-X017750Y019500\r
-X021750Y019500\r
-X021750Y011000\r
-X024250Y011000\r
-X025250Y011000\r
-X025250Y013500\r
-X017750Y011000\r
-X042500Y027500\r
-X044250Y027500\r
-X061500Y026000\r
-X057500Y026000\r
-X055750Y026000\r
-X051750Y026000\r
-X050000Y026000\r
-X034250Y026000\r
-X038250Y026000\r
-X044000Y026000\r
-X040000Y026000\r
-X046000Y026000\r
-X061500Y004000\r
-X061500Y003000\r
-X061500Y006000\r
-X061500Y007000\r
-X036000Y026750\r
-X049750Y004000\r
-X049750Y014250\r
-X054500Y006250\r
-X037250Y004000\r
-X040000Y008500\r
-X038500Y007000\r
-X039250Y007750\r
-X060500Y006000\r
-X055250Y007000\r
-X043250Y006000\r
-X015250Y034750\r
-X016000Y033500\r
-X018750Y030250\r
-X016000Y028500\r
-X015250Y022750\r
-X017750Y024500\r
-X016000Y024500\r
-X018750Y023500\r
-X026250Y030250\r
-X026250Y020750\r
-X029500Y035000\r
-X027000Y026000\r
-X024000Y008000\r
-X022500Y009750\r
-X025250Y012500\r
-X025250Y009750\r
-X019500Y003000\r
-X019000Y009750\r
-X017750Y012500\r
-X021750Y018750\r
-X022500Y011750\r
-X024250Y012500\r
-X019000Y013500\r
-X020750Y015500\r
-X028000Y032250\r
-X027000Y038000\r
-X024250Y024500\r
-X026250Y023500\r
-X027000Y028750\r
-X038750Y026750\r
-X036000Y038000\r
-X030250Y032250\r
-X032750Y038000\r
-X052000Y034000\r
-X038500Y024500\r
-X051750Y024500\r
-X060250Y025250\r
-X061500Y030250\r
-X041000Y034000\r
-X047250Y024500\r
-X040000Y024500\r
-X043250Y022750\r
-X047250Y032250\r
-T31\r
-X047750Y005000\r
-X046750Y005000\r
-X045750Y005000\r
-X035000Y005000\r
-X034000Y005000\r
-X033000Y005000\r
-X047750Y012500\r
-X046750Y012500\r
-X045750Y012500\r
-X035000Y012500\r
-X034000Y012500\r
-X033000Y012500\r
-X035000Y020000\r
-X034000Y020000\r
-X033000Y020000\r
-X005500Y009000\r
-X005500Y007230\r
-X047750Y020000\r
-X046750Y020000\r
-X045750Y020000\r
-T32\r
-X006250Y011750\r
-X006250Y012750\r
-X006250Y015500\r
-X006250Y016500\r
-X006250Y019250\r
-X006250Y020250\r
-T33\r
-X006480Y006730\r
-X006480Y009490\r
-T20\r
-X034000Y017250\r
-X055250Y017250\r
-X061500Y012250\r
-X061500Y018750\r
-X059250Y015750\r
-X053250Y001750\r
-X053250Y015750\r
-T25\r
-X055250Y011000\r
-X059250Y011000\r
-X055250Y020750\r
-X059250Y020750\r
-T26\r
-X066250Y038250\r
-X066250Y038250\r
-X005750Y003380\r
-X005750Y038250\r
-X066250Y003380\r
-X066250Y003250\r
-T14\r
-X007500Y033450\r
-X007500Y023690\r
+T69\r
+X022225Y069850\r
+X023495Y068580\r
+X026035Y075565\r
+X026035Y071120\r
+X039370Y034290\r
+X039370Y010795\r
+X040640Y056515\r
+X040640Y012065\r
+X041910Y013335\r
+X050800Y073025\r
+X050800Y066040\r
+X052070Y013335\r
+X053340Y093980\r
+X054610Y012065\r
+X057150Y060960\r
+X057150Y056515\r
+X057150Y010795\r
+X062865Y099695\r
+X071755Y041910\r
+X072390Y076835\r
+X074930Y069850\r
+X077470Y068580\r
+X078740Y080645\r
+X080010Y069850\r
+X080010Y067945\r
+X080010Y033020\r
+X082550Y063500\r
+X084455Y059690\r
+X085090Y094615\r
+X087630Y067945\r
+X088900Y073025\r
+X089535Y074295\r
+X089535Y060960\r
+X091440Y066040\r
+X091440Y046355\r
+X092710Y064770\r
+X092710Y023495\r
+X093345Y080645\r
+X094615Y066040\r
+X095885Y083185\r
+X095885Y075565\r
+X100965Y067945\r
+X102235Y099695\r
+X106045Y101600\r
+X106045Y093980\r
+X107950Y074930\r
+X108585Y099695\r
+X110490Y092710\r
+X112395Y099695\r
+X112395Y087630\r
+X112395Y074930\r
+X116840Y086360\r
+X121285Y098425\r
+X121285Y077470\r
+X121285Y074930\r
+X121920Y076200\r
+X122555Y066040\r
+X125095Y059690\r
+X128905Y074930\r
+X128905Y068580\r
+X133985Y082550\r
+X135255Y089535\r
+X135255Y081915\r
+X138430Y067310\r
+X139065Y090805\r
+X141605Y060325\r
+X142875Y088265\r
+X143510Y063500\r
+X150495Y074930\r
+X155575Y081915\r
+T59\r
+X045085Y096520\r
+X045085Y090805\r
+X045085Y077470\r
+X045085Y072390\r
+X045085Y021590\r
+X045085Y016510\r
+X049530Y078740\r
+X049530Y071120\r
+X049530Y022860\r
+X049530Y015240\r
+X050165Y096520\r
+X050165Y090805\r
+X052070Y078740\r
+X052070Y071120\r
+X052070Y022860\r
+X052070Y015240\r
+X054610Y078740\r
+X054610Y071120\r
+X054610Y022860\r
+X054610Y015240\r
+X057150Y092710\r
+X057150Y085090\r
+X057150Y078740\r
+X057150Y071120\r
+X057150Y022860\r
+X057150Y015240\r
+X058420Y096520\r
+X059690Y092710\r
+X059690Y085090\r
+X059690Y078740\r
+X059690Y071120\r
+X059690Y022860\r
+X059690Y015240\r
+X062230Y092710\r
+X062230Y085090\r
+X062230Y078740\r
+X062230Y071120\r
+X062230Y022860\r
+X062230Y015240\r
+X063500Y096520\r
+X064770Y092710\r
+X064770Y085090\r
+X064770Y078740\r
+X064770Y071120\r
+X064770Y022860\r
+X064770Y015240\r
+X071120Y078740\r
+X071120Y071120\r
+X073660Y078740\r
+X073660Y071120\r
+X076200Y078740\r
+X076200Y071120\r
+X078740Y078740\r
+X078740Y071120\r
+X081280Y078740\r
+X081280Y071120\r
+X083820Y078740\r
+X083820Y071120\r
+X086360Y078740\r
+X086360Y071120\r
+X088900Y078740\r
+X088900Y071120\r
+X094615Y092710\r
+X094615Y085090\r
+X094615Y078740\r
+X094615Y071120\r
+X095885Y096520\r
+X097155Y092710\r
+X097155Y085090\r
+X097155Y078740\r
+X097155Y071120\r
+X099695Y092710\r
+X099695Y085090\r
+X099695Y078740\r
+X099695Y071120\r
+X100965Y096520\r
+X102235Y092710\r
+X102235Y085090\r
+X102235Y078740\r
+X102235Y071120\r
+X116840Y077470\r
+X116840Y072390\r
+X122555Y092710\r
+X122555Y085090\r
+X122555Y078740\r
+X122555Y071120\r
+X123825Y096520\r
+X125095Y092710\r
+X125095Y085090\r
+X125095Y078740\r
+X125095Y071120\r
+X127635Y092710\r
+X127635Y085090\r
+X127635Y078740\r
+X127635Y071120\r
+X128905Y096520\r
+X130175Y092710\r
+X130175Y085090\r
+X130175Y078740\r
+X130175Y071120\r
+X132715Y078740\r
+X132715Y071120\r
+X135255Y078740\r
+X135255Y071120\r
+X137795Y078740\r
+X137795Y071120\r
+X140335Y078740\r
+X140335Y071120\r
+X140335Y012700\r
+X140335Y007620\r
+X142875Y078740\r
+X142875Y071120\r
+X145415Y078740\r
+X145415Y071120\r
+X146050Y012700\r
+X146050Y007620\r
+X147955Y092710\r
+X147955Y085090\r
+X147955Y078740\r
+X147955Y071120\r
+X149225Y096520\r
+X150495Y092710\r
+X150495Y085090\r
+X150495Y078740\r
+X150495Y071120\r
+X150495Y012700\r
+X150495Y007620\r
+X153035Y092710\r
+X153035Y085090\r
+X153035Y078740\r
+X153035Y071120\r
+X154305Y096520\r
+X155575Y092710\r
+X155575Y085090\r
+X155575Y078740\r
+X155575Y071120\r
+T62\r
+X045085Y066040\r
+X045085Y054610\r
+X045085Y044450\r
+X045085Y034290\r
+X055245Y066040\r
+X055245Y054610\r
+X055245Y044450\r
+X055245Y034290\r
+X059055Y054610\r
+X059055Y044450\r
+X069215Y054610\r
+X069215Y044450\r
+X160655Y092075\r
+X160655Y089535\r
+X160655Y086995\r
+X160655Y084455\r
+X160655Y081915\r
+X160655Y079375\r
+X160655Y076835\r
+X160655Y074295\r
+X160655Y071755\r
+X160655Y069215\r
+X160655Y066675\r
+X160655Y064135\r
+X160655Y061595\r
+X160655Y059055\r
+X160655Y056515\r
+X160655Y053975\r
+X160655Y051435\r
+X160655Y048895\r
+X160655Y046355\r
+X160655Y043815\r
+X160655Y041275\r
+X160655Y038735\r
+X160655Y036195\r
+X160655Y033655\r
+X160655Y031115\r
+X160655Y028575\r
+X160655Y026035\r
+X160655Y023495\r
+X160655Y020955\r
+X160655Y018415\r
+X160655Y015875\r
+X160655Y013335\r
+X163195Y092075\r
+X163195Y089535\r
+X163195Y086995\r
+X163195Y084455\r
+X163195Y081915\r
+X163195Y079375\r
+X163195Y076835\r
+X163195Y074295\r
+X163195Y071755\r
+X163195Y069215\r
+X163195Y066675\r
+X163195Y064135\r
+X163195Y061595\r
+X163195Y059055\r
+X163195Y056515\r
+X163195Y053975\r
+X163195Y051435\r
+X163195Y048895\r
+X163195Y046355\r
+X163195Y043815\r
+X163195Y041275\r
+X163195Y038735\r
+X163195Y036195\r
+X163195Y033655\r
+X163195Y031115\r
+X163195Y028575\r
+X163195Y026035\r
+X163195Y023495\r
+X163195Y020955\r
+X163195Y018415\r
+X163195Y015875\r
+X163195Y013335\r
+X165735Y092075\r
+X165735Y089535\r
+X165735Y086995\r
+X165735Y084455\r
+X165735Y081915\r
+X165735Y079375\r
+X165735Y076835\r
+X165735Y074295\r
+X165735Y071755\r
+X165735Y069215\r
+X165735Y066675\r
+X165735Y064135\r
+X165735Y061595\r
+X165735Y059055\r
+X165735Y056515\r
+X165735Y053975\r
+X165735Y051435\r
+X165735Y048895\r
+X165735Y046355\r
+X165735Y043815\r
+X165735Y041275\r
+X165735Y038735\r
+X165735Y036195\r
+X165735Y033655\r
+X165735Y031115\r
+X165735Y028575\r
+X165735Y026035\r
+X165735Y023495\r
+X165735Y020955\r
+X165735Y018415\r
+X165735Y015875\r
+X165735Y013335\r
+T60\r
+X017780Y076733\r
+X017780Y073965\r
+X017780Y071196\r
+X017780Y068428\r
+X020320Y078105\r
+X020320Y075336\r
+X020320Y072568\r
+X020320Y069799\r
+X020320Y067031\r
+X038735Y088265\r
+X038735Y057785\r
+X040640Y085090\r
+X040640Y072390\r
+X040640Y062230\r
+X045085Y062230\r
+X045085Y059690\r
+X045085Y049530\r
+X045085Y039370\r
+X045085Y031750\r
+X045085Y027940\r
+X047625Y076835\r
+X047625Y059690\r
+X048260Y034290\r
+X048260Y024765\r
+X048895Y085090\r
+X049530Y007620\r
+X051435Y085090\r
+X052705Y039370\r
+X055245Y059690\r
+X055245Y049530\r
+X055245Y047625\r
+X055245Y039370\r
+X055245Y027940\r
+X057150Y029845\r
+X057150Y024765\r
+X059055Y049530\r
+X059055Y039370\r
+X060960Y020320\r
+X061595Y066040\r
+X061595Y062230\r
+X061595Y059690\r
+X061595Y034290\r
+X061595Y031750\r
+X061595Y027940\r
+X064135Y066040\r
+X064135Y059690\r
+X064135Y034290\r
+X064135Y031750\r
+X064135Y027940\r
+X064135Y024765\r
+X066675Y076835\r
+X066675Y059690\r
+X066675Y052705\r
+X068580Y096520\r
+X068580Y073025\r
+X068580Y066040\r
+X069215Y049530\r
+X069215Y039370\r
+X070485Y066040\r
+X071120Y091440\r
+X071120Y085090\r
+X071120Y081915\r
+X073025Y066040\r
+X073660Y091440\r
+X073660Y085090\r
+X074930Y088900\r
+X076835Y081915\r
+X078740Y085090\r
+X078740Y066040\r
+X080010Y092710\r
+X080010Y090170\r
+X081280Y085090\r
+X081280Y066040\r
+X083185Y096520\r
+X086995Y066040\r
+X087630Y093980\r
+X087630Y083820\r
+X091440Y096520\r
+X091440Y067945\r
+X094615Y010160\r
+X097155Y066040\r
+X097790Y062230\r
+X097790Y017780\r
+X098425Y067945\r
+X099695Y019685\r
+X101600Y066040\r
+X101600Y062230\r
+X101600Y021590\r
+X104140Y086360\r
+X107950Y093980\r
+X107950Y083820\r
+X107950Y080010\r
+X107950Y069850\r
+X109855Y057785\r
+X109855Y015240\r
+X111760Y066040\r
+X112395Y093980\r
+X112395Y083820\r
+X112395Y080010\r
+X112395Y069850\r
+X116840Y093980\r
+X116840Y083820\r
+X116840Y066040\r
+X120015Y081915\r
+X120015Y062230\r
+X126365Y036195\r
+X126365Y010160\r
+X127000Y066040\r
+X131445Y066040\r
+X131445Y062230\r
+X132080Y086360\r
+X135255Y093980\r
+X135255Y083820\r
+X138430Y015875\r
+X139065Y093980\r
+X139065Y083820\r
+X140335Y017780\r
+X141605Y066040\r
+X142875Y093980\r
+X142875Y083820\r
+X146050Y066040\r
+X153035Y064135\r
+X153670Y015240\r
+X156210Y076835\r
+X156210Y066040\r
+X156210Y017780\r
+X156210Y015240\r
+X156210Y010160\r
+X156210Y007620\r
+T63\r
+X013970Y022860\r
+X013970Y018364\r
+X083820Y050800\r
+X083820Y031750\r
+X083820Y012700\r
+X086360Y050800\r
+X086360Y031750\r
+X086360Y012700\r
+X088900Y050800\r
+X088900Y031750\r
+X088900Y012700\r
+X116205Y050800\r
+X116205Y031750\r
+X116205Y012700\r
+X118745Y050800\r
+X118745Y031750\r
+X118745Y012700\r
+X121285Y050800\r
+X121285Y031750\r
+X121285Y012700\r
+T64\r
+X015875Y051435\r
+X015875Y048895\r
+X015875Y041910\r
+X015875Y039370\r
+X015875Y032385\r
+X015875Y029845\r
+T65\r
+X016459Y024105\r
+X016459Y017094\r
+T68\r
+X086360Y043815\r
+X135255Y040005\r
+X135255Y004445\r
+X140335Y043815\r
+X150495Y040005\r
+X156210Y047625\r
+X156210Y031115\r
+T67\r
+X140335Y052705\r
+X140335Y027940\r
+X150495Y052705\r
+X150495Y027940\r
+T61\r
+X014605Y097155\r
+X014605Y008585\r
+X168275Y097155\r
+X168275Y097155\r
+X168275Y008585\r
+X168275Y008255\r
+T66\r
+X019050Y084963\r
+X019050Y060173\r
M30\r
--- /dev/null
+G04 start of page 3 for group 1 idx 3 *\r
+G04 Title: (unknown), component *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNTOP*%\r
+%ADD58C,1.321*%\r
+%ADD57C,1.092*%\r
+%ADD56C,1.067*%\r
+%ADD55C,0.762*%\r
+%ADD54C,0.711*%\r
+%ADD53C,2.921*%\r
+%ADD52C,2.667*%\r
+%ADD51C,2.286*%\r
+%ADD50C,2.159*%\r
+%ADD49C,1.016*%\r
+%ADD48C,1.397*%\r
+%ADD47C,3.556*%\r
+%ADD46C,2.032*%\r
+%ADD45C,0.002*%\r
+%ADD44C,2.540*%\r
+%ADD43C,1.524*%\r
+%ADD42C,1.778*%\r
+%ADD41C,3.048*%\r
+%ADD40C,0.508*%\r
+%ADD39C,0.889*%\r
+%ADD38C,1.651*%\r
+%ADD37C,0.254*%\r
+%ADD36C,0.635*%\r
+%ADD35C,0.203*%\r
+G54D35*X0Y104140D02*X180340D01*\r
+X0D02*Y0D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+G54D36*X45085Y54610D02*Y49530D01*\r
+G54D37*X40640Y56515D02*Y12065D01*\r
+G54D36*X45085Y39370D02*Y44450D01*\r
+X43180Y56515D02*X45085Y54610D01*\r
+Y24765D02*Y31750D01*\r
+Y16510D02*Y18415D01*\r
+X57150Y37465D02*Y29845D01*\r
+X55245Y54610D02*Y47625D01*\r
+X59055Y49530D02*Y66040D01*\r
+X55245Y44450D02*Y39370D01*\r
+X57150Y37465D01*\r
+X52705Y24765D02*Y39370D01*\r
+G54D38*X48260Y34290D02*Y24765D01*\r
+G54D36*X45085Y62230D02*Y59690D01*\r
+G54D37*X26035Y75565D02*Y71120D01*\r
+X20320Y72390D02*X22225Y70485D01*\r
+X20549Y75336D02*X23495Y72390D01*\r
+X20320Y72568D02*Y72390D01*\r
+X23495Y68580D02*Y72390D01*\r
+X22225Y69850D02*Y70485D01*\r
+G54D38*X13970Y60960D02*X20320Y67031D01*\r
+X13970Y22860D02*Y60960D01*\r
+X15875Y29845D02*X13970D01*\r
+X15875Y39370D02*X13970D01*\r
+X15875Y48895D02*X13970D01*\r
+G54D37*X39370Y34290D02*Y10795D01*\r
+G54D36*X57150Y22860D02*Y24765D01*\r
+X54610Y22860D02*X52705Y24765D01*\r
+G54D37*X54610Y12065D02*Y15240D01*\r
+G54D38*X62230Y17145D02*X66675Y21590D01*\r
+X62230Y17145D02*Y15240D01*\r
+G54D36*X60960Y24130D02*Y20320D01*\r
+G54D37*X52070Y13335D02*Y14605D01*\r
+G54D36*X46990Y22860D02*X45085Y24765D01*\r
+G54D37*X52070Y14605D02*Y15240D01*\r
+G54D36*X45085Y18415D02*X46990Y20320D01*\r
+Y22860D01*\r
+X59055Y44450D02*Y26035D01*\r
+G54D38*X64135Y34290D02*X64770D01*\r
+X66675Y32385D01*\r
+G54D36*X61595Y31750D02*Y34290D01*\r
+G54D38*X66675Y21590D02*Y32385D01*\r
+G54D36*X64135Y31750D02*Y24765D01*\r
+X59055Y26035D02*X60960Y24130D01*\r
+G54D37*X57150Y15240D02*Y10795D01*\r
+X95885Y75565D02*Y67310D01*\r
+X92710Y64770D02*X93345Y65405D01*\r
+X90170Y70485D02*X89535Y69850D01*\r
+X90170Y73660D02*Y70485D01*\r
+X89535Y74295D02*X90170Y73660D01*\r
+X95885Y67310D02*X94615Y66040D01*\r
+X93345Y65405D02*Y80645D01*\r
+X88265Y75565D02*Y73660D01*\r
+X107950Y76200D02*Y69850D01*\r
+X112395Y76200D02*Y69850D01*\r
+G54D38*X102235Y71120D02*Y72390D01*\r
+X104140Y74295D01*\r
+G54D37*X102235Y76835D02*X100965Y75565D01*\r
+X102235Y78740D02*Y76835D01*\r
+G54D38*X99695Y66675D02*X98425Y67945D01*\r
+G54D37*X71120Y69850D02*X70485Y69215D01*\r
+Y66040D01*\r
+X72390Y69215D02*X71755Y68580D01*\r
+X78740Y75565D02*X77470Y74295D01*\r
+X80010Y69850D02*Y74295D01*\r
+X81280Y75565D01*\r
+G54D36*X64770Y71120D02*Y69850D01*\r
+X63500Y68580D01*\r
+X61595Y65405D02*Y62865D01*\r
+G54D37*X74930Y74295D02*Y69850D01*\r
+X76200Y75565D02*X74930Y74295D01*\r
+G54D36*X73660Y71120D02*Y76200D01*\r
+G54D37*X77470Y74295D02*Y68580D01*\r
+X72390Y76835D02*Y69215D01*\r
+X76200Y71120D02*Y69215D01*\r
+X81280Y66040D02*Y66675D01*\r
+Y71120D01*\r
+X76200Y69215D02*X73025Y66040D01*\r
+X87630Y85725D02*X88900Y84455D01*\r
+Y83185D01*\r
+X87630Y81915D01*\r
+Y93980D02*Y85725D01*\r
+G54D36*X85090Y94615D02*Y78105D01*\r
+X119380Y95885D02*X103505D01*\r
+G54D37*X110490Y92710D02*Y78105D01*\r
+G54D39*X116840Y93980D02*Y86360D01*\r
+G54D38*X104140Y89535D02*Y74295D01*\r
+G54D36*X102235Y94615D02*X95250D01*\r
+X95885Y96520D02*Y94615D01*\r
+X94615Y93980D02*X95250Y94615D01*\r
+X94615Y92710D02*Y93980D01*\r
+G54D37*X99695Y92710D02*Y90805D01*\r
+G54D38*X102235Y92710D02*Y91440D01*\r
+X104140Y89535D01*\r
+G54D37*X99695Y90805D02*X95885Y86995D01*\r
+Y83185D01*\r
+X88900Y78740D02*Y76200D01*\r
+X88265Y75565D01*\r
+X85090D02*X86360Y76835D01*\r
+X83820Y78740D02*X82550Y77470D01*\r
+X87630Y81915D02*Y67945D01*\r
+G54D36*X83820Y76835D02*Y71120D01*\r
+G54D37*X85090Y67945D02*Y75565D01*\r
+X82550Y63500D02*Y77470D01*\r
+X76200Y78740D02*Y75565D01*\r
+G54D36*X73660Y76200D02*X74930Y77470D01*\r
+G54D37*X81280Y75565D02*Y78740D01*\r
+X78740D02*Y75565D01*\r
+G54D38*X63500Y95885D02*Y94615D01*\r
+G54D36*X80010Y92710D02*X78740D01*\r
+X76835Y90805D01*\r
+G54D40*X74930Y77470D02*Y88900D01*\r
+G54D36*X71120Y78740D02*Y85090D01*\r
+X76835Y90805D02*Y81915D01*\r
+G54D37*X78740Y80645D02*Y85090D01*\r
+G54D38*X81280D02*X83185Y86995D01*\r
+Y95885D02*Y86995D01*\r
+G54D37*X52070Y71120D02*Y76200D01*\r
+G54D36*X47625Y76835D02*X46355Y75565D01*\r
+X52070Y78740D02*X47625Y74295D01*\r
+X46355Y75565D02*X44450D01*\r
+X43180Y74295D01*\r
+Y56515D01*\r
+X47625Y59690D02*Y74295D01*\r
+X38735Y88265D02*Y57785D01*\r
+X40640Y85090D02*Y62230D01*\r
+G54D37*X45085Y100330D02*Y96520D01*\r
+X46355Y101600D02*X45085Y100330D01*\r
+Y90805D02*X41910Y87630D01*\r
+Y13335D01*\r
+G54D36*X49530Y7620D02*Y15240D01*\r
+X69215Y54610D02*Y49530D01*\r
+G54D37*X71755Y68580D02*Y41910D01*\r
+G54D36*X69215Y44450D02*Y39370D01*\r
+G54D41*X86360Y48260D02*Y34290D01*\r
+G54D37*X80010Y33020D02*Y67945D01*\r
+G54D42*X86360Y62230D02*Y31750D01*\r
+X86995Y62865D02*X86360Y62230D01*\r
+G54D37*X84455Y67310D02*X85090Y67945D01*\r
+X84455Y59690D02*Y67310D01*\r
+X89535Y69850D02*Y60960D01*\r
+G54D42*X86995Y62865D02*Y66040D01*\r
+G54D37*X88265Y73660D02*X88900Y73025D01*\r
+X91440Y66040D02*Y46355D01*\r
+G54D42*X115570Y33655D02*Y29845D01*\r
+G54D41*Y30480D02*Y12700D01*\r
+G54D38*X99695Y19685D02*Y66675D01*\r
+G54D42*X116205Y50800D02*Y13335D01*\r
+G54D37*X53340Y77470D02*X52070Y76200D01*\r
+G54D36*X85090Y78105D02*X83820Y76835D01*\r
+G54D43*X73660Y85090D02*Y78740D01*\r
+G54D37*X86360Y76835D02*Y78740D01*\r
+X106045Y78105D02*X107950Y76200D01*\r
+X112395D02*X110490Y78105D01*\r
+X112395Y83820D02*Y87630D01*\r
+X46355Y101600D02*X106045D01*\r
+G54D36*X107950Y95885D02*Y94615D01*\r
+X103505Y95885D02*X102235Y94615D01*\r
+G54D37*X60960Y97790D02*X62865Y99695D01*\r
+X108585D02*X102235D01*\r
+X106045Y93980D02*Y78105D01*\r
+G54D38*X64770Y93345D02*Y85090D01*\r
+X63500Y94615D02*X64770Y93345D01*\r
+G54D37*X59690Y85090D02*Y90170D01*\r
+X60960Y91440D01*\r
+Y97790D01*\r
+G54D36*X58420Y96520D02*Y93980D01*\r
+X57150Y92710D01*\r
+Y85090D01*\r
+G54D38*X50165Y90805D02*X51435Y89535D01*\r
+X50165Y96520D02*Y90805D01*\r
+X51435Y89535D02*Y85090D01*\r
+G54D37*X53340Y93980D02*Y77470D01*\r
+X50800Y66040D02*Y73025D01*\r
+G54D36*X61595Y68580D02*X59055Y66040D01*\r
+G54D37*X57150Y66675D02*X54610Y69215D01*\r
+Y71120D01*\r
+X78740D02*Y66040D01*\r
+X71120Y71120D02*Y69850D01*\r
+G54D36*X63500Y68580D02*X61595D01*\r
+G54D37*X57150Y66675D02*Y56515D01*\r
+G54D36*X66675Y76835D02*Y52705D01*\r
+G54D38*X68580Y96520D02*Y66040D01*\r
+X91440Y67945D02*Y96520D01*\r
+G54D36*X154940Y23495D02*X165735D01*\r
+X158750Y20320D02*Y12700D01*\r
+X165735Y20955D02*X159385D01*\r
+X158750Y20320D01*\r
+G54D42*X142875Y25400D02*Y6350D01*\r
+G54D36*X138430Y9525D02*X140335Y7620D01*\r
+X138430Y9525D02*Y15875D01*\r
+G54D38*X140335Y12700D02*Y17780D01*\r
+G54D36*X153670Y22225D02*X154940Y23495D01*\r
+X153670Y22225D02*Y15240D01*\r
+G54D42*X142875Y6350D02*X144780Y4445D01*\r
+X160655Y13335D02*X165735D01*\r
+X160655Y6350D02*Y13335D01*\r
+X144780Y4445D02*X158750D01*\r
+X160655Y6350D01*\r
+G54D36*X158750Y12700D02*X156210Y10160D01*\r
+G54D42*X146050Y12700D02*Y7620D01*\r
+X126365Y36195D02*Y10160D01*\r
+G54D41*X140335Y53340D02*Y27940D01*\r
+X135255Y40005D02*Y4445D01*\r
+G54D42*X140970Y27940D02*X142875Y26035D01*\r
+G54D40*X116205Y34290D02*Y30480D01*\r
+G54D41*X116635Y40005D02*X135255D01*\r
+G54D42*X140335Y53975D02*X150495Y64135D01*\r
+X153035D01*\r
+G54D37*X157480Y66040D02*X158115Y66675D01*\r
+X144780Y64770D02*X143510Y63500D01*\r
+X156210Y66040D02*X157480D01*\r
+X141605D02*Y60325D01*\r
+X135890Y66040D02*X141605D01*\r
+G54D36*X131445D02*Y62230D01*\r
+G54D41*X150495Y52705D02*Y27940D01*\r
+G54D44*X156210Y31115D02*Y47625D01*\r
+G54D36*X149225Y92075D02*X150495Y90805D01*\r
+X147955Y92710D02*Y90805D01*\r
+X158115D02*X150495D01*\r
+X149225Y96520D02*Y92075D01*\r
+G54D37*X160655Y99695D02*X112395D01*\r
+G54D36*X120015Y95250D02*X119380Y95885D01*\r
+X128905Y95250D02*X130175Y93980D01*\r
+X160655Y92075D02*Y90805D01*\r
+G54D37*X167005Y93345D02*X160655Y99695D01*\r
+X121285Y98425D02*Y90170D01*\r
+G54D36*X165735Y89535D02*Y90170D01*\r
+X165100Y90805D02*X161290D01*\r
+X165735Y90170D02*X165100Y90805D01*\r
+G54D37*X167005Y78740D02*Y93345D01*\r
+G54D36*X161290Y90805D02*X157480D01*\r
+X147955D02*X150495Y88265D01*\r
+X153035Y90805D02*Y85725D01*\r
+X161925Y80645D02*X164465D01*\r
+X165735Y79375D01*\r
+G54D37*X166370Y78105D02*X167005Y78740D01*\r
+X164465Y78105D02*X166370D01*\r
+X164465D02*X163195Y76835D01*\r
+X155575Y85090D02*Y81915D01*\r
+G54D36*X157480Y81280D02*X158115Y81915D01*\r
+X150495Y88265D02*Y85090D01*\r
+G54D37*X148590Y81915D02*X150495Y80010D01*\r
+G54D36*X157480Y78105D02*Y81280D01*\r
+X158115Y81915D02*X160655D01*\r
+X161925Y80645D01*\r
+G54D37*X160655Y79375D02*X158115Y76835D01*\r
+Y66675D02*Y76835D01*\r
+X150495Y80010D02*Y78740D01*\r
+X142875Y82550D02*X143510Y81915D01*\r
+X148590D01*\r
+G54D38*X140335Y72390D02*X145415Y77470D01*\r
+Y78740D01*\r
+X140335Y72390D02*Y71120D01*\r
+G54D37*X150495D02*Y74930D01*\r
+X144780Y67945D02*Y64770D01*\r
+G54D36*X146050Y66040D02*Y67310D01*\r
+X146685Y67945D01*\r
+X152400D01*\r
+G54D37*X147955Y71120D02*X144780Y67945D01*\r
+G54D36*X152400D02*X153035Y68580D01*\r
+Y73660D01*\r
+X157480Y78105D01*\r
+X128905Y96520D02*Y95250D01*\r
+G54D37*X127000Y88265D02*X128905Y86360D01*\r
+Y83185D01*\r
+G54D36*X130175Y90170D02*Y93980D01*\r
+G54D37*X135255Y89535D02*Y93980D01*\r
+G54D36*X132080Y88265D02*X130175Y90170D01*\r
+X132080Y88265D02*Y86360D01*\r
+G54D37*X133985Y76200D02*Y82550D01*\r
+X135255Y83820D02*Y83185D01*\r
+X130175Y78740D02*Y77470D01*\r
+X135255Y83820D02*Y81915D01*\r
+X139065Y90805D02*Y83820D01*\r
+X142875Y93980D02*Y88265D01*\r
+Y83820D02*Y82550D01*\r
+X125730Y74930D02*X121285D01*\r
+G54D42*X94615Y63500D02*Y10160D01*\r
+G54D36*X101600Y66040D02*Y21590D01*\r
+X109855Y57785D02*Y15240D01*\r
+X97790Y17780D02*Y62230D01*\r
+G54D37*X92710Y64770D02*Y23495D01*\r
+G54D41*X115570Y50800D02*Y28575D01*\r
+G54D37*X100965Y75565D02*Y67945D01*\r
+G54D42*X97155Y66040D02*X94615Y63500D01*\r
+G54D37*X132715Y71120D02*Y74930D01*\r
+X133985Y76200D01*\r
+X135255Y71120D02*Y66675D01*\r
+X131445Y74930D02*X130175Y73660D01*\r
+X128905Y74930D02*Y68580D01*\r
+X127635Y71120D02*Y73025D01*\r
+X125730Y74930D01*\r
+X130175Y73660D02*Y71120D01*\r
+Y77470D02*X128905Y76200D01*\r
+X131445Y80645D02*Y74930D01*\r
+X135255Y66675D02*X135890Y66040D01*\r
+X142875Y68580D02*X141605Y67310D01*\r
+X138430D01*\r
+X142875Y71120D02*Y68580D01*\r
+X128905Y83185D02*X131445Y80645D01*\r
+G54D36*X125095Y83185D02*Y85090D01*\r
+X122555Y80645D02*X125095Y83185D01*\r
+X120015Y62230D02*Y95250D01*\r
+G54D37*X121285Y90170D02*X123190Y88265D01*\r
+X127000D01*\r
+X128905Y76200D02*X121920D01*\r
+X127000Y77470D02*X121285D01*\r
+X127635Y78740D02*Y78105D01*\r
+X127000Y77470D01*\r
+G54D36*X116840D02*Y78105D01*\r
+X117475Y78740D01*\r
+X122555D01*\r
+Y80645D01*\r
+G54D37*Y71120D02*Y66040D01*\r
+X125095Y71120D02*Y59690D01*\r
+G54D35*X19050Y8001D02*Y6985D01*\r
+X19431Y7366D01*\r
+X19812Y6985D01*\r
+Y8001D02*Y6985D01*\r
+X20498Y7493D02*X20625Y7366D01*\r
+X20244Y7493D02*X20498D01*\r
+X20117Y7366D02*X20244Y7493D01*\r
+X20117Y7366D02*Y7112D01*\r
+X20244Y6985D01*\r
+X20625Y7493D02*Y7112D01*\r
+X20752Y6985D01*\r
+X20244D02*X20498D01*\r
+X20625Y7112D01*\r
+X21057Y8001D02*Y7112D01*\r
+X21184Y6985D01*\r
+X21565Y8001D02*Y7112D01*\r
+X21692Y6985D01*\r
+X21438Y7620D02*X21692D01*\r
+X22073Y6985D02*X22454D01*\r
+X21946Y7112D02*X22073Y6985D01*\r
+X21946Y7366D02*Y7112D01*\r
+Y7366D02*X22073Y7493D01*\r
+X22327D01*\r
+X22454Y7366D01*\r
+X21946Y7239D02*X22454D01*\r
+Y7366D02*Y7239D01*\r
+X22885Y7366D02*Y6985D01*\r
+Y7366D02*X23012Y7493D01*\r
+X23266D01*\r
+X22758D02*X22885Y7366D01*\r
+X24028Y8001D02*Y6985D01*\r
+Y8001D02*X24536D01*\r
+X24028Y7493D02*X24409D01*\r
+X24968Y6985D02*X25349D01*\r
+X24841Y7112D02*X24968Y6985D01*\r
+X24841Y7366D02*Y7112D01*\r
+Y7366D02*X24968Y7493D01*\r
+X25222D01*\r
+X25349Y7366D01*\r
+X24841Y7239D02*X25349D01*\r
+Y7366D02*Y7239D01*\r
+X25781Y8001D02*Y7112D01*\r
+X25908Y6985D01*\r
+X25654Y7620D02*X25908D01*\r
+X26289Y8001D02*Y7112D01*\r
+X26416Y6985D01*\r
+X26162Y7620D02*X26416D01*\r
+X26797Y6985D02*X27178D01*\r
+X26670Y7112D02*X26797Y6985D01*\r
+X26670Y7366D02*Y7112D01*\r
+Y7366D02*X26797Y7493D01*\r
+X27051D01*\r
+X27178Y7366D01*\r
+X26670Y7239D02*X27178D01*\r
+Y7366D02*Y7239D01*\r
+X27610Y7366D02*Y6985D01*\r
+Y7366D02*X27737Y7493D01*\r
+X27991D01*\r
+X27483D02*X27610Y7366D01*\r
+X28753Y8001D02*Y6985D01*\r
+X29261D01*\r
+X29947Y7493D02*X30074Y7366D01*\r
+X29693Y7493D02*X29947D01*\r
+X29566Y7366D02*X29693Y7493D01*\r
+X29566Y7366D02*Y7112D01*\r
+X29693Y6985D01*\r
+X30074Y7493D02*Y7112D01*\r
+X30201Y6985D01*\r
+X29693D02*X29947D01*\r
+X30074Y7112D01*\r
+X30886Y7493D02*X31013Y7366D01*\r
+X30632Y7493D02*X30886D01*\r
+X30505Y7366D02*X30632Y7493D01*\r
+X30505Y7366D02*Y7112D01*\r
+X30632Y6985D01*\r
+X30886D01*\r
+X31013Y7112D01*\r
+X30505Y6731D02*X30632Y6604D01*\r
+X30886D01*\r
+X31013Y6731D01*\r
+Y7493D02*Y6731D01*\r
+X31445Y6985D02*X31826D01*\r
+X31318Y7112D02*X31445Y6985D01*\r
+X31318Y7366D02*Y7112D01*\r
+Y7366D02*X31445Y7493D01*\r
+X31699D01*\r
+X31826Y7366D01*\r
+X31318Y7239D02*X31826D01*\r
+Y7366D02*Y7239D01*\r
+X32258Y6985D02*X32639D01*\r
+X32766Y7112D01*\r
+X32639Y7239D02*X32766Y7112D01*\r
+X32258Y7239D02*X32639D01*\r
+X32131Y7366D02*X32258Y7239D01*\r
+X32131Y7366D02*X32258Y7493D01*\r
+X32639D01*\r
+X32766Y7366D01*\r
+X32131Y7112D02*X32258Y6985D01*\r
+X19177Y9906D02*Y8890D01*\r
+X19558Y9906D02*X19685Y9779D01*\r
+Y9017D01*\r
+X19558Y8890D02*X19685Y9017D01*\r
+X19050Y8890D02*X19558D01*\r
+X19050Y9906D02*X19558D01*\r
+X19990Y9652D02*Y9525D01*\r
+Y9271D02*Y8890D01*\r
+X20371D02*X20752D01*\r
+X20244Y9017D02*X20371Y8890D01*\r
+X20244Y9271D02*Y9017D01*\r
+Y9271D02*X20371Y9398D01*\r
+X20625D01*\r
+X20752Y9271D01*\r
+X20244Y9144D02*X20752D01*\r
+Y9271D02*Y9144D01*\r
+X21438Y9398D02*X21565Y9271D01*\r
+X21184Y9398D02*X21438D01*\r
+X21057Y9271D02*X21184Y9398D01*\r
+X21057Y9271D02*Y9017D01*\r
+X21184Y8890D01*\r
+X21438D01*\r
+X21565Y9017D01*\r
+X21057Y8636D02*X21184Y8509D01*\r
+X21438D01*\r
+X21565Y8636D01*\r
+Y9398D02*Y8636D01*\r
+X21869Y9271D02*Y9017D01*\r
+Y9271D02*X21996Y9398D01*\r
+X22250D01*\r
+X22377Y9271D01*\r
+Y9017D01*\r
+X22250Y8890D02*X22377Y9017D01*\r
+X21996Y8890D02*X22250D01*\r
+X21869Y9017D02*X21996Y8890D01*\r
+X23266D02*X23647D01*\r
+X23139Y9017D02*X23266Y8890D01*\r
+X23139Y9779D02*Y9017D01*\r
+Y9779D02*X23266Y9906D01*\r
+X23647D01*\r
+X24333Y9398D02*X24460Y9271D01*\r
+X24079Y9398D02*X24333D01*\r
+X23952Y9271D02*X24079Y9398D01*\r
+X23952Y9271D02*Y9017D01*\r
+X24079Y8890D01*\r
+X24460Y9398D02*Y9017D01*\r
+X24587Y8890D01*\r
+X24079D02*X24333D01*\r
+X24460Y9017D01*\r
+X24892Y9906D02*Y8890D01*\r
+Y9017D02*X25019Y8890D01*\r
+X25273D01*\r
+X25400Y9017D01*\r
+Y9271D02*Y9017D01*\r
+X25273Y9398D02*X25400Y9271D01*\r
+X25019Y9398D02*X25273D01*\r
+X24892Y9271D02*X25019Y9398D01*\r
+X25832Y8890D02*X26213D01*\r
+X25705Y9017D02*X25832Y8890D01*\r
+X25705Y9271D02*Y9017D01*\r
+Y9271D02*X25832Y9398D01*\r
+X26086D01*\r
+X26213Y9271D01*\r
+X25705Y9144D02*X26213D01*\r
+Y9271D02*Y9144D01*\r
+X26645Y9271D02*Y8890D01*\r
+Y9271D02*X26772Y9398D01*\r
+X27026D01*\r
+X26518D02*X26645Y9271D01*\r
+X27330Y9906D02*Y9017D01*\r
+X27457Y8890D01*\r
+X27711Y9271D02*Y9017D01*\r
+Y9271D02*X27838Y9398D01*\r
+X28092D01*\r
+X28219Y9271D01*\r
+Y9017D01*\r
+X28092Y8890D02*X28219Y9017D01*\r
+X27838Y8890D02*X28092D01*\r
+X27711Y9017D02*X27838Y8890D01*\r
+X28651Y9271D02*Y8890D01*\r
+Y9271D02*X28778Y9398D01*\r
+X28905D01*\r
+X29032Y9271D01*\r
+Y8890D01*\r
+X28524Y9398D02*X28651Y9271D01*\r
+X30302Y9906D02*X30429Y9779D01*\r
+X29921Y9906D02*X30302D01*\r
+X29794Y9779D02*X29921Y9906D01*\r
+X29794Y9779D02*Y9525D01*\r
+X29921Y9398D01*\r
+X30302D01*\r
+X30429Y9271D01*\r
+Y9017D01*\r
+X30302Y8890D02*X30429Y9017D01*\r
+X29921Y8890D02*X30302D01*\r
+X29794Y9017D02*X29921Y8890D01*\r
+X31115Y9398D02*X31242Y9271D01*\r
+X30861Y9398D02*X31115D01*\r
+X30734Y9271D02*X30861Y9398D01*\r
+X30734Y9271D02*Y9017D01*\r
+X30861Y8890D01*\r
+X31242Y9398D02*Y9017D01*\r
+X31369Y8890D01*\r
+X30861D02*X31115D01*\r
+X31242Y9017D01*\r
+X31801Y9271D02*Y8890D01*\r
+Y9271D02*X31928Y9398D01*\r
+X32055D01*\r
+X32182Y9271D01*\r
+Y8890D01*\r
+X31674Y9398D02*X31801Y9271D01*\r
+X32614Y9906D02*Y9017D01*\r
+X32741Y8890D01*\r
+X32487Y9525D02*X32741D01*\r
+X32995Y9652D02*Y9525D01*\r
+Y9271D02*Y8890D01*\r
+X33376Y9271D02*Y8890D01*\r
+Y9271D02*X33503Y9398D01*\r
+X33630D01*\r
+X33757Y9271D01*\r
+Y8890D01*\r
+X33249Y9398D02*X33376Y9271D01*\r
+X34061Y9652D02*Y9525D01*\r
+Y9271D02*Y8890D01*\r
+X19050Y11684D02*Y10795D01*\r
+Y11684D02*X19177Y11811D01*\r
+X19558D01*\r
+X19685Y11684D01*\r
+Y10795D01*\r
+X19050Y11303D02*X19685D01*\r
+X19990Y11811D02*X20244D01*\r
+X20117D02*Y10795D01*\r
+X19990D02*X20244D01*\r
+X20676D02*X21057D01*\r
+X20549Y10922D02*X20676Y10795D01*\r
+X20549Y11684D02*Y10922D01*\r
+Y11684D02*X20676Y11811D01*\r
+X21057D01*\r
+X21361Y11303D02*X21869D01*\r
+X22174Y11684D02*X22301Y11811D01*\r
+X22682D01*\r
+X22809Y11684D01*\r
+Y11430D01*\r
+X22174Y10795D02*X22809Y11430D01*\r
+X22174Y10795D02*X22809D01*\r
+X23114D02*X23241D01*\r
+X23546Y11684D02*X23673Y11811D01*\r
+X24054D01*\r
+X24181Y11684D01*\r
+Y11430D01*\r
+X23546Y10795D02*X24181Y11430D01*\r
+X23546Y10795D02*X24181D01*\r
+X24486D02*X24613D01*\r
+X24917Y10922D02*X25044Y10795D01*\r
+X24917Y11684D02*Y10922D01*\r
+Y11684D02*X25044Y11811D01*\r
+X25298D01*\r
+X25425Y11684D01*\r
+Y10922D01*\r
+X25298Y10795D02*X25425Y10922D01*\r
+X25044Y10795D02*X25298D01*\r
+X24917Y11049D02*X25425Y11557D01*\r
+X26187Y10922D02*X26314Y10795D01*\r
+X26187Y11684D02*X26314Y11811D01*\r
+X26187Y11684D02*Y10922D01*\r
+X26746Y11303D02*X27127D01*\r
+X26619Y11176D02*X26746Y11303D01*\r
+X26619Y11176D02*Y10922D01*\r
+X26746Y10795D01*\r
+X27127D01*\r
+X27432Y11811D02*X27559Y11684D01*\r
+Y10922D01*\r
+X27432Y10795D02*X27559Y10922D01*\r
+X28321Y11684D02*X28448Y11811D01*\r
+X28829D01*\r
+X28956Y11684D01*\r
+Y11430D01*\r
+X28321Y10795D02*X28956Y11430D01*\r
+X28321Y10795D02*X28956D01*\r
+X29261Y10922D02*X29388Y10795D01*\r
+X29261Y11684D02*Y10922D01*\r
+Y11684D02*X29388Y11811D01*\r
+X29642D01*\r
+X29769Y11684D01*\r
+Y10922D01*\r
+X29642Y10795D02*X29769Y10922D01*\r
+X29388Y10795D02*X29642D01*\r
+X29261Y11049D02*X29769Y11557D01*\r
+X30074Y10922D02*X30201Y10795D01*\r
+X30074Y11684D02*Y10922D01*\r
+Y11684D02*X30201Y11811D01*\r
+X30455D01*\r
+X30582Y11684D01*\r
+Y10922D01*\r
+X30455Y10795D02*X30582Y10922D01*\r
+X30201Y10795D02*X30455D01*\r
+X30074Y11049D02*X30582Y11557D01*\r
+X30886Y10795D02*X31394Y11303D01*\r
+Y11684D02*Y11303D01*\r
+X31267Y11811D02*X31394Y11684D01*\r
+X31013Y11811D02*X31267D01*\r
+X30886Y11684D02*X31013Y11811D01*\r
+X30886Y11684D02*Y11430D01*\r
+X31013Y11303D01*\r
+X31394D01*\r
+X19050Y6096D02*X19558D01*\r
+X19685Y5969D01*\r
+Y5715D01*\r
+X19558Y5588D02*X19685Y5715D01*\r
+X19177Y5588D02*X19558D01*\r
+X19177Y6096D02*Y5080D01*\r
+Y5588D02*X19685Y5080D01*\r
+X19990Y5461D02*Y5207D01*\r
+Y5461D02*X20117Y5588D01*\r
+X20371D01*\r
+X20498Y5461D01*\r
+Y5207D01*\r
+X20371Y5080D02*X20498Y5207D01*\r
+X20117Y5080D02*X20371D01*\r
+X19990Y5207D02*X20117Y5080D01*\r
+X21311Y6096D02*Y5080D01*\r
+X21184D02*X21311Y5207D01*\r
+X20930Y5080D02*X21184D01*\r
+X20803Y5207D02*X20930Y5080D01*\r
+X20803Y5461D02*Y5207D01*\r
+Y5461D02*X20930Y5588D01*\r
+X21184D01*\r
+X21311Y5461D01*\r
+X21742D02*Y5080D01*\r
+Y5461D02*X21869Y5588D01*\r
+X22123D01*\r
+X21615D02*X21742Y5461D01*\r
+X22428Y5842D02*Y5715D01*\r
+Y5461D02*Y5080D01*\r
+X23063Y5588D02*X23190Y5461D01*\r
+X22809Y5588D02*X23063D01*\r
+X22682Y5461D02*X22809Y5588D01*\r
+X22682Y5461D02*Y5207D01*\r
+X22809Y5080D01*\r
+X23063D01*\r
+X23190Y5207D01*\r
+X22682Y4826D02*X22809Y4699D01*\r
+X23063D01*\r
+X23190Y4826D01*\r
+Y5588D02*Y4826D01*\r
+X23495Y5461D02*Y5207D01*\r
+Y5461D02*X23622Y5588D01*\r
+X23876D01*\r
+X24003Y5461D01*\r
+Y5207D01*\r
+X23876Y5080D02*X24003Y5207D01*\r
+X23622Y5080D02*X23876D01*\r
+X23495Y5207D02*X23622Y5080D01*\r
+X24892Y6096D02*Y5080D01*\r
+X25273Y6096D02*X25400Y5969D01*\r
+Y5207D01*\r
+X25273Y5080D02*X25400Y5207D01*\r
+X24765Y5080D02*X25273D01*\r
+X24765Y6096D02*X25273D01*\r
+X26086Y5588D02*X26213Y5461D01*\r
+X25832Y5588D02*X26086D01*\r
+X25705Y5461D02*X25832Y5588D01*\r
+X25705Y5461D02*Y5207D01*\r
+X25832Y5080D01*\r
+X26213Y5588D02*Y5207D01*\r
+X26340Y5080D01*\r
+X25832D02*X26086D01*\r
+X26213Y5207D01*\r
+X26772Y5461D02*Y5080D01*\r
+Y5461D02*X26899Y5588D01*\r
+X27026D01*\r
+X27153Y5461D01*\r
+Y5080D01*\r
+X26645Y5588D02*X26772Y5461D01*\r
+X27457Y5842D02*Y5715D01*\r
+Y5461D02*Y5080D01*\r
+X27838D02*X28219D01*\r
+X27711Y5207D02*X27838Y5080D01*\r
+X27711Y5461D02*Y5207D01*\r
+Y5461D02*X27838Y5588D01*\r
+X28092D01*\r
+X28219Y5461D01*\r
+X27711Y5334D02*X28219D01*\r
+Y5461D02*Y5334D01*\r
+X28524Y6096D02*Y5207D01*\r
+X28651Y5080D01*\r
+X29362Y6096D02*X29870D01*\r
+X29616D02*Y5080D01*\r
+X30302Y5461D02*Y5080D01*\r
+Y5461D02*X30429Y5588D01*\r
+X30683D01*\r
+X30175D02*X30302Y5461D01*\r
+X31115Y5080D02*X31496D01*\r
+X30988Y5207D02*X31115Y5080D01*\r
+X30988Y5461D02*Y5207D01*\r
+Y5461D02*X31115Y5588D01*\r
+X31369D01*\r
+X31496Y5461D01*\r
+X30988Y5334D02*X31496D01*\r
+Y5461D02*Y5334D01*\r
+X31801Y5588D02*Y5334D01*\r
+X32055Y5080D01*\r
+X32309Y5334D01*\r
+Y5588D02*Y5334D01*\r
+X32614Y5842D02*Y5715D01*\r
+Y5461D02*Y5080D01*\r
+X32868Y5588D02*X33376D01*\r
+X32868Y5080D02*X33376Y5588D01*\r
+X32868Y5080D02*X33376D01*\r
+X34061Y5588D02*X34188Y5461D01*\r
+X33807Y5588D02*X34061D01*\r
+X33680Y5461D02*X33807Y5588D01*\r
+X33680Y5461D02*Y5207D01*\r
+X33807Y5080D01*\r
+X34188Y5588D02*Y5207D01*\r
+X34315Y5080D01*\r
+X33807D02*X34061D01*\r
+X34188Y5207D01*\r
+X34747Y5461D02*Y5080D01*\r
+Y5461D02*X34874Y5588D01*\r
+X35001D01*\r
+X35128Y5461D01*\r
+Y5080D01*\r
+X34620Y5588D02*X34747Y5461D01*\r
+G54D45*G36*\r
+X56388Y85852D02*Y84328D01*\r
+X57912D01*\r
+Y85852D01*\r
+X56388D01*\r
+G37*\r
+G54D43*X59690Y85090D03*\r
+G54D45*G36*\r
+X93853Y85852D02*Y84328D01*\r
+X95377D01*\r
+Y85852D01*\r
+X93853D01*\r
+G37*\r
+G54D43*X97155Y85090D03*\r
+X99695D03*\r
+X102235D03*\r
+X64770Y92710D03*\r
+X62230D03*\r
+X59690D03*\r
+G54D45*G36*\r
+X72898Y92202D02*Y90678D01*\r
+X74422D01*\r
+Y92202D01*\r
+X72898D01*\r
+G37*\r
+G54D43*X71120Y91440D03*\r
+X57150Y92710D03*\r
+G54D45*G36*\r
+X49403Y97282D02*Y95758D01*\r
+X50927D01*\r
+Y97282D01*\r
+X49403D01*\r
+G37*\r
+G54D43*X45085Y96520D03*\r
+G54D45*G36*\r
+X49403Y91567D02*Y90043D01*\r
+X50927D01*\r
+Y91567D01*\r
+X49403D01*\r
+G37*\r
+G54D43*X45085Y90805D03*\r
+G54D45*G36*\r
+X48133Y85852D02*Y84328D01*\r
+X49657D01*\r
+Y85852D01*\r
+X48133D01*\r
+G37*\r
+G54D43*X51435Y85090D03*\r
+G54D45*G36*\r
+X86868Y94742D02*Y93218D01*\r
+X88392D01*\r
+Y94742D01*\r
+X86868D01*\r
+G37*\r
+G54D43*X87630Y83820D03*\r
+X86360Y71120D03*\r
+X88900D03*\r
+Y78740D03*\r
+X86360D03*\r
+G54D45*G36*\r
+X93853Y71882D02*Y70358D01*\r
+X95377D01*\r
+Y71882D01*\r
+X93853D01*\r
+G37*\r
+G54D43*X97155Y71120D03*\r
+X99695D03*\r
+X102235D03*\r
+Y78740D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D45*G36*\r
+X79248Y93472D02*Y91948D01*\r
+X80772D01*\r
+Y93472D01*\r
+X79248D01*\r
+G37*\r
+G54D43*X80010Y90170D03*\r
+G54D45*G36*\r
+X100203Y97282D02*Y95758D01*\r
+X101727D01*\r
+Y97282D01*\r
+X100203D01*\r
+G37*\r
+G54D43*X95885Y96520D03*\r
+X102235Y92710D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D45*G36*\r
+X116078Y94742D02*Y93218D01*\r
+X117602D01*\r
+Y94742D01*\r
+X116078D01*\r
+G37*\r
+G54D43*X107950Y93980D03*\r
+G54D45*G36*\r
+X128143Y97282D02*Y95758D01*\r
+X129667D01*\r
+Y97282D01*\r
+X128143D01*\r
+G37*\r
+G54D43*X123825Y96520D03*\r
+X112395Y93980D03*\r
+X130175Y92710D03*\r
+G54D45*G36*\r
+X134493Y94742D02*Y93218D01*\r
+X136017D01*\r
+Y94742D01*\r
+X134493D01*\r
+G37*\r
+G54D43*X127635Y92710D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D45*G36*\r
+X107188Y80772D02*Y79248D01*\r
+X108712D01*\r
+Y80772D01*\r
+X107188D01*\r
+G37*\r
+G54D43*X116840Y83820D03*\r
+G54D45*G36*\r
+X107188Y84582D02*Y83058D01*\r
+X108712D01*\r
+Y84582D01*\r
+X107188D01*\r
+G37*\r
+G36*\r
+X111633Y80772D02*Y79248D01*\r
+X113157D01*\r
+Y80772D01*\r
+X111633D01*\r
+G37*\r
+G36*\r
+X116078Y73152D02*Y71628D01*\r
+X117602D01*\r
+Y73152D01*\r
+X116078D01*\r
+G37*\r
+G54D43*X116840Y77470D03*\r
+G54D45*G36*\r
+X121793Y71882D02*Y70358D01*\r
+X123317D01*\r
+Y71882D01*\r
+X121793D01*\r
+G37*\r
+G54D43*X125095Y71120D03*\r
+X127635D03*\r
+X130175D03*\r
+X132715D03*\r
+X135255D03*\r
+X137795D03*\r
+X140335D03*\r
+X142875D03*\r
+X145415D03*\r
+X147955D03*\r
+Y78740D03*\r
+X145415D03*\r
+X142875D03*\r
+X140335D03*\r
+X137795D03*\r
+X135255D03*\r
+X132715D03*\r
+X130175D03*\r
+X127635D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D45*G36*\r
+X138303Y84582D02*Y83058D01*\r
+X139827D01*\r
+Y84582D01*\r
+X138303D01*\r
+G37*\r
+G54D43*X130175Y85090D03*\r
+X135255Y83820D03*\r
+G54D45*G36*\r
+X111633Y84582D02*Y83058D01*\r
+X113157D01*\r
+Y84582D01*\r
+X111633D01*\r
+G37*\r
+G36*\r
+X121793Y85852D02*Y84328D01*\r
+X123317D01*\r
+Y85852D01*\r
+X121793D01*\r
+G37*\r
+G54D43*X125095Y85090D03*\r
+X127635D03*\r
+G54D41*X168275Y97155D03*\r
+D03*\r
+G54D45*G36*\r
+X164973Y92837D02*Y91313D01*\r
+X166497D01*\r
+Y92837D01*\r
+X164973D01*\r
+G37*\r
+G54D43*X163195Y92075D03*\r
+X165735Y89535D03*\r
+Y86995D03*\r
+X163195Y89535D03*\r
+Y86995D03*\r
+X160655Y92075D03*\r
+Y89535D03*\r
+Y86995D03*\r
+X150495Y71120D03*\r
+Y78740D03*\r
+X153035Y71120D03*\r
+X155575D03*\r
+Y78740D03*\r
+X153035D03*\r
+X165735Y79375D03*\r
+Y76835D03*\r
+Y74295D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y71755D03*\r
+X163195D03*\r
+X160655D03*\r
+X163195Y79375D03*\r
+Y76835D03*\r
+X160655Y79375D03*\r
+Y76835D03*\r
+X139065Y93980D03*\r
+X142875D03*\r
+G54D45*G36*\r
+X153543Y97282D02*Y95758D01*\r
+X155067D01*\r
+Y97282D01*\r
+X153543D01*\r
+G37*\r
+G54D43*X149225Y96520D03*\r
+X155575Y92710D03*\r
+X153035D03*\r
+X150495D03*\r
+X147955D03*\r
+G54D45*G36*\r
+X142113Y84582D02*Y83058D01*\r
+X143637D01*\r
+Y84582D01*\r
+X142113D01*\r
+G37*\r
+G36*\r
+X147193Y85852D02*Y84328D01*\r
+X148717D01*\r
+Y85852D01*\r
+X147193D01*\r
+G37*\r
+G54D43*X150495Y85090D03*\r
+X153035D03*\r
+X155575D03*\r
+X165735Y84455D03*\r
+Y81915D03*\r
+X163195Y84455D03*\r
+Y81915D03*\r
+X160655Y84455D03*\r
+Y81915D03*\r
+G54D45*G36*\r
+X120269Y13716D02*Y11684D01*\r
+X122301D01*\r
+Y13716D01*\r
+X120269D01*\r
+G37*\r
+G54D46*X118745Y12700D03*\r
+X116205D03*\r
+G54D45*G36*\r
+X87884Y13716D02*Y11684D01*\r
+X89916D01*\r
+Y13716D01*\r
+X87884D01*\r
+G37*\r
+G54D46*X86360Y12700D03*\r
+X83820D03*\r
+G54D45*G36*\r
+X120269Y32766D02*Y30734D01*\r
+X122301D01*\r
+Y32766D01*\r
+X120269D01*\r
+G37*\r
+G54D46*X118745Y31750D03*\r
+X116205D03*\r
+G54D45*G36*\r
+X87884Y32766D02*Y30734D01*\r
+X89916D01*\r
+Y32766D01*\r
+X87884D01*\r
+G37*\r
+G54D46*X86360Y31750D03*\r
+X83820D03*\r
+G54D45*G36*\r
+X87884Y51816D02*Y49784D01*\r
+X89916D01*\r
+Y51816D01*\r
+X87884D01*\r
+G37*\r
+G54D46*X86360Y50800D03*\r
+X83820D03*\r
+G54D45*G36*\r
+X15050Y30670D02*Y29020D01*\r
+X16700D01*\r
+Y30670D01*\r
+X15050D01*\r
+G37*\r
+G54D38*X15875Y32385D03*\r
+G54D45*G36*\r
+X15050Y40196D02*Y38544D01*\r
+X16700D01*\r
+Y40196D01*\r
+X15050D01*\r
+G37*\r
+G54D38*X15875Y41910D03*\r
+G54D41*X14605Y8585D03*\r
+G54D45*G36*\r
+X13208Y23622D02*Y22098D01*\r
+X14732D01*\r
+Y23622D01*\r
+X13208D01*\r
+G37*\r
+G54D43*X13970Y18364D03*\r
+G54D42*X16459Y17094D03*\r
+Y24105D03*\r
+G54D41*X14605Y97155D03*\r
+G54D47*X19050Y84963D03*\r
+G54D45*G36*\r
+X15050Y49720D02*Y48070D01*\r
+X16700D01*\r
+Y49720D01*\r
+X15050D01*\r
+G37*\r
+G54D38*X15875Y51435D03*\r
+G54D47*X19050Y60173D03*\r
+G54D45*G36*\r
+X19558Y78867D02*Y77343D01*\r
+X21082D01*\r
+Y78867D01*\r
+X19558D01*\r
+G37*\r
+G54D43*X17780Y76733D03*\r
+X20320Y75336D03*\r
+X17780Y73965D03*\r
+X20320Y72568D03*\r
+X17780Y71196D03*\r
+X20320Y69799D03*\r
+Y67031D03*\r
+X17780Y68428D03*\r
+G54D45*G36*\r
+X54483Y60452D02*Y58928D01*\r
+X56007D01*\r
+Y60452D01*\r
+X54483D01*\r
+G37*\r
+G36*\r
+X54546Y66738D02*Y65342D01*\r
+X55944D01*\r
+Y66738D01*\r
+X54546D01*\r
+G37*\r
+G36*\r
+Y45148D02*Y43752D01*\r
+X55944D01*\r
+Y45148D01*\r
+X54546D01*\r
+G37*\r
+G54D43*X55245Y39370D03*\r
+X45085Y59690D03*\r
+G54D48*Y66040D03*\r
+Y44450D03*\r
+G54D45*G36*\r
+X44323Y40132D02*Y38608D01*\r
+X45847D01*\r
+Y40132D01*\r
+X44323D01*\r
+G37*\r
+G36*\r
+X60833Y66802D02*Y65278D01*\r
+X62357D01*\r
+Y66802D01*\r
+X60833D01*\r
+G37*\r
+G36*\r
+Y60452D02*Y58928D01*\r
+X62357D01*\r
+Y60452D01*\r
+X60833D01*\r
+G37*\r
+G54D43*X64135Y59690D03*\r
+Y66040D03*\r
+G54D45*G36*\r
+X80518Y66802D02*Y65278D01*\r
+X82042D01*\r
+Y66802D01*\r
+X80518D01*\r
+G37*\r
+G54D43*X78740Y66040D03*\r
+G54D45*G36*\r
+X58293Y50292D02*Y48768D01*\r
+X59817D01*\r
+Y50292D01*\r
+X58293D01*\r
+G37*\r
+G54D48*X59055Y44450D03*\r
+G54D45*G36*\r
+X58293Y40132D02*Y38608D01*\r
+X59817D01*\r
+Y40132D01*\r
+X58293D01*\r
+G37*\r
+G36*\r
+X58356Y55308D02*Y53912D01*\r
+X59754D01*\r
+Y55308D01*\r
+X58356D01*\r
+G37*\r
+G54D43*X69215Y49530D03*\r
+G54D45*G36*\r
+X68516Y45148D02*Y43752D01*\r
+X69914D01*\r
+Y45148D01*\r
+X68516D01*\r
+G37*\r
+G54D43*X69215Y39370D03*\r
+G54D48*Y54610D03*\r
+G54D45*G36*\r
+X48768Y16002D02*Y14478D01*\r
+X50292D01*\r
+Y16002D01*\r
+X48768D01*\r
+G37*\r
+G54D43*X52070Y15240D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X62230D03*\r
+X64770D03*\r
+Y22860D03*\r
+X62230D03*\r
+G54D45*G36*\r
+X70358Y85852D02*Y84328D01*\r
+X71882D01*\r
+Y85852D01*\r
+X70358D01*\r
+G37*\r
+G54D43*X73660Y85090D03*\r
+X62230D03*\r
+X64770D03*\r
+X83820Y71120D03*\r
+Y78740D03*\r
+X81280D03*\r
+X78740D03*\r
+X76200D03*\r
+X73660D03*\r
+G54D45*G36*\r
+X62738Y97282D02*Y95758D01*\r
+X64262D01*\r
+Y97282D01*\r
+X62738D01*\r
+G37*\r
+G54D43*X58420Y96520D03*\r
+G54D45*G36*\r
+X77978Y85852D02*Y84328D01*\r
+X79502D01*\r
+Y85852D01*\r
+X77978D01*\r
+G37*\r
+G54D43*X81280Y85090D03*\r
+G54D45*G36*\r
+X44323Y78232D02*Y76708D01*\r
+X45847D01*\r
+Y78232D01*\r
+X44323D01*\r
+G37*\r
+G54D43*X45085Y72390D03*\r
+G54D45*G36*\r
+X48768Y71882D02*Y70358D01*\r
+X50292D01*\r
+Y71882D01*\r
+X48768D01*\r
+G37*\r
+G54D43*X52070Y71120D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X54610Y78740D03*\r
+G54D45*G36*\r
+X44386Y55308D02*Y53912D01*\r
+X45784D01*\r
+Y55308D01*\r
+X44386D01*\r
+G37*\r
+G54D43*X52070Y78740D03*\r
+X49530D03*\r
+G54D48*X55245Y54610D03*\r
+G54D45*G36*\r
+X72263Y66802D02*Y65278D01*\r
+X73787D01*\r
+Y66802D01*\r
+X72263D01*\r
+G37*\r
+G54D43*X70485Y66040D03*\r
+G54D45*G36*\r
+X70358Y71882D02*Y70358D01*\r
+X71882D01*\r
+Y71882D01*\r
+X70358D01*\r
+G37*\r
+G54D43*X73660Y71120D03*\r
+X76200D03*\r
+X78740D03*\r
+X81280D03*\r
+X62230D03*\r
+X64770D03*\r
+X71120Y78740D03*\r
+X64770D03*\r
+X62230D03*\r
+X59690D03*\r
+Y22860D03*\r
+G54D45*G36*\r
+X60833Y35052D02*Y33528D01*\r
+X62357D01*\r
+Y35052D01*\r
+X60833D01*\r
+G37*\r
+G54D43*X57150Y78740D03*\r
+Y22860D03*\r
+G54D45*G36*\r
+X44323Y50292D02*Y48768D01*\r
+X45847D01*\r
+Y50292D01*\r
+X44323D01*\r
+G37*\r
+G54D43*X55245Y49530D03*\r
+X54610Y22860D03*\r
+X52070D03*\r
+X49530D03*\r
+G54D45*G36*\r
+X44323Y22352D02*Y20828D01*\r
+X45847D01*\r
+Y22352D01*\r
+X44323D01*\r
+G37*\r
+G54D43*X45085Y16510D03*\r
+G54D45*G36*\r
+X54483Y28702D02*Y27178D01*\r
+X56007D01*\r
+Y28702D01*\r
+X54483D01*\r
+G37*\r
+G36*\r
+X60833D02*Y27178D01*\r
+X62357D01*\r
+Y28702D01*\r
+X60833D01*\r
+G37*\r
+G54D43*X64135Y27940D03*\r
+Y34290D03*\r
+G54D45*G36*\r
+X54546Y34988D02*Y33592D01*\r
+X55944D01*\r
+Y34988D01*\r
+X54546D01*\r
+G37*\r
+G54D43*X45085Y27940D03*\r
+G54D48*Y34290D03*\r
+G54D43*X107950Y69850D03*\r
+G54D45*G36*\r
+X120269Y51816D02*Y49784D01*\r
+X122301D01*\r
+Y51816D01*\r
+X120269D01*\r
+G37*\r
+G54D46*X118745Y50800D03*\r
+X116205D03*\r
+G54D43*X112395Y69850D03*\r
+G54D45*G36*\r
+X155448Y66802D02*Y65278D01*\r
+X156972D01*\r
+Y66802D01*\r
+X155448D01*\r
+G37*\r
+G54D43*X160655Y66675D03*\r
+Y64135D03*\r
+X165735Y69215D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y66675D03*\r
+X163195D03*\r
+Y64135D03*\r
+Y61595D03*\r
+X165735Y64135D03*\r
+Y61595D03*\r
+X160655D03*\r
+Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+Y51435D03*\r
+X146050Y66040D03*\r
+G54D45*G36*\r
+X140843Y66802D02*Y65278D01*\r
+X142367D01*\r
+Y66802D01*\r
+X140843D01*\r
+G37*\r
+G54D43*X131445Y66040D03*\r
+X127000D03*\r
+G54D45*G36*\r
+X86233Y66802D02*Y65278D01*\r
+X87757D01*\r
+Y66802D01*\r
+X86233D01*\r
+G37*\r
+G54D43*X97155Y66040D03*\r
+G54D45*G36*\r
+X110998Y66802D02*Y65278D01*\r
+X112522D01*\r
+Y66802D01*\r
+X110998D01*\r
+G37*\r
+G54D43*X101600Y66040D03*\r
+G54D45*G36*\r
+X116078Y66802D02*Y65278D01*\r
+X117602D01*\r
+Y66802D01*\r
+X116078D01*\r
+G37*\r
+G36*\r
+X155448Y10922D02*Y9398D01*\r
+X156972D01*\r
+Y10922D01*\r
+X155448D01*\r
+G37*\r
+G54D43*X156210Y7620D03*\r
+G54D45*G36*\r
+X155448Y16002D02*Y14478D01*\r
+X156972D01*\r
+Y16002D01*\r
+X155448D01*\r
+G37*\r
+G54D43*X156210Y17780D03*\r
+G54D41*X168275Y8585D03*\r
+Y8255D03*\r
+G54D45*G36*\r
+X149733Y8382D02*Y6858D01*\r
+X151257D01*\r
+Y8382D01*\r
+X149733D01*\r
+G37*\r
+G54D43*X150495Y12700D03*\r
+G54D45*G36*\r
+X139573Y13462D02*Y11938D01*\r
+X141097D01*\r
+Y13462D01*\r
+X139573D01*\r
+G37*\r
+G54D43*X140335Y7620D03*\r
+G54D45*G36*\r
+X145288Y8382D02*Y6858D01*\r
+X146812D01*\r
+Y8382D01*\r
+X145288D01*\r
+G37*\r
+G54D43*X146050Y12700D03*\r
+X165735Y15875D03*\r
+Y13335D03*\r
+X163195Y15875D03*\r
+Y13335D03*\r
+X160655Y15875D03*\r
+Y13335D03*\r
+G54D45*G36*\r
+X139065Y29210D02*Y26670D01*\r
+X141605D01*\r
+Y29210D01*\r
+X139065D01*\r
+G37*\r
+G54D44*X150495Y27940D03*\r
+G54D45*G36*\r
+X139065Y53975D02*Y51435D01*\r
+X141605D01*\r
+Y53975D01*\r
+X139065D01*\r
+G37*\r
+G54D44*X150495Y52705D03*\r
+G54D43*X165735Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X163195Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X165735Y51435D03*\r
+Y48895D03*\r
+Y46355D03*\r
+X163195Y51435D03*\r
+Y48895D03*\r
+X160655D03*\r
+X165735Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+Y43815D03*\r
+X163195D03*\r
+Y46355D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+X160655Y46355D03*\r
+Y43815D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+G54D41*X86360Y43815D03*\r
+G54D49*X92710Y23495D03*\r
+X80010Y33020D03*\r
+X91440Y46355D03*\r
+X89535Y74295D03*\r
+X88900Y73025D03*\r
+X80010Y69850D03*\r
+X82550Y63500D03*\r
+G54D50*X91440Y67945D03*\r
+G54D51*X126365Y10160D03*\r
+Y36195D03*\r
+G54D43*X138430Y15875D03*\r
+G54D51*X94615Y10160D03*\r
+G54D43*X101600Y21590D03*\r
+X97790Y17780D03*\r
+G54D46*X99695Y19685D03*\r
+G54D41*X140335Y43815D03*\r
+G54D52*X156210Y31115D03*\r
+G54D41*Y47625D03*\r
+G54D43*X153670Y15240D03*\r
+G54D46*X140335Y17780D03*\r
+G54D41*X150495Y40005D03*\r
+G54D53*X135255Y4445D03*\r
+G54D41*Y40005D03*\r
+G54D43*X109855Y15240D03*\r
+G54D49*X26035Y71120D03*\r
+G54D43*X38735Y88265D03*\r
+X40640Y85090D03*\r
+G54D49*X26035Y75565D03*\r
+G54D43*X47625Y76835D03*\r
+X40640Y72390D03*\r
+G54D49*X22225Y69850D03*\r
+X23495Y68580D03*\r
+X40640Y56515D03*\r
+G54D43*X38735Y57785D03*\r
+X45085Y62230D03*\r
+X40640D03*\r
+X47625Y59690D03*\r
+G54D49*X53340Y93980D03*\r
+G54D43*X66675Y76835D03*\r
+Y52705D03*\r
+G54D49*X77470Y68580D03*\r
+X72390Y76835D03*\r
+G54D43*X74930Y88900D03*\r
+G54D38*X68580Y66040D03*\r
+G54D43*X60960Y20320D03*\r
+X57150Y24765D03*\r
+X64135Y31750D03*\r
+Y24765D03*\r
+G54D49*X39370Y10795D03*\r
+G54D43*X49530Y7620D03*\r
+G54D49*X52070Y13335D03*\r
+X54610Y12065D03*\r
+X57150Y10795D03*\r
+X39370Y34290D03*\r
+X41910Y13335D03*\r
+G54D51*X48260Y24765D03*\r
+G54D49*X40640Y12065D03*\r
+X71755Y41910D03*\r
+G54D43*X45085Y31750D03*\r
+X55245Y47625D03*\r
+X57150Y29845D03*\r
+X61595Y31750D03*\r
+G54D42*X48260Y34290D03*\r
+G54D43*X52705Y39370D03*\r
+X71120Y81915D03*\r
+G54D49*X62865Y99695D03*\r
+G54D51*X68580Y96520D03*\r
+G54D49*X50800Y66040D03*\r
+Y73025D03*\r
+G54D43*X61595Y62230D03*\r
+G54D49*X57150Y56515D03*\r
+Y60960D03*\r
+G54D43*X66675Y59690D03*\r
+G54D42*X68580Y73025D03*\r
+G54D49*X80010Y67945D03*\r
+X74930Y69850D03*\r
+X100965Y67945D03*\r
+G54D50*X98425D03*\r
+G54D49*X93345Y80645D03*\r
+X91440Y66040D03*\r
+X92710Y64770D03*\r
+G54D51*X91440Y96520D03*\r
+G54D49*X106045Y101600D03*\r
+X89535Y60960D03*\r
+X87630Y67945D03*\r
+X84455Y59690D03*\r
+X78740Y80645D03*\r
+X95885Y75565D03*\r
+G54D43*X76835Y81915D03*\r
+G54D51*X83185Y96520D03*\r
+G54D49*X85090Y94615D03*\r
+X128905Y68580D03*\r
+X125095Y59690D03*\r
+X122555Y66040D03*\r
+X128905Y74930D03*\r
+X150495D03*\r
+X121920Y76200D03*\r
+X112395Y74930D03*\r
+X135255Y89535D03*\r
+X95885Y83185D03*\r
+G54D43*X132080Y86360D03*\r
+G54D49*X94615Y66040D03*\r
+G54D43*X97790Y62230D03*\r
+X131445D03*\r
+G54D49*X139065Y90805D03*\r
+X142875Y88265D03*\r
+X133985Y82550D03*\r
+X135255Y81915D03*\r
+G54D51*X153035Y64135D03*\r
+G54D49*X143510Y63500D03*\r
+X138430Y67310D03*\r
+X141605Y60325D03*\r
+X155575Y81915D03*\r
+G54D43*X156210Y76835D03*\r
+G54D49*X112395Y87630D03*\r
+X121285Y98425D03*\r
+X112395Y99695D03*\r
+X110490Y92710D03*\r
+X108585Y99695D03*\r
+X102235D03*\r
+X106045Y93980D03*\r
+G54D51*X104140Y86360D03*\r
+G54D43*X120015Y62230D03*\r
+G54D49*X107950Y74930D03*\r
+G54D43*X101600Y62230D03*\r
+G54D48*X109855Y57785D03*\r
+G54D49*X121285Y74930D03*\r
+G54D43*X120015Y81915D03*\r
+G54D49*X121285Y77470D03*\r
+G54D43*X116840Y86360D03*\r
+G54D48*G54D40*G54D39*G54D48*G54D39*G54D48*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D39*G54D40*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D46*G54D55*G54D54*G54D55*G54D39*G54D54*G54D39*G54D54*G54D55*G54D56*G54D57*G54D46*G54D56*G54D58*G54D46*G54D41*G54D57*G54D41*G54D39*G54D55*G54D39*G54D55*G54D39*G54D55*G54D39*G54D55*G54D39*G54D55*G54D39*G54D55*G54D54*G54D39*G54D54*G54D39*G54D54*G54D55*G54D54*G54D55*G54D39*G54D54*G54D39*G54D54*G54D39*G54D54*G54D39*G54D55*G54D39*G54D55*G54D39*G54D56*G54D39*G54D55*G54D39*G54D46*G54D54*G54D55*G54D43*G54D55*M02*\r
--- /dev/null
+G04 start of page 5 for group -4063 idx -4063 *\r
+G04 Title: (unknown), componentmask *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNTOPMASK*%\r
+%ADD79C,2.692*%\r
+%ADD78C,1.549*%\r
+%ADD77C,3.708*%\r
+%ADD76C,1.930*%\r
+%ADD75C,1.803*%\r
+%ADD74C,2.184*%\r
+%ADD73C,3.200*%\r
+%ADD72C,1.676*%\r
+%ADD71C,0.002*%\r
+%ADD70C,0.203*%\r
+G54D70*X0Y104140D02*X180340D01*\r
+X0D02*Y0D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+G54D71*G36*\r
+X56312Y85928D02*Y84252D01*\r
+X57988D01*\r
+Y85928D01*\r
+X56312D01*\r
+G37*\r
+G54D72*X59690Y85090D03*\r
+G54D71*G36*\r
+X93777Y85928D02*Y84252D01*\r
+X95453D01*\r
+Y85928D01*\r
+X93777D01*\r
+G37*\r
+G54D72*X97155Y85090D03*\r
+X99695D03*\r
+X102235D03*\r
+X64770Y92710D03*\r
+X62230D03*\r
+X59690D03*\r
+G54D71*G36*\r
+X72822Y92278D02*Y90602D01*\r
+X74498D01*\r
+Y92278D01*\r
+X72822D01*\r
+G37*\r
+G54D72*X71120Y91440D03*\r
+X57150Y92710D03*\r
+G54D71*G36*\r
+X49327Y97358D02*Y95682D01*\r
+X51003D01*\r
+Y97358D01*\r
+X49327D01*\r
+G37*\r
+G54D72*X45085Y96520D03*\r
+G54D71*G36*\r
+X49327Y91643D02*Y89967D01*\r
+X51003D01*\r
+Y91643D01*\r
+X49327D01*\r
+G37*\r
+G54D72*X45085Y90805D03*\r
+G54D71*G36*\r
+X48057Y85928D02*Y84252D01*\r
+X49733D01*\r
+Y85928D01*\r
+X48057D01*\r
+G37*\r
+G54D72*X51435Y85090D03*\r
+G54D71*G36*\r
+X86792Y94818D02*Y93142D01*\r
+X88468D01*\r
+Y94818D01*\r
+X86792D01*\r
+G37*\r
+G54D72*X87630Y83820D03*\r
+X86360Y71120D03*\r
+X88900D03*\r
+Y78740D03*\r
+X86360D03*\r
+G54D71*G36*\r
+X93777Y71958D02*Y70282D01*\r
+X95453D01*\r
+Y71958D01*\r
+X93777D01*\r
+G37*\r
+G54D72*X97155Y71120D03*\r
+X99695D03*\r
+X102235D03*\r
+Y78740D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D71*G36*\r
+X79172Y93548D02*Y91872D01*\r
+X80848D01*\r
+Y93548D01*\r
+X79172D01*\r
+G37*\r
+G54D72*X80010Y90170D03*\r
+G54D71*G36*\r
+X100127Y97358D02*Y95682D01*\r
+X101803D01*\r
+Y97358D01*\r
+X100127D01*\r
+G37*\r
+G54D72*X95885Y96520D03*\r
+X102235Y92710D03*\r
+X99695D03*\r
+X97155D03*\r
+X94615D03*\r
+G54D71*G36*\r
+X116002Y94818D02*Y93142D01*\r
+X117678D01*\r
+Y94818D01*\r
+X116002D01*\r
+G37*\r
+G54D72*X107950Y93980D03*\r
+G54D71*G36*\r
+X128067Y97358D02*Y95682D01*\r
+X129743D01*\r
+Y97358D01*\r
+X128067D01*\r
+G37*\r
+G54D72*X123825Y96520D03*\r
+X112395Y93980D03*\r
+X130175Y92710D03*\r
+G54D71*G36*\r
+X134417Y94818D02*Y93142D01*\r
+X136093D01*\r
+Y94818D01*\r
+X134417D01*\r
+G37*\r
+G54D72*X127635Y92710D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D71*G36*\r
+X107112Y80848D02*Y79172D01*\r
+X108788D01*\r
+Y80848D01*\r
+X107112D01*\r
+G37*\r
+G54D72*X116840Y83820D03*\r
+G54D71*G36*\r
+X107112Y84658D02*Y82982D01*\r
+X108788D01*\r
+Y84658D01*\r
+X107112D01*\r
+G37*\r
+G36*\r
+X111557Y80848D02*Y79172D01*\r
+X113233D01*\r
+Y80848D01*\r
+X111557D01*\r
+G37*\r
+G36*\r
+X116002Y73228D02*Y71552D01*\r
+X117678D01*\r
+Y73228D01*\r
+X116002D01*\r
+G37*\r
+G54D72*X116840Y77470D03*\r
+G54D71*G36*\r
+X121717Y71958D02*Y70282D01*\r
+X123393D01*\r
+Y71958D01*\r
+X121717D01*\r
+G37*\r
+G54D72*X125095Y71120D03*\r
+X127635D03*\r
+X130175D03*\r
+X132715D03*\r
+X135255D03*\r
+X137795D03*\r
+X140335D03*\r
+X142875D03*\r
+X145415D03*\r
+X147955D03*\r
+Y78740D03*\r
+X145415D03*\r
+X142875D03*\r
+X140335D03*\r
+X137795D03*\r
+X135255D03*\r
+X132715D03*\r
+X130175D03*\r
+X127635D03*\r
+X125095D03*\r
+X122555D03*\r
+G54D71*G36*\r
+X138227Y84658D02*Y82982D01*\r
+X139903D01*\r
+Y84658D01*\r
+X138227D01*\r
+G37*\r
+G54D72*X130175Y85090D03*\r
+X135255Y83820D03*\r
+G54D71*G36*\r
+X111557Y84658D02*Y82982D01*\r
+X113233D01*\r
+Y84658D01*\r
+X111557D01*\r
+G37*\r
+G36*\r
+X121717Y85928D02*Y84252D01*\r
+X123393D01*\r
+Y85928D01*\r
+X121717D01*\r
+G37*\r
+G54D72*X125095Y85090D03*\r
+X127635D03*\r
+G54D73*X168275Y97155D03*\r
+D03*\r
+G54D71*G36*\r
+X164897Y92913D02*Y91237D01*\r
+X166573D01*\r
+Y92913D01*\r
+X164897D01*\r
+G37*\r
+G54D72*X163195Y92075D03*\r
+X165735Y89535D03*\r
+Y86995D03*\r
+X163195Y89535D03*\r
+Y86995D03*\r
+X160655Y92075D03*\r
+Y89535D03*\r
+Y86995D03*\r
+X150495Y71120D03*\r
+Y78740D03*\r
+X153035Y71120D03*\r
+X155575D03*\r
+Y78740D03*\r
+X153035D03*\r
+X165735Y79375D03*\r
+Y76835D03*\r
+Y74295D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y71755D03*\r
+X163195D03*\r
+X160655D03*\r
+X163195Y79375D03*\r
+Y76835D03*\r
+X160655Y79375D03*\r
+Y76835D03*\r
+X139065Y93980D03*\r
+X142875D03*\r
+G54D71*G36*\r
+X153467Y97358D02*Y95682D01*\r
+X155143D01*\r
+Y97358D01*\r
+X153467D01*\r
+G37*\r
+G54D72*X149225Y96520D03*\r
+X155575Y92710D03*\r
+X153035D03*\r
+X150495D03*\r
+X147955D03*\r
+G54D71*G36*\r
+X142037Y84658D02*Y82982D01*\r
+X143713D01*\r
+Y84658D01*\r
+X142037D01*\r
+G37*\r
+G36*\r
+X147117Y85928D02*Y84252D01*\r
+X148793D01*\r
+Y85928D01*\r
+X147117D01*\r
+G37*\r
+G54D72*X150495Y85090D03*\r
+X153035D03*\r
+X155575D03*\r
+X165735Y84455D03*\r
+Y81915D03*\r
+X163195Y84455D03*\r
+Y81915D03*\r
+X160655Y84455D03*\r
+Y81915D03*\r
+G54D71*G36*\r
+X120193Y13792D02*Y11608D01*\r
+X122377D01*\r
+Y13792D01*\r
+X120193D01*\r
+G37*\r
+G54D74*X118745Y12700D03*\r
+X116205D03*\r
+G54D71*G36*\r
+X87808Y13792D02*Y11608D01*\r
+X89992D01*\r
+Y13792D01*\r
+X87808D01*\r
+G37*\r
+G54D74*X86360Y12700D03*\r
+X83820D03*\r
+G54D71*G36*\r
+X120193Y32842D02*Y30658D01*\r
+X122377D01*\r
+Y32842D01*\r
+X120193D01*\r
+G37*\r
+G54D74*X118745Y31750D03*\r
+X116205D03*\r
+G54D71*G36*\r
+X87808Y32842D02*Y30658D01*\r
+X89992D01*\r
+Y32842D01*\r
+X87808D01*\r
+G37*\r
+G54D74*X86360Y31750D03*\r
+X83820D03*\r
+G54D71*G36*\r
+X87808Y51892D02*Y49708D01*\r
+X89992D01*\r
+Y51892D01*\r
+X87808D01*\r
+G37*\r
+G54D74*X86360Y50800D03*\r
+X83820D03*\r
+G54D71*G36*\r
+X14973Y30747D02*Y28943D01*\r
+X16777D01*\r
+Y30747D01*\r
+X14973D01*\r
+G37*\r
+G54D75*X15875Y32385D03*\r
+G54D71*G36*\r
+X14973Y40272D02*Y38468D01*\r
+X16777D01*\r
+Y40272D01*\r
+X14973D01*\r
+G37*\r
+G54D75*X15875Y41910D03*\r
+G54D73*X14605Y8585D03*\r
+G54D71*G36*\r
+X13132Y23698D02*Y22022D01*\r
+X14808D01*\r
+Y23698D01*\r
+X13132D01*\r
+G37*\r
+G54D72*X13970Y18364D03*\r
+G54D76*X16459Y17094D03*\r
+Y24105D03*\r
+G54D73*X14605Y97155D03*\r
+G54D77*X19050Y84963D03*\r
+G54D71*G36*\r
+X14973Y49797D02*Y47993D01*\r
+X16777D01*\r
+Y49797D01*\r
+X14973D01*\r
+G37*\r
+G54D75*X15875Y51435D03*\r
+G54D77*X19050Y60173D03*\r
+G54D71*G36*\r
+X19482Y78943D02*Y77267D01*\r
+X21158D01*\r
+Y78943D01*\r
+X19482D01*\r
+G37*\r
+G54D72*X17780Y76733D03*\r
+X20320Y75336D03*\r
+X17780Y73965D03*\r
+X20320Y72568D03*\r
+X17780Y71196D03*\r
+X20320Y69799D03*\r
+Y67031D03*\r
+X17780Y68428D03*\r
+G54D71*G36*\r
+X54407Y60528D02*Y58852D01*\r
+X56083D01*\r
+Y60528D01*\r
+X54407D01*\r
+G37*\r
+G36*\r
+X54470Y66815D02*Y65265D01*\r
+X56020D01*\r
+Y66815D01*\r
+X54470D01*\r
+G37*\r
+G36*\r
+Y45225D02*Y43675D01*\r
+X56020D01*\r
+Y45225D01*\r
+X54470D01*\r
+G37*\r
+G54D72*X55245Y39370D03*\r
+X45085Y59690D03*\r
+G54D78*Y66040D03*\r
+Y44450D03*\r
+G54D71*G36*\r
+X44247Y40208D02*Y38532D01*\r
+X45923D01*\r
+Y40208D01*\r
+X44247D01*\r
+G37*\r
+G36*\r
+X60757Y66878D02*Y65202D01*\r
+X62433D01*\r
+Y66878D01*\r
+X60757D01*\r
+G37*\r
+G36*\r
+Y60528D02*Y58852D01*\r
+X62433D01*\r
+Y60528D01*\r
+X60757D01*\r
+G37*\r
+G54D72*X64135Y59690D03*\r
+Y66040D03*\r
+G54D71*G36*\r
+X80442Y66878D02*Y65202D01*\r
+X82118D01*\r
+Y66878D01*\r
+X80442D01*\r
+G37*\r
+G54D72*X78740Y66040D03*\r
+G54D71*G36*\r
+X58217Y50368D02*Y48692D01*\r
+X59893D01*\r
+Y50368D01*\r
+X58217D01*\r
+G37*\r
+G54D78*X59055Y44450D03*\r
+G54D71*G36*\r
+X58217Y40208D02*Y38532D01*\r
+X59893D01*\r
+Y40208D01*\r
+X58217D01*\r
+G37*\r
+G36*\r
+X58280Y55385D02*Y53835D01*\r
+X59830D01*\r
+Y55385D01*\r
+X58280D01*\r
+G37*\r
+G54D72*X69215Y49530D03*\r
+G54D71*G36*\r
+X68440Y45225D02*Y43675D01*\r
+X69990D01*\r
+Y45225D01*\r
+X68440D01*\r
+G37*\r
+G54D72*X69215Y39370D03*\r
+G54D78*Y54610D03*\r
+G54D71*G36*\r
+X48692Y16078D02*Y14402D01*\r
+X50368D01*\r
+Y16078D01*\r
+X48692D01*\r
+G37*\r
+G54D72*X52070Y15240D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X62230D03*\r
+X64770D03*\r
+Y22860D03*\r
+X62230D03*\r
+G54D71*G36*\r
+X70282Y85928D02*Y84252D01*\r
+X71958D01*\r
+Y85928D01*\r
+X70282D01*\r
+G37*\r
+G54D72*X73660Y85090D03*\r
+X62230D03*\r
+X64770D03*\r
+X83820Y71120D03*\r
+Y78740D03*\r
+X81280D03*\r
+X78740D03*\r
+X76200D03*\r
+X73660D03*\r
+G54D71*G36*\r
+X62662Y97358D02*Y95682D01*\r
+X64338D01*\r
+Y97358D01*\r
+X62662D01*\r
+G37*\r
+G54D72*X58420Y96520D03*\r
+G54D71*G36*\r
+X77902Y85928D02*Y84252D01*\r
+X79578D01*\r
+Y85928D01*\r
+X77902D01*\r
+G37*\r
+G54D72*X81280Y85090D03*\r
+G54D71*G36*\r
+X44247Y78308D02*Y76632D01*\r
+X45923D01*\r
+Y78308D01*\r
+X44247D01*\r
+G37*\r
+G54D72*X45085Y72390D03*\r
+G54D71*G36*\r
+X48692Y71958D02*Y70282D01*\r
+X50368D01*\r
+Y71958D01*\r
+X48692D01*\r
+G37*\r
+G54D72*X52070Y71120D03*\r
+X54610D03*\r
+X57150D03*\r
+X59690D03*\r
+X54610Y78740D03*\r
+G54D71*G36*\r
+X44310Y55385D02*Y53835D01*\r
+X45860D01*\r
+Y55385D01*\r
+X44310D01*\r
+G37*\r
+G54D72*X52070Y78740D03*\r
+X49530D03*\r
+G54D78*X55245Y54610D03*\r
+G54D71*G36*\r
+X72187Y66878D02*Y65202D01*\r
+X73863D01*\r
+Y66878D01*\r
+X72187D01*\r
+G37*\r
+G54D72*X70485Y66040D03*\r
+G54D71*G36*\r
+X70282Y71958D02*Y70282D01*\r
+X71958D01*\r
+Y71958D01*\r
+X70282D01*\r
+G37*\r
+G54D72*X73660Y71120D03*\r
+X76200D03*\r
+X78740D03*\r
+X81280D03*\r
+X62230D03*\r
+X64770D03*\r
+X71120Y78740D03*\r
+X64770D03*\r
+X62230D03*\r
+X59690D03*\r
+Y22860D03*\r
+G54D71*G36*\r
+X60757Y35128D02*Y33452D01*\r
+X62433D01*\r
+Y35128D01*\r
+X60757D01*\r
+G37*\r
+G54D72*X57150Y78740D03*\r
+Y22860D03*\r
+G54D71*G36*\r
+X44247Y50368D02*Y48692D01*\r
+X45923D01*\r
+Y50368D01*\r
+X44247D01*\r
+G37*\r
+G54D72*X55245Y49530D03*\r
+X54610Y22860D03*\r
+X52070D03*\r
+X49530D03*\r
+G54D71*G36*\r
+X44247Y22428D02*Y20752D01*\r
+X45923D01*\r
+Y22428D01*\r
+X44247D01*\r
+G37*\r
+G54D72*X45085Y16510D03*\r
+G54D71*G36*\r
+X54407Y28778D02*Y27102D01*\r
+X56083D01*\r
+Y28778D01*\r
+X54407D01*\r
+G37*\r
+G36*\r
+X60757D02*Y27102D01*\r
+X62433D01*\r
+Y28778D01*\r
+X60757D01*\r
+G37*\r
+G54D72*X64135Y27940D03*\r
+Y34290D03*\r
+G54D71*G36*\r
+X54470Y35065D02*Y33515D01*\r
+X56020D01*\r
+Y35065D01*\r
+X54470D01*\r
+G37*\r
+G54D72*X45085Y27940D03*\r
+G54D78*Y34290D03*\r
+G54D72*X107950Y69850D03*\r
+G54D71*G36*\r
+X120193Y51892D02*Y49708D01*\r
+X122377D01*\r
+Y51892D01*\r
+X120193D01*\r
+G37*\r
+G54D74*X118745Y50800D03*\r
+X116205D03*\r
+G54D72*X112395Y69850D03*\r
+G54D71*G36*\r
+X155372Y66878D02*Y65202D01*\r
+X157048D01*\r
+Y66878D01*\r
+X155372D01*\r
+G37*\r
+G54D72*X160655Y66675D03*\r
+Y64135D03*\r
+X165735Y69215D03*\r
+X163195D03*\r
+X160655D03*\r
+X165735Y66675D03*\r
+X163195D03*\r
+Y64135D03*\r
+Y61595D03*\r
+X165735Y64135D03*\r
+Y61595D03*\r
+X160655D03*\r
+Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+Y51435D03*\r
+X146050Y66040D03*\r
+G54D71*G36*\r
+X140767Y66878D02*Y65202D01*\r
+X142443D01*\r
+Y66878D01*\r
+X140767D01*\r
+G37*\r
+G54D72*X131445Y66040D03*\r
+X127000D03*\r
+G54D71*G36*\r
+X86157Y66878D02*Y65202D01*\r
+X87833D01*\r
+Y66878D01*\r
+X86157D01*\r
+G37*\r
+G54D72*X97155Y66040D03*\r
+G54D71*G36*\r
+X110922Y66878D02*Y65202D01*\r
+X112598D01*\r
+Y66878D01*\r
+X110922D01*\r
+G37*\r
+G54D72*X101600Y66040D03*\r
+G54D71*G36*\r
+X116002Y66878D02*Y65202D01*\r
+X117678D01*\r
+Y66878D01*\r
+X116002D01*\r
+G37*\r
+G36*\r
+X155372Y10998D02*Y9322D01*\r
+X157048D01*\r
+Y10998D01*\r
+X155372D01*\r
+G37*\r
+G54D72*X156210Y7620D03*\r
+G54D71*G36*\r
+X155372Y16078D02*Y14402D01*\r
+X157048D01*\r
+Y16078D01*\r
+X155372D01*\r
+G37*\r
+G54D72*X156210Y17780D03*\r
+G54D73*X168275Y8585D03*\r
+Y8255D03*\r
+G54D71*G36*\r
+X149657Y8458D02*Y6782D01*\r
+X151333D01*\r
+Y8458D01*\r
+X149657D01*\r
+G37*\r
+G54D72*X150495Y12700D03*\r
+G54D71*G36*\r
+X139497Y13538D02*Y11862D01*\r
+X141173D01*\r
+Y13538D01*\r
+X139497D01*\r
+G37*\r
+G54D72*X140335Y7620D03*\r
+G54D71*G36*\r
+X145212Y8458D02*Y6782D01*\r
+X146888D01*\r
+Y8458D01*\r
+X145212D01*\r
+G37*\r
+G54D72*X146050Y12700D03*\r
+X165735Y15875D03*\r
+Y13335D03*\r
+X163195Y15875D03*\r
+Y13335D03*\r
+X160655Y15875D03*\r
+Y13335D03*\r
+G54D71*G36*\r
+X138989Y29286D02*Y26594D01*\r
+X141681D01*\r
+Y29286D01*\r
+X138989D01*\r
+G37*\r
+G54D79*X150495Y27940D03*\r
+G54D71*G36*\r
+X138989Y54051D02*Y51359D01*\r
+X141681D01*\r
+Y54051D01*\r
+X138989D01*\r
+G37*\r
+G54D79*X150495Y52705D03*\r
+G54D72*X165735Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X163195Y59055D03*\r
+Y56515D03*\r
+Y53975D03*\r
+X165735Y51435D03*\r
+Y48895D03*\r
+Y46355D03*\r
+X163195Y51435D03*\r
+Y48895D03*\r
+X160655D03*\r
+X165735Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+Y43815D03*\r
+X163195D03*\r
+Y46355D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+X160655Y46355D03*\r
+Y43815D03*\r
+Y41275D03*\r
+Y38735D03*\r
+Y36195D03*\r
+Y33655D03*\r
+Y31115D03*\r
+Y28575D03*\r
+Y26035D03*\r
+Y23495D03*\r
+Y20955D03*\r
+Y18415D03*\r
+M02*\r
--- /dev/null
+G04 start of page 9 for group -4015 idx -4015 *\r
+G04 Title: (unknown), toppaste *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNTOPPASTE*%\r
+%ADD11C,0.0100*%\r
+M02*\r
--- /dev/null
+G04 start of page 7 for group -4079 idx -4079 *\r
+G04 Title: (unknown), topsilk *\r
+G04 Creator: pcb 20140316 *\r
+G04 CreationDate: Wed 15 Jul 2015 07:10:19 PM GMT UTC *\r
+G04 For: fetter *\r
+G04 Format: Gerber/RS-274X *\r
+G04 PCB-Dimensions (mm): 180.34 104.14 *\r
+G04 PCB-Coordinate-Origin: lower left *\r
+%MOMM*%\r
+%FSLAX43Y43*%\r
+%LNTOPSILK*%\r
+%ADD93C,1.016*%\r
+%ADD92C,0.254*%\r
+%ADD91C,0.508*%\r
+%ADD90C,0.203*%\r
+G54D90*X0Y104140D02*X180340D01*\r
+X0D02*Y0D01*\r
+X180340Y104140D02*Y0D01*\r
+X0D02*X180340D01*\r
+G54D91*X113030Y22860D02*Y8890D01*\r
+X111760Y22860D02*X113030D01*\r
+X111760D02*Y8890D01*\r
+X106680D02*X111760D01*\r
+X106680Y22860D02*Y8890D01*\r
+X105410Y22860D02*X106680D01*\r
+X105410D02*Y6350D01*\r
+X113030Y8890D02*X124460D01*\r
+Y22860D02*Y8890D01*\r
+Y22860D02*X125730D01*\r
+Y8890D01*\r
+X130810D01*\r
+Y22860D02*Y8890D01*\r
+Y22860D02*X132080D01*\r
+Y6350D01*\r
+X105410D02*X132080D01*\r
+X113665Y9652D02*X123825D01*\r
+X113665Y14224D02*Y9652D01*\r
+Y14224D02*X123825D01*\r
+Y9652D01*\r
+X113665D02*X123825D01*\r
+X113665Y11176D02*Y9652D01*\r
+Y11176D02*X123825D01*\r
+Y9652D01*\r
+G54D92*X120523Y11176D02*Y9652D01*\r
+X116967Y11176D02*Y9652D01*\r
+G54D91*X80645Y22860D02*Y8890D01*\r
+X79375Y22860D02*X80645D01*\r
+X79375D02*Y8890D01*\r
+X74295D02*X79375D01*\r
+X74295Y22860D02*Y8890D01*\r
+X73025Y22860D02*X74295D01*\r
+X73025D02*Y6350D01*\r
+X80645Y8890D02*X92075D01*\r
+Y22860D02*Y8890D01*\r
+Y22860D02*X93345D01*\r
+Y8890D01*\r
+X98425D01*\r
+Y22860D02*Y8890D01*\r
+Y22860D02*X99695D01*\r
+Y6350D01*\r
+X73025D02*X99695D01*\r
+G54D92*X155575Y11811D02*X156845D01*\r
+X156210Y12446D02*Y11176D01*\r
+Y11430D02*G75*G03X156210Y11430I0J-2540D01*G01*\r
+X151765Y12700D02*Y7620D01*\r
+X149225Y12700D02*Y7620D01*\r
+X151765Y12700D02*G75*G03X149225Y12700I-1270J0D01*G01*\r
+Y7620D02*G75*G03X151765Y7620I1270J0D01*G01*\r
+X139065Y12700D02*Y7620D01*\r
+X141605Y12700D02*Y7620D01*\r
+X139065D02*G75*G03X141605Y7620I1270J0D01*G01*\r
+Y12700D02*G75*G03X139065Y12700I-1270J0D01*G01*\r
+X155575Y13589D02*X156845D01*\r
+X156210Y14224D02*Y12954D01*\r
+Y13970D02*G75*G03X156210Y13970I0J2540D01*G01*\r
+X147320Y12700D02*Y7620D01*\r
+X144780Y12700D02*Y7620D01*\r
+X147320Y12700D02*G75*G03X144780Y12700I-1270J0D01*G01*\r
+Y7620D02*G75*G03X147320Y7620I1270J0D01*G01*\r
+X55880Y83820D02*X66040D01*\r
+Y93980D02*Y83820D01*\r
+X55880Y93980D02*X66040D01*\r
+X55880Y87630D02*Y83820D01*\r
+Y93980D02*Y90170D01*\r
+Y87630D02*G75*G03X55880Y90170I0J1270D01*G01*\r
+X75311Y92075D02*Y90805D01*\r
+X74676Y91440D02*X75946D01*\r
+X74930D02*G75*G03X74930Y91440I-2540J0D01*G01*\r
+X79375Y94361D02*X80645D01*\r
+X80010Y94996D02*Y93726D01*\r
+Y93980D02*G75*G03X80010Y93980I0J-2540D01*G01*\r
+X87630D02*Y91440D01*\r
+Y86360D02*Y83820D01*\r
+X88468Y91440D02*Y86360D01*\r
+X86792D02*X88468D01*\r
+X86792Y91440D02*Y86360D01*\r
+Y91440D02*X88468D01*\r
+X107950Y80010D02*Y77470D01*\r
+Y72390D02*Y69850D01*\r
+X108788Y77470D02*Y72390D01*\r
+X107112D02*X108788D01*\r
+X107112Y77470D02*Y72390D01*\r
+Y77470D02*X108788D01*\r
+X69850Y69850D02*X90170D01*\r
+Y80010D02*Y69850D01*\r
+X69850Y80010D02*X90170D01*\r
+X69850Y73660D02*Y69850D01*\r
+Y80010D02*Y76200D01*\r
+Y73660D02*G75*G03X69850Y76200I0J1270D01*G01*\r
+X90373Y67716D02*Y64364D01*\r
+X93777D02*X90373Y66040D01*\r
+X93777Y67716D02*Y64364D01*\r
+X90373Y66040D02*X93777Y67716D01*\r
+Y66040D02*X97155D01*\r
+X86995D02*X90373D01*\r
+X93345Y69850D02*X103505D01*\r
+Y80010D02*Y69850D01*\r
+X93345Y80010D02*X103505D01*\r
+X93345Y73660D02*Y69850D01*\r
+Y80010D02*Y76200D01*\r
+Y73660D02*G75*G03X93345Y76200I0J1270D01*G01*\r
+X116840Y93980D02*Y91440D01*\r
+Y86360D02*Y83820D01*\r
+X117678Y91440D02*Y86360D01*\r
+X116002D02*X117678D01*\r
+X116002Y91440D02*Y86360D01*\r
+Y91440D02*X117678D01*\r
+X107950Y86360D02*Y83820D01*\r
+Y93980D02*Y91440D01*\r
+X107112D02*Y86360D01*\r
+Y91440D02*X108788D01*\r
+Y86360D01*\r
+X107112D02*X108788D01*\r
+X112395D02*Y83820D01*\r
+Y93980D02*Y91440D01*\r
+X111557D02*Y86360D01*\r
+Y91440D02*X113233D01*\r
+Y86360D01*\r
+X111557D02*X113233D01*\r
+X112395Y80010D02*Y77470D01*\r
+Y72390D02*Y69850D01*\r
+X113233Y77470D02*Y72390D01*\r
+X111557D02*X113233D01*\r
+X111557Y77470D02*Y72390D01*\r
+Y77470D02*X113233D01*\r
+X93345Y83820D02*X103505D01*\r
+Y93980D02*Y83820D01*\r
+X93345Y93980D02*X103505D01*\r
+X93345Y87630D02*Y83820D01*\r
+Y93980D02*Y90170D01*\r
+Y87630D02*G75*G03X93345Y90170I0J1270D01*G01*\r
+X77724Y85090D02*X76454D01*\r
+X77089Y85725D02*Y84455D01*\r
+X77470Y85090D02*G75*G03X77470Y85090I2540J0D01*G01*\r
+X153670Y66040D02*X156210D01*\r
+X146050D02*X148590D01*\r
+Y65202D02*X153670D01*\r
+X148590Y66878D02*Y65202D01*\r
+Y66878D02*X153670D01*\r
+Y65202D01*\r
+X139065Y66040D02*X141605D01*\r
+X131445D02*X133985D01*\r
+Y65202D02*X139065D01*\r
+X133985Y66878D02*Y65202D01*\r
+Y66878D02*X139065D01*\r
+Y65202D01*\r
+X156083Y27940D02*X157099D01*\r
+X134239Y28448D02*Y27432D01*\r
+X133731Y27940D02*X134747D01*\r
+X135255D02*G75*G03X135255Y27940I10160J0D01*G01*\r
+G54D91*X113030Y60960D02*Y46990D01*\r
+X111760Y60960D02*X113030D01*\r
+X111760D02*Y46990D01*\r
+X106680D02*X111760D01*\r
+X106680Y60960D02*Y46990D01*\r
+X105410Y60960D02*X106680D01*\r
+X105410D02*Y44450D01*\r
+X113030Y46990D02*X124460D01*\r
+Y60960D02*Y46990D01*\r
+Y60960D02*X125730D01*\r
+Y46990D01*\r
+X130810D01*\r
+Y60960D02*Y46990D01*\r
+Y60960D02*X132080D01*\r
+Y44450D01*\r
+X105410D02*X132080D01*\r
+X113665Y47752D02*X123825D01*\r
+X113665Y52324D02*Y47752D01*\r
+Y52324D02*X123825D01*\r
+Y47752D01*\r
+X113665D02*X123825D01*\r
+X113665Y49276D02*Y47752D01*\r
+Y49276D02*X123825D01*\r
+Y47752D01*\r
+G54D92*X120523Y49276D02*Y47752D01*\r
+X116967Y49276D02*Y47752D01*\r
+G54D91*X113030Y41910D02*Y27940D01*\r
+X111760Y41910D02*X113030D01*\r
+X111760D02*Y27940D01*\r
+X106680D02*X111760D01*\r
+X106680Y41910D02*Y27940D01*\r
+X105410Y41910D02*X106680D01*\r
+X105410D02*Y25400D01*\r
+X113030Y27940D02*X124460D01*\r
+Y41910D02*Y27940D01*\r
+Y41910D02*X125730D01*\r
+Y27940D01*\r
+X130810D01*\r
+Y41910D02*Y27940D01*\r
+Y41910D02*X132080D01*\r
+Y25400D01*\r
+X105410D02*X132080D01*\r
+G54D92*X123825Y97790D02*X128905D01*\r
+X123825Y95250D02*X128905D01*\r
+X123825Y97790D02*G75*G03X123825Y95250I0J-1270D01*G01*\r
+X128905D02*G75*G03X128905Y97790I0J1270D01*G01*\r
+X118110Y77470D02*Y72390D01*\r
+X115570Y77470D02*Y72390D01*\r
+X118110Y77470D02*G75*G03X115570Y77470I-1270J0D01*G01*\r
+Y72390D02*G75*G03X118110Y72390I1270J0D01*G01*\r
+X156083Y52705D02*X157099D01*\r
+X134239Y53213D02*Y52197D01*\r
+X133731Y52705D02*X134747D01*\r
+X135255D02*G75*G03X135255Y52705I10160J0D01*G01*\r
+X149225Y97790D02*X154305D01*\r
+X149225Y95250D02*X154305D01*\r
+X149225Y97790D02*G75*G03X149225Y95250I0J-1270D01*G01*\r
+X154305D02*G75*G03X154305Y97790I0J1270D01*G01*\r
+X142875Y86360D02*Y83820D01*\r
+Y93980D02*Y91440D01*\r
+X142037D02*Y86360D01*\r
+Y91440D02*X143713D01*\r
+Y86360D01*\r
+X142037D02*X143713D01*\r
+X146685Y83820D02*X156845D01*\r
+Y93980D02*Y83820D01*\r
+X146685Y93980D02*X156845D01*\r
+X146685Y87630D02*Y83820D01*\r
+Y93980D02*Y90170D01*\r
+Y87630D02*G75*G03X146685Y90170I0J1270D01*G01*\r
+X116840Y66040D02*X119380D01*\r
+X124460D02*X127000D01*\r
+X119380Y66878D02*X124460D01*\r
+Y65202D01*\r
+X119380D02*X124460D01*\r
+X119380Y66878D02*Y65202D01*\r
+X139065Y86360D02*Y83820D01*\r
+Y93980D02*Y91440D01*\r
+X138227D02*Y86360D01*\r
+Y91440D02*X139903D01*\r
+Y86360D01*\r
+X138227D02*X139903D01*\r
+X121285Y69850D02*X156845D01*\r
+Y80010D02*Y69850D01*\r
+X121285Y80010D02*X156845D01*\r
+X121285Y73660D02*Y69850D01*\r
+Y80010D02*Y76200D01*\r
+Y73660D02*G75*G03X121285Y76200I0J1270D01*G01*\r
+Y83820D02*X131445D01*\r
+Y93980D02*Y83820D01*\r
+X121285Y93980D02*X131445D01*\r
+X121285Y87630D02*Y83820D01*\r
+Y93980D02*Y90170D01*\r
+Y87630D02*G75*G03X121285Y90170I0J1270D01*G01*\r
+X135255Y93980D02*Y91440D01*\r
+Y86360D02*Y83820D01*\r
+X136093Y91440D02*Y86360D01*\r
+X134417D02*X136093D01*\r
+X134417Y91440D02*Y86360D01*\r
+Y91440D02*X136093D01*\r
+X45085Y97790D02*X50165D01*\r
+X45085Y95250D02*X50165D01*\r
+X45085Y97790D02*G75*G03X45085Y95250I0J-1270D01*G01*\r
+X50165D02*G75*G03X50165Y97790I0J1270D01*G01*\r
+X58420D02*X63500D01*\r
+X58420Y95250D02*X63500D01*\r
+X58420Y97790D02*G75*G03X58420Y95250I0J-1270D01*G01*\r
+X63500D02*G75*G03X63500Y97790I0J1270D01*G01*\r
+X45085Y92075D02*X50165D01*\r
+X45085Y89535D02*X50165D01*\r
+X45085Y92075D02*G75*G03X45085Y89535I0J-1270D01*G01*\r
+X50165D02*G75*G03X50165Y92075I0J1270D01*G01*\r
+X68834Y85090D02*X70104D01*\r
+X69469Y85725D02*Y84455D01*\r
+X69850Y85090D02*G75*G03X69850Y85090I2540J0D01*G01*\r
+X74676Y66675D02*Y65405D01*\r
+X74041Y66040D02*X75311D01*\r
+X74295D02*G75*G03X74295Y66040I-2540J0D01*G01*\r
+X59309D02*X60579D01*\r
+X59944Y66675D02*Y65405D01*\r
+X60325Y66040D02*G75*G03X60325Y66040I2540J0D01*G01*\r
+X59309Y59690D02*X60579D01*\r
+X59944Y60325D02*Y59055D01*\r
+X60325Y59690D02*G75*G03X60325Y59690I2540J0D01*G01*\r
+X51867Y61366D02*Y58014D01*\r
+X48463Y61366D02*X51867Y59690D01*\r
+X48463Y61366D02*Y58014D01*\r
+X51867Y59690D02*X48463Y58014D01*\r
+X45085Y59690D02*X48463D01*\r
+X51867D02*X55245D01*\r
+X52705Y66878D02*Y65202D01*\r
+X47625Y66878D02*X52705D01*\r
+X47625D02*Y65202D01*\r
+X52705D01*\r
+X45085Y66040D02*X47625D01*\r
+X52705D02*X55245D01*\r
+X43815Y77470D02*Y72390D01*\r
+X46355Y77470D02*Y72390D01*\r
+X43815D02*G75*G03X46355Y72390I1270J0D01*G01*\r
+Y77470D02*G75*G03X43815Y77470I-1270J0D01*G01*\r
+X46609Y85090D02*X47879D01*\r
+X47244Y85725D02*Y84455D01*\r
+X47625Y85090D02*G75*G03X47625Y85090I2540J0D01*G01*\r
+X48260Y80010D02*Y76200D01*\r
+Y73660D02*Y69850D01*\r
+Y80010D02*X66040D01*\r
+Y69850D01*\r
+X48260D02*X66040D01*\r
+X48260Y73660D02*G75*G03X48260Y76200I0J1270D01*G01*\r
+G54D91*X171450Y102870D02*X11430D01*\r
+X171450Y2870D02*Y102870D01*\r
+X11430Y2870D02*X171450D01*\r
+X11430Y102870D02*Y2870D01*\r
+G54D92*X109220Y66040D02*X111760D01*\r
+X101600D02*X104140D01*\r
+Y65202D02*X109220D01*\r
+X104140Y66878D02*Y65202D01*\r
+Y66878D02*X109220D01*\r
+Y65202D01*\r
+G54D91*X113665Y28702D02*X123825D01*\r
+X113665Y33274D02*Y28702D01*\r
+Y33274D02*X123825D01*\r
+Y28702D01*\r
+X113665D02*X123825D01*\r
+X113665Y30226D02*Y28702D01*\r
+Y30226D02*X123825D01*\r
+Y28702D01*\r
+G54D92*X120523Y30226D02*Y28702D01*\r
+X116967Y30226D02*Y28702D01*\r
+G54D91*X81280Y47752D02*X91440D01*\r
+X81280Y52324D02*Y47752D01*\r
+Y52324D02*X91440D01*\r
+Y47752D01*\r
+X81280D02*X91440D01*\r
+X81280Y49276D02*Y47752D01*\r
+Y49276D02*X91440D01*\r
+Y47752D01*\r
+G54D92*X88138Y49276D02*Y47752D01*\r
+X84582Y49276D02*Y47752D01*\r
+G54D91*X173863Y97155D02*X178435D01*\r
+Y8255D01*\r
+X173863D02*X178435D01*\r
+X168148Y94107D02*Y11303D01*\r
+X165735Y94107D02*X168148D01*\r
+G54D92*X173863D01*\r
+Y97155D02*Y94107D01*\r
+G54D91*Y99695D02*Y97155D01*\r
+X165735Y99695D02*X173863D01*\r
+X165735D02*Y94107D01*\r
+Y5715D02*X173863D01*\r
+Y8255D02*Y5715D01*\r
+G54D92*Y11303D02*Y8255D01*\r
+X168148Y11303D02*X173863D01*\r
+G54D91*X165735D02*X168148D01*\r
+X165735D02*Y5715D01*\r
+G54D93*X160655Y92075D02*X167640D01*\r
+X160655Y89535D02*X167640D01*\r
+X160655Y86995D02*X167640D01*\r
+X160655Y84455D02*X167640D01*\r
+X160655Y81915D02*X167640D01*\r
+X160655Y79375D02*X167640D01*\r
+X160655Y76835D02*X167640D01*\r
+X160655Y74295D02*X167640D01*\r
+X160655Y71755D02*X167640D01*\r
+X160655Y69215D02*X167640D01*\r
+X160655Y66675D02*X167640D01*\r
+X160655Y64135D02*X167640D01*\r
+X160655Y61595D02*X167640D01*\r
+X160655Y59055D02*X167640D01*\r
+X160655Y56515D02*X167640D01*\r
+X160655Y53975D02*X167640D01*\r
+X160655Y51435D02*X167640D01*\r
+X160655Y48895D02*X167640D01*\r
+X160655Y46355D02*X167640D01*\r
+X160655Y43815D02*X167640D01*\r
+X160655Y41275D02*X167640D01*\r
+X160655Y38735D02*X167640D01*\r
+X160655Y36195D02*X167640D01*\r
+X160655Y33655D02*X167640D01*\r
+X160655Y31115D02*X167640D01*\r
+X160655Y28575D02*X167640D01*\r
+X160655Y26035D02*X167640D01*\r
+X160655Y23495D02*X167640D01*\r
+X160655Y20955D02*X167640D01*\r
+X160655Y18415D02*X167640D01*\r
+X160655Y15875D02*X167640D01*\r
+X160655Y13335D02*X167640D01*\r
+G54D91*X81280Y28702D02*X91440D01*\r
+X81280Y33274D02*Y28702D01*\r
+Y33274D02*X91440D01*\r
+Y28702D01*\r
+X81280D02*X91440D01*\r
+X81280Y30226D02*Y28702D01*\r
+Y30226D02*X91440D01*\r
+Y28702D01*\r
+G54D92*X88138Y30226D02*Y28702D01*\r
+X84582Y30226D02*Y28702D01*\r
+G54D91*X81280Y9652D02*X91440D01*\r
+X81280Y14224D02*Y9652D01*\r
+Y14224D02*X91440D01*\r
+Y9652D01*\r
+X81280D02*X91440D01*\r
+X81280Y11176D02*Y9652D01*\r
+Y11176D02*X91440D01*\r
+Y9652D01*\r
+G54D92*X88138Y11176D02*Y9652D01*\r
+X84582Y11176D02*Y9652D01*\r
+G54D91*X80645Y41910D02*Y27940D01*\r
+X79375Y41910D02*X80645D01*\r
+X79375D02*Y27940D01*\r
+X74295D02*X79375D01*\r
+X74295Y41910D02*Y27940D01*\r
+X73025Y41910D02*X74295D01*\r
+X73025D02*Y25400D01*\r
+X80645Y27940D02*X92075D01*\r
+Y41910D02*Y27940D01*\r
+Y41910D02*X93345D01*\r
+Y27940D01*\r
+X98425D01*\r
+Y41910D02*Y27940D01*\r
+Y41910D02*X99695D01*\r
+Y25400D01*\r
+X73025D02*X99695D01*\r
+X80645Y60960D02*Y46990D01*\r
+X79375Y60960D02*X80645D01*\r
+X79375D02*Y46990D01*\r
+X74295D02*X79375D01*\r
+X74295Y60960D02*Y46990D01*\r
+X73025Y60960D02*X74295D01*\r
+X73025D02*Y44450D01*\r
+X80645Y46990D02*X92075D01*\r
+Y60960D02*Y46990D01*\r
+Y60960D02*X93345D01*\r
+Y46990D01*\r
+X98425D01*\r
+Y60960D02*Y46990D01*\r
+Y60960D02*X99695D01*\r
+Y44450D01*\r
+X73025D02*X99695D01*\r
+G54D92*X95885Y97790D02*X100965D01*\r
+X95885Y95250D02*X100965D01*\r
+X95885Y97790D02*G75*G03X95885Y95250I0J-1270D01*G01*\r
+X100965D02*G75*G03X100965Y97790I0J1270D01*G01*\r
+X48463Y51206D02*Y47854D01*\r
+X51867D02*X48463Y49530D01*\r
+X51867Y51206D02*Y47854D01*\r
+X48463Y49530D02*X51867Y51206D01*\r
+Y49530D02*X55245D01*\r
+X45085D02*X48463D01*\r
+X51867Y29616D02*Y26264D01*\r
+X48463Y29616D02*X51867Y27940D01*\r
+X48463Y29616D02*Y26264D01*\r
+X51867Y27940D02*X48463Y26264D01*\r
+X45085Y27940D02*X48463D01*\r
+X51867D02*X55245D01*\r
+X59309D02*X60579D01*\r
+X59944Y28575D02*Y27305D01*\r
+X60325Y27940D02*G75*G03X60325Y27940I2540J0D01*G01*\r
+X59309Y34290D02*X60579D01*\r
+X59944Y34925D02*Y33655D01*\r
+X60325Y34290D02*G75*G03X60325Y34290I2540J0D01*G01*\r
+X82931Y66675D02*Y65405D01*\r
+X82296Y66040D02*X83566D01*\r
+X82550D02*G75*G03X82550Y66040I-2540J0D01*G01*\r
+X52705Y35128D02*Y33452D01*\r
+X47625Y35128D02*X52705D01*\r
+X47625D02*Y33452D01*\r
+X52705D01*\r
+X45085Y34290D02*X47625D01*\r
+X52705D02*X55245D01*\r
+X61595Y55448D02*Y53772D01*\r
+X66675D01*\r
+Y55448D02*Y53772D01*\r
+X61595Y55448D02*X66675D01*\r
+Y54610D02*X69215D01*\r
+X59055D02*X61595D01*\r
+X62433Y51206D02*Y47854D01*\r
+X65837D02*X62433Y49530D01*\r
+X65837Y51206D02*Y47854D01*\r
+X62433Y49530D02*X65837Y51206D01*\r
+Y49530D02*X69215D01*\r
+X59055D02*X62433D01*\r
+X52705Y45288D02*Y43612D01*\r
+X47625Y45288D02*X52705D01*\r
+X47625D02*Y43612D01*\r
+X52705D01*\r
+X45085Y44450D02*X47625D01*\r
+X52705D02*X55245D01*\r
+X66675Y45288D02*Y43612D01*\r
+X61595Y45288D02*X66675D01*\r
+X61595D02*Y43612D01*\r
+X66675D01*\r
+X59055Y44450D02*X61595D01*\r
+X66675D02*X69215D01*\r
+X62433Y41046D02*Y37694D01*\r
+X65837D02*X62433Y39370D01*\r
+X65837Y41046D02*Y37694D01*\r
+X62433Y39370D02*X65837Y41046D01*\r
+Y39370D02*X69215D01*\r
+X59055D02*X62433D01*\r
+X48463Y41046D02*Y37694D01*\r
+X51867D02*X48463Y39370D01*\r
+X51867Y41046D02*Y37694D01*\r
+X48463Y39370D02*X51867Y41046D01*\r
+Y39370D02*X55245D01*\r
+X45085D02*X48463D01*\r
+X48260Y24130D02*Y20320D01*\r
+Y17780D02*Y13970D01*\r
+Y24130D02*X66040D01*\r
+Y13970D01*\r
+X48260D02*X66040D01*\r
+X48260Y17780D02*G75*G03X48260Y20320I0J1270D01*G01*\r
+X43815Y21590D02*Y16510D01*\r
+X46355Y21590D02*Y16510D01*\r
+X43815D02*G75*G03X46355Y16510I1270J0D01*G01*\r
+Y21590D02*G75*G03X43815Y21590I-1270J0D01*G01*\r
+X47625Y55448D02*Y53772D01*\r
+X52705D01*\r
+Y55448D02*Y53772D01*\r
+X47625Y55448D02*X52705D01*\r
+Y54610D02*X55245D01*\r
+X45085D02*X47625D01*\r
+X15875Y47168D02*G75*G03X15875Y47168I0J2997D01*G01*\r
+Y46660D02*G75*G03X15875Y46660I0J3505D01*G01*\r
+X15875Y28118D02*G75*G03X15875Y28118I0J2997D01*G01*\r
+Y27610D02*G75*G03X15875Y27610I0J3505D01*G01*\r
+X15875Y37643D02*G75*G03X15875Y37643I0J2997D01*G01*\r
+Y37135D02*G75*G03X15875Y37135I0J3505D01*G01*\r
+G54D91*X2134Y19101D02*X11430Y18847D01*\r
+X2134Y22098D02*Y19101D01*\r
+X11430Y22352D02*X2134Y22098D01*\r
+X14935Y24105D02*Y17094D01*\r
+X11430D02*X17983D01*\r
+X11430Y24105D02*Y17094D01*\r
+Y24105D02*X17983D01*\r
+X17780Y68428D02*X13208D01*\r
+X17780Y71196D02*X13208D01*\r
+X17780Y73965D02*X13208D01*\r
+X17780Y76733D02*X13208D01*\r
+X20320Y67031D02*X13208D01*\r
+X20320Y69799D02*X13208D01*\r
+X20320Y72568D02*X13208D01*\r
+X20320Y75336D02*X13208D01*\r
+X20320Y78105D02*X13208D01*\r
+G54D92*X8128Y62967D02*Y82169D01*\r
+G54D91*X13208Y62967D02*X8128D01*\r
+X13208Y82169D02*Y62967D01*\r
+X8128Y82169D02*X13208D01*\r
+X508Y64491D02*Y80645D01*\r
+X7366Y64491D02*X508D01*\r
+G54D92*X7366Y80645D02*Y64491D01*\r
+G54D91*X508Y80645D02*X7366D01*\r
+G54D92*Y61697D02*X8128D01*\r
+X7366Y58649D02*X8128D01*\r
+X7366Y83439D02*X8128D01*\r
+X7366Y86487D02*X8128D01*\r
+X7366Y57125D02*Y88011D01*\r
+X8128Y57125D02*X7366D01*\r
+X8128Y88011D02*Y57125D01*\r
+X7366Y88011D02*X8128D01*\r
+G54D90*X18897Y34978D02*Y33962D01*\r
+X19278Y34978D02*X19405Y34851D01*\r
+Y34089D01*\r
+X19278Y33962D02*X19405Y34089D01*\r
+X18770Y33962D02*X19278D01*\r
+X18770Y34978D02*X19278D01*\r
+X19837Y33962D02*X20091D01*\r
+X19964Y34978D02*Y33962D01*\r
+X19710Y34724D02*X19964Y34978D01*\r
+X16967Y20345D02*X17094Y20218D01*\r
+X16586Y20345D02*X16967D01*\r
+X16459Y20218D02*X16586Y20345D01*\r
+X16459Y20218D02*Y19964D01*\r
+X16586Y19837D01*\r
+X16967D01*\r
+X17094Y19710D01*\r
+Y19456D01*\r
+X16967Y19329D02*X17094Y19456D01*\r
+X16586Y19329D02*X16967D01*\r
+X16459Y19456D02*X16586Y19329D01*\r
+X17526D02*X17780D01*\r
+X17653Y20345D02*Y19329D01*\r
+X17399Y20091D02*X17653Y20345D01*\r
+X43767Y23495D02*X44148D01*\r
+X43640Y23622D02*X43767Y23495D01*\r
+X43640Y24384D02*Y23622D01*\r
+Y24384D02*X43767Y24511D01*\r
+X44148D01*\r
+X44453Y24384D02*X44580Y24511D01*\r
+X44961D01*\r
+X45088Y24384D01*\r
+Y24130D01*\r
+X44453Y23495D02*X45088Y24130D01*\r
+X44453Y23495D02*X45088D01*\r
+X45392Y24003D02*X45900Y24511D01*\r
+X45392Y24003D02*X46027D01*\r
+X45900Y24511D02*Y23495D01*\r
+X52217Y30362D02*Y29346D01*\r
+X52598Y30362D02*X52725Y30235D01*\r
+Y29473D01*\r
+X52598Y29346D02*X52725Y29473D01*\r
+X52090Y29346D02*X52598D01*\r
+X52090Y30362D02*X52598D01*\r
+X53410D02*X53537Y30235D01*\r
+X53156Y30362D02*X53410D01*\r
+X53029Y30235D02*X53156Y30362D01*\r
+X53029Y30235D02*Y29473D01*\r
+X53156Y29346D01*\r
+X53410Y29854D02*X53537Y29727D01*\r
+X53029Y29854D02*X53410D01*\r
+X53156Y29346D02*X53410D01*\r
+X53537Y29473D01*\r
+Y29727D02*Y29473D01*\r
+X64897Y29845D02*X65278D01*\r
+X64770Y29972D02*X64897Y29845D01*\r
+X64770Y30734D02*Y29972D01*\r
+Y30734D02*X64897Y30861D01*\r
+X65278D01*\r
+X65583Y30734D02*X65710Y30861D01*\r
+X66091D01*\r
+X66218Y30734D01*\r
+Y30480D01*\r
+X65583Y29845D02*X66218Y30480D01*\r
+X65583Y29845D02*X66218D01*\r
+X66523Y30861D02*X67031D01*\r
+X66523D02*Y30353D01*\r
+X66650Y30480D01*\r
+X66904D01*\r
+X67031Y30353D01*\r
+Y29972D01*\r
+X66904Y29845D02*X67031Y29972D01*\r
+X66650Y29845D02*X66904D01*\r
+X66523Y29972D02*X66650Y29845D01*\r
+X85870Y26864D02*Y26102D01*\r
+Y26864D02*X85997Y26991D01*\r
+X86251D01*\r
+X86378Y26864D01*\r
+Y26102D01*\r
+X86251Y25975D02*X86378Y26102D01*\r
+X85997Y25975D02*X86251D01*\r
+X85870Y26102D02*X85997Y25975D01*\r
+X86124Y26229D02*X86378Y25975D01*\r
+X86683Y26483D02*X87191Y26991D01*\r
+X86683Y26483D02*X87318D01*\r
+X87191Y26991D02*Y25975D01*\r
+X118485Y7914D02*Y7152D01*\r
+Y7914D02*X118612Y8041D01*\r
+X118866D01*\r
+X118993Y7914D01*\r
+Y7152D01*\r
+X118866Y7025D02*X118993Y7152D01*\r
+X118612Y7025D02*X118866D01*\r
+X118485Y7152D02*X118612Y7025D01*\r
+X118739Y7279D02*X118993Y7025D01*\r
+X119425D02*X119679D01*\r
+X119552Y8041D02*Y7025D01*\r
+X119298Y7787D02*X119552Y8041D01*\r
+X85870Y8041D02*Y7152D01*\r
+X85997Y7025D01*\r
+X86251D01*\r
+X86378Y7152D01*\r
+Y8041D02*Y7152D01*\r
+X86810Y7025D02*X87064D01*\r
+X86937Y8041D02*Y7025D01*\r
+X86683Y7787D02*X86937Y8041D01*\r
+X118350Y26864D02*Y26102D01*\r
+Y26864D02*X118477Y26991D01*\r
+X118731D01*\r
+X118858Y26864D01*\r
+Y26102D01*\r
+X118731Y25975D02*X118858Y26102D01*\r
+X118477Y25975D02*X118731D01*\r
+X118350Y26102D02*X118477Y25975D01*\r
+X118604Y26229D02*X118858Y25975D01*\r
+X119163Y26991D02*X119671D01*\r
+X119163D02*Y26483D01*\r
+X119290Y26610D01*\r
+X119544D01*\r
+X119671Y26483D01*\r
+Y26102D01*\r
+X119544Y25975D02*X119671Y26102D01*\r
+X119290Y25975D02*X119544D01*\r
+X119163Y26102D02*X119290Y25975D01*\r
+X158352Y11320D02*X158733D01*\r
+X158225Y11447D02*X158352Y11320D01*\r
+X158225Y12209D02*Y11447D01*\r
+Y12209D02*X158352Y12336D01*\r
+X158733D01*\r
+X159165Y11320D02*X159419D01*\r
+X159292Y12336D02*Y11320D01*\r
+X159038Y12082D02*X159292Y12336D01*\r
+X158537Y19000D02*X158918D01*\r
+X158410Y19127D02*X158537Y19000D01*\r
+X158410Y19889D02*Y19127D01*\r
+Y19889D02*X158537Y20016D01*\r
+X158918D01*\r
+X159223Y19889D02*X159350Y20016D01*\r
+X159604D01*\r
+X159731Y19889D01*\r
+Y19127D01*\r
+X159604Y19000D02*X159731Y19127D01*\r
+X159350Y19000D02*X159604D01*\r
+X159223Y19127D02*X159350Y19000D01*\r
+Y19508D02*X159731D01*\r
+X149710Y14572D02*X150091D01*\r
+X149583Y14699D02*X149710Y14572D01*\r
+X149583Y15461D02*Y14699D01*\r
+Y15461D02*X149710Y15588D01*\r
+X150091D01*\r
+X150396Y15461D02*X150523Y15588D01*\r
+X150904D01*\r
+X151031Y15461D01*\r
+Y15207D01*\r
+X150396Y14572D02*X151031Y15207D01*\r
+X150396Y14572D02*X151031D01*\r
+X145480Y14287D02*X145861D01*\r
+X145353Y14414D02*X145480Y14287D01*\r
+X145353Y15176D02*Y14414D01*\r
+Y15176D02*X145480Y15303D01*\r
+X145861D01*\r
+X146547D02*X146674Y15176D01*\r
+X146293Y15303D02*X146547D01*\r
+X146166Y15176D02*X146293Y15303D01*\r
+X146166Y15176D02*Y14414D01*\r
+X146293Y14287D01*\r
+X146547Y14795D02*X146674Y14668D01*\r
+X146166Y14795D02*X146547D01*\r
+X146293Y14287D02*X146547D01*\r
+X146674Y14414D01*\r
+Y14668D02*Y14414D01*\r
+X144272Y27305D02*X144653D01*\r
+X144145Y27432D02*X144272Y27305D01*\r
+X144145Y28194D02*Y27432D01*\r
+Y28194D02*X144272Y28321D01*\r
+X144653D01*\r
+X144958Y28194D02*X145085Y28321D01*\r
+X145466D01*\r
+X145593Y28194D01*\r
+Y27940D01*\r
+X144958Y27305D02*X145593Y27940D01*\r
+X144958Y27305D02*X145593D01*\r
+X145898Y28194D02*X146025Y28321D01*\r
+X146406D01*\r
+X146533Y28194D01*\r
+Y27940D01*\r
+X145898Y27305D02*X146533Y27940D01*\r
+X145898Y27305D02*X146533D01*\r
+X139627Y14365D02*X140008D01*\r
+X139500Y14492D02*X139627Y14365D01*\r
+X139500Y15254D02*Y14492D01*\r
+Y15254D02*X139627Y15381D01*\r
+X140008D01*\r
+X140313Y14873D02*X140821Y15381D01*\r
+X140313Y14873D02*X140948D01*\r
+X140821Y15381D02*Y14365D01*\r
+X50800Y19304D02*Y18415D01*\r
+X50927Y18288D01*\r
+X51181D01*\r
+X51308Y18415D01*\r
+Y19304D02*Y18415D01*\r
+X51740Y18288D02*X51994D01*\r
+X51867Y19304D02*Y18288D01*\r
+X51613Y19050D02*X51867Y19304D01*\r
+X52299Y18415D02*X52426Y18288D01*\r
+X52299Y19177D02*Y18415D01*\r
+Y19177D02*X52426Y19304D01*\r
+X52680D01*\r
+X52807Y19177D01*\r
+Y18415D01*\r
+X52680Y18288D02*X52807Y18415D01*\r
+X52426Y18288D02*X52680D01*\r
+X52299Y18542D02*X52807Y19050D01*\r
+X18907Y54018D02*Y53002D01*\r
+X19288Y54018D02*X19415Y53891D01*\r
+Y53129D01*\r
+X19288Y53002D02*X19415Y53129D01*\r
+X18780Y53002D02*X19288D01*\r
+X18780Y54018D02*X19288D01*\r
+X19720Y53891D02*X19847Y54018D01*\r
+X20101D01*\r
+X20228Y53891D01*\r
+Y53129D01*\r
+X20101Y53002D02*X20228Y53129D01*\r
+X19847Y53002D02*X20101D01*\r
+X19720Y53129D02*X19847Y53002D01*\r
+Y53510D02*X20228D01*\r
+X19152Y44748D02*Y43732D01*\r
+X19533Y44748D02*X19660Y44621D01*\r
+Y43859D01*\r
+X19533Y43732D02*X19660Y43859D01*\r
+X19025Y43732D02*X19533D01*\r
+X19025Y44748D02*X19533D01*\r
+X19965Y44621D02*X20092Y44748D01*\r
+X20473D01*\r
+X20600Y44621D01*\r
+Y44367D01*\r
+X19965Y43732D02*X20600Y44367D01*\r
+X19965Y43732D02*X20600D01*\r
+X52502Y62352D02*Y61336D01*\r
+X52883Y62352D02*X53010Y62225D01*\r
+Y61463D01*\r
+X52883Y61336D02*X53010Y61463D01*\r
+X52375Y61336D02*X52883D01*\r
+X52375Y62352D02*X52883D01*\r
+X53315D02*X53823D01*\r
+X53315D02*Y61844D01*\r
+X53442Y61971D01*\r
+X53696D01*\r
+X53823Y61844D01*\r
+Y61463D01*\r
+X53696Y61336D02*X53823Y61463D01*\r
+X53442Y61336D02*X53696D01*\r
+X53315Y61463D02*X53442Y61336D01*\r
+X52918Y68250D02*X53426D01*\r
+X53553Y68123D01*\r
+Y67869D01*\r
+X53426Y67742D02*X53553Y67869D01*\r
+X53045Y67742D02*X53426D01*\r
+X53045Y68250D02*Y67234D01*\r
+Y67742D02*X53553Y67234D01*\r
+X53985D02*X54239D01*\r
+X54112Y68250D02*Y67234D01*\r
+X53858Y67996D02*X54112Y68250D01*\r
+X54543Y67742D02*X55051Y68250D01*\r
+X54543Y67742D02*X55178D01*\r
+X55051Y68250D02*Y67234D01*\r
+X44402Y79375D02*X44783D01*\r
+X44275Y79502D02*X44402Y79375D01*\r
+X44275Y80264D02*Y79502D01*\r
+Y80264D02*X44402Y80391D01*\r
+X44783D01*\r
+X45088Y80264D02*X45215Y80391D01*\r
+X45596D01*\r
+X45723Y80264D01*\r
+Y80010D01*\r
+X45088Y79375D02*X45723Y80010D01*\r
+X45088Y79375D02*X45723D01*\r
+X46028Y79502D02*X46155Y79375D01*\r
+X46028Y80264D02*Y79502D01*\r
+Y80264D02*X46155Y80391D01*\r
+X46409D01*\r
+X46536Y80264D01*\r
+Y79502D01*\r
+X46409Y79375D02*X46536Y79502D01*\r
+X46155Y79375D02*X46409D01*\r
+X46028Y79629D02*X46536Y80137D01*\r
+X50800Y75184D02*Y74295D01*\r
+X50927Y74168D01*\r
+X51181D01*\r
+X51308Y74295D01*\r
+Y75184D02*Y74295D01*\r
+X51613Y74168D02*X52121Y74676D01*\r
+Y75057D02*Y74676D01*\r
+X51994Y75184D02*X52121Y75057D01*\r
+X51740Y75184D02*X51994D01*\r
+X51613Y75057D02*X51740Y75184D01*\r
+X51613Y75057D02*Y74803D01*\r
+X51740Y74676D01*\r
+X52121D01*\r
+X64982Y61660D02*X65363D01*\r
+X64855Y61787D02*X64982Y61660D01*\r
+X64855Y62549D02*Y61787D01*\r
+Y62549D02*X64982Y62676D01*\r
+X65363D01*\r
+X65668Y62549D02*X65795Y62676D01*\r
+X66176D01*\r
+X66303Y62549D01*\r
+Y62295D01*\r
+X65668Y61660D02*X66303Y62295D01*\r
+X65668Y61660D02*X66303D01*\r
+X66734D02*X66988D01*\r
+X66861Y62676D02*Y61660D01*\r
+X66607Y62422D02*X66861Y62676D01*\r
+X66562Y51662D02*Y50646D01*\r
+X66943Y51662D02*X67070Y51535D01*\r
+Y50773D01*\r
+X66943Y50646D02*X67070Y50773D01*\r
+X66435Y50646D02*X66943D01*\r
+X66435Y51662D02*X66943D01*\r
+X67375Y50773D02*X67502Y50646D01*\r
+X67375Y51027D02*Y50773D01*\r
+Y51027D02*X67502Y51154D01*\r
+X67756D01*\r
+X67883Y51027D01*\r
+Y50773D01*\r
+X67756Y50646D02*X67883Y50773D01*\r
+X67502Y50646D02*X67756D01*\r
+X67375Y51281D02*X67502Y51154D01*\r
+X67375Y51535D02*Y51281D01*\r
+Y51535D02*X67502Y51662D01*\r
+X67756D01*\r
+X67883Y51535D01*\r
+Y51281D01*\r
+X67756Y51154D02*X67883Y51281D01*\r
+X14852Y79926D02*X15233D01*\r
+Y79037D01*\r
+X15106Y78910D02*X15233Y79037D01*\r
+X14979Y78910D02*X15106D01*\r
+X14852Y79037D02*X14979Y78910D01*\r
+X15665D02*X15919D01*\r
+X15792Y79926D02*Y78910D01*\r
+X15538Y79672D02*X15792Y79926D01*\r
+X52518Y46900D02*X53026D01*\r
+X53153Y46773D01*\r
+Y46519D01*\r
+X53026Y46392D02*X53153Y46519D01*\r
+X52645Y46392D02*X53026D01*\r
+X52645Y46900D02*Y45884D01*\r
+Y46392D02*X53153Y45884D01*\r
+X53585D02*X53839D01*\r
+X53712Y46900D02*Y45884D01*\r
+X53458Y46646D02*X53712Y46900D01*\r
+X54143Y46011D02*X54270Y45884D01*\r
+X54143Y46265D02*Y46011D01*\r
+Y46265D02*X54270Y46392D01*\r
+X54524D01*\r
+X54651Y46265D01*\r
+Y46011D01*\r
+X54524Y45884D02*X54651Y46011D01*\r
+X54270Y45884D02*X54524D01*\r
+X54143Y46519D02*X54270Y46392D01*\r
+X54143Y46773D02*Y46519D01*\r
+Y46773D02*X54270Y46900D01*\r
+X54524D01*\r
+X54651Y46773D01*\r
+Y46519D01*\r
+X54524Y46392D02*X54651Y46519D01*\r
+X52457Y41423D02*Y40407D01*\r
+X52838Y41423D02*X52965Y41296D01*\r
+Y40534D01*\r
+X52838Y40407D02*X52965Y40534D01*\r
+X52330Y40407D02*X52838D01*\r
+X52330Y41423D02*X52838D01*\r
+X53269Y40407D02*X53777Y40915D01*\r
+Y41296D02*Y40915D01*\r
+X53650Y41423D02*X53777Y41296D01*\r
+X53396Y41423D02*X53650D01*\r
+X53269Y41296D02*X53396Y41423D01*\r
+X53269Y41296D02*Y41042D01*\r
+X53396Y40915D01*\r
+X53777D01*\r
+X52518Y57150D02*X53026D01*\r
+X53153Y57023D01*\r
+Y56769D01*\r
+X53026Y56642D02*X53153Y56769D01*\r
+X52645Y56642D02*X53026D01*\r
+X52645Y57150D02*Y56134D01*\r
+Y56642D02*X53153Y56134D01*\r
+X53585D02*X53839D01*\r
+X53712Y57150D02*Y56134D01*\r
+X53458Y56896D02*X53712Y57150D01*\r
+X54525D02*X54652Y57023D01*\r
+X54271Y57150D02*X54525D01*\r
+X54144Y57023D02*X54271Y57150D01*\r
+X54144Y57023D02*Y56261D01*\r
+X54271Y56134D01*\r
+X54525Y56642D02*X54652Y56515D01*\r
+X54144Y56642D02*X54525D01*\r
+X54271Y56134D02*X54525D01*\r
+X54652Y56261D01*\r
+Y56515D02*Y56261D01*\r
+X52592Y51673D02*Y50657D01*\r
+X52973Y51673D02*X53100Y51546D01*\r
+Y50784D01*\r
+X52973Y50657D02*X53100Y50784D01*\r
+X52465Y50657D02*X52973D01*\r
+X52465Y51673D02*X52973D01*\r
+X53405Y50657D02*X54040Y51292D01*\r
+Y51673D02*Y51292D01*\r
+X53405Y51673D02*X54040D01*\r
+X52673Y36410D02*X53181D01*\r
+X53308Y36283D01*\r
+Y36029D01*\r
+X53181Y35902D02*X53308Y36029D01*\r
+X52800Y35902D02*X53181D01*\r
+X52800Y36410D02*Y35394D01*\r
+Y35902D02*X53308Y35394D01*\r
+X53740D02*X53994D01*\r
+X53867Y36410D02*Y35394D01*\r
+X53613Y36156D02*X53867Y36410D01*\r
+X54299D02*X54807D01*\r
+X54299D02*Y35902D01*\r
+X54426Y36029D01*\r
+X54680D01*\r
+X54807Y35902D01*\r
+Y35521D01*\r
+X54680Y35394D02*X54807Y35521D01*\r
+X54426Y35394D02*X54680D01*\r
+X54299Y35521D02*X54426Y35394D01*\r
+X66697Y41482D02*Y40466D01*\r
+X67078Y41482D02*X67205Y41355D01*\r
+Y40593D01*\r
+X67078Y40466D02*X67205Y40593D01*\r
+X66570Y40466D02*X67078D01*\r
+X66570Y41482D02*X67078D01*\r
+X67637Y40466D02*X67891D01*\r
+X67764Y41482D02*Y40466D01*\r
+X67510Y41228D02*X67764Y41482D01*\r
+X68195Y40593D02*X68322Y40466D01*\r
+X68195Y41355D02*Y40593D01*\r
+Y41355D02*X68322Y41482D01*\r
+X68576D01*\r
+X68703Y41355D01*\r
+Y40593D01*\r
+X68576Y40466D02*X68703Y40593D01*\r
+X68322Y40466D02*X68576D01*\r
+X68195Y40720D02*X68703Y41228D01*\r
+X65047Y35980D02*X65428D01*\r
+X64920Y36107D02*X65047Y35980D01*\r
+X64920Y36869D02*Y36107D01*\r
+Y36869D02*X65047Y36996D01*\r
+X65428D01*\r
+X65733Y36869D02*X65860Y36996D01*\r
+X66241D01*\r
+X66368Y36869D01*\r
+Y36615D01*\r
+X65733Y35980D02*X66368Y36615D01*\r
+X65733Y35980D02*X66368D01*\r
+X66672Y36869D02*X66799Y36996D01*\r
+X67053D01*\r
+X67180Y36869D01*\r
+Y36107D01*\r
+X67053Y35980D02*X67180Y36107D01*\r
+X66799Y35980D02*X67053D01*\r
+X66672Y36107D02*X66799Y35980D01*\r
+Y36488D02*X67180D01*\r
+X65532Y67310D02*X65913D01*\r
+X65405Y67437D02*X65532Y67310D01*\r
+X65405Y68199D02*Y67437D01*\r
+Y68199D02*X65532Y68326D01*\r
+X65913D01*\r
+X66345Y67310D02*X66599D01*\r
+X66472Y68326D02*Y67310D01*\r
+X66218Y68072D02*X66472Y68326D01*\r
+X66904Y67310D02*X67412Y67818D01*\r
+Y68199D02*Y67818D01*\r
+X67285Y68326D02*X67412Y68199D01*\r
+X67031Y68326D02*X67285D01*\r
+X66904Y68199D02*X67031Y68326D01*\r
+X66904Y68199D02*Y67945D01*\r
+X67031Y67818D01*\r
+X67412D01*\r
+X153903Y68640D02*X154411D01*\r
+X154538Y68513D01*\r
+Y68259D01*\r
+X154411Y68132D02*X154538Y68259D01*\r
+X154030Y68132D02*X154411D01*\r
+X154030Y68640D02*Y67624D01*\r
+Y68132D02*X154538Y67624D01*\r
+X154843Y68132D02*X155351Y68640D01*\r
+X154843Y68132D02*X155478D01*\r
+X155351Y68640D02*Y67624D01*\r
+X138873Y68640D02*X139381D01*\r
+X139508Y68513D01*\r
+Y68259D01*\r
+X139381Y68132D02*X139508Y68259D01*\r
+X139000Y68132D02*X139381D01*\r
+X139000Y68640D02*Y67624D01*\r
+Y68132D02*X139508Y67624D01*\r
+X139813Y68640D02*X140321D01*\r
+X139813D02*Y68132D01*\r
+X139940Y68259D01*\r
+X140194D01*\r
+X140321Y68132D01*\r
+Y67751D01*\r
+X140194Y67624D02*X140321Y67751D01*\r
+X139940Y67624D02*X140194D01*\r
+X139813Y67751D02*X139940Y67624D01*\r
+X109353Y68775D02*X109861D01*\r
+X109988Y68648D01*\r
+Y68394D01*\r
+X109861Y68267D02*X109988Y68394D01*\r
+X109480Y68267D02*X109861D01*\r
+X109480Y68775D02*Y67759D01*\r
+Y68267D02*X109988Y67759D01*\r
+X110293Y68648D02*X110420Y68775D01*\r
+X110674D01*\r
+X110801Y68648D01*\r
+Y67886D01*\r
+X110674Y67759D02*X110801Y67886D01*\r
+X110420Y67759D02*X110674D01*\r
+X110293Y67886D02*X110420Y67759D01*\r
+Y68267D02*X110801D01*\r
+X124453Y68440D02*X124961D01*\r
+X125088Y68313D01*\r
+Y68059D01*\r
+X124961Y67932D02*X125088Y68059D01*\r
+X124580Y67932D02*X124961D01*\r
+X124580Y68440D02*Y67424D01*\r
+Y67932D02*X125088Y67424D01*\r
+X125393Y68313D02*X125520Y68440D01*\r
+X125901D01*\r
+X126028Y68313D01*\r
+Y68059D01*\r
+X125393Y67424D02*X126028Y68059D01*\r
+X125393Y67424D02*X126028D01*\r
+X82507Y67510D02*X82888D01*\r
+X82380Y67637D02*X82507Y67510D01*\r
+X82380Y68399D02*Y67637D01*\r
+Y68399D02*X82507Y68526D01*\r
+X82888D01*\r
+X83320Y67510D02*X83574D01*\r
+X83447Y68526D02*Y67510D01*\r
+X83193Y68272D02*X83447Y68526D01*\r
+X83879Y68399D02*X84006Y68526D01*\r
+X84387D01*\r
+X84514Y68399D01*\r
+Y68145D01*\r
+X83879Y67510D02*X84514Y68145D01*\r
+X83879Y67510D02*X84514D01*\r
+X107258Y81990D02*X107766D01*\r
+X107893Y81863D01*\r
+Y81609D01*\r
+X107766Y81482D02*X107893Y81609D01*\r
+X107385Y81482D02*X107766D01*\r
+X107385Y81990D02*Y80974D01*\r
+Y81482D02*X107893Y80974D01*\r
+X108579Y81990D02*X108706Y81863D01*\r
+X108325Y81990D02*X108579D01*\r
+X108198Y81863D02*X108325Y81990D01*\r
+X108198Y81863D02*Y81101D01*\r
+X108325Y80974D01*\r
+X108579Y81482D02*X108706Y81355D01*\r
+X108198Y81482D02*X108579D01*\r
+X108325Y80974D02*X108579D01*\r
+X108706Y81101D01*\r
+Y81355D02*Y81101D01*\r
+X94412Y67462D02*Y66446D01*\r
+X94793Y67462D02*X94920Y67335D01*\r
+Y66573D01*\r
+X94793Y66446D02*X94920Y66573D01*\r
+X94285Y66446D02*X94793D01*\r
+X94285Y67462D02*X94793D01*\r
+X95225Y66954D02*X95733Y67462D01*\r
+X95225Y66954D02*X95860D01*\r
+X95733Y67462D02*Y66446D01*\r
+X115862Y78895D02*X116243D01*\r
+X115735Y79022D02*X115862Y78895D01*\r
+X115735Y79784D02*Y79022D01*\r
+Y79784D02*X115862Y79911D01*\r
+X116243D01*\r
+X116548Y79022D02*X116675Y78895D01*\r
+X116548Y79276D02*Y79022D01*\r
+Y79276D02*X116675Y79403D01*\r
+X116929D01*\r
+X117056Y79276D01*\r
+Y79022D01*\r
+X116929Y78895D02*X117056Y79022D01*\r
+X116675Y78895D02*X116929D01*\r
+X116548Y79530D02*X116675Y79403D01*\r
+X116548Y79784D02*Y79530D01*\r
+Y79784D02*X116675Y79911D01*\r
+X116929D01*\r
+X117056Y79784D01*\r
+Y79530D01*\r
+X116929Y79403D02*X117056Y79530D01*\r
+X111758Y81935D02*X112266D01*\r
+X112393Y81808D01*\r
+Y81554D01*\r
+X112266Y81427D02*X112393Y81554D01*\r
+X111885Y81427D02*X112266D01*\r
+X111885Y81935D02*Y80919D01*\r
+Y81427D02*X112393Y80919D01*\r
+X112698D02*X113333Y81554D01*\r
+Y81935D02*Y81554D01*\r
+X112698Y81935D02*X113333D01*\r
+X96520Y75311D02*Y74422D01*\r
+X96647Y74295D01*\r
+X96901D01*\r
+X97028Y74422D01*\r
+Y75311D02*Y74422D01*\r
+X97333Y75184D02*X97460Y75311D01*\r
+X97841D01*\r
+X97968Y75184D01*\r
+Y74930D01*\r
+X97333Y74295D02*X97968Y74930D01*\r
+X97333Y74295D02*X97968D01*\r
+X85870Y45814D02*Y45052D01*\r
+Y45814D02*X85997Y45941D01*\r
+X86251D01*\r
+X86378Y45814D01*\r
+Y45052D01*\r
+X86251Y44925D02*X86378Y45052D01*\r
+X85997Y44925D02*X86251D01*\r
+X85870Y45052D02*X85997Y44925D01*\r
+X86124Y45179D02*X86378Y44925D01*\r
+X86683Y45814D02*X86810Y45941D01*\r
+X87191D01*\r
+X87318Y45814D01*\r
+Y45560D01*\r
+X86683Y44925D02*X87318Y45560D01*\r
+X86683Y44925D02*X87318D01*\r
+X118485Y45949D02*Y45187D01*\r
+Y45949D02*X118612Y46076D01*\r
+X118866D01*\r
+X118993Y45949D01*\r
+Y45187D01*\r
+X118866Y45060D02*X118993Y45187D01*\r
+X118612Y45060D02*X118866D01*\r
+X118485Y45187D02*X118612Y45060D01*\r
+X118739Y45314D02*X118993Y45060D01*\r
+X119298Y45949D02*X119425Y46076D01*\r
+X119679D01*\r
+X119806Y45949D01*\r
+Y45187D01*\r
+X119679Y45060D02*X119806Y45187D01*\r
+X119425Y45060D02*X119679D01*\r
+X119298Y45187D02*X119425Y45060D01*\r
+Y45568D02*X119806D01*\r
+X123825Y75184D02*Y74295D01*\r
+X123952Y74168D01*\r
+X124206D01*\r
+X124333Y74295D01*\r
+Y75184D02*Y74295D01*\r
+X124638Y74168D02*X125273Y74803D01*\r
+Y75184D02*Y74803D01*\r
+X124638Y75184D02*X125273D01*\r
+X66638Y47105D02*X67146D01*\r
+X67273Y46978D01*\r
+Y46724D01*\r
+X67146Y46597D02*X67273Y46724D01*\r
+X66765Y46597D02*X67146D01*\r
+X66765Y47105D02*Y46089D01*\r
+Y46597D02*X67273Y46089D01*\r
+X67704D02*X67958D01*\r
+X67831Y47105D02*Y46089D01*\r
+X67577Y46851D02*X67831Y47105D01*\r
+X68263Y46089D02*X68771Y46597D01*\r
+Y46978D02*Y46597D01*\r
+X68644Y47105D02*X68771Y46978D01*\r
+X68390Y47105D02*X68644D01*\r
+X68263Y46978D02*X68390Y47105D01*\r
+X68263Y46978D02*Y46724D01*\r
+X68390Y46597D01*\r
+X68771D01*\r
+X66718Y57140D02*X67226D01*\r
+X67353Y57013D01*\r
+Y56759D01*\r
+X67226Y56632D02*X67353Y56759D01*\r
+X66845Y56632D02*X67226D01*\r
+X66845Y57140D02*Y56124D01*\r
+Y56632D02*X67353Y56124D01*\r
+X67785D02*X68039D01*\r
+X67912Y57140D02*Y56124D01*\r
+X67658Y56886D02*X67912Y57140D01*\r
+X68344Y56124D02*X68979Y56759D01*\r
+Y57140D02*Y56759D01*\r
+X68344Y57140D02*X68979D01*\r
+X144907Y52070D02*X145288D01*\r
+X144780Y52197D02*X144907Y52070D01*\r
+X144780Y52959D02*Y52197D01*\r
+Y52959D02*X144907Y53086D01*\r
+X145288D01*\r
+X145720Y52070D02*X145974D01*\r
+X145847Y53086D02*Y52070D01*\r
+X145593Y52832D02*X145847Y53086D01*\r
+X146279Y52197D02*X146406Y52070D01*\r
+X146279Y52451D02*Y52197D01*\r
+Y52451D02*X146406Y52578D01*\r
+X146660D01*\r
+X146787Y52451D01*\r
+Y52197D01*\r
+X146660Y52070D02*X146787Y52197D01*\r
+X146406Y52070D02*X146660D01*\r
+X146279Y52705D02*X146406Y52578D01*\r
+X146279Y52959D02*Y52705D01*\r
+Y52959D02*X146406Y53086D01*\r
+X146660D01*\r
+X146787Y52959D01*\r
+Y52705D01*\r
+X146660Y52578D02*X146787Y52705D01*\r
+X138308Y96475D02*X138816D01*\r
+X138943Y96348D01*\r
+Y96094D01*\r
+X138816Y95967D02*X138943Y96094D01*\r
+X138435Y95967D02*X138816D01*\r
+X138435Y96475D02*Y95459D01*\r
+Y95967D02*X138943Y95459D01*\r
+X139248Y95586D02*X139375Y95459D01*\r
+X139248Y95840D02*Y95586D01*\r
+Y95840D02*X139375Y95967D01*\r
+X139629D01*\r
+X139756Y95840D01*\r
+Y95586D01*\r
+X139629Y95459D02*X139756Y95586D01*\r
+X139375Y95459D02*X139629D01*\r
+X139248Y96094D02*X139375Y95967D01*\r
+X139248Y96348D02*Y96094D01*\r
+Y96348D02*X139375Y96475D01*\r
+X139629D01*\r
+X139756Y96348D01*\r
+Y96094D01*\r
+X139629Y95967D02*X139756Y96094D01*\r
+X150577Y98125D02*X150958D01*\r
+X150450Y98252D02*X150577Y98125D01*\r
+X150450Y99014D02*Y98252D01*\r
+Y99014D02*X150577Y99141D01*\r
+X150958D01*\r
+X151390Y98125D02*X151644D01*\r
+X151517Y99141D02*Y98125D01*\r
+X151263Y98887D02*X151517Y99141D01*\r
+X151948D02*X152456D01*\r
+X151948D02*Y98633D01*\r
+X152075Y98760D01*\r
+X152329D01*\r
+X152456Y98633D01*\r
+Y98252D01*\r
+X152329Y98125D02*X152456Y98252D01*\r
+X152075Y98125D02*X152329D01*\r
+X151948Y98252D02*X152075Y98125D01*\r
+X162433Y96012D02*X163195D01*\r
+Y94234D01*\r
+X162941Y93980D02*X163195Y94234D01*\r
+X162687Y93980D02*X162941D01*\r
+X162433Y94234D02*X162687Y93980D01*\r
+X163805Y95758D02*X164059Y96012D01*\r
+X164821D01*\r
+X165075Y95758D01*\r
+Y95250D01*\r
+X163805Y93980D02*X165075Y95250D01*\r
+X163805Y93980D02*X165075D01*\r
+X125112Y98125D02*X125493D01*\r
+X124985Y98252D02*X125112Y98125D01*\r
+X124985Y99014D02*Y98252D01*\r
+Y99014D02*X125112Y99141D01*\r
+X125493D01*\r
+X125925Y98125D02*X126179D01*\r
+X126052Y99141D02*Y98125D01*\r
+X125798Y98887D02*X126052Y99141D01*\r
+X126484Y98633D02*X126992Y99141D01*\r
+X126484Y98633D02*X127119D01*\r
+X126992Y99141D02*Y98125D01*\r
+X134288Y96295D02*X134796D01*\r
+X134923Y96168D01*\r
+Y95914D01*\r
+X134796Y95787D02*X134923Y95914D01*\r
+X134415Y95787D02*X134796D01*\r
+X134415Y96295D02*Y95279D01*\r
+Y95787D02*X134923Y95279D01*\r
+X135355D02*X135609D01*\r
+X135482Y96295D02*Y95279D01*\r
+X135228Y96041D02*X135482Y96295D01*\r
+X135914Y95406D02*X136041Y95279D01*\r
+X135914Y96168D02*Y95406D01*\r
+Y96168D02*X136041Y96295D01*\r
+X136295D01*\r
+X136422Y96168D01*\r
+Y95406D01*\r
+X136295Y95279D02*X136422Y95406D01*\r
+X136041Y95279D02*X136295D01*\r
+X135914Y95533D02*X136422Y96041D01*\r
+X141808Y96164D02*X142316D01*\r
+X142443Y96037D01*\r
+Y95783D01*\r
+X142316Y95656D02*X142443Y95783D01*\r
+X141935Y95656D02*X142316D01*\r
+X141935Y96164D02*Y95148D01*\r
+Y95656D02*X142443Y95148D01*\r
+X142748D02*X143256Y95656D01*\r
+Y96037D02*Y95656D01*\r
+X143129Y96164D02*X143256Y96037D01*\r
+X142875Y96164D02*X143129D01*\r
+X142748Y96037D02*X142875Y96164D01*\r
+X142748Y96037D02*Y95783D01*\r
+X142875Y95656D01*\r
+X143256D01*\r
+X123825Y89281D02*Y88392D01*\r
+X123952Y88265D01*\r
+X124206D01*\r
+X124333Y88392D01*\r
+Y89281D02*Y88392D01*\r
+X124638Y88773D02*X125146Y89281D01*\r
+X124638Y88773D02*X125273D01*\r
+X125146Y89281D02*Y88265D01*\r
+X149225Y89154D02*Y88265D01*\r
+X149352Y88138D01*\r
+X149606D01*\r
+X149733Y88265D01*\r
+Y89154D02*Y88265D01*\r
+X150038Y89027D02*X150165Y89154D01*\r
+X150419D01*\r
+X150546Y89027D01*\r
+Y88265D01*\r
+X150419Y88138D02*X150546Y88265D01*\r
+X150165Y88138D02*X150419D01*\r
+X150038Y88265D02*X150165Y88138D01*\r
+Y88646D02*X150546D01*\r
+X115788Y96380D02*X116296D01*\r
+X116423Y96253D01*\r
+Y95999D01*\r
+X116296Y95872D02*X116423Y95999D01*\r
+X115915Y95872D02*X116296D01*\r
+X115915Y96380D02*Y95364D01*\r
+Y95872D02*X116423Y95364D01*\r
+X116854D02*X117108D01*\r
+X116981Y96380D02*Y95364D01*\r
+X116727Y96126D02*X116981Y96380D01*\r
+X117413Y96253D02*X117540Y96380D01*\r
+X117794D01*\r
+X117921Y96253D01*\r
+Y95491D01*\r
+X117794Y95364D02*X117921Y95491D01*\r
+X117540Y95364D02*X117794D01*\r
+X117413Y95491D02*X117540Y95364D01*\r
+Y95872D02*X117921D01*\r
+X106748Y96010D02*X107256D01*\r
+X107383Y95883D01*\r
+Y95629D01*\r
+X107256Y95502D02*X107383Y95629D01*\r
+X106875Y95502D02*X107256D01*\r
+X106875Y96010D02*Y94994D01*\r
+Y95502D02*X107383Y94994D01*\r
+X107815D02*X108069D01*\r
+X107942Y96010D02*Y94994D01*\r
+X107688Y95756D02*X107942Y96010D01*\r
+X108501Y94994D02*X108755D01*\r
+X108628Y96010D02*Y94994D01*\r
+X108374Y95756D02*X108628Y96010D01*\r
+X111308Y96145D02*X111816D01*\r
+X111943Y96018D01*\r
+Y95764D01*\r
+X111816Y95637D02*X111943Y95764D01*\r
+X111435Y95637D02*X111816D01*\r
+X111435Y96145D02*Y95129D01*\r
+Y95637D02*X111943Y95129D01*\r
+X112375D02*X112629D01*\r
+X112502Y96145D02*Y95129D01*\r
+X112248Y95891D02*X112502Y96145D01*\r
+X112933Y96018D02*X113060Y96145D01*\r
+X113441D01*\r
+X113568Y96018D01*\r
+Y95764D01*\r
+X112933Y95129D02*X113568Y95764D01*\r
+X112933Y95129D02*X113568D01*\r
+X97552Y98125D02*X97933D01*\r
+X97425Y98252D02*X97552Y98125D01*\r
+X97425Y99014D02*Y98252D01*\r
+Y99014D02*X97552Y99141D01*\r
+X97933D01*\r
+X98238Y98125D02*X98746Y98633D01*\r
+Y99014D02*Y98633D01*\r
+X98619Y99141D02*X98746Y99014D01*\r
+X98365Y99141D02*X98619D01*\r
+X98238Y99014D02*X98365Y99141D01*\r
+X98238Y99014D02*Y98760D01*\r
+X98365Y98633D01*\r
+X98746D01*\r
+X95885Y89154D02*Y88265D01*\r
+X96012Y88138D01*\r
+X96266D01*\r
+X96393Y88265D01*\r
+Y89154D02*Y88265D01*\r
+X96698Y89154D02*X97206D01*\r
+X96698D02*Y88646D01*\r
+X96825Y88773D01*\r
+X97079D01*\r
+X97206Y88646D01*\r
+Y88265D01*\r
+X97079Y88138D02*X97206Y88265D01*\r
+X96825Y88138D02*X97079D01*\r
+X96698Y88265D02*X96825Y88138D01*\r
+X86693Y96465D02*X87201D01*\r
+X87328Y96338D01*\r
+Y96084D01*\r
+X87201Y95957D02*X87328Y96084D01*\r
+X86820Y95957D02*X87201D01*\r
+X86820Y96465D02*Y95449D01*\r
+Y95957D02*X87328Y95449D01*\r
+X87760D02*X88014D01*\r
+X87887Y96465D02*Y95449D01*\r
+X87633Y96211D02*X87887Y96465D01*\r
+X75057Y86360D02*X75438D01*\r
+X74930Y86487D02*X75057Y86360D01*\r
+X74930Y87249D02*Y86487D01*\r
+Y87249D02*X75057Y87376D01*\r
+X75438D01*\r
+X75743Y86360D02*X76378Y86995D01*\r
+Y87376D02*Y86995D01*\r
+X75743Y87376D02*X76378D01*\r
+X74612Y67455D02*X74993D01*\r
+X74485Y67582D02*X74612Y67455D01*\r
+X74485Y68344D02*Y67582D01*\r
+Y68344D02*X74612Y68471D01*\r
+X74993D01*\r
+X75425Y67455D02*X75679D01*\r
+X75552Y68471D02*Y67455D01*\r
+X75298Y68217D02*X75552Y68471D01*\r
+X76111Y67455D02*X76365D01*\r
+X76238Y68471D02*Y67455D01*\r
+X75984Y68217D02*X76238Y68471D01*\r
+X72390Y75184D02*Y74295D01*\r
+X72517Y74168D01*\r
+X72771D01*\r
+X72898Y74295D01*\r
+Y75184D02*Y74295D01*\r
+X73584Y75184D02*X73711Y75057D01*\r
+X73330Y75184D02*X73584D01*\r
+X73203Y75057D02*X73330Y75184D01*\r
+X73203Y75057D02*Y74295D01*\r
+X73330Y74168D01*\r
+X73584Y74676D02*X73711Y74549D01*\r
+X73203Y74676D02*X73584D01*\r
+X73330Y74168D02*X73584D01*\r
+X73711Y74295D01*\r
+Y74549D02*Y74295D01*\r
+X58420Y89154D02*Y88265D01*\r
+X58547Y88138D01*\r
+X58801D01*\r
+X58928Y88265D01*\r
+Y89154D02*Y88265D01*\r
+X59233D02*X59360Y88138D01*\r
+X59233Y88519D02*Y88265D01*\r
+Y88519D02*X59360Y88646D01*\r
+X59614D01*\r
+X59741Y88519D01*\r
+Y88265D01*\r
+X59614Y88138D02*X59741Y88265D01*\r
+X59360Y88138D02*X59614D01*\r
+X59233Y88773D02*X59360Y88646D01*\r
+X59233Y89027D02*Y88773D01*\r
+Y89027D02*X59360Y89154D01*\r
+X59614D01*\r
+X59741Y89027D01*\r
+Y88773D01*\r
+X59614Y88646D02*X59741Y88773D01*\r
+X46712Y98290D02*X47093D01*\r
+X46585Y98417D02*X46712Y98290D01*\r
+X46585Y99179D02*Y98417D01*\r
+Y99179D02*X46712Y99306D01*\r
+X47093D01*\r
+X47398Y99179D02*X47525Y99306D01*\r
+X47906D01*\r
+X48033Y99179D01*\r
+Y98925D01*\r
+X47398Y98290D02*X48033Y98925D01*\r
+X47398Y98290D02*X48033D01*\r
+X48719Y99306D02*X48846Y99179D01*\r
+X48465Y99306D02*X48719D01*\r
+X48338Y99179D02*X48465Y99306D01*\r
+X48338Y99179D02*Y98417D01*\r
+X48465Y98290D01*\r
+X48719Y98798D02*X48846Y98671D01*\r
+X48338Y98798D02*X48719D01*\r
+X48465Y98290D02*X48719D01*\r
+X48846Y98417D01*\r
+Y98671D02*Y98417D01*\r
+X46712Y92575D02*X47093D01*\r
+X46585Y92702D02*X46712Y92575D01*\r
+X46585Y93464D02*Y92702D01*\r
+Y93464D02*X46712Y93591D01*\r
+X47093D01*\r
+X47398Y93464D02*X47525Y93591D01*\r
+X47906D01*\r
+X48033Y93464D01*\r
+Y93210D01*\r
+X47398Y92575D02*X48033Y93210D01*\r
+X47398Y92575D02*X48033D01*\r
+X48338D02*X48973Y93210D01*\r
+Y93591D02*Y93210D01*\r
+X48338Y93591D02*X48973D01*\r
+X60047Y98290D02*X60428D01*\r
+X59920Y98417D02*X60047Y98290D01*\r
+X59920Y99179D02*Y98417D01*\r
+Y99179D02*X60047Y99306D01*\r
+X60428D01*\r
+X60860Y98290D02*X61114D01*\r
+X60987Y99306D02*Y98290D01*\r
+X60733Y99052D02*X60987Y99306D01*\r
+X61419Y98290D02*X62054Y98925D01*\r
+Y99306D02*Y98925D01*\r
+X61419Y99306D02*X62054D01*\r
+X52182Y87415D02*X52563D01*\r
+X52055Y87542D02*X52182Y87415D01*\r
+X52055Y88304D02*Y87542D01*\r
+Y88304D02*X52182Y88431D01*\r
+X52563D01*\r
+X52995Y87415D02*X53249D01*\r
+X53122Y88431D02*Y87415D01*\r
+X52868Y88177D02*X53122Y88431D01*\r
+X53935D02*X54062Y88304D01*\r
+X53681Y88431D02*X53935D01*\r
+X53554Y88304D02*X53681Y88431D01*\r
+X53554Y88304D02*Y87542D01*\r
+X53681Y87415D01*\r
+X53935Y87923D02*X54062Y87796D01*\r
+X53554Y87923D02*X53935D01*\r
+X53681Y87415D02*X53935D01*\r
+X54062Y87542D01*\r
+Y87796D02*Y87542D01*\r
+X74262Y93935D02*X74643D01*\r
+X74135Y94062D02*X74262Y93935D01*\r
+X74135Y94824D02*Y94062D01*\r
+Y94824D02*X74262Y94951D01*\r
+X74643D01*\r
+X75075Y93935D02*X75329D01*\r
+X75202Y94951D02*Y93935D01*\r
+X74948Y94697D02*X75202Y94951D01*\r
+X75634Y94824D02*X75761Y94951D01*\r
+X76015D01*\r
+X76142Y94824D01*\r
+Y94062D01*\r
+X76015Y93935D02*X76142Y94062D01*\r
+X75761Y93935D02*X76015D01*\r
+X75634Y94062D02*X75761Y93935D01*\r
+Y94443D02*X76142D01*\r
+X81232Y93920D02*X81613D01*\r
+X81105Y94047D02*X81232Y93920D01*\r
+X81105Y94809D02*Y94047D01*\r
+Y94809D02*X81232Y94936D01*\r
+X81613D01*\r
+X82045Y93920D02*X82299D01*\r
+X82172Y94936D02*Y93920D01*\r
+X81918Y94682D02*X82172Y94936D01*\r
+X82604Y94047D02*X82731Y93920D01*\r
+X82604Y94809D02*Y94047D01*\r
+Y94809D02*X82731Y94936D01*\r
+X82985D01*\r
+X83112Y94809D01*\r
+Y94047D01*\r
+X82985Y93920D02*X83112Y94047D01*\r
+X82731Y93920D02*X82985D01*\r
+X82604Y94174D02*X83112Y94682D01*\r
+X82677Y86360D02*X83058D01*\r
+X82550Y86487D02*X82677Y86360D01*\r
+X82550Y87249D02*Y86487D01*\r
+Y87249D02*X82677Y87376D01*\r
+X83058D01*\r
+X83363D02*X83871D01*\r
+X83363D02*Y86868D01*\r
+X83490Y86995D01*\r
+X83744D01*\r
+X83871Y86868D01*\r
+Y86487D01*\r
+X83744Y86360D02*X83871Y86487D01*\r
+X83490Y86360D02*X83744D01*\r
+X83363Y86487D02*X83490Y86360D01*\r
+M02*\r
--- /dev/null
+D3,"LED5","GREEN",625.00,1975.00,90,top
+C7,"RCY100P","1uFx16V",2850.00,3350.00,0,top
+R6,"ACY400","470",4250.00,2950.00,270,top
+Q4,"TO220W","unknown",3400.00,1250.00,270,top
+D5,"Axial diode (pin 1 is cathode)","ALF400",1975.00,2350.00,0,top
+C11,"Bottom lead polar circular component (typically capacitor)","RCY100P",2825.00,2600.00,180,top
+R14,"Axial non-polar component (typically resistor or capacitor),","ACY400",1975.00,2600.00,180,top
+D1,"LED5","RED",625.00,1225.00,90,top
+U8,"DIP8","unknown",2400.00,3500.00,90,top
-v 20100214 2
+v 20130925 2
C 1000 73500 0 0 0 title-A2.sym
N 18300 87300 18600 87300 4
N 18300 84100 18600 84100 4
N 10700 78900 10700 78800 4
N 8500 79400 8500 78900 4
C 6400 86500 1 0 0 gnd-1.sym
-C 8600 87600 1 0 0 resistor-1.sym
+C 8400 87600 1 0 0 resistor-1.sym
{
-T 9000 87900 5 10 1 1 0 0 1
+T 8800 87900 5 10 1 1 0 0 1
refdes=R2
-T 9000 87400 5 10 1 1 0 0 1
+T 8800 87400 5 10 1 1 0 0 1
value=2k2
-T 8600 87600 5 10 0 1 0 0 1
+T 8400 87600 5 10 0 1 0 0 1
footprint=ACY400
}
C 8200 87700 1 90 0 resistor-1.sym
T 8200 87700 5 10 0 1 0 0 1
footprint=ACY400
}
-N 7600 87700 8600 87700 4
+N 7600 87700 8400 87700 4
N 8100 87700 8100 87000 4
N 8100 87000 7600 87000 4
N 6500 87700 6600 87700 4
N 6500 86800 6500 87700 4
-C 10800 84200 1 0 0 osc-2.sym
+C 10000 84200 1 0 0 osc-2.sym
{
-T 11300 84900 5 10 1 1 0 0 1
+T 10500 84900 5 10 1 1 0 0 1
device=OSC
-T 10600 84900 5 10 1 1 0 0 1
+T 9800 84900 5 10 1 1 0 0 1
refdes=U2
-T 11000 84000 5 10 1 1 0 0 1
+T 10200 84000 5 10 1 1 0 0 1
value=6MHz
}
-N 12000 84500 13900 84500 4
+N 11200 84500 13900 84500 4
{
-T 12100 84600 5 10 1 1 0 0 1
+T 11200 84600 5 10 1 1 0 0 1
netname=CLOCK
}
-N 9500 87700 13900 87700 4
-C 11000 86000 1 0 0 input-2.sym
+N 9300 87700 13900 87700 4
+C 10500 86000 1 0 0 input-2.sym
{
-T 11500 86100 5 10 1 1 0 7 1
+T 11000 86100 5 10 1 1 0 7 1
value=REFPOS
-T 11000 86000 5 10 0 1 0 0 1
+T 10500 86000 5 10 0 1 0 0 1
net=REFPOS:1
}
-N 12400 86100 13900 86100 4
+N 11900 86100 13900 86100 4
C 7300 85200 1 0 0 input-2.sym
{
T 7800 85300 5 10 1 1 0 7 1
Departamento de Engenharia Eletrica
N 18300 86900 22100 86900 4
N 18300 86500 22100 86500 4
-N 12400 86500 13900 86500 4
+N 11900 86500 13900 86500 4
C 20900 85400 1 90 0 resistor-1.sym
{
T 21400 86100 5 10 1 1 180 0 1
T 8300 79400 5 10 0 1 0 0 1
net=+5V:1
}
-C 7900 88600 1 0 0 5V-plus-1.sym
+C 7900 89500 1 0 0 5V-plus-1.sym
C 9100 86800 1 0 0 5V-plus-1.sym
N 13600 82900 13900 82900 4
C 13400 82900 1 0 0 5V-plus-1.sym
T 17300 73900 9 10 1 0 0 0 1
aicpic.sch
T 21200 73900 9 10 1 0 0 0 1
-2.2.0
+2.4.0
T 22200 73600 9 6 1 0 0 0 3
Walter Fetter Lages
Diego Caberlon Santini
N 19000 77000 19000 77400 4
N 18300 76700 18300 78600 4
N 18300 78600 18100 78600 4
-C 23000 77400 1 180 0 resistor-1.sym
+C 22200 77400 1 180 0 resistor-1.sym
{
-T 22400 77500 5 10 1 1 0 0 1
+T 21600 77500 5 10 1 1 0 0 1
refdes=R11
-T 22400 77000 5 10 1 1 0 0 1
+T 21600 77000 5 10 1 1 0 0 1
value=2k2
-T 23000 77400 5 10 0 1 180 6 1
+T 22200 77400 5 10 0 1 180 6 1
footprint=ACY400
}
C 21600 78300 1 0 1 6n137-1.sym
N 22000 86300 22000 86500 4
N 6700 87000 6500 87000 4
N 18300 83300 22700 83300 4
-N 22700 83300 22700 78900 4
+N 22700 75400 22700 83300 4
N 22700 78900 22500 78900 4
N 18300 83700 23200 83700 4
-N 23200 76700 23200 83700 4
+N 23200 75100 23200 83700 4
N 10800 83700 13900 83700 4
N 10800 83700 10800 82600 4
N 10800 82600 8200 82600 4
T 23000 86500 5 10 1 1 0 1 1
value=DRVB
}
-C 12400 86600 1 180 0 output-2.sym
+C 11900 86600 1 180 0 output-2.sym
{
-T 11500 86400 5 10 0 0 180 0 1
+T 11000 86400 5 10 0 0 180 0 1
net=BRAKE:1
-T 11500 86500 5 10 1 1 180 1 1
+T 11000 86500 5 10 1 1 180 1 1
value=BRAKE
}
C 7600 74700 1 90 0 capacitor-1.sym
}
N 18300 85300 18900 85300 4
N 18900 85300 18900 84000 4
-N 21200 77300 22100 77300 4
+N 21200 77300 21300 77300 4
N 21200 76700 23200 76700 4
N 19300 79500 19600 79500 4
N 19600 79500 19600 79200 4
N 21200 77000 21200 77400 4
-N 23000 77300 23200 77300 4
+N 22200 77300 23200 77300 4
C 19600 85400 1 90 0 capacitor-1.sym
{
T 19300 86100 5 10 1 1 180 0 1
C 19300 85100 1 0 0 gnd-1.sym
C 20100 85100 1 0 0 gnd-1.sym
C 18500 87000 1 0 0 gnd-1.sym
+C 7900 89500 1 270 0 diode-1.sym
+{
+T 8500 89100 5 10 0 0 270 0 1
+device=DIODE
+T 8500 89100 5 10 1 1 0 0 1
+refdes=D11
+T 8300 88700 5 10 1 1 0 0 1
+value=1N4148
+}
+C 10800 74900 1 0 0 connector5-1.sym
+{
+T 12600 76400 5 10 0 0 0 0 1
+device=CONNECTOR_5
+T 10900 76600 5 10 1 1 0 0 1
+refdes=J3
+T 10800 74600 5 10 1 1 0 0 1
+value=ICSP
+}
+N 23200 75100 12500 75100 4
+N 22700 75400 12500 75400 4
+N 12500 75700 13000 75700 4
+N 13000 75700 13000 74500 4
+C 12900 74200 1 0 0 gnd-1.sym
+N 12500 76300 12500 87700 4
device
value
footprint
+midx
+midy
+rotation
+
rm -f *.o *~
distclean:clean
- rm -f libdebug.a libaicio.a libcanlib.a libwdt.a
\ No newline at end of file
+ rm -f libdebug.a libaicio.a libcanlib.a libwdt.a
--- /dev/null
+dsPICtest: blinks D2 using internal RC (7.37 MHz) as OSC.
+
+dsPICAICtest: blinks D2 using AICs crystal oscilator (6 MHz) as OSC.
+
+freertostest: blinks D2 using internal RC (7.37 MHz) as OSC and a FreeRTOS
+task.
+
+freertosAICtest: blinks D2 and D3 using AICs crystal oscilator (6 MHz) as
+OSC and FreeRTOS tasks.
+
+serialtest: sends test string and size of variables through the RS232
+Interface. 19200 bps.
+
+braketest: turns on and off the brake.
+
+pwmtest:
+
+cantest
+encodertest
+motortest
+
rm -f *.o braketest *~
distclean:clean
- rm -f braketest.hex
\ No newline at end of file
+ rm -f braketest.hex
+
+burn: braketest.hex
+ usburn -S ICSP -F 30 -w -I $^
#endif\r
\r
/*---------------------------------------------------------------------------*/\r
-_FOSC(EC_PLL16 & CSW_FSCM_OFF); //Config OSC to internal RC osc 7.37MHz\r
+_FOSC(EC_PLL16 & CSW_FSCM_OFF);\r
_FWDT(WDT_OFF);\r
_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64);\r
/*---------------------------------------------------------------------------*/\r
rm -f *.o dspicaictest *~
distclean:clean
- rm -f dspicaictest.hex
\ No newline at end of file
+ rm -f dspicaictest.hex
+
+burn: dspicaictest.hex
+ usburn -S ICSP -F 30 -w -I $^
\r
/*---------------------------------------------------------------------------*/\r
_FOSC(EC_PLL16 & CSW_FSCM_OFF);\r
+//_FOSC(FRC & CSW_FSCM_OFF);\r
_FWDT(WDT_OFF);\r
_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64);\r
/*---------------------------------------------------------------------------*/\r
rm -f *.o dspictest *~
distclean:clean
- rm -f dspictest.hex
\ No newline at end of file
+ rm -f dspictest.hex
+
+burn: dspictest.hex
+ usburn -S ICSP -F 30 -w -I $^
/******************************************************************************\r
\r
Actuator Interface Card\r
- dsPIC30F4012 testM
- Copyright (C) 2008 Diego Caberlon Santini <diegos@ece.ufrgs.br>M
+ dsPIC30F4012 test
+ Copyright (C) 2008 Diego Caberlon Santini <diegos@ece.ufrgs.br>
\r
This program is free software; you can redistribute it and/or modify\r
it under the terms of the GNU General Public License as published by\r
rm -f *.o encodertest *~
distclean:clean
- rm -f encodertest.hex
\ No newline at end of file
+ rm -f encodertest.hex
+
+burn: encodertest.hex
+ usburn -S ICSP -F 30 -w -I $^
long encoder;\r
float fencoder;\r
\r
+\r
serial_init();\r
\r
sprintf(buff,"Encoder Test Begin, compiled at %s %s\n",__DATE__,__TIME__);\r
- printd(buff); \r
+ printd(buff);\r
delay(50);\r
\r
encoder_initialize(0x0,2048);\r
#define configUSE_PREEMPTION 1\r
#define configUSE_IDLE_HOOK 0\r
#define configUSE_TICK_HOOK 0\r
-#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) /*1 ms*/\r
-#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 24000000 ) /* Fosc / 4 = 24MHz*/\r
+#define configTICK_RATE_HZ ( ( portTickType ) 1000 )\r
+#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 24000000) /* Fosc / 4 = 24MHz*/\r
#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 )\r
#define configMINIMAL_STACK_SIZE ( 105 )\r
#define configTOTAL_HEAP_SIZE ( ( size_t ) 5120/4 )\r
$(CC) $(CPU) $^ -o $@ $(CCLIBDIR) -Wl $(CCGLD)
freertosAICtest.o:freertosAICtest.c
- $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS)
+ $(CC) -MMD $(CPU) -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS)
+
+-include freertosAICtest.d
$(OSOBJS):$(OSFILES)
- for i in $(OSFILES); do $(CC) $(CPU) -x c -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done
+ for i in $(OSFILES); do $(CC) -MMD $(CPU) -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done
clean:
- rm -f *.o freertosAICtest *~
+ rm -f *.o freertosAICtest *~ *.d
distclean:clean
- rm -f freertosAICtest.hex
\ No newline at end of file
+ rm -f freertosAICtest.hex
+
+burn: freertosAICtest.hex
+ usburn -S ICSP -F 30 -w -I $^
2008.06.12 -> Start FreeRTOS test to AIC-2.0.0 by Diego Caberlon Santini from Demos apps.\r
*******************************************************************************\r
*/\r
+\r
#include <p30f4012.h>\r
\r
/* Scheduler includes. */\r
#include "task.h"\r
#include "queue.h"\r
#include "croutine.h"\r
-/*---------------------------------------------------------------------------*/\r
-\r
-#define mainLED_TAKS_STACK_SIZE ( configMINIMAL_STACK_SIZE)\r
-\r
-#define mainLED_TASK_PRIORITY1 ( tskIDLE_PRIORITY + 3 )\r
\r
-/* The execution period of the check task. */\r
-#define mainLED_TASK_PERIOD1 ( ( portTickType ) 1000 / portTICK_RATE_MS )\r
+#define TAKS_STACK_SIZE configMINIMAL_STACK_SIZE\r
\r
-#define mainLED_TASK_PRIORITY2 ( tskIDLE_PRIORITY + 2 )\r
+#define TASK_PRIORITY1 (tskIDLE_PRIORITY + 3)\r
+#define TASK_PERIOD1 ((portTickType) 500 / portTICK_RATE_MS)\r
\r
-/* The execution period of the check task. */\r
-#define mainLED_TASK_PERIOD2 ( ( portTickType ) 2000 / portTICK_RATE_MS )\r
-/*---------------------------------------------------------------------------*/\r
+#define TASK_PRIORITY2 (tskIDLE_PRIORITY + 2)\r
+#define TASK_PERIOD2 ((portTickType ) 1000 / portTICK_RATE_MS)\r
\r
_FOSC(EC_PLL16 & CSW_FSCM_OFF);\r
_FWDT(WDT_OFF);\r
_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64);\r
-/*---------------------------------------------------------------------------*/\r
\r
-/** Blink port RE0 mainLED_TASK_PERIOD1 (1s)\r
+/** Blink port RE0 TASK_PERIOD1 (1 s)\r
*/\r
-static void vLEDTask1( void *pvParameters );\r
-\r
-/** Blink port RE0 mainLED_TASK_PERIOD2 (2s)\r
- */\r
-static void vLEDTask2( void *pvParameters );\r
-\r
-/*---------------------------------------------------------------------------*/\r
-\r
-/*\r
- * Create the demo tasks then start the scheduler.\r
- */\r
-int main( void )\r
-{\r
-\r
- TRISE=0x00;\r
- \r
- /* Create the test tasks defined within this file. */\r
- xTaskCreate( vLEDTask1, ( signed portCHAR * ) "LED1", mainLED_TAKS_STACK_SIZE, NULL, mainLED_TASK_PRIORITY1, NULL );\r
- \r
- xTaskCreate( vLEDTask2, ( signed portCHAR * ) "LED2", mainLED_TAKS_STACK_SIZE, NULL, mainLED_TASK_PRIORITY2, NULL );\r
-\r
- /* Finally start the scheduler. */\r
- vTaskStartScheduler();\r
-\r
- /* Will only reach here if there is insufficient heap available to start\r
- the scheduler. */\r
- return 0;\r
-}\r
-/*---------------------------------------------------------------------------*/\r
-\r
-static void vLEDTask1( void *pvParameters )\r
+static void vLEDTask1(void *pvParameters)\r
{\r
-/* Used to wake the task at the correct frequency. */\r
-portTickType xLastExecutionTime; \r
+ /* Used to wake the task at the correct frequency. */\r
+ portTickType xLastExecutionTime; \r
\r
/* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()\r
works correctly. */\r
- xLastExecutionTime = xTaskGetTickCount();\r
+ xLastExecutionTime=xTaskGetTickCount();\r
\r
for(;;)\r
{\r
/* Wait until it is time for the next cycle. */\r
- vTaskDelayUntil( &xLastExecutionTime, mainLED_TASK_PERIOD1 );\r
- PORTE = PORTE^0x01;\r
-\r
- /* Has an error been found in any of the standard demo tasks? */\r
-\r
+ vTaskDelayUntil(&xLastExecutionTime,TASK_PERIOD1);\r
+ PORTE=PORTE^0x1;\r
}\r
}\r
-/*---------------------------------------------------------------------------*/\r
\r
-static void vLEDTask2( void *pvParameters )\r
+/** Blink port RE0 TASK_PERIOD2 (2s)\r
+ */\r
+static void vLEDTask2(void *pvParameters)\r
{\r
/* Used to wake the task at the correct frequency. */\r
portTickType xLastExecutionTime; \r
\r
/* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()\r
works correctly. */\r
- xLastExecutionTime = xTaskGetTickCount();\r
+ xLastExecutionTime=xTaskGetTickCount();\r
\r
for(;;)\r
{\r
/* Wait until it is time for the next cycle. */\r
- vTaskDelayUntil( &xLastExecutionTime, mainLED_TASK_PERIOD2 );\r
- PORTE = PORTE^0x02;\r
-\r
- /* Has an error been found in any of the standard demo tasks? */\r
-\r
+ vTaskDelayUntil(&xLastExecutionTime,TASK_PERIOD2);\r
+ PORTE=PORTE^0x02;\r
}\r
}\r
-/*---------------------------------------------------------------------------*/\r
\r
+/*\r
+ * Create the demo tasks then start the scheduler.\r
+ */\r
+int main(void)\r
+{\r
+ TRISE=0x00; // Set port RE as output\r
+ \r
+ xTaskCreate(vLEDTask1,(signed portCHAR *) "LED1",TAKS_STACK_SIZE,NULL,TASK_PRIORITY1,NULL);\r
+ \r
+ xTaskCreate(vLEDTask2,(signed portCHAR *) "LED2",TAKS_STACK_SIZE,NULL,TASK_PRIORITY2,NULL);\r
+\r
+ vTaskStartScheduler();\r
+\r
+ /* Will only reach here if there is insufficient heap available to start\r
+ the scheduler. */\r
+ return 0;\r
+}\r
$(CC) $(CPU) $^ -o $@ $(CCLIBDIR) -Wl $(CCGLD)
freertostest.o:freertostest.c
- $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS)
+ $(CC) $(CPU) -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS)
$(OSOBJS):$(OSFILES)
- for i in $(OSFILES); do $(CC) $(CPU) -x c -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done
+ for i in $(OSFILES); do $(CC) $(CPU) -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done
clean:
rm -f *.o freertostest *~
distclean:clean
- rm -f freertostest.hex
\ No newline at end of file
+ rm -f freertostest.hex
+
+burn: freertostest.hex
+ usburn -S ICSP -F 30 -w -I $^
#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 )\r
\r
/* The execution period of the check task. */\r
-#define mainCHECK_TASK_PERIOD ( ( portTickType ) 5 / portTICK_RATE_MS )\r
+#define mainCHECK_TASK_PERIOD ( ( portTickType ) 500 / portTICK_RATE_MS )\r
/*---------------------------------------------------------------------------*/\r
\r
// _FOSC(EC_PLL16 & CSW_FSCM_OFF);\r
_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64);\r
/*---------------------------------------------------------------------------*/\r
\r
-/** Blink port RE0 (10ms)\r
+/** Blink port RE0\r
*/\r
static void vLEDTask( void *pvParameters );\r
/*---------------------------------------------------------------------------*/\r
\r
static void vLEDTask( void *pvParameters )\r
{\r
-/* Used to wake the task at the correct frequency. */\r
-portTickType xLastExecutionTime; \r
+ /* Used to wake the task at the correct frequency. */\r
+ portTickType xLastExecutionTime; \r
\r
/* Initialise xLastExecutionTime so the first call to vTaskDelayUntil()\r
works correctly. */\r
/* Wait until it is time for the next cycle. */\r
vTaskDelayUntil( &xLastExecutionTime, mainCHECK_TASK_PERIOD );\r
PORTE = PORTE^0x01;\r
-\r
- /* Has an error been found in any of the standard demo tasks? */\r
-\r
}\r
}\r
/*---------------------------------------------------------------------------*/\r
rm -f *.o motortest *~
distclean:clean
- rm -f motortest.hex
\ No newline at end of file
+ rm -f motortest.hex
+
+burn: motortest.hex
+ usburn -S ICSP -F 30 -w -I $^
rm -f *.o pwmtest *~
distclean:clean
- rm -f pwmtest.hex
\ No newline at end of file
+ rm -f pwmtest.hex
+
+burn: pwmtest.hex
+ usburn -S ICSP -F 30 -w -I $^
rm -f *.o serialtest *~
distclean:clean
- rm -f serialtest.hex
\ No newline at end of file
+ rm -f serialtest.hex
+
+burn: serialtest.hex
+ usburn -S ICSP -F 30 -w -I $^
\r
int main(int argc,char *argv[])\r
{\r
- char *name;\r
+ char name[]="Diego é o cara\n";\r
char buff[256];\r
- unsigned int bitorder=0x0733;\r
+ int i;\r
+ union\r
+ {\r
+ unsigned int i;\r
+ struct \r
+ {\r
+ unsigned char lsb;\r
+ unsigned char msb; \r
+ } le;\r
+ } bitorder;\r
\r
- name="Diego é o cara\n";\r
+ bitorder.i=0x0123;\r
\r
//set PORTE just to check if the program is running\r
TRISE=0x0;\r
prints(buff);\r
sprintf(buff,"size of double... %d\n",sizeof(double));\r
prints(buff);\r
- sprintf(buff,"int 0x0733 byte[0]:%x byte[1]:%x\n",((unsigned char*)(&bitorder))[0],((unsigned char*)(&bitorder))[1]);\r
+ if((bitorder.i & 0xff) == bitorder.le.lsb)\r
+ {\r
+ sprintf(buff,"Little-endian\n");\r
+ }\r
+ else\r
+ { \r
+ sprintf(buff,"Big-endian\n");\r
+ }\r
prints(buff);\r
\r
- \r
- for(;;){\r
-\r
+ for(i=0;;i++)\r
+ {\r
+ sprintf(buff,"i=%d\n",i);\r
+ prints(buff);\r
}\r
\r
}\r