Coverage Report

Created: 2025-10-10 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/janet/build/c/janet.c
Line
Count
Source
1
/* Amalgamated build - DO NOT EDIT */
2
/* Generated from janet version 1.40.0-db7f741d */
3
#define JANET_BUILD "db7f741d"
4
#define JANET_AMALG
5
6
/* src/core/features.h */
7
#line 0 "src/core/features.h"
8
9
/*
10
* Copyright (c) 2025 Calvin Rose
11
*
12
* Permission is hereby granted, free of charge, to any person obtaining a copy
13
* of this software and associated documentation files (the "Software"), to
14
* deal in the Software without restriction, including without limitation the
15
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16
* sell copies of the Software, and to permit persons to whom the Software is
17
* furnished to do so, subject to the following conditions:
18
*
19
* The above copyright notice and this permission notice shall be included in
20
* all copies or substantial portions of the Software.
21
*
22
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28
* IN THE SOFTWARE.
29
*/
30
31
/* Feature test macros */
32
33
#ifndef JANET_FEATURES_H_defined
34
#define JANET_FEATURES_H_defined
35
36
#if defined(__NetBSD__) || defined(__APPLE__) || defined(__OpenBSD__) \
37
    || defined(__bsdi__) || defined(__DragonFly__) || defined(__FreeBSD__)
38
/* Use BSD source on any BSD systems, include OSX */
39
# define _BSD_SOURCE
40
# define _POSIX_C_SOURCE 200809L
41
#else
42
/* Use POSIX feature flags */
43
# ifndef _POSIX_C_SOURCE
44
# define _POSIX_C_SOURCE 200809L
45
# endif
46
#endif
47
48
#if defined(__APPLE__)
49
#define _DARWIN_C_SOURCE
50
#endif
51
52
/* Needed for sched.h for cpu count */
53
#ifdef __linux__
54
#define _GNU_SOURCE
55
#endif
56
57
#if defined(WIN32) || defined(_WIN32)
58
#define WIN32_LEAN_AND_MEAN
59
#endif
60
61
/* needed for inet_pton and InitializeSRWLock */
62
#ifdef __MINGW32__
63
#define _WIN32_WINNT _WIN32_WINNT_VISTA
64
#endif
65
66
/* Needed for realpath on linux, as well as pthread rwlocks. */
67
#ifndef _XOPEN_SOURCE
68
#define _XOPEN_SOURCE 600
69
#endif
70
#if _XOPEN_SOURCE < 600
71
#undef _XOPEN_SOURCE
72
#define _XOPEN_SOURCE 600
73
#endif
74
75
/* Needed for timegm and other extensions when building with -std=c99.
76
 * It also defines realpath, etc, which would normally require
77
 * _XOPEN_SOURCE >= 500. */
78
#if !defined(_NETBSD_SOURCE) && defined(__NetBSD__)
79
#define _NETBSD_SOURCE
80
#endif
81
82
/* Needed for several things when building with -std=c99. */
83
#if !__BSD_VISIBLE && (defined(__DragonFly__) || defined(__FreeBSD__))
84
#define __BSD_VISIBLE 1
85
#endif
86
87
#define _FILE_OFFSET_BITS 64
88
89
#endif
90
91
#include "janet.h"
92
93
/* src/core/state.h */
94
#line 0 "src/core/state.h"
95
96
/*
97
* Copyright (c) 2025 Calvin Rose
98
*
99
* Permission is hereby granted, free of charge, to any person obtaining a copy
100
* of this software and associated documentation files (the "Software"), to
101
* deal in the Software without restriction, including without limitation the
102
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
103
* sell copies of the Software, and to permit persons to whom the Software is
104
* furnished to do so, subject to the following conditions:
105
*
106
* The above copyright notice and this permission notice shall be included in
107
* all copies or substantial portions of the Software.
108
*
109
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
110
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
111
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
112
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
113
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
114
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
115
* IN THE SOFTWARE.
116
*/
117
118
#ifndef JANET_STATE_H_defined
119
#define JANET_STATE_H_defined
120
121
#ifndef JANET_AMALG
122
#include "features.h"
123
#include <janet.h>
124
#include <stdint.h>
125
#endif
126
127
#ifdef JANET_EV
128
#ifdef JANET_WINDOWS
129
#include <windows.h>
130
#else
131
#include <pthread.h>
132
#endif
133
#endif
134
135
typedef int64_t JanetTimestamp;
136
137
typedef struct JanetScratch {
138
    JanetScratchFinalizer finalize;
139
    long long mem[]; /* for proper alignment */
140
} JanetScratch;
141
142
typedef struct {
143
    JanetGCObject *self;
144
    JanetGCObject *other;
145
    int32_t index;
146
    int32_t index2;
147
} JanetTraversalNode;
148
149
typedef struct {
150
    int32_t capacity;
151
    int32_t head;
152
    int32_t tail;
153
    void *data;
154
} JanetQueue;
155
156
#ifdef JANET_EV
157
typedef struct {
158
    JanetTimestamp when;
159
    JanetFiber *fiber;
160
    JanetFiber *curr_fiber;
161
    uint32_t sched_id;
162
    int is_error;
163
    int has_worker;
164
#ifdef JANET_WINDOWS
165
    HANDLE worker;
166
    HANDLE worker_event;
167
#else
168
    pthread_t worker;
169
#endif
170
} JanetTimeout;
171
#endif
172
173
/* Registry table for C functions - contains metadata that can
174
 * be looked up by cfunction pointer. All strings here are pointing to
175
 * static memory not managed by Janet. */
176
typedef struct {
177
    JanetCFunction cfun;
178
    const char *name;
179
    const char *name_prefix;
180
    const char *source_file;
181
    int32_t source_line;
182
    /* int32_t min_arity; */
183
    /* int32_t max_arity; */
184
} JanetCFunRegistry;
185
186
struct JanetVM {
187
    /* Place for user data */
188
    void *user;
189
190
    /* Top level dynamic bindings */
191
    JanetTable *top_dyns;
192
193
    /* Cache the core environment */
194
    JanetTable *core_env;
195
196
    /* How many VM stacks have been entered */
197
    int stackn;
198
199
    /* If this flag is true, suspend on function calls and backwards jumps.
200
     * When this occurs, this flag will be reset to 0. */
201
    volatile JanetAtomicInt auto_suspend;
202
203
    /* The current running fiber on the current thread.
204
     * Set and unset by functions in vm.c */
205
    JanetFiber *fiber;
206
    JanetFiber *root_fiber;
207
208
    /* The current pointer to the inner most jmp_buf. The current
209
     * return point for panics. */
210
    jmp_buf *signal_buf;
211
    Janet *return_reg;
212
    int coerce_error;
213
214
    /* The global registry for c functions. Used to store meta-data
215
     * along with otherwise bare c function pointers. */
216
    JanetCFunRegistry *registry;
217
    size_t registry_cap;
218
    size_t registry_count;
219
    int registry_dirty;
220
221
    /* Registry for abstract types that can be marshalled.
222
     * We need this to look up the constructors when unmarshalling. */
223
    JanetTable *abstract_registry;
224
225
    /* Immutable value cache */
226
    const uint8_t **cache;
227
    uint32_t cache_capacity;
228
    uint32_t cache_count;
229
    uint32_t cache_deleted;
230
    uint8_t gensym_counter[8];
231
232
    /* Garbage collection */
233
    void *blocks;
234
    void *weak_blocks;
235
    size_t gc_interval;
236
    size_t next_collection;
237
    size_t block_count;
238
    int gc_suspend;
239
    int gc_mark_phase;
240
241
    /* GC roots */
242
    Janet *roots;
243
    size_t root_count;
244
    size_t root_capacity;
245
246
    /* Scratch memory */
247
    JanetScratch **scratch_mem;
248
    size_t scratch_cap;
249
    size_t scratch_len;
250
251
    /* Sandbox flags */
252
    uint32_t sandbox_flags;
253
254
    /* Random number generator */
255
    JanetRNG rng;
256
257
    /* Traversal pointers */
258
    JanetTraversalNode *traversal;
259
    JanetTraversalNode *traversal_top;
260
    JanetTraversalNode *traversal_base;
261
262
    /* Thread safe strerror error buffer - for janet_strerror */
263
#ifndef JANET_WINDOWS
264
    char strerror_buf[256];
265
#endif
266
267
    /* Event loop and scheduler globals */
268
#ifdef JANET_EV
269
    size_t tq_count;
270
    size_t tq_capacity;
271
    JanetQueue spawn;
272
    JanetTimeout *tq;
273
    JanetRNG ev_rng;
274
    volatile JanetAtomicInt listener_count; /* used in signal handler, must be volatile */
275
    JanetTable threaded_abstracts; /* All abstract types that can be shared between threads (used in this thread) */
276
    JanetTable active_tasks; /* All possibly live task fibers - used just for tracking */
277
    JanetTable signal_handlers;
278
#ifdef JANET_WINDOWS
279
    void **iocp;
280
#elif defined(JANET_EV_EPOLL)
281
    pthread_attr_t new_thread_attr;
282
    JanetHandle selfpipe[2];
283
    int epoll;
284
    int timerfd;
285
    int timer_enabled;
286
#elif defined(JANET_EV_KQUEUE)
287
    pthread_attr_t new_thread_attr;
288
    JanetHandle selfpipe[2];
289
    int kq;
290
    int timer;
291
    int timer_enabled;
292
#else
293
    JanetStream **streams;
294
    size_t stream_count;
295
    size_t stream_capacity;
296
    pthread_attr_t new_thread_attr;
297
    JanetHandle selfpipe[2];
298
    struct pollfd *fds;
299
#endif
300
#endif
301
302
};
303
304
extern JANET_THREAD_LOCAL JanetVM janet_vm;
305
306
#ifdef JANET_NET
307
void janet_net_init(void);
308
void janet_net_deinit(void);
309
#endif
310
311
#ifdef JANET_EV
312
void janet_ev_init(void);
313
void janet_ev_deinit(void);
314
#endif
315
316
#endif /* JANET_STATE_H_defined */
317
318
319
/* src/core/util.h */
320
#line 0 "src/core/util.h"
321
322
/*
323
* Copyright (c) 2025 Calvin Rose
324
*
325
* Permission is hereby granted, free of charge, to any person obtaining a copy
326
* of this software and associated documentation files (the "Software"), to
327
* deal in the Software without restriction, including without limitation the
328
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
329
* sell copies of the Software, and to permit persons to whom the Software is
330
* furnished to do so, subject to the following conditions:
331
*
332
* The above copyright notice and this permission notice shall be included in
333
* all copies or substantial portions of the Software.
334
*
335
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
336
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
337
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
338
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
339
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
340
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
341
* IN THE SOFTWARE.
342
*/
343
344
#ifndef JANET_UTIL_H_defined
345
#define JANET_UTIL_H_defined
346
347
#ifndef JANET_AMALG
348
#include "features.h"
349
#include <janet.h>
350
#include "state.h"
351
#endif
352
353
#include <stdio.h>
354
#include <errno.h>
355
#include <stddef.h>
356
#include <stdbool.h>
357
#include <math.h>
358
359
#ifdef JANET_EV
360
#ifndef JANET_WINDOWS
361
#include <pthread.h>
362
#endif
363
#endif
364
365
#if !defined(JANET_REDUCED_OS) || !defined(JANET_SINGLE_THREADED)
366
#include <time.h>
367
#define JANET_GETTIME
368
#endif
369
370
/* Handle runtime errors */
371
#ifndef JANET_EXIT
372
#include <stdio.h>
373
0
#define JANET_EXIT(m) do { \
374
0
    fprintf(stderr, "janet internal error at line %d in file %s: %s\n",\
375
0
        __LINE__,\
376
0
        __FILE__,\
377
0
        (m));\
378
0
    abort();\
379
0
} while (0)
380
#endif
381
382
0
#define JANET_MARSHAL_DECREF 0x40000
383
384
9.20M
#define janet_assert(c, m) do { \
385
9.20M
    if (!(c)) JANET_EXIT((m)); \
386
9.20M
} while (0)
387
388
/* Utils */
389
uint32_t janet_hash_mix(uint32_t input, uint32_t more);
390
8.30M
#define janet_maphash(cap, hash) ((uint32_t)(hash) & (cap - 1))
391
int janet_valid_utf8(const uint8_t *str, int32_t len);
392
int janet_is_symbol_char(uint8_t c);
393
extern const char janet_base64[65];
394
int32_t janet_array_calchash(const Janet *array, int32_t len);
395
int32_t janet_kv_calchash(const JanetKV *kvs, int32_t len);
396
int32_t janet_string_calchash(const uint8_t *str, int32_t len);
397
int32_t janet_tablen(int32_t n);
398
void safe_memcpy(void *dest, const void *src, size_t len);
399
void janet_buffer_push_types(JanetBuffer *buffer, int types);
400
const JanetKV *janet_dict_find(const JanetKV *buckets, int32_t cap, Janet key);
401
void janet_memempty(JanetKV *mem, int32_t count);
402
void *janet_memalloc_empty(int32_t count);
403
JanetTable *janet_get_core_table(const char *name);
404
void janet_def_addflags(JanetFuncDef *def);
405
void janet_buffer_dtostr(JanetBuffer *buffer, double x);
406
const char *janet_strerror(int e);
407
const void *janet_strbinsearch(
408
    const void *tab,
409
    size_t tabcount,
410
    size_t itemsize,
411
    const uint8_t *key);
412
void janet_buffer_format(
413
    JanetBuffer *b,
414
    const char *strfrmt,
415
    int32_t argstart,
416
    int32_t argc,
417
    Janet *argv);
418
Janet janet_next_impl(Janet ds, Janet key, int is_interpreter);
419
JanetBinding janet_binding_from_entry(Janet entry);
420
JanetByteView janet_text_substitution(
421
    Janet *subst,
422
    const uint8_t *bytes,
423
    uint32_t len,
424
    JanetArray *extra_args);
425
426
/* Registry functions */
427
void janet_registry_put(
428
    JanetCFunction key,
429
    const char *name,
430
    const char *name_prefix,
431
    const char *source_file,
432
    int32_t source_line);
433
JanetCFunRegistry *janet_registry_get(JanetCFunction key);
434
435
/* Inside the janet core, defining globals is different
436
 * at bootstrap time and normal runtime */
437
#ifdef JANET_BOOTSTRAP
438
#define JANET_CORE_REG JANET_REG
439
#define JANET_CORE_FN JANET_FN
440
#define JANET_CORE_DEF JANET_DEF
441
#define janet_core_def_sm janet_def_sm
442
#define janet_core_cfuns_ext janet_cfuns_ext
443
#else
444
0
#define JANET_CORE_REG JANET_REG_S
445
#define JANET_CORE_FN JANET_FN_S
446
0
#define JANET_CORE_DEF(ENV, NAME, X, DOC) janet_core_def_sm(ENV, NAME, X, DOC, NULL, 0)
447
void janet_core_def_sm(JanetTable *env, const char *name, Janet x, const void *p, const void *sf, int32_t sl);
448
void janet_core_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns);
449
#endif
450
451
/* Clock gettime */
452
#ifdef JANET_GETTIME
453
enum JanetTimeSource {
454
    JANET_TIME_REALTIME,
455
    JANET_TIME_MONOTONIC,
456
    JANET_TIME_CPUTIME
457
};
458
int janet_gettime(struct timespec *spec, enum JanetTimeSource source);
459
#endif
460
461
/* strdup */
462
#ifdef JANET_WINDOWS
463
#define strdup(x) _strdup(x)
464
#endif
465
466
/* Use LoadLibrary on windows or dlopen on posix to load dynamic libraries
467
 * with native code. */
468
#if defined(JANET_NO_DYNAMIC_MODULES)
469
typedef int Clib;
470
#define load_clib(name) ((void) name, 0)
471
#define symbol_clib(lib, sym) ((void) lib, (void) sym, NULL)
472
const char *error_clib(void);
473
#define free_clib(c) ((void) (c), 0)
474
#elif defined(JANET_WINDOWS)
475
#include <windows.h>
476
typedef HINSTANCE Clib;
477
void *symbol_clib(Clib clib, const char *sym);
478
void free_clib(Clib clib);
479
Clib load_clib(const char *name);
480
char *error_clib(void);
481
#else
482
#include <dlfcn.h>
483
typedef void *Clib;
484
0
#define load_clib(name) dlopen((name), RTLD_NOW)
485
0
#define free_clib(lib) dlclose((lib))
486
0
#define symbol_clib(lib, sym) dlsym((lib), (sym))
487
0
#define error_clib dlerror
488
#endif
489
char *get_processed_name(const char *name);
490
491
0
#define RETRY_EINTR(RC, CALL) do { (RC) = CALL; } while((RC) < 0 && errno == EINTR)
492
493
/* Initialize builtin libraries */
494
void janet_lib_io(JanetTable *env);
495
void janet_lib_math(JanetTable *env);
496
void janet_lib_array(JanetTable *env);
497
void janet_lib_tuple(JanetTable *env);
498
void janet_lib_buffer(JanetTable *env);
499
void janet_lib_table(JanetTable *env);
500
void janet_lib_struct(JanetTable *env);
501
void janet_lib_fiber(JanetTable *env);
502
void janet_lib_os(JanetTable *env);
503
void janet_lib_string(JanetTable *env);
504
void janet_lib_marsh(JanetTable *env);
505
void janet_lib_parse(JanetTable *env);
506
#ifdef JANET_ASSEMBLER
507
void janet_lib_asm(JanetTable *env);
508
#endif
509
void janet_lib_compile(JanetTable *env);
510
void janet_lib_debug(JanetTable *env);
511
#ifdef JANET_PEG
512
void janet_lib_peg(JanetTable *env);
513
#endif
514
#ifdef JANET_INT_TYPES
515
void janet_lib_inttypes(JanetTable *env);
516
#endif
517
#ifdef JANET_NET
518
void janet_lib_net(JanetTable *env);
519
extern const JanetAbstractType janet_address_type;
520
#endif
521
#ifdef JANET_EV
522
void janet_lib_ev(JanetTable *env);
523
void janet_ev_mark(void);
524
void janet_async_start_fiber(JanetFiber *fiber, JanetStream *stream, JanetAsyncMode mode, JanetEVCallback callback, void *state);
525
int janet_make_pipe(JanetHandle handles[2], int mode);
526
#ifdef JANET_FILEWATCH
527
void janet_lib_filewatch(JanetTable *env);
528
#endif
529
#endif
530
#ifdef JANET_FFI
531
void janet_lib_ffi(JanetTable *env);
532
#endif
533
534
#endif
535
536
537
/* src/core/gc.h */
538
#line 0 "src/core/gc.h"
539
540
/*
541
* Copyright (c) 2025 Calvin Rose
542
*
543
* Permission is hereby granted, free of charge, to any person obtaining a copy
544
* of this software and associated documentation files (the "Software"), to
545
* deal in the Software without restriction, including without limitation the
546
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
547
* sell copies of the Software, and to permit persons to whom the Software is
548
* furnished to do so, subject to the following conditions:
549
*
550
* The above copyright notice and this permission notice shall be included in
551
* all copies or substantial portions of the Software.
552
*
553
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
554
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
555
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
556
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
557
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
558
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
559
* IN THE SOFTWARE.
560
*/
561
562
#ifndef JANET_GC_H
563
#define JANET_GC_H
564
565
#ifndef JANET_AMALG
566
#include "features.h"
567
#include <janet.h>
568
#endif
569
570
/* The metadata header associated with an allocated block of memory */
571
82.8k
#define janet_gc_header(mem) ((JanetGCObject *)(mem))
572
573
11.3M
#define JANET_MEM_TYPEBITS 0xFF
574
0
#define JANET_MEM_REACHABLE 0x100
575
0
#define JANET_MEM_DISABLED 0x200
576
577
82.8k
#define janet_gc_settype(m, t) ((janet_gc_header(m)->flags |= (0xFF & (t))))
578
0
#define janet_gc_type(m) (janet_gc_header(m)->flags & 0xFF)
579
580
0
#define janet_gc_mark(m) (janet_gc_header(m)->flags |= JANET_MEM_REACHABLE)
581
0
#define janet_gc_reachable(m) (janet_gc_header(m)->flags & JANET_MEM_REACHABLE)
582
583
/* Memory types for the GC. Different from JanetType to include funcenv and funcdef. */
584
enum JanetMemoryType {
585
    JANET_MEMORY_NONE,
586
    JANET_MEMORY_STRING,
587
    JANET_MEMORY_SYMBOL,
588
    JANET_MEMORY_ARRAY,
589
    JANET_MEMORY_TUPLE,
590
    JANET_MEMORY_TABLE,
591
    JANET_MEMORY_STRUCT,
592
    JANET_MEMORY_FIBER,
593
    JANET_MEMORY_BUFFER,
594
    JANET_MEMORY_FUNCTION,
595
    JANET_MEMORY_ABSTRACT,
596
    JANET_MEMORY_FUNCENV,
597
    JANET_MEMORY_FUNCDEF,
598
    JANET_MEMORY_THREADED_ABSTRACT,
599
    JANET_MEMORY_TABLE_WEAKK,
600
    JANET_MEMORY_TABLE_WEAKV,
601
    JANET_MEMORY_TABLE_WEAKKV,
602
    JANET_MEMORY_ARRAY_WEAK
603
};
604
605
/* To allocate collectable memory, one must call janet_alloc, initialize the memory,
606
 * and then call when janet_enablegc when it is initialized and reachable by the gc (on the JANET stack) */
607
void *janet_gcalloc(enum JanetMemoryType type, size_t size);
608
609
#endif
610
611
612
/* src/core/vector.h */
613
#line 0 "src/core/vector.h"
614
615
/*
616
* Copyright (c) 2025 Calvin Rose
617
*
618
* Permission is hereby granted, free of charge, to any person obtaining a copy
619
* of this software and associated documentation files (the "Software"), to
620
* deal in the Software without restriction, including without limitation the
621
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
622
* sell copies of the Software, and to permit persons to whom the Software is
623
* furnished to do so, subject to the following conditions:
624
*
625
* The above copyright notice and this permission notice shall be included in
626
* all copies or substantial portions of the Software.
627
*
628
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
629
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
630
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
631
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
632
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
633
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
634
* IN THE SOFTWARE.
635
*/
636
637
#ifndef JANET_VECTOR_H_defined
638
#define JANET_VECTOR_H_defined
639
640
#ifndef JANET_AMALG
641
#include "features.h"
642
#include <janet.h>
643
#endif
644
645
/*
646
 * vector code modified from
647
 * https://github.com/nothings/stb/blob/master/stretchy_buffer.h
648
*/
649
650
/* This is mainly used code such as the assembler or compiler, which
651
 * need vector like data structures that are only garbage collected in case
652
 * of an error, and normally rely on malloc/free. */
653
654
0
#define janet_v_free(v)         (((v) != NULL) ? (janet_sfree(janet_v__raw(v)), 0) : 0)
655
0
#define janet_v_push(v, x)      (janet_v__maybegrow(v, 1), (v)[janet_v__cnt(v)++] = (x))
656
#define janet_v_pop(v)          (janet_v_count(v) ? janet_v__cnt(v)-- : 0)
657
0
#define janet_v_count(v)        (((v) != NULL) ? janet_v__cnt(v) : 0)
658
0
#define janet_v_last(v)         ((v)[janet_v__cnt(v) - 1])
659
#define janet_v_empty(v)        (((v) != NULL) ? (janet_v__cnt(v) = 0) : 0)
660
0
#define janet_v_flatten(v)      (janet_v_flattenmem((v), sizeof(*(v))))
661
662
0
#define janet_v__raw(v) ((int32_t *)(v) - 2)
663
0
#define janet_v__cap(v) janet_v__raw(v)[0]
664
0
#define janet_v__cnt(v) janet_v__raw(v)[1]
665
666
0
#define janet_v__needgrow(v, n)  ((v) == NULL || janet_v__cnt(v) + (n) >= janet_v__cap(v))
667
0
#define janet_v__maybegrow(v, n) (janet_v__needgrow((v), (n)) ? janet_v__grow((v), (n)) : 0)
668
0
#define janet_v__grow(v, n)      ((v) = janet_v_grow((v), (n), sizeof(*(v))))
669
670
/* Actual functions defined in vector.c */
671
void *janet_v_grow(void *v, int32_t increment, int32_t itemsize);
672
void *janet_v_flattenmem(void *v, int32_t itemsize);
673
674
#endif
675
676
677
/* src/core/fiber.h */
678
#line 0 "src/core/fiber.h"
679
680
/*
681
* Copyright (c) 2025 Calvin Rose
682
*
683
* Permission is hereby granted, free of charge, to any person obtaining a copy
684
* of this software and associated documentation files (the "Software"), to
685
* deal in the Software without restriction, including without limitation the
686
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
687
* sell copies of the Software, and to permit persons to whom the Software is
688
* furnished to do so, subject to the following conditions:
689
*
690
* The above copyright notice and this permission notice shall be included in
691
* all copies or substantial portions of the Software.
692
*
693
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
694
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
695
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
696
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
697
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
698
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
699
* IN THE SOFTWARE.
700
*/
701
702
#ifndef JANET_FIBER_H_defined
703
#define JANET_FIBER_H_defined
704
705
#ifndef JANET_AMALG
706
#include <janet.h>
707
#endif
708
709
/* Fiber signal masks. */
710
0
#define JANET_FIBER_MASK_ERROR 2
711
0
#define JANET_FIBER_MASK_DEBUG 4
712
0
#define JANET_FIBER_MASK_YIELD 8
713
714
0
#define JANET_FIBER_MASK_USER0 (16 << 0)
715
0
#define JANET_FIBER_MASK_USER1 (16 << 1)
716
0
#define JANET_FIBER_MASK_USER2 (16 << 2)
717
0
#define JANET_FIBER_MASK_USER3 (16 << 3)
718
0
#define JANET_FIBER_MASK_USER4 (16 << 4)
719
#define JANET_FIBER_MASK_USER5 (16 << 5)
720
#define JANET_FIBER_MASK_USER6 (16 << 6)
721
#define JANET_FIBER_MASK_USER7 (16 << 7)
722
0
#define JANET_FIBER_MASK_USER8 (16 << 8)
723
0
#define JANET_FIBER_MASK_USER9 (16 << 9)
724
725
0
#define JANET_FIBER_MASK_USERN(N) (16 << (N))
726
0
#define JANET_FIBER_MASK_USER 0x3FF0
727
728
0
#define JANET_FIBER_STATUS_MASK 0x3F0000
729
0
#define JANET_FIBER_RESUME_SIGNAL 0x400000
730
0
#define JANET_FIBER_STATUS_OFFSET 16
731
732
0
#define JANET_FIBER_BREAKPOINT       0x1000000
733
0
#define JANET_FIBER_RESUME_NO_USEVAL 0x2000000
734
0
#define JANET_FIBER_RESUME_NO_SKIP   0x4000000
735
0
#define JANET_FIBER_DID_LONGJUMP     0x8000000
736
0
#define JANET_FIBER_FLAG_MASK        0xF000000
737
738
0
#define JANET_FIBER_EV_FLAG_CANCELED 0x10000
739
0
#define JANET_FIBER_EV_FLAG_SUSPENDED 0x20000
740
0
#define JANET_FIBER_FLAG_ROOT 0x40000
741
0
#define JANET_FIBER_EV_FLAG_IN_FLIGHT 0x1
742
743
/* used only on windows, should otherwise be unset */
744
745
0
#define janet_fiber_set_status(f, s) do {\
746
0
    (f)->flags &= ~JANET_FIBER_STATUS_MASK;\
747
0
    (f)->flags |= (s) << JANET_FIBER_STATUS_OFFSET;\
748
0
} while (0)
749
750
0
#define janet_stack_frame(s) ((JanetStackFrame *)((s) - JANET_FRAME_SIZE))
751
0
#define janet_fiber_frame(f) janet_stack_frame((f)->data + (f)->frame)
752
void janet_fiber_setcapacity(JanetFiber *fiber, int32_t n);
753
void janet_fiber_push(JanetFiber *fiber, Janet x);
754
void janet_fiber_push2(JanetFiber *fiber, Janet x, Janet y);
755
void janet_fiber_push3(JanetFiber *fiber, Janet x, Janet y, Janet z);
756
void janet_fiber_pushn(JanetFiber *fiber, const Janet *arr, int32_t n);
757
int janet_fiber_funcframe(JanetFiber *fiber, JanetFunction *func);
758
int janet_fiber_funcframe_tail(JanetFiber *fiber, JanetFunction *func);
759
void janet_fiber_cframe(JanetFiber *fiber, JanetCFunction cfun);
760
void janet_fiber_popframe(JanetFiber *fiber);
761
void janet_env_maybe_detach(JanetFuncEnv *env);
762
int janet_env_valid(JanetFuncEnv *env);
763
764
#ifdef JANET_EV
765
void janet_fiber_did_resume(JanetFiber *fiber);
766
#endif
767
768
#endif
769
770
771
/* src/core/regalloc.h */
772
#line 0 "src/core/regalloc.h"
773
774
/*
775
* Copyright (c) 2025 Calvin Rose
776
*
777
* Permission is hereby granted, free of charge, to any person obtaining a copy
778
* of this software and associated documentation files (the "Software"), to
779
* deal in the Software without restriction, including without limitation the
780
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
781
* sell copies of the Software, and to permit persons to whom the Software is
782
* furnished to do so, subject to the following conditions:
783
*
784
* The above copyright notice and this permission notice shall be included in
785
* all copies or substantial portions of the Software.
786
*
787
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
788
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
789
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
790
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
791
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
792
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
793
* IN THE SOFTWARE.
794
*/
795
796
/* Implements a simple first fit register allocator for the compiler. */
797
798
#ifndef JANET_REGALLOC_H
799
#define JANET_REGALLOC_H
800
801
#include <stdint.h>
802
803
/* Placeholder for allocating temporary registers */
804
typedef enum {
805
    JANETC_REGTEMP_0,
806
    JANETC_REGTEMP_1,
807
    JANETC_REGTEMP_2,
808
    JANETC_REGTEMP_3,
809
    JANETC_REGTEMP_4,
810
    JANETC_REGTEMP_5,
811
    JANETC_REGTEMP_6,
812
    JANETC_REGTEMP_7
813
} JanetcRegisterTemp;
814
815
typedef struct {
816
    uint32_t *chunks;
817
    int32_t count; /* number of chunks in chunks */
818
    int32_t capacity; /* amount allocated for chunks */
819
    int32_t max; /* The maximum allocated register so far */
820
    int32_t regtemps; /* Hold which temp. registers are allocated. */
821
} JanetcRegisterAllocator;
822
823
void janetc_regalloc_init(JanetcRegisterAllocator *ra);
824
void janetc_regalloc_deinit(JanetcRegisterAllocator *ra);
825
826
int32_t janetc_regalloc_1(JanetcRegisterAllocator *ra);
827
void janetc_regalloc_free(JanetcRegisterAllocator *ra, int32_t reg);
828
int32_t janetc_regalloc_temp(JanetcRegisterAllocator *ra, JanetcRegisterTemp nth);
829
void janetc_regalloc_freetemp(JanetcRegisterAllocator *ra, int32_t reg, JanetcRegisterTemp nth);
830
void janetc_regalloc_clone(JanetcRegisterAllocator *dest, JanetcRegisterAllocator *src);
831
void janetc_regalloc_touch(JanetcRegisterAllocator *ra, int32_t reg);
832
int janetc_regalloc_check(JanetcRegisterAllocator *ra, int32_t reg);
833
834
#endif
835
836
837
/* src/core/compile.h */
838
#line 0 "src/core/compile.h"
839
840
/*
841
* Copyright (c) 2025 Calvin Rose
842
*
843
* Permission is hereby granted, free of charge, to any person obtaining a copy
844
* of this software and associated documentation files (the "Software"), to
845
* deal in the Software without restriction, including without limitation the
846
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
847
* sell copies of the Software, and to permit persons to whom the Software is
848
* furnished to do so, subject to the following conditions:
849
*
850
* The above copyright notice and this permission notice shall be included in
851
* all copies or substantial portions of the Software.
852
*
853
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
854
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
855
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
856
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
857
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
858
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
859
* IN THE SOFTWARE.
860
*/
861
862
#ifndef JANET_COMPILE_H
863
#define JANET_COMPILE_H
864
865
#ifndef JANET_AMALG
866
#include "features.h"
867
#include <janet.h>
868
#include "regalloc.h"
869
#endif
870
871
/* Levels for compiler warnings */
872
typedef enum {
873
    JANET_C_LINT_RELAXED,
874
    JANET_C_LINT_NORMAL,
875
    JANET_C_LINT_STRICT
876
} JanetCompileLintLevel;
877
878
/* Tags for some functions for the prepared inliner */
879
#define JANET_FUN_DEBUG 1
880
#define JANET_FUN_ERROR 2
881
#define JANET_FUN_APPLY 3
882
#define JANET_FUN_YIELD 4
883
#define JANET_FUN_RESUME 5
884
#define JANET_FUN_IN 6
885
#define JANET_FUN_PUT 7
886
#define JANET_FUN_LENGTH 8
887
#define JANET_FUN_ADD 9
888
#define JANET_FUN_SUBTRACT 10
889
#define JANET_FUN_MULTIPLY 11
890
#define JANET_FUN_DIVIDE 12
891
#define JANET_FUN_BAND 13
892
#define JANET_FUN_BOR 14
893
#define JANET_FUN_BXOR 15
894
#define JANET_FUN_LSHIFT 16
895
#define JANET_FUN_RSHIFT 17
896
#define JANET_FUN_RSHIFTU 18
897
#define JANET_FUN_BNOT 19
898
#define JANET_FUN_GT 20
899
#define JANET_FUN_LT 21
900
#define JANET_FUN_GTE 22
901
#define JANET_FUN_LTE 23
902
0
#define JANET_FUN_EQ 24
903
0
#define JANET_FUN_NEQ 25
904
#define JANET_FUN_PROP 26
905
#define JANET_FUN_GET 27
906
#define JANET_FUN_NEXT 28
907
#define JANET_FUN_MODULO 29
908
#define JANET_FUN_REMAINDER 30
909
#define JANET_FUN_CMP 31
910
#define JANET_FUN_CANCEL 32
911
#define JANET_FUN_DIVIDE_FLOOR 33
912
913
/* Compiler typedefs */
914
typedef struct JanetCompiler JanetCompiler;
915
typedef struct FormOptions FormOptions;
916
typedef struct SlotTracker SlotTracker;
917
typedef struct JanetScope JanetScope;
918
typedef struct JanetSlot JanetSlot;
919
typedef struct JanetFopts JanetFopts;
920
typedef struct JanetFunOptimizer JanetFunOptimizer;
921
typedef struct JanetSpecial JanetSpecial;
922
923
0
#define JANET_SLOT_CONSTANT 0x10000
924
0
#define JANET_SLOT_NAMED 0x20000
925
0
#define JANET_SLOT_MUTABLE 0x40000
926
0
#define JANET_SLOT_REF 0x80000
927
0
#define JANET_SLOT_RETURNED 0x100000
928
#define JANET_SLOT_DEP_NOTE 0x200000
929
#define JANET_SLOT_DEP_WARN 0x400000
930
#define JANET_SLOT_DEP_ERROR 0x800000
931
0
#define JANET_SLOT_SPLICED 0x1000000
932
933
0
#define JANET_SLOTTYPE_ANY 0xFFFF
934
935
/* A stack slot */
936
struct JanetSlot {
937
    Janet constant; /* If the slot has a constant value */
938
    int32_t index;
939
    int32_t envindex; /* 0 is local, positive number is an upvalue */
940
    uint32_t flags;
941
};
942
943
0
#define JANET_SCOPE_FUNCTION 1
944
0
#define JANET_SCOPE_ENV 2
945
0
#define JANET_SCOPE_TOP 4
946
0
#define JANET_SCOPE_UNUSED 8
947
0
#define JANET_SCOPE_CLOSURE 16
948
0
#define JANET_SCOPE_WHILE 32
949
950
/* A symbol and slot pair */
951
typedef struct SymPair {
952
    JanetSlot slot;
953
    const uint8_t *sym;
954
    const uint8_t *sym2;
955
    int keep;
956
    uint32_t birth_pc;
957
    uint32_t death_pc;
958
} SymPair;
959
960
typedef struct JanetEnvRef {
961
    int32_t envindex;
962
    JanetScope *scope;
963
} JanetEnvRef;
964
965
/* A lexical scope during compilation */
966
struct JanetScope {
967
968
    /* For debugging the compiler */
969
    const char *name;
970
971
    /* Scopes are doubly linked list */
972
    JanetScope *parent;
973
    JanetScope *child;
974
975
    /* Constants for this funcdef */
976
    Janet *consts;
977
978
    /* Map of symbols to slots. Use a simple linear scan for symbols. */
979
    SymPair *syms;
980
981
    /* FuncDefs */
982
    JanetFuncDef **defs;
983
984
    /* Register allocator */
985
    JanetcRegisterAllocator ra;
986
987
    /* Upvalue allocator */
988
    JanetcRegisterAllocator ua;
989
990
    /* Referenced closure environments. The values at each index correspond
991
     * to which index to get the environment from in the parent. The environment
992
     * that corresponds to the direct parent's stack will always have value 0. */
993
    JanetEnvRef *envs;
994
995
    int32_t bytecode_start;
996
    int flags;
997
};
998
999
/* Compilation state */
1000
struct JanetCompiler {
1001
1002
    /* Pointer to current scope */
1003
    JanetScope *scope;
1004
1005
    uint32_t *buffer;
1006
    JanetSourceMapping *mapbuffer;
1007
1008
    /* Hold the environment */
1009
    JanetTable *env;
1010
1011
    /* Name of source to attach to generated functions */
1012
    const uint8_t *source;
1013
1014
    /* The result of compilation */
1015
    JanetCompileResult result;
1016
1017
    /* Keep track of where we are in the source */
1018
    JanetSourceMapping current_mapping;
1019
1020
    /* Prevent unbounded recursion */
1021
    int recursion_guard;
1022
1023
    /* Collect linting results */
1024
    JanetArray *lints;
1025
};
1026
1027
0
#define JANET_FOPTS_TAIL 0x10000
1028
0
#define JANET_FOPTS_HINT 0x20000
1029
0
#define JANET_FOPTS_DROP 0x40000
1030
0
#define JANET_FOPTS_ACCEPT_SPLICE 0x80000
1031
1032
/* Options for compiling a single form */
1033
struct JanetFopts {
1034
    JanetCompiler *compiler;
1035
    JanetSlot hint;
1036
    uint32_t flags; /* bit set of accepted primitive types */
1037
};
1038
1039
/* Get the default form options */
1040
JanetFopts janetc_fopts_default(JanetCompiler *c);
1041
1042
/* For optimizing builtin normal functions. */
1043
struct JanetFunOptimizer {
1044
    int (*can_optimize)(JanetFopts opts, JanetSlot *args);
1045
    JanetSlot(*optimize)(JanetFopts opts, JanetSlot *args);
1046
};
1047
1048
/* A grouping of a named special and the corresponding compiler fragment */
1049
struct JanetSpecial {
1050
    const char *name;
1051
    JanetSlot(*compile)(JanetFopts opts, int32_t argn, const Janet *argv);
1052
};
1053
1054
/****************************************************/
1055
1056
/* Get an optimizer if it exists, otherwise NULL */
1057
const JanetFunOptimizer *janetc_funopt(uint32_t flags);
1058
1059
/* Get a special. Return NULL if none exists */
1060
const JanetSpecial *janetc_special(const uint8_t *name);
1061
1062
void janetc_freeslot(JanetCompiler *c, JanetSlot s);
1063
void janetc_nameslot(JanetCompiler *c, const uint8_t *sym, JanetSlot s);
1064
JanetSlot janetc_farslot(JanetCompiler *c);
1065
1066
/* Throw away some code after checking that it is well formed. */
1067
void janetc_throwaway(JanetFopts opts, Janet x);
1068
1069
/* Get a target slot for emitting an instruction. Will always return
1070
 * a local slot. */
1071
JanetSlot janetc_gettarget(JanetFopts opts);
1072
1073
/* Get a bunch of slots for function arguments */
1074
JanetSlot *janetc_toslots(JanetCompiler *c, const Janet *vals, int32_t len);
1075
1076
/* Get a bunch of slots for function arguments */
1077
JanetSlot *janetc_toslotskv(JanetCompiler *c, Janet ds);
1078
1079
/* Push slots loaded via janetc_toslots. */
1080
int32_t janetc_pushslots(JanetCompiler *c, JanetSlot *slots);
1081
1082
/* Free slots loaded via janetc_toslots */
1083
void janetc_freeslots(JanetCompiler *c, JanetSlot *slots);
1084
1085
/* Generate the return instruction for a slot. */
1086
JanetSlot janetc_return(JanetCompiler *c, JanetSlot s);
1087
1088
/* Store an error */
1089
void janetc_error(JanetCompiler *c, const uint8_t *m);
1090
void janetc_cerror(JanetCompiler *c, const char *m);
1091
1092
/* Linting */
1093
void janetc_lintf(JanetCompiler *C, JanetCompileLintLevel level, const char *format, ...);
1094
1095
/* Dispatch to correct form compiler */
1096
JanetSlot janetc_value(JanetFopts opts, Janet x);
1097
1098
/* Push and pop from the scope stack */
1099
void janetc_scope(JanetScope *s, JanetCompiler *c, int flags, const char *name);
1100
void janetc_popscope(JanetCompiler *c);
1101
void janetc_popscope_keepslot(JanetCompiler *c, JanetSlot retslot);
1102
JanetFuncDef *janetc_pop_funcdef(JanetCompiler *c);
1103
1104
/* Create a destroy slot */
1105
JanetSlot janetc_cslot(Janet x);
1106
1107
/* Search for a symbol */
1108
JanetSlot janetc_resolve(JanetCompiler *c, const uint8_t *sym);
1109
1110
/* Bytecode optimization */
1111
void janet_bytecode_movopt(JanetFuncDef *def);
1112
void janet_bytecode_remove_noops(JanetFuncDef *def);
1113
1114
#endif
1115
1116
1117
/* src/core/emit.h */
1118
#line 0 "src/core/emit.h"
1119
1120
/*
1121
* Copyright (c) 2025 Calvin Rose
1122
*
1123
* Permission is hereby granted, free of charge, to any person obtaining a copy
1124
* of this software and associated documentation files (the "Software"), to
1125
* deal in the Software without restriction, including without limitation the
1126
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1127
* sell copies of the Software, and to permit persons to whom the Software is
1128
* furnished to do so, subject to the following conditions:
1129
*
1130
* The above copyright notice and this permission notice shall be included in
1131
* all copies or substantial portions of the Software.
1132
*
1133
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1134
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1135
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1136
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1137
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1138
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1139
* IN THE SOFTWARE.
1140
*/
1141
1142
#ifndef JANET_EMIT_H
1143
#define JANET_EMIT_H
1144
1145
#ifndef JANET_AMALG
1146
#include "compile.h"
1147
#endif
1148
1149
void janetc_emit(JanetCompiler *c, uint32_t instr);
1150
1151
int32_t janetc_allocfar(JanetCompiler *c);
1152
int32_t janetc_allocnear(JanetCompiler *c, JanetcRegisterTemp);
1153
1154
int32_t janetc_emit_s(JanetCompiler *c, uint8_t op, JanetSlot s, int wr);
1155
int32_t janetc_emit_sl(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t label);
1156
int32_t janetc_emit_st(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t tflags);
1157
int32_t janetc_emit_si(JanetCompiler *c, uint8_t op, JanetSlot s, int16_t immediate, int wr);
1158
int32_t janetc_emit_su(JanetCompiler *c, uint8_t op, JanetSlot s, uint16_t immediate, int wr);
1159
int32_t janetc_emit_ss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int wr);
1160
int32_t janetc_emit_ssi(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int8_t immediate, int wr);
1161
int32_t janetc_emit_ssu(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, uint8_t immediate, int wr);
1162
int32_t janetc_emit_sss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, JanetSlot s3, int wr);
1163
1164
/* Check if two slots are equivalent */
1165
int janetc_sequal(JanetSlot x, JanetSlot y);
1166
1167
/* Move value from one slot to another. Cannot copy to constant slots. */
1168
void janetc_copy(JanetCompiler *c, JanetSlot dest, JanetSlot src);
1169
1170
#endif
1171
1172
1173
/* src/core/symcache.h */
1174
#line 0 "src/core/symcache.h"
1175
1176
/*
1177
* Copyright (c) 2025 Calvin Rose
1178
*
1179
* Permission is hereby granted, free of charge, to any person obtaining a copy
1180
* of this software and associated documentation files (the "Software"), to
1181
* deal in the Software without restriction, including without limitation the
1182
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1183
* sell copies of the Software, and to permit persons to whom the Software is
1184
* furnished to do so, subject to the following conditions:
1185
*
1186
* The above copyright notice and this permission notice shall be included in
1187
* all copies or substantial portions of the Software.
1188
*
1189
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1190
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1191
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1192
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1193
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1194
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1195
* IN THE SOFTWARE.
1196
*/
1197
1198
#ifndef JANET_SYMCACHE_H_defined
1199
#define JANET_SYMCACHE_H_defined
1200
1201
#ifndef JANET_AMALG
1202
#include "features.h"
1203
#include <janet.h>
1204
#endif
1205
1206
/* Initialize the cache (allocate cache memory) */
1207
void janet_symcache_init(void);
1208
void janet_symcache_deinit(void);
1209
void janet_symbol_deinit(const uint8_t *sym);
1210
1211
#endif
1212
1213
1214
/* Windows work around - winsock2 must be included before windows.h, especially in amalgamated build */
1215
#if defined(JANET_WINDOWS) && defined(JANET_NET)
1216
#include <winsock2.h>
1217
#endif
1218
1219
1220
/* src/core/abstract.c */
1221
#line 0 "src/core/abstract.c"
1222
1223
/*
1224
* Copyright (c) 2025 Calvin Rose
1225
*
1226
* Permission is hereby granted, free of charge, to any person obtaining a copy
1227
* of this software and associated documentation files (the "Software"), to
1228
* deal in the Software without restriction, including without limitation the
1229
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1230
* sell copies of the Software, and to permit persons to whom the Software is
1231
* furnished to do so, subject to the following conditions:
1232
*
1233
* The above copyright notice and this permission notice shall be included in
1234
* all copies or substantial portions of the Software.
1235
*
1236
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1237
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1238
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1239
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1240
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1241
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1242
* IN THE SOFTWARE.
1243
*/
1244
1245
#ifndef JANET_AMALG
1246
#include "features.h"
1247
#include <janet.h>
1248
#include "util.h"
1249
#include "gc.h"
1250
#include "state.h"
1251
#endif
1252
1253
#ifdef JANET_EV
1254
#ifdef JANET_WINDOWS
1255
#include <windows.h>
1256
#endif
1257
#endif
1258
1259
/* Create new userdata */
1260
82.8k
void *janet_abstract_begin(const JanetAbstractType *atype, size_t size) {
1261
82.8k
    JanetAbstractHead *header = janet_gcalloc(JANET_MEMORY_NONE,
1262
82.8k
                                sizeof(JanetAbstractHead) + size);
1263
82.8k
    header->size = size;
1264
82.8k
    header->type = atype;
1265
82.8k
    return (void *) & (header->data);
1266
82.8k
}
1267
1268
82.8k
void *janet_abstract_end(void *x) {
1269
82.8k
    janet_gc_settype((void *)(janet_abstract_head(x)), JANET_MEMORY_ABSTRACT);
1270
82.8k
    return x;
1271
82.8k
}
1272
1273
82.8k
void *janet_abstract(const JanetAbstractType *atype, size_t size) {
1274
82.8k
    return janet_abstract_end(janet_abstract_begin(atype, size));
1275
82.8k
}
1276
1277
#ifdef JANET_EV
1278
1279
/*
1280
 * Threaded abstracts
1281
 */
1282
1283
0
void *janet_abstract_begin_threaded(const JanetAbstractType *atype, size_t size) {
1284
0
    JanetAbstractHead *header = janet_malloc(sizeof(JanetAbstractHead) + size);
1285
0
    if (NULL == header) {
1286
0
        JANET_OUT_OF_MEMORY;
1287
0
    }
1288
0
    janet_vm.next_collection += size + sizeof(JanetAbstractHead);
1289
0
    header->gc.flags = JANET_MEMORY_THREADED_ABSTRACT;
1290
0
    header->gc.data.next = NULL; /* Clear memory for address sanitizers */
1291
0
    header->gc.data.refcount = 1;
1292
0
    header->size = size;
1293
0
    header->type = atype;
1294
0
    void *abstract = (void *) & (header->data);
1295
0
    janet_table_put(&janet_vm.threaded_abstracts, janet_wrap_abstract(abstract), janet_wrap_false());
1296
0
    return abstract;
1297
0
}
1298
1299
0
void *janet_abstract_end_threaded(void *x) {
1300
0
    janet_gc_settype((void *)(janet_abstract_head(x)), JANET_MEMORY_THREADED_ABSTRACT);
1301
0
    return x;
1302
0
}
1303
1304
0
void *janet_abstract_threaded(const JanetAbstractType *atype, size_t size) {
1305
0
    return janet_abstract_end_threaded(janet_abstract_begin_threaded(atype, size));
1306
0
}
1307
1308
/* Refcounting primitives and sync primitives */
1309
1310
#ifdef JANET_WINDOWS
1311
1312
size_t janet_os_mutex_size(void) {
1313
    return sizeof(CRITICAL_SECTION);
1314
}
1315
1316
size_t janet_os_rwlock_size(void) {
1317
    return sizeof(void *);
1318
}
1319
1320
void janet_os_mutex_init(JanetOSMutex *mutex) {
1321
    InitializeCriticalSection((CRITICAL_SECTION *) mutex);
1322
}
1323
1324
void janet_os_mutex_deinit(JanetOSMutex *mutex) {
1325
    DeleteCriticalSection((CRITICAL_SECTION *) mutex);
1326
}
1327
1328
void janet_os_mutex_lock(JanetOSMutex *mutex) {
1329
    EnterCriticalSection((CRITICAL_SECTION *) mutex);
1330
}
1331
1332
void janet_os_mutex_unlock(JanetOSMutex *mutex) {
1333
    /* error handling? May want to keep counter */
1334
    LeaveCriticalSection((CRITICAL_SECTION *) mutex);
1335
}
1336
1337
void janet_os_rwlock_init(JanetOSRWLock *rwlock) {
1338
    InitializeSRWLock((PSRWLOCK) rwlock);
1339
}
1340
1341
void janet_os_rwlock_deinit(JanetOSRWLock *rwlock) {
1342
    /* no op? */
1343
    (void) rwlock;
1344
}
1345
1346
void janet_os_rwlock_rlock(JanetOSRWLock *rwlock) {
1347
    AcquireSRWLockShared((PSRWLOCK) rwlock);
1348
}
1349
1350
void janet_os_rwlock_wlock(JanetOSRWLock *rwlock) {
1351
    AcquireSRWLockExclusive((PSRWLOCK) rwlock);
1352
}
1353
1354
void janet_os_rwlock_runlock(JanetOSRWLock *rwlock) {
1355
    ReleaseSRWLockShared((PSRWLOCK) rwlock);
1356
}
1357
1358
void janet_os_rwlock_wunlock(JanetOSRWLock *rwlock) {
1359
    ReleaseSRWLockExclusive((PSRWLOCK) rwlock);
1360
}
1361
1362
#else
1363
1364
0
size_t janet_os_mutex_size(void) {
1365
0
    return sizeof(pthread_mutex_t);
1366
0
}
1367
1368
0
size_t janet_os_rwlock_size(void) {
1369
0
    return sizeof(pthread_rwlock_t);
1370
0
}
1371
1372
0
void janet_os_mutex_init(JanetOSMutex *mutex) {
1373
0
    pthread_mutexattr_t attr;
1374
0
    pthread_mutexattr_init(&attr);
1375
0
    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
1376
0
    pthread_mutex_init((pthread_mutex_t *) mutex, &attr);
1377
0
}
1378
1379
0
void janet_os_mutex_deinit(JanetOSMutex *mutex) {
1380
0
    pthread_mutex_destroy((pthread_mutex_t *) mutex);
1381
0
}
1382
1383
0
void janet_os_mutex_lock(JanetOSMutex *mutex) {
1384
0
    pthread_mutex_lock((pthread_mutex_t *) mutex);
1385
0
}
1386
1387
0
void janet_os_mutex_unlock(JanetOSMutex *mutex) {
1388
0
    int ret = pthread_mutex_unlock((pthread_mutex_t *) mutex);
1389
0
    if (ret) janet_panic("cannot release lock");
1390
0
}
1391
1392
0
void janet_os_rwlock_init(JanetOSRWLock *rwlock) {
1393
0
    pthread_rwlock_init((pthread_rwlock_t *) rwlock, NULL);
1394
0
}
1395
1396
0
void janet_os_rwlock_deinit(JanetOSRWLock *rwlock) {
1397
0
    pthread_rwlock_destroy((pthread_rwlock_t *) rwlock);
1398
0
}
1399
1400
0
void janet_os_rwlock_rlock(JanetOSRWLock *rwlock) {
1401
0
    pthread_rwlock_rdlock((pthread_rwlock_t *) rwlock);
1402
0
}
1403
1404
0
void janet_os_rwlock_wlock(JanetOSRWLock *rwlock) {
1405
0
    pthread_rwlock_wrlock((pthread_rwlock_t *) rwlock);
1406
0
}
1407
1408
0
void janet_os_rwlock_runlock(JanetOSRWLock *rwlock) {
1409
0
    pthread_rwlock_unlock((pthread_rwlock_t *) rwlock);
1410
0
}
1411
1412
0
void janet_os_rwlock_wunlock(JanetOSRWLock *rwlock) {
1413
0
    pthread_rwlock_unlock((pthread_rwlock_t *) rwlock);
1414
0
}
1415
1416
#endif
1417
1418
0
int32_t janet_abstract_incref(void *abst) {
1419
0
    return janet_atomic_inc(&janet_abstract_head(abst)->gc.data.refcount);
1420
0
}
1421
1422
0
int32_t janet_abstract_decref(void *abst) {
1423
0
    return janet_atomic_dec(&janet_abstract_head(abst)->gc.data.refcount);
1424
0
}
1425
1426
#endif
1427
1428
1429
/* src/core/array.c */
1430
#line 0 "src/core/array.c"
1431
1432
/*
1433
* Copyright (c) 2025 Calvin Rose
1434
*
1435
* Permission is hereby granted, free of charge, to any person obtaining a copy
1436
* of this software and associated documentation files (the "Software"), to
1437
* deal in the Software without restriction, including without limitation the
1438
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1439
* sell copies of the Software, and to permit persons to whom the Software is
1440
* furnished to do so, subject to the following conditions:
1441
*
1442
* The above copyright notice and this permission notice shall be included in
1443
* all copies or substantial portions of the Software.
1444
*
1445
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1446
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1447
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1448
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1449
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1450
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1451
* IN THE SOFTWARE.
1452
*/
1453
1454
#ifndef JANET_AMALG
1455
#include "features.h"
1456
#include <janet.h>
1457
#include "gc.h"
1458
#include "util.h"
1459
#include "state.h"
1460
#endif
1461
1462
#include <string.h>
1463
1464
4.63k
static void janet_array_impl(JanetArray *array, int32_t capacity) {
1465
4.63k
    Janet *data = NULL;
1466
4.63k
    if (capacity > 0) {
1467
4.19k
        janet_vm.next_collection += capacity * sizeof(Janet);
1468
4.19k
        data = (Janet *) janet_malloc(sizeof(Janet) * (size_t) capacity);
1469
4.19k
        if (NULL == data) {
1470
0
            JANET_OUT_OF_MEMORY;
1471
0
        }
1472
4.19k
    }
1473
4.63k
    array->count = 0;
1474
4.63k
    array->capacity = capacity;
1475
4.63k
    array->data = data;
1476
4.63k
}
1477
1478
/* Creates a new array */
1479
4.63k
JanetArray *janet_array(int32_t capacity) {
1480
4.63k
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY, sizeof(JanetArray));
1481
4.63k
    janet_array_impl(array, capacity);
1482
4.63k
    return array;
1483
4.63k
}
1484
1485
/* Creates a new array with weak references */
1486
0
JanetArray *janet_array_weak(int32_t capacity) {
1487
0
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY_WEAK, sizeof(JanetArray));
1488
0
    janet_array_impl(array, capacity);
1489
0
    return array;
1490
0
}
1491
1492
/* Creates a new array from n elements. */
1493
0
JanetArray *janet_array_n(const Janet *elements, int32_t n) {
1494
0
    JanetArray *array = janet_gcalloc(JANET_MEMORY_ARRAY, sizeof(JanetArray));
1495
0
    array->capacity = n;
1496
0
    array->count = n;
1497
0
    array->data = janet_malloc(sizeof(Janet) * (size_t) n);
1498
0
    if (!array->data) {
1499
0
        JANET_OUT_OF_MEMORY;
1500
0
    }
1501
0
    safe_memcpy(array->data, elements, sizeof(Janet) * n);
1502
0
    return array;
1503
0
}
1504
1505
/* Ensure the array has enough capacity for elements */
1506
0
void janet_array_ensure(JanetArray *array, int32_t capacity, int32_t growth) {
1507
0
    Janet *newData;
1508
0
    Janet *old = array->data;
1509
0
    if (capacity <= array->capacity) return;
1510
0
    int64_t new_capacity = ((int64_t) capacity) * growth;
1511
0
    if (new_capacity > INT32_MAX) new_capacity = INT32_MAX;
1512
0
    capacity = (int32_t) new_capacity;
1513
0
    newData = janet_realloc(old, capacity * sizeof(Janet));
1514
0
    if (NULL == newData) {
1515
0
        JANET_OUT_OF_MEMORY;
1516
0
    }
1517
0
    janet_vm.next_collection += (capacity - array->capacity) * sizeof(Janet);
1518
0
    array->data = newData;
1519
0
    array->capacity = capacity;
1520
0
}
1521
1522
/* Set the count of an array. Extend with nil if needed. */
1523
0
void janet_array_setcount(JanetArray *array, int32_t count) {
1524
0
    if (count < 0)
1525
0
        return;
1526
0
    if (count > array->count) {
1527
0
        int32_t i;
1528
0
        janet_array_ensure(array, count, 1);
1529
0
        for (i = array->count; i < count; i++) {
1530
0
            array->data[i] = janet_wrap_nil();
1531
0
        }
1532
0
    }
1533
0
    array->count = count;
1534
0
}
1535
1536
/* Push a value to the top of the array */
1537
0
void janet_array_push(JanetArray *array, Janet x) {
1538
0
    if (array->count == INT32_MAX) {
1539
0
        janet_panic("array overflow");
1540
0
    }
1541
0
    int32_t newcount = array->count + 1;
1542
0
    janet_array_ensure(array, newcount, 2);
1543
0
    array->data[array->count] = x;
1544
0
    array->count = newcount;
1545
0
}
1546
1547
/* Pop a value from the top of the array */
1548
0
Janet janet_array_pop(JanetArray *array) {
1549
0
    if (array->count) {
1550
0
        return array->data[--array->count];
1551
0
    } else {
1552
0
        return janet_wrap_nil();
1553
0
    }
1554
0
}
1555
1556
/* Look at the last value in the array */
1557
0
Janet janet_array_peek(JanetArray *array) {
1558
0
    if (array->count) {
1559
0
        return array->data[array->count - 1];
1560
0
    } else {
1561
0
        return janet_wrap_nil();
1562
0
    }
1563
0
}
1564
1565
/* C Functions */
1566
1567
JANET_CORE_FN(cfun_array_new,
1568
              "(array/new capacity)",
1569
              "Creates a new empty array with a pre-allocated capacity. The same as "
1570
0
              "`(array)` but can be more efficient if the maximum size of an array is known.") {
1571
0
    janet_fixarity(argc, 1);
1572
0
    int32_t cap = janet_getinteger(argv, 0);
1573
0
    JanetArray *array = janet_array(cap);
1574
0
    return janet_wrap_array(array);
1575
0
}
1576
1577
JANET_CORE_FN(cfun_array_weak,
1578
              "(array/weak capacity)",
1579
0
              "Creates a new empty array with a pre-allocated capacity and support for weak references. Similar to `array/new`.") {
1580
0
    janet_fixarity(argc, 1);
1581
0
    int32_t cap = janet_getinteger(argv, 0);
1582
0
    JanetArray *array = janet_array_weak(cap);
1583
0
    return janet_wrap_array(array);
1584
0
}
1585
1586
JANET_CORE_FN(cfun_array_new_filled,
1587
              "(array/new-filled count &opt value)",
1588
0
              "Creates a new array of `count` elements, all set to `value`, which defaults to nil. Returns the new array.") {
1589
0
    janet_arity(argc, 1, 2);
1590
0
    int32_t count = janet_getnat(argv, 0);
1591
0
    Janet x = (argc == 2) ? argv[1] : janet_wrap_nil();
1592
0
    JanetArray *array = janet_array(count);
1593
0
    for (int32_t i = 0; i < count; i++) {
1594
0
        array->data[i] = x;
1595
0
    }
1596
0
    array->count = count;
1597
0
    return janet_wrap_array(array);
1598
0
}
1599
1600
JANET_CORE_FN(cfun_array_fill,
1601
              "(array/fill arr &opt value)",
1602
              "Replace all elements of an array with `value` (defaulting to nil) without changing the length of the array. "
1603
0
              "Returns the modified array.") {
1604
0
    janet_arity(argc, 1, 2);
1605
0
    JanetArray *array = janet_getarray(argv, 0);
1606
0
    Janet x = (argc == 2) ? argv[1] : janet_wrap_nil();
1607
0
    for (int32_t i = 0; i < array->count; i++) {
1608
0
        array->data[i] = x;
1609
0
    }
1610
0
    return argv[0];
1611
0
}
1612
1613
JANET_CORE_FN(cfun_array_pop,
1614
              "(array/pop arr)",
1615
              "Remove the last element of the array and return it. If the array is empty, will return nil. Modifies "
1616
0
              "the input array.") {
1617
0
    janet_fixarity(argc, 1);
1618
0
    JanetArray *array = janet_getarray(argv, 0);
1619
0
    return janet_array_pop(array);
1620
0
}
1621
1622
JANET_CORE_FN(cfun_array_peek,
1623
              "(array/peek arr)",
1624
0
              "Returns the last element of the array. Does not modify the array.") {
1625
0
    janet_fixarity(argc, 1);
1626
0
    JanetArray *array = janet_getarray(argv, 0);
1627
0
    return janet_array_peek(array);
1628
0
}
1629
1630
JANET_CORE_FN(cfun_array_push,
1631
              "(array/push arr & xs)",
1632
0
              "Push all the elements of xs to the end of an array. Modifies the input array and returns it.") {
1633
0
    janet_arity(argc, 1, -1);
1634
0
    JanetArray *array = janet_getarray(argv, 0);
1635
0
    if (INT32_MAX - argc + 1 <= array->count) {
1636
0
        janet_panic("array overflow");
1637
0
    }
1638
0
    int32_t newcount = array->count - 1 + argc;
1639
0
    janet_array_ensure(array, newcount, 2);
1640
0
    if (argc > 1) memcpy(array->data + array->count, argv + 1, (size_t)(argc - 1) * sizeof(Janet));
1641
0
    array->count = newcount;
1642
0
    return argv[0];
1643
0
}
1644
1645
JANET_CORE_FN(cfun_array_ensure,
1646
              "(array/ensure arr capacity growth)",
1647
              "Ensures that the memory backing the array is large enough for `capacity` "
1648
              "items at the given rate of growth. `capacity` and `growth` must be integers. "
1649
              "If the backing capacity is already enough, then this function does nothing. "
1650
0
              "Otherwise, the backing memory will be reallocated so that there is enough space.") {
1651
0
    janet_fixarity(argc, 3);
1652
0
    JanetArray *array = janet_getarray(argv, 0);
1653
0
    int32_t newcount = janet_getinteger(argv, 1);
1654
0
    int32_t growth = janet_getinteger(argv, 2);
1655
0
    if (newcount < 1) janet_panic("expected positive integer");
1656
0
    janet_array_ensure(array, newcount, growth);
1657
0
    return argv[0];
1658
0
}
1659
1660
JANET_CORE_FN(cfun_array_slice,
1661
              "(array/slice arrtup &opt start end)",
1662
              "Takes a slice of array or tuple from `start` to `end`. The range is half open, "
1663
              "[start, end). Indexes can also be negative, indicating indexing from the "
1664
              "end of the array. By default, `start` is 0 and `end` is the length of the array. "
1665
              "Note that if the range is negative, it is taken as (start, end] to allow a full "
1666
0
              "negative slice range. Returns a new array.") {
1667
0
    JanetView view = janet_getindexed(argv, 0);
1668
0
    JanetRange range = janet_getslice(argc, argv);
1669
0
    JanetArray *array = janet_array(range.end - range.start);
1670
0
    if (array->data)
1671
0
        memcpy(array->data, view.items + range.start, sizeof(Janet) * (range.end - range.start));
1672
0
    array->count = range.end - range.start;
1673
0
    return janet_wrap_array(array);
1674
0
}
1675
1676
JANET_CORE_FN(cfun_array_concat,
1677
              "(array/concat arr & parts)",
1678
              "Concatenates a variable number of arrays (and tuples) into the first argument, "
1679
              "which must be an array. If any of the parts are arrays or tuples, their elements will "
1680
              "be inserted into the array. Otherwise, each part in `parts` will be appended to `arr` in order. "
1681
0
              "Return the modified array `arr`.") {
1682
0
    int32_t i;
1683
0
    janet_arity(argc, 1, -1);
1684
0
    JanetArray *array = janet_getarray(argv, 0);
1685
0
    for (i = 1; i < argc; i++) {
1686
0
        switch (janet_type(argv[i])) {
1687
0
            default:
1688
0
                janet_array_push(array, argv[i]);
1689
0
                break;
1690
0
            case JANET_ARRAY:
1691
0
            case JANET_TUPLE: {
1692
0
                int32_t j, len = 0;
1693
0
                const Janet *vals = NULL;
1694
0
                janet_indexed_view(argv[i], &vals, &len);
1695
0
                if (array->data == vals) {
1696
0
                    int32_t newcount = array->count + len;
1697
0
                    janet_array_ensure(array, newcount, 2);
1698
0
                    janet_indexed_view(argv[i], &vals, &len);
1699
0
                }
1700
0
                for (j = 0; j < len; j++)
1701
0
                    janet_array_push(array, vals[j]);
1702
0
            }
1703
0
            break;
1704
0
        }
1705
0
    }
1706
0
    return janet_wrap_array(array);
1707
0
}
1708
1709
JANET_CORE_FN(cfun_array_join,
1710
              "(array/join arr & parts)",
1711
              "Join a variable number of arrays and tuples into the first argument, "
1712
              "which must be an array. "
1713
0
              "Return the modified array `arr`.") {
1714
0
    int32_t i;
1715
0
    janet_arity(argc, 1, -1);
1716
0
    JanetArray *array = janet_getarray(argv, 0);
1717
0
    for (i = 1; i < argc; i++) {
1718
0
        int32_t j, len = 0;
1719
0
        const Janet *vals = NULL;
1720
0
        if (!janet_indexed_view(argv[i], &vals, &len)) {
1721
0
            janet_panicf("expected indexed type for argument %d, got %v", i, argv[i]);
1722
0
        }
1723
0
        if (array->data == vals) {
1724
0
            int32_t newcount = array->count + len;
1725
0
            janet_array_ensure(array, newcount, 2);
1726
0
            janet_indexed_view(argv[i], &vals, &len);
1727
0
        }
1728
0
        for (j = 0; j < len; j++)
1729
0
            janet_array_push(array, vals[j]);
1730
0
    }
1731
0
    return janet_wrap_array(array);
1732
0
}
1733
1734
JANET_CORE_FN(cfun_array_insert,
1735
              "(array/insert arr at & xs)",
1736
              "Insert all `xs` into array `arr` at index `at`. `at` should be an integer between "
1737
              "0 and the length of the array. A negative value for `at` will index backwards from "
1738
              "the end of the array, inserting after the index such that inserting at -1 appends to "
1739
0
              "the array. Returns the array.") {
1740
0
    size_t chunksize, restsize;
1741
0
    janet_arity(argc, 2, -1);
1742
0
    JanetArray *array = janet_getarray(argv, 0);
1743
0
    int32_t at = janet_getinteger(argv, 1);
1744
0
    if (at < 0) {
1745
0
        at = array->count + at + 1;
1746
0
    }
1747
0
    if (at < 0 || at > array->count)
1748
0
        janet_panicf("insertion index %d out of range [0,%d]", at, array->count);
1749
0
    chunksize = (argc - 2) * sizeof(Janet);
1750
0
    restsize = (array->count - at) * sizeof(Janet);
1751
0
    if (INT32_MAX - (argc - 2) < array->count) {
1752
0
        janet_panic("array overflow");
1753
0
    }
1754
0
    janet_array_ensure(array, array->count + argc - 2, 2);
1755
0
    if (restsize) {
1756
0
        memmove(array->data + at + argc - 2,
1757
0
                array->data + at,
1758
0
                restsize);
1759
0
    }
1760
0
    safe_memcpy(array->data + at, argv + 2, chunksize);
1761
0
    array->count += (argc - 2);
1762
0
    return argv[0];
1763
0
}
1764
1765
JANET_CORE_FN(cfun_array_remove,
1766
              "(array/remove arr at &opt n)",
1767
              "Remove up to `n` elements starting at index `at` in array `arr`. `at` can index from "
1768
              "the end of the array with a negative index, and `n` must be a non-negative integer. "
1769
              "By default, `n` is 1. "
1770
0
              "Returns the array.") {
1771
0
    janet_arity(argc, 2, 3);
1772
0
    JanetArray *array = janet_getarray(argv, 0);
1773
0
    int32_t at = janet_getinteger(argv, 1);
1774
0
    int32_t n = 1;
1775
0
    if (at < 0) {
1776
0
        at = array->count + at;
1777
0
    }
1778
0
    if (at < 0 || at > array->count)
1779
0
        janet_panicf("removal index %d out of range [0,%d]", at, array->count);
1780
0
    if (argc == 3) {
1781
0
        n = janet_getinteger(argv, 2);
1782
0
        if (n < 0)
1783
0
            janet_panicf("expected non-negative integer for argument n, got %v", argv[2]);
1784
0
    }
1785
0
    if (at + n > array->count) {
1786
0
        n = array->count - at;
1787
0
    }
1788
0
    memmove(array->data + at,
1789
0
            array->data + at + n,
1790
0
            (array->count - at - n) * sizeof(Janet));
1791
0
    array->count -= n;
1792
0
    return argv[0];
1793
0
}
1794
1795
JANET_CORE_FN(cfun_array_trim,
1796
              "(array/trim arr)",
1797
0
              "Set the backing capacity of an array to its current length. Returns the modified array.") {
1798
0
    janet_fixarity(argc, 1);
1799
0
    JanetArray *array = janet_getarray(argv, 0);
1800
0
    if (array->count) {
1801
0
        if (array->count < array->capacity) {
1802
0
            Janet *newData = janet_realloc(array->data, array->count * sizeof(Janet));
1803
0
            if (NULL == newData) {
1804
0
                JANET_OUT_OF_MEMORY;
1805
0
            }
1806
0
            array->data = newData;
1807
0
            array->capacity = array->count;
1808
0
        }
1809
0
    } else {
1810
0
        array->capacity = 0;
1811
0
        janet_free(array->data);
1812
0
        array->data = NULL;
1813
0
    }
1814
0
    return argv[0];
1815
0
}
1816
1817
JANET_CORE_FN(cfun_array_clear,
1818
              "(array/clear arr)",
1819
              "Empties an array, setting it's count to 0 but does not free the backing capacity. "
1820
0
              "Returns the modified array.") {
1821
0
    janet_fixarity(argc, 1);
1822
0
    JanetArray *array = janet_getarray(argv, 0);
1823
0
    array->count = 0;
1824
0
    return argv[0];
1825
0
}
1826
1827
/* Load the array module */
1828
0
void janet_lib_array(JanetTable *env) {
1829
0
    JanetRegExt array_cfuns[] = {
1830
0
        JANET_CORE_REG("array/new", cfun_array_new),
1831
0
        JANET_CORE_REG("array/weak", cfun_array_weak),
1832
0
        JANET_CORE_REG("array/new-filled", cfun_array_new_filled),
1833
0
        JANET_CORE_REG("array/fill", cfun_array_fill),
1834
0
        JANET_CORE_REG("array/pop", cfun_array_pop),
1835
0
        JANET_CORE_REG("array/peek", cfun_array_peek),
1836
0
        JANET_CORE_REG("array/push", cfun_array_push),
1837
0
        JANET_CORE_REG("array/ensure", cfun_array_ensure),
1838
0
        JANET_CORE_REG("array/slice", cfun_array_slice),
1839
0
        JANET_CORE_REG("array/concat", cfun_array_concat),
1840
0
        JANET_CORE_REG("array/insert", cfun_array_insert),
1841
0
        JANET_CORE_REG("array/remove", cfun_array_remove),
1842
0
        JANET_CORE_REG("array/trim", cfun_array_trim),
1843
0
        JANET_CORE_REG("array/clear", cfun_array_clear),
1844
0
        JANET_CORE_REG("array/join", cfun_array_join),
1845
0
        JANET_REG_END
1846
0
    };
1847
0
    janet_core_cfuns_ext(env, NULL, array_cfuns);
1848
0
}
1849
1850
1851
/* src/core/asm.c */
1852
#line 0 "src/core/asm.c"
1853
1854
/*
1855
* Copyright (c) 2025 Calvin Rose
1856
*
1857
* Permission is hereby granted, free of charge, to any person obtaining a copy
1858
* of this software and associated documentation files (the "Software"), to
1859
* deal in the Software without restriction, including without limitation the
1860
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
1861
* sell copies of the Software, and to permit persons to whom the Software is
1862
* furnished to do so, subject to the following conditions:
1863
*
1864
* The above copyright notice and this permission notice shall be included in
1865
* all copies or substantial portions of the Software.
1866
*
1867
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1868
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1869
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1870
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1871
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1872
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
1873
* IN THE SOFTWARE.
1874
*/
1875
1876
#ifndef JANET_AMALG
1877
#include "features.h"
1878
#include <janet.h>
1879
#include "util.h"
1880
#endif
1881
1882
#include <setjmp.h>
1883
1884
/* Conditionally compile this file */
1885
#ifdef JANET_ASSEMBLER
1886
1887
/* Definition for an instruction in the assembler */
1888
typedef struct JanetInstructionDef JanetInstructionDef;
1889
struct JanetInstructionDef {
1890
    const char *name;
1891
    enum JanetOpCode opcode;
1892
};
1893
1894
/* Hold all state needed during assembly */
1895
typedef struct JanetAssembler JanetAssembler;
1896
struct JanetAssembler {
1897
    JanetAssembler *parent;
1898
    JanetFuncDef *def;
1899
    jmp_buf on_error;
1900
    const uint8_t *errmessage;
1901
    int32_t errindex;
1902
1903
    int32_t environments_capacity;
1904
    int32_t defs_capacity;
1905
    int32_t bytecode_count; /* Used for calculating labels */
1906
1907
    Janet name;
1908
    JanetTable labels; /* keyword -> bytecode index */
1909
    JanetTable slots; /* symbol -> slot index */
1910
    JanetTable envs; /* symbol -> environment index */
1911
    JanetTable defs; /* symbol -> funcdefs index */
1912
};
1913
1914
/* Janet opcode descriptions in lexicographic order. This
1915
 * allows a binary search over the elements to find the
1916
 * correct opcode given a name. This works in reasonable
1917
 * time and is easier to setup statically than a hash table or
1918
 * prefix tree. */
1919
static const JanetInstructionDef janet_ops[] = {
1920
    {"add", JOP_ADD},
1921
    {"addim", JOP_ADD_IMMEDIATE},
1922
    {"band", JOP_BAND},
1923
    {"bnot", JOP_BNOT},
1924
    {"bor", JOP_BOR},
1925
    {"bxor", JOP_BXOR},
1926
    {"call", JOP_CALL},
1927
    {"clo", JOP_CLOSURE},
1928
    {"cmp", JOP_COMPARE},
1929
    {"cncl", JOP_CANCEL},
1930
    {"div", JOP_DIVIDE},
1931
    {"divf", JOP_DIVIDE_FLOOR},
1932
    {"divim", JOP_DIVIDE_IMMEDIATE},
1933
    {"eq", JOP_EQUALS},
1934
    {"eqim", JOP_EQUALS_IMMEDIATE},
1935
    {"err", JOP_ERROR},
1936
    {"get", JOP_GET},
1937
    {"geti", JOP_GET_INDEX},
1938
    {"gt", JOP_GREATER_THAN},
1939
    {"gte", JOP_GREATER_THAN_EQUAL},
1940
    {"gtim", JOP_GREATER_THAN_IMMEDIATE},
1941
    {"in", JOP_IN},
1942
    {"jmp", JOP_JUMP},
1943
    {"jmpif", JOP_JUMP_IF},
1944
    {"jmpni", JOP_JUMP_IF_NIL},
1945
    {"jmpnn", JOP_JUMP_IF_NOT_NIL},
1946
    {"jmpno", JOP_JUMP_IF_NOT},
1947
    {"ldc", JOP_LOAD_CONSTANT},
1948
    {"ldf", JOP_LOAD_FALSE},
1949
    {"ldi", JOP_LOAD_INTEGER},
1950
    {"ldn", JOP_LOAD_NIL},
1951
    {"lds", JOP_LOAD_SELF},
1952
    {"ldt", JOP_LOAD_TRUE},
1953
    {"ldu", JOP_LOAD_UPVALUE},
1954
    {"len", JOP_LENGTH},
1955
    {"lt", JOP_LESS_THAN},
1956
    {"lte", JOP_LESS_THAN_EQUAL},
1957
    {"ltim", JOP_LESS_THAN_IMMEDIATE},
1958
    {"mkarr", JOP_MAKE_ARRAY},
1959
    {"mkbtp", JOP_MAKE_BRACKET_TUPLE},
1960
    {"mkbuf", JOP_MAKE_BUFFER},
1961
    {"mkstr", JOP_MAKE_STRING},
1962
    {"mkstu", JOP_MAKE_STRUCT},
1963
    {"mktab", JOP_MAKE_TABLE},
1964
    {"mktup", JOP_MAKE_TUPLE},
1965
    {"mod", JOP_MODULO},
1966
    {"movf", JOP_MOVE_FAR},
1967
    {"movn", JOP_MOVE_NEAR},
1968
    {"mul", JOP_MULTIPLY},
1969
    {"mulim", JOP_MULTIPLY_IMMEDIATE},
1970
    {"neq", JOP_NOT_EQUALS},
1971
    {"neqim", JOP_NOT_EQUALS_IMMEDIATE},
1972
    {"next", JOP_NEXT},
1973
    {"noop", JOP_NOOP},
1974
    {"prop", JOP_PROPAGATE},
1975
    {"push", JOP_PUSH},
1976
    {"push2", JOP_PUSH_2},
1977
    {"push3", JOP_PUSH_3},
1978
    {"pusha", JOP_PUSH_ARRAY},
1979
    {"put", JOP_PUT},
1980
    {"puti", JOP_PUT_INDEX},
1981
    {"rem", JOP_REMAINDER},
1982
    {"res", JOP_RESUME},
1983
    {"ret", JOP_RETURN},
1984
    {"retn", JOP_RETURN_NIL},
1985
    {"setu", JOP_SET_UPVALUE},
1986
    {"sig", JOP_SIGNAL},
1987
    {"sl", JOP_SHIFT_LEFT},
1988
    {"slim", JOP_SHIFT_LEFT_IMMEDIATE},
1989
    {"sr", JOP_SHIFT_RIGHT},
1990
    {"srim", JOP_SHIFT_RIGHT_IMMEDIATE},
1991
    {"sru", JOP_SHIFT_RIGHT_UNSIGNED},
1992
    {"sruim", JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE},
1993
    {"sub", JOP_SUBTRACT},
1994
    {"subim", JOP_SUBTRACT_IMMEDIATE},
1995
    {"tcall", JOP_TAILCALL},
1996
    {"tchck", JOP_TYPECHECK}
1997
};
1998
1999
/* Typename aliases for tchck instruction */
2000
typedef struct TypeAlias {
2001
    const char *name;
2002
    int32_t mask;
2003
} TypeAlias;
2004
2005
static const TypeAlias type_aliases[] = {
2006
    {"abstract", JANET_TFLAG_ABSTRACT},
2007
    {"array", JANET_TFLAG_ARRAY},
2008
    {"boolean", JANET_TFLAG_BOOLEAN},
2009
    {"buffer", JANET_TFLAG_BUFFER},
2010
    {"callable", JANET_TFLAG_CALLABLE},
2011
    {"cfunction", JANET_TFLAG_CFUNCTION},
2012
    {"dictionary", JANET_TFLAG_DICTIONARY},
2013
    {"fiber", JANET_TFLAG_FIBER},
2014
    {"function", JANET_TFLAG_FUNCTION},
2015
    {"indexed", JANET_TFLAG_INDEXED},
2016
    {"keyword", JANET_TFLAG_KEYWORD},
2017
    {"nil", JANET_TFLAG_NIL},
2018
    {"number", JANET_TFLAG_NUMBER},
2019
    {"pointer", JANET_TFLAG_POINTER},
2020
    {"string", JANET_TFLAG_STRING},
2021
    {"struct", JANET_TFLAG_STRUCT},
2022
    {"symbol", JANET_TFLAG_SYMBOL},
2023
    {"table", JANET_TFLAG_TABLE},
2024
    {"tuple", JANET_TFLAG_TUPLE}
2025
};
2026
2027
/* Deinitialize an Assembler. Does not deinitialize the parents. */
2028
0
static void janet_asm_deinit(JanetAssembler *a) {
2029
0
    janet_table_deinit(&a->slots);
2030
0
    janet_table_deinit(&a->labels);
2031
0
    janet_table_deinit(&a->envs);
2032
0
    janet_table_deinit(&a->defs);
2033
0
}
2034
2035
0
static void janet_asm_longjmp(JanetAssembler *a) {
2036
#if defined(JANET_BSD) || defined(JANET_APPLE)
2037
    _longjmp(a->on_error, 1);
2038
#else
2039
0
    longjmp(a->on_error, 1);
2040
0
#endif
2041
0
}
2042
2043
/* Throw some kind of assembly error */
2044
0
static void janet_asm_error(JanetAssembler *a, const char *message) {
2045
0
    if (a->errindex < 0) {
2046
0
        a->errmessage = janet_formatc("%s", message);
2047
0
    } else {
2048
0
        a->errmessage = janet_formatc("%s, instruction %d", message, a->errindex);
2049
0
    }
2050
0
    janet_asm_longjmp(a);
2051
0
}
2052
0
#define janet_asm_assert(a, c, m) do { if (!(c)) janet_asm_error((a), (m)); } while (0)
2053
2054
/* Throw some kind of assembly error */
2055
0
static void janet_asm_errorv(JanetAssembler *a, const uint8_t *m) {
2056
0
    a->errmessage = m;
2057
0
    janet_asm_longjmp(a);
2058
0
}
2059
2060
/* Add a closure environment to the assembler. Sub funcdefs may need
2061
 * to reference outer function environments, and may change the outer environment.
2062
 * Returns the index of the environment in the assembler's environments, or -1
2063
 * if not found. */
2064
0
static int32_t janet_asm_addenv(JanetAssembler *a, Janet envname) {
2065
0
    Janet check;
2066
0
    JanetFuncDef *def = a->def;
2067
0
    int32_t envindex;
2068
0
    int32_t res;
2069
0
    if (janet_equals(a->name, envname)) {
2070
0
        return -1;
2071
0
    }
2072
    /* Check for memoized value */
2073
0
    check = janet_table_get(&a->envs, envname);
2074
0
    if (janet_checktype(check, JANET_NUMBER)) {
2075
0
        return (int32_t) janet_unwrap_number(check);
2076
0
    }
2077
0
    if (NULL == a->parent) return -2;
2078
0
    res = janet_asm_addenv(a->parent, envname);
2079
0
    if (res < -1) {
2080
0
        return res;
2081
0
    }
2082
0
    envindex = def->environments_length;
2083
0
    janet_table_put(&a->envs, envname, janet_wrap_number(envindex));
2084
0
    if (envindex >= a->environments_capacity) {
2085
0
        int32_t newcap = 2 * envindex;
2086
0
        def->environments = janet_realloc(def->environments, newcap * sizeof(int32_t));
2087
0
        if (NULL == def->environments) {
2088
0
            JANET_OUT_OF_MEMORY;
2089
0
        }
2090
0
        a->environments_capacity = newcap;
2091
0
    }
2092
0
    def->environments[envindex] = (int32_t) res;
2093
0
    def->environments_length = envindex + 1;
2094
0
    return envindex;
2095
0
}
2096
2097
/* Parse an argument to an assembly instruction, and return the result as an
2098
 * integer. This integer will need to be bounds checked. */
2099
static int32_t doarg_1(
2100
    JanetAssembler *a,
2101
    enum JanetOpArgType argtype,
2102
0
    Janet x) {
2103
0
    int32_t ret = -1;
2104
0
    JanetTable *c;
2105
0
    switch (argtype) {
2106
0
        default:
2107
0
            c = NULL;
2108
0
            break;
2109
0
        case JANET_OAT_SLOT:
2110
0
            c = &a->slots;
2111
0
            break;
2112
0
        case JANET_OAT_ENVIRONMENT:
2113
0
            c = &a->envs;
2114
0
            break;
2115
0
        case JANET_OAT_LABEL:
2116
0
            c = &a->labels;
2117
0
            break;
2118
0
        case JANET_OAT_FUNCDEF:
2119
0
            c = &a->defs;
2120
0
            break;
2121
0
    }
2122
0
    switch (janet_type(x)) {
2123
0
        default:
2124
0
            goto error;
2125
0
            break;
2126
0
        case JANET_NUMBER: {
2127
0
            double y = janet_unwrap_number(x);
2128
0
            if (janet_checkintrange(y)) {
2129
0
                ret = (int32_t) y;
2130
0
            } else {
2131
0
                goto error;
2132
0
            }
2133
0
            break;
2134
0
        }
2135
0
        case JANET_TUPLE: {
2136
0
            const Janet *t = janet_unwrap_tuple(x);
2137
0
            if (argtype == JANET_OAT_TYPE) {
2138
0
                int32_t i = 0;
2139
0
                ret = 0;
2140
0
                for (i = 0; i < janet_tuple_length(t); i++) {
2141
0
                    ret |= doarg_1(a, JANET_OAT_SIMPLETYPE, t[i]);
2142
0
                }
2143
0
            } else {
2144
0
                goto error;
2145
0
            }
2146
0
            break;
2147
0
        }
2148
0
        case JANET_KEYWORD: {
2149
0
            if (NULL != c && argtype == JANET_OAT_LABEL) {
2150
0
                Janet result = janet_table_get(c, x);
2151
0
                if (janet_checktype(result, JANET_NUMBER)) {
2152
0
                    ret = janet_unwrap_integer(result) - a->bytecode_count;
2153
0
                } else {
2154
0
                    goto error;
2155
0
                }
2156
0
            } else if (argtype == JANET_OAT_TYPE || argtype == JANET_OAT_SIMPLETYPE) {
2157
0
                const TypeAlias *alias = janet_strbinsearch(
2158
0
                                             &type_aliases,
2159
0
                                             sizeof(type_aliases) / sizeof(TypeAlias),
2160
0
                                             sizeof(TypeAlias),
2161
0
                                             janet_unwrap_keyword(x));
2162
0
                if (alias) {
2163
0
                    ret = alias->mask;
2164
0
                } else {
2165
0
                    janet_asm_errorv(a, janet_formatc("unknown type %v", x));
2166
0
                }
2167
0
            } else {
2168
0
                goto error;
2169
0
            }
2170
0
            break;
2171
0
        }
2172
0
        case JANET_SYMBOL: {
2173
0
            if (NULL != c) {
2174
0
                Janet result = janet_table_get(c, x);
2175
0
                if (janet_checktype(result, JANET_NUMBER)) {
2176
0
                    ret = (int32_t) janet_unwrap_number(result);
2177
0
                } else {
2178
0
                    janet_asm_errorv(a, janet_formatc("unknown name %v", x));
2179
0
                }
2180
0
            } else {
2181
0
                goto error;
2182
0
            }
2183
0
            if (argtype == JANET_OAT_ENVIRONMENT && ret == -1) {
2184
                /* Add a new env */
2185
0
                ret = janet_asm_addenv(a, x);
2186
0
                if (ret < -1) {
2187
0
                    janet_asm_errorv(a, janet_formatc("unknown environment %v", x));
2188
0
                }
2189
0
            }
2190
0
            break;
2191
0
        }
2192
0
    }
2193
0
    if (argtype == JANET_OAT_SLOT && ret >= a->def->slotcount)
2194
0
        a->def->slotcount = (int32_t) ret + 1;
2195
0
    return ret;
2196
2197
0
error:
2198
0
    janet_asm_errorv(a, janet_formatc("error parsing instruction argument %v", x));
2199
0
    return 0;
2200
0
}
2201
2202
/* Parse a single argument to an instruction. Trims it as well as
2203
 * try to convert arguments to bit patterns */
2204
static uint32_t doarg(
2205
    JanetAssembler *a,
2206
    enum JanetOpArgType argtype,
2207
    int nth,
2208
    int nbytes,
2209
    int hassign,
2210
0
    Janet x) {
2211
0
    int32_t arg = doarg_1(a, argtype, x);
2212
    /* Calculate the min and max values that can be stored given
2213
     * nbytes, and whether or not the storage is signed */
2214
0
    int32_t max = (1 << ((nbytes << 3) - hassign)) - 1;
2215
0
    int32_t min = hassign ? -max - 1 : 0;
2216
0
    if (arg < min)
2217
0
        janet_asm_errorv(a, janet_formatc("instruction argument %v is too small, must be %d byte%s",
2218
0
                                          x, nbytes, nbytes > 1 ? "s" : ""));
2219
0
    if (arg > max)
2220
0
        janet_asm_errorv(a, janet_formatc("instruction argument %v is too large, must be %d byte%s",
2221
0
                                          x, nbytes, nbytes > 1 ? "s" : ""));
2222
0
    return ((uint32_t) arg) << (nth << 3);
2223
0
}
2224
2225
/* Provide parsing methods for the different kinds of arguments */
2226
static uint32_t read_instruction(
2227
    JanetAssembler *a,
2228
    const JanetInstructionDef *idef,
2229
0
    const Janet *argt) {
2230
0
    uint32_t instr = idef->opcode;
2231
0
    enum JanetInstructionType type = janet_instructions[idef->opcode];
2232
0
    switch (type) {
2233
0
        case JINT_0: {
2234
0
            if (janet_tuple_length(argt) != 1)
2235
0
                janet_asm_error(a, "expected 0 arguments: (op)");
2236
0
            break;
2237
0
        }
2238
0
        case JINT_S: {
2239
0
            if (janet_tuple_length(argt) != 2)
2240
0
                janet_asm_error(a, "expected 1 argument: (op, slot)");
2241
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 2, 0, argt[1]);
2242
0
            break;
2243
0
        }
2244
0
        case JINT_L: {
2245
0
            if (janet_tuple_length(argt) != 2)
2246
0
                janet_asm_error(a, "expected 1 argument: (op, label)");
2247
0
            instr |= doarg(a, JANET_OAT_LABEL, 1, 3, 1, argt[1]);
2248
0
            break;
2249
0
        }
2250
0
        case JINT_SS: {
2251
0
            if (janet_tuple_length(argt) != 3)
2252
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, slot)");
2253
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2254
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 2, 0, argt[2]);
2255
0
            break;
2256
0
        }
2257
0
        case JINT_SL: {
2258
0
            if (janet_tuple_length(argt) != 3)
2259
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, label)");
2260
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2261
0
            instr |= doarg(a, JANET_OAT_LABEL, 2, 2, 1, argt[2]);
2262
0
            break;
2263
0
        }
2264
0
        case JINT_ST: {
2265
0
            if (janet_tuple_length(argt) != 3)
2266
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, type)");
2267
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2268
0
            instr |= doarg(a, JANET_OAT_TYPE, 2, 2, 0, argt[2]);
2269
0
            break;
2270
0
        }
2271
0
        case JINT_SI:
2272
0
        case JINT_SU: {
2273
0
            if (janet_tuple_length(argt) != 3)
2274
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, integer)");
2275
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2276
0
            instr |= doarg(a, JANET_OAT_INTEGER, 2, 2, type == JINT_SI, argt[2]);
2277
0
            break;
2278
0
        }
2279
0
        case JINT_SD: {
2280
0
            if (janet_tuple_length(argt) != 3)
2281
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, funcdef)");
2282
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2283
0
            instr |= doarg(a, JANET_OAT_FUNCDEF, 2, 2, 0, argt[2]);
2284
0
            break;
2285
0
        }
2286
0
        case JINT_SSS: {
2287
0
            if (janet_tuple_length(argt) != 4)
2288
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, slot, slot)");
2289
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2290
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 1, 0, argt[2]);
2291
0
            instr |= doarg(a, JANET_OAT_SLOT, 3, 1, 0, argt[3]);
2292
0
            break;
2293
0
        }
2294
0
        case JINT_SSI:
2295
0
        case JINT_SSU: {
2296
0
            if (janet_tuple_length(argt) != 4)
2297
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, slot, integer)");
2298
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2299
0
            instr |= doarg(a, JANET_OAT_SLOT, 2, 1, 0, argt[2]);
2300
0
            instr |= doarg(a, JANET_OAT_INTEGER, 3, 1, type == JINT_SSI, argt[3]);
2301
0
            break;
2302
0
        }
2303
0
        case JINT_SES: {
2304
0
            JanetAssembler *b = a;
2305
0
            uint32_t env;
2306
0
            if (janet_tuple_length(argt) != 4)
2307
0
                janet_asm_error(a, "expected 3 arguments: (op, slot, environment, envslot)");
2308
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2309
0
            env = doarg(a, JANET_OAT_ENVIRONMENT, 0, 1, 0, argt[2]);
2310
0
            instr |= env << 16;
2311
0
            for (env += 1; env > 0; env--) {
2312
0
                b = b->parent;
2313
0
                if (NULL == b)
2314
0
                    janet_asm_error(a, "invalid environment index");
2315
0
            }
2316
0
            instr |= doarg(b, JANET_OAT_SLOT, 3, 1, 0, argt[3]);
2317
0
            break;
2318
0
        }
2319
0
        case JINT_SC: {
2320
0
            if (janet_tuple_length(argt) != 3)
2321
0
                janet_asm_error(a, "expected 2 arguments: (op, slot, constant)");
2322
0
            instr |= doarg(a, JANET_OAT_SLOT, 1, 1, 0, argt[1]);
2323
0
            instr |= doarg(a, JANET_OAT_CONSTANT, 2, 2, 0, argt[2]);
2324
0
            break;
2325
0
        }
2326
0
    }
2327
0
    return instr;
2328
0
}
2329
2330
/* Helper to get from a structure */
2331
0
static Janet janet_get1(Janet ds, Janet key) {
2332
0
    switch (janet_type(ds)) {
2333
0
        default:
2334
0
            return janet_wrap_nil();
2335
0
        case JANET_TABLE:
2336
0
            return janet_table_get(janet_unwrap_table(ds), key);
2337
0
        case JANET_STRUCT:
2338
0
            return janet_struct_get(janet_unwrap_struct(ds), key);
2339
0
    }
2340
0
}
2341
2342
/* Helper to assembly. Return the assembly result */
2343
0
static JanetAssembleResult janet_asm1(JanetAssembler *parent, Janet source, int flags) {
2344
0
    JanetAssembleResult result;
2345
0
    JanetAssembler a;
2346
0
    Janet s = source;
2347
0
    JanetFuncDef *def;
2348
0
    int32_t count, i;
2349
0
    const Janet *arr;
2350
0
    Janet x;
2351
0
    (void) flags;
2352
2353
    /* Initialize funcdef */
2354
0
    def = janet_funcdef_alloc();
2355
2356
    /* Initialize Assembler */
2357
0
    a.def = def;
2358
0
    a.parent = parent;
2359
0
    a.errmessage = NULL;
2360
0
    a.errindex = 0;
2361
0
    a.environments_capacity = 0;
2362
0
    a.bytecode_count = 0;
2363
0
    a.defs_capacity = 0;
2364
0
    a.name = janet_wrap_nil();
2365
0
    janet_table_init(&a.labels, 0);
2366
0
    janet_table_init(&a.slots, 0);
2367
0
    janet_table_init(&a.envs, 0);
2368
0
    janet_table_init(&a.defs, 0);
2369
2370
    /* Set error jump */
2371
#if defined(JANET_BSD) || defined(JANET_APPLE)
2372
    if (_setjmp(a.on_error)) {
2373
#else
2374
0
    if (setjmp(a.on_error)) {
2375
0
#endif
2376
0
        if (NULL != a.parent) {
2377
0
            janet_asm_deinit(&a);
2378
0
            a.parent->errmessage = a.errmessage;
2379
0
            janet_asm_longjmp(a.parent);
2380
0
        }
2381
0
        result.funcdef = NULL;
2382
0
        result.error = a.errmessage;
2383
0
        result.status = JANET_ASSEMBLE_ERROR;
2384
0
        janet_asm_deinit(&a);
2385
0
        return result;
2386
0
    }
2387
2388
0
    janet_asm_assert(&a,
2389
0
                     janet_checktype(s, JANET_STRUCT) ||
2390
0
                     janet_checktype(s, JANET_TABLE),
2391
0
                     "expected struct or table for assembly source");
2392
2393
    /* Check for function name */
2394
0
    a.name = janet_get1(s, janet_ckeywordv("name"));
2395
0
    if (!janet_checktype(a.name, JANET_NIL)) {
2396
0
        def->name = janet_to_string(a.name);
2397
0
    }
2398
2399
    /* Set function arity */
2400
0
    x = janet_get1(s, janet_ckeywordv("arity"));
2401
0
    def->arity = janet_checkint(x) ? janet_unwrap_integer(x) : 0;
2402
0
    janet_asm_assert(&a, def->arity >= 0, "arity must be non-negative");
2403
2404
0
    x = janet_get1(s, janet_ckeywordv("max-arity"));
2405
0
    def->max_arity = janet_checkint(x) ? janet_unwrap_integer(x) : def->arity;
2406
0
    janet_asm_assert(&a, def->max_arity >= def->arity, "max-arity must be greater than or equal to arity");
2407
2408
0
    x = janet_get1(s, janet_ckeywordv("min-arity"));
2409
0
    def->min_arity = janet_checkint(x) ? janet_unwrap_integer(x) : def->arity;
2410
0
    janet_asm_assert(&a, def->min_arity <= def->arity, "min-arity must be less than or equal to arity");
2411
2412
    /* Check vararg */
2413
0
    x = janet_get1(s, janet_ckeywordv("vararg"));
2414
0
    if (janet_truthy(x)) def->flags |= JANET_FUNCDEF_FLAG_VARARG;
2415
2416
    /* Initialize slotcount */
2417
0
    def->slotcount = !!(def->flags & JANET_FUNCDEF_FLAG_VARARG) + def->arity;
2418
2419
    /* Check structarg */
2420
0
    x = janet_get1(s, janet_ckeywordv("structarg"));
2421
0
    if (janet_truthy(x)) def->flags |= JANET_FUNCDEF_FLAG_STRUCTARG;
2422
2423
    /* Check source */
2424
0
    x = janet_get1(s, janet_ckeywordv("source"));
2425
0
    if (janet_checktype(x, JANET_STRING)) def->source = janet_unwrap_string(x);
2426
2427
    /* Create slot aliases */
2428
0
    x = janet_get1(s, janet_ckeywordv("slots"));
2429
0
    if (janet_indexed_view(x, &arr, &count)) {
2430
0
        for (i = 0; i < count; i++) {
2431
0
            Janet v = arr[i];
2432
0
            if (janet_checktype(v, JANET_TUPLE)) {
2433
0
                const Janet *t = janet_unwrap_tuple(v);
2434
0
                int32_t j;
2435
0
                for (j = 0; j < janet_tuple_length(t); j++) {
2436
0
                    if (!janet_checktype(t[j], JANET_SYMBOL))
2437
0
                        janet_asm_error(&a, "slot names must be symbols");
2438
0
                    janet_table_put(&a.slots, t[j], janet_wrap_integer(i));
2439
0
                }
2440
0
            } else if (janet_checktype(v, JANET_SYMBOL)) {
2441
0
                janet_table_put(&a.slots, v, janet_wrap_integer(i));
2442
0
            } else {
2443
0
                janet_asm_error(&a, "slot names must be symbols or tuple of symbols");
2444
0
            }
2445
0
        }
2446
0
    }
2447
2448
    /* Parse constants */
2449
0
    x = janet_get1(s, janet_ckeywordv("constants"));
2450
0
    if (janet_indexed_view(x, &arr, &count)) {
2451
0
        def->constants_length = count;
2452
0
        def->constants = janet_malloc(sizeof(Janet) * (size_t) count);
2453
0
        if (NULL == def->constants) {
2454
0
            JANET_OUT_OF_MEMORY;
2455
0
        }
2456
0
        for (i = 0; i < count; i++) {
2457
0
            Janet ct = arr[i];
2458
0
            def->constants[i] = ct;
2459
0
        }
2460
0
    } else {
2461
0
        def->constants = NULL;
2462
0
        def->constants_length = 0;
2463
0
    }
2464
2465
    /* Parse sub funcdefs */
2466
0
    x = janet_get1(s, janet_ckeywordv("closures"));
2467
0
    if (janet_checktype(x, JANET_NIL)) {
2468
0
        x = janet_get1(s, janet_ckeywordv("defs"));
2469
0
    }
2470
0
    if (janet_indexed_view(x, &arr, &count)) {
2471
0
        int32_t i;
2472
0
        for (i = 0; i < count; i++) {
2473
0
            JanetAssembleResult subres;
2474
0
            Janet subname;
2475
0
            int32_t newlen;
2476
0
            subres = janet_asm1(&a, arr[i], flags);
2477
0
            if (subres.status != JANET_ASSEMBLE_OK) {
2478
0
                janet_asm_errorv(&a, subres.error);
2479
0
            }
2480
0
            subname = janet_get1(arr[i], janet_ckeywordv("name"));
2481
0
            if (!janet_checktype(subname, JANET_NIL)) {
2482
0
                janet_table_put(&a.defs, subname, janet_wrap_integer(def->defs_length));
2483
0
            }
2484
0
            newlen = def->defs_length + 1;
2485
0
            if (a.defs_capacity < newlen) {
2486
0
                int32_t newcap = newlen;
2487
0
                def->defs = janet_realloc(def->defs, newcap * sizeof(JanetFuncDef *));
2488
0
                if (NULL == def->defs) {
2489
0
                    JANET_OUT_OF_MEMORY;
2490
0
                }
2491
0
                a.defs_capacity = newcap;
2492
0
            }
2493
0
            def->defs[def->defs_length] = subres.funcdef;
2494
0
            def->defs_length = newlen;
2495
0
        }
2496
0
    }
2497
2498
    /* Parse bytecode and labels */
2499
0
    x = janet_get1(s, janet_ckeywordv("bytecode"));
2500
0
    if (janet_indexed_view(x, &arr, &count)) {
2501
        /* Do labels and find length */
2502
0
        int32_t blength = 0;
2503
0
        for (i = 0; i < count; ++i) {
2504
0
            Janet instr = arr[i];
2505
0
            if (janet_checktype(instr, JANET_KEYWORD)) {
2506
0
                janet_table_put(&a.labels, instr, janet_wrap_integer(blength));
2507
0
            } else if (janet_checktype(instr, JANET_TUPLE)) {
2508
0
                blength++;
2509
0
            } else {
2510
0
                a.errindex = i;
2511
0
                janet_asm_error(&a, "expected assembly instruction");
2512
0
            }
2513
0
        }
2514
        /* Allocate bytecode array */
2515
0
        def->bytecode_length = blength;
2516
0
        def->bytecode = janet_malloc(sizeof(uint32_t) * (size_t) blength);
2517
0
        if (NULL == def->bytecode) {
2518
0
            JANET_OUT_OF_MEMORY;
2519
0
        }
2520
        /* Do bytecode */
2521
0
        for (i = 0; i < count; ++i) {
2522
0
            Janet instr = arr[i];
2523
0
            if (janet_checktype(instr, JANET_KEYWORD)) {
2524
0
                continue;
2525
0
            } else {
2526
0
                uint32_t op;
2527
0
                const JanetInstructionDef *idef;
2528
0
                const Janet *t;
2529
0
                a.errindex = i;
2530
0
                janet_asm_assert(&a, janet_checktype(instr, JANET_TUPLE), "expected tuple");
2531
0
                t = janet_unwrap_tuple(instr);
2532
0
                if (janet_tuple_length(t) == 0) {
2533
0
                    op = 0;
2534
0
                } else {
2535
0
                    janet_asm_assert(&a, janet_checktype(t[0], JANET_SYMBOL),
2536
0
                                     "expected symbol in assembly instruction");
2537
0
                    idef = janet_strbinsearch(
2538
0
                               &janet_ops,
2539
0
                               sizeof(janet_ops) / sizeof(JanetInstructionDef),
2540
0
                               sizeof(JanetInstructionDef),
2541
0
                               janet_unwrap_symbol(t[0]));
2542
0
                    if (NULL == idef)
2543
0
                        janet_asm_errorv(&a, janet_formatc("unknown instruction %v", t[0]));
2544
0
                    op = read_instruction(&a, idef, t);
2545
0
                }
2546
0
                def->bytecode[a.bytecode_count++] = op;
2547
0
            }
2548
0
        }
2549
0
    } else {
2550
0
        janet_asm_error(&a, "bytecode expected");
2551
0
    }
2552
0
    a.errindex = -1;
2553
2554
    /* Check for source mapping */
2555
0
    x = janet_get1(s, janet_ckeywordv("sourcemap"));
2556
0
    if (janet_indexed_view(x, &arr, &count)) {
2557
0
        janet_asm_assert(&a, count == def->bytecode_length, "sourcemap must have the same length as the bytecode");
2558
0
        def->sourcemap = janet_malloc(sizeof(JanetSourceMapping) * (size_t) count);
2559
0
        if (NULL == def->sourcemap) {
2560
0
            JANET_OUT_OF_MEMORY;
2561
0
        }
2562
0
        for (i = 0; i < count; i++) {
2563
0
            const Janet *tup;
2564
0
            Janet entry = arr[i];
2565
0
            JanetSourceMapping mapping;
2566
0
            if (!janet_checktype(entry, JANET_TUPLE)) {
2567
0
                janet_asm_error(&a, "expected tuple");
2568
0
            }
2569
0
            tup = janet_unwrap_tuple(entry);
2570
0
            if (!janet_checkint(tup[0])) {
2571
0
                janet_asm_error(&a, "expected integer");
2572
0
            }
2573
0
            if (!janet_checkint(tup[1])) {
2574
0
                janet_asm_error(&a, "expected integer");
2575
0
            }
2576
0
            mapping.line = janet_unwrap_integer(tup[0]);
2577
0
            mapping.column = janet_unwrap_integer(tup[1]);
2578
0
            def->sourcemap[i] = mapping;
2579
0
        }
2580
0
    }
2581
2582
    /* Set symbolmap */
2583
0
    def->symbolmap = NULL;
2584
0
    def->symbolmap_length = 0;
2585
0
    x = janet_get1(s, janet_ckeywordv("symbolmap"));
2586
0
    if (janet_indexed_view(x, &arr, &count)) {
2587
0
        def->symbolmap_length = count;
2588
0
        def->symbolmap = janet_malloc(sizeof(JanetSymbolMap) * (size_t)count);
2589
0
        if (NULL == def->symbolmap) {
2590
0
            JANET_OUT_OF_MEMORY;
2591
0
        }
2592
0
        for (i = 0; i < count; i++) {
2593
0
            const Janet *tup;
2594
0
            Janet entry = arr[i];
2595
0
            JanetSymbolMap ss;
2596
0
            if (!janet_checktype(entry, JANET_TUPLE)) {
2597
0
                janet_asm_error(&a, "expected tuple");
2598
0
            }
2599
0
            tup = janet_unwrap_tuple(entry);
2600
0
            if (janet_keyeq(tup[0], "upvalue")) {
2601
0
                ss.birth_pc = UINT32_MAX;
2602
0
            } else if (!janet_checkint(tup[0])) {
2603
0
                janet_asm_error(&a, "expected integer");
2604
0
            } else {
2605
0
                ss.birth_pc = janet_unwrap_integer(tup[0]);
2606
0
            }
2607
0
            if (!janet_checkint(tup[1])) {
2608
0
                janet_asm_error(&a, "expected integer");
2609
0
            }
2610
0
            if (!janet_checkint(tup[2])) {
2611
0
                janet_asm_error(&a, "expected integer");
2612
0
            }
2613
0
            if (!janet_checktype(tup[3], JANET_SYMBOL)) {
2614
0
                janet_asm_error(&a, "expected symbol");
2615
0
            }
2616
0
            ss.death_pc = janet_unwrap_integer(tup[1]);
2617
0
            ss.slot_index = janet_unwrap_integer(tup[2]);
2618
0
            ss.symbol = janet_unwrap_symbol(tup[3]);
2619
0
            def->symbolmap[i] = ss;
2620
0
        }
2621
0
    }
2622
0
    if (def->symbolmap_length) def->flags |= JANET_FUNCDEF_FLAG_HASSYMBOLMAP;
2623
2624
    /* Set environments */
2625
0
    x = janet_get1(s, janet_ckeywordv("environments"));
2626
0
    if (janet_indexed_view(x, &arr, &count)) {
2627
0
        def->environments_length = count;
2628
0
        if (def->environments_length) {
2629
0
            def->environments = janet_realloc(def->environments, def->environments_length * sizeof(int32_t));
2630
0
        }
2631
0
        for (int32_t i = 0; i < count; i++) {
2632
0
            if (!janet_checkint(arr[i])) {
2633
0
                janet_asm_error(&a, "expected integer");
2634
0
            }
2635
0
            def->environments[i] = janet_unwrap_integer(arr[i]);
2636
0
        }
2637
0
    }
2638
0
    if (def->environments_length && NULL == def->environments) {
2639
0
        JANET_OUT_OF_MEMORY;
2640
0
    }
2641
2642
    /* Verify the func def */
2643
0
    int verify_status = janet_verify(def);
2644
0
    if (verify_status) {
2645
0
        janet_asm_errorv(&a, janet_formatc("invalid assembly (%d)", verify_status));
2646
0
    }
2647
2648
    /* Add final flags */
2649
0
    janet_def_addflags(def);
2650
2651
    /* Finish everything and return funcdef */
2652
0
    janet_asm_deinit(&a);
2653
0
    result.error = NULL;
2654
0
    result.funcdef = def;
2655
0
    result.status = JANET_ASSEMBLE_OK;
2656
0
    return result;
2657
0
}
2658
2659
/* Assemble a function */
2660
0
JanetAssembleResult janet_asm(Janet source, int flags) {
2661
0
    return janet_asm1(NULL, source, flags);
2662
0
}
2663
2664
/* Disassembly */
2665
2666
/* Find the definition of an instruction given the instruction word. Return
2667
 * NULL if not found. */
2668
0
static const JanetInstructionDef *janet_asm_reverse_lookup(uint32_t instr) {
2669
0
    size_t i;
2670
0
    uint32_t opcode = instr & 0x7F;
2671
0
    for (i = 0; i < sizeof(janet_ops) / sizeof(JanetInstructionDef); i++) {
2672
0
        const JanetInstructionDef *def = janet_ops + i;
2673
0
        if (def->opcode == opcode)
2674
0
            return def;
2675
0
    }
2676
0
    return NULL;
2677
0
}
2678
2679
/* Create some constant sized tuples */
2680
0
static const Janet *tup1(Janet x) {
2681
0
    Janet *tup = janet_tuple_begin(1);
2682
0
    tup[0] = x;
2683
0
    return janet_tuple_end(tup);
2684
0
}
2685
0
static const Janet *tup2(Janet x, Janet y) {
2686
0
    Janet *tup = janet_tuple_begin(2);
2687
0
    tup[0] = x;
2688
0
    tup[1] = y;
2689
0
    return janet_tuple_end(tup);
2690
0
}
2691
0
static const Janet *tup3(Janet x, Janet y, Janet z) {
2692
0
    Janet *tup = janet_tuple_begin(3);
2693
0
    tup[0] = x;
2694
0
    tup[1] = y;
2695
0
    tup[2] = z;
2696
0
    return janet_tuple_end(tup);
2697
0
}
2698
0
static const Janet *tup4(Janet w, Janet x, Janet y, Janet z) {
2699
0
    Janet *tup = janet_tuple_begin(4);
2700
0
    tup[0] = w;
2701
0
    tup[1] = x;
2702
0
    tup[2] = y;
2703
0
    tup[3] = z;
2704
0
    return janet_tuple_end(tup);
2705
0
}
2706
2707
/* Given an argument, convert it to the appropriate integer or symbol */
2708
0
Janet janet_asm_decode_instruction(uint32_t instr) {
2709
0
    const JanetInstructionDef *def = janet_asm_reverse_lookup(instr);
2710
0
    Janet name;
2711
0
    if (NULL == def) {
2712
0
        return janet_wrap_integer((int32_t)instr);
2713
0
    }
2714
0
    name = janet_csymbolv(def->name);
2715
0
    const Janet *ret = NULL;
2716
0
#define oparg(shift, mask) ((instr >> ((shift) << 3)) & (mask))
2717
0
    switch (janet_instructions[def->opcode]) {
2718
0
        case JINT_0:
2719
0
            ret = tup1(name);
2720
0
            break;
2721
0
        case JINT_S:
2722
0
            ret = tup2(name, janet_wrap_integer(oparg(1, 0xFFFFFF)));
2723
0
            break;
2724
0
        case JINT_L:
2725
0
            ret = tup2(name, janet_wrap_integer((int32_t)instr >> 8));
2726
0
            break;
2727
0
        case JINT_SS:
2728
0
        case JINT_ST:
2729
0
        case JINT_SC:
2730
0
        case JINT_SU:
2731
0
        case JINT_SD:
2732
0
            ret = tup3(name,
2733
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2734
0
                       janet_wrap_integer(oparg(2, 0xFFFF)));
2735
0
            break;
2736
0
        case JINT_SI:
2737
0
        case JINT_SL:
2738
0
            ret =  tup3(name,
2739
0
                        janet_wrap_integer(oparg(1, 0xFF)),
2740
0
                        janet_wrap_integer((int32_t)instr >> 16));
2741
0
            break;
2742
0
        case JINT_SSS:
2743
0
        case JINT_SES:
2744
0
        case JINT_SSU:
2745
0
            ret = tup4(name,
2746
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2747
0
                       janet_wrap_integer(oparg(2, 0xFF)),
2748
0
                       janet_wrap_integer(oparg(3, 0xFF)));
2749
0
            break;
2750
0
        case JINT_SSI:
2751
0
            ret = tup4(name,
2752
0
                       janet_wrap_integer(oparg(1, 0xFF)),
2753
0
                       janet_wrap_integer(oparg(2, 0xFF)),
2754
0
                       janet_wrap_integer((int32_t)instr >> 24));
2755
0
            break;
2756
0
    }
2757
0
#undef oparg
2758
0
    if (ret) {
2759
        /* Check if break point set */
2760
0
        if (instr & 0x80) {
2761
0
            janet_tuple_flag(ret) |= JANET_TUPLE_FLAG_BRACKETCTOR;
2762
0
        }
2763
0
        return janet_wrap_tuple(ret);
2764
0
    }
2765
0
    return janet_wrap_nil();
2766
0
}
2767
2768
/*
2769
 * Disasm sections
2770
 */
2771
2772
0
static Janet janet_disasm_arity(JanetFuncDef *def) {
2773
0
    return janet_wrap_integer(def->arity);
2774
0
}
2775
2776
0
static Janet janet_disasm_min_arity(JanetFuncDef *def) {
2777
0
    return janet_wrap_integer(def->min_arity);
2778
0
}
2779
2780
0
static Janet janet_disasm_max_arity(JanetFuncDef *def) {
2781
0
    return janet_wrap_integer(def->max_arity);
2782
0
}
2783
2784
0
static Janet janet_disasm_slotcount(JanetFuncDef *def) {
2785
0
    return janet_wrap_integer(def->slotcount);
2786
0
}
2787
2788
0
static Janet janet_disasm_symbolslots(JanetFuncDef *def) {
2789
0
    if (def->symbolmap == NULL) {
2790
0
        return janet_wrap_nil();
2791
0
    }
2792
0
    JanetArray *symbolslots = janet_array(def->symbolmap_length);
2793
0
    Janet upvaluekw = janet_ckeywordv("upvalue");
2794
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
2795
0
        JanetSymbolMap ss = def->symbolmap[i];
2796
0
        Janet *t = janet_tuple_begin(4);
2797
0
        if (ss.birth_pc == UINT32_MAX) {
2798
0
            t[0] = upvaluekw;
2799
0
        } else {
2800
0
            t[0] = janet_wrap_integer(ss.birth_pc);
2801
0
        }
2802
0
        t[1] = janet_wrap_integer(ss.death_pc);
2803
0
        t[2] = janet_wrap_integer(ss.slot_index);
2804
0
        t[3] = janet_wrap_symbol(ss.symbol);
2805
0
        symbolslots->data[i] = janet_wrap_tuple(janet_tuple_end(t));
2806
0
    }
2807
0
    symbolslots->count = def->symbolmap_length;
2808
0
    return janet_wrap_array(symbolslots);
2809
0
}
2810
2811
0
static Janet janet_disasm_bytecode(JanetFuncDef *def) {
2812
0
    JanetArray *bcode = janet_array(def->bytecode_length);
2813
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
2814
0
        bcode->data[i] = janet_asm_decode_instruction(def->bytecode[i]);
2815
0
    }
2816
0
    bcode->count = def->bytecode_length;
2817
0
    return janet_wrap_array(bcode);
2818
0
}
2819
2820
0
static Janet janet_disasm_source(JanetFuncDef *def) {
2821
0
    if (def->source != NULL) return janet_wrap_string(def->source);
2822
0
    return janet_wrap_nil();
2823
0
}
2824
2825
0
static Janet janet_disasm_name(JanetFuncDef *def) {
2826
0
    if (def->name != NULL) return janet_wrap_string(def->name);
2827
0
    return janet_wrap_nil();
2828
0
}
2829
2830
0
static Janet janet_disasm_vararg(JanetFuncDef *def) {
2831
0
    return janet_wrap_boolean(def->flags & JANET_FUNCDEF_FLAG_VARARG);
2832
0
}
2833
2834
0
static Janet janet_disasm_structarg(JanetFuncDef *def) {
2835
0
    return janet_wrap_boolean(def->flags & JANET_FUNCDEF_FLAG_STRUCTARG);
2836
0
}
2837
2838
0
static Janet janet_disasm_constants(JanetFuncDef *def) {
2839
0
    JanetArray *constants = janet_array(def->constants_length);
2840
0
    for (int32_t i = 0; i < def->constants_length; i++) {
2841
0
        constants->data[i] = def->constants[i];
2842
0
    }
2843
0
    constants->count = def->constants_length;
2844
0
    return janet_wrap_array(constants);
2845
0
}
2846
2847
0
static Janet janet_disasm_sourcemap(JanetFuncDef *def) {
2848
0
    if (NULL == def->sourcemap) return janet_wrap_nil();
2849
0
    JanetArray *sourcemap = janet_array(def->bytecode_length);
2850
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
2851
0
        Janet *t = janet_tuple_begin(2);
2852
0
        JanetSourceMapping mapping = def->sourcemap[i];
2853
0
        t[0] = janet_wrap_integer(mapping.line);
2854
0
        t[1] = janet_wrap_integer(mapping.column);
2855
0
        sourcemap->data[i] = janet_wrap_tuple(janet_tuple_end(t));
2856
0
    }
2857
0
    sourcemap->count = def->bytecode_length;
2858
0
    return janet_wrap_array(sourcemap);
2859
0
}
2860
2861
0
static Janet janet_disasm_environments(JanetFuncDef *def) {
2862
0
    JanetArray *envs = janet_array(def->environments_length);
2863
0
    for (int32_t i = 0; i < def->environments_length; i++) {
2864
0
        envs->data[i] = janet_wrap_integer(def->environments[i]);
2865
0
    }
2866
0
    envs->count = def->environments_length;
2867
0
    return janet_wrap_array(envs);
2868
0
}
2869
2870
0
static Janet janet_disasm_defs(JanetFuncDef *def) {
2871
0
    JanetArray *defs = janet_array(def->defs_length);
2872
0
    for (int32_t i = 0; i < def->defs_length; i++) {
2873
0
        defs->data[i] = janet_disasm(def->defs[i]);
2874
0
    }
2875
0
    defs->count = def->defs_length;
2876
0
    return janet_wrap_array(defs);
2877
0
}
2878
2879
0
Janet janet_disasm(JanetFuncDef *def) {
2880
0
    JanetTable *ret = janet_table(10);
2881
0
    janet_table_put(ret, janet_ckeywordv("arity"), janet_disasm_arity(def));
2882
0
    janet_table_put(ret, janet_ckeywordv("min-arity"), janet_disasm_min_arity(def));
2883
0
    janet_table_put(ret, janet_ckeywordv("max-arity"), janet_disasm_max_arity(def));
2884
0
    janet_table_put(ret, janet_ckeywordv("bytecode"), janet_disasm_bytecode(def));
2885
0
    janet_table_put(ret, janet_ckeywordv("source"), janet_disasm_source(def));
2886
0
    janet_table_put(ret, janet_ckeywordv("vararg"), janet_disasm_vararg(def));
2887
0
    janet_table_put(ret, janet_ckeywordv("structarg"), janet_disasm_structarg(def));
2888
0
    janet_table_put(ret, janet_ckeywordv("name"), janet_disasm_name(def));
2889
0
    janet_table_put(ret, janet_ckeywordv("slotcount"), janet_disasm_slotcount(def));
2890
0
    janet_table_put(ret, janet_ckeywordv("symbolmap"), janet_disasm_symbolslots(def));
2891
0
    janet_table_put(ret, janet_ckeywordv("constants"), janet_disasm_constants(def));
2892
0
    janet_table_put(ret, janet_ckeywordv("sourcemap"), janet_disasm_sourcemap(def));
2893
0
    janet_table_put(ret, janet_ckeywordv("environments"), janet_disasm_environments(def));
2894
0
    janet_table_put(ret, janet_ckeywordv("defs"), janet_disasm_defs(def));
2895
0
    return janet_wrap_struct(janet_table_to_struct(ret));
2896
0
}
2897
2898
JANET_CORE_FN(cfun_asm,
2899
              "(asm assembly)",
2900
              "Returns a new function that is the compiled result of the assembly.\n"
2901
              "The syntax for the assembly can be found on the Janet website, and should correspond\n"
2902
              "to the return value of disasm. Will throw an\n"
2903
0
              "error on invalid assembly.") {
2904
0
    janet_fixarity(argc, 1);
2905
0
    JanetAssembleResult res;
2906
0
    res = janet_asm(argv[0], 0);
2907
0
    if (res.status != JANET_ASSEMBLE_OK) {
2908
0
        janet_panics(res.error ? res.error : janet_cstring("invalid assembly"));
2909
0
    }
2910
0
    return janet_wrap_function(janet_thunk(res.funcdef));
2911
0
}
2912
2913
JANET_CORE_FN(cfun_disasm,
2914
              "(disasm func &opt field)",
2915
              "Returns assembly that could be used to compile the given function. "
2916
              "func must be a function, not a c function. Will throw on error on a badly "
2917
              "typed argument. If given a field name, will only return that part of the function assembly. "
2918
              "Possible fields are:\n\n"
2919
              "* :arity - number of required and optional arguments.\n"
2920
              "* :min-arity - minimum number of arguments function can be called with.\n"
2921
              "* :max-arity - maximum number of arguments function can be called with.\n"
2922
              "* :vararg - true if function can take a variable number of arguments.\n"
2923
              "* :bytecode - array of parsed bytecode instructions. Each instruction is a tuple.\n"
2924
              "* :source - name of source file that this function was compiled from.\n"
2925
              "* :name - name of function.\n"
2926
              "* :slotcount - how many virtual registers, or slots, this function uses. Corresponds to stack space used by function.\n"
2927
              "* :symbolmap - all symbols and their slots.\n"
2928
              "* :constants - an array of constants referenced by this function.\n"
2929
              "* :sourcemap - a mapping of each bytecode instruction to a line and column in the source file.\n"
2930
              "* :environments - an internal mapping of which enclosing functions are referenced for bindings.\n"
2931
0
              "* :defs - other function definitions that this function may instantiate.\n") {
2932
0
    janet_arity(argc, 1, 2);
2933
0
    JanetFunction *f = janet_getfunction(argv, 0);
2934
0
    if (argc == 2) {
2935
0
        JanetKeyword kw = janet_getkeyword(argv, 1);
2936
0
        if (!janet_cstrcmp(kw, "arity")) return janet_disasm_arity(f->def);
2937
0
        if (!janet_cstrcmp(kw, "min-arity")) return janet_disasm_min_arity(f->def);
2938
0
        if (!janet_cstrcmp(kw, "max-arity")) return janet_disasm_max_arity(f->def);
2939
0
        if (!janet_cstrcmp(kw, "bytecode")) return janet_disasm_bytecode(f->def);
2940
0
        if (!janet_cstrcmp(kw, "source")) return janet_disasm_source(f->def);
2941
0
        if (!janet_cstrcmp(kw, "name")) return janet_disasm_name(f->def);
2942
0
        if (!janet_cstrcmp(kw, "vararg")) return janet_disasm_vararg(f->def);
2943
0
        if (!janet_cstrcmp(kw, "structarg")) return janet_disasm_structarg(f->def);
2944
0
        if (!janet_cstrcmp(kw, "slotcount")) return janet_disasm_slotcount(f->def);
2945
0
        if (!janet_cstrcmp(kw, "constants")) return janet_disasm_constants(f->def);
2946
0
        if (!janet_cstrcmp(kw, "sourcemap")) return janet_disasm_sourcemap(f->def);
2947
0
        if (!janet_cstrcmp(kw, "environments")) return janet_disasm_environments(f->def);
2948
0
        if (!janet_cstrcmp(kw, "defs")) return janet_disasm_defs(f->def);
2949
0
        janet_panicf("unknown disasm key %v", argv[1]);
2950
0
    } else {
2951
0
        return janet_disasm(f->def);
2952
0
    }
2953
0
}
2954
2955
/* Load the library */
2956
0
void janet_lib_asm(JanetTable *env) {
2957
0
    JanetRegExt asm_cfuns[] = {
2958
0
        JANET_CORE_REG("asm", cfun_asm),
2959
0
        JANET_CORE_REG("disasm", cfun_disasm),
2960
0
        JANET_REG_END
2961
0
    };
2962
0
    janet_core_cfuns_ext(env, NULL, asm_cfuns);
2963
0
}
2964
2965
#endif
2966
2967
2968
/* src/core/buffer.c */
2969
#line 0 "src/core/buffer.c"
2970
2971
/*
2972
* Copyright (c) 2025 Calvin Rose
2973
*
2974
* Permission is hereby granted, free of charge, to any person obtaining a copy
2975
* of this software and associated documentation files (the "Software"), to
2976
* deal in the Software without restriction, including without limitation the
2977
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
2978
* sell copies of the Software, and to permit persons to whom the Software is
2979
* furnished to do so, subject to the following conditions:
2980
*
2981
* The above copyright notice and this permission notice shall be included in
2982
* all copies or substantial portions of the Software.
2983
*
2984
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2985
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
2986
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
2987
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
2988
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
2989
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
2990
* IN THE SOFTWARE.
2991
*/
2992
2993
#ifndef JANET_AMALG
2994
#include "features.h"
2995
#include <janet.h>
2996
#include "gc.h"
2997
#include "util.h"
2998
#include "state.h"
2999
#endif
3000
3001
/* Allow for managed buffers that cannot realloc/free their backing memory */
3002
66
static void janet_buffer_can_realloc(JanetBuffer *buffer) {
3003
66
    if (buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC) {
3004
0
        janet_panic("buffer cannot reallocate foreign memory");
3005
0
    }
3006
66
}
3007
3008
/* Initialize a buffer */
3009
2.38M
static JanetBuffer *janet_buffer_init_impl(JanetBuffer *buffer, int32_t capacity) {
3010
2.38M
    uint8_t *data = NULL;
3011
2.38M
    if (capacity < 4) capacity = 4;
3012
2.38M
    janet_gcpressure(capacity);
3013
2.38M
    data = janet_malloc(sizeof(uint8_t) * (size_t) capacity);
3014
2.38M
    if (NULL == data) {
3015
0
        JANET_OUT_OF_MEMORY;
3016
0
    }
3017
2.38M
    buffer->count = 0;
3018
2.38M
    buffer->capacity = capacity;
3019
2.38M
    buffer->data = data;
3020
2.38M
    return buffer;
3021
2.38M
}
3022
3023
/* Initialize a buffer */
3024
0
JanetBuffer *janet_buffer_init(JanetBuffer *buffer, int32_t capacity) {
3025
0
    janet_buffer_init_impl(buffer, capacity);
3026
0
    buffer->gc.data.next = NULL;
3027
0
    buffer->gc.flags = JANET_MEM_DISABLED;
3028
0
    return buffer;
3029
0
}
3030
3031
/* Initialize an unmanaged buffer */
3032
0
JanetBuffer *janet_pointer_buffer_unsafe(void *memory, int32_t capacity, int32_t count) {
3033
0
    if (count < 0) janet_panic("count < 0");
3034
0
    if (capacity < count) janet_panic("capacity < count");
3035
0
    JanetBuffer *buffer = janet_gcalloc(JANET_MEMORY_BUFFER, sizeof(JanetBuffer));
3036
0
    buffer->gc.flags |= JANET_BUFFER_FLAG_NO_REALLOC;
3037
0
    buffer->capacity = capacity;
3038
0
    buffer->count = count;
3039
0
    buffer->data = (uint8_t *) memory;
3040
0
    return buffer;
3041
0
}
3042
3043
/* Deinitialize a buffer (free data memory) */
3044
2.38M
void janet_buffer_deinit(JanetBuffer *buffer) {
3045
2.38M
    if (!(buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC)) {
3046
2.38M
        janet_free(buffer->data);
3047
2.38M
    }
3048
2.38M
}
3049
3050
/* Initialize a buffer */
3051
2.38M
JanetBuffer *janet_buffer(int32_t capacity) {
3052
2.38M
    JanetBuffer *buffer = janet_gcalloc(JANET_MEMORY_BUFFER, sizeof(JanetBuffer));
3053
2.38M
    return janet_buffer_init_impl(buffer, capacity);
3054
2.38M
}
3055
3056
/* Ensure that the buffer has enough internal capacity */
3057
0
void janet_buffer_ensure(JanetBuffer *buffer, int32_t capacity, int32_t growth) {
3058
0
    uint8_t *new_data;
3059
0
    uint8_t *old = buffer->data;
3060
0
    if (capacity <= buffer->capacity) return;
3061
0
    janet_buffer_can_realloc(buffer);
3062
0
    int64_t big_capacity = ((int64_t) capacity) * growth;
3063
0
    capacity = big_capacity > INT32_MAX ? INT32_MAX : (int32_t) big_capacity;
3064
0
    janet_gcpressure(capacity - buffer->capacity);
3065
0
    new_data = janet_realloc(old, (size_t) capacity * sizeof(uint8_t));
3066
0
    if (NULL == new_data) {
3067
0
        JANET_OUT_OF_MEMORY;
3068
0
    }
3069
0
    buffer->data = new_data;
3070
0
    buffer->capacity = capacity;
3071
0
}
3072
3073
/* Ensure that the buffer has enough internal capacity */
3074
0
void janet_buffer_setcount(JanetBuffer *buffer, int32_t count) {
3075
0
    if (count < 0)
3076
0
        return;
3077
0
    if (count > buffer->count) {
3078
0
        int32_t oldcount = buffer->count;
3079
0
        janet_buffer_ensure(buffer, count, 1);
3080
0
        memset(buffer->data + oldcount, 0, count - oldcount);
3081
0
    }
3082
0
    buffer->count = count;
3083
0
}
3084
3085
/* Adds capacity for enough extra bytes to the buffer. Ensures that the
3086
 * next n bytes pushed to the buffer will not cause a reallocation */
3087
44.9k
void janet_buffer_extra(JanetBuffer *buffer, int32_t n) {
3088
    /* Check for buffer overflow */
3089
44.9k
    if ((int64_t)n + buffer->count > INT32_MAX) {
3090
0
        janet_panic("buffer overflow");
3091
0
    }
3092
44.9k
    int32_t new_size = buffer->count + n;
3093
44.9k
    if (new_size > buffer->capacity) {
3094
66
        janet_buffer_can_realloc(buffer);
3095
66
        int32_t new_capacity = (new_size > (INT32_MAX / 2)) ? INT32_MAX : (new_size * 2);
3096
66
        uint8_t *new_data = janet_realloc(buffer->data, new_capacity * sizeof(uint8_t));
3097
66
        janet_gcpressure(new_capacity - buffer->capacity);
3098
66
        if (NULL == new_data) {
3099
0
            JANET_OUT_OF_MEMORY;
3100
0
        }
3101
66
        buffer->data = new_data;
3102
66
        buffer->capacity = new_capacity;
3103
66
    }
3104
44.9k
}
3105
3106
/* Push a cstring to buffer */
3107
341
void janet_buffer_push_cstring(JanetBuffer *buffer, const char *cstring) {
3108
341
    int32_t len = (int32_t) strlen(cstring);
3109
341
    janet_buffer_push_bytes(buffer, (const uint8_t *) cstring, len);
3110
341
}
3111
3112
/* Push multiple bytes into the buffer */
3113
2.38M
void janet_buffer_push_bytes(JanetBuffer *buffer, const uint8_t *string, int32_t length) {
3114
2.38M
    if (0 == length) return;
3115
43.0k
    janet_buffer_extra(buffer, length);
3116
43.0k
    memcpy(buffer->data + buffer->count, string, length);
3117
43.0k
    buffer->count += length;
3118
43.0k
}
3119
3120
0
void janet_buffer_push_string(JanetBuffer *buffer, const uint8_t *string) {
3121
0
    janet_buffer_push_bytes(buffer, string, janet_string_length(string));
3122
0
}
3123
3124
/* Push a single byte to the buffer */
3125
1.96k
void janet_buffer_push_u8(JanetBuffer *buffer, uint8_t byte) {
3126
1.96k
    janet_buffer_extra(buffer, 1);
3127
1.96k
    buffer->data[buffer->count] = byte;
3128
1.96k
    buffer->count++;
3129
1.96k
}
3130
3131
/* Push a 16 bit unsigned integer to the buffer */
3132
0
void janet_buffer_push_u16(JanetBuffer *buffer, uint16_t x) {
3133
0
    janet_buffer_extra(buffer, 2);
3134
0
    buffer->data[buffer->count] = x & 0xFF;
3135
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3136
0
    buffer->count += 2;
3137
0
}
3138
3139
/* Push a 32 bit unsigned integer to the buffer */
3140
0
void janet_buffer_push_u32(JanetBuffer *buffer, uint32_t x) {
3141
0
    janet_buffer_extra(buffer, 4);
3142
0
    buffer->data[buffer->count] = x & 0xFF;
3143
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3144
0
    buffer->data[buffer->count + 2] = (x >> 16) & 0xFF;
3145
0
    buffer->data[buffer->count + 3] = (x >> 24) & 0xFF;
3146
0
    buffer->count += 4;
3147
0
}
3148
3149
/* Push a 64 bit unsigned integer to the buffer */
3150
0
void janet_buffer_push_u64(JanetBuffer *buffer, uint64_t x) {
3151
0
    janet_buffer_extra(buffer, 8);
3152
0
    buffer->data[buffer->count] = x & 0xFF;
3153
0
    buffer->data[buffer->count + 1] = (x >> 8) & 0xFF;
3154
0
    buffer->data[buffer->count + 2] = (x >> 16) & 0xFF;
3155
0
    buffer->data[buffer->count + 3] = (x >> 24) & 0xFF;
3156
0
    buffer->data[buffer->count + 4] = (x >> 32) & 0xFF;
3157
0
    buffer->data[buffer->count + 5] = (x >> 40) & 0xFF;
3158
0
    buffer->data[buffer->count + 6] = (x >> 48) & 0xFF;
3159
0
    buffer->data[buffer->count + 7] = (x >> 56) & 0xFF;
3160
0
    buffer->count += 8;
3161
0
}
3162
3163
/* C functions */
3164
3165
JANET_CORE_FN(cfun_buffer_new,
3166
              "(buffer/new capacity)",
3167
              "Creates a new, empty buffer with enough backing memory for `capacity` bytes. "
3168
0
              "Returns a new buffer of length 0.") {
3169
0
    janet_fixarity(argc, 1);
3170
0
    int32_t cap = janet_getinteger(argv, 0);
3171
0
    JanetBuffer *buffer = janet_buffer(cap);
3172
0
    return janet_wrap_buffer(buffer);
3173
0
}
3174
3175
JANET_CORE_FN(cfun_buffer_new_filled,
3176
              "(buffer/new-filled count &opt byte)",
3177
              "Creates a new buffer of length `count` filled with `byte`. By default, `byte` is 0. "
3178
0
              "Returns the new buffer.") {
3179
0
    janet_arity(argc, 1, 2);
3180
0
    int32_t count = janet_getinteger(argv, 0);
3181
0
    if (count < 0) count = 0;
3182
0
    int32_t byte = 0;
3183
0
    if (argc == 2) {
3184
0
        byte = janet_getinteger(argv, 1) & 0xFF;
3185
0
    }
3186
0
    JanetBuffer *buffer = janet_buffer(count);
3187
0
    if (buffer->data && count > 0)
3188
0
        memset(buffer->data, byte, count);
3189
0
    buffer->count = count;
3190
0
    return janet_wrap_buffer(buffer);
3191
0
}
3192
3193
JANET_CORE_FN(cfun_buffer_frombytes,
3194
              "(buffer/from-bytes & byte-vals)",
3195
              "Creates a buffer from integer parameters with byte values. All integers "
3196
0
              "will be coerced to the range of 1 byte 0-255.") {
3197
0
    int32_t i;
3198
0
    JanetBuffer *buffer = janet_buffer(argc);
3199
0
    for (i = 0; i < argc; i++) {
3200
0
        int32_t c = janet_getinteger(argv, i);
3201
0
        buffer->data[i] = c & 0xFF;
3202
0
    }
3203
0
    buffer->count = argc;
3204
0
    return janet_wrap_buffer(buffer);
3205
0
}
3206
3207
JANET_CORE_FN(cfun_buffer_fill,
3208
              "(buffer/fill buffer &opt byte)",
3209
              "Fill up a buffer with bytes, defaulting to 0s. Does not change the buffer's length. "
3210
0
              "Returns the modified buffer.") {
3211
0
    janet_arity(argc, 1, 2);
3212
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3213
0
    int32_t byte = 0;
3214
0
    if (argc == 2) {
3215
0
        byte = janet_getinteger(argv, 1) & 0xFF;
3216
0
    }
3217
0
    if (buffer->count) {
3218
0
        memset(buffer->data, byte, buffer->count);
3219
0
    }
3220
0
    return argv[0];
3221
0
}
3222
3223
JANET_CORE_FN(cfun_buffer_trim,
3224
              "(buffer/trim buffer)",
3225
              "Set the backing capacity of the buffer to the current length of the buffer. Returns the "
3226
0
              "modified buffer.") {
3227
0
    janet_fixarity(argc, 1);
3228
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3229
0
    janet_buffer_can_realloc(buffer);
3230
0
    if (buffer->count < buffer->capacity) {
3231
0
        int32_t newcap = buffer->count > 4 ? buffer->count : 4;
3232
0
        uint8_t *newData = janet_realloc(buffer->data, newcap);
3233
0
        if (NULL == newData) {
3234
0
            JANET_OUT_OF_MEMORY;
3235
0
        }
3236
0
        buffer->data = newData;
3237
0
        buffer->capacity = newcap;
3238
0
    }
3239
0
    return argv[0];
3240
0
}
3241
3242
JANET_CORE_FN(cfun_buffer_u8,
3243
              "(buffer/push-byte buffer & xs)",
3244
              "Append bytes to a buffer. Will expand the buffer as necessary. "
3245
0
              "Returns the modified buffer. Will throw an error if the buffer overflows.") {
3246
0
    int32_t i;
3247
0
    janet_arity(argc, 1, -1);
3248
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3249
0
    for (i = 1; i < argc; i++) {
3250
0
        janet_buffer_push_u8(buffer, (uint8_t)(janet_getinteger(argv, i) & 0xFF));
3251
0
    }
3252
0
    return argv[0];
3253
0
}
3254
3255
JANET_CORE_FN(cfun_buffer_word,
3256
              "(buffer/push-word buffer & xs)",
3257
              "Append machine words to a buffer. The 4 bytes of the integer are appended "
3258
              "in twos complement, little endian order, unsigned for all x. Returns the modified buffer. Will "
3259
0
              "throw an error if the buffer overflows.") {
3260
0
    int32_t i;
3261
0
    janet_arity(argc, 1, -1);
3262
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3263
0
    for (i = 1; i < argc; i++) {
3264
0
        double number = janet_getnumber(argv, i);
3265
0
        uint32_t word = (uint32_t) number;
3266
0
        if (word != number)
3267
0
            janet_panicf("cannot convert %v to machine word", argv[i]);
3268
0
        janet_buffer_push_u32(buffer, word);
3269
0
    }
3270
0
    return argv[0];
3271
0
}
3272
3273
JANET_CORE_FN(cfun_buffer_chars,
3274
              "(buffer/push-string buffer & xs)",
3275
              "Push byte sequences onto the end of a buffer. "
3276
              "Will accept any of strings, keywords, symbols, and buffers. "
3277
              "Returns the modified buffer. "
3278
0
              "Will throw an error if the buffer overflows.") {
3279
0
    int32_t i;
3280
0
    janet_arity(argc, 1, -1);
3281
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3282
0
    for (i = 1; i < argc; i++) {
3283
0
        JanetByteView view = janet_getbytes(argv, i);
3284
0
        if (view.bytes == buffer->data) {
3285
0
            janet_buffer_ensure(buffer, buffer->count + view.len, 2);
3286
0
            view.bytes = buffer->data;
3287
0
        }
3288
0
        janet_buffer_push_bytes(buffer, view.bytes, view.len);
3289
0
    }
3290
0
    return argv[0];
3291
0
}
3292
3293
0
static int should_reverse_bytes(const Janet *argv, int32_t argc) {
3294
0
    JanetKeyword order_kw = janet_getkeyword(argv, argc);
3295
0
    if (!janet_cstrcmp(order_kw, "le")) {
3296
#if JANET_BIG_ENDIAN
3297
        return 1;
3298
#endif
3299
0
    } else if (!janet_cstrcmp(order_kw, "be")) {
3300
0
#if JANET_LITTLE_ENDIAN
3301
0
        return 1;
3302
0
#endif
3303
0
    } else if (!janet_cstrcmp(order_kw, "native")) {
3304
0
        return 0;
3305
0
    } else {
3306
0
        janet_panicf("expected endianness :le, :be or :native, got %v", argv[1]);
3307
0
    }
3308
0
    return 0;
3309
0
}
3310
3311
0
static void reverse_u32(uint8_t bytes[4]) {
3312
0
    uint8_t temp;
3313
0
    temp = bytes[3];
3314
0
    bytes[3] = bytes[0];
3315
0
    bytes[0] = temp;
3316
0
    temp = bytes[2];
3317
0
    bytes[2] = bytes[1];
3318
0
    bytes[1] = temp;
3319
0
}
3320
3321
0
static void reverse_u64(uint8_t bytes[8]) {
3322
0
    uint8_t temp;
3323
0
    temp = bytes[7];
3324
0
    bytes[7] = bytes[0];
3325
0
    bytes[0] = temp;
3326
0
    temp = bytes[6];
3327
0
    bytes[6] = bytes[1];
3328
0
    bytes[1] = temp;
3329
0
    temp = bytes[5];
3330
0
    bytes[5] = bytes[2];
3331
0
    bytes[2] = temp;
3332
0
    temp = bytes[4];
3333
0
    bytes[4] = bytes[3];
3334
0
    bytes[3] = temp;
3335
0
}
3336
3337
JANET_CORE_FN(cfun_buffer_push_uint16,
3338
              "(buffer/push-uint16 buffer order data)",
3339
              "Push a 16 bit unsigned integer data onto the end of the buffer. "
3340
0
              "Returns the modified buffer.") {
3341
0
    janet_fixarity(argc, 3);
3342
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3343
0
    int reverse = should_reverse_bytes(argv, 1);
3344
0
    uint16_t data = janet_getuinteger16(argv, 2);
3345
0
    uint8_t bytes[sizeof(data)];
3346
0
    memcpy(bytes, &data, sizeof(bytes));
3347
0
    if (reverse) {
3348
0
        uint8_t temp = bytes[1];
3349
0
        bytes[1] = bytes[0];
3350
0
        bytes[0] = temp;
3351
0
    }
3352
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3353
0
    return argv[0];
3354
0
}
3355
3356
JANET_CORE_FN(cfun_buffer_push_uint32,
3357
              "(buffer/push-uint32 buffer order data)",
3358
              "Push a 32 bit unsigned integer data onto the end of the buffer. "
3359
0
              "Returns the modified buffer.") {
3360
0
    janet_fixarity(argc, 3);
3361
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3362
0
    int reverse = should_reverse_bytes(argv, 1);
3363
0
    uint32_t data = janet_getuinteger(argv, 2);
3364
0
    uint8_t bytes[sizeof(data)];
3365
0
    memcpy(bytes, &data, sizeof(bytes));
3366
0
    if (reverse)
3367
0
        reverse_u32(bytes);
3368
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3369
0
    return argv[0];
3370
0
}
3371
3372
JANET_CORE_FN(cfun_buffer_push_uint64,
3373
              "(buffer/push-uint64 buffer order data)",
3374
              "Push a 64 bit unsigned integer data onto the end of the buffer. "
3375
0
              "Returns the modified buffer.") {
3376
0
    janet_fixarity(argc, 3);
3377
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3378
0
    int reverse = should_reverse_bytes(argv, 1);
3379
0
    uint64_t data = janet_getuinteger64(argv, 2);
3380
0
    uint8_t bytes[sizeof(data)];
3381
0
    memcpy(bytes, &data, sizeof(bytes));
3382
0
    if (reverse)
3383
0
        reverse_u64(bytes);
3384
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3385
0
    return argv[0];
3386
0
}
3387
3388
JANET_CORE_FN(cfun_buffer_push_float32,
3389
              "(buffer/push-float32 buffer order data)",
3390
              "Push the underlying bytes of a 32 bit float data onto the end of the buffer. "
3391
0
              "Returns the modified buffer.") {
3392
0
    janet_fixarity(argc, 3);
3393
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3394
0
    int reverse = should_reverse_bytes(argv, 1);
3395
0
    float data = (float) janet_getnumber(argv, 2);
3396
0
    uint8_t bytes[sizeof(data)];
3397
0
    memcpy(bytes, &data, sizeof(bytes));
3398
0
    if (reverse)
3399
0
        reverse_u32(bytes);
3400
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3401
0
    return argv[0];
3402
0
}
3403
3404
JANET_CORE_FN(cfun_buffer_push_float64,
3405
              "(buffer/push-float64 buffer order data)",
3406
              "Push the underlying bytes of a 64 bit float data onto the end of the buffer. "
3407
0
              "Returns the modified buffer.") {
3408
0
    janet_fixarity(argc, 3);
3409
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3410
0
    int reverse = should_reverse_bytes(argv, 1);
3411
0
    double data = janet_getnumber(argv, 2);
3412
0
    uint8_t bytes[sizeof(data)];
3413
0
    memcpy(bytes, &data, sizeof(bytes));
3414
0
    if (reverse)
3415
0
        reverse_u64(bytes);
3416
0
    janet_buffer_push_bytes(buffer, bytes, sizeof(bytes));
3417
0
    return argv[0];
3418
0
}
3419
3420
0
static void buffer_push_impl(JanetBuffer *buffer, Janet *argv, int32_t argc_offset, int32_t argc) {
3421
0
    for (int32_t i = argc_offset; i < argc; i++) {
3422
0
        if (janet_checktype(argv[i], JANET_NUMBER)) {
3423
0
            janet_buffer_push_u8(buffer, (uint8_t)(janet_getinteger(argv, i) & 0xFF));
3424
0
        } else {
3425
0
            JanetByteView view = janet_getbytes(argv, i);
3426
0
            if (view.bytes == buffer->data) {
3427
0
                janet_buffer_ensure(buffer, buffer->count + view.len, 2);
3428
0
                view.bytes = buffer->data;
3429
0
            }
3430
0
            janet_buffer_push_bytes(buffer, view.bytes, view.len);
3431
0
        }
3432
0
    }
3433
0
}
3434
3435
JANET_CORE_FN(cfun_buffer_push_at,
3436
              "(buffer/push-at buffer index & xs)",
3437
              "Same as buffer/push, but copies the new data into the buffer "
3438
0
              " at index `index`.") {
3439
0
    janet_arity(argc, 2, -1);
3440
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3441
0
    int32_t index = janet_getinteger(argv, 1);
3442
0
    int32_t old_count = buffer->count;
3443
0
    if (index < 0 || index > old_count) {
3444
0
        janet_panicf("index out of range [0, %d)", old_count);
3445
0
    }
3446
0
    buffer->count = index;
3447
0
    buffer_push_impl(buffer, argv, 2, argc);
3448
0
    if (buffer->count < old_count) {
3449
0
        buffer->count = old_count;
3450
0
    }
3451
0
    return argv[0];
3452
0
}
3453
3454
JANET_CORE_FN(cfun_buffer_push,
3455
              "(buffer/push buffer & xs)",
3456
              "Push both individual bytes and byte sequences to a buffer. For each x in xs, "
3457
              "push the byte if x is an integer, otherwise push the bytesequence to the buffer. "
3458
              "Thus, this function behaves like both `buffer/push-string` and `buffer/push-byte`. "
3459
              "Returns the modified buffer. "
3460
0
              "Will throw an error if the buffer overflows.") {
3461
0
    janet_arity(argc, 1, -1);
3462
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3463
0
    buffer_push_impl(buffer, argv, 1, argc);
3464
0
    return argv[0];
3465
0
}
3466
3467
JANET_CORE_FN(cfun_buffer_clear,
3468
              "(buffer/clear buffer)",
3469
              "Sets the size of a buffer to 0 and empties it. The buffer retains "
3470
0
              "its memory so it can be efficiently refilled. Returns the modified buffer.") {
3471
0
    janet_fixarity(argc, 1);
3472
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3473
0
    buffer->count = 0;
3474
0
    return argv[0];
3475
0
}
3476
3477
JANET_CORE_FN(cfun_buffer_popn,
3478
              "(buffer/popn buffer n)",
3479
0
              "Removes the last `n` bytes from the buffer. Returns the modified buffer.") {
3480
0
    janet_fixarity(argc, 2);
3481
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3482
0
    int32_t n = janet_getinteger(argv, 1);
3483
0
    if (n < 0) janet_panic("n must be non-negative");
3484
0
    if (buffer->count < n) {
3485
0
        buffer->count = 0;
3486
0
    } else {
3487
0
        buffer->count -= n;
3488
0
    }
3489
0
    return argv[0];
3490
0
}
3491
3492
JANET_CORE_FN(cfun_buffer_slice,
3493
              "(buffer/slice bytes &opt start end)",
3494
              "Takes a slice of a byte sequence from `start` to `end`. The range is half open, "
3495
              "[start, end). Indexes can also be negative, indicating indexing from the end of the "
3496
              "end of the array. By default, `start` is 0 and `end` is the length of the buffer. "
3497
0
              "Returns a new buffer.") {
3498
0
    JanetByteView view = janet_getbytes(argv, 0);
3499
0
    JanetRange range = janet_getslice(argc, argv);
3500
0
    JanetBuffer *buffer = janet_buffer(range.end - range.start);
3501
0
    if (buffer->data)
3502
0
        memcpy(buffer->data, view.bytes + range.start, range.end - range.start);
3503
0
    buffer->count = range.end - range.start;
3504
0
    return janet_wrap_buffer(buffer);
3505
0
}
3506
3507
0
static void bitloc(int32_t argc, Janet *argv, JanetBuffer **b, int32_t *index, int *bit) {
3508
0
    janet_fixarity(argc, 2);
3509
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3510
0
    double x = janet_getnumber(argv, 1);
3511
0
    int64_t bitindex = (int64_t) x;
3512
0
    int64_t byteindex = bitindex >> 3;
3513
0
    int which_bit = bitindex & 7;
3514
0
    if (bitindex != x || bitindex < 0 || byteindex >= buffer->count)
3515
0
        janet_panicf("invalid bit index %v", argv[1]);
3516
0
    *b = buffer;
3517
0
    *index = (int32_t) byteindex;
3518
0
    *bit = which_bit;
3519
0
}
3520
3521
JANET_CORE_FN(cfun_buffer_bitset,
3522
              "(buffer/bit-set buffer index)",
3523
0
              "Sets the bit at the given bit-index. Returns the buffer.") {
3524
0
    int bit;
3525
0
    int32_t index;
3526
0
    JanetBuffer *buffer;
3527
0
    bitloc(argc, argv, &buffer, &index, &bit);
3528
0
    buffer->data[index] |= 1 << bit;
3529
0
    return argv[0];
3530
0
}
3531
3532
JANET_CORE_FN(cfun_buffer_bitclear,
3533
              "(buffer/bit-clear buffer index)",
3534
0
              "Clears the bit at the given bit-index. Returns the buffer.") {
3535
0
    int bit;
3536
0
    int32_t index;
3537
0
    JanetBuffer *buffer;
3538
0
    bitloc(argc, argv, &buffer, &index, &bit);
3539
0
    buffer->data[index] &= ~(1 << bit);
3540
0
    return argv[0];
3541
0
}
3542
3543
JANET_CORE_FN(cfun_buffer_bitget,
3544
              "(buffer/bit buffer index)",
3545
0
              "Gets the bit at the given bit-index. Returns true if the bit is set, false if not.") {
3546
0
    int bit;
3547
0
    int32_t index;
3548
0
    JanetBuffer *buffer;
3549
0
    bitloc(argc, argv, &buffer, &index, &bit);
3550
0
    return janet_wrap_boolean(buffer->data[index] & (1 << bit));
3551
0
}
3552
3553
JANET_CORE_FN(cfun_buffer_bittoggle,
3554
              "(buffer/bit-toggle buffer index)",
3555
0
              "Toggles the bit at the given bit index in buffer. Returns the buffer.") {
3556
0
    int bit;
3557
0
    int32_t index;
3558
0
    JanetBuffer *buffer;
3559
0
    bitloc(argc, argv, &buffer, &index, &bit);
3560
0
    buffer->data[index] ^= (1 << bit);
3561
0
    return argv[0];
3562
0
}
3563
3564
JANET_CORE_FN(cfun_buffer_blit,
3565
              "(buffer/blit dest src &opt dest-start src-start src-end)",
3566
              "Insert the contents of `src` into `dest`. Can optionally take indices that "
3567
              "indicate which part of `src` to copy into which part of `dest`. Indices can be "
3568
0
              "negative in order to index from the end of `src` or `dest`. Returns `dest`.") {
3569
0
    janet_arity(argc, 2, 5);
3570
0
    JanetBuffer *dest = janet_getbuffer(argv, 0);
3571
0
    JanetByteView src = janet_getbytes(argv, 1);
3572
0
    int same_buf = src.bytes == dest->data;
3573
0
    int32_t offset_dest = 0;
3574
0
    int32_t offset_src = 0;
3575
0
    if (argc > 2 && !janet_checktype(argv[2], JANET_NIL))
3576
0
        offset_dest = janet_gethalfrange(argv, 2, dest->count, "dest-start");
3577
0
    if (argc > 3 && !janet_checktype(argv[3], JANET_NIL))
3578
0
        offset_src = janet_gethalfrange(argv, 3, src.len, "src-start");
3579
0
    int32_t length_src;
3580
0
    if (argc > 4) {
3581
0
        int32_t src_end = src.len;
3582
0
        if (!janet_checktype(argv[4], JANET_NIL))
3583
0
            src_end = janet_gethalfrange(argv, 4, src.len, "src-end");
3584
0
        length_src = src_end - offset_src;
3585
0
        if (length_src < 0) length_src = 0;
3586
0
    } else {
3587
0
        length_src = src.len - offset_src;
3588
0
    }
3589
0
    int64_t last = (int64_t) offset_dest + length_src;
3590
0
    if (last > INT32_MAX)
3591
0
        janet_panic("buffer blit out of range");
3592
0
    int32_t last32 = (int32_t) last;
3593
0
    janet_buffer_ensure(dest, last32, 2);
3594
0
    if (last32 > dest->count) dest->count = last32;
3595
0
    if (length_src) {
3596
0
        if (same_buf) {
3597
            /* janet_buffer_ensure may have invalidated src */
3598
0
            src.bytes = dest->data;
3599
0
            memmove(dest->data + offset_dest, src.bytes + offset_src, length_src);
3600
0
        } else {
3601
0
            memcpy(dest->data + offset_dest, src.bytes + offset_src, length_src);
3602
0
        }
3603
0
    }
3604
0
    return argv[0];
3605
0
}
3606
3607
JANET_CORE_FN(cfun_buffer_format,
3608
              "(buffer/format buffer format & args)",
3609
              "Snprintf like functionality for printing values into a buffer. Returns "
3610
0
              "the modified buffer.") {
3611
0
    janet_arity(argc, 2, -1);
3612
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3613
0
    const char *strfrmt = (const char *) janet_getstring(argv, 1);
3614
0
    janet_buffer_format(buffer, strfrmt, 1, argc, argv);
3615
0
    return argv[0];
3616
0
}
3617
3618
JANET_CORE_FN(cfun_buffer_format_at,
3619
              "(buffer/format-at buffer at format & args)",
3620
              "Snprintf like functionality for printing values into a buffer. Returns "
3621
0
              "the modified buffer.") {
3622
0
    janet_arity(argc, 2, -1);
3623
0
    JanetBuffer *buffer = janet_getbuffer(argv, 0);
3624
0
    int32_t at = janet_getinteger(argv, 1);
3625
0
    if (at < 0) {
3626
0
        at += buffer->count + 1;
3627
0
    }
3628
0
    if (at > buffer->count || at < 0) janet_panicf("expected index at to be in range [0, %d), got %d", buffer->count, at);
3629
0
    int32_t oldcount = buffer->count;
3630
0
    buffer->count = at;
3631
0
    const char *strfrmt = (const char *) janet_getstring(argv, 2);
3632
0
    janet_buffer_format(buffer, strfrmt, 2, argc, argv);
3633
0
    if (buffer->count < oldcount) {
3634
0
        buffer->count = oldcount;
3635
0
    }
3636
0
    return argv[0];
3637
0
}
3638
3639
0
void janet_lib_buffer(JanetTable *env) {
3640
0
    JanetRegExt buffer_cfuns[] = {
3641
0
        JANET_CORE_REG("buffer/new", cfun_buffer_new),
3642
0
        JANET_CORE_REG("buffer/new-filled", cfun_buffer_new_filled),
3643
0
        JANET_CORE_REG("buffer/from-bytes", cfun_buffer_frombytes),
3644
0
        JANET_CORE_REG("buffer/fill", cfun_buffer_fill),
3645
0
        JANET_CORE_REG("buffer/trim", cfun_buffer_trim),
3646
0
        JANET_CORE_REG("buffer/push-byte", cfun_buffer_u8),
3647
0
        JANET_CORE_REG("buffer/push-word", cfun_buffer_word),
3648
0
        JANET_CORE_REG("buffer/push-string", cfun_buffer_chars),
3649
0
        JANET_CORE_REG("buffer/push-uint16", cfun_buffer_push_uint16),
3650
0
        JANET_CORE_REG("buffer/push-uint32", cfun_buffer_push_uint32),
3651
0
        JANET_CORE_REG("buffer/push-uint64", cfun_buffer_push_uint64),
3652
0
        JANET_CORE_REG("buffer/push-float32", cfun_buffer_push_float32),
3653
0
        JANET_CORE_REG("buffer/push-float64", cfun_buffer_push_float64),
3654
0
        JANET_CORE_REG("buffer/push", cfun_buffer_push),
3655
0
        JANET_CORE_REG("buffer/push-at", cfun_buffer_push_at),
3656
0
        JANET_CORE_REG("buffer/popn", cfun_buffer_popn),
3657
0
        JANET_CORE_REG("buffer/clear", cfun_buffer_clear),
3658
0
        JANET_CORE_REG("buffer/slice", cfun_buffer_slice),
3659
0
        JANET_CORE_REG("buffer/bit-set", cfun_buffer_bitset),
3660
0
        JANET_CORE_REG("buffer/bit-clear", cfun_buffer_bitclear),
3661
0
        JANET_CORE_REG("buffer/bit", cfun_buffer_bitget),
3662
0
        JANET_CORE_REG("buffer/bit-toggle", cfun_buffer_bittoggle),
3663
0
        JANET_CORE_REG("buffer/blit", cfun_buffer_blit),
3664
0
        JANET_CORE_REG("buffer/format", cfun_buffer_format),
3665
0
        JANET_CORE_REG("buffer/format-at", cfun_buffer_format_at),
3666
0
        JANET_REG_END
3667
0
    };
3668
0
    janet_core_cfuns_ext(env, NULL, buffer_cfuns);
3669
0
}
3670
3671
3672
/* src/core/bytecode.c */
3673
#line 0 "src/core/bytecode.c"
3674
3675
/*
3676
* Copyright (c) 2025 Calvin Rose
3677
*
3678
* Permission is hereby granted, free of charge, to any person obtaining a copy
3679
* of this software and associated documentation files (the "Software"), to
3680
* deal in the Software without restriction, including without limitation the
3681
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
3682
* sell copies of the Software, and to permit persons to whom the Software is
3683
* furnished to do so, subject to the following conditions:
3684
*
3685
* The above copyright notice and this permission notice shall be included in
3686
* all copies or substantial portions of the Software.
3687
*
3688
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
3689
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
3690
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
3691
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
3692
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3693
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
3694
* IN THE SOFTWARE.
3695
*/
3696
3697
#ifndef JANET_AMALG
3698
#include "features.h"
3699
#include <janet.h>
3700
#include "gc.h"
3701
#include "util.h"
3702
#include "regalloc.h"
3703
#endif
3704
3705
/* Look up table for instructions */
3706
enum JanetInstructionType janet_instructions[JOP_INSTRUCTION_COUNT] = {
3707
    JINT_0, /* JOP_NOOP, */
3708
    JINT_S, /* JOP_ERROR, */
3709
    JINT_ST, /* JOP_TYPECHECK, */
3710
    JINT_S, /* JOP_RETURN, */
3711
    JINT_0, /* JOP_RETURN_NIL, */
3712
    JINT_SSI, /* JOP_ADD_IMMEDIATE, */
3713
    JINT_SSS, /* JOP_ADD, */
3714
    JINT_SSI, /* JOP_SUBTRACT_IMMEDIATE, */
3715
    JINT_SSS, /* JOP_SUBTRACT, */
3716
    JINT_SSI, /* JOP_MULTIPLY_IMMEDIATE, */
3717
    JINT_SSS, /* JOP_MULTIPLY, */
3718
    JINT_SSI, /* JOP_DIVIDE_IMMEDIATE, */
3719
    JINT_SSS, /* JOP_DIVIDE, */
3720
    JINT_SSS, /* JOP_DIVIDE_FLOOR */
3721
    JINT_SSS, /* JOP_MODULO, */
3722
    JINT_SSS, /* JOP_REMAINDER, */
3723
    JINT_SSS, /* JOP_BAND, */
3724
    JINT_SSS, /* JOP_BOR, */
3725
    JINT_SSS, /* JOP_BXOR, */
3726
    JINT_SS, /* JOP_BNOT, */
3727
    JINT_SSS, /* JOP_SHIFT_LEFT, */
3728
    JINT_SSI, /* JOP_SHIFT_LEFT_IMMEDIATE, */
3729
    JINT_SSS, /* JOP_SHIFT_RIGHT, */
3730
    JINT_SSI, /* JOP_SHIFT_RIGHT_IMMEDIATE, */
3731
    JINT_SSS, /* JOP_SHIFT_RIGHT_UNSIGNED, */
3732
    JINT_SSU, /* JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE, */
3733
    JINT_SS, /* JOP_MOVE_FAR, */
3734
    JINT_SS, /* JOP_MOVE_NEAR, */
3735
    JINT_L, /* JOP_JUMP, */
3736
    JINT_SL, /* JOP_JUMP_IF, */
3737
    JINT_SL, /* JOP_JUMP_IF_NOT, */
3738
    JINT_SL, /* JOP_JUMP_IF_NIL, */
3739
    JINT_SL, /* JOP_JUMP_IF_NOT_NIL, */
3740
    JINT_SSS, /* JOP_GREATER_THAN, */
3741
    JINT_SSI, /* JOP_GREATER_THAN_IMMEDIATE, */
3742
    JINT_SSS, /* JOP_LESS_THAN, */
3743
    JINT_SSI, /* JOP_LESS_THAN_IMMEDIATE, */
3744
    JINT_SSS, /* JOP_EQUALS, */
3745
    JINT_SSI, /* JOP_EQUALS_IMMEDIATE, */
3746
    JINT_SSS, /* JOP_COMPARE, */
3747
    JINT_S, /* JOP_LOAD_NIL, */
3748
    JINT_S, /* JOP_LOAD_TRUE, */
3749
    JINT_S, /* JOP_LOAD_FALSE, */
3750
    JINT_SI, /* JOP_LOAD_INTEGER, */
3751
    JINT_SC, /* JOP_LOAD_CONSTANT, */
3752
    JINT_SES, /* JOP_LOAD_UPVALUE, */
3753
    JINT_S, /* JOP_LOAD_SELF, */
3754
    JINT_SES, /* JOP_SET_UPVALUE, */
3755
    JINT_SD, /* JOP_CLOSURE, */
3756
    JINT_S, /* JOP_PUSH, */
3757
    JINT_SS, /* JOP_PUSH_2, */
3758
    JINT_SSS, /* JOP_PUSH_3, */
3759
    JINT_S, /* JOP_PUSH_ARRAY, */
3760
    JINT_SS, /* JOP_CALL, */
3761
    JINT_S, /* JOP_TAILCALL, */
3762
    JINT_SSS, /* JOP_RESUME, */
3763
    JINT_SSU, /* JOP_SIGNAL, */
3764
    JINT_SSS, /* JOP_PROPAGATE */
3765
    JINT_SSS, /* JOP_IN, */
3766
    JINT_SSS, /* JOP_GET, */
3767
    JINT_SSS, /* JOP_PUT, */
3768
    JINT_SSU, /* JOP_GET_INDEX, */
3769
    JINT_SSU, /* JOP_PUT_INDEX, */
3770
    JINT_SS, /* JOP_LENGTH */
3771
    JINT_S, /* JOP_MAKE_ARRAY */
3772
    JINT_S, /* JOP_MAKE_BUFFER */
3773
    JINT_S, /* JOP_MAKE_STRING */
3774
    JINT_S, /* JOP_MAKE_STRUCT */
3775
    JINT_S, /* JOP_MAKE_TABLE */
3776
    JINT_S, /* JOP_MAKE_TUPLE */
3777
    JINT_S, /* JOP_MAKE_BRACKET_TUPLE */
3778
    JINT_SSS, /* JOP_GREATER_THAN_EQUAL */
3779
    JINT_SSS, /* JOP_LESS_THAN_EQUAL */
3780
    JINT_SSS, /* JOP_NEXT */
3781
    JINT_SSS, /* JOP_NOT_EQUALS, */
3782
    JINT_SSI, /* JOP_NOT_EQUALS_IMMEDIATE, */
3783
    JINT_SSS /* JOP_CANCEL, */
3784
};
3785
3786
/* Remove all noops while preserving jumps and debugging information.
3787
 * Useful as part of a filtering compiler pass. */
3788
0
void janet_bytecode_remove_noops(JanetFuncDef *def) {
3789
3790
    /* Get an instruction rewrite map so we can rewrite jumps */
3791
0
    uint32_t *pc_map = janet_smalloc(sizeof(uint32_t) * (1 + def->bytecode_length));
3792
0
    uint32_t new_bytecode_length = 0;
3793
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
3794
0
        uint32_t instr = def->bytecode[i];
3795
0
        uint32_t opcode = instr & 0x7F;
3796
0
        pc_map[i] = new_bytecode_length;
3797
0
        if (opcode != JOP_NOOP) {
3798
0
            new_bytecode_length++;
3799
0
        }
3800
0
    }
3801
0
    pc_map[def->bytecode_length] = new_bytecode_length;
3802
3803
    /* Linear scan rewrite bytecode and sourcemap. Also fix jumps. */
3804
0
    int32_t j = 0;
3805
0
    for (int32_t i = 0; i < def->bytecode_length; i++) {
3806
0
        uint32_t instr = def->bytecode[i];
3807
0
        uint32_t opcode = instr & 0x7F;
3808
0
        int32_t old_jump_target = 0;
3809
0
        int32_t new_jump_target = 0;
3810
0
        switch (opcode) {
3811
0
            case JOP_NOOP:
3812
0
                continue;
3813
0
            case JOP_JUMP:
3814
                /* relative pc is in DS field of instruction */
3815
0
                old_jump_target = i + (((int32_t)instr) >> 8);
3816
0
                new_jump_target = pc_map[old_jump_target];
3817
0
                instr += (uint32_t)(new_jump_target - old_jump_target + (i - j)) << 8;
3818
0
                break;
3819
0
            case JOP_JUMP_IF:
3820
0
            case JOP_JUMP_IF_NIL:
3821
0
            case JOP_JUMP_IF_NOT:
3822
0
            case JOP_JUMP_IF_NOT_NIL:
3823
                /* relative pc is in ES field of instruction */
3824
0
                old_jump_target = i + (((int32_t)instr) >> 16);
3825
0
                new_jump_target = pc_map[old_jump_target];
3826
0
                instr += (uint32_t)(new_jump_target - old_jump_target + (i - j)) << 16;
3827
0
                break;
3828
0
            default:
3829
0
                break;
3830
0
        }
3831
0
        def->bytecode[j] = instr;
3832
0
        if (def->sourcemap != NULL) {
3833
0
            def->sourcemap[j] = def->sourcemap[i];
3834
0
        }
3835
0
        j++;
3836
0
    }
3837
3838
    /* Rewrite symbolmap */
3839
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
3840
0
        JanetSymbolMap *sm = def->symbolmap + i;
3841
        /* Don't rewrite upvalue mappings */
3842
0
        if (sm->birth_pc < UINT32_MAX) {
3843
0
            sm->birth_pc = pc_map[sm->birth_pc];
3844
0
            sm->death_pc = pc_map[sm->death_pc];
3845
0
        }
3846
0
    }
3847
3848
0
    def->bytecode_length = new_bytecode_length;
3849
0
    def->bytecode = janet_realloc(def->bytecode, def->bytecode_length * sizeof(uint32_t));
3850
0
    janet_sfree(pc_map);
3851
0
}
3852
3853
/* Remove redundant loads, moves and other instructions if possible and convert them to
3854
 * noops. Input is assumed valid bytecode. */
3855
0
void janet_bytecode_movopt(JanetFuncDef *def) {
3856
0
    JanetcRegisterAllocator ra;
3857
0
    int recur = 1;
3858
3859
    /* Iterate this until no more instructions can be removed. */
3860
0
    while (recur) {
3861
0
        janetc_regalloc_init(&ra);
3862
3863
        /* Look for slots that have writes but no reads (and aren't in the closure bitset). */
3864
0
        if (def->closure_bitset != NULL) {
3865
0
            for (int32_t i = 0; i < def->slotcount; i++) {
3866
0
                int32_t index = i >> 5;
3867
0
                uint32_t mask = 1U << (((uint32_t) i) & 31);
3868
0
                if (def->closure_bitset[index] & mask) {
3869
0
                    janetc_regalloc_touch(&ra, i);
3870
0
                }
3871
0
            }
3872
0
        }
3873
3874
0
#define AA ((instr >> 8)  & 0xFF)
3875
0
#define BB ((instr >> 16) & 0xFF)
3876
0
#define CC (instr >> 24)
3877
0
#define DD (instr >> 8)
3878
0
#define EE (instr >> 16)
3879
3880
        /* Check reads and writes */
3881
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
3882
0
            uint32_t instr = def->bytecode[i];
3883
0
            switch (instr & 0x7F) {
3884
3885
                /* Group instructions my how they read from slots */
3886
3887
                /* No reads or writes */
3888
0
                default:
3889
0
                    janet_assert(0, "unhandled instruction");
3890
0
                case JOP_JUMP:
3891
0
                case JOP_NOOP:
3892
0
                case JOP_RETURN_NIL:
3893
                /* Write A */
3894
0
                case JOP_LOAD_INTEGER:
3895
0
                case JOP_LOAD_CONSTANT:
3896
0
                case JOP_LOAD_UPVALUE:
3897
0
                case JOP_CLOSURE:
3898
                /* Write D */
3899
0
                case JOP_LOAD_NIL:
3900
0
                case JOP_LOAD_TRUE:
3901
0
                case JOP_LOAD_FALSE:
3902
0
                case JOP_LOAD_SELF:
3903
0
                    break;
3904
0
                case JOP_MAKE_ARRAY:
3905
0
                case JOP_MAKE_BUFFER:
3906
0
                case JOP_MAKE_STRING:
3907
0
                case JOP_MAKE_STRUCT:
3908
0
                case JOP_MAKE_TABLE:
3909
0
                case JOP_MAKE_TUPLE:
3910
0
                case JOP_MAKE_BRACKET_TUPLE:
3911
                    /* Reads from the stack, don't remove */
3912
0
                    janetc_regalloc_touch(&ra, DD);
3913
0
                    break;
3914
3915
                /* Read A */
3916
0
                case JOP_ERROR:
3917
0
                case JOP_TYPECHECK:
3918
0
                case JOP_JUMP_IF:
3919
0
                case JOP_JUMP_IF_NOT:
3920
0
                case JOP_JUMP_IF_NIL:
3921
0
                case JOP_JUMP_IF_NOT_NIL:
3922
0
                case JOP_SET_UPVALUE:
3923
                /* Write E, Read A */
3924
0
                case JOP_MOVE_FAR:
3925
0
                    janetc_regalloc_touch(&ra, AA);
3926
0
                    break;
3927
3928
                /* Read B */
3929
0
                case JOP_SIGNAL:
3930
                /* Write A, Read B */
3931
0
                case JOP_ADD_IMMEDIATE:
3932
0
                case JOP_SUBTRACT_IMMEDIATE:
3933
0
                case JOP_MULTIPLY_IMMEDIATE:
3934
0
                case JOP_DIVIDE_IMMEDIATE:
3935
0
                case JOP_SHIFT_LEFT_IMMEDIATE:
3936
0
                case JOP_SHIFT_RIGHT_IMMEDIATE:
3937
0
                case JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE:
3938
0
                case JOP_GREATER_THAN_IMMEDIATE:
3939
0
                case JOP_LESS_THAN_IMMEDIATE:
3940
0
                case JOP_EQUALS_IMMEDIATE:
3941
0
                case JOP_NOT_EQUALS_IMMEDIATE:
3942
0
                case JOP_GET_INDEX:
3943
0
                    janetc_regalloc_touch(&ra, BB);
3944
0
                    break;
3945
3946
                /* Read D */
3947
0
                case JOP_RETURN:
3948
0
                case JOP_PUSH:
3949
0
                case JOP_PUSH_ARRAY:
3950
0
                case JOP_TAILCALL:
3951
0
                    janetc_regalloc_touch(&ra, DD);
3952
0
                    break;
3953
3954
                /* Write A, Read E */
3955
0
                case JOP_MOVE_NEAR:
3956
0
                case JOP_LENGTH:
3957
0
                case JOP_BNOT:
3958
0
                case JOP_CALL:
3959
0
                    janetc_regalloc_touch(&ra, EE);
3960
0
                    break;
3961
3962
                /* Read A, B */
3963
0
                case JOP_PUT_INDEX:
3964
0
                    janetc_regalloc_touch(&ra, AA);
3965
0
                    janetc_regalloc_touch(&ra, BB);
3966
0
                    break;
3967
3968
                /* Read A, E */
3969
0
                case JOP_PUSH_2:
3970
0
                    janetc_regalloc_touch(&ra, AA);
3971
0
                    janetc_regalloc_touch(&ra, EE);
3972
0
                    break;
3973
3974
                /* Read B, C */
3975
0
                case JOP_PROPAGATE:
3976
                /* Write A, Read B and C */
3977
0
                case JOP_BAND:
3978
0
                case JOP_BOR:
3979
0
                case JOP_BXOR:
3980
0
                case JOP_ADD:
3981
0
                case JOP_SUBTRACT:
3982
0
                case JOP_MULTIPLY:
3983
0
                case JOP_DIVIDE:
3984
0
                case JOP_DIVIDE_FLOOR:
3985
0
                case JOP_MODULO:
3986
0
                case JOP_REMAINDER:
3987
0
                case JOP_SHIFT_LEFT:
3988
0
                case JOP_SHIFT_RIGHT:
3989
0
                case JOP_SHIFT_RIGHT_UNSIGNED:
3990
0
                case JOP_GREATER_THAN:
3991
0
                case JOP_LESS_THAN:
3992
0
                case JOP_EQUALS:
3993
0
                case JOP_COMPARE:
3994
0
                case JOP_IN:
3995
0
                case JOP_GET:
3996
0
                case JOP_GREATER_THAN_EQUAL:
3997
0
                case JOP_LESS_THAN_EQUAL:
3998
0
                case JOP_NOT_EQUALS:
3999
0
                case JOP_CANCEL:
4000
0
                case JOP_RESUME:
4001
0
                case JOP_NEXT:
4002
0
                    janetc_regalloc_touch(&ra, BB);
4003
0
                    janetc_regalloc_touch(&ra, CC);
4004
0
                    break;
4005
4006
                /* Read A, B, C */
4007
0
                case JOP_PUT:
4008
0
                case JOP_PUSH_3:
4009
0
                    janetc_regalloc_touch(&ra, AA);
4010
0
                    janetc_regalloc_touch(&ra, BB);
4011
0
                    janetc_regalloc_touch(&ra, CC);
4012
0
                    break;
4013
0
            }
4014
0
        }
4015
4016
        /* Iterate and set noops on instructions that make writes that no one ever reads.
4017
         * Only set noops for instructions with no side effects - moves, loads, etc. that can't
4018
         * raise errors (outside of systemic errors like oom or stack overflow). */
4019
0
        recur = 0;
4020
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
4021
0
            uint32_t instr = def->bytecode[i];
4022
0
            switch (instr & 0x7F) {
4023
0
                default:
4024
0
                    break;
4025
                /* Write D */
4026
0
                case JOP_LOAD_NIL:
4027
0
                case JOP_LOAD_TRUE:
4028
0
                case JOP_LOAD_FALSE:
4029
0
                case JOP_LOAD_SELF:
4030
0
                case JOP_MAKE_ARRAY:
4031
0
                case JOP_MAKE_TUPLE:
4032
0
                case JOP_MAKE_BRACKET_TUPLE: {
4033
0
                    if (!janetc_regalloc_check(&ra, DD)) {
4034
0
                        def->bytecode[i] = JOP_NOOP;
4035
0
                        recur = 1;
4036
0
                    }
4037
0
                }
4038
0
                break;
4039
                /* Write E, Read A */
4040
0
                case JOP_MOVE_FAR: {
4041
0
                    if (!janetc_regalloc_check(&ra, EE)) {
4042
0
                        def->bytecode[i] = JOP_NOOP;
4043
0
                        recur = 1;
4044
0
                    }
4045
0
                }
4046
0
                break;
4047
                /* Write A, Read E */
4048
0
                case JOP_MOVE_NEAR:
4049
                /* Write A, Read B */
4050
0
                case JOP_GET_INDEX:
4051
                /* Write A */
4052
0
                case JOP_LOAD_INTEGER:
4053
0
                case JOP_LOAD_CONSTANT:
4054
0
                case JOP_LOAD_UPVALUE:
4055
0
                case JOP_CLOSURE: {
4056
0
                    if (!janetc_regalloc_check(&ra, AA)) {
4057
0
                        def->bytecode[i] = JOP_NOOP;
4058
0
                        recur = 1;
4059
0
                    }
4060
0
                }
4061
0
                break;
4062
0
            }
4063
0
        }
4064
4065
0
        janetc_regalloc_deinit(&ra);
4066
0
#undef AA
4067
0
#undef BB
4068
0
#undef CC
4069
0
#undef DD
4070
0
#undef EE
4071
0
    }
4072
0
}
4073
4074
/* Verify some bytecode */
4075
0
int janet_verify(JanetFuncDef *def) {
4076
0
    int vargs = !!(def->flags & JANET_FUNCDEF_FLAG_VARARG);
4077
0
    int32_t i;
4078
0
    int32_t maxslot = def->arity + vargs;
4079
0
    int32_t sc = def->slotcount;
4080
4081
0
    if (def->bytecode_length == 0) return 1;
4082
4083
0
    if (maxslot > sc) return 2;
4084
4085
    /* Verify each instruction */
4086
0
    for (i = 0; i < def->bytecode_length; i++) {
4087
0
        uint32_t instr = def->bytecode[i];
4088
        /* Check for invalid instructions */
4089
0
        if ((instr & 0x7F) >= JOP_INSTRUCTION_COUNT) {
4090
0
            return 3;
4091
0
        }
4092
0
        enum JanetInstructionType type = janet_instructions[instr & 0x7F];
4093
0
        switch (type) {
4094
0
            case JINT_0:
4095
0
                continue;
4096
0
            case JINT_S: {
4097
0
                if ((int32_t)(instr >> 8) >= sc) return 4;
4098
0
                continue;
4099
0
            }
4100
0
            case JINT_SI:
4101
0
            case JINT_SU:
4102
0
            case JINT_ST: {
4103
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4104
0
                continue;
4105
0
            }
4106
0
            case JINT_L: {
4107
0
                int32_t jumpdest = i + (((int32_t)instr) >> 8);
4108
0
                if (jumpdest < 0 || jumpdest >= def->bytecode_length) return 5;
4109
0
                continue;
4110
0
            }
4111
0
            case JINT_SS: {
4112
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc ||
4113
0
                        (int32_t)(instr >> 16) >= sc) return 4;
4114
0
                continue;
4115
0
            }
4116
0
            case JINT_SSI:
4117
0
            case JINT_SSU: {
4118
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc ||
4119
0
                        (int32_t)((instr >> 16) & 0xFF) >= sc) return 4;
4120
0
                continue;
4121
0
            }
4122
0
            case JINT_SL: {
4123
0
                int32_t jumpdest = i + (((int32_t)instr) >> 16);
4124
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4125
0
                if (jumpdest < 0 || jumpdest >= def->bytecode_length) return 5;
4126
0
                continue;
4127
0
            }
4128
0
            case JINT_SSS: {
4129
0
                if (((int32_t)(instr >> 8) & 0xFF) >= sc ||
4130
0
                        ((int32_t)(instr >> 16) & 0xFF) >= sc ||
4131
0
                        ((int32_t)(instr >> 24) & 0xFF) >= sc) return 4;
4132
0
                continue;
4133
0
            }
4134
0
            case JINT_SD: {
4135
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4136
0
                if ((int32_t)(instr >> 16) >= def->defs_length) return 6;
4137
0
                continue;
4138
0
            }
4139
0
            case JINT_SC: {
4140
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4141
0
                if ((int32_t)(instr >> 16) >= def->constants_length) return 7;
4142
0
                continue;
4143
0
            }
4144
0
            case JINT_SES: {
4145
                /* How can we check the last slot index? We need info parent funcdefs. Resort
4146
                 * to runtime checks for now. Maybe invalid upvalue references could be defaulted
4147
                 * to nil? (don't commit to this in the long term, though) */
4148
0
                if ((int32_t)((instr >> 8) & 0xFF) >= sc) return 4;
4149
0
                if ((int32_t)((instr >> 16) & 0xFF) >= def->environments_length) return 8;
4150
0
                continue;
4151
0
            }
4152
0
        }
4153
0
    }
4154
4155
    /* Verify last instruction is either a jump, return, return-nil, or tailcall. Eventually,
4156
     * some real flow analysis would be ideal, but this should be very effective. Will completely
4157
     * prevent running over the end of bytecode. However, valid functions with dead code will
4158
     * be rejected. */
4159
0
    {
4160
0
        uint32_t lastop = def->bytecode[def->bytecode_length - 1] & 0xFF;
4161
0
        switch (lastop) {
4162
0
            default:
4163
0
                return 9;
4164
0
            case JOP_RETURN:
4165
0
            case JOP_RETURN_NIL:
4166
0
            case JOP_JUMP:
4167
0
            case JOP_ERROR:
4168
0
            case JOP_TAILCALL:
4169
0
                break;
4170
0
        }
4171
0
    }
4172
4173
0
    return 0;
4174
0
}
4175
4176
/* Allocate an empty funcdef. This function may have added functionality
4177
 * as commonalities between asm and compile arise. */
4178
0
JanetFuncDef *janet_funcdef_alloc(void) {
4179
0
    JanetFuncDef *def = janet_gcalloc(JANET_MEMORY_FUNCDEF, sizeof(JanetFuncDef));
4180
0
    def->environments = NULL;
4181
0
    def->constants = NULL;
4182
0
    def->bytecode = NULL;
4183
0
    def->closure_bitset = NULL;
4184
0
    def->flags = 0;
4185
0
    def->slotcount = 0;
4186
0
    def->symbolmap = NULL;
4187
0
    def->arity = 0;
4188
0
    def->min_arity = 0;
4189
0
    def->max_arity = INT32_MAX;
4190
0
    def->source = NULL;
4191
0
    def->sourcemap = NULL;
4192
0
    def->name = NULL;
4193
0
    def->defs = NULL;
4194
0
    def->defs_length = 0;
4195
0
    def->constants_length = 0;
4196
0
    def->bytecode_length = 0;
4197
0
    def->environments_length = 0;
4198
0
    def->symbolmap_length = 0;
4199
0
    return def;
4200
0
}
4201
4202
/* Create a simple closure from a funcdef */
4203
0
JanetFunction *janet_thunk(JanetFuncDef *def) {
4204
0
    JanetFunction *func = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction));
4205
0
    func->def = def;
4206
0
    janet_assert(def->environments_length == 0, "tried to create thunk that needs upvalues");
4207
0
    return func;
4208
0
}
4209
4210
4211
/* src/core/capi.c */
4212
#line 0 "src/core/capi.c"
4213
4214
/*
4215
* Copyright (c) 2025 Calvin Rose
4216
*
4217
* Permission is hereby granted, free of charge, to any person obtaining a copy
4218
* of this software and associated documentation files (the "Software"), to
4219
* deal in the Software without restriction, including without limitation the
4220
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
4221
* sell copies of the Software, and to permit persons to whom the Software is
4222
* furnished to do so, subject to the following conditions:
4223
*
4224
* The above copyright notice and this permission notice shall be included in
4225
* all copies or substantial portions of the Software.
4226
*
4227
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4228
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4229
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4230
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4231
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4232
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
4233
* IN THE SOFTWARE.
4234
*/
4235
4236
#ifndef JANET_AMALG
4237
#include "features.h"
4238
#include <janet.h>
4239
#include "state.h"
4240
#include "fiber.h"
4241
#include "util.h"
4242
#endif
4243
4244
#ifndef JANET_SINGLE_THREADED
4245
#ifndef JANET_WINDOWS
4246
#include <pthread.h>
4247
#endif
4248
#endif
4249
4250
#ifdef JANET_WINDOWS
4251
#include <windows.h>
4252
#endif
4253
4254
#ifdef JANET_USE_STDATOMIC
4255
#include <stdatomic.h>
4256
/* We don't need stdatomic on most compilers since we use compiler builtins for atomic operations.
4257
 * Some (TCC), explicitly require using stdatomic.h and don't have any exposed builtins (that I know of).
4258
 * For TCC and similar compilers, one would need -std=c11 or similar then to get access. */
4259
#endif
4260
4261
0
JANET_NO_RETURN static void janet_top_level_signal(const char *msg) {
4262
#ifdef JANET_TOP_LEVEL_SIGNAL
4263
    JANET_TOP_LEVEL_SIGNAL(msg);
4264
#else
4265
0
    fputs(msg, stdout);
4266
# ifdef JANET_SINGLE_THREADED
4267
    exit(-1);
4268
# elif defined(JANET_WINDOWS)
4269
    ExitThread(-1);
4270
# else
4271
0
    pthread_exit(NULL);
4272
0
# endif
4273
0
#endif
4274
0
}
4275
4276
0
void janet_signalv(JanetSignal sig, Janet message) {
4277
0
    if (janet_vm.return_reg != NULL) {
4278
        /* Should match logic in janet_call for coercing everything not ok to an error (no awaits, yields, etc.) */
4279
0
        if (janet_vm.coerce_error && sig != JANET_SIGNAL_OK) {
4280
0
#ifdef JANET_EV
4281
0
            if (NULL != janet_vm.root_fiber && sig == JANET_SIGNAL_EVENT) {
4282
0
                janet_vm.root_fiber->sched_id++;
4283
0
            }
4284
0
#endif
4285
0
            if (sig != JANET_SIGNAL_ERROR) {
4286
0
                message = janet_wrap_string(janet_formatc("%v coerced from %s to error", message, janet_signal_names[sig]));
4287
0
            }
4288
0
            sig = JANET_SIGNAL_ERROR;
4289
0
        }
4290
0
        *janet_vm.return_reg = message;
4291
0
        if (NULL != janet_vm.fiber) {
4292
0
            janet_vm.fiber->flags |= JANET_FIBER_DID_LONGJUMP;
4293
0
        }
4294
#if defined(JANET_BSD) || defined(JANET_APPLE)
4295
        _longjmp(*janet_vm.signal_buf, sig);
4296
#else
4297
0
        longjmp(*janet_vm.signal_buf, sig);
4298
0
#endif
4299
0
    } else {
4300
0
        const char *str = (const char *)janet_formatc("janet top level signal - %v\n", message);
4301
0
        janet_top_level_signal(str);
4302
0
    }
4303
0
}
4304
4305
0
void janet_panicv(Janet message) {
4306
0
    janet_signalv(JANET_SIGNAL_ERROR, message);
4307
0
}
4308
4309
0
void janet_panicf(const char *format, ...) {
4310
0
    va_list args;
4311
0
    const uint8_t *ret;
4312
0
    JanetBuffer buffer;
4313
0
    int32_t len = 0;
4314
0
    while (format[len]) len++;
4315
0
    janet_buffer_init(&buffer, len);
4316
0
    va_start(args, format);
4317
0
    janet_formatbv(&buffer, format, args);
4318
0
    va_end(args);
4319
0
    ret = janet_string(buffer.data, buffer.count);
4320
0
    janet_buffer_deinit(&buffer);
4321
0
    janet_panics(ret);
4322
0
}
4323
4324
0
void janet_panic(const char *message) {
4325
0
    janet_panicv(janet_cstringv(message));
4326
0
}
4327
4328
0
void janet_panics(const uint8_t *message) {
4329
0
    janet_panicv(janet_wrap_string(message));
4330
0
}
4331
4332
0
void janet_panic_type(Janet x, int32_t n, int expected) {
4333
0
    janet_panicf("bad slot #%d, expected %T, got %v", n, expected, x);
4334
0
}
4335
4336
0
void janet_panic_abstract(Janet x, int32_t n, const JanetAbstractType *at) {
4337
0
    janet_panicf("bad slot #%d, expected %s, got %v", n, at->name, x);
4338
0
}
4339
4340
0
void janet_fixarity(int32_t arity, int32_t fix) {
4341
0
    if (arity != fix)
4342
0
        janet_panicf("arity mismatch, expected %d, got %d", fix, arity);
4343
0
}
4344
4345
0
void janet_arity(int32_t arity, int32_t min, int32_t max) {
4346
0
    if (min >= 0 && arity < min)
4347
0
        janet_panicf("arity mismatch, expected at least %d, got %d", min, arity);
4348
0
    if (max >= 0 && arity > max)
4349
0
        janet_panicf("arity mismatch, expected at most %d, got %d", max, arity);
4350
0
}
4351
4352
#define DEFINE_GETTER(name, NAME, type) \
4353
0
type janet_get##name(const Janet *argv, int32_t n) { \
4354
0
    Janet x = argv[n]; \
4355
0
    if (!janet_checktype(x, JANET_##NAME)) { \
4356
0
        janet_panic_type(x, n, JANET_TFLAG_##NAME); \
4357
0
    } \
4358
0
    return janet_unwrap_##name(x); \
4359
0
}
4360
4361
#define DEFINE_OPT(name, NAME, type) \
4362
0
type janet_opt##name(const Janet *argv, int32_t argc, int32_t n, type dflt) { \
4363
0
    if (n >= argc) return dflt; \
4364
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt; \
4365
0
    return janet_get##name(argv, n); \
4366
0
}
4367
4368
#define DEFINE_OPTLEN(name, NAME, type) \
4369
0
type janet_opt##name(const Janet *argv, int32_t argc, int32_t n, int32_t dflt_len) { \
4370
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {\
4371
0
        return janet_##name(dflt_len); \
4372
0
    }\
4373
0
    return janet_get##name(argv, n); \
4374
0
}
4375
4376
0
int janet_getmethod(const uint8_t *method, const JanetMethod *methods, Janet *out) {
4377
0
    while (methods->name) {
4378
0
        if (!janet_cstrcmp(method, methods->name)) {
4379
0
            *out = janet_wrap_cfunction(methods->cfun);
4380
0
            return 1;
4381
0
        }
4382
0
        methods++;
4383
0
    }
4384
0
    return 0;
4385
0
}
4386
4387
0
Janet janet_nextmethod(const JanetMethod *methods, Janet key) {
4388
0
    if (!janet_checktype(key, JANET_NIL)) {
4389
0
        while (methods->name) {
4390
0
            if (janet_keyeq(key, methods->name)) {
4391
0
                methods++;
4392
0
                break;
4393
0
            }
4394
0
            methods++;
4395
0
        }
4396
0
    }
4397
0
    if (methods->name) {
4398
0
        return janet_ckeywordv(methods->name);
4399
0
    } else {
4400
0
        return janet_wrap_nil();
4401
0
    }
4402
0
}
4403
4404
0
DEFINE_GETTER(number, NUMBER, double)
4405
0
DEFINE_GETTER(array, ARRAY, JanetArray *)
4406
0
DEFINE_GETTER(tuple, TUPLE, const Janet *)
4407
0
DEFINE_GETTER(table, TABLE, JanetTable *)
4408
0
DEFINE_GETTER(struct, STRUCT, const JanetKV *)
4409
0
DEFINE_GETTER(string, STRING, const uint8_t *)
4410
0
DEFINE_GETTER(keyword, KEYWORD, const uint8_t *)
4411
0
DEFINE_GETTER(symbol, SYMBOL, const uint8_t *)
4412
0
DEFINE_GETTER(buffer, BUFFER, JanetBuffer *)
4413
0
DEFINE_GETTER(fiber, FIBER, JanetFiber *)
4414
0
DEFINE_GETTER(function, FUNCTION, JanetFunction *)
4415
0
DEFINE_GETTER(cfunction, CFUNCTION, JanetCFunction)
4416
0
DEFINE_GETTER(boolean, BOOLEAN, int)
4417
0
DEFINE_GETTER(pointer, POINTER, void *)
4418
4419
0
DEFINE_OPT(number, NUMBER, double)
4420
0
DEFINE_OPT(tuple, TUPLE, const Janet *)
4421
0
DEFINE_OPT(struct, STRUCT, const JanetKV *)
4422
0
DEFINE_OPT(string, STRING, const uint8_t *)
4423
0
DEFINE_OPT(keyword, KEYWORD, const uint8_t *)
4424
0
DEFINE_OPT(symbol, SYMBOL, const uint8_t *)
4425
0
DEFINE_OPT(fiber, FIBER, JanetFiber *)
4426
0
DEFINE_OPT(function, FUNCTION, JanetFunction *)
4427
0
DEFINE_OPT(cfunction, CFUNCTION, JanetCFunction)
4428
0
DEFINE_OPT(boolean, BOOLEAN, int)
4429
0
DEFINE_OPT(pointer, POINTER, void *)
4430
4431
0
DEFINE_OPTLEN(buffer, BUFFER, JanetBuffer *)
4432
0
DEFINE_OPTLEN(table, TABLE, JanetTable *)
4433
0
DEFINE_OPTLEN(array, ARRAY, JanetArray *)
4434
4435
0
const char *janet_optcstring(const Janet *argv, int32_t argc, int32_t n, const char *dflt) {
4436
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4437
0
        return dflt;
4438
0
    }
4439
0
    return janet_getcstring(argv, n);
4440
0
}
4441
4442
#undef DEFINE_GETTER
4443
#undef DEFINE_OPT
4444
#undef DEFINE_OPTLEN
4445
4446
0
const char *janet_getcstring(const Janet *argv, int32_t n) {
4447
0
    if (!janet_checktype(argv[n], JANET_STRING)) {
4448
0
        janet_panic_type(argv[n], n, JANET_TFLAG_STRING);
4449
0
    }
4450
0
    return janet_getcbytes(argv, n);
4451
0
}
4452
4453
0
const char *janet_getcbytes(const Janet *argv, int32_t n) {
4454
    /* Ensure buffer 0-padded */
4455
0
    if (janet_checktype(argv[n], JANET_BUFFER)) {
4456
0
        JanetBuffer *b = janet_unwrap_buffer(argv[n]);
4457
0
        if ((b->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC) && b->count == b->capacity) {
4458
            /* Make a copy with janet_smalloc in the rare case we have a buffer that
4459
             * cannot be realloced and pushing a 0 byte would panic. */
4460
0
            char *new_string = janet_smalloc(b->count + 1);
4461
0
            memcpy(new_string, b->data, b->count);
4462
0
            new_string[b->count] = 0;
4463
0
            if (strlen(new_string) != (size_t) b->count) goto badzeros;
4464
0
            return new_string;
4465
0
        } else {
4466
            /* Ensure trailing 0 */
4467
0
            janet_buffer_push_u8(b, 0);
4468
0
            b->count--;
4469
0
            if (strlen((char *)b->data) != (size_t) b->count) goto badzeros;
4470
0
            return (const char *) b->data;
4471
0
        }
4472
0
    }
4473
0
    JanetByteView view = janet_getbytes(argv, n);
4474
0
    const char *cstr = (const char *)view.bytes;
4475
0
    if (strlen(cstr) != (size_t) view.len) goto badzeros;
4476
0
    return cstr;
4477
4478
0
badzeros:
4479
0
    janet_panic("bytes contain embedded 0s");
4480
0
}
4481
4482
0
const char *janet_optcbytes(const Janet *argv, int32_t argc, int32_t n, const char *dflt) {
4483
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4484
0
        return dflt;
4485
0
    }
4486
0
    return janet_getcbytes(argv, n);
4487
0
}
4488
4489
0
int32_t janet_getnat(const Janet *argv, int32_t n) {
4490
0
    Janet x = argv[n];
4491
0
    if (!janet_checkint(x)) goto bad;
4492
0
    int32_t ret = janet_unwrap_integer(x);
4493
0
    if (ret < 0) goto bad;
4494
0
    return ret;
4495
0
bad:
4496
0
    janet_panicf("bad slot #%d, expected non-negative 32 bit signed integer, got %v", n, x);
4497
0
}
4498
4499
0
JanetAbstract janet_checkabstract(Janet x, const JanetAbstractType *at) {
4500
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return NULL;
4501
0
    JanetAbstract a = janet_unwrap_abstract(x);
4502
0
    if (janet_abstract_type(a) != at) return NULL;
4503
0
    return a;
4504
0
}
4505
4506
0
static int janet_strlike_cmp(JanetType type, Janet x, const char *cstring) {
4507
0
    if (janet_type(x) != type) return 0;
4508
0
    return !janet_cstrcmp(janet_unwrap_string(x), cstring);
4509
0
}
4510
4511
0
int janet_keyeq(Janet x, const char *cstring) {
4512
0
    return janet_strlike_cmp(JANET_KEYWORD, x, cstring);
4513
0
}
4514
4515
0
int janet_streq(Janet x, const char *cstring) {
4516
0
    return janet_strlike_cmp(JANET_STRING, x, cstring);
4517
0
}
4518
4519
0
int janet_symeq(Janet x, const char *cstring) {
4520
0
    return janet_strlike_cmp(JANET_SYMBOL, x, cstring);
4521
0
}
4522
4523
0
int32_t janet_getinteger(const Janet *argv, int32_t n) {
4524
0
    Janet x = argv[n];
4525
0
    if (!janet_checkint(x)) {
4526
0
        janet_panicf("bad slot #%d, expected 32 bit signed integer, got %v", n, x);
4527
0
    }
4528
0
    return janet_unwrap_integer(x);
4529
0
}
4530
4531
0
uint32_t janet_getuinteger(const Janet *argv, int32_t n) {
4532
0
    Janet x = argv[n];
4533
0
    if (!janet_checkuint(x)) {
4534
0
        janet_panicf("bad slot #%d, expected 32 bit unsigned integer, got %v", n, x);
4535
0
    }
4536
0
    return (uint32_t) janet_unwrap_number(x);
4537
0
}
4538
4539
0
int16_t janet_getinteger16(const Janet *argv, int32_t n) {
4540
0
    Janet x = argv[n];
4541
0
    if (!janet_checkint16(x)) {
4542
0
        janet_panicf("bad slot #%d, expected 16 bit signed integer, got %v", n, x);
4543
0
    }
4544
0
    return (int16_t) janet_unwrap_number(x);
4545
0
}
4546
4547
0
uint16_t janet_getuinteger16(const Janet *argv, int32_t n) {
4548
0
    Janet x = argv[n];
4549
0
    if (!janet_checkuint16(x)) {
4550
0
        janet_panicf("bad slot #%d, expected 16 bit unsigned integer, got %v", n, x);
4551
0
    }
4552
0
    return (uint16_t) janet_unwrap_number(x);
4553
0
}
4554
4555
4556
0
int64_t janet_getinteger64(const Janet *argv, int32_t n) {
4557
0
#ifdef JANET_INT_TYPES
4558
0
    return janet_unwrap_s64(argv[n]);
4559
#else
4560
    Janet x = argv[n];
4561
    if (!janet_checkint64(x)) {
4562
        janet_panicf("bad slot #%d, expected 64 bit signed integer, got %v", n, x);
4563
    }
4564
    return (int64_t) janet_unwrap_number(x);
4565
#endif
4566
0
}
4567
4568
0
uint64_t janet_getuinteger64(const Janet *argv, int32_t n) {
4569
0
#ifdef JANET_INT_TYPES
4570
0
    return janet_unwrap_u64(argv[n]);
4571
#else
4572
    Janet x = argv[n];
4573
    if (!janet_checkuint64(x)) {
4574
        janet_panicf("bad slot #%d, expected 64 bit unsigned integer, got %v", n, x);
4575
    }
4576
    return (uint64_t) janet_unwrap_number(x);
4577
#endif
4578
0
}
4579
4580
0
size_t janet_getsize(const Janet *argv, int32_t n) {
4581
0
    Janet x = argv[n];
4582
0
    if (!janet_checksize(x)) {
4583
0
        janet_panicf("bad slot #%d, expected size, got %v", n, x);
4584
0
    }
4585
0
    return (size_t) janet_unwrap_number(x);
4586
0
}
4587
4588
0
int32_t janet_gethalfrange(const Janet *argv, int32_t n, int32_t length, const char *which) {
4589
0
    int32_t raw = janet_getinteger(argv, n);
4590
0
    int32_t not_raw = raw;
4591
0
    if (not_raw < 0) not_raw += length + 1;
4592
0
    if (not_raw < 0 || not_raw > length)
4593
0
        janet_panicf("%s index %d out of range [%d,%d]", which, (int64_t) raw, -(int64_t)length - 1, (int64_t) length);
4594
0
    return not_raw;
4595
0
}
4596
4597
0
int32_t janet_getstartrange(const Janet *argv, int32_t argc, int32_t n, int32_t length) {
4598
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4599
0
        return 0;
4600
0
    }
4601
0
    return janet_gethalfrange(argv, n, length, "start");
4602
0
}
4603
4604
0
int32_t janet_getendrange(const Janet *argv, int32_t argc, int32_t n, int32_t length) {
4605
0
    if (n >= argc || janet_checktype(argv[n], JANET_NIL)) {
4606
0
        return length;
4607
0
    }
4608
0
    return janet_gethalfrange(argv, n, length, "end");
4609
0
}
4610
4611
0
int32_t janet_getargindex(const Janet *argv, int32_t n, int32_t length, const char *which) {
4612
0
    int32_t raw = janet_getinteger(argv, n);
4613
0
    int32_t not_raw = raw;
4614
0
    if (not_raw < 0) not_raw += length;
4615
0
    if (not_raw < 0 || not_raw > length)
4616
0
        janet_panicf("%s index %d out of range [%d,%d)", which, (int64_t)raw, -(int64_t)length, (int64_t)length);
4617
0
    return not_raw;
4618
0
}
4619
4620
0
JanetView janet_getindexed(const Janet *argv, int32_t n) {
4621
0
    Janet x = argv[n];
4622
0
    JanetView view;
4623
0
    if (!janet_indexed_view(x, &view.items, &view.len)) {
4624
0
        janet_panic_type(x, n, JANET_TFLAG_INDEXED);
4625
0
    }
4626
0
    return view;
4627
0
}
4628
4629
0
JanetByteView janet_getbytes(const Janet *argv, int32_t n) {
4630
0
    Janet x = argv[n];
4631
0
    JanetByteView view;
4632
0
    if (!janet_bytes_view(x, &view.bytes, &view.len)) {
4633
0
        janet_panic_type(x, n, JANET_TFLAG_BYTES);
4634
0
    }
4635
0
    return view;
4636
0
}
4637
4638
0
JanetDictView janet_getdictionary(const Janet *argv, int32_t n) {
4639
0
    Janet x = argv[n];
4640
0
    JanetDictView view;
4641
0
    if (!janet_dictionary_view(x, &view.kvs, &view.len, &view.cap)) {
4642
0
        janet_panic_type(x, n, JANET_TFLAG_DICTIONARY);
4643
0
    }
4644
0
    return view;
4645
0
}
4646
4647
0
void *janet_getabstract(const Janet *argv, int32_t n, const JanetAbstractType *at) {
4648
0
    Janet x = argv[n];
4649
0
    if (!janet_checktype(x, JANET_ABSTRACT)) {
4650
0
        janet_panic_abstract(x, n, at);
4651
0
    }
4652
0
    void *abstractx = janet_unwrap_abstract(x);
4653
0
    if (janet_abstract_type(abstractx) != at) {
4654
0
        janet_panic_abstract(x, n, at);
4655
0
    }
4656
0
    return abstractx;
4657
0
}
4658
4659
0
JanetRange janet_getslice(int32_t argc, const Janet *argv) {
4660
0
    janet_arity(argc, 1, 3);
4661
0
    JanetRange range;
4662
0
    int32_t length = janet_length(argv[0]);
4663
0
    range.start = janet_getstartrange(argv, argc, 1, length);
4664
0
    range.end = janet_getendrange(argv, argc, 2, length);
4665
0
    if (range.end < range.start)
4666
0
        range.end = range.start;
4667
0
    return range;
4668
0
}
4669
4670
0
Janet janet_dyn(const char *name) {
4671
0
    if (!janet_vm.fiber) {
4672
0
        if (!janet_vm.top_dyns) return janet_wrap_nil();
4673
0
        return janet_table_get(janet_vm.top_dyns, janet_ckeywordv(name));
4674
0
    }
4675
0
    if (janet_vm.fiber->env) {
4676
0
        return janet_table_get(janet_vm.fiber->env, janet_ckeywordv(name));
4677
0
    } else {
4678
0
        return janet_wrap_nil();
4679
0
    }
4680
0
}
4681
4682
0
void janet_setdyn(const char *name, Janet value) {
4683
0
    if (!janet_vm.fiber) {
4684
0
        if (!janet_vm.top_dyns) janet_vm.top_dyns = janet_table(10);
4685
0
        janet_table_put(janet_vm.top_dyns, janet_ckeywordv(name), value);
4686
0
    } else {
4687
0
        if (!janet_vm.fiber->env) {
4688
0
            janet_vm.fiber->env = janet_table(1);
4689
0
        }
4690
0
        janet_table_put(janet_vm.fiber->env, janet_ckeywordv(name), value);
4691
0
    }
4692
0
}
4693
4694
/* Create a function that when called, returns X. Trivial in Janet, a pain in C. */
4695
0
JanetFunction *janet_thunk_delay(Janet x) {
4696
0
    static const uint32_t bytecode[] = {
4697
0
        JOP_LOAD_CONSTANT,
4698
0
        JOP_RETURN
4699
0
    };
4700
0
    JanetFuncDef *def = janet_funcdef_alloc();
4701
0
    def->arity = 0;
4702
0
    def->min_arity = 0;
4703
0
    def->max_arity = INT32_MAX;
4704
0
    def->flags = JANET_FUNCDEF_FLAG_VARARG;
4705
0
    def->slotcount = 1;
4706
0
    def->bytecode = janet_malloc(sizeof(bytecode));
4707
0
    def->bytecode_length = (int32_t)(sizeof(bytecode) / sizeof(uint32_t));
4708
0
    def->constants = janet_malloc(sizeof(Janet));
4709
0
    def->constants_length = 1;
4710
0
    def->name = NULL;
4711
0
    if (!def->bytecode || !def->constants) {
4712
0
        JANET_OUT_OF_MEMORY;
4713
0
    }
4714
0
    def->constants[0] = x;
4715
0
    memcpy(def->bytecode, bytecode, sizeof(bytecode));
4716
0
    janet_def_addflags(def);
4717
    /* janet_verify(def); */
4718
0
    return janet_thunk(def);
4719
0
}
4720
4721
0
uint64_t janet_getflags(const Janet *argv, int32_t n, const char *flags) {
4722
0
    uint64_t ret = 0;
4723
0
    const uint8_t *keyw = janet_getkeyword(argv, n);
4724
0
    int32_t klen = janet_string_length(keyw);
4725
0
    int32_t flen = (int32_t) strlen(flags);
4726
0
    if (flen > 64) {
4727
0
        flen = 64;
4728
0
    }
4729
0
    for (int32_t j = 0; j < klen; j++) {
4730
0
        for (int32_t i = 0; i < flen; i++) {
4731
0
            if (((uint8_t) flags[i]) == keyw[j]) {
4732
0
                ret |= 1ULL << i;
4733
0
                goto found;
4734
0
            }
4735
0
        }
4736
0
        janet_panicf("unexpected flag %c, expected one of \"%s\"", (char) keyw[j], flags);
4737
0
    found:
4738
0
        ;
4739
0
    }
4740
0
    return ret;
4741
0
}
4742
4743
0
int32_t janet_optnat(const Janet *argv, int32_t argc, int32_t n, int32_t dflt) {
4744
0
    if (argc <= n) return dflt;
4745
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4746
0
    return janet_getnat(argv, n);
4747
0
}
4748
4749
0
int32_t janet_optinteger(const Janet *argv, int32_t argc, int32_t n, int32_t dflt) {
4750
0
    if (argc <= n) return dflt;
4751
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4752
0
    return janet_getinteger(argv, n);
4753
0
}
4754
4755
0
int64_t janet_optinteger64(const Janet *argv, int32_t argc, int32_t n, int64_t dflt) {
4756
0
    if (argc <= n) return dflt;
4757
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4758
0
    return janet_getinteger64(argv, n);
4759
0
}
4760
4761
0
size_t janet_optsize(const Janet *argv, int32_t argc, int32_t n, size_t dflt) {
4762
0
    if (argc <= n) return dflt;
4763
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4764
0
    return janet_getsize(argv, n);
4765
0
}
4766
4767
0
void *janet_optabstract(const Janet *argv, int32_t argc, int32_t n, const JanetAbstractType *at, void *dflt) {
4768
0
    if (argc <= n) return dflt;
4769
0
    if (janet_checktype(argv[n], JANET_NIL)) return dflt;
4770
0
    return janet_getabstract(argv, n, at);
4771
0
}
4772
4773
/* Atomic refcounts */
4774
4775
0
JanetAtomicInt janet_atomic_inc(JanetAtomicInt volatile *x) {
4776
#ifdef _MSC_VER
4777
    return _InterlockedIncrement(x);
4778
#elif defined(JANET_USE_STDATOMIC)
4779
    return atomic_fetch_add_explicit(x, 1, memory_order_relaxed) + 1;
4780
#else
4781
0
    return __atomic_add_fetch(x, 1, __ATOMIC_RELAXED);
4782
0
#endif
4783
0
}
4784
4785
0
JanetAtomicInt janet_atomic_dec(JanetAtomicInt volatile *x) {
4786
#ifdef _MSC_VER
4787
    return _InterlockedDecrement(x);
4788
#elif defined(JANET_USE_STDATOMIC)
4789
    return atomic_fetch_add_explicit(x, -1, memory_order_acq_rel) - 1;
4790
#else
4791
0
    return __atomic_add_fetch(x, -1, __ATOMIC_ACQ_REL);
4792
0
#endif
4793
0
}
4794
4795
0
JanetAtomicInt janet_atomic_load(JanetAtomicInt volatile *x) {
4796
#ifdef _MSC_VER
4797
    return _InterlockedOr(x, 0);
4798
#elif defined(JANET_USE_STDATOMIC)
4799
    return atomic_load_explicit(x, memory_order_acquire);
4800
#else
4801
0
    return __atomic_load_n(x, __ATOMIC_ACQUIRE);
4802
0
#endif
4803
0
}
4804
4805
0
JanetAtomicInt janet_atomic_load_relaxed(JanetAtomicInt volatile *x) {
4806
#ifdef _MSC_VER
4807
    return _InterlockedOr(x, 0);
4808
#elif defined(JANET_USE_STDATOMIC)
4809
    return atomic_load_explicit(x, memory_order_relaxed);
4810
#else
4811
0
    return __atomic_load_n(x, __ATOMIC_RELAXED);
4812
0
#endif
4813
0
}
4814
4815
/* Some definitions for function-like macros */
4816
4817
0
JANET_API JanetStructHead *(janet_struct_head)(JanetStruct st) {
4818
0
    return janet_struct_head(st);
4819
0
}
4820
4821
0
JANET_API JanetAbstractHead *(janet_abstract_head)(const void *abstract) {
4822
0
    return janet_abstract_head(abstract);
4823
0
}
4824
4825
0
JANET_API JanetStringHead *(janet_string_head)(JanetString s) {
4826
0
    return janet_string_head(s);
4827
0
}
4828
4829
0
JANET_API JanetTupleHead *(janet_tuple_head)(JanetTuple tuple) {
4830
0
    return janet_tuple_head(tuple);
4831
0
}
4832
4833
4834
/* src/core/cfuns.c */
4835
#line 0 "src/core/cfuns.c"
4836
4837
/*
4838
* Copyright (c) 2025 Calvin Rose
4839
*
4840
* Permission is hereby granted, free of charge, to any person obtaining a copy
4841
* of this software and associated documentation files (the "Software"), to
4842
* deal in the Software without restriction, including without limitation the
4843
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
4844
* sell copies of the Software, and to permit persons to whom the Software is
4845
* furnished to do so, subject to the following conditions:
4846
*
4847
* The above copyright notice and this permission notice shall be included in
4848
* all copies or substantial portions of the Software.
4849
*
4850
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
4851
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
4852
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
4853
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
4854
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
4855
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
4856
* IN THE SOFTWARE.
4857
*/
4858
4859
#ifndef JANET_AMALG
4860
#include "features.h"
4861
#include <janet.h>
4862
#include "compile.h"
4863
#include "emit.h"
4864
#include "vector.h"
4865
#endif
4866
4867
0
static int arity1or2(JanetFopts opts, JanetSlot *args) {
4868
0
    (void) opts;
4869
0
    int32_t arity = janet_v_count(args);
4870
0
    return arity == 1 || arity == 2;
4871
0
}
4872
0
static int arity2or3(JanetFopts opts, JanetSlot *args) {
4873
0
    (void) opts;
4874
0
    int32_t arity = janet_v_count(args);
4875
0
    return arity == 2 || arity == 3;
4876
0
}
4877
0
static int fixarity1(JanetFopts opts, JanetSlot *args) {
4878
0
    (void) opts;
4879
0
    return janet_v_count(args) == 1;
4880
0
}
4881
0
static int maxarity1(JanetFopts opts, JanetSlot *args) {
4882
0
    (void) opts;
4883
0
    return janet_v_count(args) <= 1;
4884
0
}
4885
0
static int minarity2(JanetFopts opts, JanetSlot *args) {
4886
0
    (void) opts;
4887
0
    return janet_v_count(args) >= 2;
4888
0
}
4889
0
static int fixarity2(JanetFopts opts, JanetSlot *args) {
4890
0
    (void) opts;
4891
0
    return janet_v_count(args) == 2;
4892
0
}
4893
0
static int fixarity3(JanetFopts opts, JanetSlot *args) {
4894
0
    (void) opts;
4895
0
    return janet_v_count(args) == 3;
4896
0
}
4897
4898
/* Generic handling for $A = op $B */
4899
0
static JanetSlot genericSS(JanetFopts opts, int op, JanetSlot s) {
4900
0
    JanetSlot target = janetc_gettarget(opts);
4901
0
    janetc_emit_ss(opts.compiler, op, target, s, 1);
4902
0
    return target;
4903
0
}
4904
4905
/* Generic handling for $A = $B op I */
4906
0
static JanetSlot genericSSI(JanetFopts opts, int op, JanetSlot s, int32_t imm) {
4907
0
    JanetSlot target = janetc_gettarget(opts);
4908
0
    janetc_emit_ssi(opts.compiler, op, target, s, imm, 1);
4909
0
    return target;
4910
0
}
4911
4912
/* Emit an insruction that implements a form by itself. */
4913
static JanetSlot opfunction(
4914
    JanetFopts opts,
4915
    JanetSlot *args,
4916
    int op,
4917
0
    Janet defaultArg2) {
4918
0
    JanetCompiler *c = opts.compiler;
4919
0
    int32_t len;
4920
0
    len = janet_v_count(args);
4921
0
    JanetSlot t;
4922
0
    if (len == 1) {
4923
0
        t = janetc_gettarget(opts);
4924
0
        janetc_emit_sss(c, op, t, args[0], janetc_cslot(defaultArg2), 1);
4925
0
        return t;
4926
0
    } else {
4927
        /* len == 2 */
4928
0
        t = janetc_gettarget(opts);
4929
0
        janetc_emit_sss(c, op, t, args[0], args[1], 1);
4930
0
    }
4931
0
    return t;
4932
0
}
4933
4934
/* Check if a value can be coerced to an immediate value */
4935
0
static int can_be_imm(Janet x, int8_t *out) {
4936
0
    if (!janet_checkint(x)) return 0;
4937
0
    int32_t integer = janet_unwrap_integer(x);
4938
0
    if (integer > INT8_MAX || integer < INT8_MIN) return 0;
4939
0
    *out = (int8_t) integer;
4940
0
    return 1;
4941
0
}
4942
4943
/* Check if a slot can be coerced to an immediate value */
4944
0
static int can_slot_be_imm(JanetSlot s, int8_t *out) {
4945
0
    if (!(s.flags & JANET_SLOT_CONSTANT)) return 0;
4946
0
    return can_be_imm(s.constant, out);
4947
0
}
4948
4949
/* Emit a series of instructions instead of a function call to a math op */
4950
static JanetSlot opreduce(
4951
    JanetFopts opts,
4952
    JanetSlot *args,
4953
    int op,
4954
    int opim,
4955
    Janet nullary,
4956
0
    Janet unary) {
4957
0
    JanetCompiler *c = opts.compiler;
4958
0
    int32_t i, len;
4959
0
    int8_t imm = 0;
4960
0
    len = janet_v_count(args);
4961
0
    JanetSlot t;
4962
0
    if (len == 0) {
4963
0
        return janetc_cslot(nullary);
4964
0
    } else if (len == 1) {
4965
0
        t = janetc_gettarget(opts);
4966
        /* Special case subtract to be times -1 */
4967
0
        if (op == JOP_SUBTRACT) {
4968
0
            janetc_emit_ssi(c, JOP_MULTIPLY_IMMEDIATE, t, args[0], -1, 1);
4969
0
        } else {
4970
0
            janetc_emit_sss(c, op, t, janetc_cslot(unary), args[0], 1);
4971
0
        }
4972
0
        return t;
4973
0
    }
4974
0
    t = janetc_gettarget(opts);
4975
0
    if (opim && can_slot_be_imm(args[1], &imm)) {
4976
0
        janetc_emit_ssi(c, opim, t, args[0], imm, 1);
4977
0
    } else {
4978
0
        janetc_emit_sss(c, op, t, args[0], args[1], 1);
4979
0
    }
4980
0
    for (i = 2; i < len; i++) {
4981
0
        if (opim && can_slot_be_imm(args[i], &imm)) {
4982
0
            janetc_emit_ssi(c, opim, t, t, imm, 1);
4983
0
        } else {
4984
0
            janetc_emit_sss(c, op, t, t, args[i], 1);
4985
0
        }
4986
0
    }
4987
0
    return t;
4988
0
}
4989
4990
/* Function optimizers */
4991
4992
0
static JanetSlot do_propagate(JanetFopts opts, JanetSlot *args) {
4993
0
    return opreduce(opts, args, JOP_PROPAGATE, 0, janet_wrap_nil(), janet_wrap_nil());
4994
0
}
4995
0
static JanetSlot do_error(JanetFopts opts, JanetSlot *args) {
4996
0
    janetc_emit_s(opts.compiler, JOP_ERROR, args[0], 0);
4997
0
    return janetc_cslot(janet_wrap_nil());
4998
0
}
4999
0
static JanetSlot do_debug(JanetFopts opts, JanetSlot *args) {
5000
0
    (void)args;
5001
0
    int32_t len = janet_v_count(args);
5002
0
    JanetSlot t = janetc_gettarget(opts);
5003
0
    janetc_emit_ssu(opts.compiler, JOP_SIGNAL, t,
5004
0
                    (len == 1) ? args[0] : janetc_cslot(janet_wrap_nil()),
5005
0
                    JANET_SIGNAL_DEBUG,
5006
0
                    1);
5007
0
    return t;
5008
0
}
5009
0
static JanetSlot do_in(JanetFopts opts, JanetSlot *args) {
5010
0
    return opreduce(opts, args, JOP_IN, 0, janet_wrap_nil(), janet_wrap_nil());
5011
0
}
5012
0
static JanetSlot do_get(JanetFopts opts, JanetSlot *args) {
5013
0
    if (janet_v_count(args) == 3) {
5014
0
        JanetCompiler *c = opts.compiler;
5015
0
        JanetSlot t = janetc_gettarget(opts);
5016
0
        int target_is_default = janetc_sequal(t, args[2]);
5017
0
        JanetSlot dflt_slot = args[2];
5018
0
        if (target_is_default) {
5019
0
            dflt_slot = janetc_farslot(c);
5020
0
            janetc_copy(c, dflt_slot, t);
5021
0
        }
5022
0
        janetc_emit_sss(c, JOP_GET, t, args[0], args[1], 1);
5023
0
        int32_t label = janetc_emit_si(c, JOP_JUMP_IF_NOT_NIL, t, 0, 0);
5024
0
        janetc_copy(c, t, dflt_slot);
5025
0
        if (target_is_default) janetc_freeslot(c, dflt_slot);
5026
0
        int32_t current = janet_v_count(c->buffer);
5027
0
        c->buffer[label] |= (current - label) << 16;
5028
0
        return t;
5029
0
    } else {
5030
0
        return opreduce(opts, args, JOP_GET, 0, janet_wrap_nil(), janet_wrap_nil());
5031
0
    }
5032
0
}
5033
0
static JanetSlot do_next(JanetFopts opts, JanetSlot *args) {
5034
0
    return opfunction(opts, args, JOP_NEXT, janet_wrap_nil());
5035
0
}
5036
0
static JanetSlot do_cmp(JanetFopts opts, JanetSlot *args) {
5037
0
    return opreduce(opts, args, JOP_COMPARE, 0, janet_wrap_nil(), janet_wrap_nil());
5038
0
}
5039
0
static JanetSlot do_put(JanetFopts opts, JanetSlot *args) {
5040
0
    if (opts.flags & JANET_FOPTS_DROP) {
5041
0
        janetc_emit_sss(opts.compiler, JOP_PUT, args[0], args[1], args[2], 0);
5042
0
        return janetc_cslot(janet_wrap_nil());
5043
0
    } else {
5044
0
        JanetSlot t = janetc_gettarget(opts);
5045
0
        janetc_copy(opts.compiler, t, args[0]);
5046
0
        janetc_emit_sss(opts.compiler, JOP_PUT, t, args[1], args[2], 0);
5047
0
        return t;
5048
0
    }
5049
0
}
5050
0
static JanetSlot do_length(JanetFopts opts, JanetSlot *args) {
5051
0
    return genericSS(opts, JOP_LENGTH, args[0]);
5052
0
}
5053
0
static JanetSlot do_yield(JanetFopts opts, JanetSlot *args) {
5054
0
    if (janet_v_count(args) == 0) {
5055
0
        return genericSSI(opts, JOP_SIGNAL, janetc_cslot(janet_wrap_nil()), 3);
5056
0
    } else {
5057
0
        return genericSSI(opts, JOP_SIGNAL, args[0], 3);
5058
0
    }
5059
0
}
5060
0
static JanetSlot do_resume(JanetFopts opts, JanetSlot *args) {
5061
0
    return opfunction(opts, args, JOP_RESUME, janet_wrap_nil());
5062
0
}
5063
0
static JanetSlot do_cancel(JanetFopts opts, JanetSlot *args) {
5064
0
    return opfunction(opts, args, JOP_CANCEL, janet_wrap_nil());
5065
0
}
5066
0
static JanetSlot do_apply(JanetFopts opts, JanetSlot *args) {
5067
    /* Push phase */
5068
0
    JanetCompiler *c = opts.compiler;
5069
0
    int32_t i;
5070
0
    for (i = 1; i < janet_v_count(args) - 3; i += 3)
5071
0
        janetc_emit_sss(c, JOP_PUSH_3, args[i], args[i + 1], args[i + 2], 0);
5072
0
    if (i == janet_v_count(args) - 3)
5073
0
        janetc_emit_ss(c, JOP_PUSH_2, args[i], args[i + 1], 0);
5074
0
    else if (i == janet_v_count(args) - 2)
5075
0
        janetc_emit_s(c, JOP_PUSH, args[i], 0);
5076
    /* Push array phase */
5077
0
    janetc_emit_s(c, JOP_PUSH_ARRAY, janet_v_last(args), 0);
5078
    /* Call phase */
5079
0
    JanetSlot target;
5080
0
    if (opts.flags & JANET_FOPTS_TAIL) {
5081
0
        janetc_emit_s(c, JOP_TAILCALL, args[0], 0);
5082
0
        target = janetc_cslot(janet_wrap_nil());
5083
0
        target.flags |= JANET_SLOT_RETURNED;
5084
0
    } else {
5085
0
        target = janetc_gettarget(opts);
5086
0
        janetc_emit_ss(c, JOP_CALL, target, args[0], 1);
5087
0
    }
5088
0
    return target;
5089
0
}
5090
5091
/* Variadic operators specialization */
5092
5093
0
static JanetSlot do_add(JanetFopts opts, JanetSlot *args) {
5094
0
    return opreduce(opts, args, JOP_ADD, JOP_ADD_IMMEDIATE, janet_wrap_integer(0), janet_wrap_integer(0));
5095
0
}
5096
0
static JanetSlot do_sub(JanetFopts opts, JanetSlot *args) {
5097
0
    return opreduce(opts, args, JOP_SUBTRACT, JOP_SUBTRACT_IMMEDIATE, janet_wrap_integer(0), janet_wrap_integer(0));
5098
0
}
5099
0
static JanetSlot do_mul(JanetFopts opts, JanetSlot *args) {
5100
0
    return opreduce(opts, args, JOP_MULTIPLY, JOP_MULTIPLY_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5101
0
}
5102
0
static JanetSlot do_div(JanetFopts opts, JanetSlot *args) {
5103
0
    return opreduce(opts, args, JOP_DIVIDE, JOP_DIVIDE_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5104
0
}
5105
0
static JanetSlot do_divf(JanetFopts opts, JanetSlot *args) {
5106
0
    return opreduce(opts, args, JOP_DIVIDE_FLOOR, 0, janet_wrap_integer(1), janet_wrap_integer(1));
5107
0
}
5108
0
static JanetSlot do_modulo(JanetFopts opts, JanetSlot *args) {
5109
0
    return opreduce(opts, args, JOP_MODULO, 0, janet_wrap_integer(0), janet_wrap_integer(1));
5110
0
}
5111
0
static JanetSlot do_remainder(JanetFopts opts, JanetSlot *args) {
5112
0
    return opreduce(opts, args, JOP_REMAINDER, 0, janet_wrap_integer(0), janet_wrap_integer(1));
5113
0
}
5114
0
static JanetSlot do_band(JanetFopts opts, JanetSlot *args) {
5115
0
    return opreduce(opts, args, JOP_BAND, 0, janet_wrap_integer(-1), janet_wrap_integer(-1));
5116
0
}
5117
0
static JanetSlot do_bor(JanetFopts opts, JanetSlot *args) {
5118
0
    return opreduce(opts, args, JOP_BOR, 0, janet_wrap_integer(0), janet_wrap_integer(0));
5119
0
}
5120
0
static JanetSlot do_bxor(JanetFopts opts, JanetSlot *args) {
5121
0
    return opreduce(opts, args, JOP_BXOR, 0, janet_wrap_integer(0), janet_wrap_integer(0));
5122
0
}
5123
0
static JanetSlot do_lshift(JanetFopts opts, JanetSlot *args) {
5124
0
    return opreduce(opts, args, JOP_SHIFT_LEFT, JOP_SHIFT_LEFT_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5125
0
}
5126
0
static JanetSlot do_rshift(JanetFopts opts, JanetSlot *args) {
5127
0
    return opreduce(opts, args, JOP_SHIFT_RIGHT, JOP_SHIFT_RIGHT_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5128
0
}
5129
0
static JanetSlot do_rshiftu(JanetFopts opts, JanetSlot *args) {
5130
0
    return opreduce(opts, args, JOP_SHIFT_RIGHT_UNSIGNED, JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE, janet_wrap_integer(1), janet_wrap_integer(1));
5131
0
}
5132
0
static JanetSlot do_bnot(JanetFopts opts, JanetSlot *args) {
5133
0
    return genericSS(opts, JOP_BNOT, args[0]);
5134
0
}
5135
5136
/* Specialization for comparators */
5137
static JanetSlot compreduce(
5138
    JanetFopts opts,
5139
    JanetSlot *args,
5140
    int op,
5141
    int opim,
5142
0
    int invert) {
5143
0
    JanetCompiler *c = opts.compiler;
5144
0
    int32_t i, len;
5145
0
    int8_t imm = 0;
5146
0
    len = janet_v_count(args);
5147
0
    int32_t *labels = NULL;
5148
0
    JanetSlot t;
5149
0
    if (len < 2) {
5150
0
        return invert
5151
0
               ? janetc_cslot(janet_wrap_false())
5152
0
               : janetc_cslot(janet_wrap_true());
5153
0
    }
5154
0
    t = janetc_gettarget(opts);
5155
0
    for (i = 1; i < len; i++) {
5156
0
        if (opim && can_slot_be_imm(args[i], &imm)) {
5157
0
            janetc_emit_ssi(c, opim, t, args[i - 1], imm, 1);
5158
0
        } else {
5159
0
            janetc_emit_sss(c, op, t, args[i - 1], args[i], 1);
5160
0
        }
5161
0
        if (i != (len - 1)) {
5162
0
            int32_t label = janetc_emit_si(c, invert ? JOP_JUMP_IF : JOP_JUMP_IF_NOT, t, 0, 1);
5163
0
            janet_v_push(labels, label);
5164
0
        }
5165
0
    }
5166
0
    int32_t end = janet_v_count(c->buffer);
5167
0
    for (i = 0; i < janet_v_count(labels); i++) {
5168
0
        int32_t label = labels[i];
5169
0
        c->buffer[label] |= ((end - label) << 16);
5170
0
    }
5171
0
    janet_v_free(labels);
5172
0
    return t;
5173
0
}
5174
5175
0
static JanetSlot do_gt(JanetFopts opts, JanetSlot *args) {
5176
0
    return compreduce(opts, args, JOP_GREATER_THAN, JOP_GREATER_THAN_IMMEDIATE, 0);
5177
0
}
5178
0
static JanetSlot do_lt(JanetFopts opts, JanetSlot *args) {
5179
0
    return compreduce(opts, args, JOP_LESS_THAN, JOP_LESS_THAN_IMMEDIATE, 0);
5180
0
}
5181
0
static JanetSlot do_gte(JanetFopts opts, JanetSlot *args) {
5182
0
    return compreduce(opts, args, JOP_GREATER_THAN_EQUAL, 0, 0);
5183
0
}
5184
0
static JanetSlot do_lte(JanetFopts opts, JanetSlot *args) {
5185
0
    return compreduce(opts, args, JOP_LESS_THAN_EQUAL, 0, 0);
5186
0
}
5187
0
static JanetSlot do_eq(JanetFopts opts, JanetSlot *args) {
5188
0
    return compreduce(opts, args, JOP_EQUALS, JOP_EQUALS_IMMEDIATE, 0);
5189
0
}
5190
0
static JanetSlot do_neq(JanetFopts opts, JanetSlot *args) {
5191
0
    return compreduce(opts, args, JOP_NOT_EQUALS, JOP_NOT_EQUALS_IMMEDIATE, 1);
5192
0
}
5193
5194
/* Arranged by tag */
5195
static const JanetFunOptimizer optimizers[] = {
5196
    {maxarity1, do_debug},
5197
    {fixarity1, do_error},
5198
    {minarity2, do_apply},
5199
    {maxarity1, do_yield},
5200
    {arity1or2, do_resume},
5201
    {fixarity2, do_in},
5202
    {fixarity3, do_put},
5203
    {fixarity1, do_length},
5204
    {NULL, do_add},
5205
    {NULL, do_sub},
5206
    {NULL, do_mul},
5207
    {NULL, do_div},
5208
    {NULL, do_band},
5209
    {NULL, do_bor},
5210
    {NULL, do_bxor},
5211
    {NULL, do_lshift},
5212
    {NULL, do_rshift},
5213
    {NULL, do_rshiftu},
5214
    {fixarity1, do_bnot},
5215
    {NULL, do_gt},
5216
    {NULL, do_lt},
5217
    {NULL, do_gte},
5218
    {NULL, do_lte},
5219
    {NULL, do_eq},
5220
    {NULL, do_neq},
5221
    {fixarity2, do_propagate},
5222
    {arity2or3, do_get},
5223
    {arity1or2, do_next},
5224
    {NULL, do_modulo},
5225
    {NULL, do_remainder},
5226
    {fixarity2, do_cmp},
5227
    {fixarity2, do_cancel},
5228
    {NULL, do_divf}
5229
};
5230
5231
0
const JanetFunOptimizer *janetc_funopt(uint32_t flags) {
5232
0
    uint32_t tag = flags & JANET_FUNCDEF_FLAG_TAG;
5233
0
    if (tag == 0)
5234
0
        return NULL;
5235
0
    uint32_t index = tag - 1;
5236
0
    if (index >= (sizeof(optimizers) / sizeof(optimizers[0])))
5237
0
        return NULL;
5238
0
    return optimizers + index;
5239
0
}
5240
5241
5242
5243
/* src/core/compile.c */
5244
#line 0 "src/core/compile.c"
5245
5246
/*
5247
* Copyright (c) 2025 Calvin Rose
5248
*
5249
* Permission is hereby granted, free of charge, to any person obtaining a copy
5250
* of this software and associated documentation files (the "Software"), to
5251
* deal in the Software without restriction, including without limitation the
5252
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
5253
* sell copies of the Software, and to permit persons to whom the Software is
5254
* furnished to do so, subject to the following conditions:
5255
*
5256
* The above copyright notice and this permission notice shall be included in
5257
* all copies or substantial portions of the Software.
5258
*
5259
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
5260
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
5261
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
5262
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
5263
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5264
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
5265
* IN THE SOFTWARE.
5266
*/
5267
5268
#ifndef JANET_AMALG
5269
#include "features.h"
5270
#include <janet.h>
5271
#include "compile.h"
5272
#include "emit.h"
5273
#include "vector.h"
5274
#include "util.h"
5275
#include "state.h"
5276
#endif
5277
5278
0
JanetFopts janetc_fopts_default(JanetCompiler *c) {
5279
0
    JanetFopts ret;
5280
0
    ret.compiler = c;
5281
0
    ret.flags = 0;
5282
0
    ret.hint = janetc_cslot(janet_wrap_nil());
5283
0
    return ret;
5284
0
}
5285
5286
/* Throw an error with a janet string. */
5287
0
void janetc_error(JanetCompiler *c, const uint8_t *m) {
5288
    /* Don't override first error */
5289
0
    if (c->result.status == JANET_COMPILE_ERROR) {
5290
0
        return;
5291
0
    }
5292
0
    c->result.status = JANET_COMPILE_ERROR;
5293
0
    c->result.error = m;
5294
0
}
5295
5296
/* Throw an error with a message in a cstring */
5297
0
void janetc_cerror(JanetCompiler *c, const char *m) {
5298
0
    janetc_error(c, janet_cstring(m));
5299
0
}
5300
5301
static const char *janet_lint_level_names[] = {
5302
    "relaxed",
5303
    "normal",
5304
    "strict"
5305
};
5306
5307
/* Emit compiler linter messages */
5308
0
void janetc_lintf(JanetCompiler *c, JanetCompileLintLevel level, const char *format, ...) {
5309
0
    if (NULL != c->lints) {
5310
        /* format message */
5311
0
        va_list args;
5312
0
        JanetBuffer buffer;
5313
0
        int32_t len = 0;
5314
0
        while (format[len]) len++;
5315
0
        janet_buffer_init(&buffer, len);
5316
0
        va_start(args, format);
5317
0
        janet_formatbv(&buffer, format, args);
5318
0
        va_end(args);
5319
0
        const uint8_t *str = janet_string(buffer.data, buffer.count);
5320
0
        janet_buffer_deinit(&buffer);
5321
        /* construct linting payload */
5322
0
        Janet *payload = janet_tuple_begin(4);
5323
0
        payload[0] = janet_ckeywordv(janet_lint_level_names[level]);
5324
0
        payload[1] = c->current_mapping.line == -1 ? janet_wrap_nil() : janet_wrap_integer(c->current_mapping.line);
5325
0
        payload[2] = c->current_mapping.column == -1 ? janet_wrap_nil() : janet_wrap_integer(c->current_mapping.column);
5326
0
        payload[3] = janet_wrap_string(str);
5327
0
        janet_array_push(c->lints, janet_wrap_tuple(janet_tuple_end(payload)));
5328
0
    }
5329
0
}
5330
5331
/* Free a slot */
5332
0
void janetc_freeslot(JanetCompiler *c, JanetSlot s) {
5333
0
    if (s.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF | JANET_SLOT_NAMED)) return;
5334
0
    if (s.envindex >= 0) return;
5335
0
    janetc_regalloc_free(&c->scope->ra, s.index);
5336
0
}
5337
5338
/* Add a slot to a scope with a symbol associated with it (def or var). */
5339
0
void janetc_nameslot(JanetCompiler *c, const uint8_t *sym, JanetSlot s) {
5340
0
    SymPair sp;
5341
0
    int32_t cnt = janet_v_count(c->buffer);
5342
0
    sp.sym = sym;
5343
0
    sp.sym2 = sym;
5344
0
    sp.slot = s;
5345
0
    sp.keep = 0;
5346
0
    sp.slot.flags |= JANET_SLOT_NAMED;
5347
0
    sp.birth_pc = cnt ? cnt - 1 : 0;
5348
0
    sp.death_pc = UINT32_MAX;
5349
0
    janet_v_push(c->scope->syms, sp);
5350
0
}
5351
5352
/* Create a slot with a constant */
5353
0
JanetSlot janetc_cslot(Janet x) {
5354
0
    JanetSlot ret;
5355
0
    ret.flags = (1 << janet_type(x)) | JANET_SLOT_CONSTANT;
5356
0
    ret.index = -1;
5357
0
    ret.constant = x;
5358
0
    ret.envindex = -1;
5359
0
    return ret;
5360
0
}
5361
5362
/* Get a local slot */
5363
0
JanetSlot janetc_farslot(JanetCompiler *c) {
5364
0
    JanetSlot ret;
5365
0
    ret.flags = JANET_SLOTTYPE_ANY;
5366
0
    ret.index = janetc_allocfar(c);
5367
0
    ret.constant = janet_wrap_nil();
5368
0
    ret.envindex = -1;
5369
0
    return ret;
5370
0
}
5371
5372
/* Enter a new scope */
5373
0
void janetc_scope(JanetScope *s, JanetCompiler *c, int flags, const char *name) {
5374
0
    JanetScope scope;
5375
0
    scope.name = name;
5376
0
    scope.child = NULL;
5377
0
    scope.consts = NULL;
5378
0
    scope.syms = NULL;
5379
0
    scope.envs = NULL;
5380
0
    scope.defs = NULL;
5381
0
    scope.bytecode_start = janet_v_count(c->buffer);
5382
0
    scope.flags = flags;
5383
0
    scope.parent = c->scope;
5384
0
    janetc_regalloc_init(&scope.ua);
5385
    /* Inherit slots */
5386
0
    if ((!(flags & JANET_SCOPE_FUNCTION)) && c->scope) {
5387
0
        janetc_regalloc_clone(&scope.ra, &(c->scope->ra));
5388
0
    } else {
5389
0
        janetc_regalloc_init(&scope.ra);
5390
0
    }
5391
    /* Link parent and child and update pointer */
5392
0
    if (c->scope)
5393
0
        c->scope->child = s;
5394
0
    c->scope = s;
5395
0
    *s = scope;
5396
0
}
5397
5398
/* Leave a scope. */
5399
0
void janetc_popscope(JanetCompiler *c) {
5400
0
    JanetScope *oldscope = c->scope;
5401
0
    JanetScope *newscope = oldscope->parent;
5402
    /* Move free slots to parent scope if not a new function.
5403
     * We need to know the total number of slots used when compiling the function. */
5404
0
    if (!(oldscope->flags & (JANET_SCOPE_FUNCTION | JANET_SCOPE_UNUSED)) && newscope) {
5405
        /* Parent scopes inherit child's closure flag. Needed
5406
         * for while loops. (if a while loop creates a closure, it
5407
         * is compiled to a tail recursive iife) */
5408
0
        if (oldscope->flags & JANET_SCOPE_CLOSURE) {
5409
0
            newscope->flags |= JANET_SCOPE_CLOSURE;
5410
0
        }
5411
0
        if (newscope->ra.max < oldscope->ra.max) {
5412
0
            newscope->ra.max = oldscope->ra.max;
5413
0
        }
5414
5415
        /* Keep upvalue slots and symbols for debugging. */
5416
0
        for (int32_t i = 0; i < janet_v_count(oldscope->syms); i++) {
5417
0
            SymPair pair = oldscope->syms[i];
5418
            /* The variable should not be lexically accessible */
5419
0
            pair.sym = NULL;
5420
0
            if (pair.death_pc == UINT32_MAX) {
5421
0
                pair.death_pc = (uint32_t) janet_v_count(c->buffer);
5422
0
            }
5423
0
            if (pair.keep) {
5424
                /* The variable should also not be included in the locals */
5425
0
                pair.sym2 = NULL;
5426
0
                janetc_regalloc_touch(&newscope->ra, pair.slot.index);
5427
0
            }
5428
0
            janet_v_push(newscope->syms, pair);
5429
0
        }
5430
0
    }
5431
5432
    /* Free the old scope */
5433
0
    janet_v_free(oldscope->consts);
5434
0
    janet_v_free(oldscope->syms);
5435
0
    janet_v_free(oldscope->envs);
5436
0
    janet_v_free(oldscope->defs);
5437
0
    janetc_regalloc_deinit(&oldscope->ra);
5438
0
    janetc_regalloc_deinit(&oldscope->ua);
5439
    /* Update pointer */
5440
0
    if (newscope)
5441
0
        newscope->child = NULL;
5442
0
    c->scope = newscope;
5443
0
}
5444
5445
/* Leave a scope but keep a slot allocated. */
5446
0
void janetc_popscope_keepslot(JanetCompiler *c, JanetSlot retslot) {
5447
0
    JanetScope *scope;
5448
0
    janetc_popscope(c);
5449
0
    scope = c->scope;
5450
0
    if (scope && retslot.envindex < 0 && retslot.index >= 0) {
5451
0
        janetc_regalloc_touch(&scope->ra, retslot.index);
5452
0
    }
5453
0
}
5454
5455
static int lookup_missing(
5456
    JanetCompiler *c,
5457
    const uint8_t *sym,
5458
    JanetFunction *handler,
5459
0
    JanetBinding *out) {
5460
0
    int32_t minar = handler->def->min_arity;
5461
0
    int32_t maxar = handler->def->max_arity;
5462
0
    if (minar > 1 || maxar < 1) {
5463
0
        janetc_error(c, janet_cstring("missing symbol lookup handler must take 1 argument"));
5464
0
        return 0;
5465
0
    }
5466
0
    Janet args[1] = { janet_wrap_symbol(sym) };
5467
0
    JanetFiber *fiberp = janet_fiber(handler, 64, 1, args);
5468
0
    if (NULL == fiberp) {
5469
0
        janetc_error(c, janet_cstring("failed to call missing symbol lookup handler"));
5470
0
        return 0;
5471
0
    }
5472
0
    fiberp->env = c->env;
5473
0
    int lock = janet_gclock();
5474
0
    Janet tempOut;
5475
0
    JanetSignal status = janet_continue(fiberp, janet_wrap_nil(), &tempOut);
5476
0
    janet_gcunlock(lock);
5477
0
    if (status != JANET_SIGNAL_OK) {
5478
0
        janetc_error(c, janet_formatc("(lookup) %V", tempOut));
5479
0
        return 0;
5480
0
    }
5481
5482
    /* Convert return value as entry. */
5483
    /* Alternative could use janet_resolve_ext(c->env, sym) to read result from environment. */
5484
0
    *out = janet_binding_from_entry(tempOut);
5485
0
    return 1;
5486
0
}
5487
5488
/* Allow searching for symbols. Return information about the symbol */
5489
JanetSlot janetc_resolve(
5490
    JanetCompiler *c,
5491
0
    const uint8_t *sym) {
5492
5493
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
5494
0
    JanetScope *scope = c->scope;
5495
0
    SymPair *pair;
5496
0
    int foundlocal = 1;
5497
0
    int unused = 0;
5498
5499
    /* Search scopes for symbol, starting from top */
5500
0
    while (scope) {
5501
0
        int32_t i, len;
5502
0
        if (scope->flags & JANET_SCOPE_UNUSED)
5503
0
            unused = 1;
5504
0
        len = janet_v_count(scope->syms);
5505
        /* Search in reverse order */
5506
0
        for (i = len - 1; i >= 0; i--) {
5507
0
            pair = scope->syms + i;
5508
0
            if (pair->sym == sym) {
5509
0
                ret = pair->slot;
5510
0
                goto found;
5511
0
            }
5512
0
        }
5513
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
5514
0
            foundlocal = 0;
5515
0
        scope = scope->parent;
5516
0
    }
5517
5518
    /* Symbol not found - check for global */
5519
0
    {
5520
0
        JanetBinding binding = janet_resolve_ext(c->env, sym);
5521
0
        if (binding.type == JANET_BINDING_NONE) {
5522
0
            Janet handler = janet_table_get(c->env, janet_ckeywordv("missing-symbol"));
5523
0
            switch (janet_type(handler)) {
5524
0
                case JANET_NIL:
5525
0
                    break;
5526
0
                case JANET_FUNCTION:
5527
0
                    if (!lookup_missing(c, sym, janet_unwrap_function(handler), &binding))
5528
0
                        return janetc_cslot(janet_wrap_nil());
5529
0
                    break;
5530
0
                default:
5531
0
                    janetc_error(c, janet_formatc("invalid lookup handler %V", handler));
5532
0
                    return janetc_cslot(janet_wrap_nil());
5533
0
            }
5534
0
        }
5535
5536
0
        switch (binding.type) {
5537
0
            default:
5538
0
            case JANET_BINDING_NONE:
5539
0
                janetc_error(c, janet_formatc("unknown symbol %q", janet_wrap_symbol(sym)));
5540
0
                return janetc_cslot(janet_wrap_nil());
5541
0
            case JANET_BINDING_DEF:
5542
0
            case JANET_BINDING_MACRO: /* Macro should function like defs when not in calling pos */
5543
0
                ret = janetc_cslot(binding.value);
5544
0
                break;
5545
0
            case JANET_BINDING_DYNAMIC_DEF:
5546
0
            case JANET_BINDING_DYNAMIC_MACRO:
5547
0
                ret = janetc_cslot(binding.value);
5548
0
                ret.flags |= JANET_SLOT_REF | JANET_SLOT_NAMED | JANET_SLOTTYPE_ANY;
5549
0
                ret.flags &= ~JANET_SLOT_CONSTANT;
5550
0
                break;
5551
0
            case JANET_BINDING_VAR: {
5552
0
                ret = janetc_cslot(binding.value);
5553
0
                ret.flags |= JANET_SLOT_REF | JANET_SLOT_NAMED | JANET_SLOT_MUTABLE | JANET_SLOTTYPE_ANY;
5554
0
                ret.flags &= ~JANET_SLOT_CONSTANT;
5555
0
                break;
5556
0
            }
5557
0
        }
5558
0
        JanetCompileLintLevel depLevel = JANET_C_LINT_RELAXED;
5559
0
        switch (binding.deprecation) {
5560
0
            case JANET_BINDING_DEP_NONE:
5561
0
                break;
5562
0
            case JANET_BINDING_DEP_RELAXED:
5563
0
                depLevel = JANET_C_LINT_RELAXED;
5564
0
                break;
5565
0
            case JANET_BINDING_DEP_NORMAL:
5566
0
                depLevel = JANET_C_LINT_NORMAL;
5567
0
                break;
5568
0
            case JANET_BINDING_DEP_STRICT:
5569
0
                depLevel = JANET_C_LINT_STRICT;
5570
0
                break;
5571
0
        }
5572
0
        if (binding.deprecation != JANET_BINDING_DEP_NONE) {
5573
0
            janetc_lintf(c, depLevel, "%q is deprecated", janet_wrap_symbol(sym));
5574
0
        }
5575
0
        return ret;
5576
0
    }
5577
5578
    /* Symbol was found */
5579
0
found:
5580
5581
    /* Constants can be returned immediately (they are stateless) */
5582
0
    if (ret.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF))
5583
0
        return ret;
5584
5585
    /* Unused references and locals shouldn't add captured envs. */
5586
0
    if (unused || foundlocal) {
5587
0
        ret.envindex = -1;
5588
0
        return ret;
5589
0
    }
5590
5591
    /* non-local scope needs to expose its environment */
5592
0
    JanetScope *original_scope = scope;
5593
0
    pair->keep = 1;
5594
0
    while (scope && !(scope->flags & JANET_SCOPE_FUNCTION))
5595
0
        scope = scope->parent;
5596
0
    janet_assert(scope, "invalid scopes");
5597
0
    scope->flags |= JANET_SCOPE_ENV;
5598
5599
    /* In the function scope, allocate the slot as an upvalue */
5600
0
    janetc_regalloc_touch(&scope->ua, ret.index);
5601
5602
    /* Iterate through child scopes and make sure environment is propagated */
5603
0
    scope = scope->child;
5604
5605
    /* Propagate env up to current scope */
5606
0
    int32_t envindex = -1;
5607
0
    while (scope) {
5608
0
        if (scope->flags & JANET_SCOPE_FUNCTION) {
5609
0
            int32_t j, len;
5610
0
            int scopefound = 0;
5611
            /* Check if scope already has env. If so, break */
5612
0
            len = janet_v_count(scope->envs);
5613
0
            for (j = 0; j < len; j++) {
5614
0
                if (scope->envs[j].envindex == envindex) {
5615
0
                    scopefound = 1;
5616
0
                    envindex = j;
5617
0
                    break;
5618
0
                }
5619
0
            }
5620
            /* Add the environment if it is not already referenced */
5621
0
            if (!scopefound) {
5622
0
                len = janet_v_count(scope->envs);
5623
0
                JanetEnvRef ref;
5624
0
                ref.envindex = envindex;
5625
0
                ref.scope = original_scope;
5626
0
                janet_v_push(scope->envs, ref);
5627
0
                envindex = len;
5628
0
            }
5629
0
        }
5630
0
        scope = scope->child;
5631
0
    }
5632
5633
0
    ret.envindex = envindex;
5634
0
    return ret;
5635
0
}
5636
5637
/* Generate the return instruction for a slot. */
5638
0
JanetSlot janetc_return(JanetCompiler *c, JanetSlot s) {
5639
0
    if (!(s.flags & JANET_SLOT_RETURNED)) {
5640
0
        if (s.flags & JANET_SLOT_CONSTANT && janet_checktype(s.constant, JANET_NIL))
5641
0
            janetc_emit(c, JOP_RETURN_NIL);
5642
0
        else
5643
0
            janetc_emit_s(c, JOP_RETURN, s, 0);
5644
0
        s.flags |= JANET_SLOT_RETURNED;
5645
0
    }
5646
0
    return s;
5647
0
}
5648
5649
/* Get a target slot for emitting an instruction. */
5650
0
JanetSlot janetc_gettarget(JanetFopts opts) {
5651
0
    JanetSlot slot;
5652
0
    if ((opts.flags & JANET_FOPTS_HINT) &&
5653
0
            (opts.hint.envindex < 0) &&
5654
0
            (opts.hint.index >= 0 && opts.hint.index <= 0xFF)) {
5655
0
        slot = opts.hint;
5656
0
    } else {
5657
0
        slot.envindex = -1;
5658
0
        slot.constant = janet_wrap_nil();
5659
0
        slot.flags = 0;
5660
0
        slot.index = janetc_allocfar(opts.compiler);
5661
0
    }
5662
0
    return slot;
5663
0
}
5664
5665
/* Get a bunch of slots for function arguments */
5666
0
JanetSlot *janetc_toslots(JanetCompiler *c, const Janet *vals, int32_t len) {
5667
0
    int32_t i;
5668
0
    JanetSlot *ret = NULL;
5669
0
    JanetFopts subopts = janetc_fopts_default(c);
5670
0
    subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
5671
0
    for (i = 0; i < len; i++) {
5672
0
        janet_v_push(ret, janetc_value(subopts, vals[i]));
5673
0
    }
5674
0
    return ret;
5675
0
}
5676
5677
/* Get a bunch of slots for function arguments */
5678
0
JanetSlot *janetc_toslotskv(JanetCompiler *c, Janet ds) {
5679
0
    JanetSlot *ret = NULL;
5680
0
    JanetFopts subopts = janetc_fopts_default(c);
5681
0
    subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
5682
0
    const JanetKV *kvs = NULL;
5683
0
    int32_t cap = 0, len = 0;
5684
0
    janet_dictionary_view(ds, &kvs, &len, &cap);
5685
0
    for (int32_t i = 0; i < cap; i++) {
5686
0
        if (janet_checktype(kvs[i].key, JANET_NIL)) continue;
5687
0
        janet_v_push(ret, janetc_value(subopts, kvs[i].key));
5688
0
        janet_v_push(ret, janetc_value(subopts, kvs[i].value));
5689
0
    }
5690
0
    return ret;
5691
0
}
5692
5693
/* Push slots loaded via janetc_toslots. Return the minimum number of slots pushed,
5694
 * or -1 - min_arity if there is a splice. (if there is no splice, min_arity is also
5695
 * the maximum possible arity). */
5696
0
int32_t janetc_pushslots(JanetCompiler *c, JanetSlot *slots) {
5697
0
    int32_t i;
5698
0
    int32_t count = janet_v_count(slots);
5699
0
    int32_t min_arity = 0;
5700
0
    int has_splice = 0;
5701
0
    for (i = 0; i < count;) {
5702
0
        if (slots[i].flags & JANET_SLOT_SPLICED) {
5703
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i], 0);
5704
0
            i++;
5705
0
            has_splice = 1;
5706
0
        } else if (i + 1 == count) {
5707
0
            janetc_emit_s(c, JOP_PUSH, slots[i], 0);
5708
0
            i++;
5709
0
            min_arity++;
5710
0
        } else if (slots[i + 1].flags & JANET_SLOT_SPLICED) {
5711
0
            janetc_emit_s(c, JOP_PUSH, slots[i], 0);
5712
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i + 1], 0);
5713
0
            i += 2;
5714
0
            min_arity++;
5715
0
            has_splice = 1;
5716
0
        } else if (i + 2 == count) {
5717
0
            janetc_emit_ss(c, JOP_PUSH_2, slots[i], slots[i + 1], 0);
5718
0
            i += 2;
5719
0
            min_arity += 2;
5720
0
        } else if (slots[i + 2].flags & JANET_SLOT_SPLICED) {
5721
0
            janetc_emit_ss(c, JOP_PUSH_2, slots[i], slots[i + 1], 0);
5722
0
            janetc_emit_s(c, JOP_PUSH_ARRAY, slots[i + 2], 0);
5723
0
            i += 3;
5724
0
            min_arity += 2;
5725
0
            has_splice = 1;
5726
0
        } else {
5727
0
            janetc_emit_sss(c, JOP_PUSH_3, slots[i], slots[i + 1], slots[i + 2], 0);
5728
0
            i += 3;
5729
0
            min_arity += 3;
5730
0
        }
5731
0
    }
5732
0
    return has_splice ? (-1 - min_arity) : min_arity;
5733
0
}
5734
5735
/* Check if a list of slots has any spliced slots */
5736
0
static int has_spliced(JanetSlot *slots) {
5737
0
    int32_t i;
5738
0
    for (i = 0; i < janet_v_count(slots); i++) {
5739
0
        if (slots[i].flags & JANET_SLOT_SPLICED)
5740
0
            return 1;
5741
0
    }
5742
0
    return 0;
5743
0
}
5744
5745
/* Free slots loaded via janetc_toslots */
5746
0
void janetc_freeslots(JanetCompiler *c, JanetSlot *slots) {
5747
0
    int32_t i;
5748
0
    for (i = 0; i < janet_v_count(slots); i++) {
5749
0
        janetc_freeslot(c, slots[i]);
5750
0
    }
5751
0
    janet_v_free(slots);
5752
0
}
5753
5754
/* Compile some code that will be thrown away. Used to ensure
5755
 * that dead code is well formed without including it in the final
5756
 * bytecode. */
5757
0
void janetc_throwaway(JanetFopts opts, Janet x) {
5758
0
    JanetCompiler *c = opts.compiler;
5759
0
    JanetScope unusedScope;
5760
0
    int32_t bufstart = janet_v_count(c->buffer);
5761
0
    int32_t mapbufstart = janet_v_count(c->mapbuffer);
5762
0
    janetc_scope(&unusedScope, c, JANET_SCOPE_UNUSED, "unusued");
5763
0
    janetc_value(opts, x);
5764
0
    janetc_lintf(c, JANET_C_LINT_STRICT, "dead code, consider removing %.2q", x);
5765
0
    janetc_popscope(c);
5766
0
    if (c->buffer) {
5767
0
        janet_v__cnt(c->buffer) = bufstart;
5768
0
        if (c->mapbuffer)
5769
0
            janet_v__cnt(c->mapbuffer) = mapbufstart;
5770
0
    }
5771
0
}
5772
5773
/* Compile a call or tailcall instruction */
5774
0
static JanetSlot janetc_call(JanetFopts opts, JanetSlot *slots, JanetSlot fun) {
5775
0
    JanetSlot retslot;
5776
0
    JanetCompiler *c = opts.compiler;
5777
0
    int specialized = 0;
5778
0
    if (fun.flags & JANET_SLOT_CONSTANT && !has_spliced(slots)) {
5779
0
        if (janet_checktype(fun.constant, JANET_FUNCTION)) {
5780
0
            JanetFunction *f = janet_unwrap_function(fun.constant);
5781
0
            const JanetFunOptimizer *o = janetc_funopt(f->def->flags);
5782
0
            if (o && (!o->can_optimize || o->can_optimize(opts, slots))) {
5783
0
                specialized = 1;
5784
0
                retslot = o->optimize(opts, slots);
5785
0
            }
5786
0
        }
5787
        /* TODO janet function inlining (no c functions)*/
5788
0
    }
5789
0
    if (!specialized) {
5790
0
        int32_t min_arity = janetc_pushslots(c, slots);
5791
        /* Check for provably incorrect function calls */
5792
0
        if (fun.flags & JANET_SLOT_CONSTANT) {
5793
5794
            /* Check for bad arity type if fun is a constant */
5795
0
            switch (janet_type(fun.constant)) {
5796
0
                case JANET_FUNCTION: {
5797
0
                    JanetFunction *f = janet_unwrap_function(fun.constant);
5798
0
                    int32_t min = f->def->min_arity;
5799
0
                    int32_t max = f->def->max_arity;
5800
0
                    if (min_arity < 0) {
5801
                        /* Call has splices */
5802
0
                        min_arity = -1 - min_arity;
5803
0
                        if (min_arity > max && max >= 0) {
5804
0
                            const uint8_t *es = janet_formatc(
5805
0
                                                    "%v expects at most %d argument%s, got at least %d",
5806
0
                                                    fun.constant, max, max == 1 ? "" : "s", min_arity);
5807
0
                            janetc_error(c, es);
5808
0
                        }
5809
0
                    } else {
5810
                        /* Call has no splices */
5811
0
                        if (min_arity > max && max >= 0) {
5812
0
                            const uint8_t *es = janet_formatc(
5813
0
                                                    "%v expects at most %d argument%s, got %d",
5814
0
                                                    fun.constant, max, max == 1 ? "" : "s", min_arity);
5815
0
                            janetc_error(c, es);
5816
0
                        }
5817
0
                        if (min_arity < min) {
5818
0
                            const uint8_t *es = janet_formatc(
5819
0
                                                    "%v expects at least %d argument%s, got %d",
5820
0
                                                    fun.constant, min, min == 1 ? "" : "s", min_arity);
5821
0
                            janetc_error(c, es);
5822
0
                        }
5823
0
                    }
5824
0
                }
5825
0
                break;
5826
0
                case JANET_CFUNCTION:
5827
0
                case JANET_ABSTRACT:
5828
0
                case JANET_NIL:
5829
0
                    break;
5830
0
                case JANET_KEYWORD:
5831
0
                    if (min_arity == 0) {
5832
0
                        const uint8_t *es = janet_formatc("%v expects at least 1 argument, got 0",
5833
0
                                                          fun.constant);
5834
0
                        janetc_error(c, es);
5835
0
                    }
5836
0
                    break;
5837
0
                default:
5838
0
                    if (min_arity > 1 || min_arity == 0) {
5839
0
                        const uint8_t *es = janet_formatc("%v expects 1 argument, got %d",
5840
0
                                                          fun.constant, min_arity);
5841
0
                        janetc_error(c, es);
5842
0
                    }
5843
0
                    if (min_arity < -2) {
5844
0
                        const uint8_t *es = janet_formatc("%v expects 1 argument, got at least %d",
5845
0
                                                          fun.constant, -1 - min_arity);
5846
0
                        janetc_error(c, es);
5847
0
                    }
5848
0
                    break;
5849
0
            }
5850
0
        }
5851
5852
0
        if ((opts.flags & JANET_FOPTS_TAIL) &&
5853
                /* Prevent top level tail calls for better errors */
5854
0
                !(c->scope->flags & JANET_SCOPE_TOP)) {
5855
0
            janetc_emit_s(c, JOP_TAILCALL, fun, 0);
5856
0
            retslot = janetc_cslot(janet_wrap_nil());
5857
0
            retslot.flags = JANET_SLOT_RETURNED;
5858
0
        } else {
5859
0
            retslot = janetc_gettarget(opts);
5860
0
            janetc_emit_ss(c, JOP_CALL, retslot, fun, 1);
5861
0
        }
5862
0
    }
5863
0
    janetc_freeslots(c, slots);
5864
0
    return retslot;
5865
0
}
5866
5867
0
static JanetSlot janetc_maker(JanetFopts opts, JanetSlot *slots, int op) {
5868
0
    JanetCompiler *c = opts.compiler;
5869
0
    JanetSlot retslot;
5870
5871
    /* Check if this structure is composed entirely of constants */
5872
0
    int can_inline = 1;
5873
0
    for (int32_t i = 0; i < janet_v_count(slots); i++) {
5874
0
        if (!(slots[i].flags & JANET_SLOT_CONSTANT) ||
5875
0
                (slots[i].flags & JANET_SLOT_SPLICED)) {
5876
0
            can_inline = 0;
5877
0
            break;
5878
0
        }
5879
0
    }
5880
5881
0
    if (can_inline && (op == JOP_MAKE_STRUCT)) {
5882
0
        JanetKV *st = janet_struct_begin(janet_v_count(slots) / 2);
5883
0
        for (int32_t i = 0; i < janet_v_count(slots); i += 2) {
5884
0
            Janet k = slots[i].constant;
5885
0
            Janet v = slots[i + 1].constant;
5886
0
            janet_struct_put(st, k, v);
5887
0
        }
5888
0
        retslot = janetc_cslot(janet_wrap_struct(janet_struct_end(st)));
5889
0
        janetc_freeslots(c, slots);
5890
0
    } else if (can_inline && (op == JOP_MAKE_TUPLE)) {
5891
0
        Janet *tup = janet_tuple_begin(janet_v_count(slots));
5892
0
        for (int32_t i = 0; i < janet_v_count(slots); i++) {
5893
0
            tup[i] = slots[i].constant;
5894
0
        }
5895
0
        retslot = janetc_cslot(janet_wrap_tuple(janet_tuple_end(tup)));
5896
0
        janetc_freeslots(c, slots);
5897
0
    } else {
5898
0
        janetc_pushslots(c, slots);
5899
0
        janetc_freeslots(c, slots);
5900
0
        retslot = janetc_gettarget(opts);
5901
0
        janetc_emit_s(c, op, retslot, 1);
5902
0
    }
5903
5904
0
    return retslot;
5905
0
}
5906
5907
0
static JanetSlot janetc_array(JanetFopts opts, Janet x) {
5908
0
    JanetCompiler *c = opts.compiler;
5909
0
    JanetArray *a = janet_unwrap_array(x);
5910
0
    return janetc_maker(opts,
5911
0
                        janetc_toslots(c, a->data, a->count),
5912
0
                        JOP_MAKE_ARRAY);
5913
0
}
5914
5915
0
static JanetSlot janetc_tuple(JanetFopts opts, Janet x) {
5916
0
    JanetCompiler *c = opts.compiler;
5917
0
    const Janet *t = janet_unwrap_tuple(x);
5918
0
    return janetc_maker(opts,
5919
0
                        janetc_toslots(c, t, janet_tuple_length(t)),
5920
0
                        JOP_MAKE_TUPLE);
5921
0
}
5922
5923
0
static JanetSlot janetc_tablector(JanetFopts opts, Janet x, int op) {
5924
0
    JanetCompiler *c = opts.compiler;
5925
0
    return janetc_maker(opts,
5926
0
                        janetc_toslotskv(c, x),
5927
0
                        op);
5928
0
}
5929
5930
0
static JanetSlot janetc_bufferctor(JanetFopts opts, Janet x) {
5931
0
    JanetCompiler *c = opts.compiler;
5932
0
    JanetBuffer *b = janet_unwrap_buffer(x);
5933
0
    Janet onearg = janet_stringv(b->data, b->count);
5934
0
    return janetc_maker(opts,
5935
0
                        janetc_toslots(c, &onearg, 1),
5936
0
                        JOP_MAKE_BUFFER);
5937
0
}
5938
5939
/* Expand a macro one time. Also get the special form compiler if we
5940
 * find that instead. */
5941
static int macroexpand1(
5942
    JanetCompiler *c,
5943
    Janet x,
5944
    Janet *out,
5945
0
    const JanetSpecial **spec) {
5946
0
    if (!janet_checktype(x, JANET_TUPLE))
5947
0
        return 0;
5948
0
    const Janet *form = janet_unwrap_tuple(x);
5949
0
    if (janet_tuple_length(form) == 0)
5950
0
        return 0;
5951
    /* Source map - only set when we get a tuple */
5952
0
    if (janet_tuple_sm_line(form) >= 0) {
5953
0
        c->current_mapping.line = janet_tuple_sm_line(form);
5954
0
        c->current_mapping.column = janet_tuple_sm_column(form);
5955
0
    }
5956
    /* Bracketed tuples are not specials or macros! */
5957
0
    if (janet_tuple_flag(form) & JANET_TUPLE_FLAG_BRACKETCTOR)
5958
0
        return 0;
5959
0
    if (!janet_checktype(form[0], JANET_SYMBOL))
5960
0
        return 0;
5961
0
    const uint8_t *name = janet_unwrap_symbol(form[0]);
5962
0
    const JanetSpecial *s = janetc_special(name);
5963
0
    if (s) {
5964
0
        *spec = s;
5965
0
        return 0;
5966
0
    }
5967
0
    Janet macroval;
5968
0
    JanetBindingType btype = janet_resolve(c->env, name, &macroval);
5969
0
    if (!(btype == JANET_BINDING_MACRO || btype == JANET_BINDING_DYNAMIC_MACRO) ||
5970
0
            !janet_checktype(macroval, JANET_FUNCTION))
5971
0
        return 0;
5972
5973
    /* Evaluate macro */
5974
0
    JanetFunction *macro = janet_unwrap_function(macroval);
5975
0
    int32_t arity = janet_tuple_length(form) - 1;
5976
0
    JanetFiber *fiberp = janet_fiber(macro, 64, arity, form + 1);
5977
0
    if (NULL == fiberp) {
5978
0
        int32_t minar = macro->def->min_arity;
5979
0
        int32_t maxar = macro->def->max_arity;
5980
0
        const uint8_t *es = NULL;
5981
0
        if (minar >= 0 && arity < minar)
5982
0
            es = janet_formatc("macro arity mismatch, expected at least %d, got %d", minar, arity);
5983
0
        if (maxar >= 0 && arity > maxar)
5984
0
            es = janet_formatc("macro arity mismatch, expected at most %d, got %d", maxar, arity);
5985
0
        c->result.macrofiber = NULL;
5986
0
        janetc_error(c, es);
5987
0
        return 0;
5988
0
    }
5989
    /* Set env */
5990
0
    fiberp->env = c->env;
5991
0
    int lock = janet_gclock();
5992
0
    Janet mf_kw = janet_ckeywordv("macro-form");
5993
0
    janet_table_put(c->env, mf_kw, x);
5994
0
    Janet ml_kw = janet_ckeywordv("macro-lints");
5995
0
    if (c->lints) {
5996
0
        janet_table_put(c->env, ml_kw, janet_wrap_array(c->lints));
5997
0
    }
5998
0
    Janet tempOut;
5999
0
    JanetSignal status = janet_continue(fiberp, janet_wrap_nil(), &tempOut);
6000
0
    janet_table_put(c->env, mf_kw, janet_wrap_nil());
6001
0
    janet_table_put(c->env, ml_kw, janet_wrap_nil());
6002
0
    janet_gcunlock(lock);
6003
0
    if (status != JANET_SIGNAL_OK) {
6004
0
        const uint8_t *es = janet_formatc("(macro) %V", tempOut);
6005
0
        c->result.macrofiber = fiberp;
6006
0
        janetc_error(c, es);
6007
0
        return 0;
6008
0
    } else {
6009
0
        *out = tempOut;
6010
0
    }
6011
6012
0
    return 1;
6013
0
}
6014
6015
/* Compile a single value */
6016
0
JanetSlot janetc_value(JanetFopts opts, Janet x) {
6017
0
    JanetSlot ret;
6018
0
    JanetCompiler *c = opts.compiler;
6019
0
    JanetSourceMapping last_mapping = c->current_mapping;
6020
0
    c->recursion_guard--;
6021
6022
    /* Guard against previous errors and unbounded recursion */
6023
0
    if (c->result.status == JANET_COMPILE_ERROR) return janetc_cslot(janet_wrap_nil());
6024
0
    if (c->recursion_guard <= 0) {
6025
0
        janetc_cerror(c, "recursed too deeply");
6026
0
        return janetc_cslot(janet_wrap_nil());
6027
0
    }
6028
6029
    /* Macro expand. Also gets possible special form and
6030
     * refines source mapping cursor if possible. */
6031
0
    const JanetSpecial *spec = NULL;
6032
0
    int macroi = JANET_MAX_MACRO_EXPAND;
6033
0
    while (macroi &&
6034
0
            c->result.status != JANET_COMPILE_ERROR &&
6035
0
            macroexpand1(c, x, &x, &spec))
6036
0
        macroi--;
6037
0
    if (macroi == 0) {
6038
0
        janetc_cerror(c, "recursed too deeply in macro expansion");
6039
0
        return janetc_cslot(janet_wrap_nil());
6040
0
    }
6041
6042
    /* Special forms */
6043
0
    if (spec) {
6044
0
        const Janet *tup = janet_unwrap_tuple(x);
6045
0
        ret = spec->compile(opts, janet_tuple_length(tup) - 1, tup + 1);
6046
0
    } else {
6047
0
        switch (janet_type(x)) {
6048
0
            case JANET_TUPLE: {
6049
0
                JanetFopts subopts = janetc_fopts_default(c);
6050
0
                const Janet *tup = janet_unwrap_tuple(x);
6051
                /* Empty tuple is tuple literal */
6052
0
                if (janet_tuple_length(tup) == 0) {
6053
0
                    ret = janetc_cslot(janet_wrap_tuple(janet_tuple_n(NULL, 0)));
6054
0
                } else if (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR) { /* [] tuples are not function call */
6055
0
                    ret = janetc_tuple(opts, x);
6056
0
                } else {
6057
0
                    JanetSlot head = janetc_value(subopts, tup[0]);
6058
0
                    subopts.flags = JANET_FUNCTION | JANET_CFUNCTION;
6059
0
                    ret = janetc_call(opts, janetc_toslots(c, tup + 1, janet_tuple_length(tup) - 1), head);
6060
0
                    janetc_freeslot(c, head);
6061
0
                }
6062
0
                ret.flags &= ~JANET_SLOT_SPLICED;
6063
0
            }
6064
0
            break;
6065
0
            case JANET_SYMBOL:
6066
0
                ret = janetc_resolve(c, janet_unwrap_symbol(x));
6067
0
                break;
6068
0
            case JANET_ARRAY:
6069
0
                ret = janetc_array(opts, x);
6070
0
                break;
6071
0
            case JANET_STRUCT:
6072
0
                ret = janetc_tablector(opts, x, JOP_MAKE_STRUCT);
6073
0
                break;
6074
0
            case JANET_TABLE:
6075
0
                ret = janetc_tablector(opts, x, JOP_MAKE_TABLE);
6076
0
                break;
6077
0
            case JANET_BUFFER:
6078
0
                ret = janetc_bufferctor(opts, x);
6079
0
                break;
6080
0
            default:
6081
0
                ret = janetc_cslot(x);
6082
0
                break;
6083
0
        }
6084
0
    }
6085
6086
0
    if (c->result.status == JANET_COMPILE_ERROR)
6087
0
        return janetc_cslot(janet_wrap_nil());
6088
0
    if (opts.flags & JANET_FOPTS_TAIL)
6089
0
        ret = janetc_return(c, ret);
6090
0
    if (opts.flags & JANET_FOPTS_HINT) {
6091
0
        janetc_copy(c, opts.hint, ret);
6092
0
        ret = opts.hint;
6093
0
    }
6094
0
    c->current_mapping = last_mapping;
6095
0
    c->recursion_guard++;
6096
0
    return ret;
6097
0
}
6098
6099
/* Add function flags to janet functions */
6100
0
void janet_def_addflags(JanetFuncDef *def) {
6101
0
    int32_t set_flags = 0;
6102
0
    int32_t unset_flags = 0;
6103
    /* pos checks */
6104
0
    if (def->name)            set_flags |= JANET_FUNCDEF_FLAG_HASNAME;
6105
0
    if (def->source)          set_flags |= JANET_FUNCDEF_FLAG_HASSOURCE;
6106
0
    if (def->defs)            set_flags |= JANET_FUNCDEF_FLAG_HASDEFS;
6107
0
    if (def->environments)    set_flags |= JANET_FUNCDEF_FLAG_HASENVS;
6108
0
    if (def->sourcemap)       set_flags |= JANET_FUNCDEF_FLAG_HASSOURCEMAP;
6109
0
    if (def->closure_bitset)  set_flags |= JANET_FUNCDEF_FLAG_HASCLOBITSET;
6110
    /* negative checks */
6111
0
    if (!def->name)           unset_flags |= JANET_FUNCDEF_FLAG_HASNAME;
6112
0
    if (!def->source)         unset_flags |= JANET_FUNCDEF_FLAG_HASSOURCE;
6113
0
    if (!def->defs)           unset_flags |= JANET_FUNCDEF_FLAG_HASDEFS;
6114
0
    if (!def->environments)   unset_flags |= JANET_FUNCDEF_FLAG_HASENVS;
6115
0
    if (!def->sourcemap)      unset_flags |= JANET_FUNCDEF_FLAG_HASSOURCEMAP;
6116
0
    if (!def->closure_bitset) unset_flags |= JANET_FUNCDEF_FLAG_HASCLOBITSET;
6117
    /* Update flags */
6118
0
    def->flags |= set_flags;
6119
0
    def->flags &= ~unset_flags;
6120
0
}
6121
6122
/* Compile a funcdef */
6123
/* Once the various other settings of the FuncDef have been tweaked,
6124
 * call janet_def_addflags to set the proper flags for the funcdef */
6125
0
JanetFuncDef *janetc_pop_funcdef(JanetCompiler *c) {
6126
0
    JanetScope *scope = c->scope;
6127
0
    JanetFuncDef *def = janet_funcdef_alloc();
6128
0
    def->slotcount = scope->ra.max + 1;
6129
6130
0
    janet_assert(scope->flags & JANET_SCOPE_FUNCTION, "expected function scope");
6131
6132
    /* Copy envs */
6133
0
    def->environments_length = janet_v_count(scope->envs);
6134
0
    def->environments = janet_malloc(sizeof(int32_t) * def->environments_length);
6135
0
    for (int32_t i = 0; i < def->environments_length; i++) {
6136
0
        def->environments[i] = scope->envs[i].envindex;
6137
0
    }
6138
6139
0
    def->constants_length = janet_v_count(scope->consts);
6140
0
    def->constants = janet_v_flatten(scope->consts);
6141
6142
0
    def->defs_length = janet_v_count(scope->defs);
6143
0
    def->defs = janet_v_flatten(scope->defs);
6144
6145
    /* Copy bytecode (only last chunk) */
6146
0
    def->bytecode_length = janet_v_count(c->buffer) - scope->bytecode_start;
6147
0
    if (def->bytecode_length) {
6148
0
        size_t s = sizeof(int32_t) * (size_t) def->bytecode_length;
6149
0
        def->bytecode = janet_malloc(s);
6150
0
        if (NULL == def->bytecode) {
6151
0
            JANET_OUT_OF_MEMORY;
6152
0
        }
6153
0
        safe_memcpy(def->bytecode, c->buffer + scope->bytecode_start, s);
6154
0
        janet_v__cnt(c->buffer) = scope->bytecode_start;
6155
0
        if (NULL != c->mapbuffer && c->source) {
6156
0
            size_t s = sizeof(JanetSourceMapping) * (size_t) def->bytecode_length;
6157
0
            def->sourcemap = janet_malloc(s);
6158
0
            if (NULL == def->sourcemap) {
6159
0
                JANET_OUT_OF_MEMORY;
6160
0
            }
6161
0
            safe_memcpy(def->sourcemap, c->mapbuffer + scope->bytecode_start, s);
6162
0
            janet_v__cnt(c->mapbuffer) = scope->bytecode_start;
6163
0
        }
6164
0
    }
6165
6166
    /* Get source from parser */
6167
0
    def->source = c->source;
6168
6169
0
    def->arity = 0;
6170
0
    def->min_arity = 0;
6171
0
    def->flags = 0;
6172
0
    if (scope->flags & JANET_SCOPE_ENV) {
6173
0
        def->flags |= JANET_FUNCDEF_FLAG_NEEDSENV;
6174
0
    }
6175
6176
    /* Copy upvalue bitset */
6177
0
    if (scope->ua.count) {
6178
        /* Number of u32s we need to create a bitmask for all slots */
6179
0
        int32_t slotchunks = (def->slotcount + 31) >> 5;
6180
        /* numchunks is min of slotchunks and scope->ua.count */
6181
0
        int32_t numchunks = slotchunks > scope->ua.count ? scope->ua.count : slotchunks;
6182
0
        uint32_t *chunks = janet_calloc(slotchunks, sizeof(uint32_t));
6183
0
        if (NULL == chunks) {
6184
0
            JANET_OUT_OF_MEMORY;
6185
0
        }
6186
0
        memcpy(chunks, scope->ua.chunks, sizeof(uint32_t) * numchunks);
6187
        /* Register allocator preallocates some registers [240-255, high 16 bits of chunk index 7], we can ignore those. */
6188
0
        if (scope->ua.count > 7) chunks[7] &= 0xFFFFU;
6189
0
        def->closure_bitset = chunks;
6190
0
    }
6191
6192
    /* Capture symbol to local mapping */
6193
0
    JanetSymbolMap *locals = NULL;
6194
6195
    /* Symbol -> upvalue mapping */
6196
0
    JanetScope *top = c->scope;
6197
0
    while (top->parent) top = top->parent;
6198
0
    for (JanetScope *s = top; s != NULL; s = s->child) {
6199
0
        for (int32_t j = 0; j < janet_v_count(scope->envs); j++) {
6200
0
            JanetEnvRef ref = scope->envs[j];
6201
0
            JanetScope *upscope = ref.scope;
6202
0
            if (upscope != s) continue;
6203
0
            for (int32_t i = 0; i < janet_v_count(upscope->syms); i++) {
6204
0
                SymPair pair = upscope->syms[i];
6205
0
                if (pair.sym2) {
6206
0
                    JanetSymbolMap jsm;
6207
0
                    jsm.birth_pc = UINT32_MAX;
6208
0
                    jsm.death_pc = j;
6209
0
                    jsm.slot_index = pair.slot.index;
6210
0
                    jsm.symbol = pair.sym2;
6211
0
                    janet_v_push(locals, jsm);
6212
0
                }
6213
0
            }
6214
0
        }
6215
0
    }
6216
6217
    /* Symbol -> slot mapping */
6218
0
    for (int32_t i = 0; i < janet_v_count(scope->syms); i++) {
6219
0
        SymPair pair = scope->syms[i];
6220
0
        if (pair.sym2) {
6221
0
            JanetSymbolMap jsm;
6222
0
            if (pair.death_pc == UINT32_MAX) {
6223
0
                jsm.death_pc = def->bytecode_length;
6224
0
            } else {
6225
0
                jsm.death_pc = pair.death_pc - scope->bytecode_start;
6226
0
            }
6227
            /* Handle birth_pc == 0 correctly */
6228
0
            if ((uint32_t) scope->bytecode_start > pair.birth_pc) {
6229
0
                jsm.birth_pc = 0;
6230
0
            } else {
6231
0
                jsm.birth_pc = pair.birth_pc - scope->bytecode_start;
6232
0
            }
6233
0
            janet_assert(jsm.birth_pc <= jsm.death_pc, "birth pc after death pc");
6234
0
            janet_assert(jsm.birth_pc < (uint32_t) def->bytecode_length, "bad birth pc");
6235
0
            janet_assert(jsm.death_pc <= (uint32_t) def->bytecode_length, "bad death pc");
6236
0
            jsm.slot_index = pair.slot.index;
6237
0
            jsm.symbol = pair.sym2;
6238
0
            janet_v_push(locals, jsm);
6239
0
        }
6240
0
    }
6241
0
    def->symbolmap_length = janet_v_count(locals);
6242
0
    def->symbolmap = janet_v_flatten(locals);
6243
0
    if (def->symbolmap_length) def->flags |= JANET_FUNCDEF_FLAG_HASSYMBOLMAP;
6244
6245
    /* Pop the scope */
6246
0
    janetc_popscope(c);
6247
6248
    /* Do basic optimization */
6249
0
    janet_bytecode_movopt(def);
6250
0
    janet_bytecode_remove_noops(def);
6251
6252
0
    return def;
6253
0
}
6254
6255
/* Initialize a compiler */
6256
0
static void janetc_init(JanetCompiler *c, JanetTable *env, const uint8_t *where, JanetArray *lints) {
6257
0
    c->scope = NULL;
6258
0
    c->buffer = NULL;
6259
0
    c->mapbuffer = NULL;
6260
0
    c->recursion_guard = JANET_RECURSION_GUARD;
6261
0
    c->env = env;
6262
0
    c->source = where;
6263
0
    c->current_mapping.line = -1;
6264
0
    c->current_mapping.column = -1;
6265
0
    c->lints = lints;
6266
    /* Init result */
6267
0
    c->result.error = NULL;
6268
0
    c->result.status = JANET_COMPILE_OK;
6269
0
    c->result.funcdef = NULL;
6270
0
    c->result.macrofiber = NULL;
6271
0
    c->result.error_mapping.line = -1;
6272
0
    c->result.error_mapping.column = -1;
6273
0
}
6274
6275
/* Deinitialize a compiler struct */
6276
0
static void janetc_deinit(JanetCompiler *c) {
6277
0
    janet_v_free(c->buffer);
6278
0
    janet_v_free(c->mapbuffer);
6279
0
    c->env = NULL;
6280
0
}
6281
6282
/* Compile a form. */
6283
JanetCompileResult janet_compile_lint(Janet source,
6284
0
                                      JanetTable *env, const uint8_t *where, JanetArray *lints) {
6285
0
    JanetCompiler c;
6286
0
    JanetScope rootscope;
6287
0
    JanetFopts fopts;
6288
6289
0
    janetc_init(&c, env, where, lints);
6290
6291
    /* Push a function scope */
6292
0
    janetc_scope(&rootscope, &c, JANET_SCOPE_FUNCTION | JANET_SCOPE_TOP, "root");
6293
6294
    /* Set initial form options */
6295
0
    fopts.compiler = &c;
6296
0
    fopts.flags = JANET_FOPTS_TAIL | JANET_SLOTTYPE_ANY;
6297
0
    fopts.hint = janetc_cslot(janet_wrap_nil());
6298
6299
    /* Compile the value */
6300
0
    janetc_value(fopts, source);
6301
6302
0
    if (c.result.status == JANET_COMPILE_OK) {
6303
0
        JanetFuncDef *def = janetc_pop_funcdef(&c);
6304
0
        def->name = janet_cstring("thunk");
6305
0
        janet_def_addflags(def);
6306
0
        c.result.funcdef = def;
6307
0
    } else {
6308
0
        c.result.error_mapping = c.current_mapping;
6309
0
        janetc_popscope(&c);
6310
0
    }
6311
6312
0
    janetc_deinit(&c);
6313
6314
0
    return c.result;
6315
0
}
6316
6317
0
JanetCompileResult janet_compile(Janet source, JanetTable *env, const uint8_t *where) {
6318
0
    return janet_compile_lint(source, env, where, NULL);
6319
0
}
6320
6321
/* C Function for compiling */
6322
JANET_CORE_FN(cfun_compile,
6323
              "(compile ast &opt env source lints)",
6324
              "Compiles an Abstract Syntax Tree (ast) into a function. "
6325
              "Pair the compile function with parsing functionality to implement "
6326
              "eval. Returns a new function and does not modify ast. Returns an error "
6327
              "struct with keys :line, :column, and :error if compilation fails. "
6328
              "If a `lints` array is given, linting messages will be appended to the array. "
6329
0
              "Each message will be a tuple of the form `(level line col message)`.") {
6330
0
    janet_arity(argc, 1, 4);
6331
0
    JanetTable *env = (argc > 1 && !janet_checktype(argv[1], JANET_NIL))
6332
0
                      ? janet_gettable(argv, 1) : janet_vm.fiber->env;
6333
0
    if (NULL == env) {
6334
0
        env = janet_table(0);
6335
0
        janet_vm.fiber->env = env;
6336
0
    }
6337
0
    const uint8_t *source = NULL;
6338
0
    if (argc >= 3) {
6339
0
        Janet x = argv[2];
6340
0
        if (janet_checktype(x, JANET_STRING)) {
6341
0
            source = janet_unwrap_string(x);
6342
0
        } else if (janet_checktype(x, JANET_KEYWORD)) {
6343
0
            source = janet_unwrap_keyword(x);
6344
0
        } else if (!janet_checktype(x, JANET_NIL)) {
6345
0
            janet_panic_type(x, 2, JANET_TFLAG_STRING | JANET_TFLAG_KEYWORD);
6346
0
        }
6347
0
    }
6348
0
    JanetArray *lints = (argc >= 4 && !janet_checktype(argv[3], JANET_NIL))
6349
0
                        ? janet_getarray(argv, 3) : NULL;
6350
0
    JanetCompileResult res = janet_compile_lint(argv[0], env, source, lints);
6351
0
    if (res.status == JANET_COMPILE_OK) {
6352
0
        return janet_wrap_function(janet_thunk(res.funcdef));
6353
0
    } else {
6354
0
        JanetTable *t = janet_table(4);
6355
0
        janet_table_put(t, janet_ckeywordv("error"), janet_wrap_string(res.error));
6356
0
        if (res.error_mapping.line > 0) {
6357
0
            janet_table_put(t, janet_ckeywordv("line"), janet_wrap_integer(res.error_mapping.line));
6358
0
        }
6359
0
        if (res.error_mapping.column > 0) {
6360
0
            janet_table_put(t, janet_ckeywordv("column"), janet_wrap_integer(res.error_mapping.column));
6361
0
        }
6362
0
        if (res.macrofiber) {
6363
0
            janet_table_put(t, janet_ckeywordv("fiber"), janet_wrap_fiber(res.macrofiber));
6364
0
        }
6365
0
        return janet_wrap_table(t);
6366
0
    }
6367
0
}
6368
6369
0
void janet_lib_compile(JanetTable *env) {
6370
0
    JanetRegExt cfuns[] = {
6371
0
        JANET_CORE_REG("compile", cfun_compile),
6372
0
        JANET_REG_END
6373
0
    };
6374
0
    janet_core_cfuns_ext(env, NULL, cfuns);
6375
0
}
6376
6377
6378
/* src/core/corelib.c */
6379
#line 0 "src/core/corelib.c"
6380
6381
/*
6382
* Copyright (c) 2025 Calvin Rose
6383
*
6384
* Permission is hereby granted, free of charge, to any person obtaining a copy
6385
* of this software and associated documentation files (the "Software"), to
6386
* deal in the Software without restriction, including without limitation the
6387
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6388
* sell copies of the Software, and to permit persons to whom the Software is
6389
* furnished to do so, subject to the following conditions:
6390
*
6391
* The above copyright notice and this permission notice shall be included in
6392
* all copies or substantial portions of the Software.
6393
*
6394
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6395
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
6396
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
6397
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
6398
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
6399
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
6400
* IN THE SOFTWARE.
6401
*/
6402
6403
#ifndef JANET_AMALG
6404
#include "features.h"
6405
#include <janet.h>
6406
#include <math.h>
6407
#include "compile.h"
6408
#include "state.h"
6409
#include "util.h"
6410
#endif
6411
6412
/* Generated bytes */
6413
#ifndef JANET_BOOTSTRAP
6414
extern const unsigned char *janet_core_image;
6415
extern size_t janet_core_image_size;
6416
#endif
6417
6418
/* Docstrings should only exist during bootstrap */
6419
#ifdef JANET_BOOTSTRAP
6420
#define JDOC(x) (x)
6421
#else
6422
#define JDOC(x) NULL
6423
#endif
6424
6425
0
JanetModule janet_native(const char *name, const uint8_t **error) {
6426
0
    janet_sandbox_assert(JANET_SANDBOX_DYNAMIC_MODULES);
6427
0
    char *processed_name = get_processed_name(name);
6428
0
    Clib lib = load_clib(processed_name);
6429
0
    JanetModule init;
6430
0
    JanetModconf getter;
6431
0
    if (name != processed_name) janet_free(processed_name);
6432
0
    if (!lib) {
6433
0
        *error = janet_cstring(error_clib());
6434
0
        return NULL;
6435
0
    }
6436
0
    init = (JanetModule) symbol_clib(lib, "_janet_init");
6437
0
    if (!init) {
6438
0
        *error = janet_cstring("could not find the _janet_init symbol");
6439
0
        return NULL;
6440
0
    }
6441
0
    getter = (JanetModconf) symbol_clib(lib, "_janet_mod_config");
6442
0
    if (!getter) {
6443
0
        *error = janet_cstring("could not find the _janet_mod_config symbol");
6444
0
        return NULL;
6445
0
    }
6446
0
    JanetBuildConfig modconf = getter();
6447
0
    JanetBuildConfig host = janet_config_current();
6448
0
    if (host.major != modconf.major ||
6449
0
            host.minor != modconf.minor ||
6450
0
            host.bits != modconf.bits) {
6451
0
        char errbuf[128];
6452
0
        snprintf(errbuf, sizeof(errbuf), "config mismatch - host %d.%.d.%d(%.4x) vs. module %d.%d.%d(%.4x)",
6453
0
                 host.major,
6454
0
                 host.minor,
6455
0
                 host.patch,
6456
0
                 host.bits,
6457
0
                 modconf.major,
6458
0
                 modconf.minor,
6459
0
                 modconf.patch,
6460
0
                 modconf.bits);
6461
0
        *error = janet_cstring(errbuf);
6462
0
        return NULL;
6463
0
    }
6464
0
    return init;
6465
0
}
6466
6467
0
static const char *janet_dyncstring(const char *name, const char *dflt) {
6468
0
    Janet x = janet_dyn(name);
6469
0
    if (janet_checktype(x, JANET_NIL)) return dflt;
6470
0
    if (!janet_checktype(x, JANET_STRING)) {
6471
0
        janet_panicf("expected string, got %v", x);
6472
0
    }
6473
0
    const uint8_t *jstr = janet_unwrap_string(x);
6474
0
    const char *cstr = (const char *)jstr;
6475
0
    if (strlen(cstr) != (size_t) janet_string_length(jstr)) {
6476
0
        janet_panicf("string %v contains embedded 0s", x);
6477
0
    }
6478
0
    return cstr;
6479
0
}
6480
6481
0
static int is_path_sep(char c) {
6482
#ifdef JANET_WINDOWS
6483
    if (c == '\\') return 1;
6484
#endif
6485
0
    return c == '/';
6486
0
}
6487
6488
/* Used for module system. */
6489
JANET_CORE_FN(janet_core_expand_path,
6490
              "(module/expand-path path template)",
6491
              "Expands a path template as found in `module/paths` for `module/find`. "
6492
              "This takes in a path (the argument to require) and a template string, "
6493
              "to expand the path to a path that can be used for importing files. "
6494
              "The replacements are as follows:\n\n"
6495
              "* :all: -- the value of path verbatim.\n\n"
6496
              "* :@all: -- Same as :all:, but if `path` starts with the @ character, "
6497
              "the first path segment is replaced with a dynamic binding "
6498
              "`(dyn <first path segment as keyword>)`.\n\n"
6499
              "* :cur: -- the directory portion, if any, of (dyn :current-file)\n\n"
6500
              "* :dir: -- the directory portion, if any, of the path argument\n\n"
6501
              "* :name: -- the name component of path, with extension if given\n\n"
6502
              "* :native: -- the extension used to load natives, .so or .dll\n\n"
6503
0
              "* :sys: -- the system path, or (dyn :syspath)") {
6504
0
    janet_fixarity(argc, 2);
6505
0
    const char *input = janet_getcstring(argv, 0);
6506
0
    const char *template = janet_getcstring(argv, 1);
6507
0
    const char *curfile = janet_dyncstring("current-file", "");
6508
0
    const char *syspath = janet_dyncstring("syspath", "");
6509
0
    JanetBuffer *out = janet_buffer(0);
6510
0
    size_t tlen = strlen(template);
6511
6512
    /* Calculate name */
6513
0
    const char *name = input + strlen(input);
6514
0
    while (name > input) {
6515
0
        if (is_path_sep(*(name - 1))) break;
6516
0
        name--;
6517
0
    }
6518
6519
    /* Calculate dirpath from current file */
6520
0
    const char *curname = curfile + strlen(curfile);
6521
0
    while (curname > curfile) {
6522
0
        if (is_path_sep(*curname)) break;
6523
0
        curname--;
6524
0
    }
6525
0
    const char *curdir;
6526
0
    int32_t curlen;
6527
0
    if (curname == curfile) {
6528
        /* Current file has one or zero path segments, so
6529
         * we are in the . directory. */
6530
0
        curdir = ".";
6531
0
        curlen = 1;
6532
0
    } else {
6533
        /* Current file has 2 or more segments, so we
6534
         * can cut off the last segment. */
6535
0
        curdir = curfile;
6536
0
        curlen = (int32_t)(curname - curfile);
6537
0
    }
6538
6539
0
    for (size_t i = 0; i < tlen; i++) {
6540
0
        if (template[i] == ':') {
6541
0
            if (strncmp(template + i, ":all:", 5) == 0) {
6542
0
                janet_buffer_push_cstring(out, input);
6543
0
                i += 4;
6544
0
            } else if (strncmp(template + i, ":@all:", 6) == 0) {
6545
0
                if (input[0] == '@') {
6546
0
                    const char *p = input;
6547
0
                    while (*p && !is_path_sep(*p)) p++;
6548
0
                    size_t len = p - input - 1;
6549
0
                    char *str = janet_smalloc(len + 1);
6550
0
                    memcpy(str, input + 1, len);
6551
0
                    str[len] = '\0';
6552
0
                    janet_formatb(out, "%V", janet_dyn(str));
6553
0
                    janet_sfree(str);
6554
0
                    janet_buffer_push_cstring(out, p);
6555
0
                } else {
6556
0
                    janet_buffer_push_cstring(out, input);
6557
0
                }
6558
0
                i += 5;
6559
0
            } else if (strncmp(template + i, ":cur:", 5) == 0) {
6560
0
                janet_buffer_push_bytes(out, (const uint8_t *)curdir, curlen);
6561
0
                i += 4;
6562
0
            } else if (strncmp(template + i, ":dir:", 5) == 0) {
6563
0
                janet_buffer_push_bytes(out, (const uint8_t *)input,
6564
0
                                        (int32_t)(name - input));
6565
0
                i += 4;
6566
0
            } else if (strncmp(template + i, ":sys:", 5) == 0) {
6567
0
                janet_buffer_push_cstring(out, syspath);
6568
0
                i += 4;
6569
0
            } else if (strncmp(template + i, ":name:", 6) == 0) {
6570
0
                janet_buffer_push_cstring(out, name);
6571
0
                i += 5;
6572
0
            } else if (strncmp(template + i, ":native:", 8) == 0) {
6573
#ifdef JANET_WINDOWS
6574
                janet_buffer_push_cstring(out, ".dll");
6575
#else
6576
0
                janet_buffer_push_cstring(out, ".so");
6577
0
#endif
6578
0
                i += 7;
6579
0
            } else {
6580
0
                janet_buffer_push_u8(out, (uint8_t) template[i]);
6581
0
            }
6582
0
        } else {
6583
0
            janet_buffer_push_u8(out, (uint8_t) template[i]);
6584
0
        }
6585
0
    }
6586
6587
    /* Normalize */
6588
0
    uint8_t *scan = out->data;
6589
0
    uint8_t *print = scan;
6590
0
    uint8_t *scanend = scan + out->count;
6591
0
    int normal_section_count = 0;
6592
0
    int dot_count = 0;
6593
0
    while (scan < scanend) {
6594
0
        if (*scan == '.') {
6595
0
            if (dot_count >= 0) {
6596
0
                dot_count++;
6597
0
            } else {
6598
0
                *print++ = '.';
6599
0
            }
6600
0
        } else if (is_path_sep(*scan)) {
6601
0
            if (dot_count == 1) {
6602
0
                ;
6603
0
            } else if (dot_count == 2) {
6604
0
                if (normal_section_count > 0) {
6605
                    /* unprint last separator */
6606
0
                    print--;
6607
                    /* unprint last section */
6608
0
                    while (print > out->data && !is_path_sep(*(print - 1)))
6609
0
                        print--;
6610
0
                    normal_section_count--;
6611
0
                } else {
6612
0
                    *print++ = '.';
6613
0
                    *print++ = '.';
6614
0
                    *print++ = '/';
6615
0
                }
6616
0
            } else if (scan == out->data || dot_count != 0) {
6617
0
                while (dot_count > 0) {
6618
0
                    --dot_count;
6619
0
                    *print++ = '.';
6620
0
                }
6621
0
                if (scan > out->data) {
6622
0
                    normal_section_count++;
6623
0
                }
6624
0
                *print++ = '/';
6625
0
            }
6626
0
            dot_count = 0;
6627
0
        } else {
6628
0
            while (dot_count > 0) {
6629
0
                --dot_count;
6630
0
                *print++ = '.';
6631
0
            }
6632
0
            dot_count = -1;
6633
0
            *print++ = *scan;
6634
0
        }
6635
0
        scan++;
6636
0
    }
6637
0
    out->count = (int32_t)(print - out->data);
6638
0
    return janet_wrap_buffer(out);
6639
0
}
6640
6641
JANET_CORE_FN(janet_core_dyn,
6642
              "(dyn key &opt default)",
6643
0
              "Get a dynamic binding. Returns the default value (or nil) if no binding found.") {
6644
0
    janet_arity(argc, 1, 2);
6645
0
    Janet value;
6646
0
    if (janet_vm.fiber->env) {
6647
0
        value = janet_table_get(janet_vm.fiber->env, argv[0]);
6648
0
    } else {
6649
0
        value = janet_wrap_nil();
6650
0
    }
6651
0
    if (argc == 2 && janet_checktype(value, JANET_NIL)) {
6652
0
        return argv[1];
6653
0
    }
6654
0
    return value;
6655
0
}
6656
6657
JANET_CORE_FN(janet_core_setdyn,
6658
              "(setdyn key value)",
6659
0
              "Set a dynamic binding. Returns value.") {
6660
0
    janet_fixarity(argc, 2);
6661
0
    if (!janet_vm.fiber->env) {
6662
0
        janet_vm.fiber->env = janet_table(2);
6663
0
    }
6664
0
    janet_table_put(janet_vm.fiber->env, argv[0], argv[1]);
6665
0
    return argv[1];
6666
0
}
6667
6668
JANET_CORE_FN(janet_core_native,
6669
              "(native path &opt env)",
6670
              "Load a native module from the given path. The path "
6671
              "must be an absolute or relative path on the file system, and is "
6672
              "usually a .so file on Unix systems, and a .dll file on Windows. "
6673
              "Returns an environment table that contains functions and other values "
6674
0
              "from the native module.") {
6675
0
    JanetModule init;
6676
0
    janet_arity(argc, 1, 2);
6677
0
    const uint8_t *path = janet_getstring(argv, 0);
6678
0
    const uint8_t *error = NULL;
6679
0
    JanetTable *env;
6680
0
    if (argc == 2) {
6681
0
        env = janet_gettable(argv, 1);
6682
0
    } else {
6683
0
        env = janet_table(0);
6684
0
    }
6685
0
    init = janet_native((const char *)path, &error);
6686
0
    if (!init) {
6687
0
        janet_panicf("could not load native %S: %S", path, error);
6688
0
    }
6689
0
    init(env);
6690
0
    janet_table_put(env, janet_ckeywordv("native"), argv[0]);
6691
0
    return janet_wrap_table(env);
6692
0
}
6693
6694
JANET_CORE_FN(janet_core_describe,
6695
              "(describe x)",
6696
              "Returns a string that is a human-readable description of `x`. "
6697
              "For recursive data structures, the string returned contains a "
6698
              "pointer value from which the identity of `x` "
6699
0
              "can be determined.") {
6700
0
    JanetBuffer *b = janet_buffer(0);
6701
0
    for (int32_t i = 0; i < argc; ++i)
6702
0
        janet_description_b(b, argv[i]);
6703
0
    return janet_stringv(b->data, b->count);
6704
0
}
6705
6706
JANET_CORE_FN(janet_core_string,
6707
              "(string & xs)",
6708
              "Creates a string by concatenating the elements of `xs` together. If an "
6709
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6710
0
              "Returns the new string.") {
6711
0
    JanetBuffer *b = janet_buffer(0);
6712
0
    for (int32_t i = 0; i < argc; ++i)
6713
0
        janet_to_string_b(b, argv[i]);
6714
0
    return janet_stringv(b->data, b->count);
6715
0
}
6716
6717
JANET_CORE_FN(janet_core_symbol,
6718
              "(symbol & xs)",
6719
              "Creates a symbol by concatenating the elements of `xs` together. If an "
6720
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6721
0
              "Returns the new symbol.") {
6722
0
    JanetBuffer *b = janet_buffer(0);
6723
0
    for (int32_t i = 0; i < argc; ++i)
6724
0
        janet_to_string_b(b, argv[i]);
6725
0
    return janet_symbolv(b->data, b->count);
6726
0
}
6727
6728
JANET_CORE_FN(janet_core_keyword,
6729
              "(keyword & xs)",
6730
              "Creates a keyword by concatenating the elements of `xs` together. If an "
6731
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6732
0
              "Returns the new keyword.") {
6733
0
    JanetBuffer *b = janet_buffer(0);
6734
0
    for (int32_t i = 0; i < argc; ++i)
6735
0
        janet_to_string_b(b, argv[i]);
6736
0
    return janet_keywordv(b->data, b->count);
6737
0
}
6738
6739
JANET_CORE_FN(janet_core_buffer,
6740
              "(buffer & xs)",
6741
              "Creates a buffer by concatenating the elements of `xs` together. If an "
6742
              "element is not a byte sequence, it is converted to bytes via `describe`. "
6743
0
              "Returns the new buffer.") {
6744
0
    JanetBuffer *b = janet_buffer(0);
6745
0
    for (int32_t i = 0; i < argc; ++i)
6746
0
        janet_to_string_b(b, argv[i]);
6747
0
    return janet_wrap_buffer(b);
6748
0
}
6749
6750
JANET_CORE_FN(janet_core_is_abstract,
6751
              "(abstract? x)",
6752
0
              "Check if x is an abstract type.") {
6753
0
    janet_fixarity(argc, 1);
6754
0
    return janet_wrap_boolean(janet_checktype(argv[0], JANET_ABSTRACT));
6755
0
}
6756
6757
JANET_CORE_FN(janet_core_scannumber,
6758
              "(scan-number str &opt base)",
6759
              "Parse a number from a byte sequence and return that number, either an integer "
6760
              "or a real. The number "
6761
              "must be in the same format as numbers in janet source code. Will return nil "
6762
              "on an invalid number. Optionally provide a base - if a base is provided, no "
6763
0
              "radix specifier is expected at the beginning of the number.") {
6764
0
    double number;
6765
0
    janet_arity(argc, 1, 2);
6766
0
    JanetByteView view = janet_getbytes(argv, 0);
6767
0
    int32_t base = janet_optinteger(argv, argc, 1, 0);
6768
0
    int valid = base == 0 || (base >= 2 && base <= 36);
6769
0
    if (!valid) {
6770
0
        janet_panicf("expected base between 2 and 36, got %d", base);
6771
0
    }
6772
0
    if (janet_scan_number_base(view.bytes, view.len, base, &number))
6773
0
        return janet_wrap_nil();
6774
0
    return janet_wrap_number(number);
6775
0
}
6776
6777
JANET_CORE_FN(janet_core_tuple,
6778
              "(tuple & items)",
6779
0
              "Creates a new tuple that contains items. Returns the new tuple.") {
6780
0
    return janet_wrap_tuple(janet_tuple_n(argv, argc));
6781
0
}
6782
6783
JANET_CORE_FN(janet_core_array,
6784
              "(array & items)",
6785
0
              "Create a new array that contains items. Returns the new array.") {
6786
0
    JanetArray *array = janet_array(argc);
6787
0
    array->count = argc;
6788
0
    safe_memcpy(array->data, argv, argc * sizeof(Janet));
6789
0
    return janet_wrap_array(array);
6790
0
}
6791
6792
JANET_CORE_FN(janet_core_slice,
6793
              "(slice x &opt start end)",
6794
0
              "Extract a sub-range of an indexed data structure or byte sequence.") {
6795
0
    JanetRange range;
6796
0
    JanetByteView bview;
6797
0
    JanetView iview;
6798
0
    if (janet_bytes_view(argv[0], &bview.bytes, &bview.len)) {
6799
0
        range = janet_getslice(argc, argv);
6800
0
        return janet_stringv(bview.bytes + range.start, range.end - range.start);
6801
0
    } else if (janet_indexed_view(argv[0], &iview.items, &iview.len)) {
6802
0
        range = janet_getslice(argc, argv);
6803
0
        return janet_wrap_tuple(janet_tuple_n(iview.items + range.start, range.end - range.start));
6804
0
    } else {
6805
0
        janet_panic_type(argv[0], 0, JANET_TFLAG_BYTES | JANET_TFLAG_INDEXED);
6806
0
    }
6807
0
}
6808
6809
JANET_CORE_FN(janet_core_range,
6810
              "(range & args)",
6811
              "Create an array of values [start, end) with a given step. "
6812
              "With one argument, returns a range [0, end). With two arguments, returns "
6813
0
              "a range [start, end). With three, returns a range with optional step size.") {
6814
0
    janet_arity(argc, 1, 3);
6815
0
    double start = 0, stop = 0, step = 1, count = 0;
6816
0
    if (argc == 3) {
6817
0
        start = janet_getnumber(argv, 0);
6818
0
        stop = janet_getnumber(argv, 1);
6819
0
        step = janet_getnumber(argv, 2);
6820
0
        count = (step > 0) ? (stop - start) / step :
6821
0
                ((step < 0) ? (stop - start) / step : 0);
6822
0
    } else if (argc == 2) {
6823
0
        start = janet_getnumber(argv, 0);
6824
0
        stop = janet_getnumber(argv, 1);
6825
0
        count = stop - start;
6826
0
    } else {
6827
0
        stop = janet_getnumber(argv, 0);
6828
0
        count = stop;
6829
0
    }
6830
0
    count = (count > 0) ? count : 0;
6831
0
    int32_t int_count;
6832
0
    janet_assert(count >= 0, "bad range code");
6833
0
    if (count > (double) INT32_MAX) {
6834
0
        janet_panicf("range is too large, %f elements", count);
6835
0
    } else {
6836
0
        int_count = (int32_t) ceil(count);
6837
0
    }
6838
0
    if (step > 0.0) {
6839
0
        janet_assert(start + int_count * step >= stop, "bad range code");
6840
0
    } else {
6841
0
        janet_assert(start + int_count * step <= stop, "bad range code");
6842
0
    }
6843
0
    JanetArray *array = janet_array(int_count);
6844
0
    for (int32_t i = 0; i < int_count; i++) {
6845
0
        array->data[i] = janet_wrap_number((double) start + (double) i * step);
6846
0
    }
6847
0
    array->count = int_count;
6848
0
    return janet_wrap_array(array);
6849
0
}
6850
6851
JANET_CORE_FN(janet_core_table,
6852
              "(table & kvs)",
6853
              "Creates a new table from a variadic number of keys and values. "
6854
              "kvs is a sequence k1, v1, k2, v2, k3, v3, ... If kvs has "
6855
              "an odd number of elements, an error will be thrown. Returns the "
6856
0
              "new table.") {
6857
0
    int32_t i;
6858
0
    if (argc & 1)
6859
0
        janet_panic("expected even number of arguments");
6860
0
    JanetTable *table = janet_table(argc >> 1);
6861
0
    for (i = 0; i < argc; i += 2) {
6862
0
        janet_table_put(table, argv[i], argv[i + 1]);
6863
0
    }
6864
0
    return janet_wrap_table(table);
6865
0
}
6866
6867
JANET_CORE_FN(janet_core_getproto,
6868
              "(getproto x)",
6869
0
              "Get the prototype of a table or struct. Will return nil if `x` has no prototype.") {
6870
0
    janet_fixarity(argc, 1);
6871
0
    if (janet_checktype(argv[0], JANET_TABLE)) {
6872
0
        JanetTable *t = janet_unwrap_table(argv[0]);
6873
0
        return t->proto
6874
0
               ? janet_wrap_table(t->proto)
6875
0
               : janet_wrap_nil();
6876
0
    }
6877
0
    if (janet_checktype(argv[0], JANET_STRUCT)) {
6878
0
        JanetStruct st = janet_unwrap_struct(argv[0]);
6879
0
        return janet_struct_proto(st)
6880
0
               ? janet_wrap_struct(janet_struct_proto(st))
6881
0
               : janet_wrap_nil();
6882
0
    }
6883
0
    janet_panicf("expected struct or table, got %v", argv[0]);
6884
0
}
6885
6886
JANET_CORE_FN(janet_core_struct,
6887
              "(struct & kvs)",
6888
              "Create a new struct from a sequence of key value pairs. "
6889
              "kvs is a sequence k1, v1, k2, v2, k3, v3, ... If kvs has "
6890
              "an odd number of elements, an error will be thrown. Returns the "
6891
0
              "new struct.") {
6892
0
    int32_t i;
6893
0
    if (argc & 1) {
6894
0
        janet_panic("expected even number of arguments");
6895
0
    }
6896
0
    JanetKV *st = janet_struct_begin(argc >> 1);
6897
0
    for (i = 0; i < argc; i += 2) {
6898
0
        janet_struct_put(st, argv[i], argv[i + 1]);
6899
0
    }
6900
0
    return janet_wrap_struct(janet_struct_end(st));
6901
0
}
6902
6903
JANET_CORE_FN(janet_core_gensym,
6904
              "(gensym)",
6905
              "Returns a new symbol that is unique across the runtime. This means it "
6906
              "will not collide with any already created symbols during compilation, so "
6907
0
              "it can be used in macros to generate automatic bindings.") {
6908
0
    (void) argv;
6909
0
    janet_fixarity(argc, 0);
6910
0
    return janet_wrap_symbol(janet_symbol_gen());
6911
0
}
6912
6913
JANET_CORE_FN(janet_core_gccollect,
6914
              "(gccollect)",
6915
0
              "Run garbage collection. You should probably not call this manually.") {
6916
0
    (void) argv;
6917
0
    (void) argc;
6918
0
    janet_collect();
6919
0
    return janet_wrap_nil();
6920
0
}
6921
6922
JANET_CORE_FN(janet_core_gcsetinterval,
6923
              "(gcsetinterval interval)",
6924
              "Set an integer number of bytes to allocate before running garbage collection. "
6925
              "Low values for interval will be slower but use less memory. "
6926
0
              "High values will be faster but use more memory.") {
6927
0
    janet_fixarity(argc, 1);
6928
0
    size_t s = janet_getsize(argv, 0);
6929
    /* limit interval to 48 bits */
6930
0
#ifdef JANET_64
6931
0
    if (s >> 48) {
6932
0
        janet_panic("interval too large");
6933
0
    }
6934
0
#endif
6935
0
    janet_vm.gc_interval = s;
6936
0
    return janet_wrap_nil();
6937
0
}
6938
6939
JANET_CORE_FN(janet_core_gcinterval,
6940
              "(gcinterval)",
6941
              "Returns the integer number of bytes to allocate before running an iteration "
6942
0
              "of garbage collection.") {
6943
0
    (void) argv;
6944
0
    janet_fixarity(argc, 0);
6945
0
    return janet_wrap_number((double) janet_vm.gc_interval);
6946
0
}
6947
6948
JANET_CORE_FN(janet_core_type,
6949
              "(type x)",
6950
              "Returns the type of `x` as a keyword. `x` is one of:\n\n"
6951
              "* :nil\n\n"
6952
              "* :boolean\n\n"
6953
              "* :number\n\n"
6954
              "* :array\n\n"
6955
              "* :tuple\n\n"
6956
              "* :table\n\n"
6957
              "* :struct\n\n"
6958
              "* :string\n\n"
6959
              "* :buffer\n\n"
6960
              "* :symbol\n\n"
6961
              "* :keyword\n\n"
6962
              "* :function\n\n"
6963
              "* :cfunction\n\n"
6964
              "* :fiber\n\n"
6965
0
              "or another keyword for an abstract type.") {
6966
0
    janet_fixarity(argc, 1);
6967
0
    JanetType t = janet_type(argv[0]);
6968
0
    if (t == JANET_ABSTRACT) {
6969
0
        return janet_ckeywordv(janet_abstract_type(janet_unwrap_abstract(argv[0]))->name);
6970
0
    } else {
6971
0
        return janet_ckeywordv(janet_type_names[t]);
6972
0
    }
6973
0
}
6974
6975
JANET_CORE_FN(janet_core_hash,
6976
              "(hash value)",
6977
              "Gets a hash for any value. The hash is an integer can be used "
6978
              "as a cheap hash function for all values. If two values are strictly equal, "
6979
0
              "then they will have the same hash value.") {
6980
0
    janet_fixarity(argc, 1);
6981
0
    return janet_wrap_number(janet_hash(argv[0]));
6982
0
}
6983
6984
JANET_CORE_FN(janet_core_getline,
6985
              "(getline &opt prompt buf env)",
6986
              "Reads a line of input into a buffer, including the newline character, using a prompt. "
6987
              "An optional environment table can be provided for auto-complete. "
6988
              "Returns the modified buffer. "
6989
0
              "Use this function to implement a simple interface for a terminal program.") {
6990
0
    FILE *in = janet_dynfile("in", stdin);
6991
0
    FILE *out = janet_dynfile("out", stdout);
6992
0
    janet_arity(argc, 0, 3);
6993
0
    JanetBuffer *buf = (argc >= 2) ? janet_getbuffer(argv, 1) : janet_buffer(10);
6994
0
    if (argc >= 1) {
6995
0
        const char *prompt = (const char *) janet_getstring(argv, 0);
6996
0
        fprintf(out, "%s", prompt);
6997
0
        fflush(out);
6998
0
    }
6999
0
    {
7000
0
        buf->count = 0;
7001
0
        int c;
7002
0
        for (;;) {
7003
0
            c = fgetc(in);
7004
0
            if (feof(in) || c < 0) {
7005
0
                break;
7006
0
            }
7007
0
            janet_buffer_push_u8(buf, (uint8_t) c);
7008
0
            if (c == '\n') break;
7009
0
        }
7010
0
    }
7011
0
    return janet_wrap_buffer(buf);
7012
0
}
7013
7014
JANET_CORE_FN(janet_core_trace,
7015
              "(trace func)",
7016
0
              "Enable tracing on a function. Returns the function.") {
7017
0
    janet_fixarity(argc, 1);
7018
0
    JanetFunction *func = janet_getfunction(argv, 0);
7019
0
    func->gc.flags |= JANET_FUNCFLAG_TRACE;
7020
0
    return argv[0];
7021
0
}
7022
7023
JANET_CORE_FN(janet_core_untrace,
7024
              "(untrace func)",
7025
0
              "Disables tracing on a function. Returns the function.") {
7026
0
    janet_fixarity(argc, 1);
7027
0
    JanetFunction *func = janet_getfunction(argv, 0);
7028
0
    func->gc.flags &= ~JANET_FUNCFLAG_TRACE;
7029
0
    return argv[0];
7030
0
}
7031
7032
JANET_CORE_FN(janet_core_check_int,
7033
              "(int? x)",
7034
0
              "Check if x can be exactly represented as a 32 bit signed two's complement integer.") {
7035
0
    janet_fixarity(argc, 1);
7036
0
    return janet_wrap_boolean(janet_checkint(argv[0]));
7037
0
}
7038
7039
JANET_CORE_FN(janet_core_check_nat,
7040
              "(nat? x)",
7041
0
              "Check if x can be exactly represented as a non-negative 32 bit signed two's complement integer.") {
7042
0
    janet_fixarity(argc, 1);
7043
0
    if (!janet_checkint(argv[0])) return janet_wrap_false();
7044
0
    return janet_wrap_boolean(janet_unwrap_integer(argv[0]) >= 0);
7045
0
}
7046
7047
JANET_CORE_FN(janet_core_is_bytes,
7048
              "(bytes? x)",
7049
0
              "Check if x is a string, symbol, keyword, or buffer.") {
7050
0
    janet_fixarity(argc, 1);
7051
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_BYTES));
7052
0
}
7053
7054
JANET_CORE_FN(janet_core_is_indexed,
7055
              "(indexed? x)",
7056
0
              "Check if x is an array or tuple.") {
7057
0
    janet_fixarity(argc, 1);
7058
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_INDEXED));
7059
0
}
7060
7061
JANET_CORE_FN(janet_core_is_dictionary,
7062
              "(dictionary? x)",
7063
0
              "Check if x is a table or struct.") {
7064
0
    janet_fixarity(argc, 1);
7065
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_DICTIONARY));
7066
0
}
7067
7068
JANET_CORE_FN(janet_core_is_lengthable,
7069
              "(lengthable? x)",
7070
0
              "Check if x is a bytes, indexed, or dictionary.") {
7071
0
    janet_fixarity(argc, 1);
7072
0
    return janet_wrap_boolean(janet_checktypes(argv[0], JANET_TFLAG_LENGTHABLE));
7073
0
}
7074
7075
JANET_CORE_FN(janet_core_signal,
7076
              "(signal what x)",
7077
              "Raise a signal with payload x. `what` can be an integer\n"
7078
              "from 0 through 7 indicating user(0-7), or one of:\n\n"
7079
              "* :ok\n"
7080
              "* :error\n"
7081
              "* :debug\n"
7082
              "* :yield\n"
7083
              "* :user(0-7)\n"
7084
              "* :interrupt\n"
7085
0
              "* :await") {
7086
0
    janet_arity(argc, 1, 2);
7087
0
    Janet payload = argc == 2 ? argv[1] : janet_wrap_nil();
7088
0
    if (janet_checkint(argv[0])) {
7089
0
        int32_t s = janet_unwrap_integer(argv[0]);
7090
0
        if (s < 0 || s > 9) {
7091
0
            janet_panicf("expected user signal between 0 and 9, got %d", s);
7092
0
        }
7093
0
        janet_signalv(JANET_SIGNAL_USER0 + s, payload);
7094
0
    } else {
7095
0
        JanetKeyword kw = janet_getkeyword(argv, 0);
7096
0
        for (unsigned i = 0; i < sizeof(janet_signal_names) / sizeof(char *); i++) {
7097
0
            if (!janet_cstrcmp(kw, janet_signal_names[i])) {
7098
0
                janet_signalv((JanetSignal) i, payload);
7099
0
            }
7100
0
        }
7101
0
    }
7102
0
    janet_panicf("unknown signal %v", argv[0]);
7103
0
}
7104
7105
JANET_CORE_FN(janet_core_memcmp,
7106
              "(memcmp a b &opt len offset-a offset-b)",
7107
              "Compare memory. Takes two byte sequences `a` and `b`, and "
7108
              "return 0 if they have identical contents, a negative integer if a is less than b, "
7109
              "and a positive integer if a is greater than b. Optionally take a length and offsets "
7110
0
              "to compare slices of the bytes sequences.") {
7111
0
    janet_arity(argc, 2, 5);
7112
0
    JanetByteView a = janet_getbytes(argv, 0);
7113
0
    JanetByteView b = janet_getbytes(argv, 1);
7114
0
    int32_t len = janet_optnat(argv, argc, 2, a.len < b.len ? a.len : b.len);
7115
0
    int32_t offset_a = janet_optnat(argv, argc, 3, 0);
7116
0
    int32_t offset_b = janet_optnat(argv, argc, 4, 0);
7117
0
    if (offset_a + len > a.len) janet_panicf("invalid offset-a: %d", offset_a);
7118
0
    if (offset_b + len > b.len) janet_panicf("invalid offset-b: %d", offset_b);
7119
0
    return janet_wrap_integer(memcmp(a.bytes + offset_a, b.bytes + offset_b, (size_t) len));
7120
0
}
7121
7122
typedef struct SandboxOption {
7123
    const char *name;
7124
    uint32_t flag;
7125
} SandboxOption;
7126
7127
static const SandboxOption sandbox_options[] = {
7128
    {"all", JANET_SANDBOX_ALL},
7129
    {"chroot", JANET_SANDBOX_CHROOT},
7130
    {"env", JANET_SANDBOX_ENV},
7131
    {"ffi", JANET_SANDBOX_FFI},
7132
    {"ffi-define", JANET_SANDBOX_FFI_DEFINE},
7133
    {"ffi-jit", JANET_SANDBOX_FFI_JIT},
7134
    {"ffi-use", JANET_SANDBOX_FFI_USE},
7135
    {"fs", JANET_SANDBOX_FS},
7136
    {"fs-read", JANET_SANDBOX_FS_READ},
7137
    {"fs-temp", JANET_SANDBOX_FS_TEMP},
7138
    {"fs-write", JANET_SANDBOX_FS_WRITE},
7139
    {"hrtime", JANET_SANDBOX_HRTIME},
7140
    {"modules", JANET_SANDBOX_DYNAMIC_MODULES},
7141
    {"net", JANET_SANDBOX_NET},
7142
    {"net-connect", JANET_SANDBOX_NET_CONNECT},
7143
    {"net-listen", JANET_SANDBOX_NET_LISTEN},
7144
    {"sandbox", JANET_SANDBOX_SANDBOX},
7145
    {"signal", JANET_SANDBOX_SIGNAL},
7146
    {"subprocess", JANET_SANDBOX_SUBPROCESS},
7147
    {NULL, 0}
7148
};
7149
7150
JANET_CORE_FN(janet_core_sandbox,
7151
              "(sandbox & forbidden-capabilities)",
7152
              "Disable feature sets to prevent the interpreter from using certain system resources. "
7153
              "Once a feature is disabled, there is no way to re-enable it. Capabilities can be:\n\n"
7154
              "* :all - disallow all (except IO to stdout, stderr, and stdin)\n"
7155
              "* :chroot - disallow calling `os/posix-chroot`\n"
7156
              "* :env - disallow reading and write env variables\n"
7157
              "* :ffi - disallow FFI (recommended if disabling anything else)\n"
7158
              "* :ffi-define - disallow loading new FFI modules and binding new functions\n"
7159
              "* :ffi-jit - disallow calling `ffi/jitfn`\n"
7160
              "* :ffi-use - disallow using any previously bound FFI functions and memory-unsafe functions.\n"
7161
              "* :fs - disallow access to the file system\n"
7162
              "* :fs-read - disallow read access to the file system\n"
7163
              "* :fs-temp - disallow creating temporary files\n"
7164
              "* :fs-write - disallow write access to the file system\n"
7165
              "* :hrtime - disallow high-resolution timers\n"
7166
              "* :modules - disallow load dynamic modules (natives)\n"
7167
              "* :net - disallow network access\n"
7168
              "* :net-connect - disallow making outbound network connections\n"
7169
              "* :net-listen - disallow accepting inbound network connections\n"
7170
              "* :sandbox - disallow calling this function\n"
7171
              "* :signal - disallow adding or removing signal handlers\n"
7172
0
              "* :subprocess - disallow running subprocesses") {
7173
0
    uint32_t flags = 0;
7174
0
    for (int32_t i = 0; i < argc; i++) {
7175
0
        JanetKeyword kw = janet_getkeyword(argv, i);
7176
0
        const SandboxOption *opt = sandbox_options;
7177
0
        while (opt->name != NULL) {
7178
0
            if (janet_cstrcmp(kw, opt->name) == 0) {
7179
0
                flags |= opt->flag;
7180
0
                break;
7181
0
            }
7182
0
            opt++;
7183
0
        }
7184
0
        if (opt->name == NULL) janet_panicf("unknown capability %v", argv[i]);
7185
0
    }
7186
0
    janet_sandbox(flags);
7187
0
    return janet_wrap_nil();
7188
0
}
7189
7190
#ifdef JANET_BOOTSTRAP
7191
7192
/* Utility for inline assembly */
7193
static void janet_quick_asm(
7194
    JanetTable *env,
7195
    int32_t flags,
7196
    const char *name,
7197
    int32_t arity,
7198
    int32_t min_arity,
7199
    int32_t max_arity,
7200
    int32_t slots,
7201
    const uint32_t *bytecode,
7202
    size_t bytecode_size,
7203
    const char *doc) {
7204
    JanetFuncDef *def = janet_funcdef_alloc();
7205
    def->arity = arity;
7206
    def->min_arity = min_arity;
7207
    def->max_arity = max_arity;
7208
    def->flags = flags;
7209
    def->slotcount = slots;
7210
    def->bytecode = janet_malloc(bytecode_size);
7211
    def->bytecode_length = (int32_t)(bytecode_size / sizeof(uint32_t));
7212
    def->name = janet_cstring(name);
7213
    if (!def->bytecode) {
7214
        JANET_OUT_OF_MEMORY;
7215
    }
7216
    memcpy(def->bytecode, bytecode, bytecode_size);
7217
    janet_def_addflags(def);
7218
    janet_def(env, name, janet_wrap_function(janet_thunk(def)), doc);
7219
}
7220
7221
/* Macros for easier inline assembly */
7222
#define SSS(op, a, b, c) ((op) | ((a) << 8) | ((b) << 16) | ((c) << 24))
7223
#define SS(op, a, b) ((op) | ((a) << 8) | ((b) << 16))
7224
#define SSI(op, a, b, I) ((op) | ((a) << 8) | ((b) << 16) | ((uint32_t)(I) << 24))
7225
#define S(op, a) ((op) | ((a) << 8))
7226
#define SI(op, a, I) ((op) | ((a) << 8) | ((uint32_t)(I) << 16))
7227
7228
/* Templatize a varop */
7229
static void templatize_varop(
7230
    JanetTable *env,
7231
    int32_t flags,
7232
    const char *name,
7233
    int32_t nullary,
7234
    int32_t unary,
7235
    uint32_t op,
7236
    const char *doc) {
7237
7238
    /* Variadic operator assembly. Must be templatized for each different opcode. */
7239
    /* Reg 0: Argument tuple (args) */
7240
    /* Reg 1: Argument count (argn) */
7241
    /* Reg 2: Jump flag (jump?) */
7242
    /* Reg 3: Accumulator (accum) */
7243
    /* Reg 4: Next operand (operand) */
7244
    /* Reg 5: Loop iterator (i) */
7245
    uint32_t varop_asm[] = {
7246
        SS(JOP_LENGTH, 1, 0), /* Put number of arguments in register 1 -> argn = count(args) */
7247
7248
        /* Check nullary */
7249
        SSS(JOP_EQUALS_IMMEDIATE, 2, 1, 0), /* Check if numargs equal to 0 */
7250
        SI(JOP_JUMP_IF_NOT, 2, 3), /* If not 0, jump to next check */
7251
        /* Nullary */
7252
        SI(JOP_LOAD_INTEGER, 3, nullary),  /* accum = nullary value */
7253
        S(JOP_RETURN, 3), /* return accum */
7254
7255
        /* Check unary */
7256
        SSI(JOP_EQUALS_IMMEDIATE, 2, 1, 1), /* Check if numargs equal to 1 */
7257
        SI(JOP_JUMP_IF_NOT, 2, 5), /* If not 1, jump to next check */
7258
        /* Unary */
7259
        SI(JOP_LOAD_INTEGER, 3, unary), /* accum = unary value */
7260
        SSI(JOP_GET_INDEX, 4, 0, 0), /* operand = args[0] */
7261
        SSS(op, 3, 3, 4), /* accum = accum op operand */
7262
        S(JOP_RETURN, 3), /* return accum */
7263
7264
        /* Mutli (2 or more) arity */
7265
        /* Prime loop */
7266
        SSI(JOP_GET_INDEX, 3, 0, 0), /* accum = args[0] */
7267
        SI(JOP_LOAD_INTEGER, 5, 1), /* i = 1 */
7268
        /* Main loop */
7269
        SSS(JOP_IN, 4, 0, 5), /* operand = args[i] */
7270
        SSS(op, 3, 3, 4), /* accum = accum op operand */
7271
        SSI(JOP_ADD_IMMEDIATE, 5, 5, 1), /* i++ */
7272
        SSI(JOP_EQUALS, 2, 5, 1), /* jump? = (i == argn) */
7273
        SI(JOP_JUMP_IF_NOT, 2, -4), /* if not jump? go back 4 */
7274
7275
        /* Done, do last and return accumulator */
7276
        S(JOP_RETURN, 3) /* return accum */
7277
    };
7278
7279
    janet_quick_asm(
7280
        env,
7281
        flags | JANET_FUNCDEF_FLAG_VARARG,
7282
        name,
7283
        0,
7284
        0,
7285
        INT32_MAX,
7286
        6,
7287
        varop_asm,
7288
        sizeof(varop_asm),
7289
        doc);
7290
}
7291
7292
/* Templatize variadic comparators */
7293
static void templatize_comparator(
7294
    JanetTable *env,
7295
    int32_t flags,
7296
    const char *name,
7297
    int invert,
7298
    uint32_t op,
7299
    const char *doc) {
7300
7301
    /* Reg 0: Argument tuple (args) */
7302
    /* Reg 1: Argument count (argn) */
7303
    /* Reg 2: Jump flag (jump?) */
7304
    /* Reg 3: Last value (last) */
7305
    /* Reg 4: Next operand (next) */
7306
    /* Reg 5: Loop iterator (i) */
7307
    uint32_t comparator_asm[] = {
7308
        SS(JOP_LENGTH, 1, 0), /* Put number of arguments in register 1 -> argn = count(args) */
7309
        SSS(JOP_LESS_THAN_IMMEDIATE, 2, 1, 2), /* Check if numargs less than 2 */
7310
        SI(JOP_JUMP_IF, 2, 10), /* If numargs < 2, jump to done */
7311
7312
        /* Prime loop */
7313
        SSI(JOP_GET_INDEX, 3, 0, 0), /* last = args[0] */
7314
        SI(JOP_LOAD_INTEGER, 5, 1), /* i = 1 */
7315
7316
        /* Main loop */
7317
        SSS(JOP_IN, 4, 0, 5), /* next = args[i] */
7318
        SSS(op, 2, 3, 4), /* jump? = last compare next */
7319
        SI(JOP_JUMP_IF_NOT, 2, 7), /* if not jump? goto fail (return false) */
7320
        SSI(JOP_ADD_IMMEDIATE, 5, 5, 1), /* i++ */
7321
        SS(JOP_MOVE_NEAR, 3, 4), /* last = next */
7322
        SSI(JOP_EQUALS, 2, 5, 1), /* jump? = (i == argn) */
7323
        SI(JOP_JUMP_IF_NOT, 2, -6), /* if not jump? go back 6 */
7324
7325
        /* Done, return true */
7326
        S(invert ? JOP_LOAD_FALSE : JOP_LOAD_TRUE, 3),
7327
        S(JOP_RETURN, 3),
7328
7329
        /* Failed, return false */
7330
        S(invert ? JOP_LOAD_TRUE : JOP_LOAD_FALSE, 3),
7331
        S(JOP_RETURN, 3)
7332
    };
7333
7334
    janet_quick_asm(
7335
        env,
7336
        flags | JANET_FUNCDEF_FLAG_VARARG,
7337
        name,
7338
        0,
7339
        0,
7340
        INT32_MAX,
7341
        6,
7342
        comparator_asm,
7343
        sizeof(comparator_asm),
7344
        doc);
7345
}
7346
7347
/* Make the apply function */
7348
static void make_apply(JanetTable *env) {
7349
    /* Reg 0: Function (fun) */
7350
    /* Reg 1: Argument tuple (args) */
7351
    /* Reg 2: Argument count (argn) */
7352
    /* Reg 3: Jump flag (jump?) */
7353
    /* Reg 4: Loop iterator (i) */
7354
    /* Reg 5: Loop values (x) */
7355
    uint32_t apply_asm[] = {
7356
        SS(JOP_LENGTH, 2, 1),
7357
        SSS(JOP_EQUALS_IMMEDIATE, 3, 2, 0), /* Immediate tail call if no args */
7358
        SI(JOP_JUMP_IF, 3, 9),
7359
7360
        /* Prime loop */
7361
        SI(JOP_LOAD_INTEGER, 4, 0), /* i = 0 */
7362
7363
        /* Main loop */
7364
        SSS(JOP_IN, 5, 1, 4), /* x = args[i] */
7365
        SSI(JOP_ADD_IMMEDIATE, 4, 4, 1), /* i++ */
7366
        SSI(JOP_EQUALS, 3, 4, 2), /* jump? = (i == argn) */
7367
        SI(JOP_JUMP_IF, 3, 3), /* if jump? go forward 3 */
7368
        S(JOP_PUSH, 5),
7369
        (JOP_JUMP | ((uint32_t)(-5) << 8)),
7370
7371
        /* Push the array */
7372
        S(JOP_PUSH_ARRAY, 5),
7373
7374
        /* Call the function */
7375
        S(JOP_TAILCALL, 0)
7376
    };
7377
    janet_quick_asm(env, JANET_FUN_APPLY | JANET_FUNCDEF_FLAG_VARARG,
7378
                    "apply", 1, 1, INT32_MAX, 6, apply_asm, sizeof(apply_asm),
7379
                    JDOC("(apply f & args)\n\n"
7380
         "Applies a function f to a variable number of arguments. Each "
7381
         "element in args is used as an argument to f, except the last "
7382
         "element in args, which is expected to be an array or a tuple. "
7383
         "Each element in this last argument is then also pushed as an "
7384
         "argument to f."));
7385
}
7386
7387
static const uint32_t error_asm[] = {
7388
    JOP_ERROR
7389
};
7390
static const uint32_t debug_asm[] = {
7391
    JOP_SIGNAL | (2 << 24),
7392
    JOP_RETURN
7393
};
7394
static const uint32_t yield_asm[] = {
7395
    JOP_SIGNAL | (3 << 24),
7396
    JOP_RETURN
7397
};
7398
static const uint32_t resume_asm[] = {
7399
    JOP_RESUME | (1 << 24),
7400
    JOP_RETURN
7401
};
7402
static const uint32_t cancel_asm[] = {
7403
    JOP_CANCEL | (1 << 24),
7404
    JOP_RETURN
7405
};
7406
static const uint32_t in_asm[] = {
7407
    JOP_IN | (1 << 24),
7408
    JOP_LOAD_NIL | (3 << 8),
7409
    JOP_EQUALS | (3 << 8) | (3 << 24),
7410
    JOP_JUMP_IF | (3 << 8) | (2 << 16),
7411
    JOP_RETURN,
7412
    JOP_RETURN | (2 << 8)
7413
};
7414
static const uint32_t get_asm[] = {
7415
    JOP_GET | (1 << 24),
7416
    JOP_LOAD_NIL | (3 << 8),
7417
    JOP_EQUALS | (3 << 8) | (3 << 24),
7418
    JOP_JUMP_IF | (3 << 8) | (2 << 16),
7419
    JOP_RETURN,
7420
    JOP_RETURN | (2 << 8)
7421
};
7422
static const uint32_t put_asm[] = {
7423
    JOP_PUT | (1 << 16) | (2 << 24),
7424
    JOP_RETURN
7425
};
7426
static const uint32_t length_asm[] = {
7427
    JOP_LENGTH,
7428
    JOP_RETURN
7429
};
7430
static const uint32_t bnot_asm[] = {
7431
    JOP_BNOT,
7432
    JOP_RETURN
7433
};
7434
static const uint32_t propagate_asm[] = {
7435
    JOP_PROPAGATE | (1 << 24),
7436
    JOP_RETURN
7437
};
7438
static const uint32_t next_asm[] = {
7439
    JOP_NEXT | (1 << 24),
7440
    JOP_RETURN
7441
};
7442
static const uint32_t cmp_asm[] = {
7443
    JOP_COMPARE | (1 << 24),
7444
    JOP_RETURN
7445
};
7446
#endif /* ifdef JANET_BOOTSTRAP */
7447
7448
/*
7449
 * Setup Environment
7450
 */
7451
7452
0
static void janet_load_libs(JanetTable *env) {
7453
0
    JanetRegExt corelib_cfuns[] = {
7454
0
        JANET_CORE_REG("native", janet_core_native),
7455
0
        JANET_CORE_REG("describe", janet_core_describe),
7456
0
        JANET_CORE_REG("string", janet_core_string),
7457
0
        JANET_CORE_REG("symbol", janet_core_symbol),
7458
0
        JANET_CORE_REG("keyword", janet_core_keyword),
7459
0
        JANET_CORE_REG("buffer", janet_core_buffer),
7460
0
        JANET_CORE_REG("abstract?", janet_core_is_abstract),
7461
0
        JANET_CORE_REG("table", janet_core_table),
7462
0
        JANET_CORE_REG("array", janet_core_array),
7463
0
        JANET_CORE_REG("scan-number", janet_core_scannumber),
7464
0
        JANET_CORE_REG("tuple", janet_core_tuple),
7465
0
        JANET_CORE_REG("struct", janet_core_struct),
7466
0
        JANET_CORE_REG("gensym", janet_core_gensym),
7467
0
        JANET_CORE_REG("gccollect", janet_core_gccollect),
7468
0
        JANET_CORE_REG("gcsetinterval", janet_core_gcsetinterval),
7469
0
        JANET_CORE_REG("gcinterval", janet_core_gcinterval),
7470
0
        JANET_CORE_REG("type", janet_core_type),
7471
0
        JANET_CORE_REG("hash", janet_core_hash),
7472
0
        JANET_CORE_REG("getline", janet_core_getline),
7473
0
        JANET_CORE_REG("dyn", janet_core_dyn),
7474
0
        JANET_CORE_REG("setdyn", janet_core_setdyn),
7475
0
        JANET_CORE_REG("trace", janet_core_trace),
7476
0
        JANET_CORE_REG("untrace", janet_core_untrace),
7477
0
        JANET_CORE_REG("module/expand-path", janet_core_expand_path),
7478
0
        JANET_CORE_REG("int?", janet_core_check_int),
7479
0
        JANET_CORE_REG("nat?", janet_core_check_nat),
7480
0
        JANET_CORE_REG("bytes?", janet_core_is_bytes),
7481
0
        JANET_CORE_REG("indexed?", janet_core_is_indexed),
7482
0
        JANET_CORE_REG("dictionary?", janet_core_is_dictionary),
7483
0
        JANET_CORE_REG("lengthable?", janet_core_is_lengthable),
7484
0
        JANET_CORE_REG("slice", janet_core_slice),
7485
0
        JANET_CORE_REG("range", janet_core_range),
7486
0
        JANET_CORE_REG("signal", janet_core_signal),
7487
0
        JANET_CORE_REG("memcmp", janet_core_memcmp),
7488
0
        JANET_CORE_REG("getproto", janet_core_getproto),
7489
0
        JANET_CORE_REG("sandbox", janet_core_sandbox),
7490
0
        JANET_REG_END
7491
0
    };
7492
0
    janet_core_cfuns_ext(env, NULL, corelib_cfuns);
7493
0
    janet_lib_io(env);
7494
0
    janet_lib_math(env);
7495
0
    janet_lib_array(env);
7496
0
    janet_lib_tuple(env);
7497
0
    janet_lib_buffer(env);
7498
0
    janet_lib_table(env);
7499
0
    janet_lib_struct(env);
7500
0
    janet_lib_fiber(env);
7501
0
    janet_lib_os(env);
7502
0
    janet_lib_parse(env);
7503
0
    janet_lib_compile(env);
7504
0
    janet_lib_debug(env);
7505
0
    janet_lib_string(env);
7506
0
    janet_lib_marsh(env);
7507
0
#ifdef JANET_PEG
7508
0
    janet_lib_peg(env);
7509
0
#endif
7510
0
#ifdef JANET_ASSEMBLER
7511
0
    janet_lib_asm(env);
7512
0
#endif
7513
0
#ifdef JANET_INT_TYPES
7514
0
    janet_lib_inttypes(env);
7515
0
#endif
7516
0
#ifdef JANET_EV
7517
0
    janet_lib_ev(env);
7518
0
#ifdef JANET_FILEWATCH
7519
0
    janet_lib_filewatch(env);
7520
0
#endif
7521
0
#endif
7522
0
#ifdef JANET_NET
7523
0
    janet_lib_net(env);
7524
0
#endif
7525
0
#ifdef JANET_FFI
7526
0
    janet_lib_ffi(env);
7527
0
#endif
7528
0
}
7529
7530
#ifdef JANET_BOOTSTRAP
7531
7532
JanetTable *janet_core_env(JanetTable *replacements) {
7533
    JanetTable *env = (NULL != replacements) ? replacements : janet_table(0);
7534
    janet_quick_asm(env, JANET_FUN_CMP,
7535
                    "cmp", 2, 2, 2, 2, cmp_asm, sizeof(cmp_asm),
7536
                    JDOC("(cmp x y)\n\n"
7537
         "Returns -1 if x is strictly less than y, 1 if y is strictly greater "
7538
         "than x, and 0 otherwise. To return 0, x and y must be the exact same type."));
7539
    janet_quick_asm(env, JANET_FUN_NEXT,
7540
                    "next", 2, 1, 2, 2, next_asm, sizeof(next_asm),
7541
                    JDOC("(next ds &opt key)\n\n"
7542
         "Gets the next key in a data structure. Can be used to iterate through "
7543
         "the keys of a data structure in an unspecified order. Keys are guaranteed "
7544
         "to be seen only once per iteration if the data structure is not mutated "
7545
         "during iteration. If key is nil, next returns the first key. If next "
7546
         "returns nil, there are no more keys to iterate through."));
7547
    janet_quick_asm(env, JANET_FUN_PROP,
7548
                    "propagate", 2, 2, 2, 2, propagate_asm, sizeof(propagate_asm),
7549
                    JDOC("(propagate x fiber)\n\n"
7550
         "Propagate a signal from a fiber to the current fiber and "
7551
         "set the last value of the current fiber to `x`.  The signal "
7552
         "value is then available as the status of the current fiber. "
7553
         "The resulting stack trace from the current fiber will include "
7554
         "frames from fiber. If fiber is in a state that can be resumed, "
7555
         "resuming the current fiber will first resume `fiber`. "
7556
         "This function can be used to re-raise an error without losing "
7557
         "the original stack trace."));
7558
    janet_quick_asm(env, JANET_FUN_DEBUG,
7559
                    "debug", 1, 0, 1, 1, debug_asm, sizeof(debug_asm),
7560
                    JDOC("(debug &opt x)\n\n"
7561
         "Throws a debug signal that can be caught by a parent fiber and used to inspect "
7562
         "the running state of the current fiber. Returns the value passed in by resume."));
7563
    janet_quick_asm(env, JANET_FUN_ERROR,
7564
                    "error", 1, 1, 1, 1, error_asm, sizeof(error_asm),
7565
                    JDOC("(error e)\n\n"
7566
         "Throws an error e that can be caught and handled by a parent fiber."));
7567
    janet_quick_asm(env, JANET_FUN_YIELD,
7568
                    "yield", 1, 0, 1, 2, yield_asm, sizeof(yield_asm),
7569
                    JDOC("(yield &opt x)\n\n"
7570
         "Yield a value to a parent fiber. When a fiber yields, its execution is paused until "
7571
         "another thread resumes it. The fiber will then resume, and the last yield call will "
7572
         "return the value that was passed to resume."));
7573
    janet_quick_asm(env, JANET_FUN_CANCEL,
7574
                    "cancel", 2, 2, 2, 2, cancel_asm, sizeof(cancel_asm),
7575
                    JDOC("(cancel fiber err)\n\n"
7576
         "Resume a fiber but have it immediately raise an error. This lets a programmer unwind a pending fiber. "
7577
         "Returns the same result as resume."));
7578
    janet_quick_asm(env, JANET_FUN_RESUME,
7579
                    "resume", 2, 1, 2, 2, resume_asm, sizeof(resume_asm),
7580
                    JDOC("(resume fiber &opt x)\n\n"
7581
         "Resume a new or suspended fiber and optionally pass in a value to the fiber that "
7582
         "will be returned to the last yield in the case of a pending fiber, or the argument to "
7583
         "the dispatch function in the case of a new fiber. Returns either the return result of "
7584
         "the fiber's dispatch function, or the value from the next yield call in fiber."));
7585
    janet_quick_asm(env, JANET_FUN_IN,
7586
                    "in", 3, 2, 3, 4, in_asm, sizeof(in_asm),
7587
                    JDOC("(in ds key &opt dflt)\n\n"
7588
         "Get value in ds at key, works on associative data structures. Arrays, tuples, tables, structs, "
7589
         "strings, symbols, and buffers are all associative and can be used. Arrays, tuples, strings, buffers, "
7590
         "and symbols must use integer keys that are in bounds or an error is raised. Structs and tables can "
7591
         "take any value as a key except nil and will return nil or dflt if not found."));
7592
    janet_quick_asm(env, JANET_FUN_GET,
7593
                    "get", 3, 2, 3, 4, get_asm, sizeof(in_asm),
7594
                    JDOC("(get ds key &opt dflt)\n\n"
7595
         "Get the value mapped to key in data structure ds, and return dflt or nil if not found. "
7596
         "Similar to in, but will not throw an error if the key is invalid for the data structure "
7597
         "unless the data structure is an abstract type. In that case, the abstract type getter may throw "
7598
         "an error."));
7599
    janet_quick_asm(env, JANET_FUN_PUT,
7600
                    "put", 3, 3, 3, 3, put_asm, sizeof(put_asm),
7601
                    JDOC("(put ds key value)\n\n"
7602
         "Associate a key with a value in any mutable associative data structure. Indexed data structures "
7603
         "(arrays and buffers) only accept non-negative integer keys, and will expand if an out of bounds "
7604
         "value is provided. In an array, extra space will be filled with nils, and in a buffer, extra "
7605
         "space will be filled with 0 bytes. In a table, putting a key that is contained in the table prototype "
7606
         "will hide the association defined by the prototype, but will not mutate the prototype table. Putting "
7607
         "a value nil into a table will remove the key from the table. Returns the data structure ds."));
7608
    janet_quick_asm(env, JANET_FUN_LENGTH,
7609
                    "length", 1, 1, 1, 1, length_asm, sizeof(length_asm),
7610
                    JDOC("(length ds)\n\n"
7611
         "Returns the length or count of a data structure in constant time as an integer. For "
7612
         "structs and tables, returns the number of key-value pairs in the data structure."));
7613
    janet_quick_asm(env, JANET_FUN_BNOT,
7614
                    "bnot", 1, 1, 1, 1, bnot_asm, sizeof(bnot_asm),
7615
                    JDOC("(bnot x)\n\nReturns the bit-wise inverse of integer x."));
7616
    make_apply(env);
7617
7618
    /* Variadic ops */
7619
    templatize_varop(env, JANET_FUN_ADD, "+", 0, 0, JOP_ADD,
7620
                     JDOC("(+ & xs)\n\n"
7621
         "Returns the sum of all xs. xs must be integers or real numbers only. If xs is empty, return 0."));
7622
    templatize_varop(env, JANET_FUN_SUBTRACT, "-", 0, 0, JOP_SUBTRACT,
7623
                     JDOC("(- & xs)\n\n"
7624
         "Returns the difference of xs. If xs is empty, returns 0. If xs has one element, returns the "
7625
         "negative value of that element. Otherwise, returns the first element in xs minus the sum of "
7626
         "the rest of the elements."));
7627
    templatize_varop(env, JANET_FUN_MULTIPLY, "*", 1, 1, JOP_MULTIPLY,
7628
                     JDOC("(* & xs)\n\n"
7629
         "Returns the product of all elements in xs. If xs is empty, returns 1."));
7630
    templatize_varop(env, JANET_FUN_DIVIDE, "/", 1, 1, JOP_DIVIDE,
7631
                     JDOC("(/ & xs)\n\n"
7632
         "Returns the quotient of xs. If xs is empty, returns 1. If xs has one value x, returns "
7633
         "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining "
7634
         "values."));
7635
    templatize_varop(env, JANET_FUN_DIVIDE_FLOOR, "div", 1, 1, JOP_DIVIDE_FLOOR,
7636
                     JDOC("(div & xs)\n\n"
7637
         "Returns the floored division of xs. If xs is empty, returns 1. If xs has one value x, returns "
7638
         "the reciprocal of x. Otherwise return the first value of xs repeatedly divided by the remaining "
7639
         "values."));
7640
    templatize_varop(env, JANET_FUN_MODULO, "mod", 0, 1, JOP_MODULO,
7641
                     JDOC("(mod & xs)\n\n"
7642
         "Returns the result of applying the modulo operator on the first value of xs with each remaining value. "
7643
         "`(mod x 0)` is defined to be `x`."));
7644
    templatize_varop(env, JANET_FUN_REMAINDER, "%", 0, 1, JOP_REMAINDER,
7645
                     JDOC("(% & xs)\n\n"
7646
         "Returns the remainder of dividing the first value of xs by each remaining value."));
7647
    templatize_varop(env, JANET_FUN_BAND, "band", -1, -1, JOP_BAND,
7648
                     JDOC("(band & xs)\n\n"
7649
         "Returns the bit-wise and of all values in xs. Each x in xs must be an integer."));
7650
    templatize_varop(env, JANET_FUN_BOR, "bor", 0, 0, JOP_BOR,
7651
                     JDOC("(bor & xs)\n\n"
7652
         "Returns the bit-wise or of all values in xs. Each x in xs must be an integer."));
7653
    templatize_varop(env, JANET_FUN_BXOR, "bxor", 0, 0, JOP_BXOR,
7654
                     JDOC("(bxor & xs)\n\n"
7655
         "Returns the bit-wise xor of all values in xs. Each in xs must be an integer."));
7656
    templatize_varop(env, JANET_FUN_LSHIFT, "blshift", 1, 1, JOP_SHIFT_LEFT,
7657
                     JDOC("(blshift x & shifts)\n\n"
7658
         "Returns the value of x bit shifted left by the sum of all values in shifts. x "
7659
         "and each element in shift must be an integer."));
7660
    templatize_varop(env, JANET_FUN_RSHIFT, "brshift", 1, 1, JOP_SHIFT_RIGHT,
7661
                     JDOC("(brshift x & shifts)\n\n"
7662
         "Returns the value of x bit shifted right by the sum of all values in shifts. x "
7663
         "and each element in shift must be an integer."));
7664
    templatize_varop(env, JANET_FUN_RSHIFTU, "brushift", 1, 1, JOP_SHIFT_RIGHT_UNSIGNED,
7665
                     JDOC("(brushift x & shifts)\n\n"
7666
         "Returns the value of x bit shifted right by the sum of all values in shifts. x "
7667
         "and each element in shift must be an integer. The sign of x is not preserved, so "
7668
         "for positive shifts the return value will always be positive."));
7669
7670
    /* Variadic comparators */
7671
    templatize_comparator(env, JANET_FUN_GT, ">", 0, JOP_GREATER_THAN,
7672
                          JDOC("(> & xs)\n\n"
7673
         "Check if xs is in descending order. Returns a boolean."));
7674
    templatize_comparator(env, JANET_FUN_LT, "<", 0, JOP_LESS_THAN,
7675
                          JDOC("(< & xs)\n\n"
7676
         "Check if xs is in ascending order. Returns a boolean."));
7677
    templatize_comparator(env, JANET_FUN_GTE, ">=", 0, JOP_GREATER_THAN_EQUAL,
7678
                          JDOC("(>= & xs)\n\n"
7679
         "Check if xs is in non-ascending order. Returns a boolean."));
7680
    templatize_comparator(env, JANET_FUN_LTE, "<=", 0, JOP_LESS_THAN_EQUAL,
7681
                          JDOC("(<= & xs)\n\n"
7682
         "Check if xs is in non-descending order. Returns a boolean."));
7683
    templatize_comparator(env, JANET_FUN_EQ, "=", 0, JOP_EQUALS,
7684
                          JDOC("(= & xs)\n\n"
7685
         "Check if all values in xs are equal. Returns a boolean."));
7686
    templatize_comparator(env, JANET_FUN_NEQ, "not=", 1, JOP_EQUALS,
7687
                          JDOC("(not= & xs)\n\n"
7688
         "Check if any values in xs are not equal. Returns a boolean."));
7689
7690
    /* Platform detection */
7691
    janet_def(env, "janet/version", janet_cstringv(JANET_VERSION),
7692
              JDOC("The version number of the running janet program."));
7693
    janet_def(env, "janet/build", janet_cstringv(JANET_BUILD),
7694
              JDOC("The build identifier of the running janet program."));
7695
    janet_def(env, "janet/config-bits", janet_wrap_integer(JANET_CURRENT_CONFIG_BITS),
7696
              JDOC("The flag set of config options from janetconf.h which is used to check "
7697
         "if native modules are compatible with the host program."));
7698
7699
    /* Allow references to the environment */
7700
    janet_def(env, "root-env", janet_wrap_table(env),
7701
              JDOC("The root environment used to create environments with (make-env)."));
7702
7703
    janet_load_libs(env);
7704
    janet_gcroot(janet_wrap_table(env));
7705
    return env;
7706
}
7707
7708
#else
7709
7710
0
JanetTable *janet_core_env(JanetTable *replacements) {
7711
    /* Memoize core env, ignoring replacements the second time around. */
7712
0
    if (NULL != janet_vm.core_env) {
7713
0
        return janet_vm.core_env;
7714
0
    }
7715
7716
0
    JanetTable *dict = janet_core_lookup_table(replacements);
7717
7718
    /* Unmarshal bytecode */
7719
0
    Janet marsh_out = janet_unmarshal(
7720
0
                          janet_core_image,
7721
0
                          janet_core_image_size,
7722
0
                          0,
7723
0
                          dict,
7724
0
                          NULL);
7725
7726
    /* Memoize */
7727
0
    janet_gcroot(marsh_out);
7728
0
    JanetTable *env = janet_unwrap_table(marsh_out);
7729
0
    janet_vm.core_env = env;
7730
7731
    /* Invert image dict manually here. We can't do this in boot.janet as it
7732
     * breaks deterministic builds */
7733
0
    Janet lidv, midv;
7734
0
    lidv = midv = janet_wrap_nil();
7735
0
    janet_resolve(env, janet_csymbol("load-image-dict"), &lidv);
7736
0
    janet_resolve(env, janet_csymbol("make-image-dict"), &midv);
7737
0
    JanetTable *lid = janet_unwrap_table(lidv);
7738
0
    JanetTable *mid = janet_unwrap_table(midv);
7739
0
    for (int32_t i = 0; i < lid->capacity; i++) {
7740
0
        const JanetKV *kv = lid->data + i;
7741
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
7742
0
            janet_table_put(mid, kv->value, kv->key);
7743
0
        }
7744
0
    }
7745
7746
0
    return env;
7747
0
}
7748
7749
#endif
7750
7751
0
JanetTable *janet_core_lookup_table(JanetTable *replacements) {
7752
0
    JanetTable *dict = janet_table(512);
7753
0
    janet_load_libs(dict);
7754
7755
    /* Add replacements */
7756
0
    if (replacements != NULL) {
7757
0
        for (int32_t i = 0; i < replacements->capacity; i++) {
7758
0
            JanetKV kv = replacements->data[i];
7759
0
            if (!janet_checktype(kv.key, JANET_NIL)) {
7760
0
                janet_table_put(dict, kv.key, kv.value);
7761
                /* Add replacement functions to registry? */
7762
0
            }
7763
0
        }
7764
0
    }
7765
7766
0
    return dict;
7767
0
}
7768
7769
7770
/* src/core/debug.c */
7771
#line 0 "src/core/debug.c"
7772
7773
/*
7774
* Copyright (c) 2025 Calvin Rose
7775
*
7776
* Permission is hereby granted, free of charge, to any person obtaining a copy
7777
* of this software and associated documentation files (the "Software"), to
7778
* deal in the Software without restriction, including without limitation the
7779
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7780
* sell copies of the Software, and to permit persons to whom the Software is
7781
* furnished to do so, subject to the following conditions:
7782
*
7783
* The above copyright notice and this permission notice shall be included in
7784
* all copies or substantial portions of the Software.
7785
*
7786
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7787
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7788
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7789
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7790
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
7791
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
7792
* IN THE SOFTWARE.
7793
*/
7794
7795
#ifndef JANET_AMALG
7796
#include "features.h"
7797
#include <janet.h>
7798
#include "gc.h"
7799
#include "state.h"
7800
#include "util.h"
7801
#include "vector.h"
7802
#endif
7803
7804
/* Implements functionality to build a debugger from within janet.
7805
 * The repl should also be able to serve as pretty featured debugger
7806
 * out of the box. */
7807
7808
/* Add a break point to a function */
7809
0
void janet_debug_break(JanetFuncDef *def, int32_t pc) {
7810
0
    if (pc >= def->bytecode_length || pc < 0)
7811
0
        janet_panic("invalid bytecode offset");
7812
0
    def->bytecode[pc] |= 0x80;
7813
0
}
7814
7815
/* Remove a break point from a function */
7816
0
void janet_debug_unbreak(JanetFuncDef *def, int32_t pc) {
7817
0
    if (pc >= def->bytecode_length || pc < 0)
7818
0
        janet_panic("invalid bytecode offset");
7819
0
    def->bytecode[pc] &= ~((uint32_t)0x80);
7820
0
}
7821
7822
/*
7823
 * Find a location for a breakpoint given a source file an
7824
 * location.
7825
 */
7826
void janet_debug_find(
7827
    JanetFuncDef **def_out, int32_t *pc_out,
7828
0
    const uint8_t *source, int32_t sourceLine, int32_t sourceColumn) {
7829
    /* Scan the heap for right func def */
7830
0
    JanetGCObject *current = janet_vm.blocks;
7831
    /* Keep track of the best source mapping we have seen so far */
7832
0
    int32_t besti = -1;
7833
0
    int32_t best_line = -1;
7834
0
    int32_t best_column = -1;
7835
0
    JanetFuncDef *best_def = NULL;
7836
0
    while (NULL != current) {
7837
0
        if ((current->flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_FUNCDEF) {
7838
0
            JanetFuncDef *def = (JanetFuncDef *)(current);
7839
0
            if (def->sourcemap &&
7840
0
                    def->source &&
7841
0
                    !janet_string_compare(source, def->source)) {
7842
                /* Correct source file, check mappings. The chosen
7843
                 * pc index is the instruction closest to the given line column, but
7844
                 * not after. */
7845
0
                int32_t i;
7846
0
                for (i = 0; i < def->bytecode_length; i++) {
7847
0
                    int32_t line = def->sourcemap[i].line;
7848
0
                    int32_t column = def->sourcemap[i].column;
7849
0
                    if (line <= sourceLine && line >= best_line) {
7850
0
                        if (column <= sourceColumn &&
7851
0
                                (line > best_line || column > best_column)) {
7852
0
                            best_line = line;
7853
0
                            best_column = column;
7854
0
                            besti = i;
7855
0
                            best_def = def;
7856
0
                        }
7857
0
                    }
7858
0
                }
7859
0
            }
7860
0
        }
7861
0
        current = current->data.next;
7862
0
    }
7863
0
    if (best_def) {
7864
0
        *def_out = best_def;
7865
0
        *pc_out = besti;
7866
0
    } else {
7867
0
        janet_panic("could not find breakpoint");
7868
0
    }
7869
0
}
7870
7871
0
void janet_stacktrace(JanetFiber *fiber, Janet err) {
7872
0
    const char *prefix = janet_checktype(err, JANET_NIL) ? NULL : "";
7873
0
    janet_stacktrace_ext(fiber, err, prefix);
7874
0
}
7875
7876
/* Error reporting. This can be emulated from within Janet, but for
7877
 * consistency with the top level code it is defined once. */
7878
0
void janet_stacktrace_ext(JanetFiber *fiber, Janet err, const char *prefix) {
7879
7880
0
    int32_t fi;
7881
0
    const char *errstr = (const char *)janet_to_string(err);
7882
0
    JanetFiber **fibers = NULL;
7883
0
    int wrote_error = !prefix;
7884
7885
0
    int print_color = janet_truthy(janet_dyn("err-color"));
7886
0
    if (print_color) janet_eprintf("\x1b[31m");
7887
7888
0
    while (fiber) {
7889
0
        janet_v_push(fibers, fiber);
7890
0
        fiber = fiber->child;
7891
0
    }
7892
7893
0
    for (fi = janet_v_count(fibers) - 1; fi >= 0; fi--) {
7894
0
        fiber = fibers[fi];
7895
0
        int32_t i = fiber->frame;
7896
0
        while (i > 0) {
7897
0
            JanetCFunRegistry *reg = NULL;
7898
0
            JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
7899
0
            JanetFuncDef *def = NULL;
7900
0
            i = frame->prevframe;
7901
7902
            /* Print prelude to stack frame */
7903
0
            if (!wrote_error) {
7904
0
                JanetFiberStatus status = janet_fiber_status(fiber);
7905
0
                janet_eprintf("%s%s: %s\n",
7906
0
                              prefix ? prefix : "",
7907
0
                              janet_status_names[status],
7908
0
                              errstr ? errstr : janet_status_names[status]);
7909
0
                wrote_error = 1;
7910
0
            }
7911
7912
0
            janet_eprintf("  in");
7913
7914
0
            if (frame->func) {
7915
0
                def = frame->func->def;
7916
0
                janet_eprintf(" %s", def->name ? (const char *)def->name : "<anonymous>");
7917
0
                if (def->source) {
7918
0
                    janet_eprintf(" [%s]", (const char *)def->source);
7919
0
                }
7920
0
            } else {
7921
0
                JanetCFunction cfun = (JanetCFunction)(frame->pc);
7922
0
                if (cfun) {
7923
0
                    reg = janet_registry_get(cfun);
7924
0
                    if (NULL != reg && NULL != reg->name) {
7925
0
                        if (reg->name_prefix) {
7926
0
                            janet_eprintf(" %s/%s", reg->name_prefix, reg->name);
7927
0
                        } else {
7928
0
                            janet_eprintf(" %s", reg->name);
7929
0
                        }
7930
0
                        if (NULL != reg->source_file) {
7931
0
                            janet_eprintf(" [%s]", reg->source_file);
7932
0
                        }
7933
0
                    } else {
7934
0
                        janet_eprintf(" <cfunction>");
7935
0
                    }
7936
0
                }
7937
0
            }
7938
0
            if (frame->flags & JANET_STACKFRAME_TAILCALL)
7939
0
                janet_eprintf(" (tail call)");
7940
0
            if (frame->func && frame->pc) {
7941
0
                int32_t off = (int32_t)(frame->pc - def->bytecode);
7942
0
                if (def->sourcemap) {
7943
0
                    JanetSourceMapping mapping = def->sourcemap[off];
7944
0
                    janet_eprintf(" on line %d, column %d", mapping.line, mapping.column);
7945
0
                } else {
7946
0
                    janet_eprintf(" pc=%d", off);
7947
0
                }
7948
0
            } else if (NULL != reg) {
7949
                /* C Function */
7950
0
                if (reg->source_line > 0) {
7951
0
                    janet_eprintf(" on line %d", (long) reg->source_line);
7952
0
                }
7953
0
            }
7954
0
            janet_eprintf("\n");
7955
            /* Print fiber points optionally. Clutters traces but provides info
7956
            if (i <= 0 && fi > 0) {
7957
                janet_eprintf("  in parent fiber\n");
7958
            }
7959
            */
7960
0
        }
7961
0
    }
7962
7963
0
    if (print_color) janet_eprintf("\x1b[0m");
7964
7965
0
    janet_v_free(fibers);
7966
0
}
7967
7968
/*
7969
 * CFuns
7970
 */
7971
7972
/* Helper to find funcdef and bytecode offset to insert or remove breakpoints.
7973
 * Takes a source file name and byte offset. */
7974
0
static void helper_find(int32_t argc, Janet *argv, JanetFuncDef **def, int32_t *bytecode_offset) {
7975
0
    janet_fixarity(argc, 3);
7976
0
    const uint8_t *source = janet_getstring(argv, 0);
7977
0
    int32_t line = janet_getinteger(argv, 1);
7978
0
    int32_t col = janet_getinteger(argv, 2);
7979
0
    janet_debug_find(def, bytecode_offset, source, line, col);
7980
0
}
7981
7982
/* Helper to find funcdef and bytecode offset to insert or remove breakpoints.
7983
 * Takes a function and byte offset*/
7984
0
static void helper_find_fun(int32_t argc, Janet *argv, JanetFuncDef **def, int32_t *bytecode_offset) {
7985
0
    janet_arity(argc, 1, 2);
7986
0
    JanetFunction *func = janet_getfunction(argv, 0);
7987
0
    int32_t offset = (argc == 2) ? janet_getinteger(argv, 1) : 0;
7988
0
    *def = func->def;
7989
0
    *bytecode_offset = offset;
7990
0
}
7991
7992
JANET_CORE_FN(cfun_debug_break,
7993
              "(debug/break source line col)",
7994
              "Sets a breakpoint in `source` at a given line and column. "
7995
              "Will throw an error if the breakpoint location "
7996
              "cannot be found. For example\n\n"
7997
              "\t(debug/break \"core.janet\" 10 4)\n\n"
7998
0
              "will set a breakpoint at line 10, 4th column of the file core.janet.") {
7999
0
    JanetFuncDef *def;
8000
0
    int32_t offset;
8001
0
    helper_find(argc, argv, &def, &offset);
8002
0
    janet_debug_break(def, offset);
8003
0
    return janet_wrap_nil();
8004
0
}
8005
8006
JANET_CORE_FN(cfun_debug_unbreak,
8007
              "(debug/unbreak source line column)",
8008
              "Remove a breakpoint with a source key at a given line and column. "
8009
              "Will throw an error if the breakpoint "
8010
0
              "cannot be found.") {
8011
0
    JanetFuncDef *def;
8012
0
    int32_t offset = 0;
8013
0
    helper_find(argc, argv, &def, &offset);
8014
0
    janet_debug_unbreak(def, offset);
8015
0
    return janet_wrap_nil();
8016
0
}
8017
8018
JANET_CORE_FN(cfun_debug_fbreak,
8019
              "(debug/fbreak fun &opt pc)",
8020
              "Set a breakpoint in a given function. pc is an optional offset, which "
8021
              "is in bytecode instructions. fun is a function value. Will throw an error "
8022
0
              "if the offset is too large or negative.") {
8023
0
    JanetFuncDef *def;
8024
0
    int32_t offset = 0;
8025
0
    helper_find_fun(argc, argv, &def, &offset);
8026
0
    janet_debug_break(def, offset);
8027
0
    return janet_wrap_nil();
8028
0
}
8029
8030
JANET_CORE_FN(cfun_debug_unfbreak,
8031
              "(debug/unfbreak fun &opt pc)",
8032
0
              "Unset a breakpoint set with debug/fbreak.") {
8033
0
    JanetFuncDef *def;
8034
0
    int32_t offset;
8035
0
    helper_find_fun(argc, argv, &def, &offset);
8036
0
    janet_debug_unbreak(def, offset);
8037
0
    return janet_wrap_nil();
8038
0
}
8039
8040
JANET_CORE_FN(cfun_debug_lineage,
8041
              "(debug/lineage fib)",
8042
              "Returns an array of all child fibers from a root fiber. This function "
8043
              "is useful when a fiber signals or errors to an ancestor fiber. Using this function, "
8044
              "the fiber handling the error can see which fiber raised the signal. This function should "
8045
0
              "be used mostly for debugging purposes.") {
8046
0
    janet_fixarity(argc, 1);
8047
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8048
0
    JanetArray *array = janet_array(0);
8049
0
    while (fiber) {
8050
0
        janet_array_push(array, janet_wrap_fiber(fiber));
8051
0
        fiber = fiber->child;
8052
0
    }
8053
0
    return janet_wrap_array(array);
8054
0
}
8055
8056
/* Extract info from one stack frame */
8057
0
static Janet doframe(JanetStackFrame *frame) {
8058
0
    int32_t off;
8059
0
    JanetTable *t = janet_table(3);
8060
0
    JanetFuncDef *def = NULL;
8061
0
    if (frame->func) {
8062
0
        janet_table_put(t, janet_ckeywordv("function"), janet_wrap_function(frame->func));
8063
0
        def = frame->func->def;
8064
0
        if (def->name) {
8065
0
            janet_table_put(t, janet_ckeywordv("name"), janet_wrap_string(def->name));
8066
0
        }
8067
0
    } else {
8068
0
        JanetCFunction cfun = (JanetCFunction)(frame->pc);
8069
0
        if (cfun) {
8070
0
            JanetCFunRegistry *reg = janet_registry_get(cfun);
8071
0
            if (NULL != reg->name) {
8072
0
                if (NULL != reg->name_prefix) {
8073
0
                    janet_table_put(t, janet_ckeywordv("name"), janet_wrap_string(janet_formatc("%s/%s", reg->name_prefix, reg->name)));
8074
0
                } else {
8075
0
                    janet_table_put(t, janet_ckeywordv("name"), janet_cstringv(reg->name));
8076
0
                }
8077
0
                if (NULL != reg->source_file) {
8078
0
                    janet_table_put(t, janet_ckeywordv("source"), janet_cstringv(reg->source_file));
8079
0
                }
8080
0
                if (reg->source_line > 0) {
8081
0
                    janet_table_put(t, janet_ckeywordv("source-line"), janet_wrap_integer(reg->source_line));
8082
0
                    janet_table_put(t, janet_ckeywordv("source-column"), janet_wrap_integer(1));
8083
0
                }
8084
0
            }
8085
0
        }
8086
0
        janet_table_put(t, janet_ckeywordv("c"), janet_wrap_true());
8087
0
    }
8088
0
    if (frame->flags & JANET_STACKFRAME_TAILCALL) {
8089
0
        janet_table_put(t, janet_ckeywordv("tail"), janet_wrap_true());
8090
0
    }
8091
0
    if (frame->func && frame->pc) {
8092
0
        Janet *stack = (Janet *)frame + JANET_FRAME_SIZE;
8093
0
        JanetArray *slots;
8094
0
        janet_assert(def != NULL, "def != NULL");
8095
0
        off = (int32_t)(frame->pc - def->bytecode);
8096
0
        janet_table_put(t, janet_ckeywordv("pc"), janet_wrap_integer(off));
8097
0
        if (def->sourcemap) {
8098
0
            JanetSourceMapping mapping = def->sourcemap[off];
8099
0
            janet_table_put(t, janet_ckeywordv("source-line"), janet_wrap_integer(mapping.line));
8100
0
            janet_table_put(t, janet_ckeywordv("source-column"), janet_wrap_integer(mapping.column));
8101
0
        }
8102
0
        if (def->source) {
8103
0
            janet_table_put(t, janet_ckeywordv("source"), janet_wrap_string(def->source));
8104
0
        }
8105
        /* Add stack arguments */
8106
0
        slots = janet_array(def->slotcount);
8107
0
        safe_memcpy(slots->data, stack, sizeof(Janet) * def->slotcount);
8108
0
        slots->count = def->slotcount;
8109
0
        janet_table_put(t, janet_ckeywordv("slots"), janet_wrap_array(slots));
8110
        /* Add local bindings */
8111
0
        if (def->symbolmap) {
8112
0
            JanetTable *local_bindings = janet_table(0);
8113
0
            for (int32_t i = def->symbolmap_length - 1; i >= 0; i--) {
8114
0
                JanetSymbolMap jsm = def->symbolmap[i];
8115
0
                Janet value = janet_wrap_nil();
8116
0
                uint32_t pc = (uint32_t)(frame->pc - def->bytecode);
8117
0
                if (jsm.birth_pc == UINT32_MAX) {
8118
0
                    JanetFuncEnv *env = frame->func->envs[jsm.death_pc];
8119
0
                    if (env->offset > 0) {
8120
0
                        value = env->as.fiber->data[env->offset + jsm.slot_index];
8121
0
                    } else {
8122
0
                        value = env->as.values[jsm.slot_index];
8123
0
                    }
8124
0
                } else if (pc >= jsm.birth_pc && pc < jsm.death_pc) {
8125
0
                    value = stack[jsm.slot_index];
8126
0
                }
8127
0
                janet_table_put(local_bindings, janet_wrap_symbol(jsm.symbol), value);
8128
0
            }
8129
0
            janet_table_put(t, janet_ckeywordv("locals"), janet_wrap_table(local_bindings));
8130
0
        }
8131
0
    }
8132
0
    return janet_wrap_table(t);
8133
0
}
8134
8135
JANET_CORE_FN(cfun_debug_stack,
8136
              "(debug/stack fib)",
8137
              "Gets information about the stack as an array of tables. Each table "
8138
              "in the array contains information about a stack frame. The top-most, current "
8139
              "stack frame is the first table in the array, and the bottom-most stack frame "
8140
              "is the last value. Each stack frame contains some of the following attributes:\n\n"
8141
              "* :c - true if the stack frame is a c function invocation\n\n"
8142
              "* :source-column - the current source column of the stack frame\n\n"
8143
              "* :function - the function that the stack frame represents\n\n"
8144
              "* :source-line - the current source line of the stack frame\n\n"
8145
              "* :name - the human-friendly name of the function\n\n"
8146
              "* :pc - integer indicating the location of the program counter\n\n"
8147
              "* :source - string with the file path or other identifier for the source code\n\n"
8148
              "* :slots - array of all values in each slot\n\n"
8149
0
              "* :tail - boolean indicating a tail call") {
8150
0
    janet_fixarity(argc, 1);
8151
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8152
0
    JanetArray *array = janet_array(0);
8153
0
    {
8154
0
        int32_t i = fiber->frame;
8155
0
        JanetStackFrame *frame;
8156
0
        while (i > 0) {
8157
0
            frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
8158
0
            janet_array_push(array, doframe(frame));
8159
0
            i = frame->prevframe;
8160
0
        }
8161
0
    }
8162
0
    return janet_wrap_array(array);
8163
0
}
8164
8165
JANET_CORE_FN(cfun_debug_stacktrace,
8166
              "(debug/stacktrace fiber &opt err prefix)",
8167
              "Prints a nice looking stacktrace for a fiber. Can optionally provide "
8168
              "an error value to print the stack trace with. If `prefix` is nil or not "
8169
0
              "provided, will skip the error line. Returns the fiber.") {
8170
0
    janet_arity(argc, 1, 3);
8171
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8172
0
    Janet x = argc == 1 ? janet_wrap_nil() : argv[1];
8173
0
    const char *prefix = janet_optcstring(argv, argc, 2, NULL);
8174
0
    janet_stacktrace_ext(fiber, x, prefix);
8175
0
    return argv[0];
8176
0
}
8177
8178
JANET_CORE_FN(cfun_debug_argstack,
8179
              "(debug/arg-stack fiber)",
8180
              "Gets all values currently on the fiber's argument stack. Normally, "
8181
              "this should be empty unless the fiber signals while pushing arguments "
8182
0
              "to make a function call. Returns a new array.") {
8183
0
    janet_fixarity(argc, 1);
8184
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8185
0
    JanetArray *array = janet_array(fiber->stacktop - fiber->stackstart);
8186
0
    memcpy(array->data, fiber->data + fiber->stackstart, array->capacity * sizeof(Janet));
8187
0
    array->count = array->capacity;
8188
0
    return janet_wrap_array(array);
8189
0
}
8190
8191
JANET_CORE_FN(cfun_debug_step,
8192
              "(debug/step fiber &opt x)",
8193
              "Run a fiber for one virtual instruction of the Janet machine. Can optionally "
8194
              "pass in a value that will be passed as the resuming value. Returns the signal value, "
8195
0
              "which will usually be nil, as breakpoints raise nil signals.") {
8196
0
    janet_arity(argc, 1, 2);
8197
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
8198
0
    Janet out = janet_wrap_nil();
8199
0
    janet_step(fiber, argc == 1 ? janet_wrap_nil() : argv[1], &out);
8200
0
    return out;
8201
0
}
8202
8203
/* Module entry point */
8204
0
void janet_lib_debug(JanetTable *env) {
8205
0
    JanetRegExt debug_cfuns[] = {
8206
0
        JANET_CORE_REG("debug/break", cfun_debug_break),
8207
0
        JANET_CORE_REG("debug/unbreak", cfun_debug_unbreak),
8208
0
        JANET_CORE_REG("debug/fbreak", cfun_debug_fbreak),
8209
0
        JANET_CORE_REG("debug/unfbreak", cfun_debug_unfbreak),
8210
0
        JANET_CORE_REG("debug/arg-stack", cfun_debug_argstack),
8211
0
        JANET_CORE_REG("debug/stack", cfun_debug_stack),
8212
0
        JANET_CORE_REG("debug/stacktrace", cfun_debug_stacktrace),
8213
0
        JANET_CORE_REG("debug/lineage", cfun_debug_lineage),
8214
0
        JANET_CORE_REG("debug/step", cfun_debug_step),
8215
0
        JANET_REG_END
8216
0
    };
8217
0
    janet_core_cfuns_ext(env, NULL, debug_cfuns);
8218
0
}
8219
8220
8221
/* src/core/emit.c */
8222
#line 0 "src/core/emit.c"
8223
8224
/*
8225
* Copyright (c) 2025 Calvin Rose
8226
*
8227
* Permission is hereby granted, free of charge, to any person obtaining a copy
8228
* of this software and associated documentation files (the "Software"), to
8229
* deal in the Software without restriction, including without limitation the
8230
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8231
* sell copies of the Software, and to permit persons to whom the Software is
8232
* furnished to do so, subject to the following conditions:
8233
*
8234
* The above copyright notice and this permission notice shall be included in
8235
* all copies or substantial portions of the Software.
8236
*
8237
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8238
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8239
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8240
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
8241
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
8242
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
8243
* IN THE SOFTWARE.
8244
*/
8245
8246
#ifndef JANET_AMALG
8247
#include "features.h"
8248
#include <janet.h>
8249
#include "emit.h"
8250
#include "vector.h"
8251
#include "regalloc.h"
8252
#include "util.h"
8253
#endif
8254
8255
/* Get a register */
8256
0
int32_t janetc_allocfar(JanetCompiler *c) {
8257
0
    int32_t reg = janetc_regalloc_1(&c->scope->ra);
8258
0
    if (reg > 0xFFFF) {
8259
0
        janetc_cerror(c, "ran out of internal registers");
8260
0
    }
8261
0
    return reg;
8262
0
}
8263
8264
/* Get a register less than 256 for temporary use. */
8265
0
int32_t janetc_allocnear(JanetCompiler *c, JanetcRegisterTemp tag) {
8266
0
    return janetc_regalloc_temp(&c->scope->ra, tag);
8267
0
}
8268
8269
/* Emit a raw instruction with source mapping. */
8270
0
void janetc_emit(JanetCompiler *c, uint32_t instr) {
8271
0
    janet_v_push(c->buffer, instr);
8272
0
    janet_v_push(c->mapbuffer, c->current_mapping);
8273
0
}
8274
8275
/* Add a constant to the current scope. Return the index of the constant. */
8276
0
static int32_t janetc_const(JanetCompiler *c, Janet x) {
8277
0
    JanetScope *scope = c->scope;
8278
0
    int32_t i, len;
8279
    /* Get the topmost function scope */
8280
0
    while (scope) {
8281
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
8282
0
            break;
8283
0
        scope = scope->parent;
8284
0
    }
8285
    /* Check if already added */
8286
0
    len = janet_v_count(scope->consts);
8287
0
    for (i = 0; i < len; i++) {
8288
0
        if (janet_equals(x, scope->consts[i]))
8289
0
            return i;
8290
0
    }
8291
    /* Ensure not too many constants. */
8292
0
    if (len >= 0xFFFF) {
8293
0
        janetc_cerror(c, "too many constants");
8294
0
        return 0;
8295
0
    }
8296
0
    janet_v_push(scope->consts, x);
8297
0
    return len;
8298
0
}
8299
8300
/* Load a constant into a local register */
8301
0
static void janetc_loadconst(JanetCompiler *c, Janet k, int32_t reg) {
8302
0
    switch (janet_type(k)) {
8303
0
        case JANET_NIL:
8304
0
            janetc_emit(c, (reg << 8) | JOP_LOAD_NIL);
8305
0
            break;
8306
0
        case JANET_BOOLEAN:
8307
0
            janetc_emit(c, (reg << 8) |
8308
0
                        (janet_unwrap_boolean(k) ? JOP_LOAD_TRUE : JOP_LOAD_FALSE));
8309
0
            break;
8310
0
        case JANET_NUMBER: {
8311
0
            double dval = janet_unwrap_number(k);
8312
0
            if (dval < INT16_MIN || dval > INT16_MAX)
8313
0
                goto do_constant;
8314
0
            int32_t i = (int32_t) dval;
8315
0
            if (dval != i)
8316
0
                goto do_constant;
8317
0
            uint32_t iu = (uint32_t)i;
8318
0
            janetc_emit(c,
8319
0
                        (iu << 16) |
8320
0
                        (reg << 8) |
8321
0
                        JOP_LOAD_INTEGER);
8322
0
            break;
8323
0
        }
8324
0
        default:
8325
0
        do_constant: {
8326
0
                int32_t cindex = janetc_const(c, k);
8327
0
                janetc_emit(c,
8328
0
                            (cindex << 16) |
8329
0
                            (reg << 8) |
8330
0
                            JOP_LOAD_CONSTANT);
8331
0
                break;
8332
0
            }
8333
0
    }
8334
0
}
8335
8336
/* Move a slot to a near register */
8337
static void janetc_movenear(JanetCompiler *c,
8338
                            int32_t dest,
8339
0
                            JanetSlot src) {
8340
0
    if (src.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF)) {
8341
0
        janetc_loadconst(c, src.constant, dest);
8342
        /* If we also are a reference, deref the one element array */
8343
0
        if (src.flags & JANET_SLOT_REF) {
8344
0
            janetc_emit(c,
8345
0
                        (dest << 16) |
8346
0
                        (dest << 8) |
8347
0
                        JOP_GET_INDEX);
8348
0
        }
8349
0
    } else if (src.envindex >= 0) {
8350
0
        janetc_emit(c,
8351
0
                    ((uint32_t)(src.index) << 24) |
8352
0
                    ((uint32_t)(src.envindex) << 16) |
8353
0
                    ((uint32_t)(dest) << 8) |
8354
0
                    JOP_LOAD_UPVALUE);
8355
0
    } else if (src.index != dest) {
8356
0
        janet_assert(src.index >= 0, "bad slot");
8357
0
        janetc_emit(c,
8358
0
                    ((uint32_t)(src.index) << 16) |
8359
0
                    ((uint32_t)(dest) << 8) |
8360
0
                    JOP_MOVE_NEAR);
8361
0
    }
8362
0
}
8363
8364
/* Move a near register to a Slot. */
8365
static void janetc_moveback(JanetCompiler *c,
8366
                            JanetSlot dest,
8367
0
                            int32_t src) {
8368
0
    if (dest.flags & JANET_SLOT_REF) {
8369
0
        int32_t refreg = janetc_regalloc_temp(&c->scope->ra, JANETC_REGTEMP_5);
8370
0
        janetc_loadconst(c, dest.constant, refreg);
8371
0
        janetc_emit(c,
8372
0
                    (src << 16) |
8373
0
                    (refreg << 8) |
8374
0
                    JOP_PUT_INDEX);
8375
0
        janetc_regalloc_freetemp(&c->scope->ra, refreg, JANETC_REGTEMP_5);
8376
0
    } else if (dest.envindex >= 0) {
8377
0
        janetc_emit(c,
8378
0
                    ((uint32_t)(dest.index) << 24) |
8379
0
                    ((uint32_t)(dest.envindex) << 16) |
8380
0
                    ((uint32_t)(src) << 8) |
8381
0
                    JOP_SET_UPVALUE);
8382
0
    } else if (dest.index != src) {
8383
0
        janet_assert(dest.index >= 0, "bad slot");
8384
0
        janetc_emit(c,
8385
0
                    ((uint32_t)(dest.index) << 16) |
8386
0
                    ((uint32_t)(src) << 8) |
8387
0
                    JOP_MOVE_FAR);
8388
0
    }
8389
0
}
8390
8391
/* Call this to release a register after emitting the instruction. */
8392
0
static void janetc_free_regnear(JanetCompiler *c, JanetSlot s, int32_t reg, JanetcRegisterTemp tag) {
8393
0
    if (reg != s.index ||
8394
0
            s.envindex >= 0 ||
8395
0
            s.flags & (JANET_SLOT_CONSTANT | JANET_SLOT_REF)) {
8396
        /* We need to free the temporary slot */
8397
0
        janetc_regalloc_freetemp(&c->scope->ra, reg, tag);
8398
0
    }
8399
0
}
8400
8401
/* Convert a slot to a two byte register */
8402
0
static int32_t janetc_regfar(JanetCompiler *c, JanetSlot s, JanetcRegisterTemp tag) {
8403
    /* check if already near register */
8404
0
    if (s.envindex < 0 && s.index >= 0) {
8405
0
        return s.index;
8406
0
    }
8407
0
    int32_t reg;
8408
0
    int32_t nearreg = janetc_regalloc_temp(&c->scope->ra, tag);
8409
0
    janetc_movenear(c, nearreg, s);
8410
0
    if (nearreg >= 0xF0) {
8411
0
        reg = janetc_allocfar(c);
8412
0
        janetc_emit(c, JOP_MOVE_FAR | (nearreg << 8) | (reg << 16));
8413
0
        janetc_regalloc_freetemp(&c->scope->ra, nearreg, tag);
8414
0
    } else {
8415
0
        reg = nearreg;
8416
0
        janetc_regalloc_freetemp(&c->scope->ra, nearreg, tag);
8417
0
        janetc_regalloc_touch(&c->scope->ra, reg);
8418
0
    }
8419
0
    return reg;
8420
0
}
8421
8422
/* Convert a slot to a temporary 1 byte register */
8423
0
static int32_t janetc_regnear(JanetCompiler *c, JanetSlot s, JanetcRegisterTemp tag) {
8424
    /* check if already near register */
8425
0
    if (s.envindex < 0 && s.index >= 0 && s.index <= 0xFF) {
8426
0
        return s.index;
8427
0
    }
8428
0
    int32_t reg = janetc_regalloc_temp(&c->scope->ra, tag);
8429
0
    janetc_movenear(c, reg, s);
8430
0
    return reg;
8431
0
}
8432
8433
/* Check if two slots are equal */
8434
0
int janetc_sequal(JanetSlot lhs, JanetSlot rhs) {
8435
0
    if ((lhs.flags & ~JANET_SLOTTYPE_ANY) == (rhs.flags & ~JANET_SLOTTYPE_ANY) &&
8436
0
            lhs.index == rhs.index &&
8437
0
            lhs.envindex == rhs.envindex) {
8438
0
        if (lhs.flags & (JANET_SLOT_REF | JANET_SLOT_CONSTANT)) {
8439
0
            return janet_equals(lhs.constant, rhs.constant);
8440
0
        } else {
8441
0
            return 1;
8442
0
        }
8443
0
    }
8444
0
    return 0;
8445
0
}
8446
8447
/* Move values from one slot to another. The destination must
8448
 * be writeable (not a literal). */
8449
void janetc_copy(
8450
    JanetCompiler *c,
8451
    JanetSlot dest,
8452
0
    JanetSlot src) {
8453
0
    if (dest.flags & JANET_SLOT_CONSTANT) {
8454
0
        janetc_cerror(c, "cannot write to constant");
8455
0
        return;
8456
0
    }
8457
0
    if (janetc_sequal(dest, src)) return;
8458
    /* If dest is a near register */
8459
0
    if (dest.envindex < 0 && dest.index >= 0 && dest.index <= 0xFF) {
8460
0
        janetc_movenear(c, dest.index, src);
8461
0
        return;
8462
0
    }
8463
    /* If src is a near register */
8464
0
    if (src.envindex < 0 && src.index >= 0 && src.index <= 0xFF) {
8465
0
        janetc_moveback(c, dest, src.index);
8466
0
        return;
8467
0
    }
8468
    /* Process: src -> near -> dest */
8469
0
    int32_t nearreg = janetc_allocnear(c, JANETC_REGTEMP_3);
8470
0
    janetc_movenear(c, nearreg, src);
8471
0
    janetc_moveback(c, dest, nearreg);
8472
    /* Cleanup */
8473
0
    janetc_regalloc_freetemp(&c->scope->ra, nearreg, JANETC_REGTEMP_3);
8474
0
}
8475
8476
/* Instruction templated emitters */
8477
8478
0
static int32_t emit1s(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t rest, int wr) {
8479
0
    int32_t reg = janetc_regnear(c, s, JANETC_REGTEMP_0);
8480
0
    int32_t label = janet_v_count(c->buffer);
8481
0
    janetc_emit(c, op | (reg << 8) | ((uint32_t)rest << 16));
8482
0
    if (wr)
8483
0
        janetc_moveback(c, s, reg);
8484
0
    janetc_free_regnear(c, s, reg, JANETC_REGTEMP_0);
8485
0
    return label;
8486
0
}
8487
8488
0
int32_t janetc_emit_s(JanetCompiler *c, uint8_t op, JanetSlot s, int wr) {
8489
0
    int32_t reg = janetc_regfar(c, s, JANETC_REGTEMP_0);
8490
0
    int32_t label = janet_v_count(c->buffer);
8491
0
    janetc_emit(c, op | (reg << 8));
8492
0
    if (wr)
8493
0
        janetc_moveback(c, s, reg);
8494
0
    janetc_free_regnear(c, s, reg, JANETC_REGTEMP_0);
8495
0
    return label;
8496
0
}
8497
8498
0
int32_t janetc_emit_sl(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t label) {
8499
0
    int32_t current = janet_v_count(c->buffer) - 1;
8500
0
    int32_t jump = label - current;
8501
0
    if (jump < INT16_MIN || jump > INT16_MAX) {
8502
0
        janetc_cerror(c, "jump is too far");
8503
0
    }
8504
0
    return emit1s(c, op, s, jump, 0);
8505
0
}
8506
8507
0
int32_t janetc_emit_st(JanetCompiler *c, uint8_t op, JanetSlot s, int32_t tflags) {
8508
0
    return emit1s(c, op, s, tflags, 0);
8509
0
}
8510
8511
0
int32_t janetc_emit_si(JanetCompiler *c, uint8_t op, JanetSlot s, int16_t immediate, int wr) {
8512
0
    return emit1s(c, op, s, immediate, wr);
8513
0
}
8514
8515
0
int32_t janetc_emit_su(JanetCompiler *c, uint8_t op, JanetSlot s, uint16_t immediate, int wr) {
8516
0
    return emit1s(c, op, s, (int32_t) immediate, wr);
8517
0
}
8518
8519
0
static int32_t emit2s(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int32_t rest, int wr) {
8520
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8521
0
    int32_t reg2 = janetc_regnear(c, s2, JANETC_REGTEMP_1);
8522
0
    int32_t label = janet_v_count(c->buffer);
8523
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16) | ((uint32_t)rest << 24));
8524
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8525
0
    if (wr)
8526
0
        janetc_moveback(c, s1, reg1);
8527
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8528
0
    return label;
8529
0
}
8530
8531
0
int32_t janetc_emit_ss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int wr) {
8532
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8533
0
    int32_t reg2 = janetc_regfar(c, s2, JANETC_REGTEMP_1);
8534
0
    int32_t label = janet_v_count(c->buffer);
8535
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16));
8536
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8537
0
    if (wr)
8538
0
        janetc_moveback(c, s1, reg1);
8539
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8540
0
    return label;
8541
0
}
8542
8543
0
int32_t janetc_emit_ssi(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, int8_t immediate, int wr) {
8544
0
    return emit2s(c, op, s1, s2, immediate, wr);
8545
0
}
8546
8547
0
int32_t janetc_emit_ssu(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, uint8_t immediate, int wr) {
8548
0
    return emit2s(c, op, s1, s2, (int32_t) immediate, wr);
8549
0
}
8550
8551
0
int32_t janetc_emit_sss(JanetCompiler *c, uint8_t op, JanetSlot s1, JanetSlot s2, JanetSlot s3, int wr) {
8552
0
    int32_t reg1 = janetc_regnear(c, s1, JANETC_REGTEMP_0);
8553
0
    int32_t reg2 = janetc_regnear(c, s2, JANETC_REGTEMP_1);
8554
0
    int32_t reg3 = janetc_regnear(c, s3, JANETC_REGTEMP_2);
8555
0
    int32_t label = janet_v_count(c->buffer);
8556
0
    janetc_emit(c, op | (reg1 << 8) | (reg2 << 16) | ((uint32_t)reg3 << 24));
8557
0
    janetc_free_regnear(c, s2, reg2, JANETC_REGTEMP_1);
8558
0
    janetc_free_regnear(c, s3, reg3, JANETC_REGTEMP_2);
8559
0
    if (wr)
8560
0
        janetc_moveback(c, s1, reg1);
8561
0
    janetc_free_regnear(c, s1, reg1, JANETC_REGTEMP_0);
8562
0
    return label;
8563
0
}
8564
8565
8566
/* src/core/ev.c */
8567
#line 0 "src/core/ev.c"
8568
8569
/*
8570
* Copyright (c) 2025 Calvin Rose
8571
*
8572
* Permission is hereby granted, free of charge, to any person obtaining a copy
8573
* of this software and associated documentation files (the "Software"), to
8574
* deal in the Software without restriction, including without limitation the
8575
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8576
* sell copies of the Software, and to permit persons to whom the Software is
8577
* furnished to do so, subject to the following conditions:
8578
*
8579
* The above copyright notice and this permission notice shall be included in
8580
* all copies or substantial portions of the Software.
8581
*
8582
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
8583
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
8584
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8585
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
8586
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
8587
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
8588
* IN THE SOFTWARE.
8589
*/
8590
8591
#ifndef JANET_AMALG
8592
#include "features.h"
8593
#include <janet.h>
8594
#include "util.h"
8595
#include "gc.h"
8596
#include "state.h"
8597
#include "fiber.h"
8598
#endif
8599
8600
#ifdef JANET_EV
8601
8602
#include <math.h>
8603
#include <fcntl.h>
8604
#ifdef JANET_WINDOWS
8605
#include <winsock2.h>
8606
#include <windows.h>
8607
#include <io.h>
8608
#else
8609
#include <pthread.h>
8610
#include <limits.h>
8611
#include <errno.h>
8612
#include <unistd.h>
8613
#include <signal.h>
8614
#include <sys/ioctl.h>
8615
#include <sys/types.h>
8616
#include <netinet/in.h>
8617
#include <netinet/tcp.h>
8618
#include <netdb.h>
8619
#include <sys/socket.h>
8620
#include <sys/wait.h>
8621
#ifdef JANET_EV_EPOLL
8622
#include <sys/epoll.h>
8623
#include <sys/timerfd.h>
8624
#endif
8625
#ifdef JANET_EV_KQUEUE
8626
#include <sys/event.h>
8627
#endif
8628
#ifdef JANET_EV_POLL
8629
#include <poll.h>
8630
#endif
8631
#endif
8632
8633
typedef struct {
8634
    JanetVM *thread;
8635
    JanetFiber *fiber;
8636
    uint32_t sched_id;
8637
    enum {
8638
        JANET_CP_MODE_READ,
8639
        JANET_CP_MODE_WRITE,
8640
        JANET_CP_MODE_CHOICE_READ,
8641
        JANET_CP_MODE_CHOICE_WRITE,
8642
        JANET_CP_MODE_CLOSE
8643
    } mode;
8644
} JanetChannelPending;
8645
8646
struct JanetChannel {
8647
    JanetQueue items;
8648
    JanetQueue read_pending;
8649
    JanetQueue write_pending;
8650
    int32_t limit;
8651
    int closed;
8652
    int is_threaded;
8653
#ifdef JANET_WINDOWS
8654
    CRITICAL_SECTION lock;
8655
#else
8656
    pthread_mutex_t lock;
8657
#endif
8658
};
8659
8660
typedef struct {
8661
    JanetFiber *fiber;
8662
    Janet value;
8663
    JanetSignal sig;
8664
    uint32_t expected_sched_id; /* If the fiber has been rescheduled this loop, don't run first scheduling. */
8665
} JanetTask;
8666
8667
/* Wrap return value by pairing it with the callback used to handle it
8668
 * in the main thread */
8669
typedef struct {
8670
    JanetEVGenericMessage msg;
8671
    JanetThreadedCallback cb;
8672
} JanetSelfPipeEvent;
8673
8674
/* Structure used to initialize threads in the thread pool
8675
 * (same head structure as self pipe event)*/
8676
typedef struct {
8677
    JanetEVGenericMessage msg;
8678
    JanetThreadedCallback cb;
8679
    JanetThreadedSubroutine subr;
8680
    JanetHandle write_pipe;
8681
} JanetEVThreadInit;
8682
8683
/* Structure used to initialize threads that run timeouts */
8684
typedef struct {
8685
    double sec;
8686
    JanetVM *vm;
8687
    JanetFiber *fiber;
8688
#ifdef JANET_WINDOWS
8689
    HANDLE cancel_event;
8690
#endif
8691
} JanetThreadedTimeout;
8692
8693
0
#define JANET_MAX_Q_CAPACITY 0x7FFFFFF
8694
8695
5.80k
static void janet_q_init(JanetQueue *q) {
8696
5.80k
    q->data = NULL;
8697
5.80k
    q->head = 0;
8698
5.80k
    q->tail = 0;
8699
5.80k
    q->capacity = 0;
8700
5.80k
}
8701
8702
5.80k
static void janet_q_deinit(JanetQueue *q) {
8703
5.80k
    janet_free(q->data);
8704
5.80k
}
8705
8706
0
static int32_t janet_q_count(JanetQueue *q) {
8707
0
    return (q->head > q->tail)
8708
0
           ? (q->tail + q->capacity - q->head)
8709
0
           : (q->tail - q->head);
8710
0
}
8711
8712
0
static int janet_q_maybe_resize(JanetQueue *q, size_t itemsize) {
8713
0
    int32_t count = janet_q_count(q);
8714
    /* Resize if needed */
8715
0
    if (count + 1 >= q->capacity) {
8716
0
        if (count + 1 >= JANET_MAX_Q_CAPACITY) return 1;
8717
0
        int32_t newcap = (count + 2) * 2;
8718
0
        if (newcap > JANET_MAX_Q_CAPACITY) newcap = JANET_MAX_Q_CAPACITY;
8719
0
        q->data = janet_realloc(q->data, itemsize * newcap);
8720
0
        if (NULL == q->data) {
8721
0
            JANET_OUT_OF_MEMORY;
8722
0
        }
8723
0
        if (q->head > q->tail) {
8724
            /* Two segments, fix 2nd seg. */
8725
0
            int32_t newhead = q->head + (newcap - q->capacity);
8726
0
            size_t seg1 = (size_t)(q->capacity - q->head);
8727
0
            if (seg1 > 0) {
8728
0
                memmove((char *) q->data + (newhead * itemsize),
8729
0
                        (char *) q->data + (q->head * itemsize),
8730
0
                        seg1 * itemsize);
8731
0
            }
8732
0
            q->head = newhead;
8733
0
        }
8734
0
        q->capacity = newcap;
8735
0
    }
8736
0
    return 0;
8737
0
}
8738
8739
0
static int janet_q_push(JanetQueue *q, void *item, size_t itemsize) {
8740
0
    if (janet_q_maybe_resize(q, itemsize)) return 1;
8741
0
    memcpy((char *) q->data + itemsize * q->tail, item, itemsize);
8742
0
    q->tail = q->tail + 1 < q->capacity ? q->tail + 1 : 0;
8743
0
    return 0;
8744
0
}
8745
8746
0
static int janet_q_push_head(JanetQueue *q, void *item, size_t itemsize) {
8747
0
    if (janet_q_maybe_resize(q, itemsize)) return 1;
8748
0
    int32_t newhead = q->head - 1;
8749
0
    if (newhead < 0) {
8750
0
        newhead += q->capacity;
8751
0
    }
8752
0
    memcpy((char *) q->data + itemsize * newhead, item, itemsize);
8753
0
    q->head = newhead;
8754
0
    return 0;
8755
0
}
8756
8757
0
static int janet_q_pop(JanetQueue *q, void *out, size_t itemsize) {
8758
0
    if (q->head == q->tail) return 1;
8759
0
    memcpy(out, (char *) q->data + itemsize * q->head, itemsize);
8760
0
    q->head = q->head + 1 < q->capacity ? q->head + 1 : 0;
8761
0
    return 0;
8762
0
}
8763
8764
/* Get current timestamp (millisecond precision) */
8765
static JanetTimestamp ts_now(void);
8766
8767
/* Get current timestamp + an interval (millisecond precision) */
8768
0
static JanetTimestamp ts_delta(JanetTimestamp ts, double delta) {
8769
0
    if (isinf(delta)) {
8770
0
        return delta < 0 ? ts : INT64_MAX;
8771
0
    }
8772
0
    ts += (int64_t)round(delta * 1000);
8773
0
    return ts;
8774
0
}
8775
8776
/* Look at the next timeout value without removing it. */
8777
5.80k
static int peek_timeout(JanetTimeout *out) {
8778
5.80k
    if (janet_vm.tq_count == 0) return 0;
8779
0
    *out = janet_vm.tq[0];
8780
0
    return 1;
8781
5.80k
}
8782
8783
/* Remove the next timeout from the priority queue */
8784
0
static void pop_timeout(size_t index) {
8785
0
    if (janet_vm.tq_count <= index) return;
8786
0
    janet_vm.tq[index] = janet_vm.tq[--janet_vm.tq_count];
8787
0
    for (;;) {
8788
0
        size_t left = (index << 1) + 1;
8789
0
        size_t right = left + 1;
8790
0
        size_t smallest = index;
8791
0
        if (left < janet_vm.tq_count &&
8792
0
                (janet_vm.tq[left].when < janet_vm.tq[smallest].when))
8793
0
            smallest = left;
8794
0
        if (right < janet_vm.tq_count &&
8795
0
                (janet_vm.tq[right].when < janet_vm.tq[smallest].when))
8796
0
            smallest = right;
8797
0
        if (smallest == index) return;
8798
0
        JanetTimeout temp = janet_vm.tq[index];
8799
0
        janet_vm.tq[index] = janet_vm.tq[smallest];
8800
0
        janet_vm.tq[smallest] = temp;
8801
0
        index = smallest;
8802
0
    }
8803
0
}
8804
8805
/* Add a timeout to the timeout min heap */
8806
0
static void add_timeout(JanetTimeout to) {
8807
0
    size_t oldcount = janet_vm.tq_count;
8808
0
    size_t newcount = oldcount + 1;
8809
0
    if (newcount > janet_vm.tq_capacity) {
8810
0
        size_t newcap = 2 * newcount;
8811
0
        JanetTimeout *tq = janet_realloc(janet_vm.tq, newcap * sizeof(JanetTimeout));
8812
0
        if (NULL == tq) {
8813
0
            JANET_OUT_OF_MEMORY;
8814
0
        }
8815
0
        janet_vm.tq = tq;
8816
0
        janet_vm.tq_capacity = newcap;
8817
0
    }
8818
    /* Append */
8819
0
    janet_vm.tq_count = (int32_t) newcount;
8820
0
    janet_vm.tq[oldcount] = to;
8821
    /* Heapify */
8822
0
    size_t index = oldcount;
8823
0
    while (index > 0) {
8824
0
        size_t parent = (index - 1) >> 1;
8825
0
        if (janet_vm.tq[parent].when <= janet_vm.tq[index].when) break;
8826
        /* Swap */
8827
0
        JanetTimeout tmp = janet_vm.tq[index];
8828
0
        janet_vm.tq[index] = janet_vm.tq[parent];
8829
0
        janet_vm.tq[parent] = tmp;
8830
        /* Next */
8831
0
        index = parent;
8832
0
    }
8833
0
}
8834
8835
0
void janet_async_end(JanetFiber *fiber) {
8836
0
    if (fiber->ev_callback) {
8837
0
        if (fiber->ev_stream->read_fiber == fiber) {
8838
0
            fiber->ev_stream->read_fiber = NULL;
8839
0
        }
8840
0
        if (fiber->ev_stream->write_fiber == fiber) {
8841
0
            fiber->ev_stream->write_fiber = NULL;
8842
0
        }
8843
0
        fiber->ev_callback(fiber, JANET_ASYNC_EVENT_DEINIT);
8844
0
        janet_gcunroot(janet_wrap_abstract(fiber->ev_stream));
8845
0
        fiber->ev_callback = NULL;
8846
0
        if (!(fiber->flags & JANET_FIBER_EV_FLAG_IN_FLIGHT)) {
8847
0
            if (fiber->ev_state) {
8848
0
                janet_free(fiber->ev_state);
8849
0
                fiber->ev_state = NULL;
8850
0
            }
8851
0
            janet_ev_dec_refcount();
8852
0
        }
8853
0
    }
8854
0
}
8855
8856
0
void janet_async_in_flight(JanetFiber *fiber) {
8857
#ifdef JANET_WINDOWS
8858
    fiber->flags |= JANET_FIBER_EV_FLAG_IN_FLIGHT;
8859
#else
8860
0
    (void) fiber;
8861
0
#endif
8862
0
}
8863
8864
0
void janet_async_start_fiber(JanetFiber *fiber, JanetStream *stream, JanetAsyncMode mode, JanetEVCallback callback, void *state) {
8865
0
    janet_assert(!fiber->ev_callback, "double async on fiber");
8866
0
    if (mode & JANET_ASYNC_LISTEN_READ) {
8867
0
        stream->read_fiber = fiber;
8868
0
    }
8869
0
    if (mode & JANET_ASYNC_LISTEN_WRITE) {
8870
0
        stream->write_fiber = fiber;
8871
0
    }
8872
0
    fiber->ev_callback = callback;
8873
0
    fiber->ev_stream = stream;
8874
0
    janet_ev_inc_refcount();
8875
0
    janet_gcroot(janet_wrap_abstract(stream));
8876
0
    fiber->ev_state = state;
8877
0
    callback(fiber, JANET_ASYNC_EVENT_INIT);
8878
0
}
8879
8880
0
void janet_async_start(JanetStream *stream, JanetAsyncMode mode, JanetEVCallback callback, void *state) {
8881
0
    janet_async_start_fiber(janet_vm.root_fiber, stream, mode, callback, state);
8882
0
    janet_await();
8883
0
}
8884
8885
0
void janet_fiber_did_resume(JanetFiber *fiber) {
8886
0
    janet_async_end(fiber);
8887
0
}
8888
8889
0
static void janet_stream_checktoclose(JanetStream *stream) {
8890
0
    if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->read_fiber && !stream->write_fiber) {
8891
0
        janet_stream_close(stream);
8892
0
    }
8893
0
}
8894
8895
/* Forward declaration */
8896
static void janet_register_stream(JanetStream *stream);
8897
8898
static const JanetMethod ev_default_stream_methods[] = {
8899
    {"close", janet_cfun_stream_close},
8900
    {"read", janet_cfun_stream_read},
8901
    {"chunk", janet_cfun_stream_chunk},
8902
    {"write", janet_cfun_stream_write},
8903
    {NULL, NULL}
8904
};
8905
8906
/* Create a stream*/
8907
0
JanetStream *janet_stream_ext(JanetHandle handle, uint32_t flags, const JanetMethod *methods, size_t size) {
8908
0
    janet_assert(size >= sizeof(JanetStream), "bad size");
8909
0
    JanetStream *stream = janet_abstract(&janet_stream_type, size);
8910
0
    stream->handle = handle;
8911
0
    stream->flags = flags;
8912
0
    stream->read_fiber = NULL;
8913
0
    stream->write_fiber = NULL;
8914
0
    if (methods == NULL) methods = ev_default_stream_methods;
8915
0
    stream->methods = methods;
8916
0
    stream->index = 0;
8917
0
    janet_register_stream(stream);
8918
0
    return stream;
8919
0
}
8920
8921
0
JanetStream *janet_stream(JanetHandle handle, uint32_t flags, const JanetMethod *methods) {
8922
0
    return janet_stream_ext(handle, flags, methods, sizeof(JanetStream));
8923
0
}
8924
8925
0
static void janet_stream_close_impl(JanetStream *stream) {
8926
0
    stream->flags |= JANET_STREAM_CLOSED;
8927
0
    int canclose = !(stream->flags & JANET_STREAM_NOT_CLOSEABLE);
8928
#ifdef JANET_WINDOWS
8929
    if (stream->handle != INVALID_HANDLE_VALUE) {
8930
#ifdef JANET_NET
8931
        if (stream->flags & JANET_STREAM_SOCKET) {
8932
            if (canclose) closesocket((SOCKET) stream->handle);
8933
        } else
8934
#endif
8935
        {
8936
            if (canclose) CloseHandle(stream->handle);
8937
        }
8938
        stream->handle = INVALID_HANDLE_VALUE;
8939
    }
8940
#else
8941
0
    if (stream->handle != -1) {
8942
0
        if (canclose) close(stream->handle);
8943
0
        stream->handle = -1;
8944
#ifdef JANET_EV_POLL
8945
        uint32_t i = stream->index;
8946
        size_t j = janet_vm.stream_count - 1;
8947
        JanetStream *last = janet_vm.streams[j];
8948
        struct pollfd lastfd = janet_vm.fds[j + 1];
8949
        janet_vm.fds[i + 1] = lastfd;
8950
        janet_vm.streams[i] = last;
8951
        last->index = stream->index;
8952
        janet_vm.stream_count--;
8953
#endif
8954
0
    }
8955
0
#endif
8956
0
}
8957
8958
0
void janet_stream_close(JanetStream *stream) {
8959
0
    JanetFiber *rf = stream->read_fiber;
8960
0
    JanetFiber *wf = stream->write_fiber;
8961
0
    if (rf && rf->ev_callback) {
8962
0
        rf->ev_callback(rf, JANET_ASYNC_EVENT_CLOSE);
8963
0
        stream->read_fiber = NULL;
8964
0
    }
8965
0
    if (wf && wf->ev_callback) {
8966
0
        wf->ev_callback(wf, JANET_ASYNC_EVENT_CLOSE);
8967
0
        stream->write_fiber = NULL;
8968
0
    }
8969
0
    janet_stream_close_impl(stream);
8970
0
}
8971
8972
/* Called to clean up a stream */
8973
0
static int janet_stream_gc(void *p, size_t s) {
8974
0
    (void) s;
8975
0
    JanetStream *stream = (JanetStream *)p;
8976
0
    janet_stream_close_impl(stream);
8977
0
    return 0;
8978
0
}
8979
8980
/* Mark a stream for GC */
8981
0
static int janet_stream_mark(void *p, size_t s) {
8982
0
    (void) s;
8983
0
    JanetStream *stream = (JanetStream *) p;
8984
0
    JanetFiber *rf = stream->read_fiber;
8985
0
    JanetFiber *wf = stream->write_fiber;
8986
0
    if (rf) {
8987
0
        janet_mark(janet_wrap_fiber(rf));
8988
0
    }
8989
0
    if (wf) {
8990
0
        janet_mark(janet_wrap_fiber(wf));
8991
0
    }
8992
0
    return 0;
8993
0
}
8994
8995
0
static int janet_stream_getter(void *p, Janet key, Janet *out) {
8996
0
    JanetStream *stream = (JanetStream *)p;
8997
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
8998
0
    const JanetMethod *stream_methods = stream->methods;
8999
0
    return janet_getmethod(janet_unwrap_keyword(key), stream_methods, out);
9000
0
}
9001
9002
0
static void janet_stream_marshal(void *p, JanetMarshalContext *ctx) {
9003
0
    JanetStream *s = p;
9004
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
9005
0
        janet_panic("can only marshal stream with unsafe flag");
9006
0
    }
9007
0
    janet_marshal_abstract(ctx, p);
9008
0
    janet_marshal_int(ctx, (int32_t) s->flags);
9009
0
    janet_marshal_ptr(ctx, s->methods);
9010
#ifdef JANET_WINDOWS
9011
    /* TODO - ref counting to avoid situation where a handle is closed or GCed
9012
     * while in transit, and it's value gets reused. DuplicateHandle does not work
9013
     * for network sockets, and in general for winsock it is better to not duplicate
9014
     * unless there is a need to. */
9015
    HANDLE duph = INVALID_HANDLE_VALUE;
9016
    if (s->flags & JANET_STREAM_SOCKET) {
9017
        duph = s->handle;
9018
    } else {
9019
        DuplicateHandle(
9020
            GetCurrentProcess(),
9021
            s->handle,
9022
            GetCurrentProcess(),
9023
            &duph,
9024
            0,
9025
            FALSE,
9026
            DUPLICATE_SAME_ACCESS);
9027
    }
9028
    janet_marshal_int64(ctx, (int64_t)(duph));
9029
#else
9030
    /* Marshal after dup because it is easier than maintaining our own ref counting. */
9031
0
    int duph = dup(s->handle);
9032
0
    if (duph < 0) janet_panicf("failed to duplicate stream handle: %V", janet_ev_lasterr());
9033
0
    janet_marshal_int(ctx, (int32_t)(duph));
9034
0
#endif
9035
0
}
9036
9037
0
static void *janet_stream_unmarshal(JanetMarshalContext *ctx) {
9038
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
9039
0
        janet_panic("can only unmarshal stream with unsafe flag");
9040
0
    }
9041
0
    JanetStream *p = janet_unmarshal_abstract(ctx, sizeof(JanetStream));
9042
    /* Can't share listening state and such across threads */
9043
0
    p->read_fiber = NULL;
9044
0
    p->write_fiber = NULL;
9045
0
    p->flags = (uint32_t) janet_unmarshal_int(ctx);
9046
0
    p->methods =  janet_unmarshal_ptr(ctx);
9047
#ifdef JANET_WINDOWS
9048
    p->handle = (JanetHandle) janet_unmarshal_int64(ctx);
9049
#else
9050
0
    p->handle = (JanetHandle) janet_unmarshal_int(ctx);
9051
0
#endif
9052
#ifdef JANET_EV_POLL
9053
    janet_register_stream(p);
9054
#endif
9055
0
    return p;
9056
0
}
9057
9058
0
static Janet janet_stream_next(void *p, Janet key) {
9059
0
    JanetStream *stream = (JanetStream *)p;
9060
0
    return janet_nextmethod(stream->methods, key);
9061
0
}
9062
9063
0
static void janet_stream_tostring(void *p, JanetBuffer *buffer) {
9064
0
    JanetStream *stream = p;
9065
    /* Let user print the file descriptor for debugging */
9066
0
    janet_formatb(buffer, "[fd=%d]", stream->handle);
9067
0
}
9068
9069
const JanetAbstractType janet_stream_type = {
9070
    "core/stream",
9071
    janet_stream_gc,
9072
    janet_stream_mark,
9073
    janet_stream_getter,
9074
    NULL,
9075
    janet_stream_marshal,
9076
    janet_stream_unmarshal,
9077
    janet_stream_tostring,
9078
    NULL,
9079
    NULL,
9080
    janet_stream_next,
9081
    JANET_ATEND_NEXT
9082
};
9083
9084
/* Register a fiber to resume with value */
9085
0
static void janet_schedule_general(JanetFiber *fiber, Janet value, JanetSignal sig, int soon) {
9086
0
    if (fiber->gc.flags & JANET_FIBER_EV_FLAG_CANCELED) return;
9087
0
    if (!(fiber->gc.flags & JANET_FIBER_FLAG_ROOT)) {
9088
0
        Janet task_element = janet_wrap_fiber(fiber);
9089
0
        janet_table_put(&janet_vm.active_tasks, task_element, janet_wrap_true());
9090
0
    }
9091
0
    JanetTask t = { fiber, value, sig, ++fiber->sched_id };
9092
0
    fiber->gc.flags |= JANET_FIBER_FLAG_ROOT;
9093
0
    if (sig == JANET_SIGNAL_ERROR) fiber->gc.flags |= JANET_FIBER_EV_FLAG_CANCELED;
9094
0
    if (soon) {
9095
0
        janet_q_push_head(&janet_vm.spawn, &t, sizeof(t));
9096
0
    } else {
9097
0
        janet_q_push(&janet_vm.spawn, &t, sizeof(t));
9098
0
    }
9099
0
}
9100
9101
0
void janet_schedule_signal(JanetFiber *fiber, Janet value, JanetSignal sig) {
9102
0
    janet_schedule_general(fiber, value, sig, 0);
9103
0
}
9104
9105
0
void janet_schedule_soon(JanetFiber *fiber, Janet value, JanetSignal sig) {
9106
0
    janet_schedule_general(fiber, value, sig, 1);
9107
0
}
9108
9109
0
void janet_cancel(JanetFiber *fiber, Janet value) {
9110
0
    janet_schedule_signal(fiber, value, JANET_SIGNAL_ERROR);
9111
0
}
9112
9113
0
void janet_schedule(JanetFiber *fiber, Janet value) {
9114
0
    janet_schedule_signal(fiber, value, JANET_SIGNAL_OK);
9115
0
}
9116
9117
/* Mark all pending tasks */
9118
0
void janet_ev_mark(void) {
9119
9120
    /* Pending tasks */
9121
0
    JanetTask *tasks = janet_vm.spawn.data;
9122
0
    if (janet_vm.spawn.head <= janet_vm.spawn.tail) {
9123
0
        for (int32_t i = janet_vm.spawn.head; i < janet_vm.spawn.tail; i++) {
9124
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
9125
0
            janet_mark(tasks[i].value);
9126
0
        }
9127
0
    } else {
9128
0
        for (int32_t i = janet_vm.spawn.head; i < janet_vm.spawn.capacity; i++) {
9129
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
9130
0
            janet_mark(tasks[i].value);
9131
0
        }
9132
0
        for (int32_t i = 0; i < janet_vm.spawn.tail; i++) {
9133
0
            janet_mark(janet_wrap_fiber(tasks[i].fiber));
9134
0
            janet_mark(tasks[i].value);
9135
0
        }
9136
0
    }
9137
9138
    /* Pending timeouts */
9139
0
    for (size_t i = 0; i < janet_vm.tq_count; i++) {
9140
0
        janet_mark(janet_wrap_fiber(janet_vm.tq[i].fiber));
9141
0
        if (janet_vm.tq[i].curr_fiber != NULL) {
9142
0
            janet_mark(janet_wrap_fiber(janet_vm.tq[i].curr_fiber));
9143
0
        }
9144
0
    }
9145
0
}
9146
9147
static int janet_channel_push(JanetChannel *channel, Janet x, int mode);
9148
static int janet_channel_pop(JanetChannel *channel, Janet *item, int is_choice);
9149
9150
0
static Janet make_supervisor_event(const char *name, JanetFiber *fiber, int threaded) {
9151
0
    Janet tup[3];
9152
0
    tup[0] = janet_ckeywordv(name);
9153
0
    tup[1] = threaded ? fiber->last_value : janet_wrap_fiber(fiber) ;
9154
0
    if (fiber->env != NULL) {
9155
0
        tup[2] = janet_table_get(fiber->env, janet_ckeywordv("task-id"));
9156
0
    } else {
9157
0
        tup[2] = janet_wrap_nil();
9158
0
    }
9159
0
    return janet_wrap_tuple(janet_tuple_n(tup, 3));
9160
0
}
9161
9162
/* Common init code */
9163
5.80k
void janet_ev_init_common(void) {
9164
5.80k
    janet_q_init(&janet_vm.spawn);
9165
5.80k
    janet_vm.tq = NULL;
9166
5.80k
    janet_vm.tq_count = 0;
9167
5.80k
    janet_vm.tq_capacity = 0;
9168
5.80k
    janet_table_init_raw(&janet_vm.threaded_abstracts, 0);
9169
5.80k
    janet_table_init_raw(&janet_vm.active_tasks, 0);
9170
5.80k
    janet_table_init_raw(&janet_vm.signal_handlers, 0);
9171
5.80k
    janet_rng_seed(&janet_vm.ev_rng, 0);
9172
5.80k
#ifndef JANET_WINDOWS
9173
5.80k
    pthread_attr_init(&janet_vm.new_thread_attr);
9174
5.80k
    pthread_attr_setdetachstate(&janet_vm.new_thread_attr, PTHREAD_CREATE_DETACHED);
9175
5.80k
#endif
9176
5.80k
}
9177
9178
#if JANET_ANDROID
9179
static void janet_timeout_stop(int sig_num) {
9180
    if (sig_num == SIGUSR1) {
9181
        pthread_exit(0);
9182
    }
9183
}
9184
#endif
9185
9186
0
static void handle_timeout_worker(JanetTimeout to, int cancel) {
9187
0
    if (!to.has_worker) return;
9188
#ifdef JANET_WINDOWS
9189
    if (cancel && to.worker_event) {
9190
        SetEvent(to.worker_event);
9191
    }
9192
    WaitForSingleObject(to.worker, INFINITE);
9193
    CloseHandle(to.worker);
9194
    if (to.worker_event) {
9195
        CloseHandle(to.worker_event);
9196
    }
9197
#else
9198
#ifdef JANET_ANDROID
9199
    if (cancel) janet_assert(!pthread_kill(to.worker, SIGUSR1), "pthread_kill");
9200
#else
9201
0
    if (cancel) janet_assert(!pthread_cancel(to.worker), "pthread_cancel");
9202
0
#endif
9203
0
    void *res = NULL;
9204
0
    janet_assert(!pthread_join(to.worker, &res), "pthread_join");
9205
0
#endif
9206
0
}
9207
9208
/* Common deinit code */
9209
5.80k
void janet_ev_deinit_common(void) {
9210
5.80k
    JanetTimeout to;
9211
5.80k
    while (peek_timeout(&to)) {
9212
0
        handle_timeout_worker(to, 1);
9213
0
        pop_timeout(0);
9214
0
    }
9215
5.80k
    janet_q_deinit(&janet_vm.spawn);
9216
5.80k
    janet_free(janet_vm.tq);
9217
5.80k
    janet_table_deinit(&janet_vm.threaded_abstracts);
9218
5.80k
    janet_table_deinit(&janet_vm.active_tasks);
9219
5.80k
    janet_table_deinit(&janet_vm.signal_handlers);
9220
5.80k
#ifndef JANET_WINDOWS
9221
5.80k
    pthread_attr_destroy(&janet_vm.new_thread_attr);
9222
5.80k
#endif
9223
5.80k
}
9224
9225
/* Shorthand to yield to event loop */
9226
0
void janet_await(void) {
9227
    /* Store the fiber in a global table */
9228
0
    janet_signalv(JANET_SIGNAL_EVENT, janet_wrap_nil());
9229
0
}
9230
9231
/* Set timeout for the current root fiber */
9232
0
void janet_addtimeout(double sec) {
9233
0
    JanetFiber *fiber = janet_vm.root_fiber;
9234
0
    JanetTimeout to;
9235
0
    to.when = ts_delta(ts_now(), sec);
9236
0
    to.fiber = fiber;
9237
0
    to.curr_fiber = NULL;
9238
0
    to.sched_id = fiber->sched_id;
9239
0
    to.is_error = 1;
9240
0
    to.has_worker = 0;
9241
0
    add_timeout(to);
9242
0
}
9243
9244
/* Set timeout for the current root fiber but resume with nil instead of raising an error */
9245
0
void janet_addtimeout_nil(double sec) {
9246
0
    JanetFiber *fiber = janet_vm.root_fiber;
9247
0
    JanetTimeout to;
9248
0
    to.when = ts_delta(ts_now(), sec);
9249
0
    to.fiber = fiber;
9250
0
    to.curr_fiber = NULL;
9251
0
    to.sched_id = fiber->sched_id;
9252
0
    to.is_error = 0;
9253
0
    to.has_worker = 0;
9254
0
    add_timeout(to);
9255
0
}
9256
9257
0
static void janet_timeout_cb(JanetEVGenericMessage msg) {
9258
0
    (void) msg;
9259
0
    janet_interpreter_interrupt_handled(&janet_vm);
9260
0
}
9261
9262
#ifdef JANET_WINDOWS
9263
static DWORD WINAPI janet_timeout_body(LPVOID ptr) {
9264
    JanetThreadedTimeout tto = *(JanetThreadedTimeout *)ptr;
9265
    janet_free(ptr);
9266
    JanetTimestamp wait_begin = ts_now();
9267
    DWORD duration = (DWORD)round(tto.sec * 1000);
9268
    DWORD res = WAIT_TIMEOUT;
9269
    JanetTimestamp wait_end = ts_now();
9270
    for (size_t i = 1; res == WAIT_TIMEOUT && (wait_end - wait_begin) < duration; i++) {
9271
        res = WaitForSingleObject(tto.cancel_event, (duration + i));
9272
        wait_end = ts_now();
9273
    }
9274
    /* only send interrupt message if result is WAIT_TIMEOUT */
9275
    if (res == WAIT_TIMEOUT) {
9276
        janet_interpreter_interrupt(tto.vm);
9277
        JanetEVGenericMessage msg = {0};
9278
        janet_ev_post_event(tto.vm, janet_timeout_cb, msg);
9279
    }
9280
    return 0;
9281
}
9282
#else
9283
0
static void *janet_timeout_body(void *ptr) {
9284
#ifdef JANET_ANDROID
9285
    struct sigaction action;
9286
    memset(&action, 0, sizeof(action));
9287
    sigemptyset(&action.sa_mask);
9288
    action.sa_flags = 0;
9289
    action.sa_handler = &janet_timeout_stop;
9290
    sigaction(SIGUSR1, &action, NULL);
9291
#endif
9292
0
    JanetThreadedTimeout tto = *(JanetThreadedTimeout *)ptr;
9293
0
    janet_free(ptr);
9294
0
    struct timespec ts;
9295
0
    ts.tv_sec = (time_t) tto.sec;
9296
0
    ts.tv_nsec = (tto.sec <= UINT32_MAX)
9297
0
                 ? (long)((tto.sec - ((uint32_t)tto.sec)) * 1000000000)
9298
0
                 : 0;
9299
0
    nanosleep(&ts, &ts);
9300
0
    janet_interpreter_interrupt(tto.vm);
9301
0
    JanetEVGenericMessage msg = {0};
9302
0
    janet_ev_post_event(tto.vm, janet_timeout_cb, msg);
9303
0
    return NULL;
9304
0
}
9305
#endif
9306
9307
9308
0
void janet_ev_inc_refcount(void) {
9309
0
    janet_atomic_inc(&janet_vm.listener_count);
9310
0
}
9311
9312
0
void janet_ev_dec_refcount(void) {
9313
0
    janet_atomic_dec(&janet_vm.listener_count);
9314
0
}
9315
9316
/* Channels */
9317
9318
#define JANET_MAX_CHANNEL_CAPACITY 0xFFFFFF
9319
9320
0
static inline int janet_chan_is_threaded(JanetChannel *chan) {
9321
0
    return chan->is_threaded;
9322
0
}
9323
9324
0
static int janet_chan_pack(JanetChannel *chan, Janet *x) {
9325
0
    if (!janet_chan_is_threaded(chan)) return 0;
9326
0
    switch (janet_type(*x)) {
9327
0
        default: {
9328
0
            JanetBuffer *buf = janet_malloc(sizeof(JanetBuffer));
9329
0
            if (NULL == buf) {
9330
0
                JANET_OUT_OF_MEMORY;
9331
0
            }
9332
0
            janet_buffer_init(buf, 10);
9333
0
            janet_marshal(buf, *x, NULL, JANET_MARSHAL_UNSAFE);
9334
0
            *x = janet_wrap_buffer(buf);
9335
0
            return 0;
9336
0
        }
9337
0
        case JANET_NIL:
9338
0
        case JANET_NUMBER:
9339
0
        case JANET_POINTER:
9340
0
        case JANET_BOOLEAN:
9341
0
        case JANET_CFUNCTION:
9342
0
            return 0;
9343
0
    }
9344
0
}
9345
9346
0
static int janet_chan_unpack(JanetChannel *chan, Janet *x, int is_cleanup) {
9347
0
    if (!janet_chan_is_threaded(chan)) return 0;
9348
0
    switch (janet_type(*x)) {
9349
0
        default:
9350
0
            return 1;
9351
0
        case JANET_BUFFER: {
9352
0
            JanetBuffer *buf = janet_unwrap_buffer(*x);
9353
0
            int flags = is_cleanup ? (JANET_MARSHAL_UNSAFE | JANET_MARSHAL_DECREF) : JANET_MARSHAL_UNSAFE;
9354
0
            *x = janet_unmarshal(buf->data, buf->count, flags, NULL, NULL);
9355
0
            janet_buffer_deinit(buf);
9356
0
            janet_free(buf);
9357
0
            return 0;
9358
0
        }
9359
0
        case JANET_NIL:
9360
0
        case JANET_NUMBER:
9361
0
        case JANET_POINTER:
9362
0
        case JANET_BOOLEAN:
9363
0
        case JANET_CFUNCTION:
9364
0
            return 0;
9365
0
    }
9366
0
}
9367
9368
0
static void janet_chan_init(JanetChannel *chan, int32_t limit, int threaded) {
9369
0
    chan->limit = limit;
9370
0
    chan->closed = 0;
9371
0
    chan->is_threaded = threaded;
9372
0
    janet_q_init(&chan->items);
9373
0
    janet_q_init(&chan->read_pending);
9374
0
    janet_q_init(&chan->write_pending);
9375
0
    janet_os_mutex_init((JanetOSMutex *) &chan->lock);
9376
0
}
9377
9378
0
static void janet_chan_lock(JanetChannel *chan) {
9379
0
    if (!janet_chan_is_threaded(chan)) return;
9380
0
    janet_os_mutex_lock((JanetOSMutex *) &chan->lock);
9381
0
}
9382
9383
0
static void janet_chan_unlock(JanetChannel *chan) {
9384
0
    if (!janet_chan_is_threaded(chan)) return;
9385
0
    janet_os_mutex_unlock((JanetOSMutex *) &chan->lock);
9386
0
}
9387
9388
0
static void janet_chan_deinit(JanetChannel *chan) {
9389
0
    if (janet_chan_is_threaded(chan)) {
9390
0
        Janet item;
9391
0
        janet_chan_lock(chan);
9392
0
        janet_q_deinit(&chan->read_pending);
9393
0
        janet_q_deinit(&chan->write_pending);
9394
0
        while (!janet_q_pop(&chan->items, &item, sizeof(item))) {
9395
0
            janet_chan_unpack(chan, &item, 1);
9396
0
        }
9397
0
        janet_q_deinit(&chan->items);
9398
0
        janet_chan_unlock(chan);
9399
0
    } else {
9400
0
        janet_q_deinit(&chan->read_pending);
9401
0
        janet_q_deinit(&chan->write_pending);
9402
0
        janet_q_deinit(&chan->items);
9403
0
    }
9404
0
    janet_os_mutex_deinit((JanetOSMutex *) &chan->lock);
9405
0
}
9406
9407
/*
9408
 * Janet Channel abstract type
9409
 */
9410
9411
0
static Janet janet_wrap_channel(JanetChannel *channel) {
9412
0
    return janet_wrap_abstract(channel);
9413
0
}
9414
9415
0
static int janet_chanat_gc(void *p, size_t s) {
9416
0
    (void) s;
9417
0
    JanetChannel *channel = p;
9418
0
    janet_chan_deinit(channel);
9419
0
    return 0;
9420
0
}
9421
9422
0
static void janet_chanat_remove_vmref(JanetQueue *fq) {
9423
0
    JanetChannelPending *pending = fq->data;
9424
0
    if (fq->head <= fq->tail) {
9425
0
        for (int32_t i = fq->head; i < fq->tail; i++) {
9426
0
            if (pending[i].thread == &janet_vm) pending[i].thread = NULL;
9427
0
        }
9428
0
    } else {
9429
0
        for (int32_t i = fq->head; i < fq->capacity; i++) {
9430
0
            if (pending[i].thread == &janet_vm) pending[i].thread = NULL;
9431
0
        }
9432
0
        for (int32_t i = 0; i < fq->tail; i++) {
9433
0
            if (pending[i].thread == &janet_vm) pending[i].thread = NULL;
9434
0
        }
9435
0
    }
9436
0
}
9437
9438
0
static int janet_chanat_gcperthread(void *p, size_t s) {
9439
0
    (void) s;
9440
0
    JanetChannel *chan = p;
9441
0
    janet_chan_lock(chan);
9442
    /* Make sure that the internals of the threaded channel no longer reference _this_ thread. Replace
9443
     * those references with NULL. */
9444
0
    janet_chanat_remove_vmref(&chan->read_pending);
9445
0
    janet_chanat_remove_vmref(&chan->write_pending);
9446
0
    janet_chan_unlock(chan);
9447
0
    return 0;
9448
0
}
9449
9450
0
static void janet_chanat_mark_fq(JanetQueue *fq) {
9451
0
    JanetChannelPending *pending = fq->data;
9452
0
    if (fq->head <= fq->tail) {
9453
0
        for (int32_t i = fq->head; i < fq->tail; i++)
9454
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
9455
0
    } else {
9456
0
        for (int32_t i = fq->head; i < fq->capacity; i++)
9457
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
9458
0
        for (int32_t i = 0; i < fq->tail; i++)
9459
0
            janet_mark(janet_wrap_fiber(pending[i].fiber));
9460
0
    }
9461
0
}
9462
9463
0
static int janet_chanat_mark(void *p, size_t s) {
9464
0
    (void) s;
9465
0
    JanetChannel *chan = p;
9466
0
    janet_chanat_mark_fq(&chan->read_pending);
9467
0
    janet_chanat_mark_fq(&chan->write_pending);
9468
0
    JanetQueue *items = &chan->items;
9469
0
    Janet *data = chan->items.data;
9470
0
    if (items->head <= items->tail) {
9471
0
        for (int32_t i = items->head; i < items->tail; i++)
9472
0
            janet_mark(data[i]);
9473
0
    } else {
9474
0
        for (int32_t i = items->head; i < items->capacity; i++)
9475
0
            janet_mark(data[i]);
9476
0
        for (int32_t i = 0; i < items->tail; i++)
9477
0
            janet_mark(data[i]);
9478
0
    }
9479
0
    return 0;
9480
0
}
9481
9482
0
static Janet make_write_result(JanetChannel *channel) {
9483
0
    Janet *tup = janet_tuple_begin(2);
9484
0
    tup[0] = janet_ckeywordv("give");
9485
0
    tup[1] = janet_wrap_channel(channel);
9486
0
    return janet_wrap_tuple(janet_tuple_end(tup));
9487
0
}
9488
9489
0
static Janet make_read_result(JanetChannel *channel, Janet x) {
9490
0
    Janet *tup = janet_tuple_begin(3);
9491
0
    tup[0] = janet_ckeywordv("take");
9492
0
    tup[1] = janet_wrap_channel(channel);
9493
0
    tup[2] = x;
9494
0
    return janet_wrap_tuple(janet_tuple_end(tup));
9495
0
}
9496
9497
0
static Janet make_close_result(JanetChannel *channel) {
9498
0
    Janet *tup = janet_tuple_begin(2);
9499
0
    tup[0] = janet_ckeywordv("close");
9500
0
    tup[1] = janet_wrap_channel(channel);
9501
0
    return janet_wrap_tuple(janet_tuple_end(tup));
9502
0
}
9503
9504
/* Callback to use for scheduling a fiber from another thread. */
9505
0
static void janet_thread_chan_cb(JanetEVGenericMessage msg) {
9506
0
    uint32_t sched_id = (uint32_t) msg.argi;
9507
0
    JanetFiber *fiber = msg.fiber;
9508
0
    int mode = msg.tag;
9509
0
    JanetChannel *channel = (JanetChannel *) msg.argp;
9510
0
    Janet x = msg.argj;
9511
0
    janet_chan_lock(channel);
9512
0
    if (fiber->sched_id == sched_id) {
9513
0
        if (mode == JANET_CP_MODE_CHOICE_READ) {
9514
0
            janet_assert(!janet_chan_unpack(channel, &x, 0), "packing error");
9515
0
            janet_schedule(fiber, make_read_result(channel, x));
9516
0
        } else if (mode == JANET_CP_MODE_CHOICE_WRITE) {
9517
0
            janet_schedule(fiber, make_write_result(channel));
9518
0
        } else if (mode == JANET_CP_MODE_READ) {
9519
0
            janet_assert(!janet_chan_unpack(channel, &x, 0), "packing error");
9520
0
            janet_schedule(fiber, x);
9521
0
        } else if (mode == JANET_CP_MODE_WRITE) {
9522
0
            janet_schedule(fiber, janet_wrap_channel(channel));
9523
0
        } else { /* (mode == JANET_CP_MODE_CLOSE) */
9524
0
            janet_schedule(fiber, janet_wrap_nil());
9525
0
        }
9526
0
    } else if (mode != JANET_CP_MODE_CLOSE) {
9527
        /* Fiber has already been cancelled or resumed. */
9528
        /* Resend event to another waiting thread, depending on mode */
9529
0
        int is_read = (mode == JANET_CP_MODE_CHOICE_READ) || (mode == JANET_CP_MODE_READ);
9530
0
        if (is_read) {
9531
0
            JanetChannelPending reader;
9532
0
            while (!janet_q_pop(&channel->read_pending, &reader, sizeof(reader))) {
9533
0
                JanetVM *vm = reader.thread;
9534
0
                if (!vm) continue;
9535
0
                JanetEVGenericMessage msg;
9536
0
                msg.tag = reader.mode;
9537
0
                msg.fiber = reader.fiber;
9538
0
                msg.argi = (int32_t) reader.sched_id;
9539
0
                msg.argp = channel;
9540
0
                msg.argj = x;
9541
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9542
0
                break;
9543
0
            }
9544
0
        } else {
9545
0
            JanetChannelPending writer;
9546
0
            while (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9547
0
                JanetVM *vm = writer.thread;
9548
0
                if (!vm) continue;
9549
0
                JanetEVGenericMessage msg;
9550
0
                msg.tag = writer.mode;
9551
0
                msg.fiber = writer.fiber;
9552
0
                msg.argi = (int32_t) writer.sched_id;
9553
0
                msg.argp = channel;
9554
0
                msg.argj = janet_wrap_nil();
9555
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9556
0
                break;
9557
0
            }
9558
0
        }
9559
0
    }
9560
0
    janet_chan_unlock(channel);
9561
0
}
9562
9563
/* Push a value to a channel, and return 1 if channel should block, zero otherwise.
9564
 * If the push would block, will add to the write_pending queue in the channel.
9565
 * Handles both threaded and unthreaded channels. */
9566
0
static int janet_channel_push_with_lock(JanetChannel *channel, Janet x, int mode) {
9567
0
    JanetChannelPending reader;
9568
0
    int is_empty;
9569
0
    if (janet_chan_pack(channel, &x)) {
9570
0
        janet_chan_unlock(channel);
9571
0
        janet_panicf("failed to pack value for channel: %v", x);
9572
0
    }
9573
0
    if (channel->closed) {
9574
0
        janet_chan_unlock(channel);
9575
0
        janet_panic("cannot write to closed channel");
9576
0
    }
9577
0
    int is_threaded = janet_chan_is_threaded(channel);
9578
0
    if (is_threaded) {
9579
        /* don't dereference fiber from another thread */
9580
0
        is_empty = janet_q_pop(&channel->read_pending, &reader, sizeof(reader));
9581
0
    } else {
9582
0
        do {
9583
0
            is_empty = janet_q_pop(&channel->read_pending, &reader, sizeof(reader));
9584
0
        } while (!is_empty && (reader.sched_id != reader.fiber->sched_id));
9585
0
    }
9586
0
    if (is_empty) {
9587
        /* No pending reader */
9588
0
        if (janet_q_push(&channel->items, &x, sizeof(Janet))) {
9589
0
            janet_chan_unlock(channel);
9590
0
            janet_panicf("channel overflow: %v", x);
9591
0
        } else if (janet_q_count(&channel->items) > channel->limit) {
9592
            /* No root fiber, we are in completion on a root fiber. Don't block. */
9593
0
            if (mode == 2) {
9594
0
                janet_chan_unlock(channel);
9595
0
                return 1;
9596
0
            }
9597
            /* Pushed successfully, but should block. */
9598
0
            JanetChannelPending pending;
9599
0
            pending.thread = &janet_vm;
9600
0
            pending.fiber = janet_vm.root_fiber,
9601
0
            pending.sched_id = janet_vm.root_fiber->sched_id,
9602
0
            pending.mode = mode ? JANET_CP_MODE_CHOICE_WRITE : JANET_CP_MODE_WRITE;
9603
0
            janet_q_push(&channel->write_pending, &pending, sizeof(pending));
9604
0
            janet_chan_unlock(channel);
9605
0
            if (is_threaded) {
9606
0
                janet_gcroot(janet_wrap_fiber(pending.fiber));
9607
0
            }
9608
0
            return 1;
9609
0
        }
9610
0
    } else {
9611
        /* Pending reader */
9612
0
        if (is_threaded) {
9613
0
            JanetVM *vm = reader.thread;
9614
0
            JanetEVGenericMessage msg;
9615
0
            msg.tag = reader.mode;
9616
0
            msg.fiber = reader.fiber;
9617
0
            msg.argi = (int32_t) reader.sched_id;
9618
0
            msg.argp = channel;
9619
0
            msg.argj = x;
9620
0
            if (vm) {
9621
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9622
0
            }
9623
0
        } else {
9624
0
            if (reader.mode == JANET_CP_MODE_CHOICE_READ) {
9625
0
                janet_schedule(reader.fiber, make_read_result(channel, x));
9626
0
            } else {
9627
0
                janet_schedule(reader.fiber, x);
9628
0
            }
9629
0
        }
9630
0
    }
9631
0
    janet_chan_unlock(channel);
9632
0
    return 0;
9633
0
}
9634
9635
0
static int janet_channel_push(JanetChannel *channel, Janet x, int mode) {
9636
0
    janet_chan_lock(channel);
9637
0
    return janet_channel_push_with_lock(channel, x, mode);
9638
0
}
9639
9640
/* Pop from a channel - returns 1 if item was obtained, 0 otherwise. The item
9641
 * is returned by reference. If the pop would block, will add to the read_pending
9642
 * queue in the channel. */
9643
0
static int janet_channel_pop_with_lock(JanetChannel *channel, Janet *item, int is_choice) {
9644
0
    JanetChannelPending writer;
9645
0
    if (channel->closed) {
9646
0
        janet_chan_unlock(channel);
9647
0
        *item = janet_wrap_nil();
9648
0
        return 1;
9649
0
    }
9650
0
    int is_threaded = janet_chan_is_threaded(channel);
9651
0
    if (janet_q_pop(&channel->items, item, sizeof(Janet))) {
9652
        /* Queue empty */
9653
0
        if (is_choice == 2) return 0; // Skip pending read
9654
0
        JanetChannelPending pending;
9655
0
        pending.thread = &janet_vm;
9656
0
        pending.fiber = janet_vm.root_fiber,
9657
0
        pending.sched_id = janet_vm.root_fiber->sched_id;
9658
0
        pending.mode = is_choice ? JANET_CP_MODE_CHOICE_READ : JANET_CP_MODE_READ;
9659
0
        janet_q_push(&channel->read_pending, &pending, sizeof(pending));
9660
0
        janet_chan_unlock(channel);
9661
0
        if (is_threaded) {
9662
0
            janet_gcroot(janet_wrap_fiber(pending.fiber));
9663
0
        }
9664
0
        return 0;
9665
0
    }
9666
0
    janet_assert(!janet_chan_unpack(channel, item, 0), "bad channel packing");
9667
0
    if (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9668
        /* Pending writer */
9669
0
        if (is_threaded) {
9670
0
            JanetVM *vm = writer.thread;
9671
0
            JanetEVGenericMessage msg;
9672
0
            msg.tag = writer.mode;
9673
0
            msg.fiber = writer.fiber;
9674
0
            msg.argi = (int32_t) writer.sched_id;
9675
0
            msg.argp = channel;
9676
0
            msg.argj = janet_wrap_nil();
9677
0
            if (vm) {
9678
0
                janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9679
0
            }
9680
0
        } else {
9681
0
            if (writer.mode == JANET_CP_MODE_CHOICE_WRITE) {
9682
0
                janet_schedule(writer.fiber, make_write_result(channel));
9683
0
            } else {
9684
0
                janet_schedule(writer.fiber, janet_wrap_abstract(channel));
9685
0
            }
9686
0
        }
9687
0
    }
9688
0
    janet_chan_unlock(channel);
9689
0
    return 1;
9690
0
}
9691
9692
0
static int janet_channel_pop(JanetChannel *channel, Janet *item, int is_choice) {
9693
0
    janet_chan_lock(channel);
9694
0
    return janet_channel_pop_with_lock(channel, item, is_choice);
9695
0
}
9696
9697
0
JanetChannel *janet_channel_unwrap(void *abstract) {
9698
0
    return abstract;
9699
0
}
9700
9701
0
JanetChannel *janet_getchannel(const Janet *argv, int32_t n) {
9702
0
    return janet_channel_unwrap(janet_getabstract(argv, n, &janet_channel_type));
9703
0
}
9704
9705
0
JanetChannel *janet_optchannel(const Janet *argv, int32_t argc, int32_t n, JanetChannel *dflt) {
9706
0
    if (argc > n && !janet_checktype(argv[n], JANET_NIL)) {
9707
0
        return janet_getchannel(argv, n);
9708
0
    } else {
9709
0
        return dflt;
9710
0
    }
9711
0
}
9712
9713
0
int janet_channel_give(JanetChannel *channel, Janet x) {
9714
0
    return janet_channel_push(channel, x, 2);
9715
0
}
9716
9717
0
int janet_channel_take(JanetChannel *channel, Janet *out) {
9718
0
    return janet_channel_pop(channel, out, 2);
9719
0
}
9720
9721
0
JanetChannel *janet_channel_make(uint32_t limit) {
9722
0
    janet_assert(limit <= INT32_MAX, "bad limit");
9723
0
    JanetChannel *channel = janet_abstract(&janet_channel_type, sizeof(JanetChannel));
9724
0
    janet_chan_init(channel, (int32_t) limit, 0);
9725
0
    return channel;
9726
0
}
9727
9728
0
JanetChannel *janet_channel_make_threaded(uint32_t limit) {
9729
0
    janet_assert(limit <= INT32_MAX, "bad limit");
9730
0
    JanetChannel *channel = janet_abstract_threaded(&janet_channel_type, sizeof(JanetChannel));
9731
0
    janet_chan_init(channel, (int32_t) limit, 0);
9732
0
    return channel;
9733
0
}
9734
9735
/* Channel Methods */
9736
9737
JANET_CORE_FN(cfun_channel_push,
9738
              "(ev/give channel value)",
9739
              "Write a value to a channel, suspending the current fiber if the channel is full. "
9740
0
              "Returns the channel if the write succeeded, nil otherwise.") {
9741
0
    janet_fixarity(argc, 2);
9742
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9743
0
    if (janet_vm.coerce_error) {
9744
0
        janet_panic("cannot give to channel inside janet_call");
9745
0
    }
9746
0
    if (janet_channel_push(channel, argv[1], 0)) {
9747
0
        janet_await();
9748
0
    }
9749
0
    return argv[0];
9750
0
}
9751
9752
JANET_CORE_FN(cfun_channel_pop,
9753
              "(ev/take channel)",
9754
0
              "Read from a channel, suspending the current fiber if no value is available.") {
9755
0
    janet_fixarity(argc, 1);
9756
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9757
0
    Janet item;
9758
0
    if (janet_vm.coerce_error) {
9759
0
        janet_panic("cannot take from channel inside janet_call");
9760
0
    }
9761
0
    if (janet_channel_pop(channel, &item, 0)) {
9762
0
        janet_schedule(janet_vm.root_fiber, item);
9763
0
    }
9764
0
    janet_await();
9765
0
}
9766
9767
0
static void chan_unlock_args(const Janet *argv, int32_t n) {
9768
0
    for (int32_t i = 0; i < n; i++) {
9769
0
        int32_t len;
9770
0
        const Janet *data;
9771
0
        JanetChannel *chan;
9772
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9773
0
            chan = janet_getchannel(data, 0);
9774
0
        } else {
9775
0
            chan = janet_getchannel(argv, i);
9776
0
        }
9777
0
        janet_chan_unlock(chan);
9778
0
    }
9779
0
}
9780
9781
JANET_CORE_FN(cfun_channel_choice,
9782
              "(ev/select & clauses)",
9783
              "Block until the first of several channel operations occur. Returns a "
9784
              "tuple of the form [:give chan], [:take chan x], or [:close chan], "
9785
              "where a :give tuple is the result of a write and a :take tuple is the "
9786
              "result of a read. Each clause must be either a channel (for a channel "
9787
              "take operation) or a tuple [channel x] (for a channel give operation). "
9788
              "Operations are tried in order such that earlier clauses take "
9789
              "precedence over later clauses. Both give and take operations can "
9790
              "return a [:close chan] tuple, which indicates that the specified "
9791
              "channel was closed while waiting, or that the channel was already "
9792
0
              "closed.") {
9793
0
    janet_arity(argc, 1, -1);
9794
0
    int32_t len;
9795
0
    const Janet *data;
9796
9797
0
    if (janet_vm.coerce_error) {
9798
0
        janet_panic("cannot select from channel inside janet_call");
9799
0
    }
9800
9801
    /* Check channels for immediate reads and writes */
9802
0
    for (int32_t i = 0; i < argc; i++) {
9803
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9804
            /* Write */
9805
0
            JanetChannel *chan = janet_getchannel(data, 0);
9806
0
            janet_chan_lock(chan);
9807
0
            if (chan->closed) {
9808
0
                janet_chan_unlock(chan);
9809
0
                chan_unlock_args(argv, i);
9810
0
                return make_close_result(chan);
9811
0
            }
9812
0
            if (janet_q_count(&chan->items) < chan->limit) {
9813
0
                janet_channel_push_with_lock(chan, data[1], 1);
9814
0
                chan_unlock_args(argv, i);
9815
0
                return make_write_result(chan);
9816
0
            }
9817
0
        } else {
9818
            /* Read */
9819
0
            JanetChannel *chan = janet_getchannel(argv, i);
9820
0
            janet_chan_lock(chan);
9821
0
            if (chan->closed) {
9822
0
                janet_chan_unlock(chan);
9823
0
                chan_unlock_args(argv, i);
9824
0
                return make_close_result(chan);
9825
0
            }
9826
0
            if (chan->items.head != chan->items.tail) {
9827
0
                Janet item;
9828
0
                janet_channel_pop_with_lock(chan, &item, 1);
9829
0
                chan_unlock_args(argv, i);
9830
0
                return make_read_result(chan, item);
9831
0
            }
9832
0
        }
9833
0
    }
9834
9835
    /* Wait for all readers or writers */
9836
0
    for (int32_t i = 0; i < argc; i++) {
9837
0
        if (janet_indexed_view(argv[i], &data, &len) && len == 2) {
9838
            /* Write */
9839
0
            JanetChannel *chan = janet_getchannel(data, 0);
9840
0
            janet_channel_push_with_lock(chan, data[1], 1);
9841
0
        } else {
9842
            /* Read */
9843
0
            Janet item;
9844
0
            JanetChannel *chan = janet_getchannel(argv, i);
9845
0
            janet_channel_pop_with_lock(chan, &item, 1);
9846
0
        }
9847
0
    }
9848
9849
0
    janet_await();
9850
0
}
9851
9852
JANET_CORE_FN(cfun_channel_full,
9853
              "(ev/full channel)",
9854
0
              "Check if a channel is full or not.") {
9855
0
    janet_fixarity(argc, 1);
9856
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9857
0
    janet_chan_lock(channel);
9858
0
    Janet ret = janet_wrap_boolean(janet_q_count(&channel->items) >= channel->limit);
9859
0
    janet_chan_unlock(channel);
9860
0
    return ret;
9861
0
}
9862
9863
JANET_CORE_FN(cfun_channel_capacity,
9864
              "(ev/capacity channel)",
9865
0
              "Get the number of items a channel will store before blocking writers.") {
9866
0
    janet_fixarity(argc, 1);
9867
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9868
0
    janet_chan_lock(channel);
9869
0
    Janet ret = janet_wrap_integer(channel->limit);
9870
0
    janet_chan_unlock(channel);
9871
0
    return ret;
9872
0
}
9873
9874
JANET_CORE_FN(cfun_channel_count,
9875
              "(ev/count channel)",
9876
0
              "Get the number of items currently waiting in a channel.") {
9877
0
    janet_fixarity(argc, 1);
9878
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9879
0
    janet_chan_lock(channel);
9880
0
    Janet ret = janet_wrap_integer(janet_q_count(&channel->items));
9881
0
    janet_chan_unlock(channel);
9882
0
    return ret;
9883
0
}
9884
9885
/* Fisher yates shuffle of arguments to get fairness */
9886
0
static void fisher_yates_args(int32_t argc, Janet *argv) {
9887
0
    for (int32_t i = argc; i > 1; i--) {
9888
0
        int32_t swap_index = janet_rng_u32(&janet_vm.ev_rng) % i;
9889
0
        Janet temp = argv[swap_index];
9890
0
        argv[swap_index] = argv[i - 1];
9891
0
        argv[i - 1] = temp;
9892
0
    }
9893
0
}
9894
9895
JANET_CORE_FN(cfun_channel_rchoice,
9896
              "(ev/rselect & clauses)",
9897
0
              "Similar to ev/select, but will try clauses in a random order for fairness.") {
9898
0
    fisher_yates_args(argc, argv);
9899
0
    return cfun_channel_choice(argc, argv);
9900
0
}
9901
9902
JANET_CORE_FN(cfun_channel_new,
9903
              "(ev/chan &opt capacity)",
9904
              "Create a new channel. capacity is the number of values to queue before "
9905
0
              "blocking writers, defaults to 0 if not provided. Returns a new channel.") {
9906
0
    janet_arity(argc, 0, 1);
9907
0
    int32_t limit = janet_optnat(argv, argc, 0, 0);
9908
0
    JanetChannel *channel = janet_abstract(&janet_channel_type, sizeof(JanetChannel));
9909
0
    janet_chan_init(channel, limit, 0);
9910
0
    return janet_wrap_abstract(channel);
9911
0
}
9912
9913
JANET_CORE_FN(cfun_channel_new_threaded,
9914
              "(ev/thread-chan &opt limit)",
9915
              "Create a threaded channel. A threaded channel is a channel that can be shared between threads and "
9916
0
              "used to communicate between any number of operating system threads.") {
9917
0
    janet_arity(argc, 0, 1);
9918
0
    int32_t limit = janet_optnat(argv, argc, 0, 0);
9919
0
    JanetChannel *tchan = janet_abstract_threaded(&janet_channel_type, sizeof(JanetChannel));
9920
0
    janet_chan_init(tchan, limit, 1);
9921
0
    return janet_wrap_abstract(tchan);
9922
0
}
9923
9924
JANET_CORE_FN(cfun_channel_close,
9925
              "(ev/chan-close chan)",
9926
              "Close a channel. A closed channel will cause all pending reads and writes to return nil. "
9927
0
              "Returns the channel.") {
9928
0
    janet_fixarity(argc, 1);
9929
0
    JanetChannel *channel = janet_getchannel(argv, 0);
9930
0
    janet_chan_lock(channel);
9931
0
    if (!channel->closed) {
9932
0
        channel->closed = 1;
9933
0
        JanetChannelPending writer;
9934
0
        while (!janet_q_pop(&channel->write_pending, &writer, sizeof(writer))) {
9935
0
            if (writer.thread != &janet_vm) {
9936
0
                JanetVM *vm = writer.thread;
9937
0
                JanetEVGenericMessage msg;
9938
0
                msg.fiber = writer.fiber;
9939
0
                msg.argp = channel;
9940
0
                msg.tag = JANET_CP_MODE_CLOSE;
9941
0
                msg.argi = (int32_t) writer.sched_id;
9942
0
                msg.argj = janet_wrap_nil();
9943
0
                if (vm) {
9944
0
                    janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9945
0
                }
9946
0
            } else {
9947
0
                if (janet_fiber_can_resume(writer.fiber)) {
9948
0
                    if (writer.mode == JANET_CP_MODE_CHOICE_WRITE) {
9949
0
                        janet_schedule(writer.fiber, make_close_result(channel));
9950
0
                    } else {
9951
0
                        janet_schedule(writer.fiber, janet_wrap_nil());
9952
0
                    }
9953
0
                }
9954
0
            }
9955
0
        }
9956
0
        JanetChannelPending reader;
9957
0
        while (!janet_q_pop(&channel->read_pending, &reader, sizeof(reader))) {
9958
0
            if (reader.thread != &janet_vm) {
9959
0
                JanetVM *vm = reader.thread;
9960
0
                JanetEVGenericMessage msg;
9961
0
                msg.fiber = reader.fiber;
9962
0
                msg.argp = channel;
9963
0
                msg.tag = JANET_CP_MODE_CLOSE;
9964
0
                msg.argi = (int32_t) reader.sched_id;
9965
0
                msg.argj = janet_wrap_nil();
9966
0
                if (vm) {
9967
0
                    janet_ev_post_event(vm, janet_thread_chan_cb, msg);
9968
0
                }
9969
0
            } else {
9970
0
                if (janet_fiber_can_resume(reader.fiber)) {
9971
0
                    if (reader.mode == JANET_CP_MODE_CHOICE_READ) {
9972
0
                        janet_schedule(reader.fiber, make_close_result(channel));
9973
0
                    } else {
9974
0
                        janet_schedule(reader.fiber, janet_wrap_nil());
9975
0
                    }
9976
0
                }
9977
0
            }
9978
0
        }
9979
0
    }
9980
0
    janet_chan_unlock(channel);
9981
0
    return argv[0];
9982
0
}
9983
9984
static const JanetMethod ev_chanat_methods[] = {
9985
    {"select", cfun_channel_choice},
9986
    {"rselect", cfun_channel_rchoice},
9987
    {"count", cfun_channel_count},
9988
    {"take", cfun_channel_pop},
9989
    {"give", cfun_channel_push},
9990
    {"capacity", cfun_channel_capacity},
9991
    {"full", cfun_channel_full},
9992
    {"close", cfun_channel_close},
9993
    {NULL, NULL}
9994
};
9995
9996
0
static int janet_chanat_get(void *p, Janet key, Janet *out) {
9997
0
    (void) p;
9998
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
9999
0
    return janet_getmethod(janet_unwrap_keyword(key), ev_chanat_methods, out);
10000
0
}
10001
10002
0
static Janet janet_chanat_next(void *p, Janet key) {
10003
0
    (void) p;
10004
0
    return janet_nextmethod(ev_chanat_methods, key);
10005
0
}
10006
10007
0
static void janet_chanat_marshal(void *p, JanetMarshalContext *ctx) {
10008
0
    JanetChannel *channel = (JanetChannel *)p;
10009
0
    janet_marshal_byte(ctx, channel->is_threaded);
10010
0
    janet_marshal_abstract(ctx, channel);
10011
0
    janet_marshal_byte(ctx, channel->closed);
10012
0
    janet_marshal_int(ctx, channel->limit);
10013
0
    int32_t count = janet_q_count(&channel->items);
10014
0
    janet_marshal_int(ctx, count);
10015
0
    JanetQueue *items = &channel->items;
10016
0
    Janet *data = channel->items.data;
10017
0
    if (items->head <= items->tail) {
10018
0
        for (int32_t i = items->head; i < items->tail; i++)
10019
0
            janet_marshal_janet(ctx, data[i]);
10020
0
    } else {
10021
0
        for (int32_t i = items->head; i < items->capacity; i++)
10022
0
            janet_marshal_janet(ctx, data[i]);
10023
0
        for (int32_t i = 0; i < items->tail; i++)
10024
0
            janet_marshal_janet(ctx, data[i]);
10025
0
    }
10026
0
}
10027
10028
0
static void *janet_chanat_unmarshal(JanetMarshalContext *ctx) {
10029
0
    uint8_t is_threaded = janet_unmarshal_byte(ctx);
10030
0
    JanetChannel *abst;
10031
0
    if (is_threaded) {
10032
0
        abst = janet_unmarshal_abstract_threaded(ctx, sizeof(JanetChannel));
10033
0
    } else {
10034
0
        abst = janet_unmarshal_abstract(ctx, sizeof(JanetChannel));
10035
0
    }
10036
0
    uint8_t is_closed = janet_unmarshal_byte(ctx);
10037
0
    int32_t limit = janet_unmarshal_int(ctx);
10038
0
    int32_t count = janet_unmarshal_int(ctx);
10039
0
    if (count < 0) janet_panic("invalid negative channel count");
10040
0
    janet_chan_init(abst, limit, 0);
10041
0
    abst->closed = !!is_closed;
10042
0
    for (int32_t i = 0; i < count; i++) {
10043
0
        Janet item = janet_unmarshal_janet(ctx);
10044
0
        janet_q_push(&abst->items, &item, sizeof(item));
10045
0
    }
10046
0
    return abst;
10047
0
}
10048
10049
const JanetAbstractType janet_channel_type = {
10050
    "core/channel",
10051
    janet_chanat_gc,
10052
    janet_chanat_mark,
10053
    janet_chanat_get,
10054
    NULL, /* put */
10055
    janet_chanat_marshal,
10056
    janet_chanat_unmarshal,
10057
    NULL, /* tostring */
10058
    NULL, /* compare */
10059
    NULL, /* hash */
10060
    janet_chanat_next,
10061
    NULL, /* call */
10062
    NULL, /* length */
10063
    NULL, /* bytes */
10064
    janet_chanat_gcperthread
10065
};
10066
10067
/* Main event loop */
10068
10069
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout);
10070
10071
0
int janet_loop_done(void) {
10072
0
    return !((janet_vm.spawn.head != janet_vm.spawn.tail) ||
10073
0
             janet_vm.tq_count ||
10074
0
             janet_atomic_load(&janet_vm.listener_count));
10075
0
}
10076
10077
0
JanetFiber *janet_loop1(void) {
10078
    /* Schedule expired timers */
10079
0
    JanetTimeout to;
10080
0
    JanetTimestamp now = ts_now();
10081
0
    while (peek_timeout(&to) && to.when <= now) {
10082
0
        pop_timeout(0);
10083
0
        if (to.curr_fiber != NULL) {
10084
0
            if (janet_fiber_can_resume(to.curr_fiber)) {
10085
0
                janet_cancel(to.fiber, janet_cstringv("deadline expired"));
10086
0
            }
10087
0
        } else {
10088
            /* This is a timeout (for a function call, not a whole fiber) */
10089
0
            if (to.fiber->sched_id == to.sched_id) {
10090
0
                if (to.is_error) {
10091
0
                    janet_cancel(to.fiber, janet_cstringv("timeout"));
10092
0
                } else {
10093
0
                    janet_schedule(to.fiber, janet_wrap_nil());
10094
0
                }
10095
0
            }
10096
0
        }
10097
0
        handle_timeout_worker(to, 0);
10098
0
    }
10099
10100
    /* Run scheduled fibers unless interrupts need to be handled. */
10101
0
    while (janet_vm.spawn.head != janet_vm.spawn.tail) {
10102
        /* Don't run until all interrupts have been marked as handled by calling janet_interpreter_interrupt_handled */
10103
0
        if (janet_atomic_load_relaxed(&janet_vm.auto_suspend)) break;
10104
0
        JanetTask task = {NULL, janet_wrap_nil(), JANET_SIGNAL_OK, 0};
10105
0
        janet_q_pop(&janet_vm.spawn, &task, sizeof(task));
10106
0
        if (task.fiber->gc.flags & JANET_FIBER_EV_FLAG_SUSPENDED) janet_ev_dec_refcount();
10107
0
        task.fiber->gc.flags &= ~(JANET_FIBER_EV_FLAG_CANCELED | JANET_FIBER_EV_FLAG_SUSPENDED);
10108
0
        if (task.expected_sched_id != task.fiber->sched_id) continue;
10109
0
        Janet res;
10110
0
        JanetSignal sig = janet_continue_signal(task.fiber, task.value, &res, task.sig);
10111
0
        if (!janet_fiber_can_resume(task.fiber)) {
10112
0
            janet_table_remove(&janet_vm.active_tasks, janet_wrap_fiber(task.fiber));
10113
0
        }
10114
0
        void *sv = task.fiber->supervisor_channel;
10115
0
        int is_suspended = sig == JANET_SIGNAL_EVENT || sig == JANET_SIGNAL_YIELD || sig == JANET_SIGNAL_INTERRUPT;
10116
0
        if (is_suspended) {
10117
0
            task.fiber->gc.flags |= JANET_FIBER_EV_FLAG_SUSPENDED;
10118
0
            janet_ev_inc_refcount();
10119
0
        }
10120
0
        if (NULL == sv) {
10121
0
            if (!is_suspended) {
10122
0
                janet_stacktrace_ext(task.fiber, res, "");
10123
0
            }
10124
0
        } else if (sig == JANET_SIGNAL_OK || (task.fiber->flags & (1 << sig))) {
10125
0
            JanetChannel *chan = janet_channel_unwrap(sv);
10126
0
            janet_channel_push(chan, make_supervisor_event(janet_signal_names[sig],
10127
0
                               task.fiber, chan->is_threaded), 2);
10128
0
        } else if (!is_suspended) {
10129
0
            janet_stacktrace_ext(task.fiber, res, "");
10130
0
        }
10131
0
        if (sig == JANET_SIGNAL_INTERRUPT) {
10132
0
            return task.fiber;
10133
0
        }
10134
0
    }
10135
10136
    /* Poll for events */
10137
0
    if (janet_vm.tq_count || janet_atomic_load(&janet_vm.listener_count)) {
10138
0
        JanetTimeout to;
10139
0
        memset(&to, 0, sizeof(to));
10140
0
        int has_timeout;
10141
        /* Drop timeouts that are no longer needed */
10142
0
        while ((has_timeout = peek_timeout(&to))) {
10143
0
            if (to.curr_fiber != NULL) {
10144
0
                if (!janet_fiber_can_resume(to.curr_fiber)) {
10145
0
                    pop_timeout(0);
10146
0
                    janet_table_remove(&janet_vm.active_tasks, janet_wrap_fiber(to.curr_fiber));
10147
0
                    handle_timeout_worker(to, 1);
10148
0
                    continue;
10149
0
                }
10150
0
            } else if (to.fiber->sched_id != to.sched_id) {
10151
0
                pop_timeout(0);
10152
0
                handle_timeout_worker(to, 1);
10153
0
                continue;
10154
0
            }
10155
0
            break;
10156
0
        }
10157
        /* Run polling implementation only if pending timeouts or pending events */
10158
0
        if (janet_vm.tq_count || janet_atomic_load(&janet_vm.listener_count)) {
10159
0
            janet_loop1_impl(has_timeout, to.when);
10160
0
        }
10161
0
    }
10162
10163
    /* No fiber was interrupted */
10164
0
    return NULL;
10165
0
}
10166
10167
/* Same as janet_interpreter_interrupt, but will also
10168
 * break out of the event loop if waiting for an event
10169
 * (say, waiting for ev/sleep to finish). Does this by pushing
10170
 * an empty event to the event loop. */
10171
0
void janet_loop1_interrupt(JanetVM *vm) {
10172
0
    janet_interpreter_interrupt(vm);
10173
0
    JanetEVGenericMessage msg = {0};
10174
0
    JanetCallback cb = NULL;
10175
0
    janet_ev_post_event(vm, cb, msg);
10176
0
}
10177
10178
0
void janet_loop(void) {
10179
0
    while (!janet_loop_done()) {
10180
0
        JanetFiber *interrupted_fiber = janet_loop1();
10181
0
        if (NULL != interrupted_fiber) {
10182
0
            janet_schedule(interrupted_fiber, janet_wrap_nil());
10183
0
        }
10184
0
    }
10185
0
}
10186
10187
/*
10188
 * Self-pipe handling code.
10189
 */
10190
10191
#ifdef JANET_WINDOWS
10192
10193
/* On windows, use PostQueuedCompletionStatus instead for
10194
 * custom events */
10195
10196
#else
10197
10198
5.80k
static void janet_ev_setup_selfpipe(void) {
10199
5.80k
    if (janet_make_pipe(janet_vm.selfpipe, 1)) {
10200
0
        JANET_EXIT("failed to initialize self pipe in event loop");
10201
0
    }
10202
5.80k
}
10203
10204
/* Handle events from the self pipe inside the event loop */
10205
0
static void janet_ev_handle_selfpipe(void) {
10206
0
    JanetSelfPipeEvent response;
10207
0
    int status;
10208
0
recur:
10209
0
    do {
10210
0
        status = read(janet_vm.selfpipe[0], &response, sizeof(response));
10211
0
    } while (status == -1 && errno == EINTR);
10212
0
    if (status > 0) {
10213
0
        if (NULL != response.cb) {
10214
0
            response.cb(response.msg);
10215
0
            janet_ev_dec_refcount();
10216
0
        }
10217
0
        goto recur;
10218
0
    }
10219
0
}
10220
10221
5.80k
static void janet_ev_cleanup_selfpipe(void) {
10222
5.80k
    close(janet_vm.selfpipe[0]);
10223
5.80k
    close(janet_vm.selfpipe[1]);
10224
5.80k
}
10225
10226
#endif
10227
10228
#ifdef JANET_WINDOWS
10229
10230
static JanetTimestamp ts_now(void) {
10231
    return (JanetTimestamp) GetTickCount64();
10232
}
10233
10234
void janet_ev_init(void) {
10235
    janet_ev_init_common();
10236
    janet_vm.iocp = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
10237
    if (NULL == janet_vm.iocp) janet_panic("could not create io completion port");
10238
}
10239
10240
void janet_ev_deinit(void) {
10241
    janet_ev_deinit_common();
10242
    CloseHandle(janet_vm.iocp);
10243
}
10244
10245
static void janet_register_stream(JanetStream *stream) {
10246
    if (NULL == CreateIoCompletionPort(stream->handle, janet_vm.iocp, (ULONG_PTR) stream, 0)) {
10247
        if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_WRITABLE | JANET_STREAM_ACCEPTABLE)) {
10248
            janet_panicf("failed to listen for events: %V", janet_ev_lasterr());
10249
        }
10250
        stream->flags |= JANET_STREAM_UNREGISTERED;
10251
    }
10252
}
10253
10254
void janet_loop1_impl(int has_timeout, JanetTimestamp to) {
10255
    ULONG_PTR completionKey = 0;
10256
    DWORD num_bytes_transferred = 0;
10257
    LPOVERLAPPED overlapped = NULL;
10258
10259
    /* Calculate how long to wait before timeout */
10260
    uint64_t waittime;
10261
    if (has_timeout) {
10262
        JanetTimestamp now = ts_now();
10263
        if (now > to) {
10264
            waittime = 0;
10265
        } else {
10266
            waittime = (uint64_t)(to - now);
10267
        }
10268
    } else {
10269
        waittime = INFINITE;
10270
    }
10271
    BOOL result = GetQueuedCompletionStatus(janet_vm.iocp, &num_bytes_transferred, &completionKey, &overlapped, (DWORD) waittime);
10272
10273
    if (result || overlapped) {
10274
        if (0 == completionKey) {
10275
            /* Custom event */
10276
            JanetSelfPipeEvent *response = (JanetSelfPipeEvent *)(overlapped);
10277
            if (NULL != response->cb) {
10278
                response->cb(response->msg);
10279
            }
10280
            janet_ev_dec_refcount();
10281
            janet_free(response);
10282
        } else {
10283
            /* Normal event */
10284
            JanetStream *stream = (JanetStream *) completionKey;
10285
            JanetFiber *fiber = NULL;
10286
            if (stream->read_fiber && stream->read_fiber->ev_state == overlapped) {
10287
                fiber = stream->read_fiber;
10288
            } else if (stream->write_fiber && stream->write_fiber->ev_state == overlapped) {
10289
                fiber = stream->write_fiber;
10290
            }
10291
            if (fiber != NULL) {
10292
                fiber->flags &= ~JANET_FIBER_EV_FLAG_IN_FLIGHT;
10293
                /* System is done with this, we can reused this data */
10294
                overlapped->InternalHigh = (ULONG_PTR) num_bytes_transferred;
10295
                fiber->ev_callback(fiber, result ? JANET_ASYNC_EVENT_COMPLETE : JANET_ASYNC_EVENT_FAILED);
10296
            } else {
10297
                janet_free((void *) overlapped);
10298
                janet_ev_dec_refcount();
10299
            }
10300
            janet_stream_checktoclose(stream);
10301
        }
10302
    }
10303
}
10304
10305
void janet_stream_edge_triggered(JanetStream *stream) {
10306
    (void) stream;
10307
}
10308
10309
void janet_stream_level_triggered(JanetStream *stream) {
10310
    (void) stream;
10311
}
10312
10313
#elif defined(JANET_EV_EPOLL)
10314
10315
0
static JanetTimestamp ts_now(void) {
10316
0
    struct timespec now;
10317
0
    janet_assert(-1 != janet_gettime(&now, JANET_TIME_MONOTONIC), "failed to get time");
10318
0
    uint64_t res = 1000 * now.tv_sec;
10319
0
    res += now.tv_nsec / 1000000;
10320
0
    return res;
10321
0
}
10322
10323
/* Wait for the next event */
10324
0
static void janet_register_stream_impl(JanetStream *stream, int mod, int edge_trigger) {
10325
0
    struct epoll_event ev;
10326
0
    ev.events = edge_trigger ? EPOLLET : 0;
10327
0
    if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_ACCEPTABLE)) ev.events |= EPOLLIN;
10328
0
    if (stream->flags & JANET_STREAM_WRITABLE) ev.events |= EPOLLOUT;
10329
0
    ev.data.ptr = stream;
10330
0
    int status;
10331
0
    do {
10332
0
        status = epoll_ctl(janet_vm.epoll, mod ? EPOLL_CTL_MOD : EPOLL_CTL_ADD, stream->handle, &ev);
10333
0
    } while (status == -1 && errno == EINTR);
10334
0
    if (status == -1) {
10335
0
        if (errno == EPERM) {
10336
            /* Couldn't add to event loop, so assume that it completes
10337
             * synchronously. */
10338
0
            stream->flags |= JANET_STREAM_UNREGISTERED;
10339
0
        } else {
10340
            /* Unexpected error */
10341
0
            janet_panicv(janet_ev_lasterr());
10342
0
        }
10343
0
    }
10344
0
}
10345
10346
0
static void janet_register_stream(JanetStream *stream) {
10347
0
    janet_register_stream_impl(stream, 0, 1);
10348
0
}
10349
10350
0
void janet_stream_edge_triggered(JanetStream *stream) {
10351
0
    janet_register_stream_impl(stream, 1, 1);
10352
0
}
10353
10354
0
void janet_stream_level_triggered(JanetStream *stream) {
10355
0
    janet_register_stream_impl(stream, 1, 0);
10356
0
}
10357
10358
0
#define JANET_EPOLL_MAX_EVENTS 64
10359
0
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
10360
0
    struct itimerspec its;
10361
0
    if (janet_vm.timer_enabled || has_timeout) {
10362
0
        memset(&its, 0, sizeof(its));
10363
0
        if (has_timeout) {
10364
0
            its.it_value.tv_sec = timeout / 1000;
10365
0
            its.it_value.tv_nsec = (timeout % 1000) * 1000000;
10366
0
        }
10367
0
        timerfd_settime(janet_vm.timerfd, TFD_TIMER_ABSTIME, &its, NULL);
10368
0
    }
10369
0
    janet_vm.timer_enabled = has_timeout;
10370
10371
    /* Poll for events */
10372
0
    struct epoll_event events[JANET_EPOLL_MAX_EVENTS];
10373
0
    int ready;
10374
0
    do {
10375
0
        ready = epoll_wait(janet_vm.epoll, events, JANET_EPOLL_MAX_EVENTS, -1);
10376
0
    } while (ready == -1 && errno == EINTR);
10377
0
    if (ready == -1) {
10378
0
        JANET_EXIT("failed to poll events");
10379
0
    }
10380
10381
    /* Step state machines */
10382
0
    for (int i = 0; i < ready; i++) {
10383
0
        void *p = events[i].data.ptr;
10384
0
        if (&janet_vm.timerfd == p) {
10385
0
            /* Timer expired, ignore */;
10386
0
        } else if (janet_vm.selfpipe == p) {
10387
            /* Self-pipe handling */
10388
0
            janet_ev_handle_selfpipe();
10389
0
        } else {
10390
0
            JanetStream *stream = p;
10391
0
            int mask = events[i].events;
10392
0
            int has_err = mask & EPOLLERR;
10393
0
            int has_hup = mask & EPOLLHUP;
10394
0
            JanetFiber *rf = stream->read_fiber;
10395
0
            JanetFiber *wf = stream->write_fiber;
10396
0
            if (rf) {
10397
0
                if (rf->ev_callback && (mask & EPOLLIN)) {
10398
0
                    rf->ev_callback(rf, JANET_ASYNC_EVENT_READ);
10399
0
                }
10400
0
                if (rf->ev_callback && has_err) {
10401
0
                    rf->ev_callback(rf, JANET_ASYNC_EVENT_ERR);
10402
0
                }
10403
0
                if (rf->ev_callback && has_hup) {
10404
0
                    rf->ev_callback(rf, JANET_ASYNC_EVENT_HUP);
10405
0
                }
10406
0
            }
10407
0
            if (wf) {
10408
0
                if (wf->ev_callback && (mask & EPOLLOUT)) {
10409
0
                    wf->ev_callback(wf, JANET_ASYNC_EVENT_WRITE);
10410
0
                }
10411
0
                if (wf->ev_callback && has_err) {
10412
0
                    wf->ev_callback(wf, JANET_ASYNC_EVENT_ERR);
10413
0
                }
10414
0
                if (wf->ev_callback && has_hup) {
10415
0
                    wf->ev_callback(wf, JANET_ASYNC_EVENT_HUP);
10416
0
                }
10417
0
            }
10418
0
            janet_stream_checktoclose(stream);
10419
0
        }
10420
0
    }
10421
0
}
10422
10423
5.80k
void janet_ev_init(void) {
10424
5.80k
    janet_ev_init_common();
10425
5.80k
    janet_ev_setup_selfpipe();
10426
5.80k
    janet_vm.epoll = epoll_create1(EPOLL_CLOEXEC);
10427
5.80k
    janet_vm.timerfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC | TFD_NONBLOCK);
10428
5.80k
    janet_vm.timer_enabled = 0;
10429
5.80k
    if (janet_vm.epoll == -1 || janet_vm.timerfd == -1) goto error;
10430
5.80k
    struct epoll_event ev;
10431
5.80k
    ev.events = EPOLLIN | EPOLLET;
10432
5.80k
    ev.data.ptr = &janet_vm.timerfd;
10433
5.80k
    if (-1 == epoll_ctl(janet_vm.epoll, EPOLL_CTL_ADD, janet_vm.timerfd, &ev)) goto error;
10434
5.80k
    ev.events = EPOLLIN | EPOLLET;
10435
5.80k
    ev.data.ptr = janet_vm.selfpipe;
10436
5.80k
    if (-1 == epoll_ctl(janet_vm.epoll, EPOLL_CTL_ADD, janet_vm.selfpipe[0], &ev)) goto error;
10437
5.80k
    return;
10438
5.80k
error:
10439
0
    JANET_EXIT("failed to initialize event loop");
10440
0
}
10441
10442
5.80k
void janet_ev_deinit(void) {
10443
5.80k
    janet_ev_deinit_common();
10444
5.80k
    close(janet_vm.epoll);
10445
5.80k
    close(janet_vm.timerfd);
10446
5.80k
    janet_ev_cleanup_selfpipe();
10447
5.80k
    janet_vm.epoll = 0;
10448
5.80k
}
10449
10450
/*
10451
 * End epoll implementation
10452
 */
10453
10454
#elif defined(JANET_EV_KQUEUE)
10455
/* Definition from:
10456
 *   https://github.com/wahern/cqueues/blob/master/src/lib/kpoll.c
10457
 * NetBSD uses intptr_t while others use void * for .udata */
10458
#define EV_SETx(ev, a, b, c, d, e, f) EV_SET((ev), (a), (b), (c), (d), (e), ((__typeof__((ev)->udata))(f)))
10459
#define JANET_KQUEUE_MIN_INTERVAL 0
10460
10461
/* NOTE:
10462
 * NetBSD and OpenBSD expect things are always intervals, and FreeBSD doesn't
10463
 * like an ABSTIME in the past so just use intervals always. Introduces a
10464
 * calculation to determine the minimum timeout per timeout requested of
10465
 * kqueue. Also note that NetBSD doesn't accept timeout intervals less than 1
10466
 * millisecond, so correct all intervals on that platform to be at least 1
10467
 * millisecond.*/
10468
JanetTimestamp to_interval(const JanetTimestamp ts) {
10469
    return ts >= JANET_KQUEUE_MIN_INTERVAL ? ts : JANET_KQUEUE_MIN_INTERVAL;
10470
}
10471
#define JANET_KQUEUE_INTERVAL(timestamp) (to_interval((timestamp - ts_now())))
10472
10473
static JanetTimestamp ts_now(void) {
10474
    struct timespec now;
10475
    janet_assert(-1 != janet_gettime(&now, JANET_TIME_MONOTONIC), "failed to get time");
10476
    uint64_t res = 1000 * now.tv_sec;
10477
    res += now.tv_nsec / 1000000;
10478
    return res;
10479
}
10480
10481
/* NOTE: Assumes Janet's timestamp precision is in milliseconds. */
10482
static void timestamp2timespec(struct timespec *t, JanetTimestamp ts) {
10483
    t->tv_sec = ts == 0 ? 0 : ts / 1000;
10484
    t->tv_nsec = ts == 0 ? 0 : (ts % 1000) * 1000000;
10485
}
10486
10487
void janet_register_stream_impl(JanetStream *stream, int edge_trigger) {
10488
    struct kevent kevs[2];
10489
    int length = 0;
10490
    int clear = edge_trigger ? EV_CLEAR : 0;
10491
    if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_ACCEPTABLE)) {
10492
        EV_SETx(&kevs[length++], stream->handle, EVFILT_READ, EV_ADD | EV_ENABLE | clear, 0, 0, stream);
10493
    }
10494
    if (stream->flags & JANET_STREAM_WRITABLE) {
10495
        EV_SETx(&kevs[length++], stream->handle, EVFILT_WRITE, EV_ADD | EV_ENABLE | clear, 0, 0, stream);
10496
    }
10497
    int status;
10498
    do {
10499
        status = kevent(janet_vm.kq, kevs, length, NULL, 0, NULL);
10500
    } while (status == -1 && errno == EINTR);
10501
    if (status == -1) {
10502
        stream->flags |= JANET_STREAM_UNREGISTERED;
10503
    }
10504
}
10505
10506
void janet_register_stream(JanetStream *stream) {
10507
    janet_register_stream_impl(stream, 1);
10508
}
10509
10510
void janet_stream_edge_triggered(JanetStream *stream) {
10511
    janet_register_stream_impl(stream, 1);
10512
}
10513
10514
void janet_stream_level_triggered(JanetStream *stream) {
10515
    /* On macos, we seem to need to delete any registered events before re-registering without
10516
     * EV_CLEAR, otherwise the new event will still have EV_CLEAR set erroneously. This could be a
10517
     * kernel bug, but unfortunately the specification is vague here, esp. in regards to where and when
10518
     * EV_CLEAR is set automatically. */
10519
    struct kevent kevs[2];
10520
    int length = 0;
10521
    if (stream->flags & (JANET_STREAM_READABLE | JANET_STREAM_ACCEPTABLE)) {
10522
        EV_SETx(&kevs[length++], stream->handle, EVFILT_READ, EV_DELETE, 0, 0, stream);
10523
    }
10524
    if (stream->flags & JANET_STREAM_WRITABLE) {
10525
        EV_SETx(&kevs[length++], stream->handle, EVFILT_WRITE, EV_DELETE, 0, 0, stream);
10526
    }
10527
    int status;
10528
    do {
10529
        status = kevent(janet_vm.kq, kevs, length, NULL, 0, NULL);
10530
    } while (status == -1 && errno == EINTR);
10531
    janet_register_stream_impl(stream, 0);
10532
}
10533
10534
#define JANET_KQUEUE_MAX_EVENTS 64
10535
10536
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
10537
    /* Poll for events */
10538
    /* NOTE:
10539
     * We calculate the timeout interval per iteration. When the interval
10540
     * drops to 0 or negative, we effect a timeout of 0. Effecting a timeout
10541
     * of infinity will not work and could make other fibers with timeouts
10542
     * miss their timeouts if we did so.
10543
     * JANET_KQUEUE_INTERVAL insures we have a timeout of no less than 0. */
10544
    int status;
10545
    struct timespec ts;
10546
    struct kevent events[JANET_KQUEUE_MAX_EVENTS];
10547
    do {
10548
        if (janet_vm.timer_enabled || has_timeout) {
10549
            timestamp2timespec(&ts, JANET_KQUEUE_INTERVAL(timeout));
10550
            status = kevent(janet_vm.kq, NULL, 0, events,
10551
                            JANET_KQUEUE_MAX_EVENTS, &ts);
10552
        } else {
10553
            status = kevent(janet_vm.kq, NULL, 0, events,
10554
                            JANET_KQUEUE_MAX_EVENTS, NULL);
10555
        }
10556
    } while (status == -1 && errno == EINTR);
10557
    if (status == -1) {
10558
        JANET_EXIT("failed to poll events");
10559
    }
10560
10561
    /* Make sure timer is set accordingly. */
10562
    janet_vm.timer_enabled = has_timeout;
10563
10564
    /* Step state machines */
10565
    for (int i = 0; i < status; i++) {
10566
        void *p = (void *) events[i].udata;
10567
        if (janet_vm.selfpipe == p) {
10568
            /* Self-pipe handling */
10569
            janet_ev_handle_selfpipe();
10570
        } else {
10571
            JanetStream *stream = p;
10572
            int filt = events[i].filter;
10573
            int has_err = events[i].flags & EV_ERROR;
10574
            int has_hup = events[i].flags & EV_EOF;
10575
            for (int j = 0; j < 2; j++) {
10576
                JanetFiber *f = j ? stream->read_fiber : stream->write_fiber;
10577
                if (!f) continue;
10578
                if (f->ev_callback && has_err) {
10579
                    f->ev_callback(f, JANET_ASYNC_EVENT_ERR);
10580
                }
10581
                if (f->ev_callback && (filt == EVFILT_READ) && f == stream->read_fiber) {
10582
                    f->ev_callback(f, JANET_ASYNC_EVENT_READ);
10583
                }
10584
                if (f->ev_callback && (filt == EVFILT_WRITE) && f == stream->write_fiber) {
10585
                    f->ev_callback(f, JANET_ASYNC_EVENT_WRITE);
10586
                }
10587
                if (f->ev_callback && has_hup) {
10588
                    f->ev_callback(f, JANET_ASYNC_EVENT_HUP);
10589
                }
10590
            }
10591
            janet_stream_checktoclose(stream);
10592
        }
10593
    }
10594
}
10595
10596
void janet_ev_init(void) {
10597
    janet_ev_init_common();
10598
    janet_ev_setup_selfpipe();
10599
    janet_vm.kq = kqueue();
10600
    janet_vm.timer_enabled = 0;
10601
    if (janet_vm.kq == -1) goto error;
10602
    struct kevent event;
10603
    EV_SETx(&event, janet_vm.selfpipe[0], EVFILT_READ, EV_ADD | EV_ENABLE, 0, 0, janet_vm.selfpipe);
10604
    int status;
10605
    do {
10606
        status = kevent(janet_vm.kq, &event, 1, NULL, 0, NULL);
10607
    } while (status == -1 && errno != EINTR);
10608
    if (status == -1) goto error;
10609
    return;
10610
error:
10611
    JANET_EXIT("failed to initialize event loop");
10612
}
10613
10614
void janet_ev_deinit(void) {
10615
    janet_ev_deinit_common();
10616
    close(janet_vm.kq);
10617
    janet_ev_cleanup_selfpipe();
10618
    janet_vm.kq = 0;
10619
}
10620
10621
#elif defined(JANET_EV_POLL)
10622
10623
/* Simple poll implementation. Efficiency is not the goal here, although the poll implementation should be farily efficient
10624
 * for low numbers of concurrent file descriptors. Rather, the code should be simple, portable, correct, and mirror the
10625
 * epoll and kqueue code. */
10626
10627
static JanetTimestamp ts_now(void) {
10628
    struct timespec now;
10629
    janet_assert(-1 != janet_gettime(&now, JANET_TIME_MONOTONIC), "failed to get time");
10630
    uint64_t res = 1000 * now.tv_sec;
10631
    res += now.tv_nsec / 1000000;
10632
    return res;
10633
}
10634
10635
/* Wait for the next event */
10636
void janet_register_stream(JanetStream *stream) {
10637
    struct pollfd ev = {0};
10638
    stream->index = (uint32_t) janet_vm.stream_count;
10639
    size_t new_count = janet_vm.stream_count + 1;
10640
    if (new_count > janet_vm.stream_capacity) {
10641
        size_t new_cap = new_count * 2;
10642
        janet_vm.fds = janet_realloc(janet_vm.fds, (1 + new_cap) * sizeof(struct pollfd));
10643
        janet_vm.streams = janet_realloc(janet_vm.streams, new_cap * sizeof(JanetStream *));
10644
        if (!janet_vm.fds || !janet_vm.streams) {
10645
            JANET_OUT_OF_MEMORY;
10646
        }
10647
        janet_vm.stream_capacity = new_cap;
10648
    }
10649
    ev.fd = stream->handle;
10650
    ev.events = POLLIN | POLLOUT;
10651
    janet_vm.fds[janet_vm.stream_count + 1] = ev;
10652
    janet_vm.streams[janet_vm.stream_count] = stream;
10653
    janet_vm.stream_count = new_count;
10654
}
10655
10656
void janet_stream_edge_triggered(JanetStream *stream) {
10657
    (void) stream;
10658
}
10659
10660
void janet_stream_level_triggered(JanetStream *stream) {
10661
    (void) stream;
10662
}
10663
10664
void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
10665
10666
    /* set event flags */
10667
    for (size_t i = 0; i < janet_vm.stream_count; i++) {
10668
        JanetStream *stream = janet_vm.streams[i];
10669
        struct pollfd *pfd = janet_vm.fds + i + 1;
10670
        pfd->events = 0;
10671
        pfd->revents = 0;
10672
        JanetFiber *rf = stream->read_fiber;
10673
        JanetFiber *wf = stream->write_fiber;
10674
        if (rf && rf->ev_callback) pfd->events |= POLLIN;
10675
        if (wf && wf->ev_callback) pfd->events |= POLLOUT;
10676
        /* Hack to ignore a file descriptor - make file descriptor negative if we want to ignore */
10677
        if (!pfd->events) {
10678
            pfd->fd = -pfd->fd;
10679
        }
10680
    }
10681
10682
    /* Poll for events */
10683
    int ready;
10684
    do {
10685
        int to = -1;
10686
        if (has_timeout) {
10687
            JanetTimestamp now = ts_now();
10688
            to = now > timeout ? 0 : (int)(timeout - now);
10689
        }
10690
        ready = poll(janet_vm.fds, janet_vm.stream_count + 1, to);
10691
    } while (ready == -1 && errno == EINTR);
10692
    if (ready == -1) {
10693
        JANET_EXIT("failed to poll events");
10694
    }
10695
10696
    /* Undo negative hack */
10697
    for (size_t i = 0; i < janet_vm.stream_count; i++) {
10698
        struct pollfd *pfd = janet_vm.fds + i + 1;
10699
        if (pfd->fd < 0) {
10700
            pfd->fd = -pfd->fd;
10701
        }
10702
    }
10703
10704
    /* Check selfpipe */
10705
    if (janet_vm.fds[0].revents & POLLIN) {
10706
        janet_vm.fds[0].revents = 0;
10707
        janet_ev_handle_selfpipe();
10708
    }
10709
10710
    /* Step state machines */
10711
    for (size_t i = 0; i < janet_vm.stream_count; i++) {
10712
        struct pollfd *pfd = janet_vm.fds + i + 1;
10713
        JanetStream *stream = janet_vm.streams[i];
10714
        int mask = pfd->revents;
10715
        if (!mask) continue;
10716
        int has_err = mask & POLLERR;
10717
        int has_hup = mask & POLLHUP;
10718
        JanetFiber *rf = stream->read_fiber;
10719
        JanetFiber *wf = stream->write_fiber;
10720
        if (rf) {
10721
            if (rf->ev_callback && (mask & POLLIN)) {
10722
                rf->ev_callback(rf, JANET_ASYNC_EVENT_READ);
10723
            } else if (rf->ev_callback && has_hup) {
10724
                rf->ev_callback(rf, JANET_ASYNC_EVENT_HUP);
10725
            } else if (rf->ev_callback && has_err) {
10726
                rf->ev_callback(rf, JANET_ASYNC_EVENT_ERR);
10727
            }
10728
        }
10729
        if (wf) {
10730
            if (wf->ev_callback && (mask & POLLOUT)) {
10731
                wf->ev_callback(wf, JANET_ASYNC_EVENT_WRITE);
10732
            } else if (wf->ev_callback && has_hup) {
10733
                wf->ev_callback(wf, JANET_ASYNC_EVENT_HUP);
10734
            } else if (wf->ev_callback && has_err) {
10735
                wf->ev_callback(wf, JANET_ASYNC_EVENT_ERR);
10736
            }
10737
        }
10738
        janet_stream_checktoclose(stream);
10739
    }
10740
}
10741
10742
void janet_ev_init(void) {
10743
    janet_ev_init_common();
10744
    janet_vm.fds = NULL;
10745
    janet_ev_setup_selfpipe();
10746
    janet_vm.fds = janet_malloc(sizeof(struct pollfd));
10747
    if (NULL == janet_vm.fds) {
10748
        JANET_OUT_OF_MEMORY;
10749
    }
10750
    janet_vm.fds[0].fd = janet_vm.selfpipe[0];
10751
    janet_vm.fds[0].events = POLLIN;
10752
    janet_vm.fds[0].revents = 0;
10753
    janet_vm.streams = NULL;
10754
    janet_vm.stream_count = 0;
10755
    janet_vm.stream_capacity = 0;
10756
    return;
10757
}
10758
10759
void janet_ev_deinit(void) {
10760
    janet_ev_deinit_common();
10761
    janet_ev_cleanup_selfpipe();
10762
    janet_free(janet_vm.fds);
10763
    janet_free(janet_vm.streams);
10764
    janet_vm.fds = NULL;
10765
    janet_vm.streams = NULL;
10766
}
10767
10768
#endif
10769
10770
/*
10771
 * End poll implementation
10772
 */
10773
10774
/*
10775
 * Generic Callback system. Post a function pointer + data to the event loop (from another
10776
 * thread or even a signal handler). Allows posting events from another thread or signal handler.
10777
 */
10778
0
void janet_ev_post_event(JanetVM *vm, JanetCallback cb, JanetEVGenericMessage msg) {
10779
0
    vm = vm ? vm : &janet_vm;
10780
0
    janet_atomic_inc(&vm->listener_count);
10781
#ifdef JANET_WINDOWS
10782
    JanetHandle iocp = vm->iocp;
10783
    JanetSelfPipeEvent *event = janet_malloc(sizeof(JanetSelfPipeEvent));
10784
    if (NULL == event) {
10785
        JANET_OUT_OF_MEMORY;
10786
    }
10787
    event->msg = msg;
10788
    event->cb = cb;
10789
    janet_assert(PostQueuedCompletionStatus(iocp,
10790
                                            sizeof(JanetSelfPipeEvent),
10791
                                            0,
10792
                                            (LPOVERLAPPED) event),
10793
                 "failed to post completion event");
10794
#else
10795
0
    JanetSelfPipeEvent event;
10796
0
    memset(&event, 0, sizeof(event));
10797
0
    event.msg = msg;
10798
0
    event.cb = cb;
10799
0
    int fd = vm->selfpipe[1];
10800
    /* handle a bit of back pressure before giving up. */
10801
0
    int tries = 20;
10802
0
    while (tries > 0) {
10803
0
        int status;
10804
0
        do {
10805
0
            status = write(fd, &event, sizeof(event));
10806
0
        } while (status == -1 && errno == EINTR);
10807
0
        if (status > 0) break;
10808
0
        sleep(0);
10809
0
        tries--;
10810
0
    }
10811
0
    janet_assert(tries > 0, "failed to write event to self-pipe");
10812
0
#endif
10813
0
}
10814
10815
/*
10816
 * Threaded calls
10817
 */
10818
10819
#ifdef JANET_WINDOWS
10820
static DWORD WINAPI janet_thread_body(LPVOID ptr) {
10821
    JanetEVThreadInit *init = (JanetEVThreadInit *)ptr;
10822
    JanetEVGenericMessage msg = init->msg;
10823
    JanetThreadedSubroutine subr = init->subr;
10824
    JanetThreadedCallback cb = init->cb;
10825
    JanetHandle iocp = init->write_pipe;
10826
    /* Reuse memory from thread init for returning data */
10827
    init->msg = subr(msg);
10828
    init->cb = cb;
10829
    janet_assert(PostQueuedCompletionStatus(iocp,
10830
                                            sizeof(JanetSelfPipeEvent),
10831
                                            0,
10832
                                            (LPOVERLAPPED) init),
10833
                 "failed to post completion event");
10834
    return 0;
10835
}
10836
#else
10837
0
static void *janet_thread_body(void *ptr) {
10838
0
    JanetEVThreadInit *init = (JanetEVThreadInit *)ptr;
10839
0
    JanetEVGenericMessage msg = init->msg;
10840
0
    JanetThreadedSubroutine subr = init->subr;
10841
0
    JanetThreadedCallback cb = init->cb;
10842
0
    int fd = init->write_pipe;
10843
0
    janet_free(init);
10844
0
    JanetSelfPipeEvent response;
10845
0
    memset(&response, 0, sizeof(response));
10846
0
    response.msg = subr(msg);
10847
0
    response.cb = cb;
10848
    /* handle a bit of back pressure before giving up. */
10849
0
    int tries = 4;
10850
0
    while (tries > 0) {
10851
0
        int status;
10852
0
        do {
10853
0
            status = write(fd, &response, sizeof(response));
10854
0
        } while (status == -1 && errno == EINTR);
10855
0
        if (status > 0) break;
10856
0
        sleep(1);
10857
0
        tries--;
10858
0
    }
10859
0
    return NULL;
10860
0
}
10861
#endif
10862
10863
0
void janet_ev_threaded_call(JanetThreadedSubroutine fp, JanetEVGenericMessage arguments, JanetThreadedCallback cb) {
10864
0
    JanetEVThreadInit *init = janet_malloc(sizeof(JanetEVThreadInit));
10865
0
    if (NULL == init) {
10866
0
        JANET_OUT_OF_MEMORY;
10867
0
    }
10868
0
    init->msg = arguments;
10869
0
    init->subr = fp;
10870
0
    init->cb = cb;
10871
10872
#ifdef JANET_WINDOWS
10873
    init->write_pipe = janet_vm.iocp;
10874
    HANDLE thread_handle = CreateThread(NULL, 0, janet_thread_body, init, 0, NULL);
10875
    if (NULL == thread_handle) {
10876
        janet_free(init);
10877
        janet_panic("failed to create thread");
10878
    }
10879
    CloseHandle(thread_handle); /* detach from thread */
10880
#else
10881
0
    init->write_pipe = janet_vm.selfpipe[1];
10882
0
    pthread_t waiter_thread;
10883
0
    int err = pthread_create(&waiter_thread, &janet_vm.new_thread_attr, janet_thread_body, init);
10884
0
    if (err) {
10885
0
        janet_free(init);
10886
0
        janet_panicf("%s", janet_strerror(err));
10887
0
    }
10888
0
#endif
10889
10890
    /* Increment ev refcount so we don't quit while waiting for a subprocess */
10891
0
    janet_ev_inc_refcount();
10892
0
}
10893
10894
/* Default callback for janet_ev_threaded_await. */
10895
0
void janet_ev_default_threaded_callback(JanetEVGenericMessage return_value) {
10896
0
    if (return_value.fiber == NULL) {
10897
0
        return;
10898
0
    }
10899
0
    if (janet_fiber_can_resume(return_value.fiber)) {
10900
0
        switch (return_value.tag) {
10901
0
            default:
10902
0
            case JANET_EV_TCTAG_NIL:
10903
0
                janet_schedule(return_value.fiber, janet_wrap_nil());
10904
0
                break;
10905
0
            case JANET_EV_TCTAG_INTEGER:
10906
0
                janet_schedule(return_value.fiber, janet_wrap_integer(return_value.argi));
10907
0
                break;
10908
0
            case JANET_EV_TCTAG_STRING:
10909
0
            case JANET_EV_TCTAG_STRINGF:
10910
0
                janet_schedule(return_value.fiber, janet_cstringv((const char *) return_value.argp));
10911
0
                if (return_value.tag == JANET_EV_TCTAG_STRINGF) janet_free(return_value.argp);
10912
0
                break;
10913
0
            case JANET_EV_TCTAG_KEYWORD:
10914
0
                janet_schedule(return_value.fiber, janet_ckeywordv((const char *) return_value.argp));
10915
0
                break;
10916
0
            case JANET_EV_TCTAG_ERR_STRING:
10917
0
            case JANET_EV_TCTAG_ERR_STRINGF:
10918
0
                janet_cancel(return_value.fiber, janet_cstringv((const char *) return_value.argp));
10919
0
                if (return_value.tag == JANET_EV_TCTAG_STRINGF) janet_free(return_value.argp);
10920
0
                break;
10921
0
            case JANET_EV_TCTAG_ERR_KEYWORD:
10922
0
                janet_cancel(return_value.fiber, janet_ckeywordv((const char *) return_value.argp));
10923
0
                break;
10924
0
            case JANET_EV_TCTAG_BOOLEAN:
10925
0
                janet_schedule(return_value.fiber, janet_wrap_boolean(return_value.argi));
10926
0
                break;
10927
0
        }
10928
0
    }
10929
0
    janet_gcunroot(janet_wrap_fiber(return_value.fiber));
10930
0
}
10931
10932
/* Convenience method for common case */
10933
JANET_NO_RETURN
10934
0
void janet_ev_threaded_await(JanetThreadedSubroutine fp, int tag, int argi, void *argp) {
10935
0
    JanetEVGenericMessage arguments;
10936
0
    memset(&arguments, 0, sizeof(arguments));
10937
0
    arguments.tag = tag;
10938
0
    arguments.argi = argi;
10939
0
    arguments.argp = argp;
10940
0
    arguments.fiber = janet_root_fiber();
10941
0
    janet_gcroot(janet_wrap_fiber(arguments.fiber));
10942
0
    janet_ev_threaded_call(fp, arguments, janet_ev_default_threaded_callback);
10943
0
    janet_await();
10944
0
}
10945
10946
/*
10947
 * C API helpers for reading and writing from streams.
10948
 * There is some networking code in here as well as generic
10949
 * reading and writing primitives.
10950
 */
10951
10952
0
void janet_stream_flags(JanetStream *stream, uint32_t flags) {
10953
0
    if (stream->flags & JANET_STREAM_CLOSED) {
10954
0
        janet_panic("stream is closed");
10955
0
    }
10956
0
    if ((stream->flags & flags) != flags) {
10957
0
        const char *rmsg = "", *wmsg = "", *amsg = "", *dmsg = "", *smsg = "stream";
10958
0
        if (flags & JANET_STREAM_READABLE) rmsg = "readable ";
10959
0
        if (flags & JANET_STREAM_WRITABLE) wmsg = "writable ";
10960
0
        if (flags & JANET_STREAM_ACCEPTABLE) amsg = "server ";
10961
0
        if (flags & JANET_STREAM_UDPSERVER) dmsg = "datagram ";
10962
0
        if (flags & JANET_STREAM_SOCKET) smsg = "socket";
10963
0
        janet_panicf("bad stream, expected %s%s%s%s%s", rmsg, wmsg, amsg, dmsg, smsg);
10964
0
    }
10965
0
}
10966
10967
/* When there is an IO error, we need to be able to convert it to a Janet
10968
 * string to raise a Janet error. */
10969
#ifdef JANET_WINDOWS
10970
#define JANET_EV_CHUNKSIZE 4096
10971
Janet janet_ev_lasterr(void) {
10972
    int code = GetLastError();
10973
    char msgbuf[256];
10974
    msgbuf[0] = '\0';
10975
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
10976
                  NULL,
10977
                  code,
10978
                  MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
10979
                  msgbuf,
10980
                  sizeof(msgbuf),
10981
                  NULL);
10982
    if (!*msgbuf) sprintf(msgbuf, "%d", code);
10983
    char *c = msgbuf;
10984
    while (*c) {
10985
        if (*c == '\n' || *c == '\r') {
10986
            *c = '\0';
10987
            break;
10988
        }
10989
        c++;
10990
    }
10991
    return janet_cstringv(msgbuf);
10992
}
10993
#else
10994
0
Janet janet_ev_lasterr(void) {
10995
0
    return janet_cstringv(janet_strerror(errno));
10996
0
}
10997
#endif
10998
10999
/* State machine for read/recv/recvfrom */
11000
11001
typedef enum {
11002
    JANET_ASYNC_READMODE_READ,
11003
    JANET_ASYNC_READMODE_RECV,
11004
    JANET_ASYNC_READMODE_RECVFROM
11005
} JanetReadMode;
11006
11007
typedef struct {
11008
#ifdef JANET_WINDOWS
11009
    OVERLAPPED overlapped;
11010
    DWORD flags;
11011
#ifdef JANET_NET
11012
    WSABUF wbuf;
11013
    struct sockaddr from;
11014
    int fromlen;
11015
#endif
11016
    uint8_t chunk_buf[JANET_EV_CHUNKSIZE];
11017
#else
11018
    int flags;
11019
#endif
11020
    int32_t bytes_left;
11021
    int32_t bytes_read;
11022
    JanetBuffer *buf;
11023
    int is_chunk;
11024
    JanetReadMode mode;
11025
} StateRead;
11026
11027
0
void ev_callback_read(JanetFiber *fiber, JanetAsyncEvent event) {
11028
0
    JanetStream *stream = fiber->ev_stream;
11029
0
    StateRead *state = (StateRead *) fiber->ev_state;
11030
0
    switch (event) {
11031
0
        default:
11032
0
            break;
11033
0
        case JANET_ASYNC_EVENT_MARK:
11034
0
            janet_mark(janet_wrap_buffer(state->buf));
11035
0
            break;
11036
0
        case JANET_ASYNC_EVENT_CLOSE:
11037
0
            janet_schedule(fiber, janet_wrap_nil());
11038
0
            janet_async_end(fiber);
11039
0
            break;
11040
#ifdef JANET_WINDOWS
11041
        case JANET_ASYNC_EVENT_FAILED:
11042
        case JANET_ASYNC_EVENT_COMPLETE: {
11043
            /* Called when read finished */
11044
            uint32_t ev_bytes = (uint32_t) state->overlapped.InternalHigh;
11045
            state->bytes_read += ev_bytes;
11046
            if (state->bytes_read == 0 && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
11047
                janet_schedule(fiber, janet_wrap_nil());
11048
                janet_async_end(fiber);
11049
                return;
11050
            }
11051
11052
            janet_buffer_push_bytes(state->buf, state->chunk_buf, ev_bytes);
11053
            state->bytes_left -= ev_bytes;
11054
11055
            if (state->bytes_left == 0 || !state->is_chunk || ev_bytes == 0) {
11056
                Janet resume_val;
11057
#ifdef JANET_NET
11058
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
11059
                    void *abst = janet_abstract(&janet_address_type, state->fromlen);
11060
                    memcpy(abst, &state->from, state->fromlen);
11061
                    resume_val = janet_wrap_abstract(abst);
11062
                } else
11063
#endif
11064
                {
11065
                    resume_val = janet_wrap_buffer(state->buf);
11066
                }
11067
                janet_schedule(fiber, resume_val);
11068
                janet_async_end(fiber);
11069
                return;
11070
            }
11071
        }
11072
11073
        /* fallthrough */
11074
        case JANET_ASYNC_EVENT_INIT: {
11075
            int32_t chunk_size = state->bytes_left > JANET_EV_CHUNKSIZE ? JANET_EV_CHUNKSIZE : state->bytes_left;
11076
            memset(&(state->overlapped), 0, sizeof(OVERLAPPED));
11077
            int status;
11078
#ifdef JANET_NET
11079
            if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
11080
                state->wbuf.len = (ULONG) chunk_size;
11081
                state->wbuf.buf = (char *) state->chunk_buf;
11082
                state->fromlen = sizeof(state->from);
11083
                status = WSARecvFrom((SOCKET) stream->handle, &state->wbuf, 1,
11084
                                     NULL, &state->flags, &state->from, &state->fromlen, &state->overlapped, NULL);
11085
                if (status && (WSA_IO_PENDING != WSAGetLastError())) {
11086
                    janet_cancel(fiber, janet_ev_lasterr());
11087
                    janet_async_end(fiber);
11088
                    return;
11089
                }
11090
            } else
11091
#endif
11092
            {
11093
                /* Some handles (not all) read from the offset in lpOverlapped
11094
                 * if its not set before calling `ReadFile` these streams will always read from offset 0 */
11095
                state->overlapped.Offset = (DWORD) state->bytes_read;
11096
11097
                status = ReadFile(stream->handle, state->chunk_buf, chunk_size, NULL, &state->overlapped);
11098
                if (!status && (ERROR_IO_PENDING != GetLastError())) {
11099
                    if (GetLastError() == ERROR_BROKEN_PIPE) {
11100
                        if (state->bytes_read) {
11101
                            janet_schedule(fiber, janet_wrap_buffer(state->buf));
11102
                        } else {
11103
                            janet_schedule(fiber, janet_wrap_nil());
11104
                        }
11105
                    } else {
11106
                        janet_cancel(fiber, janet_ev_lasterr());
11107
                    }
11108
                    janet_async_end(fiber);
11109
                    return;
11110
                }
11111
            }
11112
            janet_async_in_flight(fiber);
11113
        }
11114
        break;
11115
#else
11116
0
        case JANET_ASYNC_EVENT_ERR: {
11117
0
            if (state->bytes_read) {
11118
0
                janet_schedule(fiber, janet_wrap_buffer(state->buf));
11119
0
            } else {
11120
0
                janet_schedule(fiber, janet_wrap_nil());
11121
0
            }
11122
0
            stream->read_fiber = NULL;
11123
0
            janet_async_end(fiber);
11124
0
            break;
11125
0
        }
11126
11127
0
    read_more:
11128
0
        case JANET_ASYNC_EVENT_HUP:
11129
0
        case JANET_ASYNC_EVENT_INIT:
11130
0
        case JANET_ASYNC_EVENT_READ: {
11131
0
            JanetBuffer *buffer = state->buf;
11132
0
            int32_t bytes_left = state->bytes_left;
11133
0
            int32_t read_limit = state->is_chunk ? (bytes_left > 4096 ? 4096 : bytes_left) : bytes_left;
11134
0
            janet_buffer_extra(buffer, read_limit);
11135
0
            ssize_t nread;
11136
0
#ifdef JANET_NET
11137
0
            char saddr[256];
11138
0
            socklen_t socklen = sizeof(saddr);
11139
0
#endif
11140
0
            do {
11141
0
#ifdef JANET_NET
11142
0
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
11143
0
                    nread = recvfrom(stream->handle, buffer->data + buffer->count, read_limit, state->flags,
11144
0
                                     (struct sockaddr *)&saddr, &socklen);
11145
0
                } else if (state->mode == JANET_ASYNC_READMODE_RECV) {
11146
0
                    nread = recv(stream->handle, buffer->data + buffer->count, read_limit, state->flags);
11147
0
                } else
11148
0
#endif
11149
0
                {
11150
0
                    nread = read(stream->handle, buffer->data + buffer->count, read_limit);
11151
0
                }
11152
0
            } while (nread == -1 && errno == EINTR);
11153
11154
            /* Check for errors - special case errors that can just be waited on to fix */
11155
0
            if (nread == -1) {
11156
0
                if (errno == EAGAIN || errno == EWOULDBLOCK) {
11157
0
                    break;
11158
0
                }
11159
                /* In stream protocols, a pipe error is end of stream */
11160
0
                if (errno == EPIPE && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
11161
0
                    nread = 0;
11162
0
                } else {
11163
0
                    janet_cancel(fiber, janet_ev_lasterr());
11164
0
                    janet_async_end(fiber);
11165
0
                    break;
11166
0
                }
11167
0
            }
11168
11169
            /* Only allow 0-length packets in recv-from. In stream protocols, a zero length packet is EOS. */
11170
0
            state->bytes_read += nread;
11171
0
            if (state->bytes_read == 0 && (state->mode != JANET_ASYNC_READMODE_RECVFROM)) {
11172
0
                janet_schedule(fiber, janet_wrap_nil());
11173
0
                janet_async_end(fiber);
11174
0
                break;
11175
0
            }
11176
11177
            /* Increment buffer counts */
11178
0
            buffer->count += nread;
11179
0
            bytes_left -= nread;
11180
0
            state->bytes_left = bytes_left;
11181
11182
            /* Resume if done */
11183
0
            if (!state->is_chunk || bytes_left == 0 || nread == 0) {
11184
0
                Janet resume_val;
11185
0
#ifdef JANET_NET
11186
0
                if (state->mode == JANET_ASYNC_READMODE_RECVFROM) {
11187
0
                    void *abst = janet_abstract(&janet_address_type, socklen);
11188
0
                    memcpy(abst, &saddr, socklen);
11189
0
                    resume_val = janet_wrap_abstract(abst);
11190
0
                } else
11191
0
#endif
11192
0
                {
11193
0
                    resume_val = janet_wrap_buffer(buffer);
11194
0
                }
11195
0
                janet_schedule(fiber, resume_val);
11196
0
                janet_async_end(fiber);
11197
0
                break;
11198
0
            }
11199
11200
            /* Read some more if possible */
11201
0
            goto read_more;
11202
0
        }
11203
0
        break;
11204
0
#endif
11205
0
    }
11206
0
}
11207
11208
0
static JANET_NO_RETURN void janet_ev_read_generic(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int is_chunked, JanetReadMode mode, int flags) {
11209
0
    StateRead *state = janet_malloc(sizeof(StateRead));
11210
0
    state->is_chunk = is_chunked;
11211
0
    state->buf = buf;
11212
0
    state->bytes_left = nbytes;
11213
0
    state->bytes_read = 0;
11214
0
    state->mode = mode;
11215
#ifdef JANET_WINDOWS
11216
    state->flags = (DWORD) flags;
11217
#else
11218
0
    state->flags = flags;
11219
0
#endif
11220
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_READ, ev_callback_read, state);
11221
0
}
11222
11223
0
JANET_NO_RETURN void janet_ev_read(JanetStream *stream, JanetBuffer *buf, int32_t nbytes) {
11224
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_READ, 0);
11225
0
}
11226
0
JANET_NO_RETURN void janet_ev_readchunk(JanetStream *stream, JanetBuffer *buf, int32_t nbytes) {
11227
0
    janet_ev_read_generic(stream, buf, nbytes, 1, JANET_ASYNC_READMODE_READ, 0);
11228
0
}
11229
#ifdef JANET_NET
11230
0
JANET_NO_RETURN void janet_ev_recv(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
11231
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_RECV, flags);
11232
0
}
11233
0
JANET_NO_RETURN void janet_ev_recvchunk(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
11234
0
    janet_ev_read_generic(stream, buf, nbytes, 1, JANET_ASYNC_READMODE_RECV, flags);
11235
0
}
11236
0
JANET_NO_RETURN void janet_ev_recvfrom(JanetStream *stream, JanetBuffer *buf, int32_t nbytes, int flags) {
11237
0
    janet_ev_read_generic(stream, buf, nbytes, 0, JANET_ASYNC_READMODE_RECVFROM, flags);
11238
0
}
11239
#endif
11240
11241
/*
11242
 * State machine for write/send/send-to
11243
 */
11244
11245
typedef enum {
11246
    JANET_ASYNC_WRITEMODE_WRITE,
11247
    JANET_ASYNC_WRITEMODE_SEND,
11248
    JANET_ASYNC_WRITEMODE_SENDTO
11249
} JanetWriteMode;
11250
11251
typedef struct {
11252
#ifdef JANET_WINDOWS
11253
    OVERLAPPED overlapped;
11254
    DWORD flags;
11255
#ifdef JANET_NET
11256
    WSABUF wbuf;
11257
#endif
11258
#else
11259
    int flags;
11260
    int32_t start;
11261
#endif
11262
    union {
11263
        JanetBuffer *buf;
11264
        const uint8_t *str;
11265
    } src;
11266
    int is_buffer;
11267
    JanetWriteMode mode;
11268
    void *dest_abst;
11269
} StateWrite;
11270
11271
0
void ev_callback_write(JanetFiber *fiber, JanetAsyncEvent event) {
11272
0
    JanetStream *stream = fiber->ev_stream;
11273
0
    StateWrite *state = (StateWrite *) fiber->ev_state;
11274
0
    switch (event) {
11275
0
        default:
11276
0
            break;
11277
0
        case JANET_ASYNC_EVENT_MARK: {
11278
0
            janet_mark(state->is_buffer
11279
0
                       ? janet_wrap_buffer(state->src.buf)
11280
0
                       : janet_wrap_string(state->src.str));
11281
0
            if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
11282
0
                janet_mark(janet_wrap_abstract(state->dest_abst));
11283
0
            }
11284
0
            break;
11285
0
        }
11286
0
        case JANET_ASYNC_EVENT_CLOSE:
11287
0
            janet_cancel(fiber, janet_cstringv("stream closed"));
11288
0
            janet_async_end(fiber);
11289
0
            break;
11290
#ifdef JANET_WINDOWS
11291
        case JANET_ASYNC_EVENT_FAILED:
11292
        case JANET_ASYNC_EVENT_COMPLETE: {
11293
            /* Called when write finished */
11294
            uint32_t ev_bytes = (uint32_t) state->overlapped.InternalHigh;
11295
            if (ev_bytes == 0 && (state->mode != JANET_ASYNC_WRITEMODE_SENDTO)) {
11296
                janet_cancel(fiber, janet_cstringv("disconnect"));
11297
                janet_async_end(fiber);
11298
                return;
11299
            }
11300
11301
            janet_schedule(fiber, janet_wrap_nil());
11302
            janet_async_end(fiber);
11303
            return;
11304
        }
11305
        break;
11306
        case JANET_ASYNC_EVENT_INIT: {
11307
            /* Begin write */
11308
            int32_t len;
11309
            const uint8_t *bytes;
11310
            if (state->is_buffer) {
11311
                /* If buffer, convert to string. */
11312
                /* TODO - be more efficient about this */
11313
                JanetBuffer *buffer = state->src.buf;
11314
                JanetString str = janet_string(buffer->data, buffer->count);
11315
                bytes = str;
11316
                len = buffer->count;
11317
                state->is_buffer = 0;
11318
                state->src.str = str;
11319
            } else {
11320
                bytes = state->src.str;
11321
                len = janet_string_length(bytes);
11322
            }
11323
            memset(&(state->overlapped), 0, sizeof(WSAOVERLAPPED));
11324
11325
            int status;
11326
#ifdef JANET_NET
11327
            if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
11328
                SOCKET sock = (SOCKET) stream->handle;
11329
                state->wbuf.buf = (char *) bytes;
11330
                state->wbuf.len = len;
11331
                const struct sockaddr *to = state->dest_abst;
11332
                int tolen = (int) janet_abstract_size((void *) to);
11333
                status = WSASendTo(sock, &state->wbuf, 1, NULL, state->flags, to, tolen, &state->overlapped, NULL);
11334
                if (status) {
11335
                    if (WSA_IO_PENDING == WSAGetLastError()) {
11336
                        janet_async_in_flight(fiber);
11337
                    } else {
11338
                        janet_cancel(fiber, janet_ev_lasterr());
11339
                        janet_async_end(fiber);
11340
                        return;
11341
                    }
11342
                }
11343
            } else
11344
#endif
11345
            {
11346
                /*
11347
                 * File handles in IOCP need to specify this if they are writing to the
11348
                 * ends of files, like how this is used here.
11349
                 * If the underlying resource doesn't support seeking
11350
                 * byte offsets, they will be ignored
11351
                 * but this otherwise writes to the end of the file in question
11352
                 * Right now, os/open streams aren't seekable, so this works.
11353
                 * for more details see the lpOverlapped parameter in
11354
                 * https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-writefile
11355
                 */
11356
                state->overlapped.Offset = (DWORD) 0xFFFFFFFF;
11357
                state->overlapped.OffsetHigh = (DWORD) 0xFFFFFFFF;
11358
                status = WriteFile(stream->handle, bytes, len, NULL, &state->overlapped);
11359
                if (!status) {
11360
                    if (ERROR_IO_PENDING == GetLastError()) {
11361
                        janet_async_in_flight(fiber);
11362
                    } else {
11363
                        janet_cancel(fiber, janet_ev_lasterr());
11364
                        janet_async_end(fiber);
11365
                        return;
11366
                    }
11367
                }
11368
            }
11369
        }
11370
        break;
11371
#else
11372
0
        case JANET_ASYNC_EVENT_ERR:
11373
0
            janet_cancel(fiber, janet_cstringv("stream err"));
11374
0
            janet_async_end(fiber);
11375
0
            break;
11376
0
        case JANET_ASYNC_EVENT_HUP:
11377
0
            janet_cancel(fiber, janet_cstringv("stream hup"));
11378
0
            janet_async_end(fiber);
11379
0
            break;
11380
0
        case JANET_ASYNC_EVENT_INIT:
11381
0
        case JANET_ASYNC_EVENT_WRITE: {
11382
0
            int32_t start, len;
11383
0
            const uint8_t *bytes;
11384
0
            start = state->start;
11385
0
            if (state->is_buffer) {
11386
0
                JanetBuffer *buffer = state->src.buf;
11387
0
                bytes = buffer->data;
11388
0
                len = buffer->count;
11389
0
            } else {
11390
0
                bytes = state->src.str;
11391
0
                len = janet_string_length(bytes);
11392
0
            }
11393
0
            ssize_t nwrote = 0;
11394
0
            if (start < len) {
11395
0
                int32_t nbytes = len - start;
11396
0
                void *dest_abst = state->dest_abst;
11397
0
                do {
11398
0
#ifdef JANET_NET
11399
0
                    if (state->mode == JANET_ASYNC_WRITEMODE_SENDTO) {
11400
0
                        nwrote = sendto(stream->handle, bytes + start, nbytes, state->flags,
11401
0
                                        (struct sockaddr *) dest_abst, janet_abstract_size(dest_abst));
11402
0
                    } else if (state->mode == JANET_ASYNC_WRITEMODE_SEND) {
11403
0
                        nwrote = send(stream->handle, bytes + start, nbytes, state->flags);
11404
0
                    } else
11405
0
#endif
11406
0
                    {
11407
0
                        nwrote = write(stream->handle, bytes + start, nbytes);
11408
0
                    }
11409
0
                } while (nwrote == -1 && errno == EINTR);
11410
11411
                /* Handle write errors */
11412
0
                if (nwrote == -1) {
11413
0
                    if (errno == EAGAIN || errno == EWOULDBLOCK) break;
11414
0
                    janet_cancel(fiber, janet_ev_lasterr());
11415
0
                    janet_async_end(fiber);
11416
0
                    break;
11417
0
                }
11418
11419
                /* Unless using datagrams, empty message is a disconnect */
11420
0
                if (nwrote == 0 && !dest_abst) {
11421
0
                    janet_cancel(fiber, janet_cstringv("disconnect"));
11422
0
                    janet_async_end(fiber);
11423
0
                    break;
11424
0
                }
11425
11426
0
                if (nwrote > 0) {
11427
0
                    start += nwrote;
11428
0
                } else {
11429
0
                    start = len;
11430
0
                }
11431
0
            }
11432
0
            state->start = start;
11433
0
            if (start >= len) {
11434
0
                janet_schedule(fiber, janet_wrap_nil());
11435
0
                janet_async_end(fiber);
11436
0
                break;
11437
0
            }
11438
0
            break;
11439
0
        }
11440
0
        break;
11441
0
#endif
11442
0
    }
11443
0
}
11444
11445
0
static JANET_NO_RETURN void janet_ev_write_generic(JanetStream *stream, void *buf, void *dest_abst, JanetWriteMode mode, int is_buffer, int flags) {
11446
0
    StateWrite *state = janet_malloc(sizeof(StateWrite));
11447
0
    state->is_buffer = is_buffer;
11448
0
    state->src.buf = buf;
11449
0
    state->dest_abst = dest_abst;
11450
0
    state->mode = mode;
11451
#ifdef JANET_WINDOWS
11452
    state->flags = (DWORD) flags;
11453
#else
11454
0
    state->flags = flags;
11455
0
    state->start = 0;
11456
0
#endif
11457
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_WRITE, ev_callback_write, state);
11458
0
}
11459
11460
0
JANET_NO_RETURN void janet_ev_write_buffer(JanetStream *stream, JanetBuffer *buf) {
11461
0
    janet_ev_write_generic(stream, buf, NULL, JANET_ASYNC_WRITEMODE_WRITE, 1, 0);
11462
0
}
11463
11464
0
JANET_NO_RETURN void janet_ev_write_string(JanetStream *stream, JanetString str) {
11465
0
    janet_ev_write_generic(stream, (void *) str, NULL, JANET_ASYNC_WRITEMODE_WRITE, 0, 0);
11466
0
}
11467
11468
#ifdef JANET_NET
11469
0
JANET_NO_RETURN void janet_ev_send_buffer(JanetStream *stream, JanetBuffer *buf, int flags) {
11470
0
    janet_ev_write_generic(stream, buf, NULL, JANET_ASYNC_WRITEMODE_SEND, 1, flags);
11471
0
}
11472
11473
0
JANET_NO_RETURN void janet_ev_send_string(JanetStream *stream, JanetString str, int flags) {
11474
0
    janet_ev_write_generic(stream, (void *) str, NULL, JANET_ASYNC_WRITEMODE_SEND, 0, flags);
11475
0
}
11476
11477
0
JANET_NO_RETURN void janet_ev_sendto_buffer(JanetStream *stream, JanetBuffer *buf, void *dest, int flags) {
11478
0
    janet_ev_write_generic(stream, buf, dest, JANET_ASYNC_WRITEMODE_SENDTO, 1, flags);
11479
0
}
11480
11481
0
JANET_NO_RETURN void janet_ev_sendto_string(JanetStream *stream, JanetString str, void *dest, int flags) {
11482
0
    janet_ev_write_generic(stream, (void *) str, dest, JANET_ASYNC_WRITEMODE_SENDTO, 0, flags);
11483
0
}
11484
#endif
11485
11486
/* For a pipe ID */
11487
#ifdef JANET_WINDOWS
11488
static volatile long PipeSerialNumber;
11489
#endif
11490
11491
/*
11492
 * mode = 0: both sides non-blocking.
11493
 * mode = 1: only read side non-blocking: write side sent to subprocess
11494
 * mode = 2: only write side non-blocking: read side sent to subprocess
11495
 * mode = 3: both sides blocking - for use in two subprocesses (making pipeline from external processes)
11496
 */
11497
5.80k
int janet_make_pipe(JanetHandle handles[2], int mode) {
11498
#ifdef JANET_WINDOWS
11499
    /*
11500
     * On windows, the built in CreatePipe function doesn't support overlapped IO
11501
     * so we lift from the windows source code and modify for our own version.
11502
     */
11503
    JanetHandle shandle, chandle;
11504
    CHAR PipeNameBuffer[MAX_PATH];
11505
    SECURITY_ATTRIBUTES saAttr;
11506
    memset(&saAttr, 0, sizeof(saAttr));
11507
    saAttr.nLength = sizeof(saAttr);
11508
    saAttr.bInheritHandle = TRUE;
11509
    if (mode == 3) {
11510
        /* No overlapped IO involved, just call CreatePipe */
11511
        if (!CreatePipe(handles, handles + 1, &saAttr, 0)) return -1;
11512
        return 0;
11513
    }
11514
    sprintf(PipeNameBuffer,
11515
            "\\\\.\\Pipe\\JanetPipeFile.%08x.%08x",
11516
            (unsigned int) GetCurrentProcessId(),
11517
            (unsigned int) InterlockedIncrement(&PipeSerialNumber));
11518
11519
    /* server handle goes to subprocess */
11520
    shandle = CreateNamedPipeA(
11521
                  PipeNameBuffer,
11522
                  (mode == 2 ? PIPE_ACCESS_INBOUND : PIPE_ACCESS_OUTBOUND) | FILE_FLAG_OVERLAPPED,
11523
                  PIPE_TYPE_BYTE | PIPE_WAIT,
11524
                  255,           /* Max number of pipes for duplication. */
11525
                  4096,          /* Out buffer size */
11526
                  4096,          /* In buffer size */
11527
                  120 * 1000,    /* Timeout in ms */
11528
                  &saAttr);
11529
    if (shandle == INVALID_HANDLE_VALUE) {
11530
        return -1;
11531
    }
11532
11533
    /* we keep client handle */
11534
    chandle = CreateFileA(
11535
                  PipeNameBuffer,
11536
                  (mode == 2 ? GENERIC_WRITE : GENERIC_READ),
11537
                  0,
11538
                  &saAttr,
11539
                  OPEN_EXISTING,
11540
                  FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED,
11541
                  NULL);
11542
11543
    if (chandle == INVALID_HANDLE_VALUE) {
11544
        CloseHandle(shandle);
11545
        return -1;
11546
    }
11547
    if (mode == 2) {
11548
        handles[0] = shandle;
11549
        handles[1] = chandle;
11550
    } else {
11551
        handles[0] = chandle;
11552
        handles[1] = shandle;
11553
    }
11554
    return 0;
11555
#else
11556
5.80k
    if (pipe(handles)) return -1;
11557
5.80k
    if (mode != 2 && fcntl(handles[0], F_SETFD, FD_CLOEXEC)) goto error;
11558
5.80k
    if (mode != 1 && fcntl(handles[1], F_SETFD, FD_CLOEXEC)) goto error;
11559
5.80k
    if (mode != 2 && mode != 3 && fcntl(handles[0], F_SETFL, O_NONBLOCK)) goto error;
11560
5.80k
    if (mode != 1 && mode != 3 && fcntl(handles[1], F_SETFL, O_NONBLOCK)) goto error;
11561
5.80k
    return 0;
11562
0
error:
11563
0
    close(handles[0]);
11564
0
    close(handles[1]);
11565
0
    return -1;
11566
5.80k
#endif
11567
5.80k
}
11568
11569
/* C functions */
11570
11571
JANET_CORE_FN(cfun_ev_go,
11572
              "(ev/go fiber-or-fun &opt value supervisor)",
11573
              "Put a fiber on the event loop to be resumed later. If a function is used, it is wrapped "
11574
              "with `fiber/new` first. "
11575
              "Optionally pass a value to resume with, otherwise resumes with nil. Returns the fiber. "
11576
              "An optional `core/channel` can be provided as a supervisor. When various "
11577
              "events occur in the newly scheduled fiber, an event will be pushed to the supervisor. "
11578
0
              "If not provided, the new fiber will inherit the current supervisor.") {
11579
0
    janet_arity(argc, 1, 3);
11580
0
    Janet value = argc >= 2 ? argv[1] : janet_wrap_nil();
11581
0
    void *supervisor = janet_optabstract(argv, argc, 2, &janet_channel_type, janet_vm.root_fiber->supervisor_channel);
11582
0
    JanetFiber *fiber;
11583
0
    if (janet_checktype(argv[0], JANET_FUNCTION)) {
11584
        /* Create a fiber for the user */
11585
0
        JanetFunction *func = janet_unwrap_function(argv[0]);
11586
0
        if (func->def->min_arity > 1) {
11587
0
            janet_panicf("task function must accept 0 or 1 arguments");
11588
0
        }
11589
0
        fiber = janet_fiber(func, 64, func->def->min_arity, &value);
11590
0
        fiber->flags |=
11591
0
            JANET_FIBER_MASK_ERROR |
11592
0
            JANET_FIBER_MASK_USER0 |
11593
0
            JANET_FIBER_MASK_USER1 |
11594
0
            JANET_FIBER_MASK_USER2 |
11595
0
            JANET_FIBER_MASK_USER3 |
11596
0
            JANET_FIBER_MASK_USER4;
11597
0
        if (!janet_vm.fiber->env) {
11598
0
            janet_vm.fiber->env = janet_table(0);
11599
0
        }
11600
0
        fiber->env = janet_table(0);
11601
0
        fiber->env->proto = janet_vm.fiber->env;
11602
0
    } else {
11603
0
        fiber = janet_getfiber(argv, 0);
11604
0
    }
11605
0
    fiber->supervisor_channel = supervisor;
11606
0
    janet_schedule(fiber, value);
11607
0
    return janet_wrap_fiber(fiber);
11608
0
}
11609
11610
0
#define JANET_THREAD_SUPERVISOR_FLAG 0x100
11611
11612
/* For ev/thread - Run an interpreter in the new thread. */
11613
0
static JanetEVGenericMessage janet_go_thread_subr(JanetEVGenericMessage args) {
11614
0
    JanetBuffer *buffer = (JanetBuffer *) args.argp;
11615
0
    const uint8_t *nextbytes = buffer->data;
11616
0
    const uint8_t *endbytes = nextbytes + buffer->count;
11617
0
    uint32_t flags = args.tag;
11618
0
    args.tag = 0;
11619
0
    janet_init();
11620
0
    janet_vm.sandbox_flags = (uint32_t) args.argi;
11621
0
    JanetTryState tstate;
11622
0
    JanetSignal signal = janet_try(&tstate);
11623
0
    if (!signal) {
11624
11625
        /* Set abstract registry */
11626
0
        if (!(flags & 0x2)) {
11627
0
            Janet aregv = janet_unmarshal(nextbytes, endbytes - nextbytes,
11628
0
                                          JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11629
0
            if (!janet_checktype(aregv, JANET_TABLE)) janet_panic("expected table for abstract registry");
11630
0
            janet_vm.abstract_registry = janet_unwrap_table(aregv);
11631
0
            janet_gcroot(janet_wrap_table(janet_vm.abstract_registry));
11632
0
        }
11633
11634
        /* Get supervisor */
11635
0
        if (flags & JANET_THREAD_SUPERVISOR_FLAG) {
11636
0
            Janet sup =
11637
0
                janet_unmarshal(nextbytes, endbytes - nextbytes,
11638
0
                                JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11639
            /* Hack - use a global variable to avoid longjmp clobber */
11640
0
            janet_vm.user = janet_unwrap_pointer(sup);
11641
0
        }
11642
11643
        /* Set cfunction registry */
11644
0
        if (!(flags & 0x4)) {
11645
0
            uint32_t count1;
11646
0
            memcpy(&count1, nextbytes, sizeof(count1));
11647
0
            size_t count = (size_t) count1;
11648
            /* Use division to avoid overflowing size_t */
11649
0
            if (count > (endbytes - nextbytes - sizeof(count1)) / sizeof(JanetCFunRegistry)) {
11650
0
                janet_panic("thread message invalid");
11651
0
            }
11652
0
            janet_vm.registry_count = count;
11653
0
            janet_vm.registry_cap = count;
11654
0
            janet_vm.registry = janet_malloc(count * sizeof(JanetCFunRegistry));
11655
0
            if (janet_vm.registry == NULL) {
11656
0
                JANET_OUT_OF_MEMORY;
11657
0
            }
11658
0
            janet_vm.registry_dirty = 1;
11659
0
            nextbytes += sizeof(uint32_t);
11660
0
            memcpy(janet_vm.registry, nextbytes, count * sizeof(JanetCFunRegistry));
11661
0
            nextbytes += count * sizeof(JanetCFunRegistry);
11662
0
        }
11663
11664
0
        Janet fiberv = janet_unmarshal(nextbytes, endbytes - nextbytes,
11665
0
                                       JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11666
0
        Janet value = janet_unmarshal(nextbytes, endbytes - nextbytes,
11667
0
                                      JANET_MARSHAL_UNSAFE, NULL, &nextbytes);
11668
0
        JanetFiber *fiber;
11669
0
        if (!janet_checktype(fiberv, JANET_FIBER)) {
11670
0
            if (!janet_checktype(fiberv, JANET_FUNCTION)) {
11671
0
                janet_panicf("expected function or fiber, got %v", fiberv);
11672
0
            }
11673
0
            JanetFunction *func = janet_unwrap_function(fiberv);
11674
0
            fiber = janet_fiber(func, 64, func->def->min_arity, &value);
11675
0
            if (fiber == NULL) {
11676
0
                janet_panicf("thread function must accept 0 or 1 arguments");
11677
0
            }
11678
0
            fiber->flags |=
11679
0
                JANET_FIBER_MASK_ERROR |
11680
0
                JANET_FIBER_MASK_USER0 |
11681
0
                JANET_FIBER_MASK_USER1 |
11682
0
                JANET_FIBER_MASK_USER2 |
11683
0
                JANET_FIBER_MASK_USER3 |
11684
0
                JANET_FIBER_MASK_USER4;
11685
0
        } else {
11686
0
            fiber = janet_unwrap_fiber(fiberv);
11687
0
        }
11688
0
        if (flags & 0x8) {
11689
0
            if (NULL == fiber->env) fiber->env = janet_table(0);
11690
0
            janet_table_put(fiber->env, janet_ckeywordv("task-id"), value);
11691
0
        }
11692
0
        fiber->supervisor_channel = janet_vm.user;
11693
0
        janet_schedule(fiber, value);
11694
0
        janet_loop();
11695
0
        args.tag = JANET_EV_TCTAG_NIL;
11696
0
    } else {
11697
0
        void *supervisor = janet_vm.user;
11698
0
        if (NULL != supervisor) {
11699
            /* Got a supervisor, write error there */
11700
0
            Janet pair[] = {
11701
0
                janet_ckeywordv("error"),
11702
0
                tstate.payload
11703
0
            };
11704
0
            janet_channel_push((JanetChannel *)supervisor,
11705
0
                               janet_wrap_tuple(janet_tuple_n(pair, 2)), 2);
11706
0
        } else if (flags & 0x1) {
11707
            /* No wait, just print to stderr */
11708
0
            janet_eprintf("thread start failure: %v\n", tstate.payload);
11709
0
        } else {
11710
            /* Make ev/thread call from parent thread error */
11711
0
            if (janet_checktype(tstate.payload, JANET_STRING)) {
11712
0
                args.tag = JANET_EV_TCTAG_ERR_STRINGF;
11713
0
                args.argp = strdup((const char *) janet_unwrap_string(tstate.payload));
11714
0
            } else {
11715
0
                args.tag = JANET_EV_TCTAG_ERR_STRING;
11716
0
                args.argp = "failed to start thread";
11717
0
            }
11718
0
        }
11719
0
    }
11720
0
    janet_restore(&tstate);
11721
0
    janet_buffer_deinit(buffer);
11722
0
    janet_free(buffer);
11723
0
    janet_deinit();
11724
0
    return args;
11725
0
}
11726
11727
JANET_CORE_FN(cfun_ev_thread,
11728
              "(ev/thread main &opt value flags supervisor)",
11729
              "Run `main` in a new operating system thread, optionally passing `value` "
11730
              "to resume with. The parameter `main` can either be a fiber, or a function that accepts "
11731
              "0 or 1 arguments. "
11732
              "Unlike `ev/go`, this function will suspend the current fiber until the thread is complete. "
11733
              "If you want to run the thread without waiting for a result, pass the `:n` flag to return nil immediately. "
11734
              "Otherwise, returns nil. Available flags:\n\n"
11735
              "* `:n` - return immediately\n"
11736
              "* `:t` - set the task-id of the new thread to value. The task-id is passed in messages to the supervisor channel.\n"
11737
              "* `:a` - don't copy abstract registry to new thread (performance optimization)\n"
11738
0
              "* `:c` - don't copy cfunction registry to new thread (performance optimization)") {
11739
0
    janet_arity(argc, 1, 4);
11740
0
    Janet value = argc >= 2 ? argv[1] : janet_wrap_nil();
11741
0
    if (!janet_checktype(argv[0], JANET_FUNCTION)) janet_getfiber(argv, 0);
11742
0
    uint64_t flags = 0;
11743
0
    if (argc >= 3) {
11744
0
        flags = janet_getflags(argv, 2, "nact");
11745
0
    }
11746
0
    void *supervisor = janet_optabstract(argv, argc, 3, &janet_channel_type, janet_vm.root_fiber->supervisor_channel);
11747
0
    if (NULL != supervisor) flags |= JANET_THREAD_SUPERVISOR_FLAG;
11748
11749
    /* Marshal arguments for the new thread. */
11750
0
    JanetBuffer *buffer = janet_malloc(sizeof(JanetBuffer));
11751
0
    if (NULL == buffer) {
11752
0
        JANET_OUT_OF_MEMORY;
11753
0
    }
11754
0
    janet_buffer_init(buffer, 0);
11755
0
    if (!(flags & 0x2)) {
11756
0
        janet_marshal(buffer, janet_wrap_table(janet_vm.abstract_registry), NULL, JANET_MARSHAL_UNSAFE);
11757
0
    }
11758
0
    if (flags & JANET_THREAD_SUPERVISOR_FLAG) {
11759
0
        janet_marshal(buffer, janet_wrap_abstract(supervisor), NULL, JANET_MARSHAL_UNSAFE);
11760
0
    }
11761
0
    if (!(flags & 0x4)) {
11762
0
        janet_assert(janet_vm.registry_count <= INT32_MAX, "assert failed size check");
11763
0
        uint32_t temp = (uint32_t) janet_vm.registry_count;
11764
0
        janet_buffer_push_bytes(buffer, (uint8_t *) &temp, sizeof(temp));
11765
0
        janet_buffer_push_bytes(buffer, (uint8_t *) janet_vm.registry, (int32_t) janet_vm.registry_count * sizeof(JanetCFunRegistry));
11766
0
    }
11767
0
    janet_marshal(buffer, argv[0], NULL, JANET_MARSHAL_UNSAFE);
11768
0
    janet_marshal(buffer, value, NULL, JANET_MARSHAL_UNSAFE);
11769
0
    if (flags & 0x1) {
11770
        /* Return immediately */
11771
0
        JanetEVGenericMessage arguments;
11772
0
        memset(&arguments, 0, sizeof(arguments));
11773
0
        arguments.tag = (uint32_t) flags;
11774
0
        arguments.argi = (uint32_t) janet_vm.sandbox_flags;
11775
0
        arguments.argp = buffer;
11776
0
        arguments.fiber = NULL;
11777
0
        janet_ev_threaded_call(janet_go_thread_subr, arguments, janet_ev_default_threaded_callback);
11778
0
        return janet_wrap_nil();
11779
0
    } else {
11780
0
        janet_ev_threaded_await(janet_go_thread_subr, (uint32_t) flags, (uint32_t) janet_vm.sandbox_flags, buffer);
11781
0
    }
11782
0
}
11783
11784
JANET_CORE_FN(cfun_ev_give_supervisor,
11785
              "(ev/give-supervisor tag & payload)",
11786
              "Send a message to the current supervisor channel if there is one. The message will be a "
11787
              "tuple of all of the arguments combined into a single message, where the first element is tag. "
11788
0
              "By convention, tag should be a keyword indicating the type of message. Returns nil.") {
11789
0
    janet_arity(argc, 1, -1);
11790
0
    void *chanv = janet_vm.root_fiber->supervisor_channel;
11791
0
    if (NULL != chanv) {
11792
0
        JanetChannel *chan = janet_channel_unwrap(chanv);
11793
0
        if (janet_channel_push(chan, janet_wrap_tuple(janet_tuple_n(argv, argc)), 0)) {
11794
0
            janet_await();
11795
0
        }
11796
0
    }
11797
0
    return janet_wrap_nil();
11798
0
}
11799
11800
0
JANET_NO_RETURN void janet_sleep_await(double sec) {
11801
0
    JanetTimeout to;
11802
0
    to.when = ts_delta(ts_now(), sec);
11803
0
    to.fiber = janet_vm.root_fiber;
11804
0
    to.is_error = 0;
11805
0
    to.sched_id = to.fiber->sched_id;
11806
0
    to.curr_fiber = NULL;
11807
0
    to.has_worker = 0;
11808
0
    add_timeout(to);
11809
0
    janet_await();
11810
0
}
11811
11812
JANET_CORE_FN(cfun_ev_sleep,
11813
              "(ev/sleep sec)",
11814
0
              "Suspend the current fiber for sec seconds without blocking the event loop.") {
11815
0
    janet_fixarity(argc, 1);
11816
0
    double sec = janet_getnumber(argv, 0);
11817
0
    janet_sleep_await(sec);
11818
0
}
11819
11820
JANET_CORE_FN(cfun_ev_deadline,
11821
              "(ev/deadline sec &opt tocancel tocheck intr?)",
11822
              "Schedules the event loop to try to cancel the `tocancel` task as with `ev/cancel`. "
11823
              "After `sec` seconds, the event loop will attempt cancellation of `tocancel` if the "
11824
              "`tocheck` fiber is resumable. `sec` is a number that can have a fractional part. "
11825
              "`tocancel` defaults to `(fiber/root)`, but if specified, must be a task (root "
11826
              "fiber). `tocheck` defaults to `(fiber/current)`, but if specified, must be a fiber. "
11827
              "Returns `tocancel` immediately. If `interrupt?` is set to true, will create a "
11828
0
              "background thread to try to interrupt the VM if the timeout expires.") {
11829
0
    janet_arity(argc, 1, 4);
11830
0
    double sec = janet_getnumber(argv, 0);
11831
0
    sec = (sec < 0) ? 0 : sec;
11832
0
    JanetFiber *tocancel = janet_optfiber(argv, argc, 1, janet_vm.root_fiber);
11833
0
    JanetFiber *tocheck = janet_optfiber(argv, argc, 2, janet_vm.fiber);
11834
0
    int use_interrupt = janet_optboolean(argv, argc, 3, 0);
11835
0
    JanetTimeout to;
11836
0
    to.when = ts_delta(ts_now(), sec);
11837
0
    to.fiber = tocancel;
11838
0
    to.curr_fiber = tocheck;
11839
0
    to.is_error = 0;
11840
0
    to.sched_id = to.fiber->sched_id;
11841
0
    if (use_interrupt) {
11842
#ifdef JANET_ANDROID
11843
        janet_sandbox_assert(JANET_SANDBOX_SIGNAL);
11844
#endif
11845
0
        JanetThreadedTimeout *tto = janet_malloc(sizeof(JanetThreadedTimeout));
11846
0
        if (NULL == tto) {
11847
0
            JANET_OUT_OF_MEMORY;
11848
0
        }
11849
0
        tto->sec = sec;
11850
0
        tto->vm = &janet_vm;
11851
0
        tto->fiber = tocheck;
11852
#ifdef JANET_WINDOWS
11853
        HANDLE cancel_event = CreateEvent(NULL, TRUE, FALSE, NULL);
11854
        if (NULL == cancel_event) {
11855
            janet_free(tto);
11856
            janet_panic("failed to create cancel event");
11857
        }
11858
        tto->cancel_event = cancel_event;
11859
        HANDLE worker = CreateThread(NULL, 0, janet_timeout_body, tto, CREATE_SUSPENDED, NULL);
11860
        if (NULL == worker) {
11861
            janet_free(tto);
11862
            janet_panic("failed to create thread");
11863
        }
11864
#else
11865
0
        pthread_t worker;
11866
0
        int err = pthread_create(&worker, NULL, janet_timeout_body, tto);
11867
0
        if (err) {
11868
0
            janet_free(tto);
11869
0
            janet_panicf("%s", janet_strerror(err));
11870
0
        }
11871
0
#endif
11872
0
        to.has_worker = 1;
11873
0
        to.worker = worker;
11874
#ifdef JANET_WINDOWS
11875
        to.worker_event = cancel_event;
11876
        ResumeThread(worker);
11877
#endif
11878
0
    } else {
11879
0
        to.has_worker = 0;
11880
0
    }
11881
0
    add_timeout(to);
11882
0
    return janet_wrap_fiber(tocancel);
11883
0
}
11884
11885
JANET_CORE_FN(cfun_ev_cancel,
11886
              "(ev/cancel fiber err)",
11887
0
              "Cancel a suspended fiber in the event loop. Differs from cancel in that it returns the canceled fiber immediately.") {
11888
0
    janet_fixarity(argc, 2);
11889
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
11890
0
    Janet err = argv[1];
11891
0
    janet_cancel(fiber, err);
11892
0
    return argv[0];
11893
0
}
11894
11895
JANET_CORE_FN(janet_cfun_stream_close,
11896
              "(ev/close stream)",
11897
0
              "Close a stream. This should be the same as calling (:close stream) for all streams.") {
11898
0
    janet_fixarity(argc, 1);
11899
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11900
0
    janet_stream_close(stream);
11901
0
    return argv[0];
11902
0
}
11903
11904
JANET_CORE_FN(janet_cfun_stream_read,
11905
              "(ev/read stream n &opt buffer timeout)",
11906
              "Read up to n bytes into a buffer asynchronously from a stream. `n` can also be the keyword "
11907
              "`:all` to read into the buffer until end of stream. "
11908
              "Optionally provide a buffer to write into "
11909
              "as well as a timeout in seconds after which to cancel the operation and raise an error. "
11910
              "Returns the buffer if the read was successful or nil if end-of-stream reached. Will raise an "
11911
0
              "error if there are problems with the IO operation.") {
11912
0
    janet_arity(argc, 2, 4);
11913
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11914
0
    janet_stream_flags(stream, JANET_STREAM_READABLE);
11915
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
11916
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
11917
0
    if (janet_keyeq(argv[1], "all")) {
11918
0
        if (to != INFINITY) janet_addtimeout(to);
11919
0
        janet_ev_readchunk(stream, buffer, INT32_MAX);
11920
0
    } else {
11921
0
        int32_t n = janet_getnat(argv, 1);
11922
0
        if (to != INFINITY) janet_addtimeout(to);
11923
0
        janet_ev_read(stream, buffer, n);
11924
0
    }
11925
0
}
11926
11927
JANET_CORE_FN(janet_cfun_stream_chunk,
11928
              "(ev/chunk stream n &opt buffer timeout)",
11929
              "Same as ev/read, but will not return early if less than n bytes are available. If an end of "
11930
0
              "stream is reached, will also return early with the collected bytes.") {
11931
0
    janet_arity(argc, 2, 4);
11932
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11933
0
    janet_stream_flags(stream, JANET_STREAM_READABLE);
11934
0
    int32_t n = janet_getnat(argv, 1);
11935
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
11936
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
11937
0
    if (to != INFINITY) janet_addtimeout(to);
11938
0
    janet_ev_readchunk(stream, buffer, n);
11939
0
}
11940
11941
JANET_CORE_FN(janet_cfun_stream_write,
11942
              "(ev/write stream data &opt timeout)",
11943
              "Write data to a stream, suspending the current fiber until the write "
11944
              "completes. Takes an optional timeout in seconds, after which will return nil. "
11945
0
              "Returns nil, or raises an error if the write failed.") {
11946
0
    janet_arity(argc, 2, 3);
11947
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
11948
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE);
11949
0
    double to = janet_optnumber(argv, argc, 2, INFINITY);
11950
0
    if (janet_checktype(argv[1], JANET_BUFFER)) {
11951
0
        if (to != INFINITY) janet_addtimeout(to);
11952
0
        janet_ev_write_buffer(stream, janet_getbuffer(argv, 1));
11953
0
    } else {
11954
0
        JanetByteView bytes = janet_getbytes(argv, 1);
11955
0
        if (to != INFINITY) janet_addtimeout(to);
11956
0
        janet_ev_write_string(stream, bytes.bytes);
11957
0
    }
11958
0
}
11959
11960
0
static int mutexgc(void *p, size_t size) {
11961
0
    (void) size;
11962
0
    janet_os_mutex_deinit(p);
11963
0
    return 0;
11964
0
}
11965
11966
const JanetAbstractType janet_mutex_type = {
11967
    "core/lock",
11968
    mutexgc,
11969
    JANET_ATEND_GC
11970
};
11971
11972
JANET_CORE_FN(janet_cfun_mutex,
11973
              "(ev/lock)",
11974
0
              "Create a new lock to coordinate threads.") {
11975
0
    janet_fixarity(argc, 0);
11976
0
    (void) argv;
11977
0
    void *mutex = janet_abstract_threaded(&janet_mutex_type, janet_os_mutex_size());
11978
0
    janet_os_mutex_init(mutex);
11979
0
    return janet_wrap_abstract(mutex);
11980
0
}
11981
11982
JANET_CORE_FN(janet_cfun_mutex_acquire,
11983
              "(ev/acquire-lock lock)",
11984
              "Acquire a lock such that this operating system thread is the only thread with access to this resource."
11985
              " This will block this entire thread until the lock becomes available, and will not yield to other fibers "
11986
0
              "on this system thread.") {
11987
0
    janet_fixarity(argc, 1);
11988
0
    void *mutex = janet_getabstract(argv, 0, &janet_mutex_type);
11989
0
    janet_os_mutex_lock(mutex);
11990
0
    return argv[0];
11991
0
}
11992
11993
JANET_CORE_FN(janet_cfun_mutex_release,
11994
              "(ev/release-lock lock)",
11995
0
              "Release a lock such that other threads may acquire it.") {
11996
0
    janet_fixarity(argc, 1);
11997
0
    void *mutex = janet_getabstract(argv, 0, &janet_mutex_type);
11998
0
    janet_os_mutex_unlock(mutex);
11999
0
    return argv[0];
12000
0
}
12001
12002
0
static int rwlockgc(void *p, size_t size) {
12003
0
    (void) size;
12004
0
    janet_os_rwlock_deinit(p);
12005
0
    return 0;
12006
0
}
12007
12008
const JanetAbstractType janet_rwlock_type = {
12009
    "core/rwlock",
12010
    rwlockgc,
12011
    JANET_ATEND_GC
12012
};
12013
12014
JANET_CORE_FN(janet_cfun_rwlock,
12015
              "(ev/rwlock)",
12016
0
              "Create a new read-write lock to coordinate threads.") {
12017
0
    janet_fixarity(argc, 0);
12018
0
    (void) argv;
12019
0
    void *rwlock = janet_abstract_threaded(&janet_rwlock_type, janet_os_rwlock_size());
12020
0
    janet_os_rwlock_init(rwlock);
12021
0
    return janet_wrap_abstract(rwlock);
12022
0
}
12023
12024
JANET_CORE_FN(janet_cfun_rwlock_read_lock,
12025
              "(ev/acquire-rlock rwlock)",
12026
0
              "Acquire a read lock an a read-write lock.") {
12027
0
    janet_fixarity(argc, 1);
12028
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
12029
0
    janet_os_rwlock_rlock(rwlock);
12030
0
    return argv[0];
12031
0
}
12032
12033
JANET_CORE_FN(janet_cfun_rwlock_write_lock,
12034
              "(ev/acquire-wlock rwlock)",
12035
0
              "Acquire a write lock on a read-write lock.") {
12036
0
    janet_fixarity(argc, 1);
12037
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
12038
0
    janet_os_rwlock_wlock(rwlock);
12039
0
    return argv[0];
12040
0
}
12041
12042
JANET_CORE_FN(janet_cfun_rwlock_read_release,
12043
              "(ev/release-rlock rwlock)",
12044
0
              "Release a read lock on a read-write lock") {
12045
0
    janet_fixarity(argc, 1);
12046
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
12047
0
    janet_os_rwlock_runlock(rwlock);
12048
0
    return argv[0];
12049
0
}
12050
12051
JANET_CORE_FN(janet_cfun_rwlock_write_release,
12052
              "(ev/release-wlock rwlock)",
12053
0
              "Release a write lock on a read-write lock") {
12054
0
    janet_fixarity(argc, 1);
12055
0
    void *rwlock = janet_getabstract(argv, 0, &janet_rwlock_type);
12056
0
    janet_os_rwlock_wunlock(rwlock);
12057
0
    return argv[0];
12058
0
}
12059
12060
0
static JanetFile *get_file_for_stream(JanetStream *stream) {
12061
0
    int32_t flags = 0;
12062
0
    char fmt[4] = {0};
12063
0
    int index = 0;
12064
0
    if (stream->flags & JANET_STREAM_READABLE) {
12065
0
        flags |= JANET_FILE_READ;
12066
0
        janet_sandbox_assert(JANET_SANDBOX_FS_READ);
12067
0
        fmt[index++] = 'r';
12068
0
    }
12069
0
    if (stream->flags & JANET_STREAM_WRITABLE) {
12070
0
        flags |= JANET_FILE_WRITE;
12071
0
        janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
12072
0
        int currindex = index;
12073
0
        fmt[index++] = (currindex == 0) ? 'w' : '+';
12074
0
    }
12075
0
    if (index == 0) return NULL;
12076
    /* duplicate handle when converting stream to file */
12077
#ifdef JANET_WINDOWS
12078
    int htype = 0;
12079
    if (fmt[0] == 'r' && fmt[1] == '+') {
12080
        htype = _O_RDWR;
12081
    } else if (fmt[0] == 'r') {
12082
        htype = _O_RDONLY;
12083
    } else if (fmt[0] == 'w') {
12084
        htype = _O_WRONLY;
12085
    }
12086
    int fd = _open_osfhandle((intptr_t) stream->handle, htype);
12087
    if (fd < 0) return NULL;
12088
    int fd_dup = _dup(fd);
12089
    if (fd_dup < 0) return NULL;
12090
    FILE *f = _fdopen(fd_dup, fmt);
12091
    if (NULL == f) {
12092
        _close(fd_dup);
12093
        return NULL;
12094
    }
12095
#else
12096
0
    int fd_dup = dup(stream->handle);
12097
0
    if (fd_dup < 0) return NULL;
12098
0
    FILE *f = fdopen(fd_dup, fmt);
12099
0
    if (NULL == f) {
12100
0
        close(fd_dup);
12101
0
        return NULL;
12102
0
    }
12103
0
#endif
12104
0
    return janet_makejfile(f, flags);
12105
0
}
12106
12107
JANET_CORE_FN(janet_cfun_to_file,
12108
              "(ev/to-file)",
12109
              "Create core/file copy of the stream. This value can be used "
12110
0
              "when blocking IO behavior is needed.") {
12111
0
    janet_fixarity(argc, 1);
12112
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
12113
0
    JanetFile *iof = get_file_for_stream(stream);
12114
0
    if (iof == NULL) janet_panic("cannot make file from stream");
12115
0
    return janet_wrap_abstract(iof);
12116
0
}
12117
12118
JANET_CORE_FN(janet_cfun_ev_all_tasks,
12119
              "(ev/all-tasks)",
12120
0
              "Get an array of all active fibers that are being used by the scheduler.") {
12121
0
    janet_fixarity(argc, 0);
12122
0
    (void) argv;
12123
0
    JanetArray *array = janet_array(janet_vm.active_tasks.count);
12124
0
    for (int32_t i = 0; i < janet_vm.active_tasks.capacity; i++) {
12125
0
        if (!janet_checktype(janet_vm.active_tasks.data[i].key, JANET_NIL)) {
12126
0
            janet_array_push(array, janet_vm.active_tasks.data[i].key);
12127
0
        }
12128
0
    }
12129
0
    return janet_wrap_array(array);
12130
0
}
12131
12132
0
void janet_lib_ev(JanetTable *env) {
12133
0
    JanetRegExt ev_cfuns_ext[] = {
12134
0
        JANET_CORE_REG("ev/give", cfun_channel_push),
12135
0
        JANET_CORE_REG("ev/take", cfun_channel_pop),
12136
0
        JANET_CORE_REG("ev/full", cfun_channel_full),
12137
0
        JANET_CORE_REG("ev/capacity", cfun_channel_capacity),
12138
0
        JANET_CORE_REG("ev/count", cfun_channel_count),
12139
0
        JANET_CORE_REG("ev/select", cfun_channel_choice),
12140
0
        JANET_CORE_REG("ev/rselect", cfun_channel_rchoice),
12141
0
        JANET_CORE_REG("ev/chan", cfun_channel_new),
12142
0
        JANET_CORE_REG("ev/thread-chan", cfun_channel_new_threaded),
12143
0
        JANET_CORE_REG("ev/chan-close", cfun_channel_close),
12144
0
        JANET_CORE_REG("ev/go", cfun_ev_go),
12145
0
        JANET_CORE_REG("ev/thread", cfun_ev_thread),
12146
0
        JANET_CORE_REG("ev/give-supervisor", cfun_ev_give_supervisor),
12147
0
        JANET_CORE_REG("ev/sleep", cfun_ev_sleep),
12148
0
        JANET_CORE_REG("ev/deadline", cfun_ev_deadline),
12149
0
        JANET_CORE_REG("ev/cancel", cfun_ev_cancel),
12150
0
        JANET_CORE_REG("ev/close", janet_cfun_stream_close),
12151
0
        JANET_CORE_REG("ev/read", janet_cfun_stream_read),
12152
0
        JANET_CORE_REG("ev/chunk", janet_cfun_stream_chunk),
12153
0
        JANET_CORE_REG("ev/write", janet_cfun_stream_write),
12154
0
        JANET_CORE_REG("ev/lock", janet_cfun_mutex),
12155
0
        JANET_CORE_REG("ev/acquire-lock", janet_cfun_mutex_acquire),
12156
0
        JANET_CORE_REG("ev/release-lock", janet_cfun_mutex_release),
12157
0
        JANET_CORE_REG("ev/rwlock", janet_cfun_rwlock),
12158
0
        JANET_CORE_REG("ev/acquire-rlock", janet_cfun_rwlock_read_lock),
12159
0
        JANET_CORE_REG("ev/acquire-wlock", janet_cfun_rwlock_write_lock),
12160
0
        JANET_CORE_REG("ev/release-rlock", janet_cfun_rwlock_read_release),
12161
0
        JANET_CORE_REG("ev/release-wlock", janet_cfun_rwlock_write_release),
12162
0
        JANET_CORE_REG("ev/to-file", janet_cfun_to_file),
12163
0
        JANET_CORE_REG("ev/all-tasks", janet_cfun_ev_all_tasks),
12164
0
        JANET_REG_END
12165
0
    };
12166
12167
0
    janet_core_cfuns_ext(env, NULL, ev_cfuns_ext);
12168
0
    janet_register_abstract_type(&janet_stream_type);
12169
0
    janet_register_abstract_type(&janet_channel_type);
12170
0
    janet_register_abstract_type(&janet_mutex_type);
12171
0
    janet_register_abstract_type(&janet_rwlock_type);
12172
0
}
12173
12174
#endif
12175
12176
12177
/* src/core/ffi.c */
12178
#line 0 "src/core/ffi.c"
12179
12180
/*
12181
* Copyright (c) 2025 Calvin Rose
12182
*
12183
* Permission is hereby granted, free of charge, to any person obtaining a copy
12184
* of this software and associated documentation files (the "Software"), to
12185
* deal in the Software without restriction, including without limitation the
12186
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
12187
* sell copies of the Software, and to permit persons to whom the Software is
12188
* furnished to do so, subject to the following conditions:
12189
*
12190
* The above copyright notice and this permission notice shall be included in
12191
* all copies or substantial portions of the Software.
12192
*
12193
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12194
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12195
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
12196
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
12197
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
12198
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
12199
* IN THE SOFTWARE.
12200
*/
12201
12202
#ifndef JANET_AMALG
12203
#include "features.h"
12204
#include <janet.h>
12205
#include "util.h"
12206
#include "gc.h"
12207
#endif
12208
12209
#ifdef JANET_FFI
12210
12211
#ifdef _MSC_VER
12212
#define alloca _alloca
12213
#elif defined(JANET_LINUX)
12214
#include <alloca.h>
12215
#elif !defined(alloca)
12216
/* Last ditch effort to get alloca - works for gcc and clang */
12217
#define alloca __builtin_alloca
12218
#endif
12219
12220
/* FFI jit includes */
12221
#ifdef JANET_FFI_JIT
12222
#ifndef JANET_WINDOWS
12223
#include <sys/mman.h>
12224
#endif
12225
#endif
12226
12227
0
#define JANET_FFI_MAX_RECUR 64
12228
12229
/* Compiler, OS, and arch detection. Used
12230
 * to enable a set of calling conventions. The
12231
 * :none calling convention is always enabled. */
12232
#if defined(JANET_WINDOWS) && (defined(__x86_64__) || defined(_M_X64))
12233
#define JANET_FFI_WIN64_ENABLED
12234
#endif
12235
#if (defined(__x86_64__) || defined(_M_X64)) && !defined(JANET_WINDOWS)
12236
#define JANET_FFI_SYSV64_ENABLED
12237
#endif
12238
#if (defined(__aarch64__) || defined(_M_ARM64)) && !defined(JANET_WINDOWS)
12239
#define JANET_FFI_AAPCS64_ENABLED
12240
#endif
12241
12242
typedef struct JanetFFIType JanetFFIType;
12243
typedef struct JanetFFIStruct JanetFFIStruct;
12244
12245
typedef enum {
12246
    JANET_FFI_TYPE_VOID,
12247
    JANET_FFI_TYPE_BOOL,
12248
    JANET_FFI_TYPE_PTR,
12249
    JANET_FFI_TYPE_STRING,
12250
    JANET_FFI_TYPE_FLOAT,
12251
    JANET_FFI_TYPE_DOUBLE,
12252
    JANET_FFI_TYPE_INT8,
12253
    JANET_FFI_TYPE_UINT8,
12254
    JANET_FFI_TYPE_INT16,
12255
    JANET_FFI_TYPE_UINT16,
12256
    JANET_FFI_TYPE_INT32,
12257
    JANET_FFI_TYPE_UINT32,
12258
    JANET_FFI_TYPE_INT64,
12259
    JANET_FFI_TYPE_UINT64,
12260
    JANET_FFI_TYPE_STRUCT
12261
} JanetFFIPrimType;
12262
12263
/* Custom alignof since alignof not in c99 standard */
12264
#define ALIGNOF(type) offsetof(struct { char c; type member; }, member)
12265
12266
typedef struct {
12267
    size_t size;
12268
    size_t align;
12269
} JanetFFIPrimInfo;
12270
12271
static const JanetFFIPrimInfo janet_ffi_type_info[] = {
12272
    {0, 0}, /* JANET_FFI_TYPE_VOID */
12273
    {sizeof(char), ALIGNOF(char)}, /* JANET_FFI_TYPE_BOOL */
12274
    {sizeof(void *), ALIGNOF(void *)}, /* JANET_FFI_TYPE_PTR */
12275
    {sizeof(char *), ALIGNOF(char *)}, /* JANET_FFI_TYPE_STRING */
12276
    {sizeof(float), ALIGNOF(float)}, /* JANET_FFI_TYPE_FLOAT */
12277
    {sizeof(double), ALIGNOF(double)}, /* JANET_FFI_TYPE_DOUBLE */
12278
    {sizeof(int8_t), ALIGNOF(int8_t)}, /* JANET_FFI_TYPE_INT8 */
12279
    {sizeof(uint8_t), ALIGNOF(uint8_t)}, /* JANET_FFI_TYPE_UINT8 */
12280
    {sizeof(int16_t), ALIGNOF(int16_t)}, /* JANET_FFI_TYPE_INT16 */
12281
    {sizeof(uint16_t), ALIGNOF(uint16_t)}, /* JANET_FFI_TYPE_UINT16 */
12282
    {sizeof(int32_t), ALIGNOF(int32_t)}, /* JANET_FFI_TYPE_INT32 */
12283
    {sizeof(uint32_t), ALIGNOF(uint32_t)}, /* JANET_FFI_TYPE_UINT32 */
12284
    {sizeof(int64_t), ALIGNOF(int64_t)}, /* JANET_FFI_TYPE_INT64 */
12285
    {sizeof(uint64_t), ALIGNOF(uint64_t)}, /* JANET_FFI_TYPE_UINT64 */
12286
    {0, ALIGNOF(uint64_t)} /* JANET_FFI_TYPE_STRUCT */
12287
};
12288
12289
struct JanetFFIType {
12290
    JanetFFIStruct *st;
12291
    JanetFFIPrimType prim;
12292
    int32_t array_count;
12293
};
12294
12295
typedef struct {
12296
    JanetFFIType type;
12297
    size_t offset;
12298
} JanetFFIStructMember;
12299
12300
/* Also used to store array types */
12301
struct JanetFFIStruct {
12302
    uint32_t size;
12303
    uint32_t align;
12304
    uint32_t field_count;
12305
    uint32_t is_aligned;
12306
    JanetFFIStructMember fields[];
12307
};
12308
12309
/* Specifies how the registers are classified. This is used
12310
 * to determine if a certain argument should be passed in a register,
12311
 * on the stack, special floating pointer register, etc. */
12312
typedef enum {
12313
    JANET_SYSV64_INTEGER,
12314
    JANET_SYSV64_SSE,
12315
    JANET_SYSV64_SSEUP,
12316
    JANET_SYSV64_PAIR_INTINT,
12317
    JANET_SYSV64_PAIR_INTSSE,
12318
    JANET_SYSV64_PAIR_SSEINT,
12319
    JANET_SYSV64_PAIR_SSESSE,
12320
    JANET_SYSV64_NO_CLASS,
12321
    JANET_SYSV64_MEMORY,
12322
    JANET_WIN64_REGISTER,
12323
    JANET_WIN64_STACK,
12324
    JANET_WIN64_REGISTER_REF,
12325
    JANET_WIN64_STACK_REF,
12326
    JANET_AAPCS64_GENERAL,
12327
    JANET_AAPCS64_SSE,
12328
    JANET_AAPCS64_GENERAL_REF,
12329
    JANET_AAPCS64_STACK,
12330
    JANET_AAPCS64_STACK_REF,
12331
    JANET_AAPCS64_NONE
12332
} JanetFFIWordSpec;
12333
12334
/* Describe how each Janet argument is interpreted in terms of machine words
12335
 * that will be mapped to registers/stack. */
12336
typedef struct {
12337
    JanetFFIType type;
12338
    JanetFFIWordSpec spec;
12339
    uint32_t offset; /* point to the exact register / stack offset depending on spec. */
12340
    uint32_t offset2; /* for reference passing apis (windows), use to allocate reference */
12341
} JanetFFIMapping;
12342
12343
typedef enum {
12344
    JANET_FFI_CC_NONE,
12345
    JANET_FFI_CC_SYSV_64,
12346
    JANET_FFI_CC_WIN_64,
12347
    JANET_FFI_CC_AAPCS64
12348
} JanetFFICallingConvention;
12349
12350
#ifdef JANET_FFI_WIN64_ENABLED
12351
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_WIN_64
12352
#elif defined(JANET_FFI_SYSV64_ENABLED)
12353
0
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_SYSV_64
12354
#elif defined(JANET_FFI_AAPCS64_ENABLED)
12355
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_AAPCS64
12356
#else
12357
#define JANET_FFI_CC_DEFAULT JANET_FFI_CC_NONE
12358
#endif
12359
12360
0
#define JANET_FFI_MAX_ARGS 32
12361
12362
typedef struct {
12363
    uint32_t frame_size;
12364
    uint32_t arg_count;
12365
    uint32_t word_count;
12366
    uint32_t variant;
12367
    uint32_t stack_count;
12368
    JanetFFICallingConvention cc;
12369
    JanetFFIMapping ret;
12370
    JanetFFIMapping args[JANET_FFI_MAX_ARGS];
12371
} JanetFFISignature;
12372
12373
0
int signature_mark(void *p, size_t s) {
12374
0
    (void) s;
12375
0
    JanetFFISignature *sig = p;
12376
0
    for (uint32_t i = 0; i < sig->arg_count; i++) {
12377
0
        JanetFFIType t = sig->args[i].type;
12378
0
        if (t.prim == JANET_FFI_TYPE_STRUCT) {
12379
0
            janet_mark(janet_wrap_abstract(t.st));
12380
0
        }
12381
0
    }
12382
0
    return 0;
12383
0
}
12384
12385
static const JanetAbstractType janet_signature_type = {
12386
    "core/ffi-signature",
12387
    NULL,
12388
    signature_mark,
12389
    JANET_ATEND_GCMARK
12390
};
12391
12392
0
int struct_mark(void *p, size_t s) {
12393
0
    (void) s;
12394
0
    JanetFFIStruct *st = p;
12395
0
    for (uint32_t i = 0; i < st->field_count; i++) {
12396
0
        JanetFFIType t = st->fields[i].type;
12397
0
        if (t.prim == JANET_FFI_TYPE_STRUCT) {
12398
0
            janet_mark(janet_wrap_abstract(t.st));
12399
0
        }
12400
0
    }
12401
0
    return 0;
12402
0
}
12403
12404
typedef struct {
12405
    void *function_pointer;
12406
    size_t size;
12407
} JanetFFIJittedFn;
12408
12409
static const JanetAbstractType janet_struct_type = {
12410
    "core/ffi-struct",
12411
    NULL,
12412
    struct_mark,
12413
    JANET_ATEND_GCMARK
12414
};
12415
12416
0
static int janet_ffijit_gc(void *p, size_t s) {
12417
0
    (void) s;
12418
0
    JanetFFIJittedFn *fn = p;
12419
0
    if (fn->function_pointer == NULL) return 0;
12420
0
#ifdef JANET_FFI_JIT
12421
#ifdef JANET_WINDOWS
12422
    VirtualFree(fn->function_pointer, fn->size, MEM_RELEASE);
12423
#else
12424
0
    munmap(fn->function_pointer, fn->size);
12425
0
#endif
12426
0
#endif
12427
0
    return 0;
12428
0
}
12429
12430
0
static JanetByteView janet_ffijit_getbytes(void *p, size_t s) {
12431
0
    (void) s;
12432
0
    JanetFFIJittedFn *fn = p;
12433
0
    JanetByteView bytes;
12434
0
    bytes.bytes = fn->function_pointer;
12435
0
    bytes.len = (int32_t) fn->size;
12436
0
    return bytes;
12437
0
}
12438
12439
0
static size_t janet_ffijit_length(void *p, size_t s) {
12440
0
    (void) s;
12441
0
    JanetFFIJittedFn *fn = p;
12442
0
    return fn->size;
12443
0
}
12444
12445
const JanetAbstractType janet_type_ffijit = {
12446
    .name = "ffi/jitfn",
12447
    .gc = janet_ffijit_gc,
12448
    .bytes = janet_ffijit_getbytes,
12449
    .length = janet_ffijit_length
12450
};
12451
12452
typedef struct {
12453
    Clib clib;
12454
    int closed;
12455
    int is_self;
12456
} JanetAbstractNative;
12457
12458
static const JanetAbstractType janet_native_type = {
12459
    "core/ffi-native",
12460
    JANET_ATEND_NAME
12461
};
12462
12463
0
static JanetFFIType prim_type(JanetFFIPrimType pt) {
12464
0
    JanetFFIType t;
12465
0
    t.prim = pt;
12466
0
    t.st = NULL;
12467
0
    t.array_count = -1;
12468
0
    return t;
12469
0
}
12470
12471
0
static size_t type_size(JanetFFIType t) {
12472
0
    size_t count = t.array_count < 0 ? 1 : (size_t) t.array_count;
12473
0
    if (t.prim == JANET_FFI_TYPE_STRUCT) {
12474
0
        return t.st->size * count;
12475
0
    } else {
12476
0
        return janet_ffi_type_info[t.prim].size * count;
12477
0
    }
12478
0
}
12479
12480
0
static size_t type_align(JanetFFIType t) {
12481
0
    if (t.prim == JANET_FFI_TYPE_STRUCT) {
12482
0
        return t.st->align;
12483
0
    } else {
12484
0
        return janet_ffi_type_info[t.prim].align;
12485
0
    }
12486
0
}
12487
12488
0
static JanetFFICallingConvention decode_ffi_cc(const uint8_t *name) {
12489
0
    if (!janet_cstrcmp(name, "none")) return JANET_FFI_CC_NONE;
12490
#ifdef JANET_FFI_WIN64_ENABLED
12491
    if (!janet_cstrcmp(name, "win64")) return JANET_FFI_CC_WIN_64;
12492
#endif
12493
0
#ifdef JANET_FFI_SYSV64_ENABLED
12494
0
    if (!janet_cstrcmp(name, "sysv64")) return JANET_FFI_CC_SYSV_64;
12495
0
#endif
12496
#ifdef JANET_FFI_AAPCS64_ENABLED
12497
    if (!janet_cstrcmp(name, "aapcs64")) return JANET_FFI_CC_AAPCS64;
12498
#endif
12499
0
    if (!janet_cstrcmp(name, "default")) return JANET_FFI_CC_DEFAULT;
12500
0
    janet_panicf("unknown calling convention %s", name);
12501
0
}
12502
12503
0
static JanetFFIPrimType decode_ffi_prim(const uint8_t *name) {
12504
0
    if (!janet_cstrcmp(name, "void")) return JANET_FFI_TYPE_VOID;
12505
0
    if (!janet_cstrcmp(name, "bool")) return JANET_FFI_TYPE_BOOL;
12506
0
    if (!janet_cstrcmp(name, "ptr")) return JANET_FFI_TYPE_PTR;
12507
0
    if (!janet_cstrcmp(name, "pointer")) return JANET_FFI_TYPE_PTR;
12508
0
    if (!janet_cstrcmp(name, "string")) return JANET_FFI_TYPE_STRING;
12509
0
    if (!janet_cstrcmp(name, "float")) return JANET_FFI_TYPE_FLOAT;
12510
0
    if (!janet_cstrcmp(name, "double")) return JANET_FFI_TYPE_DOUBLE;
12511
0
    if (!janet_cstrcmp(name, "int8")) return JANET_FFI_TYPE_INT8;
12512
0
    if (!janet_cstrcmp(name, "uint8")) return JANET_FFI_TYPE_UINT8;
12513
0
    if (!janet_cstrcmp(name, "int16")) return JANET_FFI_TYPE_INT16;
12514
0
    if (!janet_cstrcmp(name, "uint16")) return JANET_FFI_TYPE_UINT16;
12515
0
    if (!janet_cstrcmp(name, "int32")) return JANET_FFI_TYPE_INT32;
12516
0
    if (!janet_cstrcmp(name, "uint32")) return JANET_FFI_TYPE_UINT32;
12517
0
    if (!janet_cstrcmp(name, "int64")) return JANET_FFI_TYPE_INT64;
12518
0
    if (!janet_cstrcmp(name, "uint64")) return JANET_FFI_TYPE_UINT64;
12519
0
#ifdef JANET_64
12520
0
    if (!janet_cstrcmp(name, "size")) return JANET_FFI_TYPE_UINT64;
12521
0
    if (!janet_cstrcmp(name, "ssize")) return JANET_FFI_TYPE_INT64;
12522
#else
12523
    if (!janet_cstrcmp(name, "size")) return JANET_FFI_TYPE_UINT32;
12524
    if (!janet_cstrcmp(name, "ssize")) return JANET_FFI_TYPE_INT32;
12525
#endif
12526
    /* aliases */
12527
0
    if (!janet_cstrcmp(name, "r32")) return JANET_FFI_TYPE_FLOAT;
12528
0
    if (!janet_cstrcmp(name, "r64")) return JANET_FFI_TYPE_DOUBLE;
12529
0
    if (!janet_cstrcmp(name, "s8")) return JANET_FFI_TYPE_INT8;
12530
0
    if (!janet_cstrcmp(name, "u8")) return JANET_FFI_TYPE_UINT8;
12531
0
    if (!janet_cstrcmp(name, "s16")) return JANET_FFI_TYPE_INT16;
12532
0
    if (!janet_cstrcmp(name, "u16")) return JANET_FFI_TYPE_UINT16;
12533
0
    if (!janet_cstrcmp(name, "s32")) return JANET_FFI_TYPE_INT32;
12534
0
    if (!janet_cstrcmp(name, "u32")) return JANET_FFI_TYPE_UINT32;
12535
0
    if (!janet_cstrcmp(name, "s64")) return JANET_FFI_TYPE_INT64;
12536
0
    if (!janet_cstrcmp(name, "u64")) return JANET_FFI_TYPE_UINT64;
12537
0
    if (!janet_cstrcmp(name, "char")) return JANET_FFI_TYPE_INT8;
12538
0
    if (!janet_cstrcmp(name, "short")) return JANET_FFI_TYPE_INT16;
12539
0
    if (!janet_cstrcmp(name, "int")) return JANET_FFI_TYPE_INT32;
12540
0
    if (!janet_cstrcmp(name, "long")) return JANET_FFI_TYPE_INT64;
12541
0
    if (!janet_cstrcmp(name, "byte")) return JANET_FFI_TYPE_UINT8;
12542
0
    if (!janet_cstrcmp(name, "uchar")) return JANET_FFI_TYPE_UINT8;
12543
0
    if (!janet_cstrcmp(name, "ushort")) return JANET_FFI_TYPE_UINT16;
12544
0
    if (!janet_cstrcmp(name, "uint")) return JANET_FFI_TYPE_UINT32;
12545
0
    if (!janet_cstrcmp(name, "ulong")) return JANET_FFI_TYPE_UINT64;
12546
0
    janet_panicf("unknown machine type %s", name);
12547
0
}
12548
12549
/* A common callback function signature. To avoid runtime code generation, which is prohibited
12550
 * on many platforms, often buggy (see libffi), and generally complicated, instead provide
12551
 * a single (or small set of commonly used function signatures). All callbacks should
12552
 * eventually call this. */
12553
0
void janet_ffi_trampoline(void *ctx, void *userdata) {
12554
0
    if (NULL == userdata) {
12555
        /* Userdata not set. */
12556
0
        janet_eprintf("no userdata found for janet callback");
12557
0
        return;
12558
0
    }
12559
0
    Janet context = janet_wrap_pointer(ctx);
12560
0
    JanetFunction *fun = userdata;
12561
0
    janet_call(fun, 1, &context);
12562
0
}
12563
12564
static JanetFFIType decode_ffi_type(Janet x);
12565
12566
0
static JanetFFIStruct *build_struct_type(int32_t argc, const Janet *argv) {
12567
    /* Use :pack to indicate a single packed struct member and :pack-all
12568
     * to pack the remaining members */
12569
0
    int32_t member_count = argc;
12570
0
    int all_packed = 0;
12571
0
    for (int32_t i = 0; i < argc; i++) {
12572
0
        if (janet_keyeq(argv[i], "pack")) {
12573
0
            member_count--;
12574
0
        } else if (janet_keyeq(argv[i], "pack-all")) {
12575
0
            member_count--;
12576
0
            all_packed = 1;
12577
0
        }
12578
0
    }
12579
12580
0
    JanetFFIStruct *st = janet_abstract(&janet_struct_type,
12581
0
                                        sizeof(JanetFFIStruct) + argc * sizeof(JanetFFIStructMember));
12582
0
    st->field_count = 0;
12583
0
    st->size = 0;
12584
0
    st->align = 1;
12585
0
    if (argc == 0) {
12586
0
        janet_panic("invalid empty struct");
12587
0
    }
12588
0
    uint32_t is_aligned = 1;
12589
0
    int32_t i = 0;
12590
0
    for (int32_t j = 0; j < argc; j++) {
12591
0
        int pack_one = 0;
12592
0
        if (janet_keyeq(argv[j], "pack") || janet_keyeq(argv[j], "pack-all")) {
12593
0
            pack_one = 1;
12594
0
            j++;
12595
0
            if (j == argc) break;
12596
0
        }
12597
0
        st->fields[i].type = decode_ffi_type(argv[j]);
12598
0
        size_t el_size = type_size(st->fields[i].type);
12599
0
        size_t el_align = type_align(st->fields[i].type);
12600
0
        if (el_align <= 0) janet_panicf("bad field type %V", argv[j]);
12601
0
        if (all_packed || pack_one) {
12602
0
            if (st->size % el_align != 0) is_aligned = 0;
12603
0
            st->fields[i].offset = st->size;
12604
0
            st->size += (uint32_t) el_size;
12605
0
        } else {
12606
0
            if (el_align > st->align) st->align = (uint32_t) el_align;
12607
0
            st->fields[i].offset = (uint32_t)(((st->size + el_align - 1) / el_align) * el_align);
12608
0
            st->size = (uint32_t)(el_size + st->fields[i].offset);
12609
0
        }
12610
0
        i++;
12611
0
    }
12612
0
    st->is_aligned = is_aligned;
12613
0
    st->size += (st->align - 1);
12614
0
    st->size /= st->align;
12615
0
    st->size *= st->align;
12616
0
    st->field_count = member_count;
12617
0
    return st;
12618
0
}
12619
12620
0
static JanetFFIType decode_ffi_type(Janet x) {
12621
0
    if (janet_checktype(x, JANET_KEYWORD)) {
12622
0
        return prim_type(decode_ffi_prim(janet_unwrap_keyword(x)));
12623
0
    }
12624
0
    JanetFFIType ret;
12625
0
    ret.array_count = -1;
12626
0
    ret.prim = JANET_FFI_TYPE_STRUCT;
12627
0
    if (janet_checkabstract(x, &janet_struct_type)) {
12628
0
        ret.st = janet_unwrap_abstract(x);
12629
0
        return ret;
12630
0
    }
12631
0
    int32_t len;
12632
0
    const Janet *els;
12633
0
    if (janet_indexed_view(x, &els, &len)) {
12634
0
        if (janet_checktype(x, JANET_ARRAY)) {
12635
0
            if (len != 2 && len != 1) janet_panicf("array type must be of form @[type count], got %v", x);
12636
0
            ret = decode_ffi_type(els[0]);
12637
0
            int32_t array_count = len == 1 ? 0 : janet_getnat(els, 1);
12638
0
            ret.array_count = array_count;
12639
0
        } else {
12640
0
            ret.st = build_struct_type(len, els);
12641
0
        }
12642
0
        return ret;
12643
0
    } else {
12644
0
        janet_panicf("bad native type %v", x);
12645
0
    }
12646
0
}
12647
12648
JANET_CORE_FN(cfun_ffi_struct,
12649
              "(ffi/struct & types)",
12650
0
              "Create a struct type definition that can be used to pass structs into native functions. ") {
12651
0
    janet_arity(argc, 1, -1);
12652
0
    return janet_wrap_abstract(build_struct_type(argc, argv));
12653
0
}
12654
12655
JANET_CORE_FN(cfun_ffi_size,
12656
              "(ffi/size type)",
12657
0
              "Get the size of an ffi type in bytes.") {
12658
0
    janet_fixarity(argc, 1);
12659
0
    size_t size = type_size(decode_ffi_type(argv[0]));
12660
0
    return janet_wrap_number((double) size);
12661
0
}
12662
12663
JANET_CORE_FN(cfun_ffi_align,
12664
              "(ffi/align type)",
12665
0
              "Get the align of an ffi type in bytes.") {
12666
0
    janet_fixarity(argc, 1);
12667
0
    size_t size = type_align(decode_ffi_type(argv[0]));
12668
0
    return janet_wrap_number((double) size);
12669
0
}
12670
12671
0
static void *janet_ffi_getpointer(const Janet *argv, int32_t n) {
12672
0
    switch (janet_type(argv[n])) {
12673
0
        default:
12674
0
            janet_panicf("bad slot #%d, expected ffi pointer convertible type, got %v", n, argv[n]);
12675
0
        case JANET_POINTER:
12676
0
        case JANET_STRING:
12677
0
        case JANET_KEYWORD:
12678
0
        case JANET_SYMBOL:
12679
0
        case JANET_CFUNCTION:
12680
0
            return janet_unwrap_pointer(argv[n]);
12681
0
        case JANET_ABSTRACT:
12682
0
            return (void *) janet_getbytes(argv, n).bytes;
12683
0
        case JANET_BUFFER:
12684
0
            return janet_unwrap_buffer(argv[n])->data;
12685
0
        case JANET_FUNCTION:
12686
            /* Users may pass in a function. Any function passed is almost certainly
12687
             * being used as a callback, so we add it to the root set. */
12688
0
            janet_gcroot(argv[n]);
12689
0
            return janet_unwrap_pointer(argv[n]);
12690
0
        case JANET_NIL:
12691
0
            return NULL;
12692
0
    }
12693
0
}
12694
12695
0
static void *janet_ffi_get_callable_pointer(const Janet *argv, int32_t n) {
12696
0
    switch (janet_type(argv[n])) {
12697
0
        default:
12698
0
            break;
12699
0
        case JANET_POINTER:
12700
0
            return janet_unwrap_pointer(argv[n]);
12701
0
        case JANET_ABSTRACT:
12702
0
            if (!janet_checkabstract(argv[n], &janet_type_ffijit)) break;
12703
0
            return ((JanetFFIJittedFn *)janet_unwrap_abstract(argv[n]))->function_pointer;
12704
0
    }
12705
0
    janet_panicf("bad slot #%d, expected ffi callable pointer type, got %v", n, argv[n]);
12706
0
}
12707
12708
/* Write a value given by some Janet values and an FFI type as it would appear in memory.
12709
 * The alignment and space available is assumed to already be sufficient */
12710
0
static void janet_ffi_write_one(void *to, const Janet *argv, int32_t n, JanetFFIType type, int recur) {
12711
0
    if (recur == 0) janet_panic("recursion too deep");
12712
0
    if (type.array_count >= 0) {
12713
0
        JanetFFIType el_type = type;
12714
0
        el_type.array_count = -1;
12715
0
        size_t el_size = type_size(el_type);
12716
0
        JanetView els = janet_getindexed(argv, n);
12717
0
        if (els.len != type.array_count) {
12718
0
            janet_panicf("bad array length, expected %d, got %d", type.array_count, els.len);
12719
0
        }
12720
0
        char *cursor = to;
12721
0
        for (int32_t i = 0; i < els.len; i++) {
12722
0
            janet_ffi_write_one(cursor, els.items, i, el_type, recur - 1);
12723
0
            cursor += el_size;
12724
0
        }
12725
0
        return;
12726
0
    }
12727
0
    switch (type.prim) {
12728
0
        case JANET_FFI_TYPE_VOID:
12729
0
            if (!janet_checktype(argv[n], JANET_NIL)) {
12730
0
                janet_panicf("expected nil, got %v", argv[n]);
12731
0
            }
12732
0
            break;
12733
0
        case JANET_FFI_TYPE_STRUCT: {
12734
0
            JanetView els = janet_getindexed(argv, n);
12735
0
            JanetFFIStruct *st = type.st;
12736
0
            if ((uint32_t) els.len != st->field_count) {
12737
0
                janet_panicf("wrong number of fields in struct, expected %d, got %d",
12738
0
                             (int32_t) st->field_count, els.len);
12739
0
            }
12740
0
            for (int32_t i = 0; i < els.len; i++) {
12741
0
                JanetFFIType tp = st->fields[i].type;
12742
0
                janet_ffi_write_one((char *) to + st->fields[i].offset, els.items, i, tp, recur - 1);
12743
0
            }
12744
0
        }
12745
0
        break;
12746
0
        case JANET_FFI_TYPE_DOUBLE:
12747
0
            ((double *)(to))[0] = janet_getnumber(argv, n);
12748
0
            break;
12749
0
        case JANET_FFI_TYPE_FLOAT:
12750
0
            ((float *)(to))[0] = (float) janet_getnumber(argv, n);
12751
0
            break;
12752
0
        case JANET_FFI_TYPE_PTR:
12753
0
            ((void **)(to))[0] = janet_ffi_getpointer(argv, n);
12754
0
            break;
12755
0
        case JANET_FFI_TYPE_STRING:
12756
0
            ((const char **)(to))[0] = janet_getcstring(argv, n);
12757
0
            break;
12758
0
        case JANET_FFI_TYPE_BOOL:
12759
0
            ((bool *)(to))[0] = janet_getboolean(argv, n);
12760
0
            break;
12761
0
        case JANET_FFI_TYPE_INT8:
12762
0
            ((int8_t *)(to))[0] = janet_getinteger(argv, n);
12763
0
            break;
12764
0
        case JANET_FFI_TYPE_INT16:
12765
0
            ((int16_t *)(to))[0] = janet_getinteger(argv, n);
12766
0
            break;
12767
0
        case JANET_FFI_TYPE_INT32:
12768
0
            ((int32_t *)(to))[0] = janet_getinteger(argv, n);
12769
0
            break;
12770
0
        case JANET_FFI_TYPE_INT64:
12771
0
            ((int64_t *)(to))[0] = janet_getinteger64(argv, n);
12772
0
            break;
12773
0
        case JANET_FFI_TYPE_UINT8:
12774
0
            ((uint8_t *)(to))[0] = (uint8_t) janet_getuinteger64(argv, n);
12775
0
            break;
12776
0
        case JANET_FFI_TYPE_UINT16:
12777
0
            ((uint16_t *)(to))[0] = (uint16_t) janet_getuinteger64(argv, n);
12778
0
            break;
12779
0
        case JANET_FFI_TYPE_UINT32:
12780
0
            ((uint32_t *)(to))[0] = (uint32_t) janet_getuinteger64(argv, n);
12781
0
            break;
12782
0
        case JANET_FFI_TYPE_UINT64:
12783
0
            ((uint64_t *)(to))[0] = janet_getuinteger64(argv, n);
12784
0
            break;
12785
0
    }
12786
0
}
12787
12788
/* Read a value from memory and construct a Janet data structure that can be passed back into
12789
 * the interpreter. This should be the inverse to janet_ffi_write_one. It is assumed that the
12790
 * size of the data is correct. */
12791
0
static Janet janet_ffi_read_one(const uint8_t *from, JanetFFIType type, int recur) {
12792
0
    if (recur == 0) janet_panic("recursion too deep");
12793
0
    if (type.array_count >= 0) {
12794
0
        JanetFFIType el_type = type;
12795
0
        el_type.array_count = -1;
12796
0
        size_t el_size = type_size(el_type);
12797
0
        JanetArray *array = janet_array(type.array_count);
12798
0
        for (int32_t i = 0; i < type.array_count; i++) {
12799
0
            janet_array_push(array, janet_ffi_read_one(from, el_type, recur - 1));
12800
0
            from += el_size;
12801
0
        }
12802
0
        return janet_wrap_array(array);
12803
0
    }
12804
0
    switch (type.prim) {
12805
0
        default:
12806
0
        case JANET_FFI_TYPE_VOID:
12807
0
            return janet_wrap_nil();
12808
0
        case JANET_FFI_TYPE_STRUCT: {
12809
0
            JanetFFIStruct *st = type.st;
12810
0
            Janet *tup = janet_tuple_begin(st->field_count);
12811
0
            for (uint32_t i = 0; i < st->field_count; i++) {
12812
0
                JanetFFIType tp = st->fields[i].type;
12813
0
                tup[i] = janet_ffi_read_one(from + st->fields[i].offset, tp, recur - 1);
12814
0
            }
12815
0
            return janet_wrap_tuple(janet_tuple_end(tup));
12816
0
        }
12817
0
        case JANET_FFI_TYPE_DOUBLE:
12818
0
            return janet_wrap_number(((double *)(from))[0]);
12819
0
        case JANET_FFI_TYPE_FLOAT:
12820
0
            return janet_wrap_number(((float *)(from))[0]);
12821
0
        case JANET_FFI_TYPE_PTR: {
12822
0
            void *ptr = ((void **)(from))[0];
12823
0
            return (NULL == ptr) ? janet_wrap_nil() : janet_wrap_pointer(ptr);
12824
0
        }
12825
0
        case JANET_FFI_TYPE_STRING:
12826
0
            return janet_cstringv(((char **)(from))[0]);
12827
0
        case JANET_FFI_TYPE_BOOL:
12828
0
            return janet_wrap_boolean(((bool *)(from))[0]);
12829
0
        case JANET_FFI_TYPE_INT8:
12830
0
            return janet_wrap_number(((int8_t *)(from))[0]);
12831
0
        case JANET_FFI_TYPE_INT16:
12832
0
            return janet_wrap_number(((int16_t *)(from))[0]);
12833
0
        case JANET_FFI_TYPE_INT32:
12834
0
            return janet_wrap_number(((int32_t *)(from))[0]);
12835
0
        case JANET_FFI_TYPE_UINT8:
12836
0
            return janet_wrap_number(((uint8_t *)(from))[0]);
12837
0
        case JANET_FFI_TYPE_UINT16:
12838
0
            return janet_wrap_number(((uint16_t *)(from))[0]);
12839
0
        case JANET_FFI_TYPE_UINT32:
12840
0
            return janet_wrap_number(((uint32_t *)(from))[0]);
12841
0
#ifdef JANET_INT_TYPES
12842
0
        case JANET_FFI_TYPE_INT64:
12843
0
            return janet_wrap_s64(((int64_t *)(from))[0]);
12844
0
        case JANET_FFI_TYPE_UINT64:
12845
0
            return janet_wrap_u64(((uint64_t *)(from))[0]);
12846
#else
12847
        case JANET_FFI_TYPE_INT64:
12848
            return janet_wrap_number(((int64_t *)(from))[0]);
12849
        case JANET_FFI_TYPE_UINT64:
12850
            return janet_wrap_number(((uint64_t *)(from))[0]);
12851
#endif
12852
0
    }
12853
0
}
12854
12855
0
static JanetFFIMapping void_mapping(void) {
12856
0
    JanetFFIMapping m;
12857
0
    m.type = prim_type(JANET_FFI_TYPE_VOID);
12858
0
    m.spec = JANET_SYSV64_NO_CLASS;
12859
0
    m.offset = 0;
12860
0
    return m;
12861
0
}
12862
12863
#ifdef JANET_FFI_SYSV64_ENABLED
12864
/* AMD64 ABI Draft 0.99.7 – November 17, 2014 – 15:08
12865
 * See section 3.2.3 Parameter Passing */
12866
0
static JanetFFIWordSpec sysv64_classify_ext(JanetFFIType type, size_t shift) {
12867
0
    switch (type.prim) {
12868
0
        case JANET_FFI_TYPE_PTR:
12869
0
        case JANET_FFI_TYPE_STRING:
12870
0
        case JANET_FFI_TYPE_BOOL:
12871
0
        case JANET_FFI_TYPE_INT8:
12872
0
        case JANET_FFI_TYPE_INT16:
12873
0
        case JANET_FFI_TYPE_INT32:
12874
0
        case JANET_FFI_TYPE_INT64:
12875
0
        case JANET_FFI_TYPE_UINT8:
12876
0
        case JANET_FFI_TYPE_UINT16:
12877
0
        case JANET_FFI_TYPE_UINT32:
12878
0
        case JANET_FFI_TYPE_UINT64:
12879
0
            return JANET_SYSV64_INTEGER;
12880
0
        case JANET_FFI_TYPE_DOUBLE:
12881
0
        case JANET_FFI_TYPE_FLOAT:
12882
0
            return JANET_SYSV64_SSE;
12883
0
        case JANET_FFI_TYPE_STRUCT: {
12884
0
            JanetFFIStruct *st = type.st;
12885
0
            if (st->size > 16) return JANET_SYSV64_MEMORY;
12886
0
            if (!st->is_aligned) return JANET_SYSV64_MEMORY;
12887
0
            JanetFFIWordSpec clazz = JANET_SYSV64_NO_CLASS;
12888
0
            if (st->size > 8 && st->size <= 16) {
12889
                /* map to pair classification */
12890
0
                int has_int_lo = 0;
12891
0
                int has_int_hi = 0;
12892
0
                for (uint32_t i = 0; i < st->field_count; i++) {
12893
0
                    JanetFFIWordSpec next_class = sysv64_classify_ext(st->fields[i].type, shift + st->fields[i].offset);
12894
0
                    switch (next_class) {
12895
0
                        default:
12896
0
                            break;
12897
0
                        case JANET_SYSV64_INTEGER:
12898
0
                            if (shift + st->fields[i].offset + type_size(st->fields[i].type) <= 8) {
12899
0
                                has_int_lo = 1;
12900
0
                            } else {
12901
0
                                has_int_hi = 2;
12902
0
                            }
12903
0
                            break;
12904
0
                        case JANET_SYSV64_PAIR_INTINT:
12905
0
                            has_int_lo = 1;
12906
0
                            has_int_hi = 2;
12907
0
                            break;
12908
0
                        case JANET_SYSV64_PAIR_INTSSE:
12909
0
                            has_int_lo = 1;
12910
0
                            break;
12911
0
                        case JANET_SYSV64_PAIR_SSEINT:
12912
0
                            has_int_hi = 2;
12913
0
                            break;
12914
0
                            break;
12915
0
                    }
12916
0
                }
12917
0
                switch (has_int_hi + has_int_lo) {
12918
0
                    case 0:
12919
0
                        clazz = JANET_SYSV64_PAIR_SSESSE;
12920
0
                        break;
12921
0
                    case 1:
12922
0
                        clazz = JANET_SYSV64_PAIR_INTSSE;
12923
0
                        break;
12924
0
                    case 2:
12925
0
                        clazz = JANET_SYSV64_PAIR_SSEINT;
12926
0
                        break;
12927
0
                    case 3:
12928
0
                        clazz = JANET_SYSV64_PAIR_INTINT;
12929
0
                        break;
12930
0
                }
12931
0
            } else {
12932
                /* Normal struct classification */
12933
0
                for (uint32_t i = 0; i < st->field_count; i++) {
12934
0
                    JanetFFIWordSpec next_class = sysv64_classify_ext(st->fields[i].type, shift + st->fields[i].offset);
12935
0
                    if (next_class != clazz) {
12936
0
                        if (clazz == JANET_SYSV64_NO_CLASS) {
12937
0
                            clazz = next_class;
12938
0
                        } else if (clazz == JANET_SYSV64_MEMORY || next_class == JANET_SYSV64_MEMORY) {
12939
0
                            clazz = JANET_SYSV64_MEMORY;
12940
0
                        } else if (clazz == JANET_SYSV64_INTEGER || next_class == JANET_SYSV64_INTEGER) {
12941
0
                            clazz = JANET_SYSV64_INTEGER;
12942
0
                        } else {
12943
0
                            clazz = JANET_SYSV64_SSE;
12944
0
                        }
12945
0
                    }
12946
0
                }
12947
0
            }
12948
0
            return clazz;
12949
0
        }
12950
0
        case JANET_FFI_TYPE_VOID:
12951
0
            return JANET_SYSV64_NO_CLASS;
12952
0
        default:
12953
0
            janet_panic("nyi");
12954
0
            return JANET_SYSV64_NO_CLASS;
12955
0
    }
12956
0
}
12957
0
static JanetFFIWordSpec sysv64_classify(JanetFFIType type) {
12958
0
    return sysv64_classify_ext(type, 0);
12959
0
}
12960
#endif
12961
12962
#ifdef JANET_FFI_AAPCS64_ENABLED
12963
/* Procedure Call Standard for the Arm® 64-bit Architecture (AArch64) 2023Q3 – October 6, 2023
12964
 * See section 6.8.2 Parameter passing rules.
12965
 * https://github.com/ARM-software/abi-aa/releases/download/2023Q3/aapcs64.pdf
12966
 *
12967
 * Additional documentation needed for Apple platforms.
12968
 * https://developer.apple.com/documentation/xcode/writing-arm64-code-for-apple-platforms */
12969
12970
#define JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ptr, alignment) (ptr = ((ptr) + ((alignment) - 1)) & ~((alignment) - 1))
12971
#if !defined(JANET_APPLE)
12972
#define JANET_FFI_AAPCS64_STACK_ALIGN(ptr, alignment) ((void) alignment, JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ptr, 8))
12973
#else
12974
#define JANET_FFI_AAPCS64_STACK_ALIGN(ptr, alignment) JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ptr, alignment)
12975
#endif
12976
12977
typedef struct {
12978
    uint64_t a;
12979
    uint64_t b;
12980
} Aapcs64Variant1ReturnGeneral;
12981
12982
typedef struct {
12983
    double a;
12984
    double b;
12985
    double c;
12986
    double d;
12987
} Aapcs64Variant2ReturnSse;
12988
12989
/* Workaround for passing a return value pointer through x8.
12990
 * Limits struct returns to 128 bytes. */
12991
typedef struct {
12992
    uint64_t a;
12993
    uint64_t b;
12994
    uint64_t c;
12995
    uint64_t d;
12996
    uint64_t e;
12997
    uint64_t f;
12998
    uint64_t g;
12999
    uint64_t h;
13000
    uint64_t i;
13001
    uint64_t j;
13002
    uint64_t k;
13003
    uint64_t l;
13004
    uint64_t m;
13005
    uint64_t n;
13006
    uint64_t o;
13007
    uint64_t p;
13008
} Aapcs64Variant3ReturnPointer;
13009
13010
static JanetFFIWordSpec aapcs64_classify(JanetFFIType type) {
13011
    switch (type.prim) {
13012
        case JANET_FFI_TYPE_PTR:
13013
        case JANET_FFI_TYPE_STRING:
13014
        case JANET_FFI_TYPE_BOOL:
13015
        case JANET_FFI_TYPE_INT8:
13016
        case JANET_FFI_TYPE_INT16:
13017
        case JANET_FFI_TYPE_INT32:
13018
        case JANET_FFI_TYPE_INT64:
13019
        case JANET_FFI_TYPE_UINT8:
13020
        case JANET_FFI_TYPE_UINT16:
13021
        case JANET_FFI_TYPE_UINT32:
13022
        case JANET_FFI_TYPE_UINT64:
13023
            return JANET_AAPCS64_GENERAL;
13024
        case JANET_FFI_TYPE_DOUBLE:
13025
        case JANET_FFI_TYPE_FLOAT:
13026
            return JANET_AAPCS64_SSE;
13027
        case JANET_FFI_TYPE_STRUCT: {
13028
            JanetFFIStruct *st = type.st;
13029
            if (st->field_count <= 4 && aapcs64_classify(st->fields[0].type) == JANET_AAPCS64_SSE) {
13030
                bool is_hfa = true;
13031
                for (uint32_t i = 1; i < st->field_count; i++) {
13032
                    if (st->fields[0].type.prim != st->fields[i].type.prim) {
13033
                        is_hfa = false;
13034
                        break;
13035
                    }
13036
                }
13037
                if (is_hfa) {
13038
                    return JANET_AAPCS64_SSE;
13039
                }
13040
            }
13041
13042
            if (type_size(type) > 16) {
13043
                return JANET_AAPCS64_GENERAL_REF;
13044
            }
13045
13046
            return JANET_AAPCS64_GENERAL;
13047
        }
13048
        case JANET_FFI_TYPE_VOID:
13049
            return JANET_AAPCS64_NONE;
13050
        default:
13051
            janet_panic("nyi");
13052
            return JANET_AAPCS64_NONE;
13053
    }
13054
}
13055
#endif
13056
13057
JANET_CORE_FN(cfun_ffi_signature,
13058
              "(ffi/signature calling-convention ret-type & arg-types)",
13059
              "Create a function signature object that can be used to make calls "
13060
0
              "with raw function pointers.") {
13061
0
    janet_arity(argc, 2, -1);
13062
0
    uint32_t frame_size = 0;
13063
0
    uint32_t variant = 0;
13064
0
    uint32_t arg_count = argc - 2;
13065
0
    uint32_t stack_count = 0;
13066
0
    JanetFFICallingConvention cc = decode_ffi_cc(janet_getkeyword(argv, 0));
13067
0
    JanetFFIType ret_type = decode_ffi_type(argv[1]);
13068
0
    JanetFFIMapping ret = {
13069
0
        ret_type,
13070
0
        JANET_SYSV64_NO_CLASS,
13071
0
        0,
13072
0
        0
13073
0
    };
13074
0
    JanetFFIMapping mappings[JANET_FFI_MAX_ARGS];
13075
0
    for (int i = 0; i < JANET_FFI_MAX_ARGS; i++) mappings[i] = void_mapping();
13076
0
    switch (cc) {
13077
0
        default:
13078
0
        case JANET_FFI_CC_NONE: {
13079
            /* Even if unsupported, we can check that the signature is valid
13080
             * and error at runtime */
13081
0
            for (uint32_t i = 0; i < arg_count; i++) {
13082
0
                decode_ffi_type(argv[i + 2]);
13083
0
            }
13084
0
        }
13085
0
        break;
13086
13087
#ifdef JANET_FFI_WIN64_ENABLED
13088
        case JANET_FFI_CC_WIN_64: {
13089
            size_t ret_size = type_size(ret.type);
13090
            uint32_t ref_stack_count = 0;
13091
            ret.spec = JANET_WIN64_REGISTER;
13092
            uint32_t next_register = 0;
13093
            if (ret_size != 0 && ret_size != 1 && ret_size != 2 && ret_size != 4 && ret_size != 8) {
13094
                ret.spec = JANET_WIN64_REGISTER_REF;
13095
                next_register++;
13096
            } else if (ret.type.prim == JANET_FFI_TYPE_FLOAT ||
13097
                       ret.type.prim == JANET_FFI_TYPE_DOUBLE) {
13098
                variant += 16;
13099
            }
13100
            for (uint32_t i = 0; i < arg_count; i++) {
13101
                mappings[i].type = decode_ffi_type(argv[i + 2]);
13102
                size_t el_size = type_size(mappings[i].type);
13103
                int is_register_sized = (el_size == 1 || el_size == 2 || el_size == 4 || el_size == 8);
13104
                if (next_register < 4) {
13105
                    mappings[i].offset = next_register;
13106
                    if (is_register_sized) {
13107
                        mappings[i].spec = JANET_WIN64_REGISTER;
13108
                        if (mappings[i].type.prim == JANET_FFI_TYPE_FLOAT ||
13109
                                mappings[i].type.prim == JANET_FFI_TYPE_DOUBLE) {
13110
                            variant += 1 << (3 - next_register);
13111
                        }
13112
                    } else {
13113
                        mappings[i].spec = JANET_WIN64_REGISTER_REF;
13114
                        mappings[i].offset2 = ref_stack_count;
13115
                        ref_stack_count += (uint32_t)((el_size + 15) / 16);
13116
                    }
13117
                    next_register++;
13118
                } else {
13119
                    if (is_register_sized) {
13120
                        mappings[i].spec = JANET_WIN64_STACK;
13121
                        mappings[i].offset = stack_count;
13122
                        stack_count++;
13123
                    } else {
13124
                        mappings[i].spec = JANET_WIN64_STACK_REF;
13125
                        mappings[i].offset = stack_count;
13126
                        stack_count++;
13127
                        mappings[i].offset2 = ref_stack_count;
13128
                        ref_stack_count += (uint32_t)((el_size + 15) / 16);
13129
                    }
13130
                }
13131
            }
13132
13133
            /* Add reference items */
13134
            stack_count += 2 * ref_stack_count;
13135
            if (stack_count & 0x1) {
13136
                stack_count++;
13137
            }
13138
13139
            /* Invert stack
13140
             * Offsets are in units of 8-bytes */
13141
            for (uint32_t i = 0; i < arg_count; i++) {
13142
                if (mappings[i].spec == JANET_WIN64_STACK_REF || mappings[i].spec == JANET_WIN64_REGISTER_REF) {
13143
                    /* Align size to 16 bytes */
13144
                    size_t size = (type_size(mappings[i].type) + 15) & ~0xFUL;
13145
                    mappings[i].offset2 = (uint32_t)(stack_count - mappings[i].offset2 - (size / 8));
13146
                }
13147
            }
13148
13149
        }
13150
        break;
13151
#endif
13152
13153
0
#ifdef JANET_FFI_SYSV64_ENABLED
13154
0
        case JANET_FFI_CC_SYSV_64: {
13155
0
            JanetFFIWordSpec ret_spec = sysv64_classify(ret.type);
13156
0
            ret.spec = ret_spec;
13157
0
            if (ret_spec == JANET_SYSV64_SSE) variant = 1;
13158
0
            if (ret_spec == JANET_SYSV64_PAIR_INTSSE) variant = 2;
13159
0
            if (ret_spec == JANET_SYSV64_PAIR_SSEINT) variant = 3;
13160
            /* Spill register overflow to memory */
13161
0
            uint32_t next_register = 0;
13162
0
            uint32_t next_fp_register = 0;
13163
0
            const uint32_t max_regs = 6;
13164
0
            const uint32_t max_fp_regs = 8;
13165
0
            if (ret_spec == JANET_SYSV64_MEMORY) {
13166
                /* First integer reg is pointer. */
13167
0
                next_register = 1;
13168
0
            }
13169
0
            for (uint32_t i = 0; i < arg_count; i++) {
13170
0
                mappings[i].type = decode_ffi_type(argv[i + 2]);
13171
0
                mappings[i].offset = 0;
13172
0
                mappings[i].spec = sysv64_classify(mappings[i].type);
13173
0
                if (mappings[i].spec == JANET_SYSV64_NO_CLASS) {
13174
0
                    janet_panic("unexpected void parameter");
13175
0
                }
13176
0
                size_t el_size = (type_size(mappings[i].type) + 7) / 8;
13177
0
                switch (mappings[i].spec) {
13178
0
                    default:
13179
0
                        janet_panicf("nyi: %d", mappings[i].spec);
13180
0
                    case JANET_SYSV64_INTEGER: {
13181
0
                        if (next_register < max_regs) {
13182
0
                            mappings[i].offset = next_register++;
13183
0
                        } else {
13184
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13185
0
                            mappings[i].offset = stack_count;
13186
0
                            stack_count += el_size;
13187
0
                        }
13188
0
                    }
13189
0
                    break;
13190
0
                    case JANET_SYSV64_SSE: {
13191
0
                        if (next_fp_register < max_fp_regs) {
13192
0
                            mappings[i].offset = next_fp_register++;
13193
0
                        } else {
13194
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13195
0
                            mappings[i].offset = stack_count;
13196
0
                            stack_count += el_size;
13197
0
                        }
13198
0
                    }
13199
0
                    break;
13200
0
                    case JANET_SYSV64_MEMORY: {
13201
0
                        mappings[i].offset = stack_count;
13202
0
                        stack_count += el_size;
13203
0
                    }
13204
0
                    break;
13205
0
                    case JANET_SYSV64_PAIR_INTINT: {
13206
0
                        if (next_register + 1 < max_regs) {
13207
0
                            mappings[i].offset = next_register++;
13208
0
                            mappings[i].offset2 = next_register++;
13209
0
                        } else {
13210
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13211
0
                            mappings[i].offset = stack_count;
13212
0
                            stack_count += el_size;
13213
0
                        }
13214
0
                    }
13215
0
                    break;
13216
0
                    case JANET_SYSV64_PAIR_INTSSE: {
13217
0
                        if (next_register < max_regs && next_fp_register < max_fp_regs) {
13218
0
                            mappings[i].offset = next_register++;
13219
0
                            mappings[i].offset2 = next_fp_register++;
13220
0
                        } else {
13221
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13222
0
                            mappings[i].offset = stack_count;
13223
0
                            stack_count += el_size;
13224
0
                        }
13225
0
                    }
13226
0
                    break;
13227
0
                    case JANET_SYSV64_PAIR_SSEINT: {
13228
0
                        if (next_register < max_regs && next_fp_register < max_fp_regs) {
13229
0
                            mappings[i].offset = next_fp_register++;
13230
0
                            mappings[i].offset2 = next_register++;
13231
0
                        } else {
13232
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13233
0
                            mappings[i].offset = stack_count;
13234
0
                            stack_count += el_size;
13235
0
                        }
13236
0
                    }
13237
0
                    break;
13238
0
                    case JANET_SYSV64_PAIR_SSESSE: {
13239
0
                        if (next_fp_register < max_fp_regs) {
13240
0
                            mappings[i].offset = next_fp_register++;
13241
0
                            mappings[i].offset2 = next_fp_register++;
13242
0
                        } else {
13243
0
                            mappings[i].spec = JANET_SYSV64_MEMORY;
13244
0
                            mappings[i].offset = stack_count;
13245
0
                            stack_count += el_size;
13246
0
                        }
13247
0
                    }
13248
0
                    break;
13249
0
                }
13250
0
            }
13251
0
        }
13252
0
        break;
13253
0
#endif
13254
13255
#ifdef JANET_FFI_AAPCS64_ENABLED
13256
        case JANET_FFI_CC_AAPCS64: {
13257
            uint32_t next_general_reg = 0;
13258
            uint32_t next_fp_reg = 0;
13259
            uint32_t stack_offset = 0;
13260
            uint32_t ref_stack_offset = 0;
13261
13262
            JanetFFIWordSpec ret_spec = aapcs64_classify(ret_type);
13263
            ret.spec = ret_spec;
13264
            if (ret_spec == JANET_AAPCS64_SSE) {
13265
                variant = 1;
13266
            } else if (ret_spec == JANET_AAPCS64_GENERAL_REF) {
13267
                if (type_size(ret_type) > sizeof(Aapcs64Variant3ReturnPointer)) {
13268
                    janet_panic("return value bigger than supported");
13269
                }
13270
                variant = 2;
13271
            } else {
13272
                variant = 0;
13273
            }
13274
13275
            for (uint32_t i = 0; i < arg_count; i++) {
13276
                mappings[i].type = decode_ffi_type(argv[i + 2]);
13277
                mappings[i].spec = aapcs64_classify(mappings[i].type);
13278
                size_t arg_size = type_size(mappings[i].type);
13279
13280
                switch (mappings[i].spec) {
13281
                    case JANET_AAPCS64_GENERAL: {
13282
                        bool arg_is_struct = mappings[i].type.prim == JANET_FFI_TYPE_STRUCT;
13283
                        uint32_t needed_registers = (arg_size + 7) / 8;
13284
                        if (next_general_reg + needed_registers <= 8) {
13285
                            mappings[i].offset = next_general_reg;
13286
                            next_general_reg += needed_registers;
13287
                        } else {
13288
                            size_t arg_align = arg_is_struct ? 8 : type_align(mappings[i].type);
13289
                            mappings[i].spec = JANET_AAPCS64_STACK;
13290
                            mappings[i].offset = JANET_FFI_AAPCS64_STACK_ALIGN(stack_offset, arg_align);
13291
#if !defined(JANET_APPLE)
13292
                            stack_offset += arg_size > 8 ? arg_size : 8;
13293
#else
13294
                            stack_offset += arg_size;
13295
#endif
13296
                            next_general_reg = 8;
13297
                        }
13298
                        break;
13299
                    }
13300
                    case JANET_AAPCS64_GENERAL_REF:
13301
                        if (next_general_reg < 8) {
13302
                            mappings[i].offset = next_general_reg++;
13303
                        } else {
13304
                            mappings[i].spec = JANET_AAPCS64_STACK_REF;
13305
                            mappings[i].offset = JANET_FFI_AAPCS64_STACK_ALIGN(stack_offset, 8);
13306
                            stack_offset += 8;
13307
                        }
13308
                        mappings[i].offset2 = JANET_FFI_AAPCS64_FORCE_STACK_ALIGN(ref_stack_offset, 8);
13309
                        ref_stack_offset += arg_size;
13310
                        break;
13311
                    case JANET_AAPCS64_SSE: {
13312
                        uint32_t needed_registers = (arg_size + 7) / 8;
13313
                        if (next_fp_reg + needed_registers <= 8) {
13314
                            mappings[i].offset = next_fp_reg;
13315
                            next_fp_reg += needed_registers;
13316
                        } else {
13317
                            mappings[i].spec = JANET_AAPCS64_STACK;
13318
                            mappings[i].offset = JANET_FFI_AAPCS64_STACK_ALIGN(stack_offset, 8);
13319
#if !defined(JANET_APPLE)
13320
                            stack_offset += 8;
13321
#else
13322
                            stack_offset += arg_size;
13323
#endif
13324
                        }
13325
                        break;
13326
                    }
13327
                    default:
13328
                        janet_panic("nyi");
13329
                }
13330
            }
13331
13332
            stack_offset = (stack_offset + 15) & ~0xFUL;
13333
            ref_stack_offset = (ref_stack_offset + 15) & ~0xFUL;
13334
            stack_count = stack_offset + ref_stack_offset;
13335
13336
            for (uint32_t i = 0; i < arg_count; i++) {
13337
                if (mappings[i].spec == JANET_AAPCS64_GENERAL_REF || mappings[i].spec == JANET_AAPCS64_STACK_REF) {
13338
                    mappings[i].offset2 = stack_offset + mappings[i].offset2;
13339
                }
13340
            }
13341
        }
13342
        break;
13343
#endif
13344
0
    }
13345
13346
    /* Create signature abstract value */
13347
0
    JanetFFISignature *abst = janet_abstract(&janet_signature_type, sizeof(JanetFFISignature));
13348
0
    abst->frame_size = frame_size;
13349
0
    abst->cc = cc;
13350
0
    abst->ret = ret;
13351
0
    abst->arg_count = arg_count;
13352
0
    abst->variant = variant;
13353
0
    abst->stack_count = stack_count;
13354
0
    memcpy(abst->args, mappings, sizeof(JanetFFIMapping) * JANET_FFI_MAX_ARGS);
13355
0
    return janet_wrap_abstract(abst);
13356
0
}
13357
13358
#ifdef JANET_FFI_SYSV64_ENABLED
13359
13360
0
static void janet_ffi_sysv64_standard_callback(void *ctx, void *userdata) {
13361
0
    janet_ffi_trampoline(ctx, userdata);
13362
0
}
13363
13364
/* Functions that set all argument registers. Two variants - one to read rax and rdx returns, another
13365
 * to read xmm0 and xmm1 returns. */
13366
typedef struct {
13367
    uint64_t x;
13368
    uint64_t y;
13369
} sysv64_int_return;
13370
typedef struct {
13371
    double x;
13372
    double y;
13373
} sysv64_sse_return;
13374
typedef struct {
13375
    uint64_t x;
13376
    double y;
13377
} sysv64_intsse_return;
13378
typedef struct {
13379
    double y;
13380
    uint64_t x;
13381
} sysv64_sseint_return;
13382
typedef sysv64_int_return janet_sysv64_variant_1(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13383
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13384
typedef sysv64_sse_return janet_sysv64_variant_2(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13385
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13386
typedef sysv64_intsse_return janet_sysv64_variant_3(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13387
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13388
typedef sysv64_sseint_return janet_sysv64_variant_4(uint64_t a, uint64_t b, uint64_t c, uint64_t d, uint64_t e, uint64_t f,
13389
        double r1, double r2, double r3, double r4, double r5, double r6, double r7, double r8);
13390
13391
0
static Janet janet_ffi_sysv64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
13392
0
    union {
13393
0
        sysv64_int_return int_return;
13394
0
        sysv64_sse_return sse_return;
13395
0
        sysv64_sseint_return sseint_return;
13396
0
        sysv64_intsse_return intsse_return;
13397
0
    } retu;
13398
0
    uint64_t pair[2];
13399
0
    uint64_t regs[6];
13400
0
    double fp_regs[8];
13401
0
    JanetFFIWordSpec ret_spec = signature->ret.spec;
13402
0
    void *ret_mem = &retu.int_return;
13403
0
    if (ret_spec == JANET_SYSV64_MEMORY) {
13404
0
        ret_mem = alloca(type_size(signature->ret.type));
13405
0
        regs[0] = (uint64_t) ret_mem;
13406
0
    }
13407
0
    uint64_t *stack = alloca(sizeof(uint64_t) * signature->stack_count);
13408
0
    for (uint32_t i = 0; i < signature->arg_count; i++) {
13409
0
        uint64_t *to;
13410
0
        int32_t n = i + 2;
13411
0
        JanetFFIMapping arg = signature->args[i];
13412
0
        switch (arg.spec) {
13413
0
            default:
13414
0
                janet_panic("nyi");
13415
0
            case JANET_SYSV64_INTEGER:
13416
0
                to = regs + arg.offset;
13417
0
                break;
13418
0
            case JANET_SYSV64_SSE:
13419
0
                to = (uint64_t *)(fp_regs + arg.offset);
13420
0
                break;
13421
0
            case JANET_SYSV64_MEMORY:
13422
0
                to = stack + arg.offset;
13423
0
                break;
13424
0
            case JANET_SYSV64_PAIR_INTINT:
13425
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13426
0
                regs[arg.offset] = pair[0];
13427
0
                regs[arg.offset2] = pair[1];
13428
0
                continue;
13429
0
            case JANET_SYSV64_PAIR_INTSSE:
13430
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13431
0
                regs[arg.offset] = pair[0];
13432
0
                ((uint64_t *) fp_regs)[arg.offset2] = pair[1];
13433
0
                continue;
13434
0
            case JANET_SYSV64_PAIR_SSEINT:
13435
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13436
0
                ((uint64_t *) fp_regs)[arg.offset] = pair[0];
13437
0
                regs[arg.offset2] = pair[1];
13438
0
                continue;
13439
0
            case JANET_SYSV64_PAIR_SSESSE:
13440
0
                janet_ffi_write_one(pair, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13441
0
                ((uint64_t *) fp_regs)[arg.offset] = pair[0];
13442
0
                ((uint64_t *) fp_regs)[arg.offset2] = pair[1];
13443
0
                continue;
13444
0
        }
13445
0
        janet_ffi_write_one(to, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13446
0
    }
13447
13448
0
    switch (signature->variant) {
13449
0
        case 0:
13450
0
            retu.int_return = ((janet_sysv64_variant_1 *)(function_pointer))(
13451
0
                                  regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13452
0
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13453
0
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13454
0
            break;
13455
0
        case 1:
13456
0
            retu.sse_return = ((janet_sysv64_variant_2 *)(function_pointer))(
13457
0
                                  regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13458
0
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13459
0
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13460
0
            break;
13461
0
        case 2:
13462
0
            retu.intsse_return = ((janet_sysv64_variant_3 *)(function_pointer))(
13463
0
                                     regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13464
0
                                     fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13465
0
                                     fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13466
0
            break;
13467
0
        case 3:
13468
0
            retu.sseint_return = ((janet_sysv64_variant_4 *)(function_pointer))(
13469
0
                                     regs[0], regs[1], regs[2], regs[3], regs[4], regs[5],
13470
0
                                     fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13471
0
                                     fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13472
0
            break;
13473
0
    }
13474
13475
0
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
13476
0
}
13477
13478
#endif
13479
13480
#ifdef JANET_FFI_WIN64_ENABLED
13481
13482
static void janet_ffi_win64_standard_callback(void *ctx, void *userdata) {
13483
    janet_ffi_trampoline(ctx, userdata);
13484
}
13485
13486
/* Variants that allow setting all required registers for 64 bit windows calling convention.
13487
 * win64 calling convention has up to 4 arguments on registers, and one register for returns.
13488
 * Each register can either be an integer or floating point register, resulting in
13489
 * 2^5 = 32 variants. Unlike sysv, there are no function signatures that will fill
13490
 * all of the possible registers which is why we have so many variants. If you were using
13491
 * assembly, you could manually fill all of the registers and only have a single variant.
13492
 * And msvc does not support inline assembly on 64 bit targets, so yeah, we have this hackery. */
13493
typedef uint64_t (win64_variant_i_iiii)(uint64_t, uint64_t, uint64_t, uint64_t);
13494
typedef uint64_t (win64_variant_i_iiif)(uint64_t, uint64_t, uint64_t, double);
13495
typedef uint64_t (win64_variant_i_iifi)(uint64_t, uint64_t, double, uint64_t);
13496
typedef uint64_t (win64_variant_i_iiff)(uint64_t, uint64_t, double, double);
13497
typedef uint64_t (win64_variant_i_ifii)(uint64_t, double, uint64_t, uint64_t);
13498
typedef uint64_t (win64_variant_i_ifif)(uint64_t, double, uint64_t, double);
13499
typedef uint64_t (win64_variant_i_iffi)(uint64_t, double, double, uint64_t);
13500
typedef uint64_t (win64_variant_i_ifff)(uint64_t, double, double, double);
13501
typedef uint64_t (win64_variant_i_fiii)(double, uint64_t, uint64_t, uint64_t);
13502
typedef uint64_t (win64_variant_i_fiif)(double, uint64_t, uint64_t, double);
13503
typedef uint64_t (win64_variant_i_fifi)(double, uint64_t, double, uint64_t);
13504
typedef uint64_t (win64_variant_i_fiff)(double, uint64_t, double, double);
13505
typedef uint64_t (win64_variant_i_ffii)(double, double, uint64_t, uint64_t);
13506
typedef uint64_t (win64_variant_i_ffif)(double, double, uint64_t, double);
13507
typedef uint64_t (win64_variant_i_fffi)(double, double, double, uint64_t);
13508
typedef uint64_t (win64_variant_i_ffff)(double, double, double, double);
13509
typedef double (win64_variant_f_iiii)(uint64_t, uint64_t, uint64_t, uint64_t);
13510
typedef double (win64_variant_f_iiif)(uint64_t, uint64_t, uint64_t, double);
13511
typedef double (win64_variant_f_iifi)(uint64_t, uint64_t, double, uint64_t);
13512
typedef double (win64_variant_f_iiff)(uint64_t, uint64_t, double, double);
13513
typedef double (win64_variant_f_ifii)(uint64_t, double, uint64_t, uint64_t);
13514
typedef double (win64_variant_f_ifif)(uint64_t, double, uint64_t, double);
13515
typedef double (win64_variant_f_iffi)(uint64_t, double, double, uint64_t);
13516
typedef double (win64_variant_f_ifff)(uint64_t, double, double, double);
13517
typedef double (win64_variant_f_fiii)(double, uint64_t, uint64_t, uint64_t);
13518
typedef double (win64_variant_f_fiif)(double, uint64_t, uint64_t, double);
13519
typedef double (win64_variant_f_fifi)(double, uint64_t, double, uint64_t);
13520
typedef double (win64_variant_f_fiff)(double, uint64_t, double, double);
13521
typedef double (win64_variant_f_ffii)(double, double, uint64_t, uint64_t);
13522
typedef double (win64_variant_f_ffif)(double, double, uint64_t, double);
13523
typedef double (win64_variant_f_fffi)(double, double, double, uint64_t);
13524
typedef double (win64_variant_f_ffff)(double, double, double, double);
13525
13526
static Janet janet_ffi_win64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
13527
    union {
13528
        uint64_t integer;
13529
        double real;
13530
    } regs[4];
13531
    union {
13532
        uint64_t integer;
13533
        double real;
13534
    } ret_reg;
13535
    JanetFFIWordSpec ret_spec = signature->ret.spec;
13536
    void *ret_mem = &ret_reg.integer;
13537
    if (ret_spec == JANET_WIN64_REGISTER_REF) {
13538
        ret_mem = alloca(type_size(signature->ret.type));
13539
        regs[0].integer = (uint64_t) ret_mem;
13540
    }
13541
    size_t stack_size = signature->stack_count * 8;
13542
    size_t stack_shift = 2;
13543
    uint64_t *stack = alloca(stack_size);
13544
    for (uint32_t i = 0; i < signature->arg_count; i++) {
13545
        int32_t n = i + 2;
13546
        JanetFFIMapping arg = signature->args[i];
13547
        if (arg.spec == JANET_WIN64_STACK) {
13548
            janet_ffi_write_one(stack + arg.offset, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13549
        } else if (arg.spec == JANET_WIN64_STACK_REF) {
13550
            uint8_t *ptr = (uint8_t *)(stack + arg.offset2);
13551
            janet_ffi_write_one(ptr, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13552
            stack[arg.offset] = (uint64_t)(ptr - stack_shift * sizeof(uint64_t));
13553
        } else if (arg.spec == JANET_WIN64_REGISTER_REF) {
13554
            uint8_t *ptr = (uint8_t *)(stack + arg.offset2);
13555
            janet_ffi_write_one(ptr, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13556
            regs[arg.offset].integer = (uint64_t)(ptr - stack_shift * sizeof(uint64_t));
13557
        } else {
13558
            janet_ffi_write_one((uint8_t *) &regs[arg.offset].integer, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13559
        }
13560
    }
13561
13562
    /* hack to get proper stack placement and avoid clobbering from logic above - shift stack down, otherwise we have issues.
13563
     * Technically, this writes into 16 bytes of unallocated stack memory */
13564
#ifdef JANET_MINGW
13565
#pragma GCC diagnostic ignored "-Wstringop-overflow"
13566
#endif
13567
    if (stack_size) memmove(stack - stack_shift, stack, stack_size);
13568
#ifdef JANET_MINGW
13569
#pragma GCC diagnostic pop
13570
#endif
13571
13572
    switch (signature->variant) {
13573
        default:
13574
            janet_panicf("unknown variant %d", signature->variant);
13575
        case 0:
13576
            ret_reg.integer = ((win64_variant_i_iiii *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].integer);
13577
            break;
13578
        case 1:
13579
            ret_reg.integer = ((win64_variant_i_iiif *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].real);
13580
            break;
13581
        case 2:
13582
            ret_reg.integer = ((win64_variant_i_iifi *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].integer);
13583
            break;
13584
        case 3:
13585
            ret_reg.integer = ((win64_variant_i_iiff *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].real);
13586
            break;
13587
        case 4:
13588
            ret_reg.integer = ((win64_variant_i_ifii *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].integer);
13589
            break;
13590
        case 5:
13591
            ret_reg.integer = ((win64_variant_i_ifif *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].real);
13592
            break;
13593
        case 6:
13594
            ret_reg.integer = ((win64_variant_i_iffi *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].integer);
13595
            break;
13596
        case 7:
13597
            ret_reg.integer = ((win64_variant_i_ifff *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].real);
13598
            break;
13599
        case 8:
13600
            ret_reg.integer = ((win64_variant_i_fiii *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].integer);
13601
            break;
13602
        case 9:
13603
            ret_reg.integer = ((win64_variant_i_fiif *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].real);
13604
            break;
13605
        case 10:
13606
            ret_reg.integer = ((win64_variant_i_fifi *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].integer);
13607
            break;
13608
        case 11:
13609
            ret_reg.integer = ((win64_variant_i_fiff *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].real);
13610
            break;
13611
        case 12:
13612
            ret_reg.integer = ((win64_variant_i_ffii *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].integer);
13613
            break;
13614
        case 13:
13615
            ret_reg.integer = ((win64_variant_i_ffif *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].real);
13616
            break;
13617
        case 14:
13618
            ret_reg.integer = ((win64_variant_i_fffi *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].integer);
13619
            break;
13620
        case 15:
13621
            ret_reg.integer = ((win64_variant_i_ffff *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].real);
13622
            break;
13623
        case 16:
13624
            ret_reg.real = ((win64_variant_f_iiii *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].integer);
13625
            break;
13626
        case 17:
13627
            ret_reg.real = ((win64_variant_f_iiif *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].integer, regs[3].real);
13628
            break;
13629
        case 18:
13630
            ret_reg.real = ((win64_variant_f_iifi *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].integer);
13631
            break;
13632
        case 19:
13633
            ret_reg.real = ((win64_variant_f_iiff *) function_pointer)(regs[0].integer, regs[1].integer, regs[2].real, regs[3].real);
13634
            break;
13635
        case 20:
13636
            ret_reg.real = ((win64_variant_f_ifii *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].integer);
13637
            break;
13638
        case 21:
13639
            ret_reg.real = ((win64_variant_f_ifif *) function_pointer)(regs[0].integer, regs[1].real, regs[2].integer, regs[3].real);
13640
            break;
13641
        case 22:
13642
            ret_reg.real = ((win64_variant_f_iffi *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].integer);
13643
            break;
13644
        case 23:
13645
            ret_reg.real = ((win64_variant_f_ifff *) function_pointer)(regs[0].integer, regs[1].real, regs[2].real, regs[3].real);
13646
            break;
13647
        case 24:
13648
            ret_reg.real = ((win64_variant_f_fiii *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].integer);
13649
            break;
13650
        case 25:
13651
            ret_reg.real = ((win64_variant_f_fiif *) function_pointer)(regs[0].real, regs[1].integer, regs[2].integer, regs[3].real);
13652
            break;
13653
        case 26:
13654
            ret_reg.real = ((win64_variant_f_fifi *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].integer);
13655
            break;
13656
        case 27:
13657
            ret_reg.real = ((win64_variant_f_fiff *) function_pointer)(regs[0].real, regs[1].integer, regs[2].real, regs[3].real);
13658
            break;
13659
        case 28:
13660
            ret_reg.real = ((win64_variant_f_ffii *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].integer);
13661
            break;
13662
        case 29:
13663
            ret_reg.real = ((win64_variant_f_ffif *) function_pointer)(regs[0].real, regs[1].real, regs[2].integer, regs[3].real);
13664
            break;
13665
        case 30:
13666
            ret_reg.real = ((win64_variant_f_fffi *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].integer);
13667
            break;
13668
        case 31:
13669
            ret_reg.real = ((win64_variant_f_ffff *) function_pointer)(regs[0].real, regs[1].real, regs[2].real, regs[3].real);
13670
            break;
13671
    }
13672
13673
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
13674
}
13675
13676
#endif
13677
13678
#ifdef JANET_FFI_AAPCS64_ENABLED
13679
13680
static void janet_ffi_aapcs64_standard_callback(void *ctx, void *userdata) {
13681
    janet_ffi_trampoline(ctx, userdata);
13682
}
13683
13684
typedef Aapcs64Variant1ReturnGeneral janet_aapcs64_variant_1(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7,
13685
        double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7);
13686
typedef Aapcs64Variant2ReturnSse janet_aapcs64_variant_2(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7,
13687
        double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7);
13688
typedef Aapcs64Variant3ReturnPointer janet_aapcs64_variant_3(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7,
13689
        double v0, double v1, double v2, double v3, double v4, double v5, double v6, double v7);
13690
13691
13692
static Janet janet_ffi_aapcs64(JanetFFISignature *signature, void *function_pointer, const Janet *argv) {
13693
    union {
13694
        Aapcs64Variant1ReturnGeneral general_return;
13695
        Aapcs64Variant2ReturnSse sse_return;
13696
        Aapcs64Variant3ReturnPointer pointer_return;
13697
    } retu;
13698
    uint64_t regs[8];
13699
    double fp_regs[8];
13700
    void *ret_mem = &retu.general_return;
13701
13702
    /* Apple's stack values do not need to be 8-byte aligned,
13703
     * thus all stack offsets refer to actual byte positions. */
13704
    uint8_t *stack = alloca(signature->stack_count);
13705
#if defined(JANET_APPLE)
13706
    /* Values must be zero-extended by the caller instead of the callee. */
13707
    memset(stack, 0, signature->stack_count);
13708
#endif
13709
    for (uint32_t i = 0; i < signature->arg_count; i++) {
13710
        int32_t n = i + 2;
13711
        JanetFFIMapping arg = signature->args[i];
13712
        void *to = NULL;
13713
13714
        switch (arg.spec) {
13715
            case JANET_AAPCS64_GENERAL:
13716
                to = regs + arg.offset;
13717
                break;
13718
            case JANET_AAPCS64_GENERAL_REF:
13719
                to = stack + arg.offset2;
13720
                regs[arg.offset] = (uint64_t) to;
13721
                break;
13722
            case JANET_AAPCS64_SSE:
13723
                to = fp_regs + arg.offset;
13724
                break;
13725
            case JANET_AAPCS64_STACK:
13726
                to = stack + arg.offset;
13727
                break;
13728
            case JANET_AAPCS64_STACK_REF:
13729
                to = stack + arg.offset2;
13730
                uint64_t *ptr = (uint64_t *) stack + arg.offset;
13731
                *ptr = (uint64_t) to;
13732
                break;
13733
            default:
13734
                janet_panic("nyi");
13735
        }
13736
13737
        if (to) {
13738
            janet_ffi_write_one(to, argv, n, arg.type, JANET_FFI_MAX_RECUR);
13739
        }
13740
    }
13741
13742
    switch (signature->variant) {
13743
        case 0:
13744
            retu.general_return = ((janet_aapcs64_variant_1 *)(function_pointer))(
13745
                                      regs[0], regs[1], regs[2], regs[3],
13746
                                      regs[4], regs[5], regs[6], regs[7],
13747
                                      fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13748
                                      fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13749
            break;
13750
        case 1:
13751
            retu.sse_return = ((janet_aapcs64_variant_2 *)(function_pointer))(
13752
                                  regs[0], regs[1], regs[2], regs[3],
13753
                                  regs[4], regs[5], regs[6], regs[7],
13754
                                  fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13755
                                  fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13756
            break;
13757
        case 2: {
13758
            retu.pointer_return = ((janet_aapcs64_variant_3 *)(function_pointer))(
13759
                                      regs[0], regs[1], regs[2], regs[3],
13760
                                      regs[4], regs[5], regs[6], regs[7],
13761
                                      fp_regs[0], fp_regs[1], fp_regs[2], fp_regs[3],
13762
                                      fp_regs[4], fp_regs[5], fp_regs[6], fp_regs[7]);
13763
        }
13764
    }
13765
13766
    return janet_ffi_read_one(ret_mem, signature->ret.type, JANET_FFI_MAX_RECUR);
13767
}
13768
13769
#endif
13770
13771
/* Allocate executable memory chunks in sizes of a page. Ideally we would keep
13772
 * an allocator around so that multiple JIT allocations would point to the same
13773
 * region but it isn't really worth it. */
13774
0
#define FFI_PAGE_MASK 0xFFF
13775
13776
JANET_CORE_FN(cfun_ffi_jitfn,
13777
              "(ffi/jitfn bytes)",
13778
              "Create an abstract type that can be used as the pointer argument to `ffi/call`. The content "
13779
0
              "of `bytes` is architecture specific machine code that will be copied into executable memory.") {
13780
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_JIT);
13781
0
    janet_fixarity(argc, 1);
13782
0
    JanetByteView bytes = janet_getbytes(argv, 0);
13783
13784
    /* Quick hack to align to page boundary, we should query OS. FIXME */
13785
0
    size_t alloc_size = ((size_t) bytes.len + FFI_PAGE_MASK) & ~FFI_PAGE_MASK;
13786
13787
0
#ifdef JANET_FFI_JIT
13788
0
#ifdef JANET_EV
13789
0
    JanetFFIJittedFn *fn = janet_abstract_threaded(&janet_type_ffijit, sizeof(JanetFFIJittedFn));
13790
#else
13791
    JanetFFIJittedFn *fn = janet_abstract(&janet_type_ffijit, sizeof(JanetFFIJittedFn));
13792
#endif
13793
0
    fn->function_pointer = NULL;
13794
0
    fn->size = 0;
13795
#ifdef JANET_WINDOWS
13796
    void *ptr = VirtualAlloc(NULL, alloc_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
13797
#elif defined(MAP_ANONYMOUS)
13798
0
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
13799
#elif defined(MAP_ANON)
13800
    /* macos doesn't have MAP_ANONYMOUS */
13801
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
13802
#else
13803
    /* -std=c99 gets in the way */
13804
    /* #define MAP_ANONYMOUS 0x20 should work, though. */
13805
    void *ptr = mmap(0, alloc_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, -1, 0);
13806
#endif
13807
0
    if (!ptr) {
13808
0
        janet_panic("failed to memory map writable memory");
13809
0
    }
13810
0
    memcpy(ptr, bytes.bytes, bytes.len);
13811
#ifdef JANET_WINDOWS
13812
    DWORD old = 0;
13813
    if (!VirtualProtect(ptr, alloc_size, PAGE_EXECUTE_READ, &old)) {
13814
        janet_panic("failed to make mapped memory executable");
13815
    }
13816
#else
13817
0
    if (mprotect(ptr, alloc_size, PROT_READ | PROT_EXEC) == -1) {
13818
0
        janet_panic("failed to make mapped memory executable");
13819
0
    }
13820
0
#endif
13821
0
    fn->size = alloc_size;
13822
0
    fn->function_pointer = ptr;
13823
0
    return janet_wrap_abstract(fn);
13824
#else
13825
    janet_panic("ffi/jitfn not available on this platform");
13826
#endif
13827
0
}
13828
13829
JANET_CORE_FN(cfun_ffi_call,
13830
              "(ffi/call pointer signature & args)",
13831
              "Call a raw pointer as a function pointer. The function signature specifies "
13832
0
              "how Janet values in `args` are converted to native machine types.") {
13833
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13834
0
    janet_arity(argc, 2, -1);
13835
0
    void *function_pointer = janet_ffi_get_callable_pointer(argv, 0);
13836
0
    JanetFFISignature *signature = janet_getabstract(argv, 1, &janet_signature_type);
13837
0
    janet_fixarity(argc - 2, signature->arg_count);
13838
0
    switch (signature->cc) {
13839
0
        default:
13840
0
        case JANET_FFI_CC_NONE:
13841
0
            (void) function_pointer;
13842
0
            janet_panic("calling convention not supported");
13843
#ifdef JANET_FFI_WIN64_ENABLED
13844
        case JANET_FFI_CC_WIN_64:
13845
            return janet_ffi_win64(signature, function_pointer, argv);
13846
#endif
13847
0
#ifdef JANET_FFI_SYSV64_ENABLED
13848
0
        case JANET_FFI_CC_SYSV_64:
13849
0
            return janet_ffi_sysv64(signature, function_pointer, argv);
13850
0
#endif
13851
#ifdef JANET_FFI_AAPCS64_ENABLED
13852
        case JANET_FFI_CC_AAPCS64:
13853
            return janet_ffi_aapcs64(signature, function_pointer, argv);
13854
#endif
13855
0
    }
13856
0
}
13857
13858
JANET_CORE_FN(cfun_ffi_buffer_write,
13859
              "(ffi/write ffi-type data &opt buffer index)",
13860
              "Append a native type to a buffer such as it would appear in memory. This can be used "
13861
              "to pass pointers to structs in the ffi, or send C/C++/native structs over the network "
13862
0
              "or to files. Returns a modified buffer or a new buffer if one is not supplied.") {
13863
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13864
0
    janet_arity(argc, 2, 4);
13865
0
    JanetFFIType type = decode_ffi_type(argv[0]);
13866
0
    uint32_t el_size = (uint32_t) type_size(type);
13867
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, el_size);
13868
0
    int32_t index = janet_optnat(argv, argc, 3, buffer->count);
13869
0
    int32_t old_count = buffer->count;
13870
0
    if (index > old_count) janet_panic("index out of bounds");
13871
0
    buffer->count = index;
13872
0
    janet_buffer_extra(buffer, el_size);
13873
0
    buffer->count = old_count;
13874
0
    memset(buffer->data + index, 0, el_size);
13875
0
    janet_ffi_write_one(buffer->data + index, argv, 1, type, JANET_FFI_MAX_RECUR);
13876
0
    index += el_size;
13877
0
    if (buffer->count < index) buffer->count = index;
13878
0
    return janet_wrap_buffer(buffer);
13879
0
}
13880
13881
JANET_CORE_FN(cfun_ffi_buffer_read,
13882
              "(ffi/read ffi-type bytes &opt offset)",
13883
              "Parse a native struct out of a buffer and convert it to normal Janet data structures. "
13884
              "This function is the inverse of `ffi/write`. `bytes` can also be a raw pointer, although "
13885
0
              "this is unsafe.") {
13886
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13887
0
    janet_arity(argc, 2, 3);
13888
0
    JanetFFIType type = decode_ffi_type(argv[0]);
13889
0
    size_t offset = (size_t) janet_optnat(argv, argc, 2, 0);
13890
0
    if (janet_checktype(argv[1], JANET_POINTER)) {
13891
0
        uint8_t *ptr = janet_unwrap_pointer(argv[1]);
13892
0
        return janet_ffi_read_one(ptr + offset, type, JANET_FFI_MAX_RECUR);
13893
0
    } else {
13894
0
        size_t el_size = type_size(type);
13895
0
        JanetByteView bytes = janet_getbytes(argv, 1);
13896
0
        if ((size_t) bytes.len < offset + el_size) janet_panic("read out of range");
13897
0
        return janet_ffi_read_one(bytes.bytes + offset, type, JANET_FFI_MAX_RECUR);
13898
0
    }
13899
0
}
13900
13901
JANET_CORE_FN(cfun_ffi_get_callback_trampoline,
13902
              "(ffi/trampoline cc)",
13903
              "Get a native function pointer that can be used as a callback and passed to C libraries. "
13904
              "This callback trampoline has the signature `void trampoline(void \\*ctx, void \\*userdata)` in "
13905
              "the given calling convention. This is the only function signature supported. "
13906
              "It is up to the programmer to ensure that the `userdata` argument contains a janet function "
13907
              "the will be called with one argument, `ctx` which is an opaque pointer. This pointer can "
13908
0
              "be further inspected with `ffi/read`.") {
13909
0
    janet_arity(argc, 0, 1);
13910
0
    JanetFFICallingConvention cc = JANET_FFI_CC_DEFAULT;
13911
0
    if (argc >= 1) cc = decode_ffi_cc(janet_getkeyword(argv, 0));
13912
0
    switch (cc) {
13913
0
        default:
13914
0
        case JANET_FFI_CC_NONE:
13915
0
            janet_panic("calling convention not supported");
13916
#ifdef JANET_FFI_WIN64_ENABLED
13917
        case JANET_FFI_CC_WIN_64:
13918
            return janet_wrap_pointer(janet_ffi_win64_standard_callback);
13919
#endif
13920
0
#ifdef JANET_FFI_SYSV64_ENABLED
13921
0
        case JANET_FFI_CC_SYSV_64:
13922
0
            return janet_wrap_pointer(janet_ffi_sysv64_standard_callback);
13923
0
#endif
13924
#ifdef JANET_FFI_AAPCS64_ENABLED
13925
        case JANET_FFI_CC_AAPCS64:
13926
            return janet_wrap_pointer(janet_ffi_aapcs64_standard_callback);
13927
#endif
13928
0
    }
13929
0
}
13930
13931
JANET_CORE_FN(janet_core_raw_native,
13932
              "(ffi/native &opt path)",
13933
              "Load a shared object or dll from the given path, and do not extract"
13934
              " or run any code from it. This is different than `native`, which will "
13935
              "run initialization code to get a module table. If `path` is nil, opens the current running binary. "
13936
0
              "Returns a `core/native`.") {
13937
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
13938
0
    janet_arity(argc, 0, 1);
13939
0
    const char *path = janet_optcstring(argv, argc, 0, NULL);
13940
0
    Clib lib = load_clib(path);
13941
0
    if (!lib) janet_panic(error_clib());
13942
0
    JanetAbstractNative *anative = janet_abstract(&janet_native_type, sizeof(JanetAbstractNative));
13943
0
    anative->clib = lib;
13944
0
    anative->closed = 0;
13945
0
    anative->is_self = path == NULL;
13946
0
    return janet_wrap_abstract(anative);
13947
0
}
13948
13949
JANET_CORE_FN(janet_core_native_lookup,
13950
              "(ffi/lookup native symbol-name)",
13951
              "Lookup a symbol from a native object. All symbol lookups will return a raw pointer "
13952
0
              "if the symbol is found, else nil.") {
13953
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
13954
0
    janet_fixarity(argc, 2);
13955
0
    JanetAbstractNative *anative = janet_getabstract(argv, 0, &janet_native_type);
13956
0
    const char *sym = janet_getcstring(argv, 1);
13957
0
    if (anative->closed) janet_panic("native object already closed");
13958
0
    void *value = symbol_clib(anative->clib, sym);
13959
0
    if (NULL == value) return janet_wrap_nil();
13960
0
    return janet_wrap_pointer(value);
13961
0
}
13962
13963
JANET_CORE_FN(janet_core_native_close,
13964
              "(ffi/close native)",
13965
              "Free a native object. Dereferencing pointers to symbols in the object will have undefined "
13966
0
              "behavior after freeing.") {
13967
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_DEFINE);
13968
0
    janet_fixarity(argc, 1);
13969
0
    JanetAbstractNative *anative = janet_getabstract(argv, 0, &janet_native_type);
13970
0
    if (anative->closed) janet_panic("native object already closed");
13971
0
    if (anative->is_self) janet_panic("cannot close self");
13972
0
    anative->closed = 1;
13973
0
    free_clib(anative->clib);
13974
0
    return janet_wrap_nil();
13975
0
}
13976
13977
JANET_CORE_FN(cfun_ffi_malloc,
13978
              "(ffi/malloc size)",
13979
0
              "Allocates memory directly using the janet memory allocator. Memory allocated in this way must be freed manually! Returns a raw pointer, or nil if size = 0.") {
13980
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13981
0
    janet_fixarity(argc, 1);
13982
0
    size_t size = janet_getsize(argv, 0);
13983
0
    if (size == 0) return janet_wrap_nil();
13984
0
    return janet_wrap_pointer(janet_malloc(size));
13985
0
}
13986
13987
JANET_CORE_FN(cfun_ffi_free,
13988
              "(ffi/free pointer)",
13989
0
              "Free memory allocated with `ffi/malloc`. Returns nil.") {
13990
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
13991
0
    janet_fixarity(argc, 1);
13992
0
    if (janet_checktype(argv[0], JANET_NIL)) return janet_wrap_nil();
13993
0
    void *pointer = janet_getpointer(argv, 0);
13994
0
    janet_free(pointer);
13995
0
    return janet_wrap_nil();
13996
0
}
13997
13998
JANET_CORE_FN(cfun_ffi_pointer_buffer,
13999
              "(ffi/pointer-buffer pointer capacity &opt count offset)",
14000
              "Create a buffer from a pointer. The underlying memory of the buffer will not be "
14001
              "reallocated or freed by the garbage collector, allowing unmanaged, mutable memory "
14002
              "to be manipulated with buffer functions. Attempts to resize or extend the buffer "
14003
              "beyond its initial capacity will raise an error. As with many FFI functions, this is memory "
14004
0
              "unsafe and can potentially allow out of bounds memory access. Returns a new buffer.") {
14005
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
14006
0
    janet_arity(argc, 2, 4);
14007
0
    void *pointer = janet_getpointer(argv, 0);
14008
0
    int32_t capacity = janet_getnat(argv, 1);
14009
0
    int32_t count = janet_optnat(argv, argc, 2, 0);
14010
0
    int64_t offset = janet_optinteger64(argv, argc, 3, 0);
14011
0
    uint8_t *offset_pointer = ((uint8_t *) pointer) + offset;
14012
0
    return janet_wrap_buffer(janet_pointer_buffer_unsafe(offset_pointer, capacity, count));
14013
0
}
14014
14015
JANET_CORE_FN(cfun_ffi_pointer_cfunction,
14016
              "(ffi/pointer-cfunction pointer &opt name source-file source-line)",
14017
              "Create a C Function from a raw pointer. Optionally give the cfunction a name and "
14018
0
              "source location for stack traces and debugging.") {
14019
0
    janet_sandbox_assert(JANET_SANDBOX_FFI_USE);
14020
0
    janet_arity(argc, 1, 4);
14021
0
    void *pointer = janet_getpointer(argv, 0);
14022
0
    const char *name = janet_optcstring(argv, argc, 1, NULL);
14023
0
    const char *source = janet_optcstring(argv, argc, 2, NULL);
14024
0
    int32_t line = janet_optinteger(argv, argc, 3, -1);
14025
0
    if ((name != NULL) || (source != NULL) || (line != -1)) {
14026
0
        janet_registry_put((JanetCFunction) pointer, name, NULL, source, line);
14027
0
    }
14028
0
    return janet_wrap_cfunction((JanetCFunction) pointer);
14029
0
}
14030
14031
JANET_CORE_FN(cfun_ffi_supported_calling_conventions,
14032
              "(ffi/calling-conventions)",
14033
              "Get an array of all supported calling conventions on the current architecture. Some architectures may have some FFI "
14034
              "functionality (ffi/malloc, ffi/free, ffi/read, ffi/write, etc.) but not support "
14035
              "any calling conventions. This function can be used to get all supported calling conventions "
14036
              "that can be used on this architecture. All architectures support the :none calling "
14037
0
              "convention which is a placeholder that cannot be used at runtime.") {
14038
0
    janet_fixarity(argc, 0);
14039
0
    (void) argv;
14040
0
    JanetArray *array = janet_array(4);
14041
#ifdef JANET_FFI_WIN64_ENABLED
14042
    janet_array_push(array, janet_ckeywordv("win64"));
14043
#endif
14044
0
#ifdef JANET_FFI_SYSV64_ENABLED
14045
0
    janet_array_push(array, janet_ckeywordv("sysv64"));
14046
0
#endif
14047
#ifdef JANET_FFI_AAPCS64_ENABLED
14048
    janet_array_push(array, janet_ckeywordv("aapcs64"));
14049
#endif
14050
0
    janet_array_push(array, janet_ckeywordv("none"));
14051
0
    return janet_wrap_array(array);
14052
0
}
14053
14054
0
void janet_lib_ffi(JanetTable *env) {
14055
0
    JanetRegExt ffi_cfuns[] = {
14056
0
        JANET_CORE_REG("ffi/native", janet_core_raw_native),
14057
0
        JANET_CORE_REG("ffi/lookup", janet_core_native_lookup),
14058
0
        JANET_CORE_REG("ffi/close", janet_core_native_close),
14059
0
        JANET_CORE_REG("ffi/signature", cfun_ffi_signature),
14060
0
        JANET_CORE_REG("ffi/call", cfun_ffi_call),
14061
0
        JANET_CORE_REG("ffi/struct", cfun_ffi_struct),
14062
0
        JANET_CORE_REG("ffi/write", cfun_ffi_buffer_write),
14063
0
        JANET_CORE_REG("ffi/read", cfun_ffi_buffer_read),
14064
0
        JANET_CORE_REG("ffi/size", cfun_ffi_size),
14065
0
        JANET_CORE_REG("ffi/align", cfun_ffi_align),
14066
0
        JANET_CORE_REG("ffi/trampoline", cfun_ffi_get_callback_trampoline),
14067
0
        JANET_CORE_REG("ffi/jitfn", cfun_ffi_jitfn),
14068
0
        JANET_CORE_REG("ffi/malloc", cfun_ffi_malloc),
14069
0
        JANET_CORE_REG("ffi/free", cfun_ffi_free),
14070
0
        JANET_CORE_REG("ffi/pointer-buffer", cfun_ffi_pointer_buffer),
14071
0
        JANET_CORE_REG("ffi/pointer-cfunction", cfun_ffi_pointer_cfunction),
14072
0
        JANET_CORE_REG("ffi/calling-conventions", cfun_ffi_supported_calling_conventions),
14073
0
        JANET_REG_END
14074
0
    };
14075
0
    janet_core_cfuns_ext(env, NULL, ffi_cfuns);
14076
0
}
14077
14078
#endif
14079
14080
14081
/* src/core/fiber.c */
14082
#line 0 "src/core/fiber.c"
14083
14084
/*
14085
* Copyright (c) 2025 Calvin Rose
14086
*
14087
* Permission is hereby granted, free of charge, to any person obtaining a copy
14088
* of this software and associated documentation files (the "Software"), to
14089
* deal in the Software without restriction, including without limitation the
14090
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14091
* sell copies of the Software, and to permit persons to whom the Software is
14092
* furnished to do so, subject to the following conditions:
14093
*
14094
* The above copyright notice and this permission notice shall be included in
14095
* all copies or substantial portions of the Software.
14096
*
14097
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14098
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14099
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14100
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14101
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14102
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
14103
* IN THE SOFTWARE.
14104
*/
14105
14106
#ifndef JANET_AMALG
14107
#include "features.h"
14108
#include <janet.h>
14109
#include "fiber.h"
14110
#include "state.h"
14111
#include "gc.h"
14112
#include "util.h"
14113
#endif
14114
14115
0
static void fiber_reset(JanetFiber *fiber) {
14116
0
    fiber->maxstack = JANET_STACK_MAX;
14117
0
    fiber->frame = 0;
14118
0
    fiber->stackstart = JANET_FRAME_SIZE;
14119
0
    fiber->stacktop = JANET_FRAME_SIZE;
14120
0
    fiber->child = NULL;
14121
0
    fiber->flags = JANET_FIBER_MASK_YIELD | JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
14122
0
    fiber->env = NULL;
14123
0
    fiber->last_value = janet_wrap_nil();
14124
0
#ifdef JANET_EV
14125
0
    fiber->sched_id = 0;
14126
0
    fiber->ev_callback = NULL;
14127
0
    fiber->ev_state = NULL;
14128
0
    fiber->ev_stream = NULL;
14129
0
    fiber->supervisor_channel = NULL;
14130
0
#endif
14131
0
    janet_fiber_set_status(fiber, JANET_STATUS_NEW);
14132
0
}
14133
14134
0
static JanetFiber *fiber_alloc(int32_t capacity) {
14135
0
    Janet *data;
14136
0
    JanetFiber *fiber = janet_gcalloc(JANET_MEMORY_FIBER, sizeof(JanetFiber));
14137
0
    if (capacity < 32) {
14138
0
        capacity = 32;
14139
0
    }
14140
0
    fiber->capacity = capacity;
14141
0
    data = janet_malloc(sizeof(Janet) * (size_t) capacity);
14142
0
    if (NULL == data) {
14143
0
        JANET_OUT_OF_MEMORY;
14144
0
    }
14145
0
    janet_vm.next_collection += sizeof(Janet) * capacity;
14146
0
    fiber->data = data;
14147
0
    return fiber;
14148
0
}
14149
14150
/* Create a new fiber with argn values on the stack by reusing a fiber. */
14151
0
JanetFiber *janet_fiber_reset(JanetFiber *fiber, JanetFunction *callee, int32_t argc, const Janet *argv) {
14152
0
    int32_t newstacktop;
14153
0
    fiber_reset(fiber);
14154
0
    if (argc) {
14155
0
        newstacktop = fiber->stacktop + argc;
14156
0
        if (newstacktop >= fiber->capacity) {
14157
0
            janet_fiber_setcapacity(fiber, 2 * newstacktop);
14158
0
        }
14159
0
        if (argv) {
14160
0
            memcpy(fiber->data + fiber->stacktop, argv, argc * sizeof(Janet));
14161
0
        } else {
14162
            /* If argv not given, fill with nil */
14163
0
            for (int32_t i = 0; i < argc; i++) {
14164
0
                fiber->data[fiber->stacktop + i] = janet_wrap_nil();
14165
0
            }
14166
0
        }
14167
0
        fiber->stacktop = newstacktop;
14168
0
    }
14169
    /* Don't panic on failure since we use this to implement janet_pcall */
14170
0
    if (janet_fiber_funcframe(fiber, callee)) return NULL;
14171
0
    janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_ENTRANCE;
14172
0
#ifdef JANET_EV
14173
0
    fiber->supervisor_channel = NULL;
14174
0
#endif
14175
0
    return fiber;
14176
0
}
14177
14178
/* Create a new fiber with argn values on the stack. */
14179
0
JanetFiber *janet_fiber(JanetFunction *callee, int32_t capacity, int32_t argc, const Janet *argv) {
14180
0
    return janet_fiber_reset(fiber_alloc(capacity), callee, argc, argv);
14181
0
}
14182
14183
#ifdef JANET_DEBUG
14184
/* Test for memory issues by reallocating fiber every time we push a stack frame */
14185
static void janet_fiber_refresh_memory(JanetFiber *fiber) {
14186
    int32_t n = fiber->capacity;
14187
    if (n) {
14188
        Janet *newData = janet_malloc(sizeof(Janet) * n);
14189
        if (NULL == newData) {
14190
            JANET_OUT_OF_MEMORY;
14191
        }
14192
        memcpy(newData, fiber->data, fiber->capacity * sizeof(Janet));
14193
        janet_free(fiber->data);
14194
        fiber->data = newData;
14195
    }
14196
}
14197
#endif
14198
14199
/* Ensure that the fiber has enough extra capacity */
14200
0
void janet_fiber_setcapacity(JanetFiber *fiber, int32_t n) {
14201
0
    int32_t old_size = fiber->capacity;
14202
0
    int32_t diff = n - old_size;
14203
0
    Janet *newData = janet_realloc(fiber->data, sizeof(Janet) * n);
14204
0
    if (NULL == newData) {
14205
0
        JANET_OUT_OF_MEMORY;
14206
0
    }
14207
0
    fiber->data = newData;
14208
0
    fiber->capacity = n;
14209
0
    janet_vm.next_collection += sizeof(Janet) * diff;
14210
0
}
14211
14212
/* Grow fiber if needed */
14213
0
static void janet_fiber_grow(JanetFiber *fiber, int32_t needed) {
14214
0
    int32_t cap = needed > (INT32_MAX / 2) ? INT32_MAX : 2 * needed;
14215
0
    janet_fiber_setcapacity(fiber, cap);
14216
0
}
14217
14218
/* Push a value on the next stack frame */
14219
0
void janet_fiber_push(JanetFiber *fiber, Janet x) {
14220
0
    if (fiber->stacktop == INT32_MAX) janet_panic("stack overflow");
14221
0
    if (fiber->stacktop >= fiber->capacity) {
14222
0
        janet_fiber_grow(fiber, fiber->stacktop);
14223
0
    }
14224
0
    fiber->data[fiber->stacktop++] = x;
14225
0
}
14226
14227
/* Push 2 values on the next stack frame */
14228
0
void janet_fiber_push2(JanetFiber *fiber, Janet x, Janet y) {
14229
0
    if (fiber->stacktop >= INT32_MAX - 1) janet_panic("stack overflow");
14230
0
    int32_t newtop = fiber->stacktop + 2;
14231
0
    if (newtop > fiber->capacity) {
14232
0
        janet_fiber_grow(fiber, newtop);
14233
0
    }
14234
0
    fiber->data[fiber->stacktop] = x;
14235
0
    fiber->data[fiber->stacktop + 1] = y;
14236
0
    fiber->stacktop = newtop;
14237
0
}
14238
14239
/* Push 3 values on the next stack frame */
14240
0
void janet_fiber_push3(JanetFiber *fiber, Janet x, Janet y, Janet z) {
14241
0
    if (fiber->stacktop >= INT32_MAX - 2) janet_panic("stack overflow");
14242
0
    int32_t newtop = fiber->stacktop + 3;
14243
0
    if (newtop > fiber->capacity) {
14244
0
        janet_fiber_grow(fiber, newtop);
14245
0
    }
14246
0
    fiber->data[fiber->stacktop] = x;
14247
0
    fiber->data[fiber->stacktop + 1] = y;
14248
0
    fiber->data[fiber->stacktop + 2] = z;
14249
0
    fiber->stacktop = newtop;
14250
0
}
14251
14252
/* Push an array on the next stack frame */
14253
0
void janet_fiber_pushn(JanetFiber *fiber, const Janet *arr, int32_t n) {
14254
0
    if (fiber->stacktop > INT32_MAX - n) janet_panic("stack overflow");
14255
0
    int32_t newtop = fiber->stacktop + n;
14256
0
    if (newtop > fiber->capacity) {
14257
0
        janet_fiber_grow(fiber, newtop);
14258
0
    }
14259
0
    safe_memcpy(fiber->data + fiber->stacktop, arr, n * sizeof(Janet));
14260
0
    fiber->stacktop = newtop;
14261
0
}
14262
14263
/* Create a struct with n values. If n is odd, the last value is ignored. */
14264
0
static Janet make_struct_n(const Janet *args, int32_t n) {
14265
0
    int32_t i = 0;
14266
0
    JanetKV *st = janet_struct_begin(n & (~1));
14267
0
    for (; i < n; i += 2) {
14268
0
        janet_struct_put(st, args[i], args[i + 1]);
14269
0
    }
14270
0
    return janet_wrap_struct(janet_struct_end(st));
14271
0
}
14272
14273
/* Push a stack frame to a fiber */
14274
0
int janet_fiber_funcframe(JanetFiber *fiber, JanetFunction *func) {
14275
0
    JanetStackFrame *newframe;
14276
14277
0
    int32_t i;
14278
0
    int32_t oldtop = fiber->stacktop;
14279
0
    int32_t oldframe = fiber->frame;
14280
0
    int32_t nextframe = fiber->stackstart;
14281
0
    int32_t nextstacktop = nextframe + func->def->slotcount + JANET_FRAME_SIZE;
14282
0
    int32_t next_arity = fiber->stacktop - fiber->stackstart;
14283
14284
    /* Check strict arity before messing with state */
14285
0
    if (next_arity < func->def->min_arity) return 1;
14286
0
    if (next_arity > func->def->max_arity) return 1;
14287
14288
0
    if (fiber->capacity < nextstacktop) {
14289
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
14290
#ifdef JANET_DEBUG
14291
    } else {
14292
        janet_fiber_refresh_memory(fiber);
14293
#endif
14294
0
    }
14295
14296
    /* Nil unset stack arguments (Needed for gc correctness) */
14297
0
    for (i = fiber->stacktop; i < nextstacktop; ++i) {
14298
0
        fiber->data[i] = janet_wrap_nil();
14299
0
    }
14300
14301
    /* Set up the next frame */
14302
0
    fiber->frame = nextframe;
14303
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
14304
0
    newframe = janet_fiber_frame(fiber);
14305
0
    newframe->prevframe = oldframe;
14306
0
    newframe->pc = func->def->bytecode;
14307
0
    newframe->func = func;
14308
0
    newframe->env = NULL;
14309
0
    newframe->flags = 0;
14310
14311
    /* Check varargs */
14312
0
    if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
14313
0
        int32_t tuplehead = fiber->frame + func->def->arity;
14314
0
        int st = func->def->flags & JANET_FUNCDEF_FLAG_STRUCTARG;
14315
0
        if (tuplehead >= oldtop) {
14316
0
            fiber->data[tuplehead] = st
14317
0
                                     ? make_struct_n(NULL, 0)
14318
0
                                     : janet_wrap_tuple(janet_tuple_n(NULL, 0));
14319
0
        } else {
14320
0
            fiber->data[tuplehead] = st
14321
0
                                     ? make_struct_n(
14322
0
                                         fiber->data + tuplehead,
14323
0
                                         oldtop - tuplehead)
14324
0
                                     : janet_wrap_tuple(janet_tuple_n(
14325
0
                                             fiber->data + tuplehead,
14326
0
                                             oldtop - tuplehead));
14327
0
        }
14328
0
    }
14329
14330
    /* Good return */
14331
0
    return 0;
14332
0
}
14333
14334
/* If a frame has a closure environment, detach it from
14335
 * the stack and have it keep its own values */
14336
0
static void janet_env_detach(JanetFuncEnv *env) {
14337
    /* Check for closure environment */
14338
0
    if (env) {
14339
0
        janet_env_valid(env);
14340
0
        int32_t len = env->length;
14341
0
        size_t s = sizeof(Janet) * (size_t) len;
14342
0
        Janet *vmem = janet_malloc(s);
14343
0
        janet_vm.next_collection += (uint32_t) s;
14344
0
        if (NULL == vmem) {
14345
0
            JANET_OUT_OF_MEMORY;
14346
0
        }
14347
0
        Janet *values = env->as.fiber->data + env->offset;
14348
0
        safe_memcpy(vmem, values, s);
14349
0
        uint32_t *bitset = janet_stack_frame(values)->func->def->closure_bitset;
14350
0
        if (bitset) {
14351
            /* Clear unneeded references in closure environment */
14352
0
            for (int32_t i = 0; i < len; i += 32) {
14353
0
                uint32_t mask = ~(bitset[i >> 5]);
14354
0
                int32_t maxj = i + 32 > len ? len : i + 32;
14355
0
                for (int32_t j = i; j < maxj; j++) {
14356
0
                    if (mask & 1) vmem[j] = janet_wrap_nil();
14357
0
                    mask >>= 1;
14358
0
                }
14359
0
            }
14360
0
        }
14361
0
        env->offset = 0;
14362
0
        env->as.values = vmem;
14363
0
    }
14364
0
}
14365
14366
/* Validate potentially untrusted func env (unmarshalled envs are difficult to verify) */
14367
0
int janet_env_valid(JanetFuncEnv *env) {
14368
0
    if (env->offset < 0) {
14369
0
        int32_t real_offset = -(env->offset);
14370
0
        JanetFiber *fiber = env->as.fiber;
14371
0
        int32_t i = fiber->frame;
14372
0
        while (i > 0) {
14373
0
            JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
14374
0
            if (real_offset == i &&
14375
0
                    frame->env == env &&
14376
0
                    frame->func &&
14377
0
                    frame->func->def->slotcount == env->length) {
14378
0
                env->offset = real_offset;
14379
0
                return 1;
14380
0
            }
14381
0
            i = frame->prevframe;
14382
0
        }
14383
        /* Invalid, set to empty off-stack variant. */
14384
0
        env->offset = 0;
14385
0
        env->length = 0;
14386
0
        env->as.values = NULL;
14387
0
        return 0;
14388
0
    } else {
14389
0
        return 1;
14390
0
    }
14391
0
}
14392
14393
/* Detach a fiber from the env if the target fiber has stopped mutating */
14394
0
void janet_env_maybe_detach(JanetFuncEnv *env) {
14395
    /* Check for detachable closure envs */
14396
0
    janet_env_valid(env);
14397
0
    if (env->offset > 0) {
14398
0
        JanetFiberStatus s = janet_fiber_status(env->as.fiber);
14399
0
        int isFinished = s == JANET_STATUS_DEAD ||
14400
0
                         s == JANET_STATUS_ERROR ||
14401
0
                         s == JANET_STATUS_USER0 ||
14402
0
                         s == JANET_STATUS_USER1 ||
14403
0
                         s == JANET_STATUS_USER2 ||
14404
0
                         s == JANET_STATUS_USER3 ||
14405
0
                         s == JANET_STATUS_USER4;
14406
0
        if (isFinished) {
14407
0
            janet_env_detach(env);
14408
0
        }
14409
0
    }
14410
0
}
14411
14412
/* Create a tail frame for a function */
14413
0
int janet_fiber_funcframe_tail(JanetFiber *fiber, JanetFunction *func) {
14414
0
    int32_t i;
14415
0
    int32_t nextframetop = fiber->frame + func->def->slotcount;
14416
0
    int32_t nextstacktop = nextframetop + JANET_FRAME_SIZE;
14417
0
    int32_t next_arity = fiber->stacktop - fiber->stackstart;
14418
0
    int32_t stacksize;
14419
14420
    /* Check strict arity before messing with state */
14421
0
    if (next_arity < func->def->min_arity) return 1;
14422
0
    if (next_arity > func->def->max_arity) return 1;
14423
14424
0
    if (fiber->capacity < nextstacktop) {
14425
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
14426
#ifdef JANET_DEBUG
14427
    } else {
14428
        janet_fiber_refresh_memory(fiber);
14429
#endif
14430
0
    }
14431
14432
0
    Janet *stack = fiber->data + fiber->frame;
14433
0
    Janet *args = fiber->data + fiber->stackstart;
14434
14435
    /* Detach old function */
14436
0
    if (NULL != janet_fiber_frame(fiber)->func)
14437
0
        janet_env_detach(janet_fiber_frame(fiber)->env);
14438
0
    janet_fiber_frame(fiber)->env = NULL;
14439
14440
    /* Check varargs */
14441
0
    if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
14442
0
        int32_t tuplehead = fiber->stackstart + func->def->arity;
14443
0
        int st = func->def->flags & JANET_FUNCDEF_FLAG_STRUCTARG;
14444
0
        if (tuplehead >= fiber->stacktop) {
14445
0
            if (tuplehead >= fiber->capacity) janet_fiber_setcapacity(fiber, 2 * (tuplehead + 1));
14446
0
            for (i = fiber->stacktop; i < tuplehead; ++i) fiber->data[i] = janet_wrap_nil();
14447
0
            fiber->data[tuplehead] = st
14448
0
                                     ? make_struct_n(NULL, 0)
14449
0
                                     : janet_wrap_tuple(janet_tuple_n(NULL, 0));
14450
0
        } else {
14451
0
            fiber->data[tuplehead] = st
14452
0
                                     ? make_struct_n(
14453
0
                                         fiber->data + tuplehead,
14454
0
                                         fiber->stacktop - tuplehead)
14455
0
                                     : janet_wrap_tuple(janet_tuple_n(
14456
0
                                             fiber->data + tuplehead,
14457
0
                                             fiber->stacktop - tuplehead));
14458
0
        }
14459
0
        stacksize = tuplehead - fiber->stackstart + 1;
14460
0
    } else {
14461
0
        stacksize = fiber->stacktop - fiber->stackstart;
14462
0
    }
14463
14464
0
    if (stacksize) memmove(stack, args, stacksize * sizeof(Janet));
14465
14466
    /* Nil unset locals (Needed for functional correctness) */
14467
0
    for (i = fiber->frame + stacksize; i < nextframetop; ++i)
14468
0
        fiber->data[i] = janet_wrap_nil();
14469
14470
    /* Set stack stuff */
14471
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
14472
14473
    /* Set frame stuff */
14474
0
    janet_fiber_frame(fiber)->func = func;
14475
0
    janet_fiber_frame(fiber)->pc = func->def->bytecode;
14476
0
    janet_fiber_frame(fiber)->flags |= JANET_STACKFRAME_TAILCALL;
14477
14478
    /* Good return */
14479
0
    return 0;
14480
0
}
14481
14482
/* Push a stack frame to a fiber for a c function */
14483
0
void janet_fiber_cframe(JanetFiber *fiber, JanetCFunction cfun) {
14484
0
    JanetStackFrame *newframe;
14485
14486
0
    int32_t oldframe = fiber->frame;
14487
0
    int32_t nextframe = fiber->stackstart;
14488
0
    int32_t nextstacktop = fiber->stacktop + JANET_FRAME_SIZE;
14489
14490
0
    if (fiber->capacity < nextstacktop) {
14491
0
        janet_fiber_setcapacity(fiber, 2 * nextstacktop);
14492
#ifdef JANET_DEBUG
14493
    } else {
14494
        janet_fiber_refresh_memory(fiber);
14495
#endif
14496
0
    }
14497
14498
    /* Set the next frame */
14499
0
    fiber->frame = nextframe;
14500
0
    fiber->stacktop = fiber->stackstart = nextstacktop;
14501
0
    newframe = janet_fiber_frame(fiber);
14502
14503
    /* Set up the new frame */
14504
0
    newframe->prevframe = oldframe;
14505
0
    newframe->pc = (uint32_t *) cfun;
14506
0
    newframe->func = NULL;
14507
0
    newframe->env = NULL;
14508
0
    newframe->flags = 0;
14509
0
}
14510
14511
/* Pop a stack frame from the fiber. */
14512
0
void janet_fiber_popframe(JanetFiber *fiber) {
14513
0
    JanetStackFrame *frame = janet_fiber_frame(fiber);
14514
0
    if (fiber->frame == 0) return;
14515
14516
    /* Clean up the frame (detach environments) */
14517
0
    if (NULL != frame->func)
14518
0
        janet_env_detach(frame->env);
14519
14520
    /* Shrink stack */
14521
0
    fiber->stacktop = fiber->stackstart = fiber->frame;
14522
0
    fiber->frame = frame->prevframe;
14523
0
}
14524
14525
0
JanetFiberStatus janet_fiber_status(JanetFiber *f) {
14526
0
    return ((f)->flags & JANET_FIBER_STATUS_MASK) >> JANET_FIBER_STATUS_OFFSET;
14527
0
}
14528
14529
0
JanetFiber *janet_current_fiber(void) {
14530
0
    return janet_vm.fiber;
14531
0
}
14532
14533
0
JanetFiber *janet_root_fiber(void) {
14534
0
    return janet_vm.root_fiber;
14535
0
}
14536
14537
/* CFuns */
14538
14539
JANET_CORE_FN(cfun_fiber_getenv,
14540
              "(fiber/getenv fiber)",
14541
              "Gets the environment for a fiber. Returns nil if no such table is "
14542
0
              "set yet.") {
14543
0
    janet_fixarity(argc, 1);
14544
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14545
0
    return fiber->env ?
14546
0
           janet_wrap_table(fiber->env) :
14547
0
           janet_wrap_nil();
14548
0
}
14549
14550
JANET_CORE_FN(cfun_fiber_setenv,
14551
              "(fiber/setenv fiber table)",
14552
              "Sets the environment table for a fiber. Set to nil to remove the current "
14553
0
              "environment.") {
14554
0
    janet_fixarity(argc, 2);
14555
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14556
0
    if (janet_checktype(argv[1], JANET_NIL)) {
14557
0
        fiber->env = NULL;
14558
0
    } else {
14559
0
        fiber->env = janet_gettable(argv, 1);
14560
0
    }
14561
0
    return argv[0];
14562
0
}
14563
14564
JANET_CORE_FN(cfun_fiber_new,
14565
              "(fiber/new func &opt sigmask env)",
14566
              "Create a new fiber with function body func. Can optionally "
14567
              "take a set of signals `sigmask` to capture from child fibers, "
14568
              "and an environment table `env`. The mask is specified as a keyword where each character "
14569
              "is used to indicate a signal to block. If the ev module is enabled, and "
14570
              "this fiber is used as an argument to `ev/go`, these \"blocked\" signals "
14571
              "will result in messages being sent to the supervisor channel. "
14572
              "The default sigmask is :y. "
14573
              "For example,\n\n"
14574
              "    (fiber/new myfun :e123)\n\n"
14575
              "blocks error signals and user signals 1, 2 and 3. The signals are "
14576
              "as follows:\n\n"
14577
              "* :a - block all signals\n"
14578
              "* :d - block debug signals\n"
14579
              "* :e - block error signals\n"
14580
              "* :t - block termination signals: error + user[0-4]\n"
14581
              "* :u - block user signals\n"
14582
              "* :y - block yield signals\n"
14583
              "* :w - block await signals (user9)\n"
14584
              "* :r - block interrupt signals (user8)\n"
14585
              "* :0-9 - block a specific user signal\n\n"
14586
              "The sigmask argument also can take environment flags. If any mutually "
14587
              "exclusive flags are present, the last flag takes precedence.\n\n"
14588
              "* :i - inherit the environment from the current fiber\n"
14589
0
              "* :p - the environment table's prototype is the current environment table") {
14590
0
    janet_arity(argc, 1, 3);
14591
0
    JanetFunction *func = janet_getfunction(argv, 0);
14592
0
    JanetFiber *fiber;
14593
0
    if (func->def->min_arity > 1) {
14594
0
        janet_panicf("fiber function must accept 0 or 1 arguments");
14595
0
    }
14596
0
    fiber = janet_fiber(func, 64, func->def->min_arity, NULL);
14597
0
    janet_assert(fiber != NULL, "bad fiber arity check");
14598
0
    if (argc == 3 && !janet_checktype(argv[2], JANET_NIL)) {
14599
0
        fiber->env = janet_gettable(argv, 2);
14600
0
    }
14601
0
    if (argc >= 2) {
14602
0
        int32_t i;
14603
0
        JanetByteView view = janet_getbytes(argv, 1);
14604
0
        fiber->flags = JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
14605
0
        janet_fiber_set_status(fiber, JANET_STATUS_NEW);
14606
0
        for (i = 0; i < view.len; i++) {
14607
0
            if (view.bytes[i] >= '0' && view.bytes[i] <= '9') {
14608
0
                fiber->flags |= JANET_FIBER_MASK_USERN(view.bytes[i] - '0');
14609
0
            } else {
14610
0
                switch (view.bytes[i]) {
14611
0
                    default:
14612
0
                        janet_panicf("invalid flag %c, expected a, t, d, e, u, y, w, r, i, or p", view.bytes[i]);
14613
0
                        break;
14614
0
                    case 'a':
14615
0
                        fiber->flags |=
14616
0
                            JANET_FIBER_MASK_DEBUG |
14617
0
                            JANET_FIBER_MASK_ERROR |
14618
0
                            JANET_FIBER_MASK_USER |
14619
0
                            JANET_FIBER_MASK_YIELD;
14620
0
                        break;
14621
0
                    case 't':
14622
0
                        fiber->flags |=
14623
0
                            JANET_FIBER_MASK_ERROR |
14624
0
                            JANET_FIBER_MASK_USER0 |
14625
0
                            JANET_FIBER_MASK_USER1 |
14626
0
                            JANET_FIBER_MASK_USER2 |
14627
0
                            JANET_FIBER_MASK_USER3 |
14628
0
                            JANET_FIBER_MASK_USER4;
14629
0
                        break;
14630
0
                    case 'd':
14631
0
                        fiber->flags |= JANET_FIBER_MASK_DEBUG;
14632
0
                        break;
14633
0
                    case 'e':
14634
0
                        fiber->flags |= JANET_FIBER_MASK_ERROR;
14635
0
                        break;
14636
0
                    case 'u':
14637
0
                        fiber->flags |= JANET_FIBER_MASK_USER;
14638
0
                        break;
14639
0
                    case 'y':
14640
0
                        fiber->flags |= JANET_FIBER_MASK_YIELD;
14641
0
                        break;
14642
0
                    case 'w':
14643
0
                        fiber->flags |= JANET_FIBER_MASK_USER9;
14644
0
                        break;
14645
0
                    case 'r':
14646
0
                        fiber->flags |= JANET_FIBER_MASK_USER8;
14647
0
                        break;
14648
0
                    case 'i':
14649
0
                        if (!janet_vm.fiber->env) {
14650
0
                            janet_vm.fiber->env = janet_table(0);
14651
0
                        }
14652
0
                        fiber->env = janet_vm.fiber->env;
14653
0
                        break;
14654
0
                    case 'p':
14655
0
                        if (!janet_vm.fiber->env) {
14656
0
                            janet_vm.fiber->env = janet_table(0);
14657
0
                        }
14658
0
                        fiber->env = janet_table(0);
14659
0
                        fiber->env->proto = janet_vm.fiber->env;
14660
0
                        break;
14661
0
                }
14662
0
            }
14663
0
        }
14664
0
    }
14665
0
    return janet_wrap_fiber(fiber);
14666
0
}
14667
14668
JANET_CORE_FN(cfun_fiber_status,
14669
              "(fiber/status fib)",
14670
              "Get the status of a fiber. The status will be one of:\n\n"
14671
              "* :dead - the fiber has finished\n"
14672
              "* :error - the fiber has errored out\n"
14673
              "* :debug - the fiber is suspended in debug mode\n"
14674
              "* :pending - the fiber has been yielded\n"
14675
              "* :user(0-7) - the fiber is suspended by a user signal\n"
14676
              "* :interrupted - the fiber was interrupted\n"
14677
              "* :suspended - the fiber is waiting to be resumed by the scheduler\n"
14678
              "* :alive - the fiber is currently running and cannot be resumed\n"
14679
0
              "* :new - the fiber has just been created and not yet run") {
14680
0
    janet_fixarity(argc, 1);
14681
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14682
0
    uint32_t s = janet_fiber_status(fiber);
14683
0
    return janet_ckeywordv(janet_status_names[s]);
14684
0
}
14685
14686
JANET_CORE_FN(cfun_fiber_current,
14687
              "(fiber/current)",
14688
0
              "Returns the currently running fiber.") {
14689
0
    (void) argv;
14690
0
    janet_fixarity(argc, 0);
14691
0
    return janet_wrap_fiber(janet_vm.fiber);
14692
0
}
14693
14694
JANET_CORE_FN(cfun_fiber_root,
14695
              "(fiber/root)",
14696
              "Returns the current root fiber. The root fiber is the oldest ancestor "
14697
0
              "that does not have a parent.") {
14698
0
    (void) argv;
14699
0
    janet_fixarity(argc, 0);
14700
0
    return janet_wrap_fiber(janet_vm.root_fiber);
14701
0
}
14702
14703
JANET_CORE_FN(cfun_fiber_maxstack,
14704
              "(fiber/maxstack fib)",
14705
              "Gets the maximum stack size in janet values allowed for a fiber. While memory for "
14706
              "the fiber's stack is not allocated up front, the fiber will not allocated more "
14707
0
              "than this amount and will throw a stack-overflow error if more memory is needed. ") {
14708
0
    janet_fixarity(argc, 1);
14709
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14710
0
    return janet_wrap_integer(fiber->maxstack);
14711
0
}
14712
14713
JANET_CORE_FN(cfun_fiber_setmaxstack,
14714
              "(fiber/setmaxstack fib maxstack)",
14715
              "Sets the maximum stack size in janet values for a fiber. By default, the "
14716
0
              "maximum stack size is usually 8192.") {
14717
0
    janet_fixarity(argc, 2);
14718
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14719
0
    int32_t maxs = janet_getinteger(argv, 1);
14720
0
    if (maxs < 0) {
14721
0
        janet_panic("expected positive integer");
14722
0
    }
14723
0
    fiber->maxstack = maxs;
14724
0
    return argv[0];
14725
0
}
14726
14727
0
int janet_fiber_can_resume(JanetFiber *fiber) {
14728
0
    JanetFiberStatus s = janet_fiber_status(fiber);
14729
0
    int isFinished = s == JANET_STATUS_DEAD ||
14730
0
                     s == JANET_STATUS_ERROR ||
14731
0
                     s == JANET_STATUS_USER0 ||
14732
0
                     s == JANET_STATUS_USER1 ||
14733
0
                     s == JANET_STATUS_USER2 ||
14734
0
                     s == JANET_STATUS_USER3 ||
14735
0
                     s == JANET_STATUS_USER4;
14736
0
    return !isFinished;
14737
0
}
14738
14739
JANET_CORE_FN(cfun_fiber_can_resume,
14740
              "(fiber/can-resume? fiber)",
14741
0
              "Check if a fiber is finished and cannot be resumed.") {
14742
0
    janet_fixarity(argc, 1);
14743
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14744
0
    return janet_wrap_boolean(janet_fiber_can_resume(fiber));
14745
0
}
14746
14747
JANET_CORE_FN(cfun_fiber_last_value,
14748
              "(fiber/last-value fiber)",
14749
0
              "Get the last value returned or signaled from the fiber.") {
14750
0
    janet_fixarity(argc, 1);
14751
0
    JanetFiber *fiber = janet_getfiber(argv, 0);
14752
0
    return fiber->last_value;
14753
0
}
14754
14755
/* Module entry point */
14756
0
void janet_lib_fiber(JanetTable *env) {
14757
0
    JanetRegExt fiber_cfuns[] = {
14758
0
        JANET_CORE_REG("fiber/new", cfun_fiber_new),
14759
0
        JANET_CORE_REG("fiber/status", cfun_fiber_status),
14760
0
        JANET_CORE_REG("fiber/root", cfun_fiber_root),
14761
0
        JANET_CORE_REG("fiber/current", cfun_fiber_current),
14762
0
        JANET_CORE_REG("fiber/maxstack", cfun_fiber_maxstack),
14763
0
        JANET_CORE_REG("fiber/setmaxstack", cfun_fiber_setmaxstack),
14764
0
        JANET_CORE_REG("fiber/getenv", cfun_fiber_getenv),
14765
0
        JANET_CORE_REG("fiber/setenv", cfun_fiber_setenv),
14766
0
        JANET_CORE_REG("fiber/can-resume?", cfun_fiber_can_resume),
14767
0
        JANET_CORE_REG("fiber/last-value", cfun_fiber_last_value),
14768
0
        JANET_REG_END
14769
0
    };
14770
0
    janet_core_cfuns_ext(env, NULL, fiber_cfuns);
14771
0
}
14772
14773
14774
/* src/core/filewatch.c */
14775
#line 0 "src/core/filewatch.c"
14776
14777
/*
14778
* Copyright (c) 2025 Calvin Rose
14779
*
14780
* Permission is hereby granted, free of charge, to any person obtaining a copy
14781
* of this software and associated documentation files (the "Software"), to
14782
* deal in the Software without restriction, including without limitation the
14783
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
14784
* sell copies of the Software, and to permit persons to whom the Software is
14785
* furnished to do so, subject to the following conditions:
14786
*
14787
* The above copyright notice and this permission notice shall be included in
14788
* all copies or substantial portions of the Software.
14789
*
14790
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14791
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14792
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14793
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14794
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
14795
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
14796
* IN THE SOFTWARE.
14797
*/
14798
14799
#ifndef JANET_AMALG
14800
#include "features.h"
14801
#include <janet.h>
14802
#include "util.h"
14803
#endif
14804
14805
#ifdef JANET_EV
14806
#ifdef JANET_FILEWATCH
14807
14808
#ifdef JANET_LINUX
14809
#include <sys/inotify.h>
14810
#include <unistd.h>
14811
#endif
14812
14813
#ifdef JANET_WINDOWS
14814
#include <windows.h>
14815
#endif
14816
14817
typedef struct {
14818
    const char *name;
14819
    uint32_t flag;
14820
} JanetWatchFlagName;
14821
14822
typedef struct {
14823
#ifndef JANET_WINDOWS
14824
    JanetStream *stream;
14825
#endif
14826
    JanetTable *watch_descriptors;
14827
    JanetChannel *channel;
14828
    uint32_t default_flags;
14829
    int is_watching;
14830
} JanetWatcher;
14831
14832
#ifdef JANET_LINUX
14833
14834
#include <sys/inotify.h>
14835
#include <unistd.h>
14836
14837
static const JanetWatchFlagName watcher_flags_linux[] = {
14838
    {"access", IN_ACCESS},
14839
    {"all", IN_ALL_EVENTS},
14840
    {"attrib", IN_ATTRIB},
14841
    {"close-nowrite", IN_CLOSE_NOWRITE},
14842
    {"close-write", IN_CLOSE_WRITE},
14843
    {"create", IN_CREATE},
14844
    {"delete", IN_DELETE},
14845
    {"delete-self", IN_DELETE_SELF},
14846
    {"ignored", IN_IGNORED},
14847
    {"modify", IN_MODIFY},
14848
    {"move-self", IN_MOVE_SELF},
14849
    {"moved-from", IN_MOVED_FROM},
14850
    {"moved-to", IN_MOVED_TO},
14851
    {"open", IN_OPEN},
14852
    {"q-overflow", IN_Q_OVERFLOW},
14853
    {"unmount", IN_UNMOUNT},
14854
};
14855
14856
0
static uint32_t decode_watch_flags(const Janet *options, int32_t n) {
14857
0
    uint32_t flags = 0;
14858
0
    for (int32_t i = 0; i < n; i++) {
14859
0
        if (!(janet_checktype(options[i], JANET_KEYWORD))) {
14860
0
            janet_panicf("expected keyword, got %v", options[i]);
14861
0
        }
14862
0
        JanetKeyword keyw = janet_unwrap_keyword(options[i]);
14863
0
        const JanetWatchFlagName *result = janet_strbinsearch(watcher_flags_linux,
14864
0
                                           sizeof(watcher_flags_linux) / sizeof(JanetWatchFlagName),
14865
0
                                           sizeof(JanetWatchFlagName),
14866
0
                                           keyw);
14867
0
        if (!result) {
14868
0
            janet_panicf("unknown inotify flag %v", options[i]);
14869
0
        }
14870
0
        flags |= result->flag;
14871
0
    }
14872
0
    return flags;
14873
0
}
14874
14875
0
static void janet_watcher_init(JanetWatcher *watcher, JanetChannel *channel, uint32_t default_flags) {
14876
0
    int fd;
14877
0
    do {
14878
0
        fd = inotify_init1(IN_NONBLOCK | IN_CLOEXEC);
14879
0
    } while (fd == -1 && errno == EINTR);
14880
0
    if (fd == -1) {
14881
0
        janet_panicv(janet_ev_lasterr());
14882
0
    }
14883
0
    watcher->watch_descriptors = janet_table(0);
14884
0
    watcher->channel = channel;
14885
0
    watcher->default_flags = default_flags;
14886
0
    watcher->is_watching = 0;
14887
0
    watcher->stream = janet_stream(fd, JANET_STREAM_READABLE, NULL);
14888
0
}
14889
14890
0
static void janet_watcher_add(JanetWatcher *watcher, const char *path, uint32_t flags) {
14891
0
    if (watcher->stream == NULL) janet_panic("watcher closed");
14892
0
    int result;
14893
0
    do {
14894
0
        result = inotify_add_watch(watcher->stream->handle, path, flags);
14895
0
    } while (result == -1 && errno == EINTR);
14896
0
    if (result == -1) {
14897
0
        janet_panicv(janet_ev_lasterr());
14898
0
    }
14899
0
    Janet name = janet_cstringv(path);
14900
0
    Janet wd = janet_wrap_integer(result);
14901
0
    janet_table_put(watcher->watch_descriptors, name, wd);
14902
0
    janet_table_put(watcher->watch_descriptors, wd, name);
14903
0
}
14904
14905
0
static void janet_watcher_remove(JanetWatcher *watcher, const char *path) {
14906
0
    if (watcher->stream == NULL) janet_panic("watcher closed");
14907
0
    Janet check = janet_table_get(watcher->watch_descriptors, janet_cstringv(path));
14908
0
    janet_assert(janet_checktype(check, JANET_NUMBER), "bad watch descriptor");
14909
0
    int watch_handle = janet_unwrap_integer(check);
14910
0
    int result;
14911
0
    do {
14912
0
        result = inotify_rm_watch(watcher->stream->handle, watch_handle);
14913
0
    } while (result != -1 && errno == EINTR);
14914
0
    if (result == -1) {
14915
0
        janet_panicv(janet_ev_lasterr());
14916
0
    }
14917
0
}
14918
14919
0
static void watcher_callback_read(JanetFiber *fiber, JanetAsyncEvent event) {
14920
0
    JanetStream *stream = fiber->ev_stream;
14921
0
    JanetWatcher *watcher = *((JanetWatcher **) fiber->ev_state);
14922
0
    char buf[1024];
14923
0
    switch (event) {
14924
0
        default:
14925
0
            break;
14926
0
        case JANET_ASYNC_EVENT_MARK:
14927
0
            janet_mark(janet_wrap_abstract(watcher));
14928
0
            break;
14929
0
        case JANET_ASYNC_EVENT_CLOSE:
14930
0
            janet_schedule(fiber, janet_wrap_nil());
14931
0
            janet_async_end(fiber);
14932
0
            break;
14933
0
        case JANET_ASYNC_EVENT_ERR: {
14934
0
            janet_schedule(fiber, janet_wrap_nil());
14935
0
            janet_async_end(fiber);
14936
0
            break;
14937
0
        }
14938
0
    read_more:
14939
0
        case JANET_ASYNC_EVENT_HUP:
14940
0
        case JANET_ASYNC_EVENT_INIT:
14941
0
        case JANET_ASYNC_EVENT_READ: {
14942
0
            Janet name = janet_wrap_nil();
14943
14944
            /* Assumption - read will never return partial events *
14945
             * From documentation:
14946
             *
14947
             * The behavior when the buffer given to read(2) is too small to
14948
             * return information about the next event depends on the kernel
14949
             * version: before Linux 2.6.21, read(2) returns 0; since Linux
14950
             * 2.6.21, read(2) fails with the error EINVAL.  Specifying a buffer
14951
             * of size
14952
             *
14953
             *     sizeof(struct inotify_event) + NAME_MAX + 1
14954
             *
14955
             * will be sufficient to read at least one event. */
14956
0
            ssize_t nread;
14957
0
            do {
14958
0
                nread = read(stream->handle, buf, sizeof(buf));
14959
0
            } while (nread == -1 && errno == EINTR);
14960
14961
            /* Check for errors - special case errors that can just be waited on to fix */
14962
0
            if (nread == -1) {
14963
0
                if (errno == EAGAIN || errno == EWOULDBLOCK) {
14964
0
                    break;
14965
0
                }
14966
0
                janet_cancel(fiber, janet_ev_lasterr());
14967
0
                fiber->ev_state = NULL;
14968
0
                janet_async_end(fiber);
14969
0
                break;
14970
0
            }
14971
0
            if (nread < (ssize_t) sizeof(struct inotify_event)) break;
14972
14973
            /* Iterate through all events read from the buffer */
14974
0
            char *cursor = buf;
14975
0
            while (cursor < buf + nread) {
14976
0
                struct inotify_event inevent;
14977
0
                memcpy(&inevent, cursor, sizeof(inevent));
14978
0
                cursor += sizeof(inevent);
14979
                /* Read path of inevent */
14980
0
                if (inevent.len) {
14981
0
                    name = janet_cstringv(cursor);
14982
0
                    cursor += inevent.len;
14983
0
                }
14984
14985
                /* Got an event */
14986
0
                Janet path = janet_table_get(watcher->watch_descriptors, janet_wrap_integer(inevent.wd));
14987
0
                JanetKV *event = janet_struct_begin(6);
14988
0
                janet_struct_put(event, janet_ckeywordv("wd"), janet_wrap_integer(inevent.wd));
14989
0
                janet_struct_put(event, janet_ckeywordv("wd-path"), path);
14990
0
                if (janet_checktype(name, JANET_NIL)) {
14991
                    /* We were watching a file directly, so path is the full path. Split into dirname / basename */
14992
0
                    JanetString spath = janet_unwrap_string(path);
14993
0
                    const uint8_t *cursor = spath + janet_string_length(spath);
14994
0
                    const uint8_t *cursor_end = cursor;
14995
0
                    while (cursor > spath && cursor[0] != '/') {
14996
0
                        cursor--;
14997
0
                    }
14998
0
                    if (cursor == spath) {
14999
0
                        janet_struct_put(event, janet_ckeywordv("dir-name"), path);
15000
0
                        janet_struct_put(event, janet_ckeywordv("file-name"), name);
15001
0
                    } else {
15002
0
                        janet_struct_put(event, janet_ckeywordv("dir-name"), janet_wrap_string(janet_string(spath, (cursor - spath))));
15003
0
                        janet_struct_put(event, janet_ckeywordv("file-name"), janet_wrap_string(janet_string(cursor + 1, (cursor_end - cursor - 1))));
15004
0
                    }
15005
0
                } else {
15006
0
                    janet_struct_put(event, janet_ckeywordv("dir-name"), path);
15007
0
                    janet_struct_put(event, janet_ckeywordv("file-name"), name);
15008
0
                }
15009
0
                janet_struct_put(event, janet_ckeywordv("cookie"), janet_wrap_integer(inevent.cookie));
15010
0
                Janet etype = janet_ckeywordv("type");
15011
0
                const JanetWatchFlagName *wfn_end = watcher_flags_linux + sizeof(watcher_flags_linux) / sizeof(watcher_flags_linux[0]);
15012
0
                for (const JanetWatchFlagName *wfn = watcher_flags_linux; wfn < wfn_end; wfn++) {
15013
0
                    if ((inevent.mask & wfn->flag) == wfn->flag) janet_struct_put(event, etype, janet_ckeywordv(wfn->name));
15014
0
                }
15015
0
                Janet eventv = janet_wrap_struct(janet_struct_end(event));
15016
15017
0
                janet_channel_give(watcher->channel, eventv);
15018
0
            }
15019
15020
            /* Read some more if possible */
15021
0
            goto read_more;
15022
0
        }
15023
0
        break;
15024
0
    }
15025
0
}
15026
15027
0
static void janet_watcher_listen(JanetWatcher *watcher) {
15028
0
    if (watcher->is_watching) janet_panic("already watching");
15029
0
    watcher->is_watching = 1;
15030
0
    JanetFunction *thunk = janet_thunk_delay(janet_wrap_nil());
15031
0
    JanetFiber *fiber = janet_fiber(thunk, 64, 0, NULL);
15032
0
    JanetWatcher **state = janet_malloc(sizeof(JanetWatcher *)); /* Gross */
15033
0
    *state = watcher;
15034
0
    janet_async_start_fiber(fiber, watcher->stream, JANET_ASYNC_LISTEN_READ, watcher_callback_read, state);
15035
0
    janet_gcroot(janet_wrap_abstract(watcher));
15036
0
}
15037
15038
0
static void janet_watcher_unlisten(JanetWatcher *watcher) {
15039
0
    if (!watcher->is_watching) return;
15040
0
    watcher->is_watching = 0;
15041
0
    janet_stream_close(watcher->stream);
15042
0
    janet_gcunroot(janet_wrap_abstract(watcher));
15043
0
}
15044
15045
#elif JANET_WINDOWS
15046
15047
#define WATCHFLAG_RECURSIVE 0x100000u
15048
15049
static const JanetWatchFlagName watcher_flags_windows[] = {
15050
    {
15051
        "all",
15052
        FILE_NOTIFY_CHANGE_ATTRIBUTES |
15053
        FILE_NOTIFY_CHANGE_CREATION |
15054
        FILE_NOTIFY_CHANGE_DIR_NAME |
15055
        FILE_NOTIFY_CHANGE_FILE_NAME |
15056
        FILE_NOTIFY_CHANGE_LAST_ACCESS |
15057
        FILE_NOTIFY_CHANGE_LAST_WRITE |
15058
        FILE_NOTIFY_CHANGE_SECURITY |
15059
        FILE_NOTIFY_CHANGE_SIZE |
15060
        WATCHFLAG_RECURSIVE
15061
    },
15062
    {"attributes", FILE_NOTIFY_CHANGE_ATTRIBUTES},
15063
    {"creation", FILE_NOTIFY_CHANGE_CREATION},
15064
    {"dir-name", FILE_NOTIFY_CHANGE_DIR_NAME},
15065
    {"file-name", FILE_NOTIFY_CHANGE_FILE_NAME},
15066
    {"last-access", FILE_NOTIFY_CHANGE_LAST_ACCESS},
15067
    {"last-write", FILE_NOTIFY_CHANGE_LAST_WRITE},
15068
    {"recursive", WATCHFLAG_RECURSIVE},
15069
    {"security", FILE_NOTIFY_CHANGE_SECURITY},
15070
    {"size", FILE_NOTIFY_CHANGE_SIZE},
15071
};
15072
15073
static uint32_t decode_watch_flags(const Janet *options, int32_t n) {
15074
    uint32_t flags = 0;
15075
    for (int32_t i = 0; i < n; i++) {
15076
        if (!(janet_checktype(options[i], JANET_KEYWORD))) {
15077
            janet_panicf("expected keyword, got %v", options[i]);
15078
        }
15079
        JanetKeyword keyw = janet_unwrap_keyword(options[i]);
15080
        const JanetWatchFlagName *result = janet_strbinsearch(watcher_flags_windows,
15081
                                           sizeof(watcher_flags_windows) / sizeof(JanetWatchFlagName),
15082
                                           sizeof(JanetWatchFlagName),
15083
                                           keyw);
15084
        if (!result) {
15085
            janet_panicf("unknown windows filewatch flag %v", options[i]);
15086
        }
15087
        flags |= result->flag;
15088
    }
15089
    return flags;
15090
}
15091
15092
static void janet_watcher_init(JanetWatcher *watcher, JanetChannel *channel, uint32_t default_flags) {
15093
    watcher->watch_descriptors = janet_table(0);
15094
    watcher->channel = channel;
15095
    watcher->default_flags = default_flags;
15096
    watcher->is_watching = 0;
15097
}
15098
15099
/* Since the file info padding includes embedded file names, we want to include more space for data.
15100
 * We also need to handle manually calculating changes if path names are too long, but ideally just avoid
15101
 * that scenario as much as possible */
15102
#define FILE_INFO_PADDING (4096 * 4)
15103
15104
typedef struct {
15105
    OVERLAPPED overlapped;
15106
    JanetStream *stream;
15107
    JanetWatcher *watcher;
15108
    JanetFiber *fiber;
15109
    JanetString dir_path;
15110
    uint32_t flags;
15111
    uint64_t buf[FILE_INFO_PADDING / sizeof(uint64_t)]; /* Ensure alignment */
15112
} OverlappedWatch;
15113
15114
#define NotifyChange FILE_NOTIFY_INFORMATION
15115
15116
static void read_dir_changes(OverlappedWatch *ow) {
15117
    BOOL result = ReadDirectoryChangesW(ow->stream->handle,
15118
                                        (NotifyChange *) ow->buf,
15119
                                        FILE_INFO_PADDING,
15120
                                        (ow->flags & WATCHFLAG_RECURSIVE) ? TRUE : FALSE,
15121
                                        ow->flags & ~WATCHFLAG_RECURSIVE,
15122
                                        NULL,
15123
                                        (OVERLAPPED *) ow,
15124
                                        NULL);
15125
    if (!result) {
15126
        janet_panicv(janet_ev_lasterr());
15127
    }
15128
}
15129
15130
static const char *watcher_actions_windows[] = {
15131
    "unknown",
15132
    "added",
15133
    "removed",
15134
    "modified",
15135
    "renamed-old",
15136
    "renamed-new",
15137
};
15138
15139
static void watcher_callback_read(JanetFiber *fiber, JanetAsyncEvent event) {
15140
    OverlappedWatch *ow = (OverlappedWatch *) fiber->ev_state;
15141
    JanetWatcher *watcher = ow->watcher;
15142
    switch (event) {
15143
        default:
15144
            break;
15145
        case JANET_ASYNC_EVENT_INIT:
15146
            janet_async_in_flight(fiber);
15147
            break;
15148
        case JANET_ASYNC_EVENT_MARK:
15149
            janet_mark(janet_wrap_abstract(ow->stream));
15150
            janet_mark(janet_wrap_fiber(ow->fiber));
15151
            janet_mark(janet_wrap_abstract(watcher));
15152
            janet_mark(janet_wrap_string(ow->dir_path));
15153
            break;
15154
        case JANET_ASYNC_EVENT_CLOSE:
15155
            janet_table_remove(ow->watcher->watch_descriptors, janet_wrap_string(ow->dir_path));
15156
            break;
15157
        case JANET_ASYNC_EVENT_ERR:
15158
        case JANET_ASYNC_EVENT_FAILED:
15159
            janet_stream_close(ow->stream);
15160
            break;
15161
        case JANET_ASYNC_EVENT_COMPLETE: {
15162
            if (!watcher->is_watching) {
15163
                janet_stream_close(ow->stream);
15164
                break;
15165
            }
15166
15167
            NotifyChange *fni = (NotifyChange *) ow->buf;
15168
15169
            while (1) {
15170
                /* Got an event */
15171
15172
                /* Extract name */
15173
                Janet filename;
15174
                if (fni->FileNameLength) {
15175
                    int32_t nbytes = (int32_t) WideCharToMultiByte(CP_UTF8, 0, fni->FileName, fni->FileNameLength / sizeof(wchar_t), NULL, 0, NULL, NULL);
15176
                    janet_assert(nbytes, "bad utf8 path");
15177
                    uint8_t *into = janet_string_begin(nbytes);
15178
                    WideCharToMultiByte(CP_UTF8, 0, fni->FileName, fni->FileNameLength / sizeof(wchar_t), (char *) into, nbytes, NULL, NULL);
15179
                    filename = janet_wrap_string(janet_string_end(into));
15180
                } else {
15181
                    filename = janet_cstringv("");
15182
                }
15183
15184
                JanetKV *event = janet_struct_begin(3);
15185
                janet_struct_put(event, janet_ckeywordv("type"), janet_ckeywordv(watcher_actions_windows[fni->Action]));
15186
                janet_struct_put(event, janet_ckeywordv("file-name"), filename);
15187
                janet_struct_put(event, janet_ckeywordv("dir-name"), janet_wrap_string(ow->dir_path));
15188
                Janet eventv = janet_wrap_struct(janet_struct_end(event));
15189
15190
                janet_channel_give(watcher->channel, eventv);
15191
15192
                /* Next event */
15193
                if (!fni->NextEntryOffset) break;
15194
                fni = (NotifyChange *)((char *)fni + fni->NextEntryOffset);
15195
            }
15196
15197
            /* Make another call to read directory changes */
15198
            read_dir_changes(ow);
15199
            janet_async_in_flight(fiber);
15200
        }
15201
        break;
15202
    }
15203
}
15204
15205
static void start_listening_ow(OverlappedWatch *ow) {
15206
    read_dir_changes(ow);
15207
    JanetStream *stream = ow->stream;
15208
    JanetFunction *thunk = janet_thunk_delay(janet_wrap_nil());
15209
    JanetFiber *fiber = janet_fiber(thunk, 64, 0, NULL);
15210
    fiber->supervisor_channel = janet_root_fiber()->supervisor_channel;
15211
    ow->fiber = fiber;
15212
    janet_async_start_fiber(fiber, stream, JANET_ASYNC_LISTEN_READ, watcher_callback_read, ow);
15213
}
15214
15215
static void janet_watcher_add(JanetWatcher *watcher, const char *path, uint32_t flags) {
15216
    HANDLE handle = CreateFileA(path,
15217
                                FILE_LIST_DIRECTORY | GENERIC_READ,
15218
                                FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
15219
                                NULL,
15220
                                OPEN_EXISTING,
15221
                                FILE_FLAG_OVERLAPPED | FILE_FLAG_BACKUP_SEMANTICS,
15222
                                NULL);
15223
    if (handle == INVALID_HANDLE_VALUE) {
15224
        janet_panicv(janet_ev_lasterr());
15225
    }
15226
    JanetStream *stream = janet_stream(handle, JANET_STREAM_READABLE, NULL);
15227
    OverlappedWatch *ow = janet_malloc(sizeof(OverlappedWatch));
15228
    memset(ow, 0, sizeof(OverlappedWatch));
15229
    ow->stream = stream;
15230
    ow->dir_path = janet_cstring(path);
15231
    ow->fiber = NULL;
15232
    Janet pathv = janet_wrap_string(ow->dir_path);
15233
    ow->flags = flags | watcher->default_flags;
15234
    ow->watcher = watcher;
15235
    ow->overlapped.hEvent = CreateEvent(NULL, FALSE, 0, NULL); /* Do we need this */
15236
    Janet streamv = janet_wrap_pointer(ow);
15237
    janet_table_put(watcher->watch_descriptors, pathv, streamv);
15238
    if (watcher->is_watching) {
15239
        start_listening_ow(ow);
15240
    }
15241
}
15242
15243
static void janet_watcher_remove(JanetWatcher *watcher, const char *path) {
15244
    Janet pathv = janet_cstringv(path);
15245
    Janet streamv = janet_table_get(watcher->watch_descriptors, pathv);
15246
    if (janet_checktype(streamv, JANET_NIL)) {
15247
        janet_panicf("path %v is not being watched", pathv);
15248
    }
15249
    janet_table_remove(watcher->watch_descriptors, pathv);
15250
    OverlappedWatch *ow = janet_unwrap_pointer(streamv);
15251
    janet_stream_close(ow->stream);
15252
}
15253
15254
static void janet_watcher_listen(JanetWatcher *watcher) {
15255
    if (watcher->is_watching) janet_panic("already watching");
15256
    watcher->is_watching = 1;
15257
    for (int32_t i = 0; i < watcher->watch_descriptors->capacity; i++) {
15258
        const JanetKV *kv = watcher->watch_descriptors->data + i;
15259
        if (!janet_checktype(kv->value, JANET_POINTER)) continue;
15260
        OverlappedWatch *ow = janet_unwrap_pointer(kv->value);
15261
        start_listening_ow(ow);
15262
    }
15263
    janet_gcroot(janet_wrap_abstract(watcher));
15264
}
15265
15266
static void janet_watcher_unlisten(JanetWatcher *watcher) {
15267
    if (!watcher->is_watching) return;
15268
    watcher->is_watching = 0;
15269
    for (int32_t i = 0; i < watcher->watch_descriptors->capacity; i++) {
15270
        const JanetKV *kv = watcher->watch_descriptors->data + i;
15271
        if (!janet_checktype(kv->value, JANET_POINTER)) continue;
15272
        OverlappedWatch *ow = janet_unwrap_pointer(kv->value);
15273
        janet_stream_close(ow->stream);
15274
    }
15275
    janet_table_clear(watcher->watch_descriptors);
15276
    janet_gcunroot(janet_wrap_abstract(watcher));
15277
}
15278
15279
#else
15280
15281
/* Default implementation */
15282
15283
static uint32_t decode_watch_flags(const Janet *options, int32_t n) {
15284
    (void) options;
15285
    (void) n;
15286
    return 0;
15287
}
15288
15289
static void janet_watcher_init(JanetWatcher *watcher, JanetChannel *channel, uint32_t default_flags) {
15290
    (void) watcher;
15291
    (void) channel;
15292
    (void) default_flags;
15293
    janet_panic("filewatch not supported on this platform");
15294
}
15295
15296
static void janet_watcher_add(JanetWatcher *watcher, const char *path, uint32_t flags) {
15297
    (void) watcher;
15298
    (void) flags;
15299
    (void) path;
15300
    janet_panic("nyi");
15301
}
15302
15303
static void janet_watcher_remove(JanetWatcher *watcher, const char *path) {
15304
    (void) watcher;
15305
    (void) path;
15306
    janet_panic("nyi");
15307
}
15308
15309
static void janet_watcher_listen(JanetWatcher *watcher) {
15310
    (void) watcher;
15311
    janet_panic("nyi");
15312
}
15313
15314
static void janet_watcher_unlisten(JanetWatcher *watcher) {
15315
    (void) watcher;
15316
    janet_panic("nyi");
15317
}
15318
15319
#endif
15320
15321
/* C Functions */
15322
15323
0
static int janet_filewatch_mark(void *p, size_t s) {
15324
0
    JanetWatcher *watcher = (JanetWatcher *) p;
15325
0
    (void) s;
15326
0
    if (watcher->channel == NULL) return 0; /* Incomplete initialization */
15327
#ifdef JANET_WINDOWS
15328
    for (int32_t i = 0; i < watcher->watch_descriptors->capacity; i++) {
15329
        const JanetKV *kv = watcher->watch_descriptors->data + i;
15330
        if (!janet_checktype(kv->value, JANET_POINTER)) continue;
15331
        OverlappedWatch *ow = janet_unwrap_pointer(kv->value);
15332
        janet_mark(janet_wrap_fiber(ow->fiber));
15333
        janet_mark(janet_wrap_abstract(ow->stream));
15334
        janet_mark(janet_wrap_string(ow->dir_path));
15335
    }
15336
#else
15337
0
    janet_mark(janet_wrap_abstract(watcher->stream));
15338
0
#endif
15339
0
    janet_mark(janet_wrap_abstract(watcher->channel));
15340
0
    janet_mark(janet_wrap_table(watcher->watch_descriptors));
15341
0
    return 0;
15342
0
}
15343
15344
static const JanetAbstractType janet_filewatch_at = {
15345
    "filewatch/watcher",
15346
    NULL,
15347
    janet_filewatch_mark,
15348
    JANET_ATEND_GCMARK
15349
};
15350
15351
JANET_CORE_FN(cfun_filewatch_make,
15352
              "(filewatch/new channel &opt default-flags)",
15353
              "Create a new filewatcher that will give events to a channel channel. See `filewatch/add` for available flags.\n\n"
15354
              "When an event is triggered by the filewatcher, a struct containing information will be given to channel as with `ev/give`. "
15355
              "The contents of the channel depend on the OS, but will contain some common keys:\n\n"
15356
              "* `:type` -- the type of the event that was raised.\n\n"
15357
              "* `:file-name` -- the base file name of the file that triggered the event.\n\n"
15358
              "* `:dir-name` -- the directory name of the file that triggered the event.\n\n"
15359
              "Events also will contain keys specific to the host OS.\n\n"
15360
              "Windows has no extra properties on events.\n\n"
15361
              "Linux has the following extra properties on events:\n\n"
15362
              "* `:wd` -- the integer key returned by `filewatch/add` for the path that triggered this.\n\n"
15363
              "* `:wd-path` -- the string path for watched directory of file. For files, will be the same as `:file-name`, and for directories, will be the same as `:dir-name`.\n\n"
15364
              "* `:cookie` -- a randomized integer used to associate related events, such as :moved-from and :moved-to events.\n\n"
15365
0
              "") {
15366
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
15367
0
    janet_arity(argc, 1, -1);
15368
0
    JanetChannel *channel = janet_getchannel(argv, 0);
15369
0
    JanetWatcher *watcher = janet_abstract(&janet_filewatch_at, sizeof(JanetWatcher));
15370
0
    uint32_t default_flags = decode_watch_flags(argv + 1, argc - 1);
15371
0
    janet_watcher_init(watcher, channel, default_flags);
15372
0
    return janet_wrap_abstract(watcher);
15373
0
}
15374
15375
JANET_CORE_FN(cfun_filewatch_add,
15376
              "(filewatch/add watcher path &opt flags)",
15377
              "Add a path to the watcher. Available flags depend on the current OS, and are as follows:\n\n"
15378
              "Windows/MINGW (flags correspond to `FILE_NOTIFY_CHANGE_*` flags in win32 documentation):\n\n"
15379
              "* `:all` - trigger an event for all of the below triggers.\n\n"
15380
              "* `:attributes` - `FILE_NOTIFY_CHANGE_ATTRIBUTES`\n\n"
15381
              "* `:creation` - `FILE_NOTIFY_CHANGE_CREATION`\n\n"
15382
              "* `:dir-name` - `FILE_NOTIFY_CHANGE_DIR_NAME`\n\n"
15383
              "* `:last-access` - `FILE_NOTIFY_CHANGE_LAST_ACCESS`\n\n"
15384
              "* `:last-write` - `FILE_NOTIFY_CHANGE_LAST_WRITE`\n\n"
15385
              "* `:security` - `FILE_NOTIFY_CHANGE_SECURITY`\n\n"
15386
              "* `:size` - `FILE_NOTIFY_CHANGE_SIZE`\n\n"
15387
              "* `:recursive` - watch subdirectories recursively\n\n"
15388
              "Linux (flags correspond to `IN_*` flags from <sys/inotify.h>):\n\n"
15389
              "* `:access` - `IN_ACCESS`\n\n"
15390
              "* `:all` - `IN_ALL_EVENTS`\n\n"
15391
              "* `:attrib` - `IN_ATTRIB`\n\n"
15392
              "* `:close-nowrite` - `IN_CLOSE_NOWRITE`\n\n"
15393
              "* `:close-write` - `IN_CLOSE_WRITE`\n\n"
15394
              "* `:create` - `IN_CREATE`\n\n"
15395
              "* `:delete` - `IN_DELETE`\n\n"
15396
              "* `:delete-self` - `IN_DELETE_SELF`\n\n"
15397
              "* `:ignored` - `IN_IGNORED`\n\n"
15398
              "* `:modify` - `IN_MODIFY`\n\n"
15399
              "* `:move-self` - `IN_MOVE_SELF`\n\n"
15400
              "* `:moved-from` - `IN_MOVED_FROM`\n\n"
15401
              "* `:moved-to` - `IN_MOVED_TO`\n\n"
15402
              "* `:open` - `IN_OPEN`\n\n"
15403
              "* `:q-overflow` - `IN_Q_OVERFLOW`\n\n"
15404
              "* `:unmount` - `IN_UNMOUNT`\n\n\n"
15405
              "On Windows, events will have the following possible types:\n\n"
15406
              "* `:unknown`\n\n"
15407
              "* `:added`\n\n"
15408
              "* `:removed`\n\n"
15409
              "* `:modified`\n\n"
15410
              "* `:renamed-old`\n\n"
15411
              "* `:renamed-new`\n\n"
15412
              "On Linux, events will have a `:type` corresponding to the possible flags, excluding `:all`.\n"
15413
0
              "") {
15414
0
    janet_arity(argc, 2, -1);
15415
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15416
0
    const char *path = janet_getcstring(argv, 1);
15417
0
    uint32_t flags = watcher->default_flags | decode_watch_flags(argv + 2, argc - 2);
15418
0
    janet_watcher_add(watcher, path, flags);
15419
0
    return argv[0];
15420
0
}
15421
15422
JANET_CORE_FN(cfun_filewatch_remove,
15423
              "(filewatch/remove watcher path)",
15424
0
              "Remove a path from the watcher.") {
15425
0
    janet_fixarity(argc, 2);
15426
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15427
0
    const char *path = janet_getcstring(argv, 1);
15428
0
    janet_watcher_remove(watcher, path);
15429
0
    return argv[0];
15430
0
}
15431
15432
JANET_CORE_FN(cfun_filewatch_listen,
15433
              "(filewatch/listen watcher)",
15434
0
              "Listen for changes in the watcher.") {
15435
0
    janet_fixarity(argc, 1);
15436
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15437
0
    janet_watcher_listen(watcher);
15438
0
    return janet_wrap_nil();
15439
0
}
15440
15441
JANET_CORE_FN(cfun_filewatch_unlisten,
15442
              "(filewatch/unlisten watcher)",
15443
0
              "Stop listening for changes on a given watcher.") {
15444
0
    janet_fixarity(argc, 1);
15445
0
    JanetWatcher *watcher = janet_getabstract(argv, 0, &janet_filewatch_at);
15446
0
    janet_watcher_unlisten(watcher);
15447
0
    return janet_wrap_nil();
15448
0
}
15449
15450
/* Module entry point */
15451
0
void janet_lib_filewatch(JanetTable *env) {
15452
0
    JanetRegExt cfuns[] = {
15453
0
        JANET_CORE_REG("filewatch/new", cfun_filewatch_make),
15454
0
        JANET_CORE_REG("filewatch/add", cfun_filewatch_add),
15455
0
        JANET_CORE_REG("filewatch/remove", cfun_filewatch_remove),
15456
0
        JANET_CORE_REG("filewatch/listen", cfun_filewatch_listen),
15457
0
        JANET_CORE_REG("filewatch/unlisten", cfun_filewatch_unlisten),
15458
0
        JANET_REG_END
15459
0
    };
15460
0
    janet_core_cfuns_ext(env, NULL, cfuns);
15461
0
}
15462
15463
#endif
15464
#endif
15465
15466
15467
/* src/core/gc.c */
15468
#line 0 "src/core/gc.c"
15469
15470
/*
15471
* Copyright (c) 2025 Calvin Rose
15472
*
15473
* Permission is hereby granted, free of charge, to any person obtaining a copy
15474
* of this software and associated documentation files (the "Software"), to
15475
* deal in the Software without restriction, including without limitation the
15476
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15477
* sell copies of the Software, and to permit persons to whom the Software is
15478
* furnished to do so, subject to the following conditions:
15479
*
15480
* The above copyright notice and this permission notice shall be included in
15481
* all copies or substantial portions of the Software.
15482
*
15483
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15484
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15485
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15486
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15487
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
15488
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
15489
* IN THE SOFTWARE.
15490
*/
15491
15492
#ifndef JANET_AMALG
15493
#include "features.h"
15494
#include <janet.h>
15495
#include "state.h"
15496
#include "symcache.h"
15497
#include "gc.h"
15498
#include "util.h"
15499
#include "fiber.h"
15500
#include "vector.h"
15501
#endif
15502
15503
/* Helpers for marking the various gc types */
15504
static void janet_mark_funcenv(JanetFuncEnv *env);
15505
static void janet_mark_funcdef(JanetFuncDef *def);
15506
static void janet_mark_function(JanetFunction *func);
15507
static void janet_mark_array(JanetArray *array);
15508
static void janet_mark_table(JanetTable *table);
15509
static void janet_mark_struct(const JanetKV *st);
15510
static void janet_mark_tuple(const Janet *tuple);
15511
static void janet_mark_buffer(JanetBuffer *buffer);
15512
static void janet_mark_string(const uint8_t *str);
15513
static void janet_mark_fiber(JanetFiber *fiber);
15514
static void janet_mark_abstract(void *adata);
15515
15516
/* Local state that is only temporary for gc */
15517
static JANET_THREAD_LOCAL uint32_t depth = JANET_RECURSION_GUARD;
15518
static JANET_THREAD_LOCAL size_t orig_rootcount;
15519
15520
/* Hint to the GC that we may need to collect */
15521
2.38M
void janet_gcpressure(size_t s) {
15522
2.38M
    janet_vm.next_collection += s;
15523
2.38M
}
15524
15525
/* Mark a value */
15526
0
void janet_mark(Janet x) {
15527
0
    if (depth) {
15528
0
        depth--;
15529
0
        switch (janet_type(x)) {
15530
0
            default:
15531
0
                break;
15532
0
            case JANET_STRING:
15533
0
            case JANET_KEYWORD:
15534
0
            case JANET_SYMBOL:
15535
0
                janet_mark_string(janet_unwrap_string(x));
15536
0
                break;
15537
0
            case JANET_FUNCTION:
15538
0
                janet_mark_function(janet_unwrap_function(x));
15539
0
                break;
15540
0
            case JANET_ARRAY:
15541
0
                janet_mark_array(janet_unwrap_array(x));
15542
0
                break;
15543
0
            case JANET_TABLE:
15544
0
                janet_mark_table(janet_unwrap_table(x));
15545
0
                break;
15546
0
            case JANET_STRUCT:
15547
0
                janet_mark_struct(janet_unwrap_struct(x));
15548
0
                break;
15549
0
            case JANET_TUPLE:
15550
0
                janet_mark_tuple(janet_unwrap_tuple(x));
15551
0
                break;
15552
0
            case JANET_BUFFER:
15553
0
                janet_mark_buffer(janet_unwrap_buffer(x));
15554
0
                break;
15555
0
            case JANET_FIBER:
15556
0
                janet_mark_fiber(janet_unwrap_fiber(x));
15557
0
                break;
15558
0
            case JANET_ABSTRACT:
15559
0
                janet_mark_abstract(janet_unwrap_abstract(x));
15560
0
                break;
15561
0
        }
15562
0
        depth++;
15563
0
    } else {
15564
0
        janet_gcroot(x);
15565
0
    }
15566
0
}
15567
15568
0
static void janet_mark_string(const uint8_t *str) {
15569
0
    janet_gc_mark(janet_string_head(str));
15570
0
}
15571
15572
0
static void janet_mark_buffer(JanetBuffer *buffer) {
15573
0
    janet_gc_mark(buffer);
15574
0
}
15575
15576
0
static void janet_mark_abstract(void *adata) {
15577
0
#ifdef JANET_EV
15578
    /* Check if abstract type is a threaded abstract type. If it is, marking means
15579
     * updating the threaded_abstract table. */
15580
0
    if ((janet_abstract_head(adata)->gc.flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_THREADED_ABSTRACT) {
15581
0
        janet_table_put(&janet_vm.threaded_abstracts, janet_wrap_abstract(adata), janet_wrap_true());
15582
0
        return;
15583
0
    }
15584
0
#endif
15585
0
    if (janet_gc_reachable(janet_abstract_head(adata)))
15586
0
        return;
15587
0
    janet_gc_mark(janet_abstract_head(adata));
15588
0
    if (janet_abstract_head(adata)->type->gcmark) {
15589
0
        janet_abstract_head(adata)->type->gcmark(adata, janet_abstract_size(adata));
15590
0
    }
15591
0
}
15592
15593
/* Mark a bunch of items in memory */
15594
0
static void janet_mark_many(const Janet *values, int32_t n) {
15595
0
    if (values == NULL)
15596
0
        return;
15597
0
    const Janet *end = values + n;
15598
0
    while (values < end) {
15599
0
        janet_mark(*values);
15600
0
        values += 1;
15601
0
    }
15602
0
}
15603
15604
/* Mark a bunch of key values items in memory */
15605
0
static void janet_mark_keys(const JanetKV *kvs, int32_t n) {
15606
0
    const JanetKV *end = kvs + n;
15607
0
    while (kvs < end) {
15608
0
        janet_mark(kvs->key);
15609
0
        kvs++;
15610
0
    }
15611
0
}
15612
15613
/* Mark a bunch of key values items in memory */
15614
0
static void janet_mark_values(const JanetKV *kvs, int32_t n) {
15615
0
    const JanetKV *end = kvs + n;
15616
0
    while (kvs < end) {
15617
0
        janet_mark(kvs->value);
15618
0
        kvs++;
15619
0
    }
15620
0
}
15621
15622
/* Mark a bunch of key values items in memory */
15623
0
static void janet_mark_kvs(const JanetKV *kvs, int32_t n) {
15624
0
    const JanetKV *end = kvs + n;
15625
0
    while (kvs < end) {
15626
0
        janet_mark(kvs->key);
15627
0
        janet_mark(kvs->value);
15628
0
        kvs++;
15629
0
    }
15630
0
}
15631
15632
0
static void janet_mark_array(JanetArray *array) {
15633
0
    if (janet_gc_reachable(array))
15634
0
        return;
15635
0
    janet_gc_mark(array);
15636
0
    if (janet_gc_type((JanetGCObject *) array) == JANET_MEMORY_ARRAY) {
15637
0
        janet_mark_many(array->data, array->count);
15638
0
    }
15639
0
}
15640
15641
0
static void janet_mark_table(JanetTable *table) {
15642
0
recur: /* Manual tail recursion */
15643
0
    if (janet_gc_reachable(table))
15644
0
        return;
15645
0
    janet_gc_mark(table);
15646
0
    enum JanetMemoryType memtype = janet_gc_type(table);
15647
0
    if (memtype == JANET_MEMORY_TABLE_WEAKK) {
15648
0
        janet_mark_values(table->data, table->capacity);
15649
0
    } else if (memtype == JANET_MEMORY_TABLE_WEAKV) {
15650
0
        janet_mark_keys(table->data, table->capacity);
15651
0
    } else if (memtype == JANET_MEMORY_TABLE) {
15652
0
        janet_mark_kvs(table->data, table->capacity);
15653
0
    }
15654
    /* do nothing for JANET_MEMORY_TABLE_WEAKKV */
15655
0
    if (table->proto) {
15656
0
        table = table->proto;
15657
0
        goto recur;
15658
0
    }
15659
0
}
15660
15661
0
static void janet_mark_struct(const JanetKV *st) {
15662
0
recur:
15663
0
    if (janet_gc_reachable(janet_struct_head(st)))
15664
0
        return;
15665
0
    janet_gc_mark(janet_struct_head(st));
15666
0
    janet_mark_kvs(st, janet_struct_capacity(st));
15667
0
    st = janet_struct_proto(st);
15668
0
    if (st) goto recur;
15669
0
}
15670
15671
0
static void janet_mark_tuple(const Janet *tuple) {
15672
0
    if (janet_gc_reachable(janet_tuple_head(tuple)))
15673
0
        return;
15674
0
    janet_gc_mark(janet_tuple_head(tuple));
15675
0
    janet_mark_many(tuple, janet_tuple_length(tuple));
15676
0
}
15677
15678
/* Helper to mark function environments */
15679
0
static void janet_mark_funcenv(JanetFuncEnv *env) {
15680
0
    if (janet_gc_reachable(env))
15681
0
        return;
15682
0
    janet_gc_mark(env);
15683
    /* If closure env references a dead fiber, we can just copy out the stack frame we need so
15684
     * we don't need to keep around the whole dead fiber. */
15685
0
    janet_env_maybe_detach(env);
15686
0
    if (env->offset > 0) {
15687
        /* On stack */
15688
0
        janet_mark_fiber(env->as.fiber);
15689
0
    } else {
15690
        /* Not on stack */
15691
0
        janet_mark_many(env->as.values, env->length);
15692
0
    }
15693
0
}
15694
15695
/* GC helper to mark a FuncDef */
15696
0
static void janet_mark_funcdef(JanetFuncDef *def) {
15697
0
    int32_t i;
15698
0
    if (janet_gc_reachable(def))
15699
0
        return;
15700
0
    janet_gc_mark(def);
15701
0
    janet_mark_many(def->constants, def->constants_length);
15702
0
    for (i = 0; i < def->defs_length; ++i) {
15703
0
        janet_mark_funcdef(def->defs[i]);
15704
0
    }
15705
0
    if (def->source)
15706
0
        janet_mark_string(def->source);
15707
0
    if (def->name)
15708
0
        janet_mark_string(def->name);
15709
0
    if (def->symbolmap) {
15710
0
        for (int i = 0; i < def->symbolmap_length; i++) {
15711
0
            janet_mark_string(def->symbolmap[i].symbol);
15712
0
        }
15713
0
    }
15714
15715
0
}
15716
15717
0
static void janet_mark_function(JanetFunction *func) {
15718
0
    int32_t i;
15719
0
    int32_t numenvs;
15720
0
    if (janet_gc_reachable(func))
15721
0
        return;
15722
0
    janet_gc_mark(func);
15723
0
    if (NULL != func->def) {
15724
        /* this should always be true, except if function is only partially constructed */
15725
0
        numenvs = func->def->environments_length;
15726
0
        for (i = 0; i < numenvs; ++i) {
15727
0
            janet_mark_funcenv(func->envs[i]);
15728
0
        }
15729
0
        janet_mark_funcdef(func->def);
15730
0
    }
15731
0
}
15732
15733
0
static void janet_mark_fiber(JanetFiber *fiber) {
15734
0
    int32_t i, j;
15735
0
    JanetStackFrame *frame;
15736
0
recur:
15737
0
    if (janet_gc_reachable(fiber))
15738
0
        return;
15739
0
    janet_gc_mark(fiber);
15740
15741
0
    janet_mark(fiber->last_value);
15742
15743
    /* Mark values on the argument stack */
15744
0
    janet_mark_many(fiber->data + fiber->stackstart,
15745
0
                    fiber->stacktop - fiber->stackstart);
15746
15747
0
    i = fiber->frame;
15748
0
    j = fiber->stackstart - JANET_FRAME_SIZE;
15749
0
    while (i > 0) {
15750
0
        frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
15751
0
        if (NULL != frame->func)
15752
0
            janet_mark_function(frame->func);
15753
0
        if (NULL != frame->env)
15754
0
            janet_mark_funcenv(frame->env);
15755
        /* Mark all values in the stack frame */
15756
0
        janet_mark_many(fiber->data + i, j - i);
15757
0
        j = i - JANET_FRAME_SIZE;
15758
0
        i = frame->prevframe;
15759
0
    }
15760
15761
0
    if (fiber->env)
15762
0
        janet_mark_table(fiber->env);
15763
15764
0
#ifdef JANET_EV
15765
0
    if (fiber->supervisor_channel) {
15766
0
        janet_mark_abstract(fiber->supervisor_channel);
15767
0
    }
15768
0
    if (fiber->ev_stream) {
15769
0
        janet_mark_abstract(fiber->ev_stream);
15770
0
    }
15771
0
    if (fiber->ev_callback) {
15772
0
        fiber->ev_callback(fiber, JANET_ASYNC_EVENT_MARK);
15773
0
    }
15774
0
#endif
15775
15776
    /* Explicit tail recursion */
15777
0
    if (fiber->child) {
15778
0
        fiber = fiber->child;
15779
0
        goto recur;
15780
0
    }
15781
0
}
15782
15783
/* Deinitialize a block of memory */
15784
9.16M
static void janet_deinit_block(JanetGCObject *mem) {
15785
9.16M
    switch (mem->flags & JANET_MEM_TYPEBITS) {
15786
6.55M
        default:
15787
6.55M
        case JANET_MEMORY_FUNCTION:
15788
6.55M
            break; /* Do nothing for non gc types */
15789
26.4k
        case JANET_MEMORY_SYMBOL:
15790
26.4k
            janet_symbol_deinit(((JanetStringHead *) mem)->data);
15791
26.4k
            break;
15792
4.63k
        case JANET_MEMORY_ARRAY:
15793
4.63k
        case JANET_MEMORY_ARRAY_WEAK:
15794
4.63k
            janet_free(((JanetArray *) mem)->data);
15795
4.63k
            break;
15796
112k
        case JANET_MEMORY_TABLE:
15797
112k
        case JANET_MEMORY_TABLE_WEAKK:
15798
112k
        case JANET_MEMORY_TABLE_WEAKV:
15799
112k
        case JANET_MEMORY_TABLE_WEAKKV:
15800
112k
            janet_free(((JanetTable *) mem)->data);
15801
112k
            break;
15802
0
        case JANET_MEMORY_FIBER: {
15803
0
            JanetFiber *f = (JanetFiber *)mem;
15804
0
#ifdef JANET_EV
15805
0
            if (f->ev_state && !(f->flags & JANET_FIBER_EV_FLAG_IN_FLIGHT)) {
15806
0
                janet_ev_dec_refcount();
15807
0
                janet_free(f->ev_state);
15808
0
            }
15809
0
#endif
15810
0
            janet_free(f->data);
15811
0
        }
15812
0
        break;
15813
2.38M
        case JANET_MEMORY_BUFFER:
15814
2.38M
            janet_buffer_deinit((JanetBuffer *) mem);
15815
2.38M
            break;
15816
82.8k
        case JANET_MEMORY_ABSTRACT: {
15817
82.8k
            JanetAbstractHead *head = (JanetAbstractHead *)mem;
15818
82.8k
            if (head->type->gcperthread) {
15819
0
                janet_assert(!head->type->gcperthread(head->data, head->size), "per-thread finalizer failed");
15820
0
            }
15821
82.8k
            if (head->type->gc) {
15822
0
                janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
15823
0
            }
15824
82.8k
        }
15825
82.8k
        break;
15826
82.8k
        case JANET_MEMORY_FUNCENV: {
15827
0
            JanetFuncEnv *env = (JanetFuncEnv *)mem;
15828
0
            if (0 == env->offset)
15829
0
                janet_free(env->as.values);
15830
0
        }
15831
0
        break;
15832
0
        case JANET_MEMORY_FUNCDEF: {
15833
0
            JanetFuncDef *def = (JanetFuncDef *)mem;
15834
            /* TODO - get this all with one alloc and one free */
15835
0
            janet_free(def->defs);
15836
0
            janet_free(def->environments);
15837
0
            janet_free(def->constants);
15838
0
            janet_free(def->bytecode);
15839
0
            janet_free(def->sourcemap);
15840
0
            janet_free(def->closure_bitset);
15841
0
            janet_free(def->symbolmap);
15842
0
        }
15843
0
        break;
15844
9.16M
    }
15845
9.16M
}
15846
15847
/* Check that a value x has been visited in the mark phase */
15848
0
static int janet_check_liveref(Janet x) {
15849
0
    switch (janet_type(x)) {
15850
0
        default:
15851
0
            return 1;
15852
0
        case JANET_ARRAY:
15853
0
        case JANET_TABLE:
15854
0
        case JANET_FUNCTION:
15855
0
        case JANET_BUFFER:
15856
0
        case JANET_FIBER:
15857
0
            return janet_gc_reachable(janet_unwrap_pointer(x));
15858
0
        case JANET_STRING:
15859
0
        case JANET_SYMBOL:
15860
0
        case JANET_KEYWORD:
15861
0
            return janet_gc_reachable(janet_string_head(janet_unwrap_string(x)));
15862
0
        case JANET_ABSTRACT:
15863
0
            return janet_gc_reachable(janet_abstract_head(janet_unwrap_abstract(x)));
15864
0
        case JANET_TUPLE:
15865
0
            return janet_gc_reachable(janet_tuple_head(janet_unwrap_tuple(x)));
15866
0
        case JANET_STRUCT:
15867
0
            return janet_gc_reachable(janet_struct_head(janet_unwrap_struct(x)));
15868
0
    }
15869
0
}
15870
15871
/* Iterate over all allocated memory, and free memory that is not
15872
 * marked as reachable. Flip the gc color flag for next sweep. */
15873
0
void janet_sweep() {
15874
0
    JanetGCObject *previous = NULL;
15875
0
    JanetGCObject *current = janet_vm.weak_blocks;
15876
0
    JanetGCObject *next;
15877
15878
    /* Sweep weak heap to drop weak refs */
15879
0
    while (NULL != current) {
15880
0
        next = current->data.next;
15881
0
        if (current->flags & (JANET_MEM_REACHABLE | JANET_MEM_DISABLED)) {
15882
            /* Check for dead references */
15883
0
            enum JanetMemoryType type = janet_gc_type(current);
15884
0
            if (type == JANET_MEMORY_ARRAY_WEAK) {
15885
0
                JanetArray *array = (JanetArray *) current;
15886
0
                for (uint32_t i = 0; i < (uint32_t) array->count; i++) {
15887
0
                    if (!janet_check_liveref(array->data[i])) {
15888
0
                        array->data[i] = janet_wrap_nil();
15889
0
                    }
15890
0
                }
15891
0
            } else {
15892
0
                JanetTable *table = (JanetTable *) current;
15893
0
                int check_values = (type == JANET_MEMORY_TABLE_WEAKV) || (type == JANET_MEMORY_TABLE_WEAKKV);
15894
0
                int check_keys = (type == JANET_MEMORY_TABLE_WEAKK) || (type == JANET_MEMORY_TABLE_WEAKKV);
15895
0
                JanetKV *end = table->data + table->capacity;
15896
0
                JanetKV *kvs = table->data;
15897
0
                while (kvs < end) {
15898
0
                    int drop = 0;
15899
0
                    if (check_keys && !janet_check_liveref(kvs->key)) drop = 1;
15900
0
                    if (check_values && !janet_check_liveref(kvs->value)) drop = 1;
15901
0
                    if (drop) {
15902
                        /* Inlined from janet_table_remove without search */
15903
0
                        table->count--;
15904
0
                        table->deleted++;
15905
0
                        kvs->key = janet_wrap_nil();
15906
0
                        kvs->value = janet_wrap_false();
15907
0
                    }
15908
0
                    kvs++;
15909
0
                }
15910
0
            }
15911
0
        }
15912
0
        current = next;
15913
0
    }
15914
15915
    /* Sweep weak heap to free blocks */
15916
0
    previous = NULL;
15917
0
    current = janet_vm.weak_blocks;
15918
0
    while (NULL != current) {
15919
0
        next = current->data.next;
15920
0
        if (current->flags & (JANET_MEM_REACHABLE | JANET_MEM_DISABLED)) {
15921
0
            previous = current;
15922
0
            current->flags &= ~JANET_MEM_REACHABLE;
15923
0
        } else {
15924
0
            janet_vm.block_count--;
15925
0
            janet_deinit_block(current);
15926
0
            if (NULL != previous) {
15927
0
                previous->data.next = next;
15928
0
            } else {
15929
0
                janet_vm.weak_blocks = next;
15930
0
            }
15931
0
            janet_free(current);
15932
0
        }
15933
0
        current = next;
15934
0
    }
15935
15936
    /* Sweep main heap to free blocks */
15937
0
    previous = NULL;
15938
0
    current = janet_vm.blocks;
15939
0
    while (NULL != current) {
15940
0
        next = current->data.next;
15941
0
        if (current->flags & (JANET_MEM_REACHABLE | JANET_MEM_DISABLED)) {
15942
0
            previous = current;
15943
0
            current->flags &= ~JANET_MEM_REACHABLE;
15944
0
        } else {
15945
0
            janet_vm.block_count--;
15946
0
            janet_deinit_block(current);
15947
0
            if (NULL != previous) {
15948
0
                previous->data.next = next;
15949
0
            } else {
15950
0
                janet_vm.blocks = next;
15951
0
            }
15952
0
            janet_free(current);
15953
0
        }
15954
0
        current = next;
15955
0
    }
15956
15957
0
#ifdef JANET_EV
15958
    /* Sweep threaded abstract types for references to decrement */
15959
0
    JanetKV *items = janet_vm.threaded_abstracts.data;
15960
0
    for (int32_t i = 0; i < janet_vm.threaded_abstracts.capacity; i++) {
15961
0
        if (janet_checktype(items[i].key, JANET_ABSTRACT)) {
15962
15963
            /* If item was not visited during the mark phase, then this
15964
             * abstract type isn't present in the heap and needs its refcount
15965
             * decremented, and shouuld be removed from table. If the refcount is
15966
             * then 0, the item will be collected. This ensures that only one interpreter
15967
             * will clean up the threaded abstract. */
15968
15969
            /* If not visited... */
15970
0
            if (!janet_truthy(items[i].value)) {
15971
0
                void *abst = janet_unwrap_abstract(items[i].key);
15972
0
                JanetAbstractHead *head = janet_abstract_head(abst);
15973
0
                if (head->type->gcperthread) {
15974
0
                    janet_assert(!head->type->gcperthread(head->data, head->size), "per-thread finalizer failed");
15975
0
                }
15976
0
                if (0 == janet_abstract_decref(abst)) {
15977
                    /* Run finalizer */
15978
0
                    if (head->type->gc) {
15979
0
                        janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
15980
0
                    }
15981
                    /* Free memory */
15982
0
                    janet_free(janet_abstract_head(abst));
15983
0
                }
15984
15985
                /* Mark as tombstone in place */
15986
0
                items[i].key = janet_wrap_nil();
15987
0
                items[i].value = janet_wrap_false();
15988
0
                janet_vm.threaded_abstracts.deleted++;
15989
0
                janet_vm.threaded_abstracts.count--;
15990
0
            }
15991
15992
            /* Reset for next sweep */
15993
0
            items[i].value = janet_wrap_false();
15994
0
        }
15995
0
    }
15996
0
#endif
15997
0
}
15998
15999
/* Allocate some memory that is tracked for garbage collection */
16000
9.16M
void *janet_gcalloc(enum JanetMemoryType type, size_t size) {
16001
9.16M
    JanetGCObject *mem;
16002
16003
    /* Make sure everything is inited */
16004
9.16M
    janet_assert(NULL != janet_vm.cache, "please initialize janet before use");
16005
9.16M
    mem = janet_malloc(size);
16006
16007
    /* Check for bad malloc */
16008
9.16M
    if (NULL == mem) {
16009
0
        JANET_OUT_OF_MEMORY;
16010
0
    }
16011
16012
    /* Configure block */
16013
9.16M
    mem->flags = type;
16014
16015
    /* Prepend block to heap list */
16016
9.16M
    janet_vm.next_collection += size;
16017
9.16M
    if (type < JANET_MEMORY_TABLE_WEAKK) {
16018
        /* normal heap */
16019
9.16M
        mem->data.next = janet_vm.blocks;
16020
9.16M
        janet_vm.blocks = mem;
16021
9.16M
    } else {
16022
        /* weak heap */
16023
0
        mem->data.next = janet_vm.weak_blocks;
16024
0
        janet_vm.weak_blocks = mem;
16025
0
    }
16026
9.16M
    janet_vm.block_count++;
16027
16028
9.16M
    return (void *)mem;
16029
9.16M
}
16030
16031
0
static void free_one_scratch(JanetScratch *s) {
16032
0
    if (NULL != s->finalize) {
16033
0
        s->finalize((char *) s->mem);
16034
0
    }
16035
0
    janet_free(s);
16036
0
}
16037
16038
/* Free all allocated scratch memory */
16039
5.80k
static void janet_free_all_scratch(void) {
16040
5.80k
    for (size_t i = 0; i < janet_vm.scratch_len; i++) {
16041
0
        free_one_scratch(janet_vm.scratch_mem[i]);
16042
0
    }
16043
5.80k
    janet_vm.scratch_len = 0;
16044
5.80k
}
16045
16046
0
static JanetScratch *janet_mem2scratch(void *mem) {
16047
0
    JanetScratch *s = (JanetScratch *)mem;
16048
0
    return s - 1;
16049
0
}
16050
16051
/* Run garbage collection */
16052
0
void janet_collect(void) {
16053
0
    uint32_t i;
16054
0
    if (janet_vm.gc_suspend) return;
16055
0
    depth = JANET_RECURSION_GUARD;
16056
0
    janet_vm.gc_mark_phase = 1;
16057
    /* Try to prevent many major collections back to back.
16058
     * A full collection will take O(janet_vm.block_count) time.
16059
     * If we have a large heap, make sure our interval is not too
16060
     * small so we won't make many collections over it. This is just a
16061
     * heuristic for automatically changing the gc interval */
16062
0
    if (janet_vm.block_count * 8 > janet_vm.gc_interval) {
16063
0
        janet_vm.gc_interval = janet_vm.block_count * sizeof(JanetGCObject);
16064
0
    }
16065
0
    orig_rootcount = janet_vm.root_count;
16066
0
#ifdef JANET_EV
16067
0
    janet_ev_mark();
16068
0
#endif
16069
0
    janet_mark_fiber(janet_vm.root_fiber);
16070
0
    for (i = 0; i < orig_rootcount; i++)
16071
0
        janet_mark(janet_vm.roots[i]);
16072
0
    while (orig_rootcount < janet_vm.root_count) {
16073
0
        Janet x = janet_vm.roots[--janet_vm.root_count];
16074
0
        janet_mark(x);
16075
0
    }
16076
0
    janet_vm.gc_mark_phase = 0;
16077
0
    janet_sweep();
16078
0
    janet_vm.next_collection = 0;
16079
0
    janet_free_all_scratch();
16080
0
}
16081
16082
/* Add a root value to the GC. This prevents the GC from removing a value
16083
 * and all of its children. If gcroot is called on a value n times, unroot
16084
 * must also be called n times to remove it as a gc root. */
16085
5.80k
void janet_gcroot(Janet root) {
16086
5.80k
    size_t newcount = janet_vm.root_count + 1;
16087
5.80k
    if (newcount > janet_vm.root_capacity) {
16088
5.80k
        size_t newcap = 2 * newcount;
16089
5.80k
        janet_vm.roots = janet_realloc(janet_vm.roots, sizeof(Janet) * newcap);
16090
5.80k
        if (NULL == janet_vm.roots) {
16091
0
            JANET_OUT_OF_MEMORY;
16092
0
        }
16093
5.80k
        janet_vm.root_capacity = newcap;
16094
5.80k
    }
16095
5.80k
    janet_vm.roots[janet_vm.root_count] = root;
16096
5.80k
    janet_vm.root_count = newcount;
16097
5.80k
}
16098
16099
/* Identity equality for GC purposes */
16100
0
static int janet_gc_idequals(Janet lhs, Janet rhs) {
16101
0
    if (janet_type(lhs) != janet_type(rhs))
16102
0
        return 0;
16103
0
    switch (janet_type(lhs)) {
16104
0
        case JANET_BOOLEAN:
16105
0
        case JANET_NIL:
16106
0
        case JANET_NUMBER:
16107
            /* These values don't really matter to the gc so returning 1 all the time is fine. */
16108
0
            return 1;
16109
0
        default:
16110
0
            return janet_unwrap_pointer(lhs) == janet_unwrap_pointer(rhs);
16111
0
    }
16112
0
}
16113
16114
/* Remove a root value from the GC. This allows the gc to potentially reclaim
16115
 * a value and all its children. */
16116
0
int janet_gcunroot(Janet root) {
16117
0
    Janet *vtop = janet_vm.roots + janet_vm.root_count;
16118
    /* Search from top to bottom as access is most likely LIFO */
16119
0
    for (Janet *v = janet_vm.roots; v < vtop; v++) {
16120
0
        if (janet_gc_idequals(root, *v)) {
16121
0
            *v = janet_vm.roots[--janet_vm.root_count];
16122
0
            return 1;
16123
0
        }
16124
0
    }
16125
0
    return 0;
16126
0
}
16127
16128
/* Remove a root value from the GC. This sets the effective reference count to 0. */
16129
0
int janet_gcunrootall(Janet root) {
16130
0
    Janet *vtop = janet_vm.roots + janet_vm.root_count;
16131
0
    int ret = 0;
16132
    /* Search from top to bottom as access is most likely LIFO */
16133
0
    for (Janet *v = janet_vm.roots; v < vtop; v++) {
16134
0
        if (janet_gc_idequals(root, *v)) {
16135
0
            *v = janet_vm.roots[--janet_vm.root_count];
16136
0
            vtop--;
16137
0
            ret = 1;
16138
0
        }
16139
0
    }
16140
0
    return ret;
16141
0
}
16142
16143
/* Free all allocated memory */
16144
5.80k
void janet_clear_memory(void) {
16145
5.80k
#ifdef JANET_EV
16146
5.80k
    JanetKV *items = janet_vm.threaded_abstracts.data;
16147
11.6k
    for (int32_t i = 0; i < janet_vm.threaded_abstracts.capacity; i++) {
16148
5.80k
        if (janet_checktype(items[i].key, JANET_ABSTRACT)) {
16149
0
            void *abst = janet_unwrap_abstract(items[i].key);
16150
0
            JanetAbstractHead *head = janet_abstract_head(abst);
16151
0
            if (head->type->gcperthread) {
16152
0
                janet_assert(!head->type->gcperthread(head->data, head->size), "per-thread finalizer failed");
16153
0
            }
16154
0
            if (0 == janet_abstract_decref(abst)) {
16155
0
                if (head->type->gc) {
16156
0
                    janet_assert(!head->type->gc(head->data, head->size), "finalizer failed");
16157
0
                }
16158
0
                janet_free(janet_abstract_head(abst));
16159
0
            }
16160
0
        }
16161
5.80k
    }
16162
5.80k
#endif
16163
5.80k
    JanetGCObject *current = janet_vm.blocks;
16164
9.16M
    while (NULL != current) {
16165
9.16M
        janet_deinit_block(current);
16166
9.16M
        JanetGCObject *next = current->data.next;
16167
9.16M
        janet_free(current);
16168
9.16M
        current = next;
16169
9.16M
    }
16170
5.80k
    janet_vm.blocks = NULL;
16171
5.80k
    janet_free_all_scratch();
16172
5.80k
    janet_free(janet_vm.scratch_mem);
16173
5.80k
}
16174
16175
/* Primitives for suspending GC. */
16176
0
int janet_gclock(void) {
16177
0
    return janet_vm.gc_suspend++;
16178
0
}
16179
0
void janet_gcunlock(int handle) {
16180
0
    janet_vm.gc_suspend = handle;
16181
0
}
16182
16183
/* Scratch memory API
16184
 * Scratch memory allocations do not need to be free (but optionally can be), and will be automatically cleaned
16185
 * up in the next call to janet_collect. */
16186
16187
0
void *janet_smalloc(size_t size) {
16188
0
    JanetScratch *s = janet_malloc(sizeof(JanetScratch) + size);
16189
0
    if (NULL == s) {
16190
0
        JANET_OUT_OF_MEMORY;
16191
0
    }
16192
0
    s->finalize = NULL;
16193
0
    if (janet_vm.scratch_len == janet_vm.scratch_cap) {
16194
0
        size_t newcap = 2 * janet_vm.scratch_cap + 2;
16195
0
        JanetScratch **newmem = (JanetScratch **) janet_realloc(janet_vm.scratch_mem, newcap * sizeof(JanetScratch));
16196
0
        if (NULL == newmem) {
16197
0
            JANET_OUT_OF_MEMORY;
16198
0
        }
16199
0
        janet_vm.scratch_cap = newcap;
16200
0
        janet_vm.scratch_mem = newmem;
16201
0
    }
16202
0
    janet_vm.scratch_mem[janet_vm.scratch_len++] = s;
16203
0
    return (char *)(s->mem);
16204
0
}
16205
16206
0
void *janet_scalloc(size_t nmemb, size_t size) {
16207
0
    if (nmemb && size > SIZE_MAX / nmemb) {
16208
0
        JANET_OUT_OF_MEMORY;
16209
0
    }
16210
0
    size_t n = nmemb * size;
16211
0
    void *p = janet_smalloc(n);
16212
0
    memset(p, 0, n);
16213
0
    return p;
16214
0
}
16215
16216
0
void *janet_srealloc(void *mem, size_t size) {
16217
0
    if (NULL == mem) return janet_smalloc(size);
16218
0
    JanetScratch *s = janet_mem2scratch(mem);
16219
0
    if (janet_vm.scratch_len) {
16220
0
        for (size_t i = janet_vm.scratch_len - 1; ; i--) {
16221
0
            if (janet_vm.scratch_mem[i] == s) {
16222
0
                JanetScratch *news = janet_realloc(s, size + sizeof(JanetScratch));
16223
0
                if (NULL == news) {
16224
0
                    JANET_OUT_OF_MEMORY;
16225
0
                }
16226
0
                janet_vm.scratch_mem[i] = news;
16227
0
                return (char *)(news->mem);
16228
0
            }
16229
0
            if (i == 0) break;
16230
0
        }
16231
0
    }
16232
0
    JANET_EXIT("invalid janet_srealloc");
16233
0
}
16234
16235
0
void janet_sfinalizer(void *mem, JanetScratchFinalizer finalizer) {
16236
0
    JanetScratch *s = janet_mem2scratch(mem);
16237
0
    s->finalize = finalizer;
16238
0
}
16239
16240
0
void janet_sfree(void *mem) {
16241
0
    if (NULL == mem) return;
16242
0
    JanetScratch *s = janet_mem2scratch(mem);
16243
0
    if (janet_vm.scratch_len) {
16244
0
        for (size_t i = janet_vm.scratch_len - 1; ; i--) {
16245
0
            if (janet_vm.scratch_mem[i] == s) {
16246
0
                janet_vm.scratch_mem[i] = janet_vm.scratch_mem[--janet_vm.scratch_len];
16247
0
                free_one_scratch(s);
16248
0
                return;
16249
0
            }
16250
0
            if (i == 0) break;
16251
0
        }
16252
0
    }
16253
0
    JANET_EXIT("invalid janet_sfree");
16254
0
}
16255
16256
16257
/* src/core/inttypes.c */
16258
#line 0 "src/core/inttypes.c"
16259
16260
/*
16261
* Copyright (c) 2025 Calvin Rose & contributors
16262
*
16263
* Permission is hereby granted, free of charge, to any person obtaining a copy
16264
* of this software and associated documentation files (the "Software"), to
16265
* deal in the Software without restriction, including without limitation the
16266
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16267
* sell copies of the Software, and to permit persons to whom the Software is
16268
* furnished to do so, subject to the following conditions:
16269
*
16270
* The above copyright notice and this permission notice shall be included in
16271
* all copies or substantial portions of the Software.
16272
*
16273
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16274
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16275
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16276
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16277
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
16278
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
16279
* IN THE SOFTWARE.
16280
*/
16281
16282
#ifndef JANET_AMALG
16283
#include "features.h"
16284
#include <janet.h>
16285
#include "util.h"
16286
#endif
16287
16288
#include <errno.h>
16289
#include <stdlib.h>
16290
#include <limits.h>
16291
#include <inttypes.h>
16292
#include <math.h>
16293
16294
/* Conditional compilation */
16295
#ifdef JANET_INT_TYPES
16296
16297
#define MAX_INT_IN_DBL 9007199254740992ULL /* 2^53 */
16298
16299
static int it_s64_get(void *p, Janet key, Janet *out);
16300
static int it_u64_get(void *p, Janet key, Janet *out);
16301
static Janet janet_int64_next(void *p, Janet key);
16302
static Janet janet_uint64_next(void *p, Janet key);
16303
16304
43.3k
static int32_t janet_int64_hash(void *p1, size_t size) {
16305
43.3k
    (void) size;
16306
43.3k
    int32_t *words = p1;
16307
43.3k
    return words[0] ^ words[1];
16308
43.3k
}
16309
16310
33.0k
static int janet_int64_compare(void *p1, void *p2) {
16311
33.0k
    int64_t x = *((int64_t *)p1);
16312
33.0k
    int64_t y = *((int64_t *)p2);
16313
33.0k
    return x == y ? 0 : x < y ? -1 : 1;
16314
33.0k
}
16315
16316
976
static int janet_uint64_compare(void *p1, void *p2) {
16317
976
    uint64_t x = *((uint64_t *)p1);
16318
976
    uint64_t y = *((uint64_t *)p2);
16319
976
    return x == y ? 0 : x < y ? -1 : 1;
16320
976
}
16321
16322
0
static void int64_marshal(void *p, JanetMarshalContext *ctx) {
16323
0
    janet_marshal_abstract(ctx, p);
16324
0
    janet_marshal_int64(ctx, *((int64_t *)p));
16325
0
}
16326
16327
0
static void *int64_unmarshal(JanetMarshalContext *ctx) {
16328
0
    int64_t *p = janet_unmarshal_abstract(ctx, sizeof(int64_t));
16329
0
    p[0] = janet_unmarshal_int64(ctx);
16330
0
    return p;
16331
0
}
16332
16333
0
static void it_s64_tostring(void *p, JanetBuffer *buffer) {
16334
0
    char str[32];
16335
0
    snprintf(str, sizeof(str), "%" PRId64, *((int64_t *)p));
16336
0
    janet_buffer_push_cstring(buffer, str);
16337
0
}
16338
16339
0
static void it_u64_tostring(void *p, JanetBuffer *buffer) {
16340
0
    char str[32];
16341
0
    snprintf(str, sizeof(str), "%" PRIu64, *((uint64_t *)p));
16342
0
    janet_buffer_push_cstring(buffer, str);
16343
0
}
16344
16345
const JanetAbstractType janet_s64_type = {
16346
    "core/s64",
16347
    NULL,
16348
    NULL,
16349
    it_s64_get,
16350
    NULL,
16351
    int64_marshal,
16352
    int64_unmarshal,
16353
    it_s64_tostring,
16354
    janet_int64_compare,
16355
    janet_int64_hash,
16356
    janet_int64_next,
16357
    JANET_ATEND_NEXT
16358
};
16359
16360
const JanetAbstractType janet_u64_type = {
16361
    "core/u64",
16362
    NULL,
16363
    NULL,
16364
    it_u64_get,
16365
    NULL,
16366
    int64_marshal,
16367
    int64_unmarshal,
16368
    it_u64_tostring,
16369
    janet_uint64_compare,
16370
    janet_int64_hash,
16371
    janet_uint64_next,
16372
    JANET_ATEND_NEXT
16373
};
16374
16375
0
int64_t janet_unwrap_s64(Janet x) {
16376
0
    switch (janet_type(x)) {
16377
0
        default:
16378
0
            break;
16379
0
        case JANET_NUMBER : {
16380
0
            double d = janet_unwrap_number(x);
16381
0
            if (!janet_checkint64range(d)) break;
16382
0
            return (int64_t) d;
16383
0
        }
16384
0
        case JANET_STRING: {
16385
0
            int64_t value;
16386
0
            const uint8_t *str = janet_unwrap_string(x);
16387
0
            if (janet_scan_int64(str, janet_string_length(str), &value))
16388
0
                return value;
16389
0
            break;
16390
0
        }
16391
0
        case JANET_ABSTRACT: {
16392
0
            void *abst = janet_unwrap_abstract(x);
16393
0
            if (janet_abstract_type(abst) == &janet_s64_type ||
16394
0
                    (janet_abstract_type(abst) == &janet_u64_type))
16395
0
                return *(int64_t *)abst;
16396
0
            break;
16397
0
        }
16398
0
    }
16399
0
    janet_panicf("can not convert %t %q to 64 bit signed integer", x, x);
16400
0
    return 0;
16401
0
}
16402
16403
0
uint64_t janet_unwrap_u64(Janet x) {
16404
0
    switch (janet_type(x)) {
16405
0
        default:
16406
0
            break;
16407
0
        case JANET_NUMBER : {
16408
0
            double d = janet_unwrap_number(x);
16409
0
            if (!janet_checkuint64range(d)) break;
16410
0
            return (uint64_t) d;
16411
0
        }
16412
0
        case JANET_STRING: {
16413
0
            uint64_t value;
16414
0
            const uint8_t *str = janet_unwrap_string(x);
16415
0
            if (janet_scan_uint64(str, janet_string_length(str), &value))
16416
0
                return value;
16417
0
            break;
16418
0
        }
16419
0
        case JANET_ABSTRACT: {
16420
0
            void *abst = janet_unwrap_abstract(x);
16421
0
            if (janet_abstract_type(abst) == &janet_s64_type ||
16422
0
                    (janet_abstract_type(abst) == &janet_u64_type))
16423
0
                return *(uint64_t *)abst;
16424
0
            break;
16425
0
        }
16426
0
    }
16427
0
    janet_panicf("can not convert %t %q to a 64 bit unsigned integer", x, x);
16428
0
    return 0;
16429
0
}
16430
16431
0
JanetIntType janet_is_int(Janet x) {
16432
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return JANET_INT_NONE;
16433
0
    const JanetAbstractType *at = janet_abstract_type(janet_unwrap_abstract(x));
16434
0
    return (at == &janet_s64_type) ? JANET_INT_S64 :
16435
0
           ((at == &janet_u64_type) ? JANET_INT_U64 :
16436
0
            JANET_INT_NONE);
16437
0
}
16438
16439
78.5k
Janet janet_wrap_s64(int64_t x) {
16440
78.5k
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16441
78.5k
    *box = (int64_t)x;
16442
78.5k
    return janet_wrap_abstract(box);
16443
78.5k
}
16444
16445
4.31k
Janet janet_wrap_u64(uint64_t x) {
16446
4.31k
    uint64_t *box = janet_abstract(&janet_u64_type, sizeof(uint64_t));
16447
4.31k
    *box = (uint64_t)x;
16448
4.31k
    return janet_wrap_abstract(box);
16449
4.31k
}
16450
16451
JANET_CORE_FN(cfun_it_s64_new,
16452
              "(int/s64 value)",
16453
0
              "Create a boxed signed 64 bit integer from a string value or a number.") {
16454
0
    janet_fixarity(argc, 1);
16455
0
    return janet_wrap_s64(janet_unwrap_s64(argv[0]));
16456
0
}
16457
16458
JANET_CORE_FN(cfun_it_u64_new,
16459
              "(int/u64 value)",
16460
0
              "Create a boxed unsigned 64 bit integer from a string value or a number.") {
16461
0
    janet_fixarity(argc, 1);
16462
0
    return janet_wrap_u64(janet_unwrap_u64(argv[0]));
16463
0
}
16464
16465
JANET_CORE_FN(cfun_to_number,
16466
              "(int/to-number value)",
16467
0
              "Convert an int/u64 or int/s64 to a number. Fails if the number is out of range for an int64.") {
16468
0
    janet_fixarity(argc, 1);
16469
0
    if (janet_type(argv[0]) == JANET_ABSTRACT) {
16470
0
        void *abst = janet_unwrap_abstract(argv[0]);
16471
16472
0
        if (janet_abstract_type(abst) == &janet_s64_type) {
16473
0
            int64_t value = *((int64_t *)abst);
16474
0
            if (value > JANET_INTMAX_INT64) {
16475
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
16476
0
            }
16477
0
            if (value < -JANET_INTMAX_INT64) {
16478
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
16479
0
            }
16480
0
            return janet_wrap_number((double)value);
16481
0
        }
16482
16483
0
        if (janet_abstract_type(abst) == &janet_u64_type) {
16484
0
            uint64_t value = *((uint64_t *)abst);
16485
0
            if (value > JANET_INTMAX_INT64) {
16486
0
                janet_panicf("cannot convert %q to a number, must be in the range [%q, %q]", argv[0], janet_wrap_number(JANET_INTMIN_DOUBLE), janet_wrap_number(JANET_INTMAX_DOUBLE));
16487
0
            }
16488
16489
0
            return janet_wrap_number((double)value);
16490
0
        }
16491
0
    }
16492
16493
0
    janet_panicf("expected int/u64 or int/s64, got %q", argv[0]);
16494
0
}
16495
16496
JANET_CORE_FN(cfun_to_bytes,
16497
              "(int/to-bytes value &opt endianness buffer)",
16498
              "Write the bytes of an `int/s64` or `int/u64` into a buffer.\n"
16499
              "The `buffer` parameter specifies an existing buffer to write to, if unset a new buffer will be created.\n"
16500
              "Returns the modified buffer.\n"
16501
              "The `endianness` parameter indicates the byte order:\n"
16502
              "- `nil` (unset): system byte order\n"
16503
              "- `:le`: little-endian, least significant byte first\n"
16504
0
              "- `:be`: big-endian, most significant byte first\n") {
16505
0
    janet_arity(argc, 1, 3);
16506
0
    if (janet_is_int(argv[0]) == JANET_INT_NONE) {
16507
0
        janet_panicf("int/to-bytes: expected an int/s64 or int/u64, got %q", argv[0]);
16508
0
    }
16509
16510
0
    int reverse = 0;
16511
0
    if (argc > 1 && !janet_checktype(argv[1], JANET_NIL)) {
16512
0
        JanetKeyword endianness_kw = janet_getkeyword(argv, 1);
16513
0
        if (!janet_cstrcmp(endianness_kw, "le")) {
16514
#if JANET_BIG_ENDIAN
16515
            reverse = 1;
16516
#endif
16517
0
        } else if (!janet_cstrcmp(endianness_kw, "be")) {
16518
0
#if JANET_LITTLE_ENDIAN
16519
0
            reverse = 1;
16520
0
#endif
16521
0
        } else {
16522
0
            janet_panicf("int/to-bytes: expected endianness :le, :be or nil, got %v", argv[1]);
16523
0
        }
16524
0
    }
16525
16526
0
    JanetBuffer *buffer = NULL;
16527
0
    if (argc > 2 && !janet_checktype(argv[2], JANET_NIL)) {
16528
0
        if (!janet_checktype(argv[2], JANET_BUFFER)) {
16529
0
            janet_panicf("int/to-bytes: expected buffer or nil, got %q", argv[2]);
16530
0
        }
16531
16532
0
        buffer = janet_unwrap_buffer(argv[2]);
16533
0
        janet_buffer_extra(buffer, 8);
16534
0
    } else {
16535
0
        buffer = janet_buffer(8);
16536
0
    }
16537
16538
0
    uint8_t *bytes = janet_unwrap_abstract(argv[0]);
16539
0
    if (reverse) {
16540
0
        for (int i = 0; i < 8; ++i) {
16541
0
            buffer->data[buffer->count + 7 - i] = bytes[i];
16542
0
        }
16543
0
    } else {
16544
0
        memcpy(buffer->data + buffer->count, bytes, 8);
16545
0
    }
16546
0
    buffer->count += 8;
16547
16548
0
    return janet_wrap_buffer(buffer);
16549
0
}
16550
16551
/*
16552
 * Code to support polymorphic comparison.
16553
 * int/u64 and int/s64 support a "compare" method that allows
16554
 * comparison to each other, and to Janet numbers, using the
16555
 * "compare" "compare<" ... functions.
16556
 * In the following code explicit casts are sometimes used to help
16557
 * make it clear when int/float conversions are happening.
16558
 */
16559
0
static int compare_double_double(double x, double y) {
16560
0
    return (x < y) ? -1 : ((x > y) ? 1 : 0);
16561
0
}
16562
16563
0
static int compare_int64_double(int64_t x, double y) {
16564
0
    if (isnan(y)) {
16565
0
        return 0;
16566
0
    } else if ((y > JANET_INTMIN_DOUBLE) && (y < JANET_INTMAX_DOUBLE)) {
16567
0
        double dx = (double) x;
16568
0
        return compare_double_double(dx, y);
16569
0
    } else if (y > ((double) INT64_MAX)) {
16570
0
        return -1;
16571
0
    } else if (y < ((double) INT64_MIN)) {
16572
0
        return 1;
16573
0
    } else {
16574
0
        int64_t yi = (int64_t) y;
16575
0
        return (x < yi) ? -1 : ((x > yi) ? 1 : 0);
16576
0
    }
16577
0
}
16578
16579
0
static int compare_uint64_double(uint64_t x, double y) {
16580
0
    if (isnan(y)) {
16581
0
        return 0;
16582
0
    } else if (y < 0) {
16583
0
        return 1;
16584
0
    } else if ((y >= 0) && (y < JANET_INTMAX_DOUBLE)) {
16585
0
        double dx = (double) x;
16586
0
        return compare_double_double(dx, y);
16587
0
    } else if (y > ((double) UINT64_MAX)) {
16588
0
        return -1;
16589
0
    } else {
16590
0
        uint64_t yi = (uint64_t) y;
16591
0
        return (x < yi) ? -1 : ((x > yi) ? 1 : 0);
16592
0
    }
16593
0
}
16594
16595
0
static Janet cfun_it_s64_compare(int32_t argc, Janet *argv) {
16596
0
    janet_fixarity(argc, 2);
16597
0
    if (janet_is_int(argv[0]) != JANET_INT_S64) {
16598
0
        janet_panic("compare method requires int/s64 as first argument");
16599
0
    }
16600
0
    int64_t x = janet_unwrap_s64(argv[0]);
16601
0
    switch (janet_type(argv[1])) {
16602
0
        default:
16603
0
            break;
16604
0
        case JANET_NUMBER : {
16605
0
            double y = janet_unwrap_number(argv[1]);
16606
0
            return janet_wrap_number(compare_int64_double(x, y));
16607
0
        }
16608
0
        case JANET_ABSTRACT: {
16609
0
            void *abst = janet_unwrap_abstract(argv[1]);
16610
0
            if (janet_abstract_type(abst) == &janet_s64_type) {
16611
0
                int64_t y = *(int64_t *)abst;
16612
0
                return janet_wrap_number((x < y) ? -1 : (x > y ? 1 : 0));
16613
0
            } else if (janet_abstract_type(abst) == &janet_u64_type) {
16614
0
                uint64_t y = *(uint64_t *)abst;
16615
0
                if (x < 0) {
16616
0
                    return janet_wrap_number(-1);
16617
0
                } else if (y > INT64_MAX) {
16618
0
                    return janet_wrap_number(-1);
16619
0
                } else {
16620
0
                    int64_t y2 = (int64_t) y;
16621
0
                    return janet_wrap_number((x < y2) ? -1 : (x > y2 ? 1 : 0));
16622
0
                }
16623
0
            }
16624
0
            break;
16625
0
        }
16626
0
    }
16627
0
    return janet_wrap_nil();
16628
0
}
16629
16630
0
static Janet cfun_it_u64_compare(int32_t argc, Janet *argv) {
16631
0
    janet_fixarity(argc, 2);
16632
0
    if (janet_is_int(argv[0]) != JANET_INT_U64) {
16633
0
        janet_panic("compare method requires int/u64 as first argument");
16634
0
    }
16635
0
    uint64_t x = janet_unwrap_u64(argv[0]);
16636
0
    switch (janet_type(argv[1])) {
16637
0
        default:
16638
0
            break;
16639
0
        case JANET_NUMBER : {
16640
0
            double y = janet_unwrap_number(argv[1]);
16641
0
            return janet_wrap_number(compare_uint64_double(x, y));
16642
0
        }
16643
0
        case JANET_ABSTRACT: {
16644
0
            void *abst = janet_unwrap_abstract(argv[1]);
16645
0
            if (janet_abstract_type(abst) == &janet_u64_type) {
16646
0
                uint64_t y = *(uint64_t *)abst;
16647
0
                return janet_wrap_number((x < y) ? -1 : (x > y ? 1 : 0));
16648
0
            } else if (janet_abstract_type(abst) == &janet_s64_type) {
16649
0
                int64_t y = *(int64_t *)abst;
16650
0
                if (y < 0) {
16651
0
                    return janet_wrap_number(1);
16652
0
                } else if (x > INT64_MAX) {
16653
0
                    return janet_wrap_number(1);
16654
0
                } else {
16655
0
                    int64_t x2 = (int64_t) x;
16656
0
                    return janet_wrap_number((x2 < y) ? -1 : (x2 > y ? 1 : 0));
16657
0
                }
16658
0
            }
16659
0
            break;
16660
0
        }
16661
0
    }
16662
0
    return janet_wrap_nil();
16663
0
}
16664
16665
/*
16666
 * In C, signed arithmetic overflow is undefined behvior
16667
 * but unsigned arithmetic overflow is twos complement
16668
 *
16669
 * Reference:
16670
 * https://en.cppreference.com/w/cpp/language/ub
16671
 * http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html
16672
 *
16673
 * This means OPMETHOD & OPMETHODINVERT must always use
16674
 * unsigned arithmetic internally, regardless of the true type.
16675
 * This will not affect the end result (property of twos complement).
16676
 */
16677
#define OPMETHOD(T, type, name, oper) \
16678
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16679
0
    janet_arity(argc, 2, -1); \
16680
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16681
0
    *box = janet_unwrap_##type(argv[0]); \
16682
0
    for (int32_t i = 1; i < argc; i++) \
16683
0
        /* This avoids undefined behavior. See above for why. */ \
16684
0
        *box = (T) ((uint64_t) (*box)) oper ((uint64_t) janet_unwrap_##type(argv[i])); \
16685
0
    return janet_wrap_abstract(box); \
16686
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_add
Unexecuted instantiation: janet.c:cfun_it_s64_sub
Unexecuted instantiation: janet.c:cfun_it_s64_mul
Unexecuted instantiation: janet.c:cfun_it_s64_and
Unexecuted instantiation: janet.c:cfun_it_s64_or
Unexecuted instantiation: janet.c:cfun_it_s64_xor
Unexecuted instantiation: janet.c:cfun_it_s64_lshift
Unexecuted instantiation: janet.c:cfun_it_s64_rshift
Unexecuted instantiation: janet.c:cfun_it_u64_add
Unexecuted instantiation: janet.c:cfun_it_u64_sub
Unexecuted instantiation: janet.c:cfun_it_u64_mul
Unexecuted instantiation: janet.c:cfun_it_u64_and
Unexecuted instantiation: janet.c:cfun_it_u64_or
Unexecuted instantiation: janet.c:cfun_it_u64_xor
Unexecuted instantiation: janet.c:cfun_it_u64_lshift
Unexecuted instantiation: janet.c:cfun_it_u64_rshift
16687
16688
#define OPMETHODINVERT(T, type, name, oper) \
16689
0
static Janet cfun_it_##type##_##name##i(int32_t argc, Janet *argv) { \
16690
0
    janet_fixarity(argc, 2); \
16691
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16692
0
    *box = janet_unwrap_##type(argv[1]); \
16693
0
    /* This avoids undefined behavior. See above for why. */ \
16694
0
    *box = (T) ((uint64_t) *box) oper ((uint64_t) janet_unwrap_##type(argv[0])); \
16695
0
    return janet_wrap_abstract(box); \
16696
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_subi
Unexecuted instantiation: janet.c:cfun_it_u64_subi
16697
16698
#define UNARYMETHOD(T, type, name, oper) \
16699
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16700
0
    janet_fixarity(argc, 1); \
16701
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16702
0
    *box = oper(janet_unwrap_##type(argv[0])); \
16703
0
    return janet_wrap_abstract(box); \
16704
0
} \
Unexecuted instantiation: janet.c:cfun_it_s64_not
Unexecuted instantiation: janet.c:cfun_it_u64_not
16705
16706
0
#define DIVZERO(name) DIVZERO_##name
16707
0
#define DIVZERO_div janet_panic("division by zero")
16708
0
#define DIVZERO_rem janet_panic("division by zero")
16709
0
#define DIVZERO_mod return janet_wrap_abstract(box)
16710
16711
#define DIVMETHOD(T, type, name, oper) \
16712
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16713
0
    janet_arity(argc, 2, -1);                       \
16714
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16715
0
    *box = janet_unwrap_##type(argv[0]); \
16716
0
    for (int32_t i = 1; i < argc; i++) { \
16717
0
      T value = janet_unwrap_##type(argv[i]); \
16718
0
      if (value == 0) DIVZERO(name); \
16719
0
      *box oper##= value; \
16720
0
    } \
16721
0
    return janet_wrap_abstract(box); \
16722
0
} \
Unexecuted instantiation: janet.c:cfun_it_u64_div
Unexecuted instantiation: janet.c:cfun_it_u64_mod
Unexecuted instantiation: janet.c:cfun_it_u64_rem
16723
16724
#define DIVMETHODINVERT(T, type, name, oper) \
16725
0
static Janet cfun_it_##type##_##name##i(int32_t argc, Janet *argv) { \
16726
0
    janet_fixarity(argc, 2);                       \
16727
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16728
0
    *box = janet_unwrap_##type(argv[1]); \
16729
0
    T value = janet_unwrap_##type(argv[0]); \
16730
0
    if (value == 0) DIVZERO(name); \
16731
0
    *box oper##= value; \
16732
0
    return janet_wrap_abstract(box); \
16733
0
} \
Unexecuted instantiation: janet.c:cfun_it_u64_divi
Unexecuted instantiation: janet.c:cfun_it_u64_modi
Unexecuted instantiation: janet.c:cfun_it_u64_remi
16734
16735
#define DIVMETHOD_SIGNED(T, type, name, oper) \
16736
0
static Janet cfun_it_##type##_##name(int32_t argc, Janet *argv) { \
16737
0
    janet_arity(argc, 2, -1);                       \
16738
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16739
0
    *box = janet_unwrap_##type(argv[0]); \
16740
0
    for (int32_t i = 1; i < argc; i++) { \
16741
0
      T value = janet_unwrap_##type(argv[i]); \
16742
0
      if (value == 0) DIVZERO(name); \
16743
0
      if ((value == -1) && (*box == INT64_MIN)) janet_panic("INT64_MIN divided by -1"); \
16744
0
      *box oper##= value; \
16745
0
    } \
16746
0
    return janet_wrap_abstract(box); \
16747
0
} \
16748
16749
#define DIVMETHODINVERT_SIGNED(T, type, name, oper) \
16750
0
static Janet cfun_it_##type##_##name##i(int32_t argc, Janet *argv) { \
16751
0
    janet_fixarity(argc, 2);                       \
16752
0
    T *box = janet_abstract(&janet_##type##_type, sizeof(T)); \
16753
0
    *box = janet_unwrap_##type(argv[1]); \
16754
0
    T value = janet_unwrap_##type(argv[0]); \
16755
0
    if (value == 0) DIVZERO(name); \
16756
0
    if ((value == -1) && (*box == INT64_MIN)) janet_panic("INT64_MIN divided by -1"); \
16757
0
    *box oper##= value; \
16758
0
    return janet_wrap_abstract(box); \
16759
0
} \
16760
16761
0
static Janet cfun_it_s64_divf(int32_t argc, Janet *argv) {
16762
0
    janet_fixarity(argc, 2);
16763
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16764
0
    int64_t op1 = janet_unwrap_s64(argv[0]);
16765
0
    int64_t op2 = janet_unwrap_s64(argv[1]);
16766
0
    if (op2 == 0) janet_panic("division by zero");
16767
0
    int64_t x = op1 / op2;
16768
0
    *box = x - (((op1 ^ op2) < 0) && (x * op2 != op1));
16769
0
    return janet_wrap_abstract(box);
16770
0
}
16771
16772
0
static Janet cfun_it_s64_divfi(int32_t argc, Janet *argv) {
16773
0
    janet_fixarity(argc, 2);
16774
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16775
0
    int64_t op2 = janet_unwrap_s64(argv[0]);
16776
0
    int64_t op1 = janet_unwrap_s64(argv[1]);
16777
0
    if (op2 == 0) janet_panic("division by zero");
16778
0
    int64_t x = op1 / op2;
16779
0
    *box = x - (((op1 ^ op2) < 0) && (x * op2 != op1));
16780
0
    return janet_wrap_abstract(box);
16781
0
}
16782
16783
0
static Janet cfun_it_s64_mod(int32_t argc, Janet *argv) {
16784
0
    janet_fixarity(argc, 2);
16785
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16786
0
    int64_t op1 = janet_unwrap_s64(argv[0]);
16787
0
    int64_t op2 = janet_unwrap_s64(argv[1]);
16788
0
    if (op2 == 0) {
16789
0
        *box = op1;
16790
0
    } else {
16791
0
        int64_t x = op1 % op2;
16792
0
        *box = (((op1 ^ op2) < 0) && (x != 0)) ? x + op2 : x;
16793
0
    }
16794
0
    return janet_wrap_abstract(box);
16795
0
}
16796
16797
0
static Janet cfun_it_s64_modi(int32_t argc, Janet *argv) {
16798
0
    janet_fixarity(argc, 2);
16799
0
    int64_t *box = janet_abstract(&janet_s64_type, sizeof(int64_t));
16800
0
    int64_t op2 = janet_unwrap_s64(argv[0]);
16801
0
    int64_t op1 = janet_unwrap_s64(argv[1]);
16802
0
    if (op2 == 0) {
16803
0
        *box = op1;
16804
0
    } else {
16805
0
        int64_t x = op1 % op2;
16806
0
        *box = (((op1 ^ op2) < 0) && (x != 0)) ? x + op2 : x;
16807
0
    }
16808
0
    return janet_wrap_abstract(box);
16809
0
}
16810
16811
OPMETHOD(int64_t, s64, add, +)
16812
OPMETHOD(int64_t, s64, sub, -)
16813
OPMETHODINVERT(int64_t, s64, sub, -)
16814
OPMETHOD(int64_t, s64, mul, *)
16815
0
DIVMETHOD_SIGNED(int64_t, s64, div, /)
16816
0
DIVMETHOD_SIGNED(int64_t, s64, rem, %)
16817
0
DIVMETHODINVERT_SIGNED(int64_t, s64, div, /)
16818
0
DIVMETHODINVERT_SIGNED(int64_t, s64, rem, %)
16819
OPMETHOD(int64_t, s64, and, &)
16820
OPMETHOD(int64_t, s64, or, |)
16821
OPMETHOD(int64_t, s64, xor, ^)
16822
UNARYMETHOD(int64_t, s64, not, ~)
16823
OPMETHOD(int64_t, s64, lshift, <<)
16824
OPMETHOD(int64_t, s64, rshift, >>)
16825
OPMETHOD(uint64_t, u64, add, +)
16826
OPMETHOD(uint64_t, u64, sub, -)
16827
OPMETHODINVERT(uint64_t, u64, sub, -)
16828
OPMETHOD(uint64_t, u64, mul, *)
16829
DIVMETHOD(uint64_t, u64, div, /)
16830
DIVMETHOD(uint64_t, u64, rem, %)
16831
DIVMETHOD(uint64_t, u64, mod, %)
16832
DIVMETHODINVERT(uint64_t, u64, div, /)
16833
DIVMETHODINVERT(uint64_t, u64, rem, %)
16834
DIVMETHODINVERT(uint64_t, u64, mod, %)
16835
OPMETHOD(uint64_t, u64, and, &)
16836
OPMETHOD(uint64_t, u64, or, |)
16837
OPMETHOD(uint64_t, u64, xor, ^)
16838
UNARYMETHOD(uint64_t, u64, not, ~)
16839
OPMETHOD(uint64_t, u64, lshift, <<)
16840
OPMETHOD(uint64_t, u64, rshift, >>)
16841
16842
#undef OPMETHOD
16843
#undef DIVMETHOD
16844
#undef DIVMETHOD_SIGNED
16845
#undef COMPMETHOD
16846
16847
static JanetMethod it_s64_methods[] = {
16848
    {"+", cfun_it_s64_add},
16849
    {"r+", cfun_it_s64_add},
16850
    {"-", cfun_it_s64_sub},
16851
    {"r-", cfun_it_s64_subi},
16852
    {"*", cfun_it_s64_mul},
16853
    {"r*", cfun_it_s64_mul},
16854
    {"/", cfun_it_s64_div},
16855
    {"r/", cfun_it_s64_divi},
16856
    {"div", cfun_it_s64_divf},
16857
    {"rdiv", cfun_it_s64_divfi},
16858
    {"mod", cfun_it_s64_mod},
16859
    {"rmod", cfun_it_s64_modi},
16860
    {"%", cfun_it_s64_rem},
16861
    {"r%", cfun_it_s64_remi},
16862
    {"&", cfun_it_s64_and},
16863
    {"r&", cfun_it_s64_and},
16864
    {"|", cfun_it_s64_or},
16865
    {"r|", cfun_it_s64_or},
16866
    {"^", cfun_it_s64_xor},
16867
    {"r^", cfun_it_s64_xor},
16868
    {"~", cfun_it_s64_not},
16869
    {"<<", cfun_it_s64_lshift},
16870
    {">>", cfun_it_s64_rshift},
16871
    {"compare", cfun_it_s64_compare},
16872
    {NULL, NULL}
16873
};
16874
16875
static JanetMethod it_u64_methods[] = {
16876
    {"+", cfun_it_u64_add},
16877
    {"r+", cfun_it_u64_add},
16878
    {"-", cfun_it_u64_sub},
16879
    {"r-", cfun_it_u64_subi},
16880
    {"*", cfun_it_u64_mul},
16881
    {"r*", cfun_it_u64_mul},
16882
    {"/", cfun_it_u64_div},
16883
    {"r/", cfun_it_u64_divi},
16884
    {"div", cfun_it_u64_div},
16885
    {"rdiv", cfun_it_u64_divi},
16886
    {"mod", cfun_it_u64_mod},
16887
    {"rmod", cfun_it_u64_modi},
16888
    {"%", cfun_it_u64_rem},
16889
    {"r%", cfun_it_u64_remi},
16890
    {"&", cfun_it_u64_and},
16891
    {"r&", cfun_it_u64_and},
16892
    {"|", cfun_it_u64_or},
16893
    {"r|", cfun_it_u64_or},
16894
    {"^", cfun_it_u64_xor},
16895
    {"r^", cfun_it_u64_xor},
16896
    {"~", cfun_it_u64_not},
16897
    {"<<", cfun_it_u64_lshift},
16898
    {">>", cfun_it_u64_rshift},
16899
    {"compare", cfun_it_u64_compare},
16900
    {NULL, NULL}
16901
};
16902
16903
0
static Janet janet_int64_next(void *p, Janet key) {
16904
0
    (void) p;
16905
0
    return janet_nextmethod(it_s64_methods, key);
16906
0
}
16907
16908
0
static Janet janet_uint64_next(void *p, Janet key) {
16909
0
    (void) p;
16910
0
    return janet_nextmethod(it_u64_methods, key);
16911
0
}
16912
16913
0
static int it_s64_get(void *p, Janet key, Janet *out) {
16914
0
    (void) p;
16915
0
    if (!janet_checktype(key, JANET_KEYWORD))
16916
0
        return 0;
16917
0
    return janet_getmethod(janet_unwrap_keyword(key), it_s64_methods, out);
16918
0
}
16919
16920
0
static int it_u64_get(void *p, Janet key, Janet *out) {
16921
0
    (void) p;
16922
0
    if (!janet_checktype(key, JANET_KEYWORD))
16923
0
        return 0;
16924
0
    return janet_getmethod(janet_unwrap_keyword(key), it_u64_methods, out);
16925
0
}
16926
16927
/* Module entry point */
16928
0
void janet_lib_inttypes(JanetTable *env) {
16929
0
    JanetRegExt it_cfuns[] = {
16930
0
        JANET_CORE_REG("int/s64", cfun_it_s64_new),
16931
0
        JANET_CORE_REG("int/u64", cfun_it_u64_new),
16932
0
        JANET_CORE_REG("int/to-number", cfun_to_number),
16933
0
        JANET_CORE_REG("int/to-bytes", cfun_to_bytes),
16934
0
        JANET_REG_END
16935
0
    };
16936
0
    janet_core_cfuns_ext(env, NULL, it_cfuns);
16937
0
    janet_register_abstract_type(&janet_s64_type);
16938
0
    janet_register_abstract_type(&janet_u64_type);
16939
0
}
16940
16941
#endif
16942
16943
16944
/* src/core/io.c */
16945
#line 0 "src/core/io.c"
16946
16947
/*
16948
* Copyright (c) 2025 Calvin Rose
16949
*
16950
* Permission is hereby granted, free of charge, to any person obtaining a copy
16951
* of this software and associated documentation files (the "Software"), to
16952
* deal in the Software without restriction, including without limitation the
16953
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16954
* sell copies of the Software, and to permit persons to whom the Software is
16955
* furnished to do so, subject to the following conditions:
16956
*
16957
* The above copyright notice and this permission notice shall be included in
16958
* all copies or substantial portions of the Software.
16959
*
16960
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16961
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16962
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16963
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16964
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
16965
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
16966
* IN THE SOFTWARE.
16967
*/
16968
16969
#ifndef JANET_AMALG
16970
#include "features.h"
16971
#include <janet.h>
16972
#include "util.h"
16973
#endif
16974
16975
#include <stdio.h>
16976
#include <errno.h>
16977
16978
#ifndef JANET_WINDOWS
16979
#include <fcntl.h>
16980
#include <sys/stat.h>
16981
#include <sys/wait.h>
16982
#include <unistd.h>
16983
#endif
16984
16985
static int cfun_io_gc(void *p, size_t len);
16986
static int io_file_get(void *p, Janet key, Janet *out);
16987
static void io_file_marshal(void *p, JanetMarshalContext *ctx);
16988
static void *io_file_unmarshal(JanetMarshalContext *ctx);
16989
static Janet io_file_next(void *p, Janet key);
16990
16991
#ifdef JANET_WINDOWS
16992
#define ftell _ftelli64
16993
#define fseek _fseeki64
16994
#endif
16995
16996
const JanetAbstractType janet_file_type = {
16997
    "core/file",
16998
    cfun_io_gc,
16999
    NULL,
17000
    io_file_get,
17001
    NULL,
17002
    io_file_marshal,
17003
    io_file_unmarshal,
17004
    NULL, /* tostring */
17005
    NULL, /* compare */
17006
    NULL, /* hash */
17007
    io_file_next,
17008
    JANET_ATEND_NEXT
17009
};
17010
17011
/* Check arguments to fopen */
17012
0
static int32_t checkflags(const uint8_t *str) {
17013
0
    int32_t flags = 0;
17014
0
    int32_t i;
17015
0
    int32_t len = janet_string_length(str);
17016
0
    if (!len || len > 10)
17017
0
        janet_panic("file mode must have a length between 1 and 10");
17018
0
    switch (*str) {
17019
0
        default:
17020
0
            janet_panicf("invalid flag %c, expected w, a, or r", *str);
17021
0
            break;
17022
0
        case 'w':
17023
0
            flags |= JANET_FILE_WRITE;
17024
0
            janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
17025
0
            break;
17026
0
        case 'a':
17027
0
            flags |= JANET_FILE_APPEND;
17028
0
            janet_sandbox_assert(JANET_SANDBOX_FS);
17029
0
            break;
17030
0
        case 'r':
17031
0
            flags |= JANET_FILE_READ;
17032
0
            janet_sandbox_assert(JANET_SANDBOX_FS_READ);
17033
0
            break;
17034
0
    }
17035
0
    for (i = 1; i < len; i++) {
17036
0
        switch (str[i]) {
17037
0
            default:
17038
0
                janet_panicf("invalid flag %c, expected +, b, or n", str[i]);
17039
0
                break;
17040
0
            case '+':
17041
0
                if (flags & JANET_FILE_UPDATE) return -1;
17042
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
17043
0
                flags |= JANET_FILE_UPDATE;
17044
0
                break;
17045
0
            case 'b':
17046
0
                if (flags & JANET_FILE_BINARY) return -1;
17047
0
                flags |= JANET_FILE_BINARY;
17048
0
                break;
17049
0
            case 'n':
17050
0
                if (flags & JANET_FILE_NONIL) return -1;
17051
0
                flags |= JANET_FILE_NONIL;
17052
0
                break;
17053
0
        }
17054
0
    }
17055
0
    return flags;
17056
0
}
17057
17058
0
static void *makef(FILE *f, int32_t flags) {
17059
0
    JanetFile *iof = (JanetFile *) janet_abstract(&janet_file_type, sizeof(JanetFile));
17060
0
    iof->file = f;
17061
0
    iof->flags = flags;
17062
0
#ifndef JANET_WINDOWS
17063
    /* While we would like fopen to set cloexec by default (like O_CLOEXEC) with the e flag, that is
17064
     * not standard. */
17065
0
    if (!(flags & JANET_FILE_NOT_CLOSEABLE))
17066
0
        fcntl(fileno(f), F_SETFD, FD_CLOEXEC);
17067
0
#endif
17068
0
    return iof;
17069
0
}
17070
17071
JANET_CORE_FN(cfun_io_temp,
17072
              "(file/temp)",
17073
              "Open an anonymous temporary file that is removed on close. "
17074
0
              "Raises an error on failure.") {
17075
0
    janet_sandbox_assert(JANET_SANDBOX_FS_TEMP);
17076
0
    (void)argv;
17077
0
    janet_fixarity(argc, 0);
17078
    // XXX use mkostemp when we can to avoid CLOEXEC race.
17079
0
    FILE *tmp = tmpfile();
17080
0
    if (!tmp)
17081
0
        janet_panicf("unable to create temporary file - %s", janet_strerror(errno));
17082
0
    return janet_makefile(tmp, JANET_FILE_WRITE | JANET_FILE_READ | JANET_FILE_BINARY);
17083
0
}
17084
17085
JANET_CORE_FN(cfun_io_fopen,
17086
              "(file/open path &opt mode buffer-size)",
17087
              "Open a file. `path` is an absolute or relative path, and "
17088
              "`mode` is a set of flags indicating the mode to open the file in. "
17089
              "`mode` is a keyword where each character represents a flag. If the file "
17090
              "cannot be opened, returns nil, otherwise returns the new file handle. "
17091
              "Mode flags:\n\n"
17092
              "* r - allow reading from the file\n\n"
17093
              "* w - allow writing to the file\n\n"
17094
              "* a - append to the file\n\n"
17095
              "Following one of the initial flags, 0 or more of the following flags can be appended:\n\n"
17096
              "* b - open the file in binary mode (rather than text mode)\n\n"
17097
              "* + - append to the file instead of overwriting it\n\n"
17098
              "* n - error if the file cannot be opened instead of returning nil\n\n"
17099
0
              "See fopen (<stdio.h>, C99) for further details.") {
17100
0
    janet_arity(argc, 1, 3);
17101
0
    const uint8_t *fname = janet_getstring(argv, 0);
17102
0
    const uint8_t *fmode;
17103
0
    int32_t flags;
17104
0
    if (argc == 2) {
17105
0
        fmode = janet_getkeyword(argv, 1);
17106
0
        flags = checkflags(fmode);
17107
0
    } else {
17108
0
        fmode = (const uint8_t *)"r";
17109
0
        janet_sandbox_assert(JANET_SANDBOX_FS_READ);
17110
0
        flags = JANET_FILE_READ;
17111
0
    }
17112
0
    FILE *f = fopen((const char *)fname, (const char *)fmode);
17113
0
    if (f != NULL) {
17114
0
#ifndef JANET_WINDOWS
17115
0
        struct stat st;
17116
0
        fstat(fileno(f), &st);
17117
0
        if (S_ISDIR(st.st_mode)) {
17118
0
            fclose(f);
17119
0
            janet_panicf("cannot open directory: %s", fname);
17120
0
        }
17121
0
#endif
17122
0
        size_t bufsize = janet_optsize(argv, argc, 2, BUFSIZ);
17123
0
        if (bufsize != BUFSIZ) {
17124
0
            int result = setvbuf(f, NULL, bufsize ? _IOFBF : _IONBF, bufsize);
17125
0
            if (result) {
17126
0
                janet_panic("failed to set buffer size for file");
17127
0
            }
17128
0
        }
17129
0
    }
17130
0
    return f ? janet_makefile(f, flags)
17131
0
           : (flags & JANET_FILE_NONIL) ? (janet_panicf("failed to open file %s: %s", fname, janet_strerror(errno)), janet_wrap_nil())
17132
0
           : janet_wrap_nil();
17133
0
}
17134
17135
/* Read up to n bytes into buffer. */
17136
0
static void read_chunk(JanetFile *iof, JanetBuffer *buffer, int32_t nBytesMax) {
17137
0
    if (!(iof->flags & (JANET_FILE_READ | JANET_FILE_UPDATE)))
17138
0
        janet_panic("file is not readable");
17139
0
    janet_buffer_extra(buffer, nBytesMax);
17140
0
    size_t ntoread = nBytesMax;
17141
0
    size_t nread = fread((char *)(buffer->data + buffer->count), 1, ntoread, iof->file);
17142
0
    if (nread != ntoread && ferror(iof->file))
17143
0
        janet_panic("could not read file");
17144
0
    buffer->count += (int32_t) nread;
17145
0
}
17146
17147
/* Read a certain number of bytes into memory */
17148
JANET_CORE_FN(cfun_io_fread,
17149
              "(file/read f what &opt buf)",
17150
              "Read a number of bytes from a file `f` into a buffer. A buffer `buf` can "
17151
              "be provided as an optional third argument, otherwise a new buffer "
17152
              "is created. `what` can either be an integer or a keyword. Returns the "
17153
              "buffer with file contents. "
17154
              "Values for `what`:\n\n"
17155
              "* :all - read the whole file\n\n"
17156
              "* :line - read up to and including the next newline character\n\n"
17157
0
              "* n (integer) - read up to n bytes from the file") {
17158
0
    janet_arity(argc, 2, 3);
17159
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17160
0
    if (iof->flags & JANET_FILE_CLOSED) janet_panic("file is closed");
17161
0
    JanetBuffer *buffer;
17162
0
    if (argc == 2) {
17163
0
        buffer = janet_buffer(0);
17164
0
    } else {
17165
0
        buffer = janet_getbuffer(argv, 2);
17166
0
    }
17167
0
    int32_t bufstart = buffer->count;
17168
0
    if (janet_checktype(argv[1], JANET_KEYWORD)) {
17169
0
        const uint8_t *sym = janet_unwrap_keyword(argv[1]);
17170
0
        if (!janet_cstrcmp(sym, "all")) {
17171
0
            int32_t sizeBefore;
17172
0
            do {
17173
0
                sizeBefore = buffer->count;
17174
0
                read_chunk(iof, buffer, 4096);
17175
0
            } while (sizeBefore < buffer->count);
17176
            /* Never return nil for :all */
17177
0
            return janet_wrap_buffer(buffer);
17178
0
        } else if (!janet_cstrcmp(sym, "line")) {
17179
0
            for (;;) {
17180
0
                int x = fgetc(iof->file);
17181
0
                if (x != EOF) janet_buffer_push_u8(buffer, (uint8_t)x);
17182
0
                if (x == EOF || x == '\n') break;
17183
0
            }
17184
0
        } else {
17185
0
            janet_panicf("expected one of :all, :line, got %v", argv[1]);
17186
0
        }
17187
0
    } else {
17188
0
        int32_t len = janet_getinteger(argv, 1);
17189
0
        if (len < 0) janet_panic("expected positive integer");
17190
0
        read_chunk(iof, buffer, len);
17191
0
    }
17192
0
    if (bufstart == buffer->count) return janet_wrap_nil();
17193
0
    return janet_wrap_buffer(buffer);
17194
0
}
17195
17196
/* Write bytes to a file */
17197
JANET_CORE_FN(cfun_io_fwrite,
17198
              "(file/write f bytes)",
17199
              "Writes to a file. 'bytes' must be string, buffer, or symbol. Returns the "
17200
0
              "file.") {
17201
0
    janet_arity(argc, 1, -1);
17202
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17203
0
    if (iof->flags & JANET_FILE_CLOSED)
17204
0
        janet_panic("file is closed");
17205
0
    if (!(iof->flags & (JANET_FILE_WRITE | JANET_FILE_APPEND | JANET_FILE_UPDATE)))
17206
0
        janet_panic("file is not writeable");
17207
0
    int32_t i;
17208
    /* Verify all arguments before writing to file */
17209
0
    for (i = 1; i < argc; i++)
17210
0
        janet_getbytes(argv, i);
17211
0
    for (i = 1; i < argc; i++) {
17212
0
        JanetByteView view = janet_getbytes(argv, i);
17213
0
        if (view.len) {
17214
0
            if (!fwrite(view.bytes, view.len, 1, iof->file)) {
17215
0
                janet_panic("error writing to file");
17216
0
            }
17217
0
        }
17218
0
    }
17219
0
    return argv[0];
17220
0
}
17221
17222
0
static void io_assert_writeable(JanetFile *iof) {
17223
0
    if (iof->flags & JANET_FILE_CLOSED)
17224
0
        janet_panic("file is closed");
17225
0
    if (!(iof->flags & (JANET_FILE_WRITE | JANET_FILE_APPEND | JANET_FILE_UPDATE)))
17226
0
        janet_panic("file is not writeable");
17227
0
}
17228
17229
/* Flush the bytes in the file */
17230
JANET_CORE_FN(cfun_io_fflush,
17231
              "(file/flush f)",
17232
              "Flush any buffered bytes to the file system. In most files, writes are "
17233
0
              "buffered for efficiency reasons. Returns the file handle.") {
17234
0
    janet_fixarity(argc, 1);
17235
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17236
0
    io_assert_writeable(iof);
17237
0
    if (fflush(iof->file))
17238
0
        janet_panic("could not flush file");
17239
0
    return argv[0];
17240
0
}
17241
17242
#ifdef JANET_WINDOWS
17243
#define WEXITSTATUS(x) x
17244
#endif
17245
17246
/* For closing files from C API */
17247
0
int janet_file_close(JanetFile *file) {
17248
0
    int ret = 0;
17249
0
    if (!(file->flags & (JANET_FILE_NOT_CLOSEABLE | JANET_FILE_CLOSED))) {
17250
0
        ret = fclose(file->file);
17251
0
        file->flags |= JANET_FILE_CLOSED;
17252
0
        file->file = NULL; /* NULL dereference is easier to debug then other problems */
17253
0
        return ret;
17254
0
    }
17255
0
    return 0;
17256
0
}
17257
17258
/* Cleanup a file */
17259
0
static int cfun_io_gc(void *p, size_t len) {
17260
0
    (void) len;
17261
0
    JanetFile *iof = (JanetFile *)p;
17262
0
    janet_file_close(iof);
17263
0
    return 0;
17264
0
}
17265
17266
/* Close a file */
17267
JANET_CORE_FN(cfun_io_fclose,
17268
              "(file/close f)",
17269
              "Close a file and release all related resources. When you are "
17270
              "done reading a file, close it to prevent a resource leak and let "
17271
0
              "other processes read the file.") {
17272
0
    janet_fixarity(argc, 1);
17273
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17274
0
    if (iof->flags & JANET_FILE_CLOSED)
17275
0
        return janet_wrap_nil();
17276
0
    if (iof->flags & (JANET_FILE_NOT_CLOSEABLE))
17277
0
        janet_panic("file not closable");
17278
0
    if (fclose(iof->file)) {
17279
0
        iof->flags |= JANET_FILE_NOT_CLOSEABLE;
17280
0
        janet_panic("could not close file");
17281
0
    }
17282
0
    iof->flags |= JANET_FILE_CLOSED;
17283
0
    return janet_wrap_nil();
17284
0
}
17285
17286
/* Seek a file */
17287
JANET_CORE_FN(cfun_io_fseek,
17288
              "(file/seek f &opt whence n)",
17289
              "Jump to a relative location in the file `f`. `whence` must be one of:\n\n"
17290
              "* :cur - jump relative to the current file location\n\n"
17291
              "* :set - jump relative to the beginning of the file\n\n"
17292
              "* :end - jump relative to the end of the file\n\n"
17293
              "By default, `whence` is :cur. Optionally a value `n` may be passed "
17294
              "for the relative number of bytes to seek in the file. `n` may be a real "
17295
0
              "number to handle large files of more than 4GB. Returns the file handle.") {
17296
0
    janet_arity(argc, 2, 3);
17297
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17298
0
    if (iof->flags & JANET_FILE_CLOSED)
17299
0
        janet_panic("file is closed");
17300
0
    int64_t offset = 0;
17301
0
    int whence = SEEK_CUR;
17302
0
    if (argc >= 2) {
17303
0
        const uint8_t *whence_sym = janet_getkeyword(argv, 1);
17304
0
        if (!janet_cstrcmp(whence_sym, "cur")) {
17305
0
            whence = SEEK_CUR;
17306
0
        } else if (!janet_cstrcmp(whence_sym, "set")) {
17307
0
            whence = SEEK_SET;
17308
0
        } else if (!janet_cstrcmp(whence_sym, "end")) {
17309
0
            whence = SEEK_END;
17310
0
        } else {
17311
0
            janet_panicf("expected one of :cur, :set, :end, got %v", argv[1]);
17312
0
        }
17313
0
        if (argc == 3) {
17314
0
            offset = (int64_t) janet_getinteger64(argv, 2);
17315
0
        }
17316
0
    }
17317
0
    if (fseek(iof->file, offset, whence)) janet_panic("error seeking file");
17318
0
    return argv[0];
17319
0
}
17320
17321
JANET_CORE_FN(cfun_io_ftell,
17322
              "(file/tell f)",
17323
0
              "Get the current value of the file position for file `f`.") {
17324
0
    janet_fixarity(argc, 1);
17325
0
    JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
17326
0
    if (iof->flags & JANET_FILE_CLOSED)
17327
0
        janet_panic("file is closed");
17328
0
    int64_t pos = ftell(iof->file);
17329
0
    if (pos == -1) janet_panic("error getting position in file");
17330
0
    return janet_wrap_number((double)pos);
17331
0
}
17332
17333
static JanetMethod io_file_methods[] = {
17334
    {"close", cfun_io_fclose},
17335
    {"flush", cfun_io_fflush},
17336
    {"read", cfun_io_fread},
17337
    {"seek", cfun_io_fseek},
17338
    {"tell", cfun_io_ftell},
17339
    {"write", cfun_io_fwrite},
17340
    {NULL, NULL}
17341
};
17342
17343
0
static int io_file_get(void *p, Janet key, Janet *out) {
17344
0
    (void) p;
17345
0
    if (!janet_checktype(key, JANET_KEYWORD))
17346
0
        return 0;
17347
0
    return janet_getmethod(janet_unwrap_keyword(key), io_file_methods, out);
17348
0
}
17349
17350
0
static Janet io_file_next(void *p, Janet key) {
17351
0
    (void) p;
17352
0
    return janet_nextmethod(io_file_methods, key);
17353
0
}
17354
17355
0
static void io_file_marshal(void *p, JanetMarshalContext *ctx) {
17356
0
    JanetFile *iof = (JanetFile *)p;
17357
0
    if (ctx->flags & JANET_MARSHAL_UNSAFE) {
17358
0
        janet_marshal_abstract(ctx, p);
17359
#ifdef JANET_WINDOWS
17360
        janet_marshal_int(ctx, _fileno(iof->file));
17361
#else
17362
0
        janet_marshal_int(ctx, fileno(iof->file));
17363
0
#endif
17364
0
        janet_marshal_int(ctx, iof->flags);
17365
0
    } else {
17366
0
        janet_panic("cannot marshal file in safe mode");
17367
0
    }
17368
0
}
17369
17370
0
static void *io_file_unmarshal(JanetMarshalContext *ctx) {
17371
0
    if (ctx->flags & JANET_MARSHAL_UNSAFE) {
17372
0
        JanetFile *iof = janet_unmarshal_abstract(ctx, sizeof(JanetFile));
17373
0
        int32_t fd = janet_unmarshal_int(ctx);
17374
0
        int32_t flags = janet_unmarshal_int(ctx);
17375
0
        char fmt[4] = {0};
17376
0
        int index = 0;
17377
0
        if (flags & JANET_FILE_READ) fmt[index++] = 'r';
17378
0
        if (flags & JANET_FILE_APPEND) {
17379
0
            fmt[index++] = 'a';
17380
0
        } else if (flags & JANET_FILE_WRITE) {
17381
0
            fmt[index++] = 'w';
17382
0
        }
17383
#ifdef JANET_WINDOWS
17384
        iof->file = _fdopen(fd, fmt);
17385
#else
17386
0
        iof->file = fdopen(fd, fmt);
17387
0
#endif
17388
0
        if (iof->file == NULL) {
17389
0
            iof->flags = JANET_FILE_CLOSED;
17390
0
        } else {
17391
0
            iof->flags = flags;
17392
0
        }
17393
0
        return iof;
17394
0
    } else {
17395
0
        janet_panic("cannot unmarshal file in safe mode");
17396
0
    }
17397
0
}
17398
17399
0
FILE *janet_dynfile(const char *name, FILE *def) {
17400
0
    Janet x = janet_dyn(name);
17401
0
    if (!janet_checktype(x, JANET_ABSTRACT)) return def;
17402
0
    void *abstract = janet_unwrap_abstract(x);
17403
0
    if (janet_abstract_type(abstract) != &janet_file_type) return def;
17404
0
    JanetFile *iofile = abstract;
17405
0
    return iofile->file;
17406
0
}
17407
17408
static Janet cfun_io_print_impl_x(int32_t argc, Janet *argv, int newline,
17409
0
                                  FILE *dflt_file, int32_t offset, Janet x) {
17410
0
    FILE *f;
17411
0
    switch (janet_type(x)) {
17412
0
        default:
17413
0
            janet_panicf("cannot print to %v", x);
17414
0
        case JANET_BUFFER: {
17415
            /* Special case buffer */
17416
0
            JanetBuffer *buf = janet_unwrap_buffer(x);
17417
0
            for (int32_t i = offset; i < argc; ++i) {
17418
0
                janet_to_string_b(buf, argv[i]);
17419
0
            }
17420
0
            if (newline)
17421
0
                janet_buffer_push_u8(buf, '\n');
17422
0
            return janet_wrap_nil();
17423
0
        }
17424
0
        case JANET_FUNCTION: {
17425
            /* Special case function */
17426
0
            JanetFunction *fun = janet_unwrap_function(x);
17427
0
            JanetBuffer *buf = janet_buffer(0);
17428
0
            for (int32_t i = offset; i < argc; ++i) {
17429
0
                janet_to_string_b(buf, argv[i]);
17430
0
            }
17431
0
            if (newline)
17432
0
                janet_buffer_push_u8(buf, '\n');
17433
0
            Janet args[1] = { janet_wrap_buffer(buf) };
17434
0
            janet_call(fun, 1, args);
17435
0
            return janet_wrap_nil();
17436
0
        }
17437
0
        case JANET_NIL:
17438
0
            f = dflt_file;
17439
0
            if (f == NULL) janet_panic("cannot print to nil");
17440
0
            break;
17441
0
        case JANET_ABSTRACT: {
17442
0
            void *abstract = janet_unwrap_abstract(x);
17443
0
            if (janet_abstract_type(abstract) != &janet_file_type)
17444
0
                return janet_wrap_nil();
17445
0
            JanetFile *iofile = abstract;
17446
0
            io_assert_writeable(iofile);
17447
0
            f = iofile->file;
17448
0
            break;
17449
0
        }
17450
0
    }
17451
0
    for (int32_t i = offset; i < argc; ++i) {
17452
0
        int32_t len;
17453
0
        const uint8_t *vstr;
17454
0
        if (janet_checktype(argv[i], JANET_BUFFER)) {
17455
0
            JanetBuffer *b = janet_unwrap_buffer(argv[i]);
17456
0
            vstr = b->data;
17457
0
            len = b->count;
17458
0
        } else {
17459
0
            vstr = janet_to_string(argv[i]);
17460
0
            len = janet_string_length(vstr);
17461
0
        }
17462
0
        if (len) {
17463
0
            if (1 != fwrite(vstr, len, 1, f)) {
17464
0
                if (f == dflt_file) {
17465
0
                    janet_panicf("cannot print %d bytes", len);
17466
0
                } else {
17467
0
                    janet_panicf("cannot print %d bytes to %v", len, x);
17468
0
                }
17469
0
            }
17470
0
        }
17471
0
    }
17472
0
    if (newline)
17473
0
        putc('\n', f);
17474
0
    return janet_wrap_nil();
17475
0
}
17476
17477
static Janet cfun_io_print_impl(int32_t argc, Janet *argv,
17478
0
                                int newline, const char *name, FILE *dflt_file) {
17479
0
    Janet x = janet_dyn(name);
17480
0
    return cfun_io_print_impl_x(argc, argv, newline, dflt_file, 0, x);
17481
0
}
17482
17483
JANET_CORE_FN(cfun_io_print,
17484
              "(print & xs)",
17485
              "Print values to the console (standard out). Value are converted "
17486
              "to strings if they are not already. After printing all values, a "
17487
              "newline character is printed. Use the value of `(dyn :out stdout)` to determine "
17488
              "what to push characters to. Expects `(dyn :out stdout)` to be either a core/file or "
17489
0
              "a buffer. Returns nil.") {
17490
0
    return cfun_io_print_impl(argc, argv, 1, "out", stdout);
17491
0
}
17492
17493
JANET_CORE_FN(cfun_io_prin,
17494
              "(prin & xs)",
17495
0
              "Same as `print`, but does not add trailing newline.") {
17496
0
    return cfun_io_print_impl(argc, argv, 0, "out", stdout);
17497
0
}
17498
17499
JANET_CORE_FN(cfun_io_eprint,
17500
              "(eprint & xs)",
17501
0
              "Same as `print`, but uses `(dyn :err stderr)` instead of `(dyn :out stdout)`.") {
17502
0
    return cfun_io_print_impl(argc, argv, 1, "err", stderr);
17503
0
}
17504
17505
JANET_CORE_FN(cfun_io_eprin,
17506
              "(eprin & xs)",
17507
0
              "Same as `prin`, but uses `(dyn :err stderr)` instead of `(dyn :out stdout)`.") {
17508
0
    return cfun_io_print_impl(argc, argv, 0, "err", stderr);
17509
0
}
17510
17511
JANET_CORE_FN(cfun_io_xprint,
17512
              "(xprint to & xs)",
17513
              "Print to a file or other value explicitly (no dynamic bindings) with a trailing "
17514
              "newline character. The value to print "
17515
0
              "to is the first argument, and is otherwise the same as `print`. Returns nil.") {
17516
0
    janet_arity(argc, 1, -1);
17517
0
    return cfun_io_print_impl_x(argc, argv, 1, NULL, 1, argv[0]);
17518
0
}
17519
17520
JANET_CORE_FN(cfun_io_xprin,
17521
              "(xprin to & xs)",
17522
              "Print to a file or other value explicitly (no dynamic bindings). The value to print "
17523
0
              "to is the first argument, and is otherwise the same as `prin`. Returns nil.") {
17524
0
    janet_arity(argc, 1, -1);
17525
0
    return cfun_io_print_impl_x(argc, argv, 0, NULL, 1, argv[0]);
17526
0
}
17527
17528
static Janet cfun_io_printf_impl_x(int32_t argc, Janet *argv, int newline,
17529
0
                                   FILE *dflt_file, int32_t offset, Janet x) {
17530
0
    FILE *f;
17531
0
    const char *fmt = janet_getcstring(argv, offset);
17532
0
    switch (janet_type(x)) {
17533
0
        default:
17534
0
            janet_panicf("cannot print to %v", x);
17535
0
        case JANET_BUFFER: {
17536
            /* Special case buffer */
17537
0
            JanetBuffer *buf = janet_unwrap_buffer(x);
17538
0
            janet_buffer_format(buf, fmt, offset, argc, argv);
17539
0
            if (newline) janet_buffer_push_u8(buf, '\n');
17540
0
            return janet_wrap_nil();
17541
0
        }
17542
0
        case JANET_FUNCTION: {
17543
            /* Special case function */
17544
0
            JanetFunction *fun = janet_unwrap_function(x);
17545
0
            JanetBuffer *buf = janet_buffer(0);
17546
0
            janet_buffer_format(buf, fmt, offset, argc, argv);
17547
0
            if (newline) janet_buffer_push_u8(buf, '\n');
17548
0
            Janet args[1] = { janet_wrap_buffer(buf) };
17549
0
            janet_call(fun, 1, args);
17550
0
            return janet_wrap_nil();
17551
0
        }
17552
0
        case JANET_NIL:
17553
0
            f = dflt_file;
17554
0
            if (f == NULL) janet_panic("cannot print to nil");
17555
0
            break;
17556
0
        case JANET_ABSTRACT: {
17557
0
            void *abstract = janet_unwrap_abstract(x);
17558
0
            if (janet_abstract_type(abstract) != &janet_file_type)
17559
0
                return janet_wrap_nil();
17560
0
            JanetFile *iofile = abstract;
17561
0
            if (iofile->flags & JANET_FILE_CLOSED) {
17562
0
                janet_panic("cannot print to closed file");
17563
0
            }
17564
0
            io_assert_writeable(iofile);
17565
0
            f = iofile->file;
17566
0
            break;
17567
0
        }
17568
0
    }
17569
0
    JanetBuffer *buf = janet_buffer(10);
17570
0
    janet_buffer_format(buf, fmt, offset, argc, argv);
17571
0
    if (newline) janet_buffer_push_u8(buf, '\n');
17572
0
    if (buf->count) {
17573
0
        if (1 != fwrite(buf->data, buf->count, 1, f)) {
17574
0
            janet_panicf("could not print %d bytes to file", buf->count);
17575
0
        }
17576
0
    }
17577
    /* Clear buffer to make things easier for GC */
17578
0
    buf->count = 0;
17579
0
    buf->capacity = 0;
17580
0
    janet_free(buf->data);
17581
0
    buf->data = NULL;
17582
0
    return janet_wrap_nil();
17583
0
}
17584
17585
static Janet cfun_io_printf_impl(int32_t argc, Janet *argv, int newline,
17586
0
                                 const char *name, FILE *dflt_file) {
17587
0
    janet_arity(argc, 1, -1);
17588
0
    Janet x = janet_dyn(name);
17589
0
    return cfun_io_printf_impl_x(argc, argv, newline, dflt_file, 0, x);
17590
17591
0
}
17592
17593
JANET_CORE_FN(cfun_io_printf,
17594
              "(printf fmt & xs)",
17595
0
              "Prints output formatted as if with `(string/format fmt ;xs)` to `(dyn :out stdout)` with a trailing newline.") {
17596
0
    return cfun_io_printf_impl(argc, argv, 1, "out", stdout);
17597
0
}
17598
17599
JANET_CORE_FN(cfun_io_prinf,
17600
              "(prinf fmt & xs)",
17601
0
              "Like `printf` but with no trailing newline.") {
17602
0
    return cfun_io_printf_impl(argc, argv, 0, "out", stdout);
17603
0
}
17604
17605
JANET_CORE_FN(cfun_io_eprintf,
17606
              "(eprintf fmt & xs)",
17607
0
              "Prints output formatted as if with `(string/format fmt ;xs)` to `(dyn :err stderr)` with a trailing newline.") {
17608
0
    return cfun_io_printf_impl(argc, argv, 1, "err", stderr);
17609
0
}
17610
17611
JANET_CORE_FN(cfun_io_eprinf,
17612
              "(eprinf fmt & xs)",
17613
0
              "Like `eprintf` but with no trailing newline.") {
17614
0
    return cfun_io_printf_impl(argc, argv, 0, "err", stderr);
17615
0
}
17616
17617
JANET_CORE_FN(cfun_io_xprintf,
17618
              "(xprintf to fmt & xs)",
17619
0
              "Like `printf` but prints to an explicit file or value `to`. Returns nil.") {
17620
0
    janet_arity(argc, 2, -1);
17621
0
    return cfun_io_printf_impl_x(argc, argv, 1, NULL, 1, argv[0]);
17622
0
}
17623
17624
JANET_CORE_FN(cfun_io_xprinf,
17625
              "(xprinf to fmt & xs)",
17626
0
              "Like `prinf` but prints to an explicit file or value `to`. Returns nil.") {
17627
0
    janet_arity(argc, 2, -1);
17628
0
    return cfun_io_printf_impl_x(argc, argv, 0, NULL, 1, argv[0]);
17629
0
}
17630
17631
0
static void janet_flusher(const char *name, FILE *dflt_file) {
17632
0
    Janet x = janet_dyn(name);
17633
0
    switch (janet_type(x)) {
17634
0
        default:
17635
0
            break;
17636
0
        case JANET_NIL:
17637
0
            fflush(dflt_file);
17638
0
            break;
17639
0
        case JANET_ABSTRACT: {
17640
0
            void *abstract = janet_unwrap_abstract(x);
17641
0
            if (janet_abstract_type(abstract) != &janet_file_type) break;
17642
0
            JanetFile *iofile = abstract;
17643
0
            fflush(iofile->file);
17644
0
            break;
17645
0
        }
17646
0
    }
17647
0
}
17648
17649
JANET_CORE_FN(cfun_io_flush,
17650
              "(flush)",
17651
0
              "Flush `(dyn :out stdout)` if it is a file, otherwise do nothing.") {
17652
0
    janet_fixarity(argc, 0);
17653
0
    (void) argv;
17654
0
    janet_flusher("out", stdout);
17655
0
    return janet_wrap_nil();
17656
0
}
17657
17658
JANET_CORE_FN(cfun_io_eflush,
17659
              "(eflush)",
17660
0
              "Flush `(dyn :err stderr)` if it is a file, otherwise do nothing.") {
17661
0
    janet_fixarity(argc, 0);
17662
0
    (void) argv;
17663
0
    janet_flusher("err", stderr);
17664
0
    return janet_wrap_nil();
17665
0
}
17666
17667
0
void janet_dynprintf(const char *name, FILE *dflt_file, const char *format, ...) {
17668
0
    va_list args;
17669
0
    va_start(args, format);
17670
0
    Janet x = janet_dyn(name);
17671
0
    JanetType xtype = janet_type(x);
17672
0
    switch (xtype) {
17673
0
        default:
17674
            /* Other values simply do nothing */
17675
0
            break;
17676
0
        case JANET_NIL:
17677
0
        case JANET_ABSTRACT: {
17678
0
            FILE *f = dflt_file;
17679
0
            JanetBuffer buffer;
17680
0
            int32_t len = 0;
17681
0
            while (format[len]) len++;
17682
0
            janet_buffer_init(&buffer, len);
17683
0
            janet_formatbv(&buffer, format, args);
17684
0
            if (xtype == JANET_ABSTRACT) {
17685
0
                void *abstract = janet_unwrap_abstract(x);
17686
0
                if (janet_abstract_type(abstract) != &janet_file_type)
17687
0
                    break;
17688
0
                JanetFile *iofile = abstract;
17689
0
                io_assert_writeable(iofile);
17690
0
                f = iofile->file;
17691
0
            }
17692
0
            fwrite(buffer.data, buffer.count, 1, f);
17693
0
            janet_buffer_deinit(&buffer);
17694
0
            break;
17695
0
        }
17696
0
        case JANET_FUNCTION: {
17697
0
            JanetFunction *fun = janet_unwrap_function(x);
17698
0
            int32_t len = 0;
17699
0
            while (format[len]) len++;
17700
0
            JanetBuffer *buf = janet_buffer(len);
17701
0
            janet_formatbv(buf, format, args);
17702
0
            Janet args[1] = { janet_wrap_buffer(buf) };
17703
0
            janet_call(fun, 1, args);
17704
0
            break;
17705
0
        }
17706
0
        case JANET_BUFFER:
17707
0
            janet_formatbv(janet_unwrap_buffer(x), format, args);
17708
0
            break;
17709
0
    }
17710
0
    va_end(args);
17711
0
    return;
17712
0
}
17713
17714
/* C API */
17715
17716
0
JanetFile *janet_getjfile(const Janet *argv, int32_t n) {
17717
0
    return janet_getabstract(argv, n, &janet_file_type);
17718
0
}
17719
17720
0
FILE *janet_getfile(const Janet *argv, int32_t n, int32_t *flags) {
17721
0
    JanetFile *iof = janet_getabstract(argv, n, &janet_file_type);
17722
0
    if (NULL != flags) *flags = iof->flags;
17723
0
    return iof->file;
17724
0
}
17725
17726
0
JanetFile *janet_makejfile(FILE *f, int32_t flags) {
17727
0
    return makef(f, flags);
17728
0
}
17729
17730
0
Janet janet_makefile(FILE *f, int32_t flags) {
17731
0
    return janet_wrap_abstract(makef(f, flags));
17732
0
}
17733
17734
0
JanetAbstract janet_checkfile(Janet j) {
17735
0
    return janet_checkabstract(j, &janet_file_type);
17736
0
}
17737
17738
0
FILE *janet_unwrapfile(Janet j, int32_t *flags) {
17739
0
    JanetFile *iof = janet_unwrap_abstract(j);
17740
0
    if (NULL != flags) *flags = iof->flags;
17741
0
    return iof->file;
17742
0
}
17743
17744
/* Module entry point */
17745
0
void janet_lib_io(JanetTable *env) {
17746
0
    JanetRegExt io_cfuns[] = {
17747
0
        JANET_CORE_REG("print", cfun_io_print),
17748
0
        JANET_CORE_REG("prin", cfun_io_prin),
17749
0
        JANET_CORE_REG("printf", cfun_io_printf),
17750
0
        JANET_CORE_REG("prinf", cfun_io_prinf),
17751
0
        JANET_CORE_REG("eprin", cfun_io_eprin),
17752
0
        JANET_CORE_REG("eprint", cfun_io_eprint),
17753
0
        JANET_CORE_REG("eprintf", cfun_io_eprintf),
17754
0
        JANET_CORE_REG("eprinf", cfun_io_eprinf),
17755
0
        JANET_CORE_REG("xprint", cfun_io_xprint),
17756
0
        JANET_CORE_REG("xprin", cfun_io_xprin),
17757
0
        JANET_CORE_REG("xprintf", cfun_io_xprintf),
17758
0
        JANET_CORE_REG("xprinf", cfun_io_xprinf),
17759
0
        JANET_CORE_REG("flush", cfun_io_flush),
17760
0
        JANET_CORE_REG("eflush", cfun_io_eflush),
17761
0
        JANET_CORE_REG("file/temp", cfun_io_temp),
17762
0
        JANET_CORE_REG("file/open", cfun_io_fopen),
17763
0
        JANET_CORE_REG("file/close", cfun_io_fclose),
17764
0
        JANET_CORE_REG("file/read", cfun_io_fread),
17765
0
        JANET_CORE_REG("file/write", cfun_io_fwrite),
17766
0
        JANET_CORE_REG("file/flush", cfun_io_fflush),
17767
0
        JANET_CORE_REG("file/seek", cfun_io_fseek),
17768
0
        JANET_CORE_REG("file/tell", cfun_io_ftell),
17769
0
        JANET_REG_END
17770
0
    };
17771
0
    janet_core_cfuns_ext(env, NULL, io_cfuns);
17772
0
    janet_register_abstract_type(&janet_file_type);
17773
0
    int default_flags = JANET_FILE_NOT_CLOSEABLE | JANET_FILE_SERIALIZABLE;
17774
    /* stdout */
17775
0
    JANET_CORE_DEF(env, "stdout",
17776
0
                   janet_makefile(stdout, JANET_FILE_APPEND | default_flags),
17777
0
                   "The standard output file.");
17778
    /* stderr */
17779
0
    JANET_CORE_DEF(env, "stderr",
17780
0
                   janet_makefile(stderr, JANET_FILE_APPEND | default_flags),
17781
0
                   "The standard error file.");
17782
    /* stdin */
17783
0
    JANET_CORE_DEF(env, "stdin",
17784
0
                   janet_makefile(stdin, JANET_FILE_READ | default_flags),
17785
0
                   "The standard input file.");
17786
17787
0
}
17788
17789
17790
/* src/core/marsh.c */
17791
#line 0 "src/core/marsh.c"
17792
17793
/*
17794
* Copyright (c) 2025 Calvin Rose
17795
*
17796
* Permission is hereby granted, free of charge, to any person obtaining a copy
17797
* of this software and associated documentation files (the "Software"), to
17798
* deal in the Software without restriction, including without limitation the
17799
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
17800
* sell copies of the Software, and to permit persons to whom the Software is
17801
* furnished to do so, subject to the following conditions:
17802
*
17803
* The above copyright notice and this permission notice shall be included in
17804
* all copies or substantial portions of the Software.
17805
*
17806
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17807
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17808
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17809
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17810
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17811
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
17812
* IN THE SOFTWARE.
17813
*/
17814
17815
#ifndef JANET_AMALG
17816
#include "features.h"
17817
#include <janet.h>
17818
#include "state.h"
17819
#include "vector.h"
17820
#include "gc.h"
17821
#include "fiber.h"
17822
#include "util.h"
17823
#endif
17824
17825
typedef struct {
17826
    JanetBuffer *buf;
17827
    JanetTable seen;
17828
    JanetTable *rreg;
17829
    JanetFuncEnv **seen_envs;
17830
    JanetFuncDef **seen_defs;
17831
    int32_t nextid;
17832
    int maybe_cycles;
17833
} MarshalState;
17834
17835
/* Lead bytes in marshaling protocol */
17836
enum {
17837
    LB_REAL = 200,
17838
    LB_NIL, /* 201 */
17839
    LB_FALSE, /* 202 */
17840
    LB_TRUE,  /* 203 */
17841
    LB_FIBER, /* 204 */
17842
    LB_INTEGER, /* 205 */
17843
    LB_STRING, /* 206 */
17844
    LB_SYMBOL, /* 207 */
17845
    LB_KEYWORD, /* 208 */
17846
    LB_ARRAY, /* 209 */
17847
    LB_TUPLE, /* 210 */
17848
    LB_TABLE, /* 211 */
17849
    LB_TABLE_PROTO, /* 212 */
17850
    LB_STRUCT, /* 213 */
17851
    LB_BUFFER, /* 214 */
17852
    LB_FUNCTION, /* 215 */
17853
    LB_REGISTRY, /* 216 */
17854
    LB_ABSTRACT, /* 217 */
17855
    LB_REFERENCE, /* 218 */
17856
    LB_FUNCENV_REF, /* 219 */
17857
    LB_FUNCDEF_REF, /* 220 */
17858
    LB_UNSAFE_CFUNCTION, /* 221 */
17859
    LB_UNSAFE_POINTER, /* 222 */
17860
    LB_STRUCT_PROTO, /* 223 */
17861
#ifdef JANET_EV
17862
    LB_THREADED_ABSTRACT, /* 224 */
17863
    LB_POINTER_BUFFER, /* 225 */
17864
#endif
17865
    LB_TABLE_WEAKK, /* 226 */
17866
    LB_TABLE_WEAKV, /* 227 */
17867
    LB_TABLE_WEAKKV, /* 228 */
17868
    LB_TABLE_WEAKK_PROTO, /* 229 */
17869
    LB_TABLE_WEAKV_PROTO, /* 230 */
17870
    LB_TABLE_WEAKKV_PROTO, /* 231 */
17871
    LB_ARRAY_WEAK, /* 232 */
17872
} LeadBytes;
17873
17874
/* Helper to look inside an entry in an environment */
17875
0
static Janet entry_getval(Janet env_entry) {
17876
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
17877
0
        JanetTable *entry = janet_unwrap_table(env_entry);
17878
0
        Janet checkval = janet_table_get(entry, janet_ckeywordv("value"));
17879
0
        if (janet_checktype(checkval, JANET_NIL)) {
17880
0
            checkval = janet_table_get(entry, janet_ckeywordv("ref"));
17881
0
        }
17882
0
        return checkval;
17883
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
17884
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
17885
0
        Janet checkval = janet_struct_get(entry, janet_ckeywordv("value"));
17886
0
        if (janet_checktype(checkval, JANET_NIL)) {
17887
0
            checkval = janet_struct_get(entry, janet_ckeywordv("ref"));
17888
0
        }
17889
0
        return checkval;
17890
0
    } else {
17891
0
        return janet_wrap_nil();
17892
0
    }
17893
0
}
17894
17895
/* Merge values from an environment into an existing lookup table. */
17896
0
void janet_env_lookup_into(JanetTable *renv, JanetTable *env, const char *prefix, int recurse) {
17897
0
    while (env) {
17898
0
        for (int32_t i = 0; i < env->capacity; i++) {
17899
0
            if (janet_checktype(env->data[i].key, JANET_SYMBOL)) {
17900
0
                if (prefix) {
17901
0
                    int32_t prelen = (int32_t) strlen(prefix);
17902
0
                    const uint8_t *oldsym = janet_unwrap_symbol(env->data[i].key);
17903
0
                    int32_t oldlen = janet_string_length(oldsym);
17904
0
                    uint8_t *symbuf = janet_smalloc(prelen + oldlen);
17905
0
                    safe_memcpy(symbuf, prefix, prelen);
17906
0
                    safe_memcpy(symbuf + prelen, oldsym, oldlen);
17907
0
                    Janet s = janet_symbolv(symbuf, prelen + oldlen);
17908
0
                    janet_sfree(symbuf);
17909
0
                    janet_table_put(renv, s, entry_getval(env->data[i].value));
17910
0
                } else {
17911
0
                    janet_table_put(renv,
17912
0
                                    env->data[i].key,
17913
0
                                    entry_getval(env->data[i].value));
17914
0
                }
17915
0
            }
17916
0
        }
17917
0
        env = recurse ? env->proto : NULL;
17918
0
    }
17919
0
}
17920
17921
/* Make a forward lookup table from an environment (for unmarshaling) */
17922
0
JanetTable *janet_env_lookup(JanetTable *env) {
17923
0
    JanetTable *renv = janet_table(env->count);
17924
0
    janet_env_lookup_into(renv, env, NULL, 1);
17925
0
    return renv;
17926
0
}
17927
17928
/* Marshal an integer onto the buffer */
17929
0
static void pushint(MarshalState *st, int32_t x) {
17930
0
    if (x >= 0 && x < 128) {
17931
0
        janet_buffer_push_u8(st->buf, x);
17932
0
    } else if (x <= 8191 && x >= -8192) {
17933
0
        uint8_t intbuf[2];
17934
0
        intbuf[0] = ((x >> 8) & 0x3F) | 0x80;
17935
0
        intbuf[1] = x & 0xFF;
17936
0
        janet_buffer_push_bytes(st->buf, intbuf, 2);
17937
0
    } else {
17938
0
        uint8_t intbuf[5];
17939
0
        intbuf[0] = LB_INTEGER;
17940
0
        intbuf[1] = (x >> 24) & 0xFF;
17941
0
        intbuf[2] = (x >> 16) & 0xFF;
17942
0
        intbuf[3] = (x >> 8) & 0xFF;
17943
0
        intbuf[4] = x & 0xFF;
17944
0
        janet_buffer_push_bytes(st->buf, intbuf, 5);
17945
0
    }
17946
0
}
17947
17948
0
static void pushbyte(MarshalState *st, uint8_t b) {
17949
0
    janet_buffer_push_u8(st->buf, b);
17950
0
}
17951
17952
0
static void pushbytes(MarshalState *st, const uint8_t *bytes, int32_t len) {
17953
0
    janet_buffer_push_bytes(st->buf, bytes, len);
17954
0
}
17955
17956
0
static void pushpointer(MarshalState *st, const void *ptr) {
17957
0
    janet_buffer_push_bytes(st->buf, (const uint8_t *) &ptr, sizeof(ptr));
17958
0
}
17959
17960
/* Marshal a size_t onto the buffer */
17961
0
static void push64(MarshalState *st, uint64_t x) {
17962
0
    if (x <= 0xF0) {
17963
        /* Single byte */
17964
0
        pushbyte(st, (uint8_t) x);
17965
0
    } else {
17966
        /* Multibyte, little endian */
17967
0
        uint8_t bytes[9];
17968
0
        int nbytes = 0;
17969
0
        while (x) {
17970
0
            bytes[++nbytes] = x & 0xFF;
17971
0
            x >>= 8;
17972
0
        }
17973
0
        bytes[0] = 0xF0 + nbytes;
17974
0
        pushbytes(st, bytes, nbytes + 1);
17975
0
    }
17976
0
}
17977
17978
/* Forward declaration to enable mutual recursion. */
17979
static void marshal_one(MarshalState *st, Janet x, int flags);
17980
static void marshal_one_fiber(MarshalState *st, JanetFiber *fiber, int flags);
17981
static void marshal_one_def(MarshalState *st, JanetFuncDef *def, int flags);
17982
static void marshal_one_env(MarshalState *st, JanetFuncEnv *env, int flags);
17983
17984
/* Prevent stack overflows */
17985
0
#define MARSH_STACKCHECK if ((flags & 0xFFFF) > JANET_RECURSION_GUARD) janet_panic("stack overflow")
17986
17987
/* Quick check if a fiber cannot be marshalled. This is will
17988
 * have no false positives, but may have false negatives. */
17989
0
static int fiber_cannot_be_marshalled(JanetFiber *fiber) {
17990
0
    if (janet_fiber_status(fiber) == JANET_STATUS_ALIVE) return 1;
17991
0
    int32_t i = fiber->frame;
17992
0
    while (i > 0) {
17993
0
        JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
17994
0
        if (!frame->func) return 1; /* has cfunction on stack */
17995
0
        i = frame->prevframe;
17996
0
    }
17997
0
    return 0;
17998
0
}
17999
18000
/* Marshal a function env */
18001
0
static void marshal_one_env(MarshalState *st, JanetFuncEnv *env, int flags) {
18002
0
    MARSH_STACKCHECK;
18003
0
    for (int32_t i = 0; i < janet_v_count(st->seen_envs); i++) {
18004
0
        if (st->seen_envs[i] == env) {
18005
0
            pushbyte(st, LB_FUNCENV_REF);
18006
0
            pushint(st, i);
18007
0
            return;
18008
0
        }
18009
0
    }
18010
0
    janet_env_valid(env);
18011
0
    janet_v_push(st->seen_envs, env);
18012
18013
    /* Special case for early detachment */
18014
0
    if (env->offset > 0 && fiber_cannot_be_marshalled(env->as.fiber)) {
18015
0
        pushint(st, 0);
18016
0
        pushint(st, env->length);
18017
0
        Janet *values = env->as.fiber->data + env->offset;
18018
0
        uint32_t *bitset = janet_stack_frame(values)->func->def->closure_bitset;
18019
0
        for (int32_t i = 0; i < env->length; i++) {
18020
0
            if (1 & (bitset[i >> 5] >> (i & 0x1F))) {
18021
0
                marshal_one(st, values[i], flags + 1);
18022
0
            } else {
18023
0
                pushbyte(st, LB_NIL);
18024
0
            }
18025
0
        }
18026
0
    } else {
18027
0
        janet_env_maybe_detach(env);
18028
0
        pushint(st, env->offset);
18029
0
        pushint(st, env->length);
18030
0
        if (env->offset > 0) {
18031
            /* On stack variant */
18032
0
            marshal_one(st, janet_wrap_fiber(env->as.fiber), flags + 1);
18033
0
        } else {
18034
            /* Off stack variant */
18035
0
            for (int32_t i = 0; i < env->length; i++)
18036
0
                marshal_one(st, env->as.values[i], flags + 1);
18037
0
        }
18038
0
    }
18039
0
}
18040
18041
/* Marshal a sequence of u32s */
18042
0
static void janet_marshal_u32s(MarshalState *st, const uint32_t *u32s, int32_t n) {
18043
0
    for (int32_t i = 0; i < n; i++) {
18044
0
        pushbyte(st, u32s[i] & 0xFF);
18045
0
        pushbyte(st, (u32s[i] >> 8) & 0xFF);
18046
0
        pushbyte(st, (u32s[i] >> 16) & 0xFF);
18047
0
        pushbyte(st, (u32s[i] >> 24) & 0xFF);
18048
0
    }
18049
0
}
18050
18051
/* Marshal a function def */
18052
0
static void marshal_one_def(MarshalState *st, JanetFuncDef *def, int flags) {
18053
0
    MARSH_STACKCHECK;
18054
0
    for (int32_t i = 0; i < janet_v_count(st->seen_defs); i++) {
18055
0
        if (st->seen_defs[i] == def) {
18056
0
            pushbyte(st, LB_FUNCDEF_REF);
18057
0
            pushint(st, i);
18058
0
            return;
18059
0
        }
18060
0
    }
18061
    /* Add to lookup */
18062
0
    janet_v_push(st->seen_defs, def);
18063
18064
0
    pushint(st, def->flags);
18065
0
    pushint(st, def->slotcount);
18066
0
    pushint(st, def->arity);
18067
0
    pushint(st, def->min_arity);
18068
0
    pushint(st, def->max_arity);
18069
0
    pushint(st, def->constants_length);
18070
0
    pushint(st, def->bytecode_length);
18071
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASENVS)
18072
0
        pushint(st, def->environments_length);
18073
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS)
18074
0
        pushint(st, def->defs_length);
18075
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP)
18076
0
        pushint(st, def->symbolmap_length);
18077
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASNAME)
18078
0
        marshal_one(st, janet_wrap_string(def->name), flags);
18079
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCE)
18080
0
        marshal_one(st, janet_wrap_string(def->source), flags);
18081
18082
    /* marshal constants */
18083
0
    for (int32_t i = 0; i < def->constants_length; i++)
18084
0
        marshal_one(st, def->constants[i], flags + 1);
18085
18086
    /* Marshal symbol map, if needed */
18087
0
    for (int32_t i = 0; i < def->symbolmap_length; i++) {
18088
0
        pushint(st, (int32_t) def->symbolmap[i].birth_pc);
18089
0
        pushint(st, (int32_t) def->symbolmap[i].death_pc);
18090
0
        pushint(st, (int32_t) def->symbolmap[i].slot_index);
18091
0
        marshal_one(st, janet_wrap_symbol(def->symbolmap[i].symbol), flags + 1);
18092
0
    }
18093
18094
    /* marshal the bytecode */
18095
0
    janet_marshal_u32s(st, def->bytecode, def->bytecode_length);
18096
18097
    /* marshal the environments if needed */
18098
0
    for (int32_t i = 0; i < def->environments_length; i++)
18099
0
        pushint(st, def->environments[i]);
18100
18101
    /* marshal the sub funcdefs if needed */
18102
0
    for (int32_t i = 0; i < def->defs_length; i++)
18103
0
        marshal_one_def(st, def->defs[i], flags + 1);
18104
18105
    /* marshal source maps if needed */
18106
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCEMAP) {
18107
0
        int32_t current = 0;
18108
0
        for (int32_t i = 0; i < def->bytecode_length; i++) {
18109
0
            JanetSourceMapping map = def->sourcemap[i];
18110
0
            pushint(st, map.line - current);
18111
0
            pushint(st, map.column);
18112
0
            current = map.line;
18113
0
        }
18114
0
    }
18115
18116
    /* Marshal closure bitset, if needed */
18117
0
    if (def->flags & JANET_FUNCDEF_FLAG_HASCLOBITSET) {
18118
0
        janet_marshal_u32s(st, def->closure_bitset, ((def->slotcount + 31) >> 5));
18119
0
    }
18120
0
}
18121
18122
0
#define JANET_FIBER_FLAG_HASCHILD (1 << 29)
18123
0
#define JANET_FIBER_FLAG_HASENV   (1 << 30)
18124
0
#define JANET_STACKFRAME_HASENV   (INT32_MIN)
18125
18126
/* Marshal a fiber */
18127
0
static void marshal_one_fiber(MarshalState *st, JanetFiber *fiber, int flags) {
18128
0
    MARSH_STACKCHECK;
18129
0
    int32_t fflags = fiber->flags;
18130
0
    if (fiber->child) fflags |= JANET_FIBER_FLAG_HASCHILD;
18131
0
    if (fiber->env) fflags |= JANET_FIBER_FLAG_HASENV;
18132
0
    if (janet_fiber_status(fiber) == JANET_STATUS_ALIVE)
18133
0
        janet_panic("cannot marshal alive fiber");
18134
0
    pushint(st, fflags);
18135
0
    pushint(st, fiber->frame);
18136
0
    pushint(st, fiber->stackstart);
18137
0
    pushint(st, fiber->stacktop);
18138
0
    pushint(st, fiber->maxstack);
18139
    /* Do frames */
18140
0
    int32_t i = fiber->frame;
18141
0
    int32_t j = fiber->stackstart - JANET_FRAME_SIZE;
18142
0
    while (i > 0) {
18143
0
        JanetStackFrame *frame = (JanetStackFrame *)(fiber->data + i - JANET_FRAME_SIZE);
18144
0
        if (frame->env) frame->flags |= JANET_STACKFRAME_HASENV;
18145
0
        if (!frame->func) janet_panicf("cannot marshal fiber with c stackframe (%v)", janet_wrap_cfunction((JanetCFunction) frame->pc));
18146
0
        pushint(st, frame->flags);
18147
0
        pushint(st, frame->prevframe);
18148
0
        int32_t pcdiff = (int32_t)(frame->pc - frame->func->def->bytecode);
18149
0
        pushint(st, pcdiff);
18150
0
        marshal_one(st, janet_wrap_function(frame->func), flags + 1);
18151
0
        if (frame->env) marshal_one_env(st, frame->env, flags + 1);
18152
        /* Marshal all values in the stack frame */
18153
0
        for (int32_t k = i; k < j; k++)
18154
0
            marshal_one(st, fiber->data[k], flags + 1);
18155
0
        j = i - JANET_FRAME_SIZE;
18156
0
        i = frame->prevframe;
18157
0
    }
18158
0
    if (fiber->env) {
18159
0
        marshal_one(st, janet_wrap_table(fiber->env), flags + 1);
18160
0
    }
18161
0
    if (fiber->child)
18162
0
        marshal_one(st, janet_wrap_fiber(fiber->child), flags + 1);
18163
0
    marshal_one(st, fiber->last_value, flags + 1);
18164
0
}
18165
18166
0
void janet_marshal_size(JanetMarshalContext *ctx, size_t value) {
18167
0
    janet_marshal_int64(ctx, (int64_t) value);
18168
0
}
18169
18170
0
void janet_marshal_int64(JanetMarshalContext *ctx, int64_t value) {
18171
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18172
0
    push64(st, (uint64_t) value);
18173
0
}
18174
18175
0
void janet_marshal_int(JanetMarshalContext *ctx, int32_t value) {
18176
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18177
0
    pushint(st, value);
18178
0
}
18179
18180
/* Only use in unsafe - don't marshal pointers otherwise */
18181
0
void janet_marshal_ptr(JanetMarshalContext *ctx, const void *ptr) {
18182
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
18183
0
        janet_panic("can only marshal pointers in unsafe mode");
18184
0
    }
18185
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18186
0
    pushpointer(st, ptr);
18187
0
}
18188
18189
0
void janet_marshal_byte(JanetMarshalContext *ctx, uint8_t value) {
18190
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18191
0
    pushbyte(st, value);
18192
0
}
18193
18194
0
void janet_marshal_bytes(JanetMarshalContext *ctx, const uint8_t *bytes, size_t len) {
18195
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18196
0
    if (len > INT32_MAX) janet_panic("size_t too large to fit in buffer");
18197
0
    pushbytes(st, bytes, (int32_t) len);
18198
0
}
18199
18200
0
void janet_marshal_janet(JanetMarshalContext *ctx, Janet x) {
18201
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18202
0
    marshal_one(st, x, ctx->flags + 1);
18203
0
}
18204
18205
#ifdef JANET_MARSHAL_DEBUG
18206
#define MARK_SEEN() \
18207
    do { if (st->maybe_cycles) { \
18208
        Janet _check = janet_table_get(&st->seen, x); \
18209
        if (!janet_checktype(_check, JANET_NIL)) janet_eprintf("double MARK_SEEN on %v\n", x); \
18210
        janet_eprintf("made reference %d (%t) to %v\n", st->nextid, x, x); \
18211
        janet_table_put(&st->seen, x, janet_wrap_integer(st->nextid++)); \
18212
    } } while (0)
18213
#else
18214
#define MARK_SEEN() \
18215
0
    do { if (st->maybe_cycles) { \
18216
0
        janet_table_put(&st->seen, x, janet_wrap_integer(st->nextid++)); \
18217
0
    } } while (0)
18218
#endif
18219
18220
0
void janet_marshal_abstract(JanetMarshalContext *ctx, void *abstract) {
18221
0
    MarshalState *st = (MarshalState *)(ctx->m_state);
18222
0
    Janet x = janet_wrap_abstract(abstract);
18223
0
    MARK_SEEN();
18224
0
}
18225
18226
0
static void marshal_one_abstract(MarshalState *st, Janet x, int flags) {
18227
0
    void *abstract = janet_unwrap_abstract(x);
18228
0
#ifdef JANET_EV
18229
    /* Threaded abstract types get passed through as pointers in the unsafe mode */
18230
0
    if ((flags & JANET_MARSHAL_UNSAFE) &&
18231
0
            (JANET_MEMORY_THREADED_ABSTRACT == (janet_abstract_head(abstract)->gc.flags & JANET_MEM_TYPEBITS))) {
18232
18233
        /* Increment refcount before sending message. This prevents a "death in transit" problem
18234
         * where a message is garbage collected while in transit between two threads - i.e., the sending threads
18235
         * loses the reference and runs a garbage collection before the receiving thread gets the message. */
18236
0
        janet_abstract_incref(abstract);
18237
0
        pushbyte(st, LB_THREADED_ABSTRACT);
18238
0
        pushbytes(st, (uint8_t *) &abstract, sizeof(abstract));
18239
0
        MARK_SEEN();
18240
0
        return;
18241
0
    }
18242
0
#endif
18243
0
    const JanetAbstractType *at = janet_abstract_type(abstract);
18244
0
    if (at->marshal) {
18245
0
        pushbyte(st, LB_ABSTRACT);
18246
0
        marshal_one(st, janet_csymbolv(at->name), flags + 1);
18247
0
        JanetMarshalContext context = {st, NULL, flags + 1, NULL, at};
18248
0
        at->marshal(abstract, &context);
18249
0
    } else {
18250
0
        janet_panicf("cannot marshal %p", x);
18251
0
    }
18252
0
}
18253
18254
/* The main body of the marshaling function. Is the main
18255
 * entry point for the mutually recursive functions. */
18256
0
static void marshal_one(MarshalState *st, Janet x, int flags) {
18257
0
    MARSH_STACKCHECK;
18258
0
    JanetType type = janet_type(x);
18259
18260
    /* Check simple primitives (non reference types, no benefit from memoization) */
18261
0
    switch (type) {
18262
0
        default:
18263
0
            break;
18264
0
        case JANET_NIL:
18265
0
            pushbyte(st, LB_NIL);
18266
0
            return;
18267
0
        case JANET_BOOLEAN:
18268
0
            pushbyte(st, janet_unwrap_boolean(x) ? LB_TRUE : LB_FALSE);
18269
0
            return;
18270
0
        case JANET_NUMBER: {
18271
0
            double xval = janet_unwrap_number(x);
18272
0
            if (janet_checkintrange(xval)) {
18273
0
                pushint(st, (int32_t) xval);
18274
0
                return;
18275
0
            }
18276
0
            break;
18277
0
        }
18278
0
    }
18279
18280
    /* Check reference and registry value */
18281
0
    {
18282
0
        Janet check;
18283
0
        if (st->maybe_cycles) {
18284
0
            check = janet_table_get(&st->seen, x);
18285
0
            if (janet_checkint(check)) {
18286
0
                pushbyte(st, LB_REFERENCE);
18287
0
                pushint(st, janet_unwrap_integer(check));
18288
0
                return;
18289
0
            }
18290
0
        }
18291
0
        if (st->rreg) {
18292
0
            check = janet_table_get(st->rreg, x);
18293
0
            if (janet_checktype(check, JANET_SYMBOL)) {
18294
0
                MARK_SEEN();
18295
0
                const uint8_t *regname = janet_unwrap_symbol(check);
18296
0
                pushbyte(st, LB_REGISTRY);
18297
0
                pushint(st, janet_string_length(regname));
18298
0
                pushbytes(st, regname, janet_string_length(regname));
18299
0
                return;
18300
0
            }
18301
0
        }
18302
0
    }
18303
18304
    /* Reference types */
18305
0
    switch (type) {
18306
0
        case JANET_NUMBER: {
18307
0
            union {
18308
0
                double d;
18309
0
                uint8_t bytes[8];
18310
0
            } u;
18311
0
            u.d = janet_unwrap_number(x);
18312
#ifdef JANET_BIG_ENDIAN
18313
            /* Swap byte order */
18314
            uint8_t temp;
18315
            temp = u.bytes[7];
18316
            u.bytes[7] = u.bytes[0];
18317
            u.bytes[0] = temp;
18318
            temp = u.bytes[6];
18319
            u.bytes[6] = u.bytes[1];
18320
            u.bytes[1] = temp;
18321
            temp = u.bytes[5];
18322
            u.bytes[5] = u.bytes[2];
18323
            u.bytes[2] = temp;
18324
            temp = u.bytes[4];
18325
            u.bytes[4] = u.bytes[3];
18326
            u.bytes[3] = temp;
18327
#endif
18328
0
            pushbyte(st, LB_REAL);
18329
0
            pushbytes(st, u.bytes, 8);
18330
0
            MARK_SEEN();
18331
0
            return;
18332
0
        }
18333
0
        case JANET_STRING:
18334
0
        case JANET_SYMBOL:
18335
0
        case JANET_KEYWORD: {
18336
0
            const uint8_t *str = janet_unwrap_string(x);
18337
0
            int32_t length = janet_string_length(str);
18338
            /* Record reference */
18339
0
            MARK_SEEN();
18340
0
            uint8_t lb = (type == JANET_STRING) ? LB_STRING :
18341
0
                         (type == JANET_SYMBOL) ? LB_SYMBOL :
18342
0
                         LB_KEYWORD;
18343
0
            pushbyte(st, lb);
18344
0
            pushint(st, length);
18345
0
            pushbytes(st, str, length);
18346
0
            return;
18347
0
        }
18348
0
        case JANET_BUFFER: {
18349
0
            JanetBuffer *buffer = janet_unwrap_buffer(x);
18350
            /* Record reference */
18351
0
            MARK_SEEN();
18352
0
#ifdef JANET_EV
18353
0
            if ((flags & JANET_MARSHAL_UNSAFE) &&
18354
0
                    (buffer->gc.flags & JANET_BUFFER_FLAG_NO_REALLOC)) {
18355
0
                pushbyte(st, LB_POINTER_BUFFER);
18356
0
                pushint(st, buffer->count);
18357
0
                pushint(st, buffer->capacity);
18358
0
                pushpointer(st, buffer->data);
18359
0
                return;
18360
0
            }
18361
0
#endif
18362
0
            pushbyte(st, LB_BUFFER);
18363
0
            pushint(st, buffer->count);
18364
0
            pushbytes(st, buffer->data, buffer->count);
18365
0
            return;
18366
0
        }
18367
0
        case JANET_ARRAY: {
18368
0
            int32_t i;
18369
0
            JanetArray *a = janet_unwrap_array(x);
18370
0
            MARK_SEEN();
18371
0
            enum JanetMemoryType memtype = janet_gc_type(a);
18372
0
            pushbyte(st, memtype == JANET_MEMORY_ARRAY_WEAK ? LB_ARRAY_WEAK : LB_ARRAY);
18373
0
            pushint(st, a->count);
18374
0
            for (i = 0; i < a->count; i++)
18375
0
                marshal_one(st, a->data[i], flags + 1);
18376
0
            return;
18377
0
        }
18378
0
        case JANET_TUPLE: {
18379
0
            int32_t i, count, flag;
18380
0
            const Janet *tup = janet_unwrap_tuple(x);
18381
0
            count = janet_tuple_length(tup);
18382
0
            flag = janet_tuple_flag(tup) >> 16;
18383
0
            pushbyte(st, LB_TUPLE);
18384
0
            pushint(st, count);
18385
0
            pushint(st, flag);
18386
0
            for (i = 0; i < count; i++)
18387
0
                marshal_one(st, tup[i], flags + 1);
18388
            /* Mark as seen AFTER marshaling */
18389
0
            MARK_SEEN();
18390
0
            return;
18391
0
        }
18392
0
        case JANET_TABLE: {
18393
0
            JanetTable *t = janet_unwrap_table(x);
18394
0
            MARK_SEEN();
18395
0
            enum JanetMemoryType memtype = janet_gc_type(t);
18396
0
            if (memtype == JANET_MEMORY_TABLE_WEAKK) {
18397
0
                pushbyte(st, t->proto ? LB_TABLE_WEAKK_PROTO : LB_TABLE_WEAKK);
18398
0
            } else if (memtype == JANET_MEMORY_TABLE_WEAKV) {
18399
0
                pushbyte(st, t->proto ? LB_TABLE_WEAKV_PROTO : LB_TABLE_WEAKV);
18400
0
            } else if (memtype == JANET_MEMORY_TABLE_WEAKKV) {
18401
0
                pushbyte(st, t->proto ? LB_TABLE_WEAKKV_PROTO : LB_TABLE_WEAKKV);
18402
0
            } else {
18403
0
                pushbyte(st, t->proto ? LB_TABLE_PROTO : LB_TABLE);
18404
0
            }
18405
0
            pushint(st, t->count);
18406
0
            if (t->proto)
18407
0
                marshal_one(st, janet_wrap_table(t->proto), flags + 1);
18408
0
            for (int32_t i = 0; i < t->capacity; i++) {
18409
0
                if (janet_checktype(t->data[i].key, JANET_NIL))
18410
0
                    continue;
18411
0
                marshal_one(st, t->data[i].key, flags + 1);
18412
0
                marshal_one(st, t->data[i].value, flags + 1);
18413
0
            }
18414
0
            return;
18415
0
        }
18416
0
        case JANET_STRUCT: {
18417
0
            int32_t count;
18418
0
            const JanetKV *struct_ = janet_unwrap_struct(x);
18419
0
            count = janet_struct_length(struct_);
18420
0
            pushbyte(st, janet_struct_proto(struct_) ? LB_STRUCT_PROTO : LB_STRUCT);
18421
0
            pushint(st, count);
18422
0
            if (janet_struct_proto(struct_))
18423
0
                marshal_one(st, janet_wrap_struct(janet_struct_proto(struct_)), flags + 1);
18424
0
            for (int32_t i = 0; i < janet_struct_capacity(struct_); i++) {
18425
0
                if (janet_checktype(struct_[i].key, JANET_NIL))
18426
0
                    continue;
18427
0
                marshal_one(st, struct_[i].key, flags + 1);
18428
0
                marshal_one(st, struct_[i].value, flags + 1);
18429
0
            }
18430
            /* Mark as seen AFTER marshaling */
18431
0
            MARK_SEEN();
18432
0
            return;
18433
0
        }
18434
0
        case JANET_ABSTRACT: {
18435
0
            marshal_one_abstract(st, x, flags);
18436
0
            return;
18437
0
        }
18438
0
        case JANET_FUNCTION: {
18439
0
            pushbyte(st, LB_FUNCTION);
18440
0
            JanetFunction *func = janet_unwrap_function(x);
18441
0
            pushint(st, func->def->environments_length);
18442
            /* Mark seen before reading def */
18443
0
            MARK_SEEN();
18444
0
            marshal_one_def(st, func->def, flags);
18445
0
            for (int32_t i = 0; i < func->def->environments_length; i++)
18446
0
                marshal_one_env(st, func->envs[i], flags + 1);
18447
0
            return;
18448
0
        }
18449
0
        case JANET_FIBER: {
18450
0
            MARK_SEEN();
18451
0
            pushbyte(st, LB_FIBER);
18452
0
            marshal_one_fiber(st, janet_unwrap_fiber(x), flags + 1);
18453
0
            return;
18454
0
        }
18455
0
        case JANET_CFUNCTION: {
18456
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) goto no_registry;
18457
0
            MARK_SEEN();
18458
0
            pushbyte(st, LB_UNSAFE_CFUNCTION);
18459
0
            JanetCFunction cfn = janet_unwrap_cfunction(x);
18460
0
            pushbytes(st, (uint8_t *) &cfn, sizeof(JanetCFunction));
18461
0
            return;
18462
0
        }
18463
0
        case JANET_POINTER: {
18464
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) goto no_registry;
18465
0
            MARK_SEEN();
18466
0
            pushbyte(st, LB_UNSAFE_POINTER);
18467
0
            pushpointer(st, janet_unwrap_pointer(x));
18468
0
            return;
18469
0
        }
18470
0
    no_registry:
18471
0
        default: {
18472
0
            janet_panicf("no registry value and cannot marshal %p", x);
18473
0
        }
18474
0
    }
18475
0
#undef MARK_SEEN
18476
0
}
18477
18478
void janet_marshal(
18479
    JanetBuffer *buf,
18480
    Janet x,
18481
    JanetTable *rreg,
18482
0
    int flags) {
18483
0
    MarshalState st;
18484
0
    st.buf = buf;
18485
0
    st.nextid = 0;
18486
0
    st.seen_defs = NULL;
18487
0
    st.seen_envs = NULL;
18488
0
    st.rreg = rreg;
18489
0
    st.maybe_cycles = !(flags & JANET_MARSHAL_NO_CYCLES);
18490
0
    janet_table_init(&st.seen, 0);
18491
0
    marshal_one(&st, x, flags);
18492
0
    janet_table_deinit(&st.seen);
18493
0
    janet_v_free(st.seen_envs);
18494
0
    janet_v_free(st.seen_defs);
18495
0
}
18496
18497
typedef struct {
18498
    jmp_buf err;
18499
    Janet *lookup;
18500
    JanetTable *reg;
18501
    JanetFuncEnv **lookup_envs;
18502
    JanetFuncDef **lookup_defs;
18503
    const uint8_t *start;
18504
    const uint8_t *end;
18505
} UnmarshalState;
18506
18507
0
#define MARSH_EOS(st, data) do { \
18508
0
    if ((data) >= (st)->end) janet_panic("unexpected end of source");\
18509
0
} while (0)
18510
18511
/* Helper to read a 32 bit integer from an unmarshal state */
18512
0
static int32_t readint(UnmarshalState *st, const uint8_t **atdata) {
18513
0
    const uint8_t *data = *atdata;
18514
0
    int32_t ret;
18515
0
    MARSH_EOS(st, data);
18516
0
    if (*data < 128) {
18517
0
        ret = *data++;
18518
0
    } else if (*data < 192) {
18519
0
        MARSH_EOS(st, data + 1);
18520
0
        uint32_t uret = ((data[0] & 0x3F) << 8) + data[1];
18521
        /* Sign extend 18 MSBs */
18522
0
        uret |= (uret >> 13) ? 0xFFFFC000 : 0;
18523
0
        ret = (int32_t)uret;
18524
0
        data += 2;
18525
0
    } else if (*data == LB_INTEGER) {
18526
0
        MARSH_EOS(st, data + 4);
18527
0
        uint32_t ui = ((uint32_t)(data[1]) << 24) |
18528
0
                      ((uint32_t)(data[2]) << 16) |
18529
0
                      ((uint32_t)(data[3]) << 8) |
18530
0
                      (uint32_t)(data[4]);
18531
0
        ret = (int32_t)ui;
18532
0
        data += 5;
18533
0
    } else {
18534
0
        janet_panicf("expected integer, got byte %x at index %d",
18535
0
                     *data,
18536
0
                     data - st->start);
18537
0
        ret = 0;
18538
0
    }
18539
0
    *atdata = data;
18540
0
    return ret;
18541
0
}
18542
18543
/* Helper to read a natural number (int >= 0). */
18544
0
static int32_t readnat(UnmarshalState *st, const uint8_t **atdata) {
18545
0
    int32_t ret = readint(st, atdata);
18546
0
    if (ret < 0) {
18547
0
        janet_panicf("expected integer >= 0, got %d", ret);
18548
0
    }
18549
0
    return ret;
18550
0
}
18551
18552
/* Helper to read a size_t (up to 8 bytes unsigned). */
18553
0
static uint64_t read64(UnmarshalState *st, const uint8_t **atdata) {
18554
0
    uint64_t ret;
18555
0
    const uint8_t *data = *atdata;
18556
0
    MARSH_EOS(st, data);
18557
0
    if (*data <= 0xF0) {
18558
        /* Single byte */
18559
0
        ret = *data;
18560
0
        *atdata = data + 1;
18561
0
    } else {
18562
        /* Multibyte, little endian */
18563
0
        int nbytes = *data - 0xF0;
18564
0
        ret = 0;
18565
0
        if (nbytes > 8) janet_panic("invalid 64 bit integer");
18566
0
        MARSH_EOS(st, data + nbytes);
18567
0
        for (int i = nbytes; i > 0; i--)
18568
0
            ret = (ret << 8) + data[i];
18569
0
        *atdata = data + nbytes + 1;
18570
0
    }
18571
0
    return ret;
18572
0
}
18573
18574
#ifdef JANET_MARSHAL_DEBUG
18575
static void dump_reference_table(UnmarshalState *st) {
18576
    for (int32_t i = 0; i < janet_v_count(st->lookup); i++) {
18577
        janet_eprintf("  reference %d (%t) = %v\n", i, st->lookup[i], st->lookup[i]);
18578
    }
18579
}
18580
#endif
18581
18582
/* Assert a janet type */
18583
0
static void janet_asserttype(Janet x, JanetType t, UnmarshalState *st) {
18584
0
    if (!janet_checktype(x, t)) {
18585
#ifdef JANET_MARSHAL_DEBUG
18586
        dump_reference_table(st);
18587
#else
18588
0
        (void) st;
18589
0
#endif
18590
0
        janet_panicf("expected type %T, got %v", 1 << t, x);
18591
0
    }
18592
0
}
18593
18594
/* Forward declarations for mutual recursion */
18595
static const uint8_t *unmarshal_one(
18596
    UnmarshalState *st,
18597
    const uint8_t *data,
18598
    Janet *out,
18599
    int flags);
18600
static const uint8_t *unmarshal_one_env(
18601
    UnmarshalState *st,
18602
    const uint8_t *data,
18603
    JanetFuncEnv **out,
18604
    int flags);
18605
static const uint8_t *unmarshal_one_def(
18606
    UnmarshalState *st,
18607
    const uint8_t *data,
18608
    JanetFuncDef **out,
18609
    int flags);
18610
static const uint8_t *unmarshal_one_fiber(
18611
    UnmarshalState *st,
18612
    const uint8_t *data,
18613
    JanetFiber **out,
18614
    int flags);
18615
18616
/* Unmarshal a funcenv */
18617
static const uint8_t *unmarshal_one_env(
18618
    UnmarshalState *st,
18619
    const uint8_t *data,
18620
    JanetFuncEnv **out,
18621
0
    int flags) {
18622
0
    MARSH_EOS(st, data);
18623
0
    if (*data == LB_FUNCENV_REF) {
18624
0
        data++;
18625
0
        int32_t index = readint(st, &data);
18626
0
        if (index < 0 || index >= janet_v_count(st->lookup_envs))
18627
0
            janet_panicf("invalid funcenv reference %d", index);
18628
0
        *out = st->lookup_envs[index];
18629
0
    } else {
18630
0
        JanetFuncEnv *env = janet_gcalloc(JANET_MEMORY_FUNCENV, sizeof(JanetFuncEnv));
18631
0
        env->length = 0;
18632
0
        env->offset = 0;
18633
0
        env->as.values = NULL;
18634
0
        janet_v_push(st->lookup_envs, env);
18635
0
        int32_t offset = readnat(st, &data);
18636
0
        int32_t length = readnat(st, &data);
18637
0
        if (offset > 0) {
18638
0
            Janet fiberv;
18639
            /* On stack variant */
18640
0
            data = unmarshal_one(st, data, &fiberv, flags);
18641
0
            janet_asserttype(fiberv, JANET_FIBER, st);
18642
0
            env->as.fiber = janet_unwrap_fiber(fiberv);
18643
            /* Negative offset indicates untrusted input */
18644
0
            env->offset = -offset;
18645
0
        } else {
18646
            /* Off stack variant */
18647
0
            if (length == 0) {
18648
0
                janet_panic("invalid funcenv length");
18649
0
            }
18650
0
            env->as.values = janet_malloc(sizeof(Janet) * (size_t) length);
18651
0
            if (!env->as.values) {
18652
0
                JANET_OUT_OF_MEMORY;
18653
0
            }
18654
0
            env->offset = 0;
18655
0
            for (int32_t i = 0; i < length; i++)
18656
0
                data = unmarshal_one(st, data, env->as.values + i, flags);
18657
0
        }
18658
0
        env->length = length;
18659
0
        *out = env;
18660
0
    }
18661
0
    return data;
18662
0
}
18663
18664
/* Unmarshal a series of u32s */
18665
0
static const uint8_t *janet_unmarshal_u32s(UnmarshalState *st, const uint8_t *data, uint32_t *into, int32_t n) {
18666
0
    for (int32_t i = 0; i < n; i++) {
18667
0
        MARSH_EOS(st, data + 3);
18668
0
        into[i] =
18669
0
            (uint32_t)(data[0]) |
18670
0
            ((uint32_t)(data[1]) << 8) |
18671
0
            ((uint32_t)(data[2]) << 16) |
18672
0
            ((uint32_t)(data[3]) << 24);
18673
0
        data += 4;
18674
0
    }
18675
0
    return data;
18676
0
}
18677
18678
/* Unmarshal a funcdef */
18679
static const uint8_t *unmarshal_one_def(
18680
    UnmarshalState *st,
18681
    const uint8_t *data,
18682
    JanetFuncDef **out,
18683
0
    int flags) {
18684
0
    MARSH_EOS(st, data);
18685
0
    if (*data == LB_FUNCDEF_REF) {
18686
0
        data++;
18687
0
        int32_t index = readint(st, &data);
18688
0
        if (index < 0 || index >= janet_v_count(st->lookup_defs))
18689
0
            janet_panicf("invalid funcdef reference %d", index);
18690
0
        *out = st->lookup_defs[index];
18691
0
    } else {
18692
        /* Initialize with values that will not break garbage collection
18693
         * if unmarshalling fails. */
18694
0
        JanetFuncDef *def = janet_gcalloc(JANET_MEMORY_FUNCDEF, sizeof(JanetFuncDef));
18695
0
        def->environments_length = 0;
18696
0
        def->defs_length = 0;
18697
0
        def->constants_length = 0;
18698
0
        def->bytecode_length = 0;
18699
0
        def->name = NULL;
18700
0
        def->source = NULL;
18701
0
        def->closure_bitset = NULL;
18702
0
        def->defs = NULL;
18703
0
        def->environments = NULL;
18704
0
        def->constants = NULL;
18705
0
        def->bytecode = NULL;
18706
0
        def->sourcemap = NULL;
18707
0
        def->symbolmap = NULL;
18708
0
        def->symbolmap_length = 0;
18709
0
        janet_v_push(st->lookup_defs, def);
18710
18711
        /* Set default lengths to zero */
18712
0
        int32_t bytecode_length = 0;
18713
0
        int32_t constants_length = 0;
18714
0
        int32_t environments_length = 0;
18715
0
        int32_t defs_length = 0;
18716
0
        int32_t symbolmap_length = 0;
18717
18718
        /* Read flags and other fixed values */
18719
0
        def->flags = readint(st, &data);
18720
0
        def->slotcount = readnat(st, &data);
18721
0
        def->arity = readnat(st, &data);
18722
0
        def->min_arity = readnat(st, &data);
18723
0
        def->max_arity = readnat(st, &data);
18724
18725
        /* Read some lengths */
18726
0
        constants_length = readnat(st, &data);
18727
0
        bytecode_length = readnat(st, &data);
18728
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASENVS)
18729
0
            environments_length = readnat(st, &data);
18730
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS)
18731
0
            defs_length = readnat(st, &data);
18732
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP)
18733
0
            symbolmap_length = readnat(st, &data);
18734
18735
        /* Check name and source (optional) */
18736
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASNAME) {
18737
0
            Janet x;
18738
0
            data = unmarshal_one(st, data, &x, flags + 1);
18739
0
            janet_asserttype(x, JANET_STRING, st);
18740
0
            def->name = janet_unwrap_string(x);
18741
0
        }
18742
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCE) {
18743
0
            Janet x;
18744
0
            data = unmarshal_one(st, data, &x, flags + 1);
18745
0
            janet_asserttype(x, JANET_STRING, st);
18746
0
            def->source = janet_unwrap_string(x);
18747
0
        }
18748
18749
        /* Unmarshal constants */
18750
0
        if (constants_length) {
18751
0
            def->constants = janet_malloc(sizeof(Janet) * constants_length);
18752
0
            if (!def->constants) {
18753
0
                JANET_OUT_OF_MEMORY;
18754
0
            }
18755
0
            for (int32_t i = 0; i < constants_length; i++)
18756
0
                data = unmarshal_one(st, data, def->constants + i, flags + 1);
18757
0
        } else {
18758
0
            def->constants = NULL;
18759
0
        }
18760
0
        def->constants_length = constants_length;
18761
18762
        /* Unmarshal symbol map, if needed */
18763
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSYMBOLMAP) {
18764
0
            size_t size = sizeof(JanetSymbolMap) * symbolmap_length;
18765
0
            def->symbolmap = janet_malloc(size);
18766
0
            if (def->symbolmap == NULL) {
18767
0
                JANET_OUT_OF_MEMORY;
18768
0
            }
18769
0
            for (int32_t i = 0; i < symbolmap_length; i++) {
18770
0
                def->symbolmap[i].birth_pc = (uint32_t) readint(st, &data);
18771
0
                def->symbolmap[i].death_pc = (uint32_t) readint(st, &data);
18772
0
                def->symbolmap[i].slot_index = (uint32_t) readint(st, &data);
18773
0
                Janet value;
18774
0
                data = unmarshal_one(st, data, &value, flags + 1);
18775
0
                if (!janet_checktype(value, JANET_SYMBOL)) {
18776
0
                    janet_panicf("corrupted symbolmap when unmarshalling debug info, got %v", value);
18777
0
                }
18778
0
                def->symbolmap[i].symbol = janet_unwrap_symbol(value);
18779
0
            }
18780
0
            def->symbolmap_length = (uint32_t) symbolmap_length;
18781
0
        }
18782
18783
        /* Unmarshal bytecode */
18784
0
        def->bytecode = janet_malloc(sizeof(uint32_t) * bytecode_length);
18785
0
        if (!def->bytecode) {
18786
0
            JANET_OUT_OF_MEMORY;
18787
0
        }
18788
0
        data = janet_unmarshal_u32s(st, data, def->bytecode, bytecode_length);
18789
0
        def->bytecode_length = bytecode_length;
18790
18791
        /* Unmarshal environments */
18792
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASENVS) {
18793
0
            def->environments = janet_calloc(1, sizeof(int32_t) * (size_t) environments_length);
18794
0
            if (!def->environments) {
18795
0
                JANET_OUT_OF_MEMORY;
18796
0
            }
18797
0
            for (int32_t i = 0; i < environments_length; i++) {
18798
0
                def->environments[i] = readint(st, &data);
18799
0
            }
18800
0
        } else {
18801
0
            def->environments = NULL;
18802
0
        }
18803
0
        def->environments_length = environments_length;
18804
18805
        /* Unmarshal sub funcdefs */
18806
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASDEFS) {
18807
0
            def->defs = janet_calloc(1, sizeof(JanetFuncDef *) * (size_t) defs_length);
18808
0
            if (!def->defs) {
18809
0
                JANET_OUT_OF_MEMORY;
18810
0
            }
18811
0
            for (int32_t i = 0; i < defs_length; i++) {
18812
0
                data = unmarshal_one_def(st, data, def->defs + i, flags + 1);
18813
0
            }
18814
0
        } else {
18815
0
            def->defs = NULL;
18816
0
        }
18817
0
        def->defs_length = defs_length;
18818
18819
        /* Unmarshal source maps if needed */
18820
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASSOURCEMAP) {
18821
0
            int32_t current = 0;
18822
0
            def->sourcemap = janet_malloc(sizeof(JanetSourceMapping) * (size_t) bytecode_length);
18823
0
            if (!def->sourcemap) {
18824
0
                JANET_OUT_OF_MEMORY;
18825
0
            }
18826
0
            for (int32_t i = 0; i < bytecode_length; i++) {
18827
0
                current += readint(st, &data);
18828
0
                def->sourcemap[i].line = current;
18829
0
                def->sourcemap[i].column = readint(st, &data);
18830
0
            }
18831
0
        } else {
18832
0
            def->sourcemap = NULL;
18833
0
        }
18834
18835
        /* Unmarshal closure bitset if needed */
18836
0
        if (def->flags & JANET_FUNCDEF_FLAG_HASCLOBITSET) {
18837
0
            int32_t n = (def->slotcount + 31) >> 5;
18838
0
            def->closure_bitset = janet_malloc(sizeof(uint32_t) * (size_t) n);
18839
0
            if (NULL == def->closure_bitset) {
18840
0
                JANET_OUT_OF_MEMORY;
18841
0
            }
18842
0
            data = janet_unmarshal_u32s(st, data, def->closure_bitset, n);
18843
0
        }
18844
18845
        /* Validate */
18846
0
        if (janet_verify(def))
18847
0
            janet_panic("funcdef has invalid bytecode");
18848
18849
        /* Set def */
18850
0
        *out = def;
18851
0
    }
18852
0
    return data;
18853
0
}
18854
18855
/* Unmarshal a fiber */
18856
static const uint8_t *unmarshal_one_fiber(
18857
    UnmarshalState *st,
18858
    const uint8_t *data,
18859
    JanetFiber **out,
18860
0
    int flags) {
18861
18862
    /* Initialize a new fiber with gc friendly defaults */
18863
0
    JanetFiber *fiber = janet_gcalloc(JANET_MEMORY_FIBER, sizeof(JanetFiber));
18864
0
    fiber->flags = 0;
18865
0
    fiber->frame = 0;
18866
0
    fiber->stackstart = 0;
18867
0
    fiber->stacktop = 0;
18868
0
    fiber->capacity = 0;
18869
0
    fiber->maxstack = 0;
18870
0
    fiber->data = NULL;
18871
0
    fiber->child = NULL;
18872
0
    fiber->env = NULL;
18873
0
    fiber->last_value = janet_wrap_nil();
18874
0
#ifdef JANET_EV
18875
0
    fiber->sched_id = 0;
18876
0
    fiber->supervisor_channel = NULL;
18877
0
    fiber->ev_state = NULL;
18878
0
    fiber->ev_callback = NULL;
18879
0
    fiber->ev_stream = NULL;
18880
0
#endif
18881
18882
    /* Push fiber to seen stack */
18883
0
    janet_v_push(st->lookup, janet_wrap_fiber(fiber));
18884
18885
    /* Read ints */
18886
0
    int32_t fiber_flags = readint(st, &data);
18887
0
    int32_t frame = readnat(st, &data);
18888
0
    int32_t fiber_stackstart = readnat(st, &data);
18889
0
    int32_t fiber_stacktop = readnat(st, &data);
18890
0
    int32_t fiber_maxstack = readnat(st, &data);
18891
0
    JanetTable *fiber_env = NULL;
18892
18893
    /* Check for bad flags and ints */
18894
0
    if ((int32_t)(frame + JANET_FRAME_SIZE) > fiber_stackstart ||
18895
0
            fiber_stackstart > fiber_stacktop ||
18896
0
            fiber_stacktop > fiber_maxstack) {
18897
0
        janet_panic("fiber has incorrect stack setup");
18898
0
    }
18899
18900
    /* Allocate stack memory */
18901
0
    fiber->capacity = fiber_stacktop + 10;
18902
0
    fiber->data = janet_malloc(sizeof(Janet) * fiber->capacity);
18903
0
    if (!fiber->data) {
18904
0
        JANET_OUT_OF_MEMORY;
18905
0
    }
18906
0
    for (int32_t i = 0; i < fiber->capacity; i++) {
18907
0
        fiber->data[i] = janet_wrap_nil();
18908
0
    }
18909
18910
    /* get frames */
18911
0
    int32_t stack = frame;
18912
0
    int32_t stacktop = fiber_stackstart - JANET_FRAME_SIZE;
18913
0
    while (stack > 0) {
18914
0
        JanetFunction *func = NULL;
18915
0
        JanetFuncDef *def = NULL;
18916
0
        JanetFuncEnv *env = NULL;
18917
0
        int32_t frameflags = readint(st, &data);
18918
0
        int32_t prevframe = readnat(st, &data);
18919
0
        int32_t pcdiff = readnat(st, &data);
18920
18921
        /* Get frame items */
18922
0
        Janet *framestack = fiber->data + stack;
18923
0
        JanetStackFrame *framep = janet_stack_frame(framestack);
18924
18925
        /* Get function */
18926
0
        Janet funcv;
18927
0
        data = unmarshal_one(st, data, &funcv, flags + 1);
18928
0
        janet_asserttype(funcv, JANET_FUNCTION, st);
18929
0
        func = janet_unwrap_function(funcv);
18930
0
        def = func->def;
18931
18932
        /* Check env */
18933
0
        if (frameflags & JANET_STACKFRAME_HASENV) {
18934
0
            frameflags &= ~JANET_STACKFRAME_HASENV;
18935
0
            data = unmarshal_one_env(st, data, &env, flags + 1);
18936
0
        }
18937
18938
        /* Error checking */
18939
0
        int32_t expected_framesize = def->slotcount;
18940
0
        if (expected_framesize != stacktop - stack) {
18941
0
            janet_panic("fiber stackframe size mismatch");
18942
0
        }
18943
0
        if (pcdiff >= def->bytecode_length) {
18944
0
            janet_panic("fiber stackframe has invalid pc");
18945
0
        }
18946
0
        if ((int32_t)(prevframe + JANET_FRAME_SIZE) > stack) {
18947
0
            janet_panic("fiber stackframe does not align with previous frame");
18948
0
        }
18949
18950
        /* Get stack items */
18951
0
        for (int32_t i = stack; i < stacktop; i++)
18952
0
            data = unmarshal_one(st, data, fiber->data + i, flags + 1);
18953
18954
        /* Set frame */
18955
0
        framep->env = env;
18956
0
        framep->pc = def->bytecode + pcdiff;
18957
0
        framep->prevframe = prevframe;
18958
0
        framep->flags = frameflags;
18959
0
        framep->func = func;
18960
18961
        /* Goto previous frame */
18962
0
        stacktop = stack - JANET_FRAME_SIZE;
18963
0
        stack = prevframe;
18964
0
    }
18965
0
    if (stack < 0) {
18966
0
        janet_panic("fiber has too many stackframes");
18967
0
    }
18968
18969
    /* Check for fiber env */
18970
0
    if (fiber_flags & JANET_FIBER_FLAG_HASENV) {
18971
0
        Janet envv;
18972
0
        fiber_flags &= ~JANET_FIBER_FLAG_HASENV;
18973
0
        data = unmarshal_one(st, data, &envv, flags + 1);
18974
0
        janet_asserttype(envv, JANET_TABLE, st);
18975
0
        fiber_env = janet_unwrap_table(envv);
18976
0
    }
18977
18978
    /* Check for child fiber */
18979
0
    if (fiber_flags & JANET_FIBER_FLAG_HASCHILD) {
18980
0
        Janet fiberv;
18981
0
        fiber_flags &= ~JANET_FIBER_FLAG_HASCHILD;
18982
0
        data = unmarshal_one(st, data, &fiberv, flags + 1);
18983
0
        janet_asserttype(fiberv, JANET_FIBER, st);
18984
0
        fiber->child = janet_unwrap_fiber(fiberv);
18985
0
    }
18986
18987
    /* Get the fiber last value */
18988
0
    data = unmarshal_one(st, data, &fiber->last_value, flags + 1);
18989
18990
    /* We have valid fiber, finally construct remaining fields. */
18991
0
    fiber->frame = frame;
18992
0
    fiber->flags = fiber_flags;
18993
0
    fiber->stackstart = fiber_stackstart;
18994
0
    fiber->stacktop = fiber_stacktop;
18995
0
    fiber->maxstack = fiber_maxstack;
18996
0
    fiber->env = fiber_env;
18997
18998
0
    int status = janet_fiber_status(fiber);
18999
0
    if (status < 0 || status > JANET_STATUS_ALIVE) {
19000
0
        janet_panic("invalid fiber status");
19001
0
    }
19002
19003
    /* Return data */
19004
0
    *out = fiber;
19005
0
    return data;
19006
0
}
19007
19008
0
void janet_unmarshal_ensure(JanetMarshalContext *ctx, size_t size) {
19009
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19010
0
    MARSH_EOS(st, ctx->data + size);
19011
0
}
19012
19013
0
int32_t janet_unmarshal_int(JanetMarshalContext *ctx) {
19014
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19015
0
    return readint(st, &(ctx->data));
19016
0
}
19017
19018
0
size_t janet_unmarshal_size(JanetMarshalContext *ctx) {
19019
0
    return (size_t) janet_unmarshal_int64(ctx);
19020
0
}
19021
19022
0
int64_t janet_unmarshal_int64(JanetMarshalContext *ctx) {
19023
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19024
0
    return read64(st, &(ctx->data));
19025
0
}
19026
19027
0
void *janet_unmarshal_ptr(JanetMarshalContext *ctx) {
19028
0
    if (!(ctx->flags & JANET_MARSHAL_UNSAFE)) {
19029
0
        janet_panic("can only unmarshal pointers in unsafe mode");
19030
0
    }
19031
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19032
0
    void *ptr;
19033
0
    MARSH_EOS(st, ctx->data + sizeof(void *) - 1);
19034
0
    memcpy((char *) &ptr, ctx->data, sizeof(void *));
19035
0
    ctx->data += sizeof(void *);
19036
0
    return ptr;
19037
0
}
19038
19039
0
uint8_t janet_unmarshal_byte(JanetMarshalContext *ctx) {
19040
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19041
0
    MARSH_EOS(st, ctx->data);
19042
0
    return *(ctx->data++);
19043
0
}
19044
19045
0
void janet_unmarshal_bytes(JanetMarshalContext *ctx, uint8_t *dest, size_t len) {
19046
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19047
0
    MARSH_EOS(st, ctx->data + len - 1);
19048
0
    safe_memcpy(dest, ctx->data, len);
19049
0
    ctx->data += len;
19050
0
}
19051
19052
0
Janet janet_unmarshal_janet(JanetMarshalContext *ctx) {
19053
0
    Janet ret;
19054
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19055
0
    ctx->data = unmarshal_one(st, ctx->data, &ret, ctx->flags);
19056
0
    return ret;
19057
0
}
19058
19059
0
void janet_unmarshal_abstract_reuse(JanetMarshalContext *ctx, void *p) {
19060
0
    UnmarshalState *st = (UnmarshalState *)(ctx->u_state);
19061
0
    if (ctx->at == NULL) {
19062
0
        janet_panicf("janet_unmarshal_abstract called more than once");
19063
0
    }
19064
0
    janet_v_push(st->lookup, janet_wrap_abstract(p));
19065
0
    ctx->at = NULL;
19066
0
}
19067
19068
0
void *janet_unmarshal_abstract(JanetMarshalContext *ctx, size_t size) {
19069
0
    void *p = janet_abstract(ctx->at, size);
19070
0
    janet_unmarshal_abstract_reuse(ctx, p);
19071
0
    return p;
19072
0
}
19073
19074
0
void *janet_unmarshal_abstract_threaded(JanetMarshalContext *ctx, size_t size) {
19075
#ifdef JANET_THREADS
19076
    void *p = janet_abstract_threaded(ctx->at, size);
19077
    janet_unmarshal_abstract_reuse(ctx, p);
19078
    return p;
19079
#else
19080
0
    (void) ctx;
19081
0
    (void) size;
19082
0
    janet_panic("threaded abstracts not supported");
19083
0
#endif
19084
0
}
19085
19086
0
static const uint8_t *unmarshal_one_abstract(UnmarshalState *st, const uint8_t *data, Janet *out, int flags) {
19087
0
    Janet key;
19088
0
    data = unmarshal_one(st, data, &key, flags + 1);
19089
0
    const JanetAbstractType *at = janet_get_abstract_type(key);
19090
0
    if (at == NULL) janet_panic("unknown abstract type");
19091
0
    if (at->unmarshal) {
19092
0
        JanetMarshalContext context = {NULL, st, flags, data, at};
19093
0
        void *abst = at->unmarshal(&context);
19094
0
        janet_assert(abst != NULL, "null pointer abstract");
19095
0
        *out = janet_wrap_abstract(abst);
19096
0
        if (context.at != NULL) {
19097
0
            janet_panic("janet_unmarshal_abstract not called");
19098
0
        }
19099
0
        return context.data;
19100
0
    }
19101
0
    janet_panic("invalid abstract type - no unmarshal function pointer");
19102
0
}
19103
19104
static const uint8_t *unmarshal_one(
19105
    UnmarshalState *st,
19106
    const uint8_t *data,
19107
    Janet *out,
19108
0
    int flags) {
19109
0
    uint8_t lead;
19110
0
    MARSH_STACKCHECK;
19111
0
    MARSH_EOS(st, data);
19112
0
    lead = data[0];
19113
0
    if (lead < LB_REAL) {
19114
0
        *out = janet_wrap_integer(readint(st, &data));
19115
0
        return data;
19116
0
    }
19117
0
    switch (lead) {
19118
0
        case LB_NIL:
19119
0
            *out = janet_wrap_nil();
19120
0
            return data + 1;
19121
0
        case LB_FALSE:
19122
0
            *out = janet_wrap_false();
19123
0
            return data + 1;
19124
0
        case LB_TRUE:
19125
0
            *out = janet_wrap_true();
19126
0
            return data + 1;
19127
0
        case LB_INTEGER:
19128
            /* Long integer */
19129
0
            MARSH_EOS(st, data + 4);
19130
0
            uint32_t ui = ((uint32_t)(data[4])) |
19131
0
                          ((uint32_t)(data[3]) << 8) |
19132
0
                          ((uint32_t)(data[2]) << 16) |
19133
0
                          ((uint32_t)(data[1]) << 24);
19134
0
            int32_t si = (int32_t)ui;
19135
0
            *out = janet_wrap_integer(si);
19136
0
            return data + 5;
19137
0
        case LB_REAL:
19138
            /* Real */
19139
0
        {
19140
0
            union {
19141
0
                double d;
19142
0
                uint8_t bytes[8];
19143
0
            } u;
19144
0
            MARSH_EOS(st, data + 8);
19145
#ifdef JANET_BIG_ENDIAN
19146
            u.bytes[0] = data[8];
19147
            u.bytes[1] = data[7];
19148
            u.bytes[2] = data[6];
19149
            u.bytes[3] = data[5];
19150
            u.bytes[4] = data[4];
19151
            u.bytes[5] = data[3];
19152
            u.bytes[6] = data[2];
19153
            u.bytes[7] = data[1];
19154
#else
19155
0
            memcpy(&u.bytes, data + 1, sizeof(double));
19156
0
#endif
19157
0
            *out = janet_wrap_number_safe(u.d);
19158
0
            janet_v_push(st->lookup, *out);
19159
0
            return data + 9;
19160
0
        }
19161
0
        case LB_STRING:
19162
0
        case LB_SYMBOL:
19163
0
        case LB_BUFFER:
19164
0
        case LB_KEYWORD:
19165
0
        case LB_REGISTRY: {
19166
0
            data++;
19167
0
            int32_t len = readnat(st, &data);
19168
0
            MARSH_EOS(st, data - 1 + len);
19169
0
            if (lead == LB_STRING) {
19170
0
                const uint8_t *str = janet_string(data, len);
19171
0
                *out = janet_wrap_string(str);
19172
0
            } else if (lead == LB_SYMBOL) {
19173
0
                const uint8_t *str = janet_symbol(data, len);
19174
0
                *out = janet_wrap_symbol(str);
19175
0
            } else if (lead == LB_KEYWORD) {
19176
0
                const uint8_t *str = janet_keyword(data, len);
19177
0
                *out = janet_wrap_keyword(str);
19178
0
            } else if (lead == LB_REGISTRY) {
19179
0
                if (st->reg) {
19180
0
                    Janet regkey = janet_symbolv(data, len);
19181
0
                    *out = janet_table_get(st->reg, regkey);
19182
0
                } else {
19183
0
                    *out = janet_wrap_nil();
19184
0
                }
19185
0
            } else { /* (lead == LB_BUFFER) */
19186
0
                JanetBuffer *buffer = janet_buffer(len);
19187
0
                buffer->count = len;
19188
0
                safe_memcpy(buffer->data, data, len);
19189
0
                *out = janet_wrap_buffer(buffer);
19190
0
            }
19191
0
            janet_v_push(st->lookup, *out);
19192
0
            return data + len;
19193
0
        }
19194
0
        case LB_FIBER: {
19195
0
            JanetFiber *fiber;
19196
0
            data = unmarshal_one_fiber(st, data + 1, &fiber, flags + 1);
19197
0
            *out = janet_wrap_fiber(fiber);
19198
0
            return data;
19199
0
        }
19200
0
        case LB_FUNCTION: {
19201
0
            JanetFunction *func;
19202
0
            JanetFuncDef *def;
19203
0
            data++;
19204
0
            int32_t len = readnat(st, &data);
19205
0
            if (len > 255) {
19206
0
                janet_panicf("invalid function - too many environments (%d)", len);
19207
0
            }
19208
0
            func = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction) +
19209
0
                                 len * sizeof(JanetFuncEnv));
19210
0
            func->def = NULL;
19211
0
            for (int32_t i = 0; i < len; i++) {
19212
0
                func->envs[i] = NULL;
19213
0
            }
19214
0
            *out = janet_wrap_function(func);
19215
0
            janet_v_push(st->lookup, *out);
19216
0
            data = unmarshal_one_def(st, data, &def, flags + 1);
19217
0
            func->def = def;
19218
0
            for (int32_t i = 0; i < len; i++) {
19219
0
                data = unmarshal_one_env(st, data, &(func->envs[i]), flags + 1);
19220
0
            }
19221
0
            return data;
19222
0
        }
19223
0
        case LB_ABSTRACT: {
19224
0
            data++;
19225
0
            return unmarshal_one_abstract(st, data, out, flags);
19226
0
        }
19227
0
        case LB_REFERENCE:
19228
0
        case LB_ARRAY:
19229
0
        case LB_ARRAY_WEAK:
19230
0
        case LB_TUPLE:
19231
0
        case LB_STRUCT:
19232
0
        case LB_STRUCT_PROTO:
19233
0
        case LB_TABLE:
19234
0
        case LB_TABLE_PROTO:
19235
0
        case LB_TABLE_WEAKK:
19236
0
        case LB_TABLE_WEAKV:
19237
0
        case LB_TABLE_WEAKKV:
19238
0
        case LB_TABLE_WEAKK_PROTO:
19239
0
        case LB_TABLE_WEAKV_PROTO:
19240
0
        case LB_TABLE_WEAKKV_PROTO:
19241
            /* Things that open with integers */
19242
0
        {
19243
0
            data++;
19244
0
            int32_t len = readnat(st, &data);
19245
            /* DOS check */
19246
0
            if (lead != LB_REFERENCE) {
19247
0
                MARSH_EOS(st, data - 1 + len);
19248
0
            }
19249
0
            if (lead == LB_ARRAY || lead == LB_ARRAY_WEAK) {
19250
                /* Array */
19251
0
                JanetArray *array = (lead == LB_ARRAY_WEAK) ? janet_array_weak(len) : janet_array(len);
19252
0
                array->count = len;
19253
0
                *out = janet_wrap_array(array);
19254
0
                janet_v_push(st->lookup, *out);
19255
0
                for (int32_t i = 0; i < len; i++) {
19256
0
                    data = unmarshal_one(st, data, array->data + i, flags + 1);
19257
0
                }
19258
0
            } else if (lead == LB_TUPLE) {
19259
                /* Tuple */
19260
0
                Janet *tup = janet_tuple_begin(len);
19261
0
                int32_t flag = readint(st, &data);
19262
0
                janet_tuple_flag(tup) |= flag << 16;
19263
0
                for (int32_t i = 0; i < len; i++) {
19264
0
                    data = unmarshal_one(st, data, tup + i, flags + 1);
19265
0
                }
19266
0
                *out = janet_wrap_tuple(janet_tuple_end(tup));
19267
0
                janet_v_push(st->lookup, *out);
19268
0
            } else if (lead == LB_STRUCT || lead == LB_STRUCT_PROTO) {
19269
                /* Struct */
19270
0
                JanetKV *struct_ = janet_struct_begin(len);
19271
0
                if (lead == LB_STRUCT_PROTO) {
19272
0
                    Janet proto;
19273
0
                    data = unmarshal_one(st, data, &proto, flags + 1);
19274
0
                    janet_asserttype(proto, JANET_STRUCT, st);
19275
0
                    janet_struct_proto(struct_) = janet_unwrap_struct(proto);
19276
0
                }
19277
0
                for (int32_t i = 0; i < len; i++) {
19278
0
                    Janet key, value;
19279
0
                    data = unmarshal_one(st, data, &key, flags + 1);
19280
0
                    data = unmarshal_one(st, data, &value, flags + 1);
19281
0
                    janet_struct_put(struct_, key, value);
19282
0
                }
19283
0
                *out = janet_wrap_struct(janet_struct_end(struct_));
19284
0
                janet_v_push(st->lookup, *out);
19285
0
            } else if (lead == LB_REFERENCE) {
19286
0
                if (len >= janet_v_count(st->lookup))
19287
0
                    janet_panicf("invalid reference %d", len);
19288
0
                *out = st->lookup[len];
19289
0
            } else {
19290
                /* Table */
19291
0
                JanetTable *t;
19292
0
                if (lead == LB_TABLE_WEAKK_PROTO || lead == LB_TABLE_WEAKK) {
19293
0
                    t = janet_table_weakk(len);
19294
0
                } else if (lead == LB_TABLE_WEAKV_PROTO || lead == LB_TABLE_WEAKV) {
19295
0
                    t = janet_table_weakv(len);
19296
0
                } else if (lead == LB_TABLE_WEAKKV_PROTO || lead == LB_TABLE_WEAKKV) {
19297
0
                    t = janet_table_weakkv(len);
19298
0
                } else {
19299
0
                    t = janet_table(len);
19300
0
                }
19301
0
                *out = janet_wrap_table(t);
19302
0
                janet_v_push(st->lookup, *out);
19303
0
                if (lead == LB_TABLE_PROTO || lead == LB_TABLE_WEAKK_PROTO || lead == LB_TABLE_WEAKV_PROTO || lead == LB_TABLE_WEAKKV_PROTO) {
19304
0
                    Janet proto;
19305
0
                    data = unmarshal_one(st, data, &proto, flags + 1);
19306
0
                    janet_asserttype(proto, JANET_TABLE, st);
19307
0
                    t->proto = janet_unwrap_table(proto);
19308
0
                }
19309
0
                for (int32_t i = 0; i < len; i++) {
19310
0
                    Janet key, value;
19311
0
                    data = unmarshal_one(st, data, &key, flags + 1);
19312
0
                    data = unmarshal_one(st, data, &value, flags + 1);
19313
0
                    janet_table_put(t, key, value);
19314
0
                }
19315
0
            }
19316
0
            return data;
19317
0
        }
19318
0
        case LB_UNSAFE_POINTER: {
19319
0
            MARSH_EOS(st, data + sizeof(void *));
19320
0
            data++;
19321
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19322
0
                janet_panicf("unsafe flag not given, "
19323
0
                             "will not unmarshal raw pointer at index %d",
19324
0
                             (int)(data - st->start));
19325
0
            }
19326
0
            union {
19327
0
                void *ptr;
19328
0
                uint8_t bytes[sizeof(void *)];
19329
0
            } u;
19330
0
            memcpy(u.bytes, data, sizeof(void *));
19331
0
            data += sizeof(void *);
19332
0
            *out = janet_wrap_pointer(u.ptr);
19333
0
            janet_v_push(st->lookup, *out);
19334
0
            return data;
19335
0
        }
19336
0
#ifdef JANET_EV
19337
0
        case LB_POINTER_BUFFER: {
19338
0
            data++;
19339
0
            int32_t count = readnat(st, &data);
19340
0
            int32_t capacity = readnat(st, &data);
19341
0
            MARSH_EOS(st, data + sizeof(void *));
19342
0
            union {
19343
0
                void *ptr;
19344
0
                uint8_t bytes[sizeof(void *)];
19345
0
            } u;
19346
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19347
0
                janet_panicf("unsafe flag not given, "
19348
0
                             "will not unmarshal raw pointer at index %d",
19349
0
                             (int)(data - st->start));
19350
0
            }
19351
0
            memcpy(u.bytes, data, sizeof(void *));
19352
0
            data += sizeof(void *);
19353
0
            JanetBuffer *buffer = janet_pointer_buffer_unsafe(u.ptr, capacity, count);
19354
0
            *out = janet_wrap_buffer(buffer);
19355
0
            janet_v_push(st->lookup, *out);
19356
0
            return data;
19357
0
        }
19358
0
#endif
19359
0
        case LB_UNSAFE_CFUNCTION: {
19360
0
            MARSH_EOS(st, data + sizeof(JanetCFunction));
19361
0
            data++;
19362
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19363
0
                janet_panicf("unsafe flag not given, "
19364
0
                             "will not unmarshal function pointer at index %d",
19365
0
                             (int)(data - st->start));
19366
0
            }
19367
0
            union {
19368
0
                JanetCFunction ptr;
19369
0
                uint8_t bytes[sizeof(JanetCFunction)];
19370
0
            } u;
19371
0
            memcpy(u.bytes, data, sizeof(JanetCFunction));
19372
0
            data += sizeof(JanetCFunction);
19373
0
            *out = janet_wrap_cfunction(u.ptr);
19374
0
            janet_v_push(st->lookup, *out);
19375
0
            return data;
19376
0
        }
19377
0
#ifdef JANET_EV
19378
0
        case LB_THREADED_ABSTRACT: {
19379
0
            MARSH_EOS(st, data + sizeof(void *));
19380
0
            data++;
19381
0
            if (!(flags & JANET_MARSHAL_UNSAFE)) {
19382
0
                janet_panicf("unsafe flag not given, "
19383
0
                             "will not unmarshal threaded abstract pointer at index %d",
19384
0
                             (int)(data - st->start));
19385
0
            }
19386
0
            union {
19387
0
                void *ptr;
19388
0
                uint8_t bytes[sizeof(void *)];
19389
0
            } u;
19390
0
            memcpy(u.bytes, data, sizeof(void *));
19391
0
            data += sizeof(void *);
19392
19393
0
            if (flags & JANET_MARSHAL_DECREF) {
19394
                /* Decrement immediately and don't bother putting into heap */
19395
0
                janet_abstract_decref(u.ptr);
19396
0
                *out = janet_wrap_nil();
19397
0
            } else {
19398
0
                *out = janet_wrap_abstract(u.ptr);
19399
0
                Janet check = janet_table_get(&janet_vm.threaded_abstracts, *out);
19400
0
                if (janet_checktype(check, JANET_NIL)) {
19401
                    /* Transfers reference from threaded channel buffer to current heap */
19402
0
                    janet_table_put(&janet_vm.threaded_abstracts, *out, janet_wrap_false());
19403
0
                } else {
19404
                    /* Heap reference already accounted for, remove threaded channel reference. */
19405
0
                    janet_abstract_decref(u.ptr);
19406
0
                }
19407
0
            }
19408
19409
0
            janet_v_push(st->lookup, *out);
19410
0
            return data;
19411
0
        }
19412
0
#endif
19413
0
        default: {
19414
0
            janet_panicf("unknown byte %x at index %d",
19415
0
                         *data,
19416
0
                         (int)(data - st->start));
19417
0
            return NULL;
19418
0
        }
19419
0
    }
19420
0
}
19421
19422
Janet janet_unmarshal(
19423
    const uint8_t *bytes,
19424
    size_t len,
19425
    int flags,
19426
    JanetTable *reg,
19427
0
    const uint8_t **next) {
19428
0
    UnmarshalState st;
19429
0
    st.start = bytes;
19430
0
    st.end = bytes + len;
19431
0
    st.lookup_defs = NULL;
19432
0
    st.lookup_envs = NULL;
19433
0
    st.lookup = NULL;
19434
0
    st.reg = reg;
19435
0
    Janet out;
19436
0
    const uint8_t *nextbytes = unmarshal_one(&st, bytes, &out, flags);
19437
0
    if (next) *next = nextbytes;
19438
0
    janet_v_free(st.lookup_defs);
19439
0
    janet_v_free(st.lookup_envs);
19440
0
    janet_v_free(st.lookup);
19441
0
    return out;
19442
0
}
19443
19444
/* C functions */
19445
19446
JANET_CORE_FN(cfun_env_lookup,
19447
              "(env-lookup env)",
19448
              "Creates a forward lookup table for unmarshalling from an environment. "
19449
              "To create a reverse lookup table, use the invert function to swap keys "
19450
0
              "and values in the returned table.") {
19451
0
    janet_fixarity(argc, 1);
19452
0
    JanetTable *env = janet_gettable(argv, 0);
19453
0
    return janet_wrap_table(janet_env_lookup(env));
19454
0
}
19455
19456
JANET_CORE_FN(cfun_marshal,
19457
              "(marshal x &opt reverse-lookup buffer no-cycles)",
19458
              "Marshal a value into a buffer and return the buffer. The buffer "
19459
              "can then later be unmarshalled to reconstruct the initial value. "
19460
              "Optionally, one can pass in a reverse lookup table to not marshal "
19461
              "aliased values that are found in the table. Then a forward "
19462
              "lookup table can be used to recover the original value when "
19463
0
              "unmarshalling.") {
19464
0
    janet_arity(argc, 1, 4);
19465
0
    JanetBuffer *buffer;
19466
0
    JanetTable *rreg = NULL;
19467
0
    uint32_t flags = 0;
19468
0
    if (argc > 1) {
19469
0
        rreg = janet_gettable(argv, 1);
19470
0
    }
19471
0
    if (argc > 2) {
19472
0
        buffer = janet_getbuffer(argv, 2);
19473
0
    } else {
19474
0
        buffer = janet_buffer(10);
19475
0
    }
19476
0
    if (argc > 3 && janet_truthy(argv[3])) {
19477
0
        flags |= JANET_MARSHAL_NO_CYCLES;
19478
0
    }
19479
0
    janet_marshal(buffer, argv[0], rreg, flags);
19480
0
    return janet_wrap_buffer(buffer);
19481
0
}
19482
19483
JANET_CORE_FN(cfun_unmarshal,
19484
              "(unmarshal buffer &opt lookup)",
19485
              "Unmarshal a value from a buffer. An optional lookup table "
19486
              "can be provided to allow for aliases to be resolved. Returns the value "
19487
0
              "unmarshalled from the buffer.") {
19488
0
    janet_arity(argc, 1, 2);
19489
0
    JanetByteView view = janet_getbytes(argv, 0);
19490
0
    JanetTable *reg = NULL;
19491
0
    if (argc > 1) {
19492
0
        reg = janet_gettable(argv, 1);
19493
0
    }
19494
0
    return janet_unmarshal(view.bytes, (size_t) view.len, 0, reg, NULL);
19495
0
}
19496
19497
/* Module entry point */
19498
0
void janet_lib_marsh(JanetTable *env) {
19499
0
    JanetRegExt marsh_cfuns[] = {
19500
0
        JANET_CORE_REG("marshal", cfun_marshal),
19501
0
        JANET_CORE_REG("unmarshal", cfun_unmarshal),
19502
0
        JANET_CORE_REG("env-lookup", cfun_env_lookup),
19503
0
        JANET_REG_END
19504
0
    };
19505
0
    janet_core_cfuns_ext(env, NULL, marsh_cfuns);
19506
0
}
19507
19508
19509
/* src/core/math.c */
19510
#line 0 "src/core/math.c"
19511
19512
/*
19513
* Copyright (c) 2025 Calvin Rose
19514
*
19515
* Permission is hereby granted, free of charge, to any person obtaining a copy
19516
* of this software and associated documentation files (the "Software"), to
19517
* deal in the Software without restriction, including without limitation the
19518
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
19519
* sell copies of the Software, and to permit persons to whom the Software is
19520
* furnished to do so, subject to the following conditions:
19521
*
19522
* The above copyright notice and this permission notice shall be included in
19523
* all copies or substantial portions of the Software.
19524
*
19525
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19526
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19527
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19528
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19529
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19530
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19531
* IN THE SOFTWARE.
19532
*/
19533
19534
#ifndef JANET_AMALG
19535
#include "features.h"
19536
#include <janet.h>
19537
#include "state.h"
19538
#include "util.h"
19539
#endif
19540
19541
#include <math.h>
19542
19543
static int janet_rng_get(void *p, Janet key, Janet *out);
19544
static Janet janet_rng_next(void *p, Janet key);
19545
19546
0
static void janet_rng_marshal(void *p, JanetMarshalContext *ctx) {
19547
0
    JanetRNG *rng = (JanetRNG *)p;
19548
0
    janet_marshal_abstract(ctx, p);
19549
0
    janet_marshal_int(ctx, (int32_t) rng->a);
19550
0
    janet_marshal_int(ctx, (int32_t) rng->b);
19551
0
    janet_marshal_int(ctx, (int32_t) rng->c);
19552
0
    janet_marshal_int(ctx, (int32_t) rng->d);
19553
0
    janet_marshal_int(ctx, (int32_t) rng->counter);
19554
0
}
19555
19556
0
static void *janet_rng_unmarshal(JanetMarshalContext *ctx) {
19557
0
    JanetRNG *rng = janet_unmarshal_abstract(ctx, sizeof(JanetRNG));
19558
0
    rng->a = (uint32_t) janet_unmarshal_int(ctx);
19559
0
    rng->b = (uint32_t) janet_unmarshal_int(ctx);
19560
0
    rng->c = (uint32_t) janet_unmarshal_int(ctx);
19561
0
    rng->d = (uint32_t) janet_unmarshal_int(ctx);
19562
0
    rng->counter = (uint32_t) janet_unmarshal_int(ctx);
19563
0
    return rng;
19564
0
}
19565
19566
const JanetAbstractType janet_rng_type = {
19567
    "core/rng",
19568
    NULL,
19569
    NULL,
19570
    janet_rng_get,
19571
    NULL,
19572
    janet_rng_marshal,
19573
    janet_rng_unmarshal,
19574
    NULL, /* tostring */
19575
    NULL, /* compare */
19576
    NULL, /* hash */
19577
    janet_rng_next,
19578
    JANET_ATEND_NEXT
19579
};
19580
19581
5.80k
JanetRNG *janet_default_rng(void) {
19582
5.80k
    return &janet_vm.rng;
19583
5.80k
}
19584
19585
11.6k
void janet_rng_seed(JanetRNG *rng, uint32_t seed) {
19586
11.6k
    rng->a = seed;
19587
11.6k
    rng->b = 0x97654321u;
19588
11.6k
    rng->c = 123871873u;
19589
11.6k
    rng->d = 0xf23f56c8u;
19590
11.6k
    rng->counter = 0u;
19591
    /* First several numbers aren't that random. */
19592
197k
    for (int i = 0; i < 16; i++) janet_rng_u32(rng);
19593
11.6k
}
19594
19595
0
void janet_rng_longseed(JanetRNG *rng, const uint8_t *bytes, int32_t len) {
19596
0
    uint8_t state[16] = {0};
19597
0
    for (int32_t i = 0; i < len; i++)
19598
0
        state[i & 0xF] ^= bytes[i];
19599
0
    rng->a = state[0] + ((uint32_t) state[1] << 8) + ((uint32_t) state[2] << 16) + ((uint32_t) state[3] << 24);
19600
0
    rng->b = state[4] + ((uint32_t) state[5] << 8) + ((uint32_t) state[6] << 16) + ((uint32_t) state[7] << 24);
19601
0
    rng->c = state[8] + ((uint32_t) state[9] << 8) + ((uint32_t) state[10] << 16) + ((uint32_t) state[11] << 24);
19602
0
    rng->d = state[12] + ((uint32_t) state[13] << 8) + ((uint32_t) state[14] << 16) + ((uint32_t) state[15] << 24);
19603
0
    rng->counter = 0u;
19604
    /* a, b, c, d can't all be 0 */
19605
0
    if (rng->a == 0) rng->a = 1u;
19606
0
    for (int i = 0; i < 16; i++) janet_rng_u32(rng);
19607
0
}
19608
19609
185k
uint32_t janet_rng_u32(JanetRNG *rng) {
19610
    /* Algorithm "xorwow" from p. 5 of Marsaglia, "Xorshift RNGs" */
19611
185k
    uint32_t t = rng->d;
19612
185k
    uint32_t const s = rng->a;
19613
185k
    rng->d = rng->c;
19614
185k
    rng->c = rng->b;
19615
185k
    rng->b = s;
19616
185k
    t ^= t >> 2;
19617
185k
    t ^= t << 1;
19618
185k
    t ^= s ^ (s << 4);
19619
185k
    rng->a = t;
19620
185k
    rng->counter += 362437;
19621
185k
    return t + rng->counter;
19622
185k
}
19623
19624
0
double janet_rng_double(JanetRNG *rng) {
19625
0
    uint32_t hi = janet_rng_u32(rng);
19626
0
    uint32_t lo = janet_rng_u32(rng);
19627
0
    uint64_t big = (uint64_t)(lo) | (((uint64_t) hi) << 32);
19628
0
    return ldexp((double)(big >> (64 - 52)), -52);
19629
0
}
19630
19631
JANET_CORE_FN(cfun_rng_make,
19632
              "(math/rng &opt seed)",
19633
              "Creates a Pseudo-Random number generator, with an optional seed. "
19634
              "The seed should be an unsigned 32 bit integer or a buffer. "
19635
              "Do not use this for cryptography. Returns a core/rng abstract type."
19636
0
             ) {
19637
0
    janet_arity(argc, 0, 1);
19638
0
    JanetRNG *rng = janet_abstract(&janet_rng_type, sizeof(JanetRNG));
19639
0
    if (argc == 1) {
19640
0
        if (janet_checkint(argv[0])) {
19641
0
            uint32_t seed = (uint32_t)(janet_getinteger(argv, 0));
19642
0
            janet_rng_seed(rng, seed);
19643
0
        } else {
19644
0
            JanetByteView bytes = janet_getbytes(argv, 0);
19645
0
            janet_rng_longseed(rng, bytes.bytes, bytes.len);
19646
0
        }
19647
0
    } else {
19648
0
        janet_rng_seed(rng, 0);
19649
0
    }
19650
0
    return janet_wrap_abstract(rng);
19651
0
}
19652
19653
JANET_CORE_FN(cfun_rng_uniform,
19654
              "(math/rng-uniform rng)",
19655
              "Extract a random number in the range [0, 1) from the RNG."
19656
0
             ) {
19657
0
    janet_fixarity(argc, 1);
19658
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
19659
0
    return janet_wrap_number(janet_rng_double(rng));
19660
0
}
19661
19662
JANET_CORE_FN(cfun_rng_int,
19663
              "(math/rng-int rng &opt max)",
19664
              "Extract a random integer in the range [0, max) for max > 0 from the RNG.  "
19665
              "If max is 0, return 0.  If no max is given, the default is 2^31 - 1."
19666
0
             ) {
19667
0
    janet_arity(argc, 1, 2);
19668
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
19669
0
    if (argc == 1) {
19670
0
        uint32_t word = janet_rng_u32(rng) >> 1;
19671
0
        return janet_wrap_integer(word);
19672
0
    } else {
19673
0
        int32_t max = janet_optnat(argv, argc, 1, INT32_MAX);
19674
0
        if (max == 0) return janet_wrap_number(0.0);
19675
0
        uint32_t modulo = (uint32_t) max;
19676
0
        uint32_t maxgen = INT32_MAX;
19677
0
        uint32_t maxword = maxgen - (maxgen % modulo);
19678
0
        uint32_t word;
19679
0
        do {
19680
0
            word = janet_rng_u32(rng) >> 1;
19681
0
        } while (word > maxword);
19682
0
        return janet_wrap_integer(word % modulo);
19683
0
    }
19684
0
}
19685
19686
0
static void rng_get_4bytes(JanetRNG *rng, uint8_t *buf) {
19687
0
    uint32_t word = janet_rng_u32(rng);
19688
0
    buf[0] = word & 0xFF;
19689
0
    buf[1] = (word >> 8) & 0xFF;
19690
0
    buf[2] = (word >> 16) & 0xFF;
19691
0
    buf[3] = (word >> 24) & 0xFF;
19692
0
}
19693
19694
JANET_CORE_FN(cfun_rng_buffer,
19695
              "(math/rng-buffer rng n &opt buf)",
19696
              "Get n random bytes and put them in a buffer. Creates a new buffer if no buffer is "
19697
              "provided, otherwise appends to the given buffer. Returns the buffer."
19698
0
             ) {
19699
0
    janet_arity(argc, 2, 3);
19700
0
    JanetRNG *rng = janet_getabstract(argv, 0, &janet_rng_type);
19701
0
    int32_t n = janet_getnat(argv, 1);
19702
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, n);
19703
19704
    /* Split into first part (that is divisible by 4), and rest */
19705
0
    int32_t first_part = n & ~3;
19706
0
    int32_t second_part = n - first_part;
19707
19708
    /* Get first part in chunks of 4 bytes */
19709
0
    janet_buffer_extra(buffer, n);
19710
0
    uint8_t *buf = buffer->data + buffer->count;
19711
0
    for (int32_t i = 0; i < first_part; i += 4) rng_get_4bytes(rng, buf + i);
19712
0
    buffer->count += first_part;
19713
19714
    /* Get remaining 0 - 3 bytes */
19715
0
    if (second_part) {
19716
0
        uint8_t wordbuf[4] = {0};
19717
0
        rng_get_4bytes(rng, wordbuf);
19718
0
        janet_buffer_push_bytes(buffer, wordbuf, second_part);
19719
0
    }
19720
19721
0
    return janet_wrap_buffer(buffer);
19722
0
}
19723
19724
static const JanetMethod rng_methods[] = {
19725
    {"uniform", cfun_rng_uniform},
19726
    {"int", cfun_rng_int},
19727
    {"buffer", cfun_rng_buffer},
19728
    {NULL, NULL}
19729
};
19730
19731
0
static int janet_rng_get(void *p, Janet key, Janet *out) {
19732
0
    (void) p;
19733
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
19734
0
    return janet_getmethod(janet_unwrap_keyword(key), rng_methods, out);
19735
0
}
19736
19737
0
static Janet janet_rng_next(void *p, Janet key) {
19738
0
    (void) p;
19739
0
    return janet_nextmethod(rng_methods, key);
19740
0
}
19741
19742
/* Get a random number */
19743
JANET_CORE_FN(janet_rand,
19744
              "(math/random)",
19745
0
              "Returns a uniformly distributed random number between 0 and 1.") {
19746
0
    (void) argv;
19747
0
    janet_fixarity(argc, 0);
19748
0
    return janet_wrap_number(janet_rng_double(&janet_vm.rng));
19749
0
}
19750
19751
/* Seed the random number generator */
19752
JANET_CORE_FN(janet_srand,
19753
              "(math/seedrandom seed)",
19754
              "Set the seed for the random number generator. `seed` should be "
19755
              "an integer or a buffer."
19756
0
             ) {
19757
0
    janet_fixarity(argc, 1);
19758
0
    if (janet_checkint(argv[0])) {
19759
0
        uint32_t seed = (uint32_t)(janet_getinteger(argv, 0));
19760
0
        janet_rng_seed(&janet_vm.rng, seed);
19761
0
    } else {
19762
0
        JanetByteView bytes = janet_getbytes(argv, 0);
19763
0
        janet_rng_longseed(&janet_vm.rng, bytes.bytes, bytes.len);
19764
0
    }
19765
0
    return janet_wrap_nil();
19766
0
}
19767
19768
#define JANET_DEFINE_NAMED_MATHOP(janet_name, fop, doc)\
19769
0
JANET_CORE_FN(janet_##fop, "(math/" janet_name " x)", doc) {\
19770
0
    janet_fixarity(argc, 1); \
19771
0
    double x = janet_getnumber(argv, 0); \
19772
0
    return janet_wrap_number(fop(x)); \
19773
0
}
Unexecuted instantiation: janet_acos
Unexecuted instantiation: janet_asin
Unexecuted instantiation: janet_atan
Unexecuted instantiation: janet_cos
Unexecuted instantiation: janet_cosh
Unexecuted instantiation: janet_acosh
Unexecuted instantiation: janet_sin
Unexecuted instantiation: janet_sinh
Unexecuted instantiation: janet_asinh
Unexecuted instantiation: janet_tan
Unexecuted instantiation: janet_tanh
Unexecuted instantiation: janet_atanh
Unexecuted instantiation: janet_exp
Unexecuted instantiation: janet_exp2
Unexecuted instantiation: janet_expm1
Unexecuted instantiation: janet_log
Unexecuted instantiation: janet_log10
Unexecuted instantiation: janet_log2
Unexecuted instantiation: janet_sqrt
Unexecuted instantiation: janet_cbrt
Unexecuted instantiation: janet_ceil
Unexecuted instantiation: janet_floor
Unexecuted instantiation: janet_trunc
Unexecuted instantiation: janet_round
Unexecuted instantiation: janet_log1p
Unexecuted instantiation: janet_erf
Unexecuted instantiation: janet_erfc
Unexecuted instantiation: janet_lgamma
Unexecuted instantiation: janet_fabs
Unexecuted instantiation: janet_tgamma
19774
19775
#define JANET_DEFINE_MATHOP(fop, doc) JANET_DEFINE_NAMED_MATHOP(#fop, fop, doc)
19776
19777
JANET_DEFINE_MATHOP(acos, "Returns the arccosine of x.")
19778
JANET_DEFINE_MATHOP(asin, "Returns the arcsin of x.")
19779
JANET_DEFINE_MATHOP(atan, "Returns the arctangent of x.")
19780
JANET_DEFINE_MATHOP(cos, "Returns the cosine of x.")
19781
JANET_DEFINE_MATHOP(cosh, "Returns the hyperbolic cosine of x.")
19782
JANET_DEFINE_MATHOP(acosh, "Returns the hyperbolic arccosine of x.")
19783
JANET_DEFINE_MATHOP(sin, "Returns the sine of x.")
19784
JANET_DEFINE_MATHOP(sinh, "Returns the hyperbolic sine of x.")
19785
JANET_DEFINE_MATHOP(asinh, "Returns the hyperbolic arcsine of x.")
19786
JANET_DEFINE_MATHOP(tan, "Returns the tangent of x.")
19787
JANET_DEFINE_MATHOP(tanh, "Returns the hyperbolic tangent of x.")
19788
JANET_DEFINE_MATHOP(atanh, "Returns the hyperbolic arctangent of x.")
19789
JANET_DEFINE_MATHOP(exp, "Returns e to the power of x.")
19790
JANET_DEFINE_MATHOP(exp2, "Returns 2 to the power of x.")
19791
JANET_DEFINE_MATHOP(expm1, "Returns e to the power of x minus 1.")
19792
JANET_DEFINE_MATHOP(log, "Returns the natural logarithm of x.")
19793
JANET_DEFINE_MATHOP(log10, "Returns the log base 10 of x.")
19794
JANET_DEFINE_MATHOP(log2, "Returns the log base 2 of x.")
19795
JANET_DEFINE_MATHOP(sqrt, "Returns the square root of x.")
19796
JANET_DEFINE_MATHOP(cbrt, "Returns the cube root of x.")
19797
JANET_DEFINE_MATHOP(ceil, "Returns the smallest integer value number that is not less than x.")
19798
JANET_DEFINE_MATHOP(floor, "Returns the largest integer value number that is not greater than x.")
19799
JANET_DEFINE_MATHOP(trunc, "Returns the integer between x and 0 nearest to x.")
19800
JANET_DEFINE_MATHOP(round, "Returns the integer nearest to x.")
19801
JANET_DEFINE_MATHOP(log1p, "Returns (log base e of x) + 1 more accurately than (+ (math/log x) 1)")
19802
JANET_DEFINE_MATHOP(erf, "Returns the error function of x.")
19803
JANET_DEFINE_MATHOP(erfc, "Returns the complementary error function of x.")
19804
JANET_DEFINE_NAMED_MATHOP("log-gamma", lgamma, "Returns log-gamma(x).")
19805
JANET_DEFINE_NAMED_MATHOP("abs", fabs, "Return the absolute value of x.")
19806
JANET_DEFINE_NAMED_MATHOP("gamma", tgamma, "Returns gamma(x).")
19807
19808
#define JANET_DEFINE_MATH2OP(name, fop, signature, doc)\
19809
0
JANET_CORE_FN(janet_##name, signature, doc) {\
19810
0
    janet_fixarity(argc, 2); \
19811
0
    double lhs = janet_getnumber(argv, 0); \
19812
0
    double rhs = janet_getnumber(argv, 1); \
19813
0
    return janet_wrap_number(fop(lhs, rhs)); \
19814
0
}
Unexecuted instantiation: janet_atan2
Unexecuted instantiation: janet_pow
Unexecuted instantiation: janet_hypot
Unexecuted instantiation: janet_nextafter
19815
19816
JANET_DEFINE_MATH2OP(atan2, atan2, "(math/atan2 y x)", "Returns the arctangent of y/x. Works even when x is 0.")
19817
JANET_DEFINE_MATH2OP(pow, pow, "(math/pow a x)", "Returns a to the power of x.")
19818
JANET_DEFINE_MATH2OP(hypot, hypot, "(math/hypot a b)", "Returns c from the equation c^2 = a^2 + b^2.")
19819
JANET_DEFINE_MATH2OP(nextafter, nextafter,  "(math/next x y)", "Returns the next representable floating point value after x in the direction of y.")
19820
19821
0
JANET_CORE_FN(janet_not, "(not x)", "Returns the boolean inverse of x.") {
19822
0
    janet_fixarity(argc, 1);
19823
0
    return janet_wrap_boolean(!janet_truthy(argv[0]));
19824
0
}
19825
19826
0
static double janet_gcd(double x, double y) {
19827
0
    if (isnan(x) || isnan(y)) {
19828
0
#ifdef NAN
19829
0
        return NAN;
19830
#else
19831
        return 0.0 / 0.0;
19832
#endif
19833
0
    }
19834
0
    if (isinf(x) || isinf(y)) return INFINITY;
19835
0
    while (y != 0) {
19836
0
        double temp = y;
19837
0
        y = fmod(x, y);
19838
0
        x = temp;
19839
0
    }
19840
0
    return x;
19841
0
}
19842
19843
0
static double janet_lcm(double x, double y) {
19844
0
    return (x / janet_gcd(x, y)) * y;
19845
0
}
19846
19847
JANET_CORE_FN(janet_cfun_gcd, "(math/gcd x y)",
19848
0
              "Returns the greatest common divisor between x and y.") {
19849
0
    janet_fixarity(argc, 2);
19850
0
    double x = janet_getnumber(argv, 0);
19851
0
    double y = janet_getnumber(argv, 1);
19852
0
    return janet_wrap_number(janet_gcd(x, y));
19853
0
}
19854
19855
JANET_CORE_FN(janet_cfun_lcm, "(math/lcm x y)",
19856
0
              "Returns the least common multiple of x and y.") {
19857
0
    janet_fixarity(argc, 2);
19858
0
    double x = janet_getnumber(argv, 0);
19859
0
    double y = janet_getnumber(argv, 1);
19860
0
    return janet_wrap_number(janet_lcm(x, y));
19861
0
}
19862
19863
JANET_CORE_FN(janet_cfun_frexp, "(math/frexp x)",
19864
0
              "Returns a tuple of (mantissa, exponent) from number.") {
19865
0
    janet_fixarity(argc, 1);
19866
0
    double x = janet_getnumber(argv, 0);
19867
0
    int exp;
19868
0
    x = frexp(x, &exp);
19869
0
    Janet *result = janet_tuple_begin(2);
19870
0
    result[0] = janet_wrap_number(x);
19871
0
    result[1] = janet_wrap_number((double) exp);
19872
0
    return janet_wrap_tuple(janet_tuple_end(result));
19873
0
}
19874
19875
JANET_CORE_FN(janet_cfun_ldexp, "(math/ldexp m e)",
19876
0
              "Creates a new number from a mantissa and an exponent.") {
19877
0
    janet_fixarity(argc, 2);
19878
0
    double x = janet_getnumber(argv, 0);
19879
0
    int32_t y = janet_getinteger(argv, 1);
19880
0
    return janet_wrap_number(ldexp(x, y));
19881
0
}
19882
19883
/* Module entry point */
19884
0
void janet_lib_math(JanetTable *env) {
19885
0
    JanetRegExt math_cfuns[] = {
19886
0
        JANET_CORE_REG("not", janet_not),
19887
0
        JANET_CORE_REG("math/random", janet_rand),
19888
0
        JANET_CORE_REG("math/seedrandom", janet_srand),
19889
0
        JANET_CORE_REG("math/cos", janet_cos),
19890
0
        JANET_CORE_REG("math/sin", janet_sin),
19891
0
        JANET_CORE_REG("math/tan", janet_tan),
19892
0
        JANET_CORE_REG("math/acos", janet_acos),
19893
0
        JANET_CORE_REG("math/asin", janet_asin),
19894
0
        JANET_CORE_REG("math/atan", janet_atan),
19895
0
        JANET_CORE_REG("math/exp", janet_exp),
19896
0
        JANET_CORE_REG("math/log", janet_log),
19897
0
        JANET_CORE_REG("math/log10", janet_log10),
19898
0
        JANET_CORE_REG("math/log2", janet_log2),
19899
0
        JANET_CORE_REG("math/sqrt", janet_sqrt),
19900
0
        JANET_CORE_REG("math/cbrt", janet_cbrt),
19901
0
        JANET_CORE_REG("math/floor", janet_floor),
19902
0
        JANET_CORE_REG("math/ceil", janet_ceil),
19903
0
        JANET_CORE_REG("math/pow", janet_pow),
19904
0
        JANET_CORE_REG("math/abs", janet_fabs),
19905
0
        JANET_CORE_REG("math/sinh", janet_sinh),
19906
0
        JANET_CORE_REG("math/cosh", janet_cosh),
19907
0
        JANET_CORE_REG("math/tanh", janet_tanh),
19908
0
        JANET_CORE_REG("math/atanh", janet_atanh),
19909
0
        JANET_CORE_REG("math/asinh", janet_asinh),
19910
0
        JANET_CORE_REG("math/acosh", janet_acosh),
19911
0
        JANET_CORE_REG("math/atan2", janet_atan2),
19912
0
        JANET_CORE_REG("math/rng", cfun_rng_make),
19913
0
        JANET_CORE_REG("math/rng-uniform", cfun_rng_uniform),
19914
0
        JANET_CORE_REG("math/rng-int", cfun_rng_int),
19915
0
        JANET_CORE_REG("math/rng-buffer", cfun_rng_buffer),
19916
0
        JANET_CORE_REG("math/hypot", janet_hypot),
19917
0
        JANET_CORE_REG("math/exp2", janet_exp2),
19918
0
        JANET_CORE_REG("math/log1p", janet_log1p),
19919
0
        JANET_CORE_REG("math/gamma", janet_tgamma),
19920
0
        JANET_CORE_REG("math/log-gamma", janet_lgamma),
19921
0
        JANET_CORE_REG("math/erfc", janet_erfc),
19922
0
        JANET_CORE_REG("math/erf", janet_erf),
19923
0
        JANET_CORE_REG("math/expm1", janet_expm1),
19924
0
        JANET_CORE_REG("math/trunc", janet_trunc),
19925
0
        JANET_CORE_REG("math/round", janet_round),
19926
0
        JANET_CORE_REG("math/next", janet_nextafter),
19927
0
        JANET_CORE_REG("math/gcd", janet_cfun_gcd),
19928
0
        JANET_CORE_REG("math/lcm", janet_cfun_lcm),
19929
0
        JANET_CORE_REG("math/frexp", janet_cfun_frexp),
19930
0
        JANET_CORE_REG("math/ldexp", janet_cfun_ldexp),
19931
0
        JANET_REG_END
19932
0
    };
19933
0
    janet_core_cfuns_ext(env, NULL, math_cfuns);
19934
0
    janet_register_abstract_type(&janet_rng_type);
19935
#ifdef JANET_BOOTSTRAP
19936
    JANET_CORE_DEF(env, "math/pi", janet_wrap_number(3.1415926535897931),
19937
                   "The value pi.");
19938
    JANET_CORE_DEF(env, "math/e", janet_wrap_number(2.7182818284590451),
19939
                   "The base of the natural log.");
19940
    JANET_CORE_DEF(env, "math/inf", janet_wrap_number(INFINITY),
19941
                   "The number representing positive infinity");
19942
    JANET_CORE_DEF(env, "math/-inf", janet_wrap_number(-INFINITY),
19943
                   "The number representing negative infinity");
19944
    JANET_CORE_DEF(env, "math/int32-min", janet_wrap_number(INT32_MIN),
19945
                   "The minimum contiguous integer representable by a 32 bit signed integer");
19946
    JANET_CORE_DEF(env, "math/int32-max", janet_wrap_number(INT32_MAX),
19947
                   "The maximum contiguous integer representable by a 32 bit signed integer");
19948
    JANET_CORE_DEF(env, "math/int-min", janet_wrap_number(JANET_INTMIN_DOUBLE),
19949
                   "The minimum contiguous integer representable by a double (2^53)");
19950
    JANET_CORE_DEF(env, "math/int-max", janet_wrap_number(JANET_INTMAX_DOUBLE),
19951
                   "The maximum contiguous integer representable by a double (-(2^53))");
19952
#ifdef NAN
19953
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(NAN), "Not a number (IEEE-754 NaN)");
19954
#else
19955
    JANET_CORE_DEF(env, "math/nan", janet_wrap_number(0.0 / 0.0), "Not a number (IEEE-754 NaN)");
19956
#endif
19957
#endif
19958
0
}
19959
19960
19961
/* src/core/net.c */
19962
#line 0 "src/core/net.c"
19963
19964
/*
19965
* Copyright (c) 2025 Calvin Rose and contributors.
19966
*
19967
* Permission is hereby granted, free of charge, to any person obtaining a copy
19968
* of this software and associated documentation files (the "Software"), to
19969
* deal in the Software without restriction, including without limitation the
19970
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
19971
* sell copies of the Software, and to permit persons to whom the Software is
19972
* furnished to do so, subject to the following conditions:
19973
*
19974
* The above copyright notice and this permission notice shall be included in
19975
* all copies or substantial portions of the Software.
19976
*
19977
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19978
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19979
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19980
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19981
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19982
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
19983
* IN THE SOFTWARE.
19984
*/
19985
19986
#ifndef JANET_AMALG
19987
#include "features.h"
19988
#include <janet.h>
19989
#include "util.h"
19990
#include "fiber.h"
19991
#endif
19992
19993
#ifdef JANET_NET
19994
19995
#include <math.h>
19996
#ifdef JANET_WINDOWS
19997
#include <winsock2.h>
19998
#include <windows.h>
19999
#include <ws2tcpip.h>
20000
#include <mswsock.h>
20001
#ifdef JANET_MSVC
20002
#pragma comment (lib, "Ws2_32.lib")
20003
#pragma comment (lib, "Mswsock.lib")
20004
#pragma comment (lib, "Advapi32.lib")
20005
#endif
20006
#else
20007
#include <arpa/inet.h>
20008
#include <unistd.h>
20009
#include <signal.h>
20010
#include <sys/ioctl.h>
20011
#include <sys/types.h>
20012
#include <sys/socket.h>
20013
#include <sys/un.h>
20014
#include <netinet/in.h>
20015
#include <netinet/tcp.h>
20016
#include <netdb.h>
20017
#include <fcntl.h>
20018
#endif
20019
20020
const JanetAbstractType janet_address_type = {
20021
    "core/socket-address",
20022
    JANET_ATEND_NAME
20023
};
20024
20025
#ifdef JANET_WINDOWS
20026
#define JSOCKCLOSE(x) closesocket((SOCKET) x)
20027
#define JSOCKDEFAULT INVALID_SOCKET
20028
#define JSOCKVALID(x) ((x) != INVALID_SOCKET)
20029
#define JSock SOCKET
20030
#define JSOCKFLAGS 0
20031
#else
20032
0
#define JSOCKCLOSE(x) close(x)
20033
0
#define JSOCKDEFAULT 0
20034
0
#define JSOCKVALID(x) ((x) >= 0)
20035
0
#define JSock int
20036
#ifdef SOCK_CLOEXEC
20037
0
#define JSOCKFLAGS SOCK_CLOEXEC
20038
#else
20039
#define JSOCKFLAGS 0
20040
#endif
20041
#endif
20042
20043
/* maximum number of bytes in a socket address host (post name resolution) */
20044
#ifdef JANET_WINDOWS
20045
#ifdef JANET_NO_IPV6
20046
#define SA_ADDRSTRLEN (INET_ADDRSTRLEN + 1)
20047
#else
20048
#define SA_ADDRSTRLEN (INET6_ADDRSTRLEN + 1)
20049
#endif
20050
typedef unsigned short in_port_t;
20051
#else
20052
#define JANET_SA_MAX(a, b) (((a) > (b))? (a) : (b))
20053
#ifdef JANET_NO_IPV6
20054
#define SA_ADDRSTRLEN JANET_SA_MAX(INET_ADDRSTRLEN + 1, (sizeof ((struct sockaddr_un *)0)->sun_path) + 1)
20055
#else
20056
#define SA_ADDRSTRLEN JANET_SA_MAX(INET6_ADDRSTRLEN + 1, (sizeof ((struct sockaddr_un *)0)->sun_path) + 1)
20057
#endif
20058
#endif
20059
20060
static JanetStream *make_stream(JSock handle, uint32_t flags);
20061
20062
/* We pass this flag to all send calls to prevent sigpipe */
20063
#ifndef MSG_NOSIGNAL
20064
#define MSG_NOSIGNAL 0
20065
#endif
20066
20067
/* Make sure a socket doesn't block */
20068
0
static void janet_net_socknoblock(JSock s) {
20069
#ifdef JANET_WINDOWS
20070
    unsigned long arg = 1;
20071
    ioctlsocket(s, FIONBIO, &arg);
20072
#else
20073
#if !defined(SOCK_CLOEXEC) && defined(O_CLOEXEC)
20074
    int extra = O_CLOEXEC;
20075
#else
20076
0
    int extra = 0;
20077
0
#endif
20078
0
    fcntl(s, F_SETFL, fcntl(s, F_GETFL, 0) | O_NONBLOCK | extra);
20079
#ifdef SO_NOSIGPIPE
20080
    int enable = 1;
20081
    setsockopt(s, SOL_SOCKET, SO_NOSIGPIPE, &enable, sizeof(int));
20082
#endif
20083
0
#endif
20084
0
}
20085
20086
/* State machine for async connect */
20087
20088
0
void net_callback_connect(JanetFiber *fiber, JanetAsyncEvent event) {
20089
0
    JanetStream *stream = fiber->ev_stream;
20090
0
    switch (event) {
20091
0
        default:
20092
0
            break;
20093
0
#ifndef JANET_WINDOWS
20094
        /* Wait until we have an actual event before checking.
20095
         * Windows doesn't support async connect with this, just try immediately.*/
20096
0
        case JANET_ASYNC_EVENT_INIT:
20097
0
#endif
20098
0
        case JANET_ASYNC_EVENT_DEINIT:
20099
0
            return;
20100
0
        case JANET_ASYNC_EVENT_CLOSE:
20101
0
            janet_cancel(fiber, janet_cstringv("stream closed"));
20102
0
            janet_async_end(fiber);
20103
0
            return;
20104
0
    }
20105
#ifdef JANET_WINDOWS
20106
    int res = 0;
20107
    int size = sizeof(res);
20108
    int r = getsockopt((SOCKET)stream->handle, SOL_SOCKET, SO_ERROR, (char *)&res, &size);
20109
#else
20110
0
    int res = 0;
20111
0
    socklen_t size = sizeof res;
20112
0
    int r = getsockopt(stream->handle, SOL_SOCKET, SO_ERROR, &res, &size);
20113
0
#endif
20114
0
    if (r == 0) {
20115
0
        if (res == 0) {
20116
0
            janet_schedule(fiber, janet_wrap_abstract(stream));
20117
0
        } else {
20118
0
            janet_cancel(fiber, janet_cstringv(janet_strerror(res)));
20119
0
            stream->flags |= JANET_STREAM_TOCLOSE;
20120
0
        }
20121
0
    } else {
20122
0
        janet_cancel(fiber, janet_ev_lasterr());
20123
0
        stream->flags |= JANET_STREAM_TOCLOSE;
20124
0
    }
20125
0
    janet_async_end(fiber);
20126
0
}
20127
20128
0
static JANET_NO_RETURN void net_sched_connect(JanetStream *stream) {
20129
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_WRITE, net_callback_connect, NULL);
20130
0
}
20131
20132
/* State machine for accepting connections. */
20133
20134
#ifdef JANET_WINDOWS
20135
20136
typedef struct {
20137
    WSAOVERLAPPED overlapped;
20138
    JanetFunction *function;
20139
    JanetStream *lstream;
20140
    JanetStream *astream;
20141
    char buf[1024];
20142
} NetStateAccept;
20143
20144
static int net_sched_accept_impl(NetStateAccept *state, JanetFiber *fiber, Janet *err);
20145
20146
void net_callback_accept(JanetFiber *fiber, JanetAsyncEvent event) {
20147
    NetStateAccept *state = (NetStateAccept *)fiber->ev_state;
20148
    switch (event) {
20149
        default:
20150
            break;
20151
        case JANET_ASYNC_EVENT_MARK: {
20152
            if (state->lstream) janet_mark(janet_wrap_abstract(state->lstream));
20153
            if (state->astream) janet_mark(janet_wrap_abstract(state->astream));
20154
            if (state->function) janet_mark(janet_wrap_function(state->function));
20155
            break;
20156
        }
20157
        case JANET_ASYNC_EVENT_CLOSE:
20158
            janet_schedule(fiber, janet_wrap_nil());
20159
            janet_async_end(fiber);
20160
            return;
20161
        case JANET_ASYNC_EVENT_COMPLETE: {
20162
            if (state->astream->flags & JANET_STREAM_CLOSED) {
20163
                janet_cancel(fiber, janet_cstringv("failed to accept connection"));
20164
                janet_async_end(fiber);
20165
                return;
20166
            }
20167
            SOCKET lsock = (SOCKET) state->lstream->handle;
20168
            if (NO_ERROR != setsockopt((SOCKET) state->astream->handle, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
20169
                                       (char *) &lsock, sizeof(lsock))) {
20170
                janet_cancel(fiber, janet_cstringv("failed to accept connection"));
20171
                janet_async_end(fiber);
20172
                return;
20173
            }
20174
20175
            Janet streamv = janet_wrap_abstract(state->astream);
20176
            if (state->function) {
20177
                /* Schedule worker */
20178
                JanetFiber *sub_fiber = janet_fiber(state->function, 64, 1, &streamv);
20179
                sub_fiber->supervisor_channel = fiber->supervisor_channel;
20180
                janet_schedule(sub_fiber, janet_wrap_nil());
20181
                /* Now listen again for next connection */
20182
                Janet err;
20183
                if (net_sched_accept_impl(state, fiber, &err)) {
20184
                    janet_cancel(fiber, err);
20185
                    janet_async_end(fiber);
20186
                    return;
20187
                }
20188
            } else {
20189
                janet_schedule(fiber, streamv);
20190
                janet_async_end(fiber);
20191
                return;
20192
            }
20193
        }
20194
    }
20195
}
20196
20197
JANET_NO_RETURN static void janet_sched_accept(JanetStream *stream, JanetFunction *fun) {
20198
    Janet err;
20199
    NetStateAccept *state = janet_malloc(sizeof(NetStateAccept));
20200
    memset(&state->overlapped, 0, sizeof(WSAOVERLAPPED));
20201
    memset(&state->buf, 0, 1024);
20202
    state->function = fun;
20203
    state->lstream = stream;
20204
    if (net_sched_accept_impl(state, janet_root_fiber(), &err)) {
20205
        janet_free(state);
20206
        janet_panicv(err);
20207
    }
20208
    janet_async_start(stream, JANET_ASYNC_LISTEN_READ, net_callback_accept, state);
20209
}
20210
20211
static int net_sched_accept_impl(NetStateAccept *state, JanetFiber *fiber, Janet *err) {
20212
    SOCKET lsock = (SOCKET) state->lstream->handle;
20213
    SOCKET asock = WSASocketW(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, WSA_FLAG_OVERLAPPED);
20214
    if (asock == INVALID_SOCKET) {
20215
        *err = janet_ev_lasterr();
20216
        return 1;
20217
    }
20218
    JanetStream *astream = make_stream(asock, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
20219
    state->astream = astream;
20220
    int socksize = sizeof(SOCKADDR_STORAGE) + 16;
20221
    if (FALSE == AcceptEx(lsock, asock, state->buf, 0, socksize, socksize, NULL, &state->overlapped)) {
20222
        int code = WSAGetLastError();
20223
        if (code == WSA_IO_PENDING) {
20224
            /* indicates io is happening async */
20225
            janet_async_in_flight(fiber);
20226
            return 0;
20227
        }
20228
        *err = janet_ev_lasterr();
20229
        return 1;
20230
    }
20231
    return 0;
20232
}
20233
20234
#else
20235
20236
typedef struct {
20237
    JanetFunction *function;
20238
} NetStateAccept;
20239
20240
0
void net_callback_accept(JanetFiber *fiber, JanetAsyncEvent event) {
20241
0
    JanetStream *stream = fiber->ev_stream;
20242
0
    NetStateAccept *state = (NetStateAccept *)fiber->ev_state;
20243
0
    switch (event) {
20244
0
        default:
20245
0
            break;
20246
0
        case JANET_ASYNC_EVENT_MARK: {
20247
0
            if (state->function) janet_mark(janet_wrap_function(state->function));
20248
0
            break;
20249
0
        }
20250
0
        case JANET_ASYNC_EVENT_CLOSE:
20251
0
            janet_schedule(fiber, janet_wrap_nil());
20252
0
            janet_async_end(fiber);
20253
0
            return;
20254
0
        case JANET_ASYNC_EVENT_INIT:
20255
0
        case JANET_ASYNC_EVENT_READ: {
20256
0
#if defined(JANET_LINUX)
20257
0
            JSock connfd = accept4(stream->handle, NULL, NULL, SOCK_CLOEXEC);
20258
#else
20259
            /* On BSDs, CLOEXEC should be inherited from server socket */
20260
            JSock connfd = accept(stream->handle, NULL, NULL);
20261
#endif
20262
0
            if (JSOCKVALID(connfd)) {
20263
0
                janet_net_socknoblock(connfd);
20264
0
                JanetStream *stream = make_stream(connfd, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE);
20265
0
                Janet streamv = janet_wrap_abstract(stream);
20266
0
                if (state->function) {
20267
0
                    JanetFiber *sub_fiber = janet_fiber(state->function, 64, 1, &streamv);
20268
0
                    sub_fiber->supervisor_channel = fiber->supervisor_channel;
20269
0
                    janet_schedule(sub_fiber, janet_wrap_nil());
20270
0
                } else {
20271
0
                    janet_schedule(fiber, streamv);
20272
0
                    janet_async_end(fiber);
20273
0
                    return;
20274
0
                }
20275
0
            }
20276
0
            break;
20277
0
        }
20278
0
    }
20279
0
}
20280
20281
0
JANET_NO_RETURN static void janet_sched_accept(JanetStream *stream, JanetFunction *fun) {
20282
0
    NetStateAccept *state = janet_malloc(sizeof(NetStateAccept));
20283
0
    memset(state, 0, sizeof(NetStateAccept));
20284
0
    state->function = fun;
20285
0
    if (fun) janet_stream_level_triggered(stream);
20286
0
    janet_async_start(stream, JANET_ASYNC_LISTEN_READ, net_callback_accept, state);
20287
0
}
20288
20289
#endif
20290
20291
/* Address info */
20292
20293
0
static int janet_get_sockettype(Janet *argv, int32_t argc, int32_t n) {
20294
0
    JanetKeyword stype = janet_optkeyword(argv, argc, n, NULL);
20295
0
    int socktype = SOCK_DGRAM;
20296
0
    if ((NULL == stype) || !janet_cstrcmp(stype, "stream")) {
20297
0
        socktype = SOCK_STREAM;
20298
0
    } else if (janet_cstrcmp(stype, "datagram")) {
20299
0
        janet_panicf("expected socket type as :stream or :datagram, got %v", argv[n]);
20300
0
    }
20301
0
    return socktype;
20302
0
}
20303
20304
/* Needs argc >= offset + 2 */
20305
/* For unix paths, just rertuns a single sockaddr and sets *is_unix to 1,
20306
 * otherwise 0. Also, ignores is_bind when is a unix socket. */
20307
0
static struct addrinfo *janet_get_addrinfo(Janet *argv, int32_t offset, int socktype, int passive, int *is_unix, socklen_t *sizeout) {
20308
    /* Unix socket support - not yet supported on windows. */
20309
0
#ifndef JANET_WINDOWS
20310
0
    if (janet_keyeq(argv[offset], "unix")) {
20311
0
        const char *path = janet_getcstring(argv, offset + 1);
20312
0
        struct sockaddr_un *saddr = janet_calloc(1, sizeof(struct sockaddr_un));
20313
0
        if (saddr == NULL) {
20314
0
            JANET_OUT_OF_MEMORY;
20315
0
        }
20316
0
        saddr->sun_family = AF_UNIX;
20317
0
        size_t path_size = sizeof(saddr->sun_path);
20318
0
        snprintf(saddr->sun_path, path_size, "%s", path);
20319
0
        *sizeout = sizeof(struct sockaddr_un);
20320
0
#ifdef JANET_LINUX
20321
0
        if (path[0] == '@') {
20322
0
            saddr->sun_path[0] = '\0';
20323
0
            *sizeout = offsetof(struct sockaddr_un, sun_path) + janet_string_length(path);
20324
0
        }
20325
0
#endif
20326
0
        *is_unix = 1;
20327
0
        return (struct addrinfo *) saddr;
20328
0
    }
20329
0
#endif
20330
    /* Get host and port */
20331
0
    char *host = (char *)janet_getcstring(argv, offset);
20332
0
    char *port = NULL;
20333
0
    if (janet_checkint(argv[offset + 1])) {
20334
0
        port = (char *)janet_to_string(argv[offset + 1]);
20335
0
    } else {
20336
0
        port = (char *)janet_optcstring(argv, offset + 2, offset + 1, NULL);
20337
0
    }
20338
    /* getaddrinfo */
20339
0
    struct addrinfo *ai = NULL;
20340
0
    struct addrinfo hints;
20341
0
    memset(&hints, 0, sizeof(hints));
20342
0
    hints.ai_family = AF_UNSPEC;
20343
0
    hints.ai_socktype = socktype;
20344
0
    hints.ai_flags = passive ? AI_PASSIVE : 0;
20345
0
    int status = getaddrinfo(host, port, &hints, &ai);
20346
0
    if (status) {
20347
0
        janet_panicf("could not get address info: %s", gai_strerror(status));
20348
0
    }
20349
0
    *is_unix = 0;
20350
#ifdef JANET_WINDOWS
20351
    *sizeout = 0;
20352
#else
20353
0
    *sizeout = sizeof(struct sockaddr_un);
20354
0
#endif
20355
0
    return ai;
20356
0
}
20357
20358
/*
20359
 * C Funs
20360
 */
20361
20362
JANET_CORE_FN(cfun_net_sockaddr,
20363
              "(net/address host port &opt type multi)",
20364
              "Look up the connection information for a given hostname, port, and connection type. Returns "
20365
              "a handle that can be used to send datagrams over network without establishing a connection. "
20366
              "On Posix platforms, you can use :unix for host to connect to a unix domain socket, where the name is "
20367
              "given in the port argument. On Linux, abstract "
20368
              "unix domain sockets are specified with a leading '@' character in port. If `multi` is truthy, will "
20369
0
              "return all address that match in an array instead of just the first.") {
20370
0
    janet_sandbox_assert(JANET_SANDBOX_NET_CONNECT); /* connect OR listen */
20371
0
    janet_arity(argc, 2, 4);
20372
0
    int socktype = janet_get_sockettype(argv, argc, 2);
20373
0
    int is_unix = 0;
20374
0
    int make_arr = (argc >= 3 && janet_truthy(argv[3]));
20375
0
    socklen_t addrsize = 0;
20376
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 0, &is_unix, &addrsize);
20377
0
#ifndef JANET_WINDOWS
20378
    /* no unix domain socket support on windows yet */
20379
0
    if (is_unix) {
20380
0
        void *abst = janet_abstract(&janet_address_type, addrsize);
20381
0
        memcpy(abst, ai, addrsize);
20382
0
        Janet ret = janet_wrap_abstract(abst);
20383
0
        return make_arr ? janet_wrap_array(janet_array_n(&ret, 1)) : ret;
20384
0
    }
20385
0
#endif
20386
0
    if (make_arr) {
20387
        /* Select all */
20388
0
        JanetArray *arr = janet_array(10);
20389
0
        struct addrinfo *iter = ai;
20390
0
        while (NULL != iter) {
20391
0
            void *abst = janet_abstract(&janet_address_type, iter->ai_addrlen);
20392
0
            memcpy(abst, iter->ai_addr, iter->ai_addrlen);
20393
0
            janet_array_push(arr, janet_wrap_abstract(abst));
20394
0
            iter = iter->ai_next;
20395
0
        }
20396
0
        freeaddrinfo(ai);
20397
0
        return janet_wrap_array(arr);
20398
0
    } else {
20399
        /* Select first */
20400
0
        if (NULL == ai) {
20401
0
            janet_panic("no data for given address");
20402
0
        }
20403
0
        void *abst = janet_abstract(&janet_address_type, ai->ai_addrlen);
20404
0
        memcpy(abst, ai->ai_addr, ai->ai_addrlen);
20405
0
        freeaddrinfo(ai);
20406
0
        return janet_wrap_abstract(abst);
20407
0
    }
20408
0
}
20409
20410
JANET_CORE_FN(cfun_net_connect,
20411
              "(net/connect host port &opt type bindhost bindport)",
20412
              "Open a connection to communicate with a server. Returns a duplex stream "
20413
              "that can be used to communicate with the server. Type is an optional keyword "
20414
              "to specify a connection type, either :stream or :datagram. The default is :stream. "
20415
              "Bindhost is an optional string to select from what address to make the outgoing "
20416
0
              "connection, with the default being the same as using the OS's preferred address. ") {
20417
0
    janet_sandbox_assert(JANET_SANDBOX_NET_CONNECT);
20418
0
    janet_arity(argc, 2, 5);
20419
20420
    /* Check arguments */
20421
0
    int socktype = janet_get_sockettype(argv, argc, 2);
20422
0
    int is_unix = 0;
20423
0
    char *bindhost = (char *) janet_optcstring(argv, argc, 3, NULL);
20424
0
    char *bindport = NULL;
20425
0
    if (argc >= 5 && janet_checkint(argv[4])) {
20426
0
        bindport = (char *)janet_to_string(argv[4]);
20427
0
    } else {
20428
0
        bindport = (char *)janet_optcstring(argv, argc, 4, NULL);
20429
0
    }
20430
20431
    /* Where we're connecting to */
20432
0
    socklen_t addrlen = 0;
20433
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 0, &is_unix, &addrlen);
20434
20435
    /* Check if we're binding address */
20436
0
    struct addrinfo *binding = NULL;
20437
0
    if (bindhost != NULL) {
20438
0
        if (is_unix) {
20439
0
            freeaddrinfo(ai);
20440
0
            janet_panic("bindhost not supported for unix domain sockets");
20441
0
        }
20442
        /* getaddrinfo */
20443
0
        struct addrinfo hints;
20444
0
        memset(&hints, 0, sizeof(hints));
20445
0
        hints.ai_family = AF_UNSPEC;
20446
0
        hints.ai_socktype = socktype;
20447
0
        hints.ai_flags = 0;
20448
0
        int status = getaddrinfo(bindhost, bindport, &hints, &binding);
20449
0
        if (status) {
20450
0
            freeaddrinfo(ai);
20451
0
            janet_panicf("could not get address info for bindhost: %s", gai_strerror(status));
20452
0
        }
20453
0
    }
20454
20455
    /* Create socket */
20456
0
    JSock sock = JSOCKDEFAULT;
20457
0
    void *addr = NULL;
20458
0
#ifndef JANET_WINDOWS
20459
0
    if (is_unix) {
20460
0
        sock = socket(AF_UNIX, socktype | JSOCKFLAGS, 0);
20461
0
        if (!JSOCKVALID(sock)) {
20462
0
            Janet v = janet_ev_lasterr();
20463
0
            janet_free(ai);
20464
0
            janet_panicf("could not create socket: %V", v);
20465
0
        }
20466
0
        addr = (void *) ai;
20467
0
    } else
20468
0
#endif
20469
0
    {
20470
0
        struct addrinfo *rp = NULL;
20471
0
        for (rp = ai; rp != NULL; rp = rp->ai_next) {
20472
#ifdef JANET_WINDOWS
20473
            sock = WSASocketW(rp->ai_family, rp->ai_socktype, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
20474
#else
20475
0
            sock = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
20476
0
#endif
20477
0
            if (JSOCKVALID(sock)) {
20478
0
                addr = rp->ai_addr;
20479
0
                addrlen = (socklen_t) rp->ai_addrlen;
20480
0
                break;
20481
0
            }
20482
0
        }
20483
0
        if (NULL == addr) {
20484
0
            Janet v = janet_ev_lasterr();
20485
0
            if (binding) freeaddrinfo(binding);
20486
0
            freeaddrinfo(ai);
20487
0
            janet_panicf("could not create socket: %V", v);
20488
0
        }
20489
0
    }
20490
20491
    /* Bind to bindhost and bindport if given */
20492
0
    if (binding) {
20493
0
        struct addrinfo *rp = NULL;
20494
0
        int did_bind = 0;
20495
0
        for (rp = binding; rp != NULL; rp = rp->ai_next) {
20496
0
            if (bind(sock, rp->ai_addr, (int) rp->ai_addrlen) == 0) {
20497
0
                did_bind = 1;
20498
0
                break;
20499
0
            }
20500
0
        }
20501
0
        if (!did_bind) {
20502
0
            Janet v = janet_ev_lasterr();
20503
0
            freeaddrinfo(binding);
20504
0
            freeaddrinfo(ai);
20505
0
            JSOCKCLOSE(sock);
20506
0
            janet_panicf("could not bind outgoing address: %V", v);
20507
0
        } else {
20508
0
            freeaddrinfo(binding);
20509
0
        }
20510
0
    }
20511
20512
    /* Wrap socket in abstract type JanetStream */
20513
0
    uint32_t udp_flag = 0;
20514
0
    if (socktype == SOCK_DGRAM) udp_flag = JANET_STREAM_UDPSERVER;
20515
0
    JanetStream *stream = make_stream(sock, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE | udp_flag);
20516
20517
    /* Set up the socket for non-blocking IO before connecting */
20518
0
    janet_net_socknoblock(sock);
20519
20520
    /* Connect to socket */
20521
#ifdef JANET_WINDOWS
20522
    int status = WSAConnect(sock, addr, addrlen, NULL, NULL, NULL, NULL);
20523
    int err = WSAGetLastError();
20524
    freeaddrinfo(ai);
20525
#else
20526
0
    int status;
20527
0
    do {
20528
0
        status = connect(sock, addr, addrlen);
20529
0
    } while (status == -1 && errno == EINTR);
20530
0
    int err = errno;
20531
0
    if (is_unix) {
20532
0
        janet_free(ai);
20533
0
    } else {
20534
0
        freeaddrinfo(ai);
20535
0
    }
20536
0
#endif
20537
20538
0
    if (status) {
20539
#ifdef JANET_WINDOWS
20540
        if (err != WSAEWOULDBLOCK) {
20541
#else
20542
0
        if (err != EINPROGRESS) {
20543
0
#endif
20544
0
            JSOCKCLOSE(sock);
20545
0
            Janet lasterr = janet_ev_lasterr();
20546
0
            janet_panicf("could not connect socket: %V", lasterr);
20547
0
        }
20548
0
    }
20549
20550
0
    net_sched_connect(stream);
20551
0
}
20552
20553
JANET_CORE_FN(cfun_net_socket,
20554
              "(net/socket &opt type)",
20555
              "Creates a new unbound socket. Type is an optional keyword, "
20556
0
              "either a :stream (usually tcp), or :datagram (usually udp). The default is :stream.") {
20557
0
    janet_arity(argc, 0, 1);
20558
20559
0
    int socktype = janet_get_sockettype(argv, argc, 0);
20560
20561
    /* Create socket */
20562
0
    JSock sfd = JSOCKDEFAULT;
20563
0
    struct addrinfo *ai = NULL;
20564
0
    struct addrinfo hints;
20565
0
    memset(&hints, 0, sizeof(hints));
20566
0
    hints.ai_family = AF_UNSPEC;
20567
0
    hints.ai_socktype = socktype;
20568
0
    hints.ai_flags = 0;
20569
0
    int status = getaddrinfo(NULL, "0", &hints, &ai);
20570
0
    if (status) {
20571
0
        janet_panicf("could not get address info: %s", gai_strerror(status));
20572
0
    }
20573
20574
0
    struct addrinfo *rp = NULL;
20575
0
    for (rp = ai; rp != NULL; rp = rp->ai_next) {
20576
#ifdef JANET_WINDOWS
20577
        sfd = WSASocketW(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
20578
#else
20579
0
        sfd = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
20580
0
#endif
20581
0
        if (JSOCKVALID(sfd)) {
20582
0
            break;
20583
0
        }
20584
0
    }
20585
0
    freeaddrinfo(ai);
20586
20587
0
    if (!JSOCKVALID(sfd)) {
20588
0
        Janet v = janet_ev_lasterr();
20589
0
        janet_panicf("could not create socket: %V", v);
20590
0
    }
20591
20592
    /* Wrap socket in abstract type JanetStream */
20593
0
    uint32_t udp_flag = 0;
20594
0
    if (socktype == SOCK_DGRAM) udp_flag = JANET_STREAM_UDPSERVER;
20595
0
    JanetStream *stream = make_stream(sfd, JANET_STREAM_READABLE | JANET_STREAM_WRITABLE | udp_flag);
20596
20597
    /* Set up the socket for non-blocking IO */
20598
0
    janet_net_socknoblock(sfd);
20599
20600
0
    return janet_wrap_abstract(stream);
20601
0
}
20602
20603
0
static const char *serverify_socket(JSock sfd, int reuse_addr, int reuse_port) {
20604
    /* Set various socket options */
20605
0
    int enable = 1;
20606
0
    if (reuse_addr) {
20607
0
        if (setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char *) &enable, sizeof(int)) < 0) {
20608
0
            return "setsockopt(SO_REUSEADDR) failed";
20609
0
        }
20610
0
    }
20611
0
    if (reuse_port) {
20612
0
#ifdef SO_REUSEPORT
20613
0
        if (setsockopt(sfd, SOL_SOCKET, SO_REUSEPORT, &enable, sizeof(int)) < 0) {
20614
0
            return "setsockopt(SO_REUSEPORT) failed";
20615
0
        }
20616
#else
20617
        (void) reuse_port;
20618
#endif
20619
0
    }
20620
0
    janet_net_socknoblock(sfd);
20621
0
    return NULL;
20622
0
}
20623
20624
#ifdef JANET_WINDOWS
20625
#define JANET_SHUTDOWN_RW SD_BOTH
20626
#define JANET_SHUTDOWN_R SD_RECEIVE
20627
#define JANET_SHUTDOWN_W SD_SEND
20628
#else
20629
0
#define JANET_SHUTDOWN_RW SHUT_RDWR
20630
0
#define JANET_SHUTDOWN_R SHUT_RD
20631
0
#define JANET_SHUTDOWN_W SHUT_WR
20632
#endif
20633
20634
JANET_CORE_FN(cfun_net_shutdown,
20635
              "(net/shutdown stream &opt mode)",
20636
              "Stop communication on this socket in a graceful manner, either in both directions or just "
20637
              "reading/writing from the stream. The `mode` parameter controls which communication to stop on the socket. "
20638
              "\n\n* `:wr` is the default and prevents both reading new data from the socket and writing new data to the socket.\n"
20639
              "* `:r` disables reading new data from the socket.\n"
20640
              "* `:w` disable writing data to the socket.\n\n"
20641
0
              "Returns the original socket.") {
20642
0
    janet_arity(argc, 1, 2);
20643
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20644
0
    janet_stream_flags(stream, JANET_STREAM_SOCKET);
20645
0
    int shutdown_type = JANET_SHUTDOWN_RW;
20646
0
    if (argc == 2) {
20647
0
        const uint8_t *kw = janet_getkeyword(argv, 1);
20648
0
        if (0 == janet_cstrcmp(kw, "rw")) {
20649
0
            shutdown_type = JANET_SHUTDOWN_RW;
20650
0
        } else if (0 == janet_cstrcmp(kw, "r")) {
20651
0
            shutdown_type = JANET_SHUTDOWN_R;
20652
0
        } else if (0 == janet_cstrcmp(kw, "w")) {
20653
0
            shutdown_type = JANET_SHUTDOWN_W;
20654
0
        } else {
20655
0
            janet_panicf("unexpected keyword %v", argv[1]);
20656
0
        }
20657
0
    }
20658
0
    int status;
20659
#ifdef JANET_WINDOWS
20660
    status = shutdown((SOCKET) stream->handle, shutdown_type);
20661
#else
20662
0
    do {
20663
0
        status = shutdown(stream->handle, shutdown_type);
20664
0
    } while (status == -1 && errno == EINTR);
20665
0
#endif
20666
0
    if (status) {
20667
0
        janet_panicf("could not shutdown socket: %V", janet_ev_lasterr());
20668
0
    }
20669
0
    return argv[0];
20670
0
}
20671
20672
JANET_CORE_FN(cfun_net_listen,
20673
              "(net/listen host port &opt type no-reuse)",
20674
              "Creates a server. Returns a new stream that is neither readable nor "
20675
              "writeable. Use net/accept or net/accept-loop be to handle connections and start the server. "
20676
              "The type parameter specifies the type of network connection, either "
20677
              "a :stream (usually tcp), or :datagram (usually udp). If not specified, the default is "
20678
              ":stream. The host and port arguments are the same as in net/address. The last boolean parameter `no-reuse` will "
20679
0
              "disable the use of `SO_REUSEADDR` and `SO_REUSEPORT` when creating a server on some operating systems.") {
20680
0
    janet_sandbox_assert(JANET_SANDBOX_NET_LISTEN);
20681
0
    janet_arity(argc, 2, 4);
20682
20683
    /* Get host, port, and handler*/
20684
0
    int socktype = janet_get_sockettype(argv, argc, 2);
20685
0
    int is_unix = 0;
20686
0
    socklen_t addrlen = 0;
20687
0
    struct addrinfo *ai = janet_get_addrinfo(argv, 0, socktype, 1, &is_unix, &addrlen);
20688
0
    int reuse = !(argc >= 4 && janet_truthy(argv[3]));
20689
20690
0
    JSock sfd = JSOCKDEFAULT;
20691
0
#ifndef JANET_WINDOWS
20692
0
    if (is_unix) {
20693
0
        sfd = socket(AF_UNIX, socktype | JSOCKFLAGS, 0);
20694
0
        if (!JSOCKVALID(sfd)) {
20695
0
            janet_free(ai);
20696
0
            janet_panicf("could not create socket: %V", janet_ev_lasterr());
20697
0
        }
20698
0
        const char *err = serverify_socket(sfd, reuse, 0);
20699
0
        if (NULL != err || bind(sfd, (struct sockaddr *)ai, addrlen)) {
20700
0
            JSOCKCLOSE(sfd);
20701
0
            janet_free(ai);
20702
0
            if (err) {
20703
0
                janet_panic(err);
20704
0
            } else {
20705
0
                janet_panicf("could not bind socket: %V", janet_ev_lasterr());
20706
0
            }
20707
0
        }
20708
0
        janet_free(ai);
20709
0
    } else
20710
0
#endif
20711
0
    {
20712
        /* Check all addrinfos in a loop for the first that we can bind to. */
20713
0
        struct addrinfo *rp = NULL;
20714
0
        for (rp = ai; rp != NULL; rp = rp->ai_next) {
20715
#ifdef JANET_WINDOWS
20716
            sfd = WSASocketW(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED);
20717
#else
20718
0
            sfd = socket(rp->ai_family, rp->ai_socktype | JSOCKFLAGS, rp->ai_protocol);
20719
0
#endif
20720
0
            if (!JSOCKVALID(sfd)) continue;
20721
0
            const char *err = serverify_socket(sfd, reuse, reuse);
20722
0
            if (NULL != err) {
20723
0
                JSOCKCLOSE(sfd);
20724
0
                continue;
20725
0
            }
20726
            /* Bind */
20727
0
            if (bind(sfd, rp->ai_addr, (int) rp->ai_addrlen) == 0) break;
20728
0
            JSOCKCLOSE(sfd);
20729
0
        }
20730
0
        freeaddrinfo(ai);
20731
0
        if (NULL == rp) {
20732
0
            janet_panic("could not bind to any sockets");
20733
0
        }
20734
0
    }
20735
20736
0
    if (socktype == SOCK_DGRAM) {
20737
        /* Datagram server (UDP) */
20738
0
        JanetStream *stream = make_stream(sfd, JANET_STREAM_UDPSERVER | JANET_STREAM_READABLE);
20739
0
        return janet_wrap_abstract(stream);
20740
0
    } else {
20741
        /* Stream server (TCP) */
20742
20743
        /* listen */
20744
0
        int status = listen(sfd, 1024);
20745
0
        if (status) {
20746
0
            JSOCKCLOSE(sfd);
20747
0
            janet_panicf("could not listen on file descriptor: %V", janet_ev_lasterr());
20748
0
        }
20749
20750
        /* Put sfd on our loop */
20751
0
        JanetStream *stream = make_stream(sfd, JANET_STREAM_ACCEPTABLE);
20752
0
        return janet_wrap_abstract(stream);
20753
0
    }
20754
0
}
20755
20756
/* Types of socket's we need to deal with - relevant type puns below.
20757
struct sockaddr *sa;           // Common base structure
20758
struct sockaddr_storage *ss;   // Size of largest socket address type
20759
struct sockaddr_in *sin;       // IPv4 address + port
20760
struct sockaddr_in6 *sin6;     // IPv6 address + port
20761
struct sockaddr_un *sun;       // Unix Domain Socket Address
20762
*/
20763
20764
/* Turn a socket address into a host, port pair.
20765
 * For unix domain sockets, returned tuple will have only a single element, the path string. */
20766
0
static Janet janet_so_getname(const void *sa_any) {
20767
0
    const struct sockaddr *sa = sa_any;
20768
0
    char buffer[SA_ADDRSTRLEN];
20769
0
    switch (sa->sa_family) {
20770
0
        default:
20771
0
            janet_panic("unknown address family");
20772
0
        case AF_INET: {
20773
0
            const struct sockaddr_in *sai = sa_any;
20774
0
            if (!inet_ntop(AF_INET, &(sai->sin_addr), buffer, sizeof(buffer))) {
20775
0
                janet_panic("unable to decode ipv4 host address");
20776
0
            }
20777
0
            Janet pair[2] = {janet_cstringv(buffer), janet_wrap_integer(ntohs(sai->sin_port))};
20778
0
            return janet_wrap_tuple(janet_tuple_n(pair, 2));
20779
0
        }
20780
0
#ifndef JANET_NO_IPV6
20781
0
        case AF_INET6: {
20782
0
            const struct sockaddr_in6 *sai6 = sa_any;
20783
0
            if (!inet_ntop(AF_INET6, &(sai6->sin6_addr), buffer, sizeof(buffer))) {
20784
0
                janet_panic("unable to decode ipv4 host address");
20785
0
            }
20786
0
            Janet pair[2] = {janet_cstringv(buffer), janet_wrap_integer(ntohs(sai6->sin6_port))};
20787
0
            return janet_wrap_tuple(janet_tuple_n(pair, 2));
20788
0
        }
20789
0
#endif
20790
0
#ifndef JANET_WINDOWS
20791
0
        case AF_UNIX: {
20792
0
            const struct sockaddr_un *sun = sa_any;
20793
0
            Janet pathname;
20794
0
            if (sun->sun_path[0] == '\0') {
20795
0
                memcpy(buffer, sun->sun_path, sizeof(sun->sun_path));
20796
0
                buffer[0] = '@';
20797
0
                pathname = janet_cstringv(buffer);
20798
0
            } else {
20799
0
                pathname = janet_cstringv(sun->sun_path);
20800
0
            }
20801
0
            return janet_wrap_tuple(janet_tuple_n(&pathname, 1));
20802
0
        }
20803
0
#endif
20804
0
    }
20805
0
}
20806
20807
JANET_CORE_FN(cfun_net_getsockname,
20808
              "(net/localname stream)",
20809
0
              "Gets the local address and port in a tuple in that order.") {
20810
0
    janet_fixarity(argc, 1);
20811
0
    JanetStream *js = janet_getabstract(argv, 0, &janet_stream_type);
20812
0
    if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed");
20813
0
    struct sockaddr_storage ss;
20814
0
    socklen_t slen = sizeof(ss);
20815
0
    memset(&ss, 0, slen);
20816
0
    if (getsockname((JSock)js->handle, (struct sockaddr *) &ss, &slen)) {
20817
0
        janet_panicf("Failed to get localname on %v: %V", argv[0], janet_ev_lasterr());
20818
0
    }
20819
0
    janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated");
20820
0
    return janet_so_getname(&ss);
20821
0
}
20822
20823
JANET_CORE_FN(cfun_net_getpeername,
20824
              "(net/peername stream)",
20825
0
              "Gets the remote peer's address and port in a tuple in that order.") {
20826
0
    janet_fixarity(argc, 1);
20827
0
    JanetStream *js = janet_getabstract(argv, 0, &janet_stream_type);
20828
0
    if (js->flags & JANET_STREAM_CLOSED) janet_panic("stream closed");
20829
0
    struct sockaddr_storage ss;
20830
0
    socklen_t slen = sizeof(ss);
20831
0
    memset(&ss, 0, slen);
20832
0
    if (getpeername((JSock)js->handle, (struct sockaddr *)&ss, &slen)) {
20833
0
        janet_panicf("Failed to get peername on %v: %V", argv[0], janet_ev_lasterr());
20834
0
    }
20835
0
    janet_assert(slen <= (socklen_t) sizeof(ss), "socket address truncated");
20836
0
    return janet_so_getname(&ss);
20837
0
}
20838
20839
JANET_CORE_FN(cfun_net_address_unpack,
20840
              "(net/address-unpack address)",
20841
              "Given an address returned by net/address, return a host, port pair. Unix domain sockets "
20842
0
              "will have only the path in the returned tuple.") {
20843
0
    janet_fixarity(argc, 1);
20844
0
    struct sockaddr *sa = janet_getabstract(argv, 0, &janet_address_type);
20845
0
    return janet_so_getname(sa);
20846
0
}
20847
20848
JANET_CORE_FN(cfun_stream_accept_loop,
20849
              "(net/accept-loop stream handler)",
20850
              "Shorthand for running a server stream that will continuously accept new connections. "
20851
0
              "Blocks the current fiber until the stream is closed, and will return the stream.") {
20852
0
    janet_fixarity(argc, 2);
20853
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20854
0
    janet_stream_flags(stream, JANET_STREAM_ACCEPTABLE | JANET_STREAM_SOCKET);
20855
0
    JanetFunction *fun = janet_getfunction(argv, 1);
20856
0
    if (fun->def->min_arity < 1) janet_panic("handler function must take at least 1 argument");
20857
0
    janet_sched_accept(stream, fun);
20858
0
}
20859
20860
JANET_CORE_FN(cfun_stream_accept,
20861
              "(net/accept stream &opt timeout)",
20862
              "Get the next connection on a server stream. This would usually be called in a loop in a dedicated fiber. "
20863
              "Takes an optional timeout in seconds, after which will raise an error. "
20864
0
              "Returns a new duplex stream which represents a connection to the client.") {
20865
0
    janet_arity(argc, 1, 2);
20866
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20867
0
    janet_stream_flags(stream, JANET_STREAM_ACCEPTABLE | JANET_STREAM_SOCKET);
20868
0
    double to = janet_optnumber(argv, argc, 1, INFINITY);
20869
0
    if (to != INFINITY) janet_addtimeout(to);
20870
0
    janet_sched_accept(stream, NULL);
20871
0
}
20872
20873
JANET_CORE_FN(cfun_stream_read,
20874
              "(net/read stream nbytes &opt buf timeout)",
20875
              "Read up to n bytes from a stream, suspending the current fiber until the bytes are available. "
20876
              "`n` can also be the keyword `:all` to read into the buffer until end of stream. "
20877
              "If less than n bytes are available (and more than 0), will push those bytes and return early. "
20878
              "Takes an optional timeout in seconds, after which will raise an error. "
20879
0
              "Returns a buffer with up to n more bytes in it, or raises an error if the read failed.") {
20880
0
    janet_arity(argc, 2, 4);
20881
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20882
0
    janet_stream_flags(stream, JANET_STREAM_READABLE | JANET_STREAM_SOCKET);
20883
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
20884
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20885
0
    if (janet_keyeq(argv[1], "all")) {
20886
0
        if (to != INFINITY) janet_addtimeout(to);
20887
0
        janet_ev_recvchunk(stream, buffer, INT32_MAX, MSG_NOSIGNAL);
20888
0
    } else {
20889
0
        int32_t n = janet_getnat(argv, 1);
20890
0
        if (to != INFINITY) janet_addtimeout(to);
20891
0
        janet_ev_recv(stream, buffer, n, MSG_NOSIGNAL);
20892
0
    }
20893
0
}
20894
20895
JANET_CORE_FN(cfun_stream_chunk,
20896
              "(net/chunk stream nbytes &opt buf timeout)",
20897
              "Same a net/read, but will wait for all n bytes to arrive rather than return early. "
20898
0
              "Takes an optional timeout in seconds, after which will raise an error.") {
20899
0
    janet_arity(argc, 2, 4);
20900
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20901
0
    janet_stream_flags(stream, JANET_STREAM_READABLE | JANET_STREAM_SOCKET);
20902
0
    int32_t n = janet_getnat(argv, 1);
20903
0
    JanetBuffer *buffer = janet_optbuffer(argv, argc, 2, 10);
20904
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20905
0
    if (to != INFINITY) janet_addtimeout(to);
20906
0
    janet_ev_recvchunk(stream, buffer, n, MSG_NOSIGNAL);
20907
0
}
20908
20909
JANET_CORE_FN(cfun_stream_recv_from,
20910
              "(net/recv-from stream nbytes buf &opt timeout)",
20911
              "Receives data from a server stream and puts it into a buffer. Returns the socket-address the "
20912
0
              "packet came from. Takes an optional timeout in seconds, after which will raise an error.") {
20913
0
    janet_arity(argc, 3, 4);
20914
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20915
0
    janet_stream_flags(stream, JANET_STREAM_UDPSERVER | JANET_STREAM_SOCKET);
20916
0
    int32_t n = janet_getnat(argv, 1);
20917
0
    JanetBuffer *buffer = janet_getbuffer(argv, 2);
20918
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20919
0
    if (to != INFINITY) janet_addtimeout(to);
20920
0
    janet_ev_recvfrom(stream, buffer, n, MSG_NOSIGNAL);
20921
0
}
20922
20923
JANET_CORE_FN(cfun_stream_write,
20924
              "(net/write stream data &opt timeout)",
20925
              "Write data to a stream, suspending the current fiber until the write "
20926
              "completes. Takes an optional timeout in seconds, after which will raise an error. "
20927
0
              "Returns nil, or raises an error if the write failed.") {
20928
0
    janet_arity(argc, 2, 3);
20929
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20930
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE | JANET_STREAM_SOCKET);
20931
0
    double to = janet_optnumber(argv, argc, 2, INFINITY);
20932
0
    if (janet_checktype(argv[1], JANET_BUFFER)) {
20933
0
        if (to != INFINITY) janet_addtimeout(to);
20934
0
        janet_ev_send_buffer(stream, janet_getbuffer(argv, 1), MSG_NOSIGNAL);
20935
0
    } else {
20936
0
        JanetByteView bytes = janet_getbytes(argv, 1);
20937
0
        if (to != INFINITY) janet_addtimeout(to);
20938
0
        janet_ev_send_string(stream, bytes.bytes, MSG_NOSIGNAL);
20939
0
    }
20940
0
}
20941
20942
JANET_CORE_FN(cfun_stream_send_to,
20943
              "(net/send-to stream dest data &opt timeout)",
20944
              "Writes a datagram to a server stream. dest is a the destination address of the packet. "
20945
              "Takes an optional timeout in seconds, after which will raise an error. "
20946
0
              "Returns stream.") {
20947
0
    janet_arity(argc, 3, 4);
20948
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20949
0
    janet_stream_flags(stream, JANET_STREAM_UDPSERVER | JANET_STREAM_SOCKET);
20950
0
    void *dest = janet_getabstract(argv, 1, &janet_address_type);
20951
0
    double to = janet_optnumber(argv, argc, 3, INFINITY);
20952
0
    if (janet_checktype(argv[2], JANET_BUFFER)) {
20953
0
        if (to != INFINITY) janet_addtimeout(to);
20954
0
        janet_ev_sendto_buffer(stream, janet_getbuffer(argv, 2), dest, MSG_NOSIGNAL);
20955
0
    } else {
20956
0
        JanetByteView bytes = janet_getbytes(argv, 2);
20957
0
        if (to != INFINITY) janet_addtimeout(to);
20958
0
        janet_ev_sendto_string(stream, bytes.bytes, dest, MSG_NOSIGNAL);
20959
0
    }
20960
0
}
20961
20962
JANET_CORE_FN(cfun_stream_flush,
20963
              "(net/flush stream)",
20964
              "Make sure that a stream is not buffering any data. This temporarily disables Nagle's algorithm. "
20965
0
              "Use this to make sure data is sent without delay. Returns stream.") {
20966
0
    janet_fixarity(argc, 1);
20967
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
20968
0
    janet_stream_flags(stream, JANET_STREAM_WRITABLE | JANET_STREAM_SOCKET);
20969
    /* Toggle no delay flag */
20970
0
    int flag = 1;
20971
0
    setsockopt((JSock) stream->handle, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
20972
0
    flag = 0;
20973
0
    setsockopt((JSock) stream->handle, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int));
20974
0
    return argv[0];
20975
0
}
20976
20977
struct sockopt_type {
20978
    const char *name;
20979
    int level;
20980
    int optname;
20981
    enum JanetType type;
20982
};
20983
20984
/* List of supported socket options; The type JANET_POINTER is used
20985
 * for options that require special handling depending on the type. */
20986
static const struct sockopt_type sockopt_type_list[] = {
20987
    { "so-broadcast", SOL_SOCKET, SO_BROADCAST, JANET_BOOLEAN },
20988
    { "so-reuseaddr", SOL_SOCKET, SO_REUSEADDR, JANET_BOOLEAN },
20989
    { "so-keepalive", SOL_SOCKET, SO_KEEPALIVE, JANET_BOOLEAN },
20990
    { "ip-multicast-ttl", IPPROTO_IP, IP_MULTICAST_TTL, JANET_NUMBER },
20991
    { "ip-add-membership", IPPROTO_IP, IP_ADD_MEMBERSHIP, JANET_POINTER },
20992
    { "ip-drop-membership", IPPROTO_IP, IP_DROP_MEMBERSHIP, JANET_POINTER },
20993
#ifndef JANET_NO_IPV6
20994
    { "ipv6-join-group", IPPROTO_IPV6, IPV6_JOIN_GROUP, JANET_POINTER },
20995
    { "ipv6-leave-group", IPPROTO_IPV6, IPV6_LEAVE_GROUP, JANET_POINTER },
20996
#endif
20997
    { NULL, 0, 0, JANET_POINTER }
20998
};
20999
21000
JANET_CORE_FN(cfun_net_setsockopt,
21001
              "(net/setsockopt stream option value)",
21002
              "set socket options.\n"
21003
              "\n"
21004
              "supported options and associated value types:\n"
21005
              "- :so-broadcast boolean\n"
21006
              "- :so-reuseaddr boolean\n"
21007
              "- :so-keepalive boolean\n"
21008
              "- :ip-multicast-ttl number\n"
21009
              "- :ip-add-membership string\n"
21010
              "- :ip-drop-membership string\n"
21011
              "- :ipv6-join-group string\n"
21012
0
              "- :ipv6-leave-group string\n") {
21013
0
    janet_arity(argc, 3, 3);
21014
0
    JanetStream *stream = janet_getabstract(argv, 0, &janet_stream_type);
21015
0
    janet_stream_flags(stream, JANET_STREAM_SOCKET);
21016
0
    JanetKeyword optstr = janet_getkeyword(argv, 1);
21017
21018
0
    const struct sockopt_type *st = sockopt_type_list;
21019
0
    while (st->name) {
21020
0
        if (janet_cstrcmp(optstr, st->name) == 0) {
21021
0
            break;
21022
0
        }
21023
0
        st++;
21024
0
    }
21025
21026
0
    if (st->name == NULL) {
21027
0
        janet_panicf("unknown socket option %q", argv[1]);
21028
0
    }
21029
21030
0
    union {
21031
0
        int v_int;
21032
0
        struct ip_mreq v_mreq;
21033
0
#ifndef JANET_NO_IPV6
21034
0
        struct ipv6_mreq v_mreq6;
21035
0
#endif
21036
0
    } val;
21037
21038
0
    void *optval = (void *)&val;
21039
0
    socklen_t optlen = 0;
21040
21041
0
    if (st->type == JANET_BOOLEAN) {
21042
0
        val.v_int = janet_getboolean(argv, 2);
21043
0
        optlen = sizeof(val.v_int);
21044
0
    } else if (st->type == JANET_NUMBER) {
21045
0
        val.v_int = janet_getinteger(argv, 2);
21046
0
        optlen = sizeof(val.v_int);
21047
0
    } else if (st->optname == IP_ADD_MEMBERSHIP || st->optname == IP_DROP_MEMBERSHIP) {
21048
0
        const char *addr = janet_getcstring(argv, 2);
21049
0
        memset(&val.v_mreq, 0, sizeof val.v_mreq);
21050
0
        val.v_mreq.imr_interface.s_addr = htonl(INADDR_ANY);
21051
0
        inet_pton(AF_INET, addr, &val.v_mreq.imr_multiaddr.s_addr);
21052
0
        optlen = sizeof(val.v_mreq);
21053
0
#ifndef JANET_NO_IPV6
21054
0
    } else if (st->optname == IPV6_JOIN_GROUP || st->optname == IPV6_LEAVE_GROUP) {
21055
0
        const char *addr = janet_getcstring(argv, 2);
21056
0
        memset(&val.v_mreq6, 0, sizeof val.v_mreq6);
21057
0
        val.v_mreq6.ipv6mr_interface = 0;
21058
0
        inet_pton(AF_INET6, addr, &val.v_mreq6.ipv6mr_multiaddr);
21059
0
        optlen = sizeof(val.v_mreq6);
21060
0
#endif
21061
0
    } else {
21062
0
        janet_panicf("invalid socket option type");
21063
0
    }
21064
21065
0
    janet_assert(optlen != 0, "invalid socket option value");
21066
21067
0
    int r = setsockopt((JSock) stream->handle, st->level, st->optname, optval, optlen);
21068
0
    if (r == -1) {
21069
0
        janet_panicf("setsockopt(%q): %s", argv[1], janet_strerror(errno));
21070
0
    }
21071
21072
0
    return janet_wrap_nil();
21073
0
}
21074
21075
static const JanetMethod net_stream_methods[] = {
21076
    {"chunk", cfun_stream_chunk},
21077
    {"close", janet_cfun_stream_close},
21078
    {"read", cfun_stream_read},
21079
    {"write", cfun_stream_write},
21080
    {"flush", cfun_stream_flush},
21081
    {"accept", cfun_stream_accept},
21082
    {"accept-loop", cfun_stream_accept_loop},
21083
    {"send-to", cfun_stream_send_to},
21084
    {"recv-from", cfun_stream_recv_from},
21085
    {"evread", janet_cfun_stream_read},
21086
    {"evchunk", janet_cfun_stream_chunk},
21087
    {"evwrite", janet_cfun_stream_write},
21088
    {"shutdown", cfun_net_shutdown},
21089
    {"setsockopt", cfun_net_setsockopt},
21090
    {NULL, NULL}
21091
};
21092
21093
0
static JanetStream *make_stream(JSock handle, uint32_t flags) {
21094
0
    return janet_stream((JanetHandle) handle, flags | JANET_STREAM_SOCKET, net_stream_methods);
21095
0
}
21096
21097
0
void janet_lib_net(JanetTable *env) {
21098
0
    JanetRegExt net_cfuns[] = {
21099
0
        JANET_CORE_REG("net/address", cfun_net_sockaddr),
21100
0
        JANET_CORE_REG("net/listen", cfun_net_listen),
21101
0
        JANET_CORE_REG("net/socket", cfun_net_socket),
21102
0
        JANET_CORE_REG("net/accept", cfun_stream_accept),
21103
0
        JANET_CORE_REG("net/accept-loop", cfun_stream_accept_loop),
21104
0
        JANET_CORE_REG("net/read", cfun_stream_read),
21105
0
        JANET_CORE_REG("net/chunk", cfun_stream_chunk),
21106
0
        JANET_CORE_REG("net/write", cfun_stream_write),
21107
0
        JANET_CORE_REG("net/send-to", cfun_stream_send_to),
21108
0
        JANET_CORE_REG("net/recv-from", cfun_stream_recv_from),
21109
0
        JANET_CORE_REG("net/flush", cfun_stream_flush),
21110
0
        JANET_CORE_REG("net/connect", cfun_net_connect),
21111
0
        JANET_CORE_REG("net/shutdown", cfun_net_shutdown),
21112
0
        JANET_CORE_REG("net/peername", cfun_net_getpeername),
21113
0
        JANET_CORE_REG("net/localname", cfun_net_getsockname),
21114
0
        JANET_CORE_REG("net/address-unpack", cfun_net_address_unpack),
21115
0
        JANET_CORE_REG("net/setsockopt", cfun_net_setsockopt),
21116
0
        JANET_REG_END
21117
0
    };
21118
0
    janet_core_cfuns_ext(env, NULL, net_cfuns);
21119
0
}
21120
21121
5.80k
void janet_net_init(void) {
21122
#ifdef JANET_WINDOWS
21123
    WSADATA wsaData;
21124
    janet_assert(!WSAStartup(MAKEWORD(2, 2), &wsaData), "could not start winsock");
21125
#endif
21126
5.80k
}
21127
21128
5.80k
void janet_net_deinit(void) {
21129
#ifdef JANET_WINDOWS
21130
    WSACleanup();
21131
#endif
21132
5.80k
}
21133
21134
#endif
21135
21136
21137
/* src/core/os.c */
21138
#line 0 "src/core/os.c"
21139
21140
/*
21141
* Copyright (c) 2025 Calvin Rose and contributors.
21142
*
21143
* Permission is hereby granted, free of charge, to any person obtaining a copy
21144
* of this software and associated documentation files (the "Software"), to
21145
* deal in the Software without restriction, including without limitation the
21146
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
21147
* sell copies of the Software, and to permit persons to whom the Software is
21148
* furnished to do so, subject to the following conditions:
21149
*
21150
* The above copyright notice and this permission notice shall be included in
21151
* all copies or substantial portions of the Software.
21152
*
21153
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21154
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21155
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21156
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21157
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21158
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21159
* IN THE SOFTWARE.
21160
*/
21161
21162
#ifndef JANET_AMALG
21163
#include "features.h"
21164
#include <janet.h>
21165
#include "util.h"
21166
#include "gc.h"
21167
#endif
21168
21169
#include <stdlib.h>
21170
21171
#ifndef JANET_REDUCED_OS
21172
21173
#include <time.h>
21174
#include <fcntl.h>
21175
#include <errno.h>
21176
#include <limits.h>
21177
#include <stdio.h>
21178
#include <string.h>
21179
#include <sys/stat.h>
21180
#include <signal.h>
21181
#include <locale.h>
21182
21183
#ifdef JANET_BSD
21184
#include <sys/sysctl.h>
21185
#endif
21186
21187
#ifdef JANET_LINUX
21188
#include <sched.h>
21189
#endif
21190
21191
#ifdef JANET_WINDOWS
21192
#include <windows.h>
21193
#include <direct.h>
21194
#include <sys/utime.h>
21195
#include <io.h>
21196
#include <process.h>
21197
#define JANET_SPAWN_CHDIR
21198
#else
21199
#include <spawn.h>
21200
#include <utime.h>
21201
#include <unistd.h>
21202
#include <dirent.h>
21203
#include <sys/types.h>
21204
#include <sys/wait.h>
21205
#ifdef JANET_APPLE
21206
#include <crt_externs.h>
21207
#define environ (*_NSGetEnviron())
21208
#include <AvailabilityMacros.h>
21209
int chroot(const char *dirname);
21210
#else
21211
extern char **environ;
21212
#endif
21213
#ifdef JANET_THREADS
21214
#include <pthread.h>
21215
#endif
21216
#endif
21217
21218
/* Detect availability of posix_spawn_file_actions_addchdir_np. Since
21219
 * this doesn't seem to follow any standard, just a common extension, we
21220
 * must enumerate supported systems for availability. Define JANET_SPAWN_NO_CHDIR
21221
 * to disable this. */
21222
#ifndef JANET_SPAWN_NO_CHDIR
21223
#ifdef __GLIBC__
21224
#define JANET_SPAWN_CHDIR
21225
#elif defined(JANET_APPLE)
21226
/* The posix_spawn_file_actions_addchdir_np function
21227
 * has only been implemented since macOS 10.15 */
21228
#if defined(MAC_OS_X_VERSION_10_15) && (MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_15)
21229
#define JANET_SPAWN_CHDIR
21230
#else
21231
#define JANET_SPAWN_NO_CHDIR
21232
#endif
21233
#elif defined(__FreeBSD__) /* Not all BSDs work, for example openBSD doesn't seem to support this */
21234
#define JANET_SPAWN_CHDIR
21235
#endif
21236
#endif
21237
21238
/* Not POSIX, but all Unixes but Solaris have this function. */
21239
#if defined(JANET_POSIX) && !defined(__sun)
21240
time_t timegm(struct tm *tm);
21241
#elif defined(JANET_WINDOWS)
21242
#define timegm _mkgmtime
21243
#endif
21244
21245
/* Access to some global variables should be synchronized if not in single threaded mode, as
21246
 * setenv/getenv are not thread safe. */
21247
#ifdef JANET_THREADS
21248
# ifdef JANET_WINDOWS
21249
static CRITICAL_SECTION env_lock;
21250
static void janet_lock_environ(void) {
21251
    EnterCriticalSection(&env_lock);
21252
}
21253
static void janet_unlock_environ(void) {
21254
    LeaveCriticalSection(&env_lock);
21255
}
21256
# else
21257
static pthread_mutex_t env_lock = PTHREAD_MUTEX_INITIALIZER;
21258
static void janet_lock_environ(void) {
21259
    pthread_mutex_lock(&env_lock);
21260
}
21261
static void janet_unlock_environ(void) {
21262
    pthread_mutex_unlock(&env_lock);
21263
}
21264
# endif
21265
#else
21266
0
static void janet_lock_environ(void) {
21267
0
}
21268
0
static void janet_unlock_environ(void) {
21269
0
}
21270
#endif
21271
21272
#endif /* JANET_REDCUED_OS */
21273
21274
/* Core OS functions */
21275
21276
/* Full OS functions */
21277
21278
#define janet_stringify1(x) #x
21279
#define janet_stringify(x) janet_stringify1(x)
21280
21281
JANET_CORE_FN(os_which,
21282
              "(os/which)",
21283
              "Check the current operating system. Returns one of:\n\n"
21284
              "* :windows\n\n"
21285
              "* :mingw\n\n"
21286
              "* :cygwin\n\n"
21287
              "* :macos\n\n"
21288
              "* :web - Web assembly (emscripten)\n\n"
21289
              "* :linux\n\n"
21290
              "* :freebsd\n\n"
21291
              "* :openbsd\n\n"
21292
              "* :netbsd\n\n"
21293
              "* :dragonfly\n\n"
21294
              "* :bsd\n\n"
21295
              "* :posix - A POSIX compatible system (default)\n\n"
21296
0
              "May also return a custom keyword specified at build time.") {
21297
0
    janet_fixarity(argc, 0);
21298
0
    (void) argv;
21299
#if defined(JANET_OS_NAME)
21300
    return janet_ckeywordv(janet_stringify(JANET_OS_NAME));
21301
#elif defined(JANET_MINGW)
21302
    return janet_ckeywordv("mingw");
21303
#elif defined(JANET_CYGWIN)
21304
    return janet_ckeywordv("cygwin");
21305
#elif defined(JANET_WINDOWS)
21306
    return janet_ckeywordv("windows");
21307
#elif defined(JANET_APPLE)
21308
    return janet_ckeywordv("macos");
21309
#elif defined(__EMSCRIPTEN__)
21310
    return janet_ckeywordv("web");
21311
#elif defined(JANET_LINUX)
21312
0
    return janet_ckeywordv("linux");
21313
#elif defined(__FreeBSD__)
21314
    return janet_ckeywordv("freebsd");
21315
#elif defined(__NetBSD__)
21316
    return janet_ckeywordv("netbsd");
21317
#elif defined(__OpenBSD__)
21318
    return janet_ckeywordv("openbsd");
21319
#elif defined(__DragonFly__)
21320
    return janet_ckeywordv("dragonfly");
21321
#elif defined(JANET_BSD)
21322
    return janet_ckeywordv("bsd");
21323
#elif defined(JANET_ILLUMOS)
21324
    return janet_ckeywordv("illumos");
21325
#else
21326
    return janet_ckeywordv("posix");
21327
#endif
21328
0
}
21329
21330
/* Detect the ISA we are compiled for */
21331
JANET_CORE_FN(os_arch,
21332
              "(os/arch)",
21333
              "Check the ISA that janet was compiled for. Returns one of:\n\n"
21334
              "* :x86\n\n"
21335
              "* :x64\n\n"
21336
              "* :arm\n\n"
21337
              "* :aarch64\n\n"
21338
              "* :riscv32\n\n"
21339
              "* :riscv64\n\n"
21340
              "* :sparc\n\n"
21341
              "* :wasm\n\n"
21342
              "* :s390\n\n"
21343
              "* :s390x\n\n"
21344
0
              "* :unknown\n") {
21345
0
    janet_fixarity(argc, 0);
21346
0
    (void) argv;
21347
    /* Check 64-bit vs 32-bit */
21348
#if defined(JANET_ARCH_NAME)
21349
    return janet_ckeywordv(janet_stringify(JANET_ARCH_NAME));
21350
#elif defined(__EMSCRIPTEN__)
21351
    return janet_ckeywordv("wasm");
21352
#elif (defined(__x86_64__) || defined(_M_X64))
21353
0
    return janet_ckeywordv("x64");
21354
#elif defined(__i386) || defined(_M_IX86)
21355
    return janet_ckeywordv("x86");
21356
#elif defined(_M_ARM64) || defined(__aarch64__)
21357
    return janet_ckeywordv("aarch64");
21358
#elif defined(_M_ARM) || defined(__arm__)
21359
    return janet_ckeywordv("arm");
21360
#elif (defined(__riscv) && (__riscv_xlen == 64))
21361
    return janet_ckeywordv("riscv64");
21362
#elif (defined(__riscv) && (__riscv_xlen == 32))
21363
    return janet_ckeywordv("riscv32");
21364
#elif (defined(__sparc__))
21365
    return janet_ckeywordv("sparc");
21366
#elif (defined(__ppc__))
21367
    return janet_ckeywordv("ppc");
21368
#elif (defined(__ppc64__) || defined(_ARCH_PPC64) || defined(_M_PPC))
21369
    return janet_ckeywordv("ppc64");
21370
#elif (defined(__s390x__))
21371
    return janet_ckeywordv("s390x");
21372
#elif (defined(__s390__))
21373
    return janet_ckeywordv("s390");
21374
#else
21375
    return janet_ckeywordv("unknown");
21376
#endif
21377
0
}
21378
21379
/* Detect the compiler used to build the interpreter */
21380
JANET_CORE_FN(os_compiler,
21381
              "(os/compiler)",
21382
              "Get the compiler used to compile the interpreter. Returns one of:\n\n"
21383
              "* :gcc\n\n"
21384
              "* :clang\n\n"
21385
              "* :msvc\n\n"
21386
0
              "* :unknown\n\n") {
21387
0
    janet_fixarity(argc, 0);
21388
0
    (void) argv;
21389
#if defined(_MSC_VER)
21390
    return janet_ckeywordv("msvc");
21391
#elif defined(__clang__)
21392
0
    return janet_ckeywordv("clang");
21393
#elif defined(__GNUC__)
21394
    return janet_ckeywordv("gcc");
21395
#else
21396
    return janet_ckeywordv("unknown");
21397
#endif
21398
0
}
21399
21400
#undef janet_stringify1
21401
#undef janet_stringify
21402
21403
JANET_CORE_FN(os_exit,
21404
              "(os/exit &opt x force)",
21405
              "Exit from janet with an exit code equal to x. If x is not an integer, "
21406
              "the exit with status equal the hash of x. If `force` is truthy will exit immediately and "
21407
0
              "skip cleanup code.") {
21408
0
    janet_arity(argc, 0, 2);
21409
0
    int status;
21410
0
    if (argc == 0) {
21411
0
        status = EXIT_SUCCESS;
21412
0
    } else if (janet_checkint(argv[0])) {
21413
0
        status = janet_unwrap_integer(argv[0]);
21414
0
    } else {
21415
0
        status = EXIT_FAILURE;
21416
0
    }
21417
0
    janet_deinit();
21418
0
    if (argc >= 2 && janet_truthy(argv[1])) {
21419
0
        _Exit(status);
21420
0
    } else {
21421
0
        exit(status);
21422
0
    }
21423
0
    return janet_wrap_nil();
21424
0
}
21425
21426
#ifndef JANET_REDUCED_OS
21427
21428
JANET_CORE_FN(os_cpu_count,
21429
              "(os/cpu-count &opt dflt)",
21430
              "Get an approximate number of CPUs available on for this process to use. If "
21431
0
              "unable to get an approximation, will return a default value dflt.") {
21432
0
    janet_arity(argc, 0, 1);
21433
0
    Janet dflt = argc > 0 ? argv[0] : janet_wrap_nil();
21434
#ifdef JANET_WINDOWS
21435
    (void) dflt;
21436
    SYSTEM_INFO info;
21437
    GetSystemInfo(&info);
21438
    return janet_wrap_integer(info.dwNumberOfProcessors);
21439
#elif defined(JANET_LINUX)
21440
    (void) dflt;
21441
0
    cpu_set_t cs;
21442
0
    CPU_ZERO(&cs);
21443
0
    sched_getaffinity(0, sizeof(cs), &cs);
21444
0
    int count = CPU_COUNT(&cs);
21445
0
    return janet_wrap_integer(count);
21446
#elif defined(JANET_BSD) && defined(HW_NCPUONLINE)
21447
    (void) dflt;
21448
    const int name[2] = {CTL_HW, HW_NCPUONLINE};
21449
    int result = 0;
21450
    size_t len = sizeof(int);
21451
    if (-1 == sysctl(name, 2, &result, &len, NULL, 0)) {
21452
        return dflt;
21453
    }
21454
    return janet_wrap_integer(result);
21455
#elif defined(JANET_BSD) && defined(HW_NCPU)
21456
    (void) dflt;
21457
    const int name[2] = {CTL_HW, HW_NCPU};
21458
    int result = 0;
21459
    size_t len = sizeof(int);
21460
    if (-1 == sysctl(name, 2, &result, &len, NULL, 0)) {
21461
        return dflt;
21462
    }
21463
    return janet_wrap_integer(result);
21464
#elif defined(JANET_ILLUMOS)
21465
    (void) dflt;
21466
    long result = sysconf(_SC_NPROCESSORS_CONF);
21467
    if (result < 0) {
21468
        return dflt;
21469
    }
21470
    return janet_wrap_integer(result);
21471
#else
21472
    return dflt;
21473
#endif
21474
0
}
21475
21476
#ifndef JANET_NO_PROCESSES
21477
21478
/* Get env for os_execute */
21479
#ifdef JANET_WINDOWS
21480
typedef char *EnvBlock;
21481
#else
21482
typedef char **EnvBlock;
21483
#endif
21484
21485
/* Get env for os_execute */
21486
0
static EnvBlock os_execute_env(int32_t argc, const Janet *argv) {
21487
0
    if (argc <= 2) return NULL;
21488
0
    JanetDictView dict = janet_getdictionary(argv, 2);
21489
#ifdef JANET_WINDOWS
21490
    JanetBuffer *temp = janet_buffer(10);
21491
    for (int32_t i = 0; i < dict.cap; i++) {
21492
        const JanetKV *kv = dict.kvs + i;
21493
        if (!janet_checktype(kv->key, JANET_STRING)) continue;
21494
        if (!janet_checktype(kv->value, JANET_STRING)) continue;
21495
        const uint8_t *keys = janet_unwrap_string(kv->key);
21496
        const uint8_t *vals = janet_unwrap_string(kv->value);
21497
        janet_buffer_push_bytes(temp, keys, janet_string_length(keys));
21498
        janet_buffer_push_u8(temp, '=');
21499
        janet_buffer_push_bytes(temp, vals, janet_string_length(vals));
21500
        janet_buffer_push_u8(temp, '\0');
21501
    }
21502
    janet_buffer_push_u8(temp, '\0');
21503
    char *ret = janet_smalloc(temp->count);
21504
    memcpy(ret, temp->data, temp->count);
21505
    return ret;
21506
#else
21507
0
    char **envp = janet_smalloc(sizeof(char *) * ((size_t)dict.len + 1));
21508
0
    int32_t j = 0;
21509
0
    for (int32_t i = 0; i < dict.cap; i++) {
21510
0
        const JanetKV *kv = dict.kvs + i;
21511
0
        if (!janet_checktype(kv->key, JANET_STRING)) continue;
21512
0
        if (!janet_checktype(kv->value, JANET_STRING)) continue;
21513
0
        const uint8_t *keys = janet_unwrap_string(kv->key);
21514
0
        const uint8_t *vals = janet_unwrap_string(kv->value);
21515
0
        int32_t klen = janet_string_length(keys);
21516
0
        int32_t vlen = janet_string_length(vals);
21517
        /* Check keys has no embedded 0s or =s. */
21518
0
        int skip = 0;
21519
0
        for (int32_t k = 0; k < klen; k++) {
21520
0
            if (keys[k] == '\0' || keys[k] == '=') {
21521
0
                skip = 1;
21522
0
                break;
21523
0
            }
21524
0
        }
21525
0
        if (skip) continue;
21526
0
        char *envitem = janet_smalloc((size_t) klen + (size_t) vlen + 2);
21527
0
        memcpy(envitem, keys, klen);
21528
0
        envitem[klen] = '=';
21529
0
        memcpy(envitem + klen + 1, vals, vlen);
21530
0
        envitem[klen + vlen + 1] = 0;
21531
0
        envp[j++] = envitem;
21532
0
    }
21533
0
    envp[j] = NULL;
21534
0
    return envp;
21535
0
#endif
21536
0
}
21537
21538
0
static void os_execute_cleanup(EnvBlock envp, const char **child_argv) {
21539
#ifdef JANET_WINDOWS
21540
    (void) child_argv;
21541
    if (NULL != envp) janet_sfree(envp);
21542
#else
21543
0
    janet_sfree((void *)child_argv);
21544
0
    if (NULL != envp) {
21545
0
        char **envitem = envp;
21546
0
        while (*envitem != NULL) {
21547
0
            janet_sfree(*envitem);
21548
0
            envitem++;
21549
0
        }
21550
0
    }
21551
0
    janet_sfree(envp);
21552
0
#endif
21553
0
}
21554
21555
#ifdef JANET_WINDOWS
21556
/* Windows processes created via CreateProcess get only one command line argument string, and
21557
 * must parse this themselves. Each processes is free to do this however they like, but the
21558
 * standard parsing method is CommandLineToArgvW. We need to properly escape arguments into
21559
 * a single string of this format. Returns a buffer that can be cast into a c string. */
21560
static JanetBuffer *os_exec_escape(JanetView args) {
21561
    JanetBuffer *b = janet_buffer(0);
21562
    for (int32_t i = 0; i < args.len; i++) {
21563
        const char *arg = janet_getcstring(args.items, i);
21564
21565
        /* Push leading space if not first */
21566
        if (i) janet_buffer_push_u8(b, ' ');
21567
21568
        /* Find first special character */
21569
        const char *first_spec = arg;
21570
        while (*first_spec) {
21571
            switch (*first_spec) {
21572
                case ' ':
21573
                case '\t':
21574
                case '\v':
21575
                case '\n':
21576
                case '"':
21577
                    goto found;
21578
                case '\0':
21579
                    janet_panic("embedded 0 not allowed in command line string");
21580
                default:
21581
                    first_spec++;
21582
                    break;
21583
            }
21584
        }
21585
    found:
21586
21587
        /* Check if needs escape */
21588
        if (*first_spec == '\0') {
21589
            /* No escape needed */
21590
            janet_buffer_push_cstring(b, arg);
21591
        } else {
21592
            /* Escape */
21593
            janet_buffer_push_u8(b, '"');
21594
            for (const char *c = arg; ; c++) {
21595
                unsigned numBackSlashes = 0;
21596
                while (*c == '\\') {
21597
                    c++;
21598
                    numBackSlashes++;
21599
                }
21600
                if (*c == '"') {
21601
                    /* Escape all backslashes and double quote mark */
21602
                    int32_t n = 2 * numBackSlashes + 1;
21603
                    janet_buffer_extra(b, n + 1);
21604
                    memset(b->data + b->count, '\\', n);
21605
                    b->count += n;
21606
                    janet_buffer_push_u8(b, '"');
21607
                } else if (*c) {
21608
                    /* Don't escape backslashes. */
21609
                    int32_t n = numBackSlashes;
21610
                    janet_buffer_extra(b, n + 1);
21611
                    memset(b->data + b->count, '\\', n);
21612
                    b->count += n;
21613
                    janet_buffer_push_u8(b, *c);
21614
                } else {
21615
                    /* we finished Escape all backslashes */
21616
                    int32_t n = 2 * numBackSlashes;
21617
                    janet_buffer_extra(b, n + 1);
21618
                    memset(b->data + b->count, '\\', n);
21619
                    b->count += n;
21620
                    break;
21621
                }
21622
            }
21623
            janet_buffer_push_u8(b, '"');
21624
        }
21625
    }
21626
    janet_buffer_push_u8(b, 0);
21627
    return b;
21628
}
21629
#endif
21630
21631
/* Process type for when running a subprocess and not immediately waiting */
21632
static const JanetAbstractType ProcAT;
21633
#define JANET_PROC_CLOSED 1
21634
0
#define JANET_PROC_WAITED 2
21635
0
#define JANET_PROC_WAITING 4
21636
0
#define JANET_PROC_ERROR_NONZERO 8
21637
0
#define JANET_PROC_OWNS_STDIN 16
21638
0
#define JANET_PROC_OWNS_STDOUT 32
21639
0
#define JANET_PROC_OWNS_STDERR 64
21640
0
#define JANET_PROC_ALLOW_ZOMBIE 128
21641
typedef struct {
21642
    int flags;
21643
#ifdef JANET_WINDOWS
21644
    HANDLE pHandle;
21645
    HANDLE tHandle;
21646
#else
21647
    pid_t pid;
21648
#endif
21649
    int return_code;
21650
#ifdef JANET_EV
21651
    JanetStream *in;
21652
    JanetStream *out;
21653
    JanetStream *err;
21654
#else
21655
    JanetFile *in;
21656
    JanetFile *out;
21657
    JanetFile *err;
21658
#endif
21659
} JanetProc;
21660
21661
#ifdef JANET_EV
21662
21663
#ifdef JANET_WINDOWS
21664
21665
static JanetEVGenericMessage janet_proc_wait_subr(JanetEVGenericMessage args) {
21666
    JanetProc *proc = (JanetProc *) args.argp;
21667
    WaitForSingleObject(proc->pHandle, INFINITE);
21668
    DWORD exitcode = 0;
21669
    GetExitCodeProcess(proc->pHandle, &exitcode);
21670
    args.tag = (int32_t) exitcode;
21671
    return args;
21672
}
21673
21674
#else /* windows check */
21675
21676
0
static int proc_get_status(JanetProc *proc) {
21677
    /* Use POSIX shell semantics for interpreting signals */
21678
0
    int status = 0;
21679
0
    pid_t result;
21680
0
    do {
21681
0
        result = waitpid(proc->pid, &status, 0);
21682
0
    } while (result == -1 && errno == EINTR);
21683
0
    if (WIFEXITED(status)) {
21684
0
        status = WEXITSTATUS(status);
21685
0
    } else if (WIFSTOPPED(status)) {
21686
0
        status = WSTOPSIG(status) + 128;
21687
0
    } else if (WIFSIGNALED(status)) {
21688
0
        status = WTERMSIG(status) + 128;
21689
0
    } else {
21690
        /* Could possibly return -1 but for now, just panic */
21691
0
        janet_panicf("Undefined status code for process termination, %d.", status);
21692
0
    }
21693
0
    return status;
21694
0
}
21695
21696
/* Function that is called in separate thread to wait on a pid */
21697
0
static JanetEVGenericMessage janet_proc_wait_subr(JanetEVGenericMessage args) {
21698
0
    JanetProc *proc = (JanetProc *) args.argp;
21699
0
    args.tag = proc_get_status(proc);
21700
0
    return args;
21701
0
}
21702
21703
#endif /* End windows check */
21704
21705
/* Callback that is called in main thread when subroutine completes. */
21706
0
static void janet_proc_wait_cb(JanetEVGenericMessage args) {
21707
0
    JanetProc *proc = (JanetProc *) args.argp;
21708
0
    if (NULL != proc) {
21709
0
        int status = args.tag;
21710
0
        proc->return_code = (int32_t) status;
21711
0
        proc->flags |= JANET_PROC_WAITED;
21712
0
        proc->flags &= ~JANET_PROC_WAITING;
21713
0
        janet_gcunroot(janet_wrap_abstract(proc));
21714
0
        janet_gcunroot(janet_wrap_fiber(args.fiber));
21715
0
        uint32_t sched_id = (uint32_t) args.argi;
21716
0
        if (janet_fiber_can_resume(args.fiber) && args.fiber->sched_id == sched_id) {
21717
0
            if ((status != 0) && (proc->flags & JANET_PROC_ERROR_NONZERO)) {
21718
0
                JanetString s = janet_formatc("command failed with non-zero exit code %d", status);
21719
0
                janet_cancel(args.fiber, janet_wrap_string(s));
21720
0
            } else {
21721
0
                janet_schedule(args.fiber, janet_wrap_integer(status));
21722
0
            }
21723
0
        }
21724
0
    }
21725
0
}
21726
21727
#endif /* End ev check */
21728
21729
0
static int janet_proc_gc(void *p, size_t s) {
21730
0
    (void) s;
21731
0
    JanetProc *proc = (JanetProc *) p;
21732
#ifdef JANET_WINDOWS
21733
    if (!(proc->flags & JANET_PROC_CLOSED)) {
21734
        if (!(proc->flags & JANET_PROC_ALLOW_ZOMBIE)) {
21735
            TerminateProcess(proc->pHandle, 1);
21736
        }
21737
        CloseHandle(proc->pHandle);
21738
        CloseHandle(proc->tHandle);
21739
    }
21740
#else
21741
0
    if (!(proc->flags & (JANET_PROC_WAITED | JANET_PROC_ALLOW_ZOMBIE))) {
21742
        /* Kill and wait to prevent zombies */
21743
0
        kill(proc->pid, SIGKILL);
21744
0
        int status;
21745
0
        if (!(proc->flags & JANET_PROC_WAITING)) {
21746
0
            waitpid(proc->pid, &status, 0);
21747
0
        }
21748
0
    }
21749
0
#endif
21750
0
    return 0;
21751
0
}
21752
21753
0
static int janet_proc_mark(void *p, size_t s) {
21754
0
    (void) s;
21755
0
    JanetProc *proc = (JanetProc *)p;
21756
0
    if (NULL != proc->in) janet_mark(janet_wrap_abstract(proc->in));
21757
0
    if (NULL != proc->out) janet_mark(janet_wrap_abstract(proc->out));
21758
0
    if (NULL != proc->err) janet_mark(janet_wrap_abstract(proc->err));
21759
0
    return 0;
21760
0
}
21761
21762
#ifdef JANET_EV
21763
static JANET_NO_RETURN void
21764
#else
21765
static Janet
21766
#endif
21767
0
os_proc_wait_impl(JanetProc *proc) {
21768
0
    if (proc->flags & (JANET_PROC_WAITED | JANET_PROC_WAITING)) {
21769
0
        janet_panicf("cannot wait twice on a process");
21770
0
    }
21771
0
#ifdef JANET_EV
21772
    /* Event loop implementation - threaded call */
21773
0
    proc->flags |= JANET_PROC_WAITING;
21774
0
    JanetEVGenericMessage targs;
21775
0
    memset(&targs, 0, sizeof(targs));
21776
0
    targs.argp = proc;
21777
0
    targs.fiber = janet_root_fiber();
21778
0
    targs.argi = (uint32_t) targs.fiber->sched_id;
21779
0
    janet_gcroot(janet_wrap_abstract(proc));
21780
0
    janet_gcroot(janet_wrap_fiber(targs.fiber));
21781
0
    janet_ev_threaded_call(janet_proc_wait_subr, targs, janet_proc_wait_cb);
21782
0
    janet_await();
21783
#else
21784
    /* Non evented implementation */
21785
    proc->flags |= JANET_PROC_WAITED;
21786
    int status = 0;
21787
#ifdef JANET_WINDOWS
21788
    WaitForSingleObject(proc->pHandle, INFINITE);
21789
    GetExitCodeProcess(proc->pHandle, &status);
21790
    if (!(proc->flags & JANET_PROC_CLOSED)) {
21791
        proc->flags |= JANET_PROC_CLOSED;
21792
        CloseHandle(proc->pHandle);
21793
        CloseHandle(proc->tHandle);
21794
    }
21795
#else
21796
    waitpid(proc->pid, &status, 0);
21797
#endif
21798
    proc->return_code = (int32_t) status;
21799
    return janet_wrap_integer(proc->return_code);
21800
#endif
21801
0
}
21802
21803
JANET_CORE_FN(os_proc_wait,
21804
              "(os/proc-wait proc)",
21805
              "Suspend the current fiber until the subprocess `proc` completes. Once `proc` "
21806
              "completes, return the exit code of `proc`. If called more than once on the same "
21807
              "core/process value, will raise an error. When creating subprocesses using "
21808
              "`os/spawn`, this function should be called on the returned value to avoid zombie "
21809
0
              "processes.") {
21810
0
    janet_fixarity(argc, 1);
21811
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
21812
0
#ifdef JANET_EV
21813
0
    os_proc_wait_impl(proc);
21814
#else
21815
    return os_proc_wait_impl(proc);
21816
#endif
21817
0
}
21818
21819
struct keyword_signal {
21820
    const char *keyword;
21821
    int signal;
21822
};
21823
21824
#ifndef JANET_WINDOWS
21825
static const struct keyword_signal signal_keywords[] = {
21826
#ifdef SIGKILL
21827
    {"kill", SIGKILL},
21828
#endif
21829
    {"int", SIGINT},
21830
    {"abrt", SIGABRT},
21831
    {"fpe", SIGFPE},
21832
    {"ill", SIGILL},
21833
    {"segv", SIGSEGV},
21834
#ifdef SIGTERM
21835
    {"term", SIGTERM},
21836
#endif
21837
#ifdef SIGALRM
21838
    {"alrm", SIGALRM},
21839
#endif
21840
#ifdef SIGHUP
21841
    {"hup", SIGHUP},
21842
#endif
21843
#ifdef SIGPIPE
21844
    {"pipe", SIGPIPE},
21845
#endif
21846
#ifdef SIGQUIT
21847
    {"quit", SIGQUIT},
21848
#endif
21849
#ifdef SIGUSR1
21850
    {"usr1", SIGUSR1},
21851
#endif
21852
#ifdef SIGUSR2
21853
    {"usr2", SIGUSR2},
21854
#endif
21855
#ifdef SIGCHLD
21856
    {"chld", SIGCHLD},
21857
#endif
21858
#ifdef SIGCONT
21859
    {"cont", SIGCONT},
21860
#endif
21861
#ifdef SIGSTOP
21862
    {"stop", SIGSTOP},
21863
#endif
21864
#ifdef SIGTSTP
21865
    {"tstp", SIGTSTP},
21866
#endif
21867
#ifdef SIGTTIN
21868
    {"ttin", SIGTTIN},
21869
#endif
21870
#ifdef SIGTTOU
21871
    {"ttou", SIGTTOU},
21872
#endif
21873
#ifdef SIGBUS
21874
    {"bus", SIGBUS},
21875
#endif
21876
#ifdef SIGPOLL
21877
    {"poll", SIGPOLL},
21878
#endif
21879
#ifdef SIGPROF
21880
    {"prof", SIGPROF},
21881
#endif
21882
#ifdef SIGSYS
21883
    {"sys", SIGSYS},
21884
#endif
21885
#ifdef SIGTRAP
21886
    {"trap", SIGTRAP},
21887
#endif
21888
#ifdef SIGURG
21889
    {"urg", SIGURG},
21890
#endif
21891
#ifdef SIGVTALRM
21892
    {"vtlarm", SIGVTALRM},
21893
#endif
21894
#ifdef SIGXCPU
21895
    {"xcpu", SIGXCPU},
21896
#endif
21897
#ifdef SIGXFSZ
21898
    {"xfsz", SIGXFSZ},
21899
#endif
21900
    {NULL, 0},
21901
};
21902
21903
0
static int get_signal_kw(const Janet *argv, int32_t n) {
21904
0
    JanetKeyword signal_kw = janet_getkeyword(argv, n);
21905
0
    const struct keyword_signal *ptr = signal_keywords;
21906
0
    while (ptr->keyword) {
21907
0
        if (!janet_cstrcmp(signal_kw, ptr->keyword)) {
21908
0
            return ptr->signal;
21909
0
        }
21910
0
        ptr++;
21911
0
    }
21912
0
    janet_panicf("undefined signal %v", argv[n]);
21913
0
}
21914
#endif
21915
21916
JANET_CORE_FN(os_proc_kill,
21917
              "(os/proc-kill proc &opt wait signal)",
21918
              "Kill the subprocess `proc` by sending SIGKILL to it on POSIX systems, or by closing "
21919
              "the process handle on Windows. If `proc` has already completed, raise an error. If "
21920
              "`wait` is truthy, will wait for `proc` to complete and return the exit code (this "
21921
              "will raise an error if `proc` is being waited for). Otherwise, return `proc`. If "
21922
              "`signal` is provided, send it instead of SIGKILL. Signal keywords are named after "
21923
              "their C counterparts but in lowercase with the leading SIG stripped. `signal` is "
21924
0
              "ignored on Windows.") {
21925
0
    janet_arity(argc, 1, 3);
21926
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
21927
0
    if (proc->flags & JANET_PROC_WAITED) {
21928
0
        janet_panicf("cannot kill process that has already finished");
21929
0
    }
21930
#ifdef JANET_WINDOWS
21931
    if (proc->flags & JANET_PROC_CLOSED) {
21932
        janet_panicf("cannot close process handle that is already closed");
21933
    }
21934
    proc->flags |= JANET_PROC_CLOSED;
21935
    TerminateProcess(proc->pHandle, 1);
21936
    CloseHandle(proc->pHandle);
21937
    CloseHandle(proc->tHandle);
21938
#else
21939
0
    int signal = -1;
21940
0
    if (argc == 3) {
21941
0
        signal = get_signal_kw(argv, 2);
21942
0
    }
21943
0
    int status = kill(proc->pid, signal == -1 ? SIGKILL : signal);
21944
0
    if (status) {
21945
0
        janet_panic(janet_strerror(errno));
21946
0
    }
21947
0
#endif
21948
    /* After killing process we wait on it. */
21949
0
    if (argc > 1 && janet_truthy(argv[1])) {
21950
0
#ifdef JANET_EV
21951
0
        os_proc_wait_impl(proc);
21952
#else
21953
        return os_proc_wait_impl(proc);
21954
#endif
21955
0
    } else {
21956
0
        return argv[0];
21957
0
    }
21958
0
}
21959
21960
JANET_CORE_FN(os_proc_close,
21961
              "(os/proc-close proc)",
21962
              "Close pipes created for subprocess `proc` by `os/spawn` if they have not been "
21963
              "closed. Then, if `proc` is not being waited for, wait. If this function waits, when "
21964
0
              "`proc` completes, return the exit code of `proc`. Otherwise, return nil.") {
21965
0
    janet_fixarity(argc, 1);
21966
0
    JanetProc *proc = janet_getabstract(argv, 0, &ProcAT);
21967
0
#ifdef JANET_EV
21968
0
    if (proc->flags & JANET_PROC_OWNS_STDIN) janet_stream_close(proc->in);
21969
0
    if (proc->flags & JANET_PROC_OWNS_STDOUT) janet_stream_close(proc->out);
21970
0
    if (proc->flags & JANET_PROC_OWNS_STDERR) janet_stream_close(proc->err);
21971
#else
21972
    if (proc->flags & JANET_PROC_OWNS_STDIN) janet_file_close(proc->in);
21973
    if (proc->flags & JANET_PROC_OWNS_STDOUT) janet_file_close(proc->out);
21974
    if (proc->flags & JANET_PROC_OWNS_STDERR) janet_file_close(proc->err);
21975
#endif
21976
0
    proc->flags &= ~(JANET_PROC_OWNS_STDIN | JANET_PROC_OWNS_STDOUT | JANET_PROC_OWNS_STDERR);
21977
0
    if (proc->flags & (JANET_PROC_WAITED | JANET_PROC_WAITING)) {
21978
0
        return janet_wrap_nil();
21979
0
    }
21980
0
#ifdef JANET_EV
21981
0
    os_proc_wait_impl(proc);
21982
#else
21983
    return os_proc_wait_impl(proc);
21984
#endif
21985
0
}
21986
21987
JANET_CORE_FN(os_proc_getpid,
21988
              "(os/getpid)",
21989
0
              "Get the process ID of the current process.") {
21990
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
21991
0
    janet_fixarity(argc, 0);
21992
0
    (void) argv;
21993
#ifdef JANET_WINDOWS
21994
    return janet_wrap_number((double) _getpid());
21995
#else
21996
0
    return janet_wrap_number((double) getpid());
21997
0
#endif
21998
0
}
21999
22000
0
static void swap_handles(JanetHandle *handles) {
22001
0
    JanetHandle temp = handles[0];
22002
0
    handles[0] = handles[1];
22003
0
    handles[1] = temp;
22004
0
}
22005
22006
0
static void close_handle(JanetHandle handle) {
22007
#ifdef JANET_WINDOWS
22008
    CloseHandle(handle);
22009
#else
22010
0
    close(handle);
22011
0
#endif
22012
0
}
22013
22014
#ifdef JANET_EV
22015
22016
#ifndef JANET_WINDOWS
22017
0
static void janet_signal_callback(JanetEVGenericMessage msg) {
22018
0
    int sig = msg.tag;
22019
0
    if (msg.argi) janet_interpreter_interrupt_handled(NULL);
22020
0
    Janet handlerv = janet_table_get(&janet_vm.signal_handlers, janet_wrap_integer(sig));
22021
0
    if (!janet_checktype(handlerv, JANET_FUNCTION)) {
22022
        /* Let another thread/process try to handle this */
22023
0
        sigset_t set;
22024
0
        sigemptyset(&set);
22025
0
        sigaddset(&set, sig);
22026
#ifdef JANET_THREADS
22027
        pthread_sigmask(SIG_BLOCK, &set, NULL);
22028
#else
22029
0
        sigprocmask(SIG_BLOCK, &set, NULL);
22030
0
#endif
22031
0
        raise(sig);
22032
0
        return;
22033
0
    }
22034
0
    JanetFunction *handler = janet_unwrap_function(handlerv);
22035
0
    JanetFiber *fiber = janet_fiber(handler, 64, 0, NULL);
22036
0
    janet_schedule_soon(fiber, janet_wrap_nil(), JANET_SIGNAL_OK);
22037
0
}
22038
22039
0
static void janet_signal_trampoline_no_interrupt(int sig) {
22040
    /* Do not interact with global janet state here except for janet_ev_post_event, unsafe! */
22041
0
    JanetEVGenericMessage msg;
22042
0
    memset(&msg, 0, sizeof(msg));
22043
0
    msg.tag = sig;
22044
0
    janet_ev_post_event(&janet_vm, janet_signal_callback, msg);
22045
0
}
22046
22047
0
static void janet_signal_trampoline(int sig) {
22048
    /* Do not interact with global janet state here except for janet_ev_post_event, unsafe! */
22049
0
    JanetEVGenericMessage msg;
22050
0
    memset(&msg, 0, sizeof(msg));
22051
0
    msg.tag = sig;
22052
0
    msg.argi = 1;
22053
0
    janet_interpreter_interrupt(NULL);
22054
0
    janet_ev_post_event(&janet_vm, janet_signal_callback, msg);
22055
0
}
22056
#endif
22057
22058
JANET_CORE_FN(os_sigaction,
22059
              "(os/sigaction which &opt handler interrupt-interpreter)",
22060
              "Add a signal handler for a given action. Use nil for the `handler` argument to remove a signal handler. "
22061
0
              "All signal handlers are the same as supported by `os/proc-kill`.") {
22062
0
    janet_sandbox_assert(JANET_SANDBOX_SIGNAL);
22063
0
    janet_arity(argc, 1, 3);
22064
#ifdef JANET_WINDOWS
22065
    (void) argv;
22066
    janet_panic("unsupported on this platform");
22067
#else
22068
    /* TODO - per thread signal masks */
22069
0
    int rc;
22070
0
    int sig = get_signal_kw(argv, 0);
22071
0
    JanetFunction *handler = janet_optfunction(argv, argc, 1, NULL);
22072
0
    int can_interrupt = janet_optboolean(argv, argc, 2, 0);
22073
0
    Janet oldhandler = janet_table_get(&janet_vm.signal_handlers, janet_wrap_integer(sig));
22074
0
    if (!janet_checktype(oldhandler, JANET_NIL)) {
22075
0
        janet_gcunroot(oldhandler);
22076
0
    }
22077
0
    if (NULL != handler) {
22078
0
        Janet handlerv = janet_wrap_function(handler);
22079
0
        janet_gcroot(handlerv);
22080
0
        janet_table_put(&janet_vm.signal_handlers, janet_wrap_integer(sig), handlerv);
22081
0
    } else {
22082
0
        janet_table_put(&janet_vm.signal_handlers, janet_wrap_integer(sig), janet_wrap_nil());
22083
0
    }
22084
0
    struct sigaction action;
22085
0
    sigset_t mask;
22086
0
    sigaddset(&mask, sig);
22087
0
    memset(&action, 0, sizeof(action));
22088
0
    action.sa_flags |= SA_RESTART;
22089
0
    if (can_interrupt) {
22090
#ifdef JANET_NO_INTERPRETER_INTERRUPT
22091
        janet_panic("interpreter interrupt not enabled");
22092
#else
22093
0
        action.sa_handler = janet_signal_trampoline;
22094
0
#endif
22095
0
    } else {
22096
0
        action.sa_handler = janet_signal_trampoline_no_interrupt;
22097
0
    }
22098
0
    action.sa_mask = mask;
22099
0
    RETRY_EINTR(rc, sigaction(sig, &action, NULL));
22100
0
    sigset_t set;
22101
0
    sigemptyset(&set);
22102
0
    sigaddset(&set, sig);
22103
#ifdef JANET_THREADS
22104
    pthread_sigmask(SIG_UNBLOCK, &set, NULL);
22105
#else
22106
0
    sigprocmask(SIG_UNBLOCK, &set, NULL);
22107
0
#endif
22108
0
    return janet_wrap_nil();
22109
0
#endif
22110
0
}
22111
22112
#endif
22113
22114
/* Create piped file for os/execute and os/spawn. Need to be careful that we mark
22115
   the error flag if we can't create pipe and don't leak handles. *handle will be cleaned
22116
   up by the calling function. If everything goes well, *handle is owned by the calling function,
22117
   (if it is set) and the returned handle owns the other end of the pipe, which will be closed
22118
   on GC or fclose. */
22119
0
static JanetHandle make_pipes(JanetHandle *handle, int reverse, int *errflag) {
22120
0
    JanetHandle handles[2];
22121
0
#ifdef JANET_EV
22122
22123
    /* non-blocking pipes */
22124
0
    if (janet_make_pipe(handles, reverse ? 2 : 1)) goto error;
22125
0
    if (reverse) swap_handles(handles);
22126
#ifdef JANET_WINDOWS
22127
    if (!SetHandleInformation(handles[0], HANDLE_FLAG_INHERIT, 0)) goto error;
22128
#endif
22129
0
    *handle = handles[1];
22130
0
    return handles[0];
22131
22132
#else
22133
22134
    /* Normal blocking pipes */
22135
#ifdef JANET_WINDOWS
22136
    SECURITY_ATTRIBUTES saAttr;
22137
    memset(&saAttr, 0, sizeof(saAttr));
22138
    saAttr.nLength = sizeof(saAttr);
22139
    saAttr.bInheritHandle = TRUE;
22140
    if (!CreatePipe(handles, handles + 1, &saAttr, 0)) goto error;
22141
    if (reverse) swap_handles(handles);
22142
    /* Don't inherit the side of the pipe owned by this process */
22143
    if (!SetHandleInformation(handles[0], HANDLE_FLAG_INHERIT, 0)) goto error;
22144
    *handle = handles[1];
22145
    return handles[0];
22146
#else
22147
    if (pipe(handles)) goto error;
22148
    if (reverse) swap_handles(handles);
22149
    *handle = handles[1];
22150
    return handles[0];
22151
#endif
22152
22153
#endif
22154
0
error:
22155
0
    *errflag = 1;
22156
0
    return JANET_HANDLE_NONE;
22157
0
}
22158
22159
static const JanetMethod proc_methods[] = {
22160
    {"wait", os_proc_wait},
22161
    {"kill", os_proc_kill},
22162
    {"close", os_proc_close},
22163
    /* dud methods for janet_proc_next */
22164
    {"in", NULL},
22165
    {"out", NULL},
22166
    {"err", NULL},
22167
    {NULL, NULL}
22168
};
22169
22170
0
static int janet_proc_get(void *p, Janet key, Janet *out) {
22171
0
    JanetProc *proc = (JanetProc *)p;
22172
0
    if (janet_keyeq(key, "in")) {
22173
0
        *out = (NULL == proc->in) ? janet_wrap_nil() : janet_wrap_abstract(proc->in);
22174
0
        return 1;
22175
0
    }
22176
0
    if (janet_keyeq(key, "out")) {
22177
0
        *out = (NULL == proc->out) ? janet_wrap_nil() : janet_wrap_abstract(proc->out);
22178
0
        return 1;
22179
0
    }
22180
0
    if (janet_keyeq(key, "err")) {
22181
0
        *out = (NULL == proc->err) ? janet_wrap_nil() : janet_wrap_abstract(proc->err);
22182
0
        return 1;
22183
0
    }
22184
0
#ifndef JANET_WINDOWS
22185
0
    if (janet_keyeq(key, "pid")) {
22186
0
        *out = janet_wrap_number(proc->pid);
22187
0
        return 1;
22188
0
    }
22189
0
#endif
22190
0
    if ((-1 != proc->return_code) && janet_keyeq(key, "return-code")) {
22191
0
        *out = janet_wrap_integer(proc->return_code);
22192
0
        return 1;
22193
0
    }
22194
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
22195
0
    return janet_getmethod(janet_unwrap_keyword(key), proc_methods, out);
22196
0
}
22197
22198
0
static Janet janet_proc_next(void *p, Janet key) {
22199
0
    (void) p;
22200
0
    return janet_nextmethod(proc_methods, key);
22201
0
}
22202
22203
static const JanetAbstractType ProcAT = {
22204
    "core/process",
22205
    janet_proc_gc,
22206
    janet_proc_mark,
22207
    janet_proc_get,
22208
    NULL, /* put */
22209
    NULL, /* marshal */
22210
    NULL, /* unmarshal */
22211
    NULL, /* tostring */
22212
    NULL, /* compare */
22213
    NULL, /* hash */
22214
    janet_proc_next,
22215
    JANET_ATEND_NEXT
22216
};
22217
22218
0
static JanetHandle janet_getjstream(Janet *argv, int32_t n, void **orig) {
22219
0
#ifdef JANET_EV
22220
0
    JanetStream *stream = janet_checkabstract(argv[n], &janet_stream_type);
22221
0
    if (stream != NULL) {
22222
0
        if (stream->flags & JANET_STREAM_CLOSED)
22223
0
            janet_panic("stream is closed");
22224
0
        *orig = stream;
22225
0
        return stream->handle;
22226
0
    }
22227
0
#endif
22228
0
    JanetFile *f = janet_checkabstract(argv[n], &janet_file_type);
22229
0
    if (f != NULL) {
22230
0
        if (f->flags & JANET_FILE_CLOSED) {
22231
0
            janet_panic("file is closed");
22232
0
        }
22233
0
        *orig = f;
22234
#ifdef JANET_WINDOWS
22235
        return (HANDLE) _get_osfhandle(_fileno(f->file));
22236
#else
22237
0
        return fileno(f->file);
22238
0
#endif
22239
0
    }
22240
0
    janet_panicf("expected file|stream, got %v", argv[n]);
22241
0
}
22242
22243
#ifdef JANET_EV
22244
0
static JanetStream *get_stdio_for_handle(JanetHandle handle, void *orig, int iswrite) {
22245
0
    if (orig == NULL) {
22246
0
        return janet_stream(handle, iswrite ? JANET_STREAM_WRITABLE : JANET_STREAM_READABLE, NULL);
22247
0
    } else if (janet_abstract_type(orig) == &janet_file_type) {
22248
0
        JanetFile *jf = (JanetFile *)orig;
22249
0
        uint32_t flags = 0;
22250
0
        if (jf->flags & JANET_FILE_WRITE) {
22251
0
            flags |= JANET_STREAM_WRITABLE;
22252
0
        }
22253
0
        if (jf->flags & JANET_FILE_READ) {
22254
0
            flags |= JANET_STREAM_READABLE;
22255
0
        }
22256
        /* duplicate handle when converting file to stream */
22257
#ifdef JANET_WINDOWS
22258
        HANDLE prochandle = GetCurrentProcess();
22259
        HANDLE newHandle = INVALID_HANDLE_VALUE;
22260
        if (!DuplicateHandle(prochandle, handle, prochandle, &newHandle, 0, FALSE, DUPLICATE_SAME_ACCESS)) {
22261
            return NULL;
22262
        }
22263
#else
22264
0
        int newHandle = dup(handle);
22265
0
        if (newHandle < 0) {
22266
0
            return NULL;
22267
0
        }
22268
0
#endif
22269
0
        return janet_stream(newHandle, flags, NULL);
22270
0
    } else {
22271
0
        return orig;
22272
0
    }
22273
0
}
22274
#else
22275
static JanetFile *get_stdio_for_handle(JanetHandle handle, void *orig, int iswrite) {
22276
    if (NULL != orig) return (JanetFile *) orig;
22277
#ifdef JANET_WINDOWS
22278
    int fd = _open_osfhandle((intptr_t) handle, iswrite ? _O_WRONLY : _O_RDONLY);
22279
    if (-1 == fd) return NULL;
22280
    FILE *f = _fdopen(fd, iswrite ? "w" : "r");
22281
    if (NULL == f) {
22282
        _close(fd);
22283
        return NULL;
22284
    }
22285
#else
22286
    FILE *f = fdopen(handle, iswrite ? "w" : "r");
22287
    if (NULL == f) return NULL;
22288
#endif
22289
    return janet_makejfile(f, iswrite ? JANET_FILE_WRITE : JANET_FILE_READ);
22290
}
22291
#endif
22292
22293
typedef enum {
22294
    JANET_EXECUTE_EXECUTE,
22295
    JANET_EXECUTE_SPAWN,
22296
    JANET_EXECUTE_EXEC
22297
} JanetExecuteMode;
22298
22299
0
static Janet os_execute_impl(int32_t argc, Janet *argv, JanetExecuteMode mode) {
22300
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
22301
0
    janet_arity(argc, 1, 3);
22302
22303
    /* Get flags */
22304
0
    int is_spawn = mode == JANET_EXECUTE_SPAWN;
22305
0
    uint64_t flags = 0;
22306
0
    if (argc > 1) {
22307
0
        flags = janet_getflags(argv, 1, "epxd");
22308
0
    }
22309
22310
    /* Get environment */
22311
0
    int use_environ = !janet_flag_at(flags, 0);
22312
0
    EnvBlock envp = os_execute_env(argc, argv);
22313
22314
    /* Get arguments */
22315
0
    JanetView exargs = janet_getindexed(argv, 0);
22316
0
    if (exargs.len < 1) {
22317
0
        janet_panic("expected at least 1 command line argument");
22318
0
    }
22319
22320
    /* Optional stdio redirections */
22321
0
    JanetAbstract orig_in = NULL, orig_out = NULL, orig_err = NULL;
22322
0
    JanetHandle new_in = JANET_HANDLE_NONE, new_out = JANET_HANDLE_NONE, new_err = JANET_HANDLE_NONE;
22323
0
    JanetHandle pipe_in = JANET_HANDLE_NONE, pipe_out = JANET_HANDLE_NONE, pipe_err = JANET_HANDLE_NONE;
22324
0
    int stderr_is_stdout = 0;
22325
0
    int pipe_errflag = 0; /* Track errors setting up pipes */
22326
0
    int pipe_owner_flags = (is_spawn && (flags & 0x8)) ? JANET_PROC_ALLOW_ZOMBIE : 0;
22327
22328
    /* Get optional redirections */
22329
0
    if (argc > 2 && (mode != JANET_EXECUTE_EXEC)) {
22330
0
        JanetDictView tab = janet_getdictionary(argv, 2);
22331
0
        Janet maybe_stdin = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("in"));
22332
0
        Janet maybe_stdout = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("out"));
22333
0
        Janet maybe_stderr = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("err"));
22334
0
        if (is_spawn && janet_keyeq(maybe_stdin, "pipe")) {
22335
0
            new_in = make_pipes(&pipe_in, 1, &pipe_errflag);
22336
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDIN;
22337
0
        } else if (!janet_checktype(maybe_stdin, JANET_NIL)) {
22338
0
            new_in = janet_getjstream(&maybe_stdin, 0, &orig_in);
22339
0
        }
22340
0
        if (is_spawn && janet_keyeq(maybe_stdout, "pipe")) {
22341
0
            new_out = make_pipes(&pipe_out, 0, &pipe_errflag);
22342
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDOUT;
22343
0
        } else if (!janet_checktype(maybe_stdout, JANET_NIL)) {
22344
0
            new_out = janet_getjstream(&maybe_stdout, 0, &orig_out);
22345
0
        }
22346
0
        if (is_spawn && janet_keyeq(maybe_stderr, "pipe")) {
22347
0
            new_err = make_pipes(&pipe_err, 0, &pipe_errflag);
22348
0
            pipe_owner_flags |= JANET_PROC_OWNS_STDERR;
22349
0
        } else if (is_spawn && janet_keyeq(maybe_stderr, "out")) {
22350
0
            stderr_is_stdout = 1;
22351
0
        } else if (!janet_checktype(maybe_stderr, JANET_NIL)) {
22352
0
            new_err = janet_getjstream(&maybe_stderr, 0, &orig_err);
22353
0
        }
22354
0
    }
22355
22356
    /* Optional working directory. Available for both os/execute and os/spawn. */
22357
0
    const char *chdir_path = NULL;
22358
0
    if (argc > 2) {
22359
0
        JanetDictView tab = janet_getdictionary(argv, 2);
22360
0
        Janet workdir = janet_dictionary_get(tab.kvs, tab.cap, janet_ckeywordv("cd"));
22361
0
        if (janet_checktype(workdir, JANET_STRING)) {
22362
0
            chdir_path = (const char *) janet_unwrap_string(workdir);
22363
#ifndef JANET_SPAWN_CHDIR
22364
            janet_panicf(":cd argument not supported on this system - %s", chdir_path);
22365
#endif
22366
0
        } else if (!janet_checktype(workdir, JANET_NIL)) {
22367
0
            janet_panicf("expected string for :cd argumnet, got %v", workdir);
22368
0
        }
22369
0
    }
22370
22371
    /* Clean up if any of the pipes have any issues */
22372
0
    if (pipe_errflag) {
22373
0
        if (pipe_in != JANET_HANDLE_NONE) close_handle(pipe_in);
22374
0
        if (pipe_out != JANET_HANDLE_NONE) close_handle(pipe_out);
22375
0
        if (pipe_err != JANET_HANDLE_NONE) close_handle(pipe_err);
22376
0
        janet_panic("failed to create pipes");
22377
0
    }
22378
22379
#ifdef JANET_WINDOWS
22380
22381
    HANDLE pHandle, tHandle;
22382
    SECURITY_ATTRIBUTES saAttr;
22383
    PROCESS_INFORMATION processInfo;
22384
    STARTUPINFO startupInfo;
22385
    LPCSTR lpCurrentDirectory = NULL;
22386
    memset(&saAttr, 0, sizeof(saAttr));
22387
    memset(&processInfo, 0, sizeof(processInfo));
22388
    memset(&startupInfo, 0, sizeof(startupInfo));
22389
    startupInfo.cb = sizeof(startupInfo);
22390
    startupInfo.dwFlags |= STARTF_USESTDHANDLES;
22391
    saAttr.nLength = sizeof(saAttr);
22392
22393
    JanetBuffer *buf = os_exec_escape(exargs);
22394
    if (buf->count > 8191) {
22395
        if (pipe_in != JANET_HANDLE_NONE) CloseHandle(pipe_in);
22396
        if (pipe_out != JANET_HANDLE_NONE) CloseHandle(pipe_out);
22397
        if (pipe_err != JANET_HANDLE_NONE) CloseHandle(pipe_err);
22398
        janet_panic("command line string too long (max 8191 characters)");
22399
    }
22400
    const char *path = (const char *) janet_unwrap_string(exargs.items[0]);
22401
22402
    if (chdir_path != NULL) {
22403
        lpCurrentDirectory = chdir_path;
22404
    }
22405
22406
    /* Do IO redirection */
22407
22408
    if (pipe_in != JANET_HANDLE_NONE) {
22409
        startupInfo.hStdInput = pipe_in;
22410
    } else if (new_in != JANET_HANDLE_NONE) {
22411
        startupInfo.hStdInput = new_in;
22412
    } else {
22413
        startupInfo.hStdInput = (HANDLE) _get_osfhandle(_fileno(stdin));
22414
    }
22415
22416
    if (pipe_out != JANET_HANDLE_NONE) {
22417
        startupInfo.hStdOutput = pipe_out;
22418
    } else if (new_out != JANET_HANDLE_NONE) {
22419
        startupInfo.hStdOutput = new_out;
22420
    } else {
22421
        startupInfo.hStdOutput = (HANDLE) _get_osfhandle(_fileno(stdout));
22422
    }
22423
22424
    if (pipe_err != JANET_HANDLE_NONE) {
22425
        startupInfo.hStdError = pipe_err;
22426
    } else if (new_err != NULL) {
22427
        startupInfo.hStdError = new_err;
22428
    } else if (stderr_is_stdout) {
22429
        startupInfo.hStdError = startupInfo.hStdOutput;
22430
    } else {
22431
        startupInfo.hStdError = (HANDLE) _get_osfhandle(_fileno(stderr));
22432
    }
22433
22434
    int cp_failed = 0;
22435
    if (!CreateProcess(janet_flag_at(flags, 1) ? NULL : path,
22436
                       (char *) buf->data, /* Single CLI argument */
22437
                       &saAttr, /* no proc inheritance */
22438
                       &saAttr, /* no thread inheritance */
22439
                       TRUE, /* handle inheritance */
22440
                       0, /* flags */
22441
                       use_environ ? NULL : envp, /* pass in environment */
22442
                       lpCurrentDirectory,
22443
                       &startupInfo,
22444
                       &processInfo)) {
22445
        cp_failed = 1;
22446
    }
22447
22448
    if (pipe_in != JANET_HANDLE_NONE) CloseHandle(pipe_in);
22449
    if (pipe_out != JANET_HANDLE_NONE) CloseHandle(pipe_out);
22450
    if (pipe_err != JANET_HANDLE_NONE) CloseHandle(pipe_err);
22451
22452
    os_execute_cleanup(envp, NULL);
22453
22454
    if (cp_failed)  {
22455
        janet_panic("failed to create process");
22456
    }
22457
22458
    pHandle = processInfo.hProcess;
22459
    tHandle = processInfo.hThread;
22460
22461
#else
22462
22463
    /* Result */
22464
0
    int status = 0;
22465
22466
0
    const char **child_argv = janet_smalloc(sizeof(char *) * ((size_t) exargs.len + 1));
22467
0
    for (int32_t i = 0; i < exargs.len; i++)
22468
0
        child_argv[i] = janet_getcstring(exargs.items, i);
22469
0
    child_argv[exargs.len] = NULL;
22470
    /* Coerce to form that works for spawn. I'm fairly confident no implementation
22471
     * of posix_spawn would modify the argv array passed in. */
22472
0
    char *const *cargv = (char *const *)child_argv;
22473
22474
0
    if (use_environ) {
22475
0
        janet_lock_environ();
22476
0
    }
22477
22478
    /* exec mode */
22479
0
    if (mode == JANET_EXECUTE_EXEC) {
22480
0
        int status;
22481
0
        if (!use_environ) {
22482
0
            environ = envp;
22483
0
        }
22484
0
        do {
22485
0
            if (janet_flag_at(flags, 1)) {
22486
0
                status = execvp(cargv[0], cargv);
22487
0
            } else {
22488
0
                status = execv(cargv[0], cargv);
22489
0
            }
22490
0
        } while (status == -1 && errno == EINTR);
22491
0
        janet_panicf("%p: %s", cargv[0], janet_strerror(errno ? errno : ENOENT));
22492
0
    }
22493
22494
    /* Use posix_spawn to spawn new process */
22495
22496
    /* Posix spawn setup */
22497
0
    posix_spawn_file_actions_t actions;
22498
0
    posix_spawn_file_actions_init(&actions);
22499
0
#ifdef JANET_SPAWN_CHDIR
22500
0
    if (chdir_path != NULL) {
22501
#ifdef JANET_SPAWN_CHDIR_NO_NP
22502
        posix_spawn_file_actions_addchdir(&actions, chdir_path);
22503
#else
22504
0
        posix_spawn_file_actions_addchdir_np(&actions, chdir_path);
22505
0
#endif
22506
0
    }
22507
0
#endif
22508
0
    if (pipe_in != JANET_HANDLE_NONE) {
22509
0
        posix_spawn_file_actions_adddup2(&actions, pipe_in, 0);
22510
0
        posix_spawn_file_actions_addclose(&actions, pipe_in);
22511
0
    } else if (new_in != JANET_HANDLE_NONE && new_in != 0) {
22512
0
        posix_spawn_file_actions_adddup2(&actions, new_in, 0);
22513
0
        if (new_in != new_out && new_in != new_err)
22514
0
            posix_spawn_file_actions_addclose(&actions, new_in);
22515
0
    }
22516
0
    if (pipe_out != JANET_HANDLE_NONE) {
22517
0
        posix_spawn_file_actions_adddup2(&actions, pipe_out, 1);
22518
0
        posix_spawn_file_actions_addclose(&actions, pipe_out);
22519
0
    } else if (new_out != JANET_HANDLE_NONE && new_out != 1) {
22520
0
        posix_spawn_file_actions_adddup2(&actions, new_out, 1);
22521
0
        if (new_out != new_err)
22522
0
            posix_spawn_file_actions_addclose(&actions, new_out);
22523
0
    }
22524
0
    if (pipe_err != JANET_HANDLE_NONE) {
22525
0
        posix_spawn_file_actions_adddup2(&actions, pipe_err, 2);
22526
0
        posix_spawn_file_actions_addclose(&actions, pipe_err);
22527
0
    } else if (new_err != JANET_HANDLE_NONE && new_err != 2) {
22528
0
        posix_spawn_file_actions_adddup2(&actions, new_err, 2);
22529
0
        posix_spawn_file_actions_addclose(&actions, new_err);
22530
0
    } else if (stderr_is_stdout) {
22531
0
        posix_spawn_file_actions_adddup2(&actions, 1, 2);
22532
0
    }
22533
22534
0
    pid_t pid;
22535
0
    if (janet_flag_at(flags, 1)) {
22536
0
        status = posix_spawnp(&pid,
22537
0
                              child_argv[0], &actions, NULL, cargv,
22538
0
                              use_environ ? environ : envp);
22539
0
    } else {
22540
0
        status = posix_spawn(&pid,
22541
0
                             child_argv[0], &actions, NULL, cargv,
22542
0
                             use_environ ? environ : envp);
22543
0
    }
22544
22545
0
    posix_spawn_file_actions_destroy(&actions);
22546
22547
0
    if (pipe_in != JANET_HANDLE_NONE) close(pipe_in);
22548
0
    if (pipe_out != JANET_HANDLE_NONE) close(pipe_out);
22549
0
    if (pipe_err != JANET_HANDLE_NONE) close(pipe_err);
22550
22551
0
    if (use_environ) {
22552
0
        janet_unlock_environ();
22553
0
    }
22554
22555
0
    os_execute_cleanup(envp, child_argv);
22556
0
    if (status) {
22557
        /* correct for macos bug where errno is not set */
22558
0
        janet_panicf("%p: %s", argv[0], janet_strerror(errno ? errno : ENOENT));
22559
0
    }
22560
22561
0
#endif
22562
0
    JanetProc *proc = janet_abstract(&ProcAT, sizeof(JanetProc));
22563
0
    proc->return_code = -1;
22564
#ifdef JANET_WINDOWS
22565
    proc->pHandle = pHandle;
22566
    proc->tHandle = tHandle;
22567
#else
22568
0
    proc->pid = pid;
22569
0
#endif
22570
0
    proc->in = NULL;
22571
0
    proc->out = NULL;
22572
0
    proc->err = NULL;
22573
0
    proc->flags = pipe_owner_flags;
22574
0
    if (janet_flag_at(flags, 2)) {
22575
0
        proc->flags |= JANET_PROC_ERROR_NONZERO;
22576
0
    }
22577
0
    if (is_spawn) {
22578
        /* Only set up pointers to stdin, stdout, and stderr if os/spawn. */
22579
0
        if (new_in != JANET_HANDLE_NONE) {
22580
0
            proc->in = get_stdio_for_handle(new_in, orig_in, 1);
22581
0
            if (NULL == proc->in) janet_panic("failed to construct proc");
22582
0
        }
22583
0
        if (new_out != JANET_HANDLE_NONE) {
22584
0
            proc->out = get_stdio_for_handle(new_out, orig_out, 0);
22585
0
            if (NULL == proc->out) janet_panic("failed to construct proc");
22586
0
        }
22587
0
        if (new_err != JANET_HANDLE_NONE) {
22588
0
            proc->err = get_stdio_for_handle(new_err, orig_err, 0);
22589
0
            if (NULL == proc->err) janet_panic("failed to construct proc");
22590
0
        }
22591
0
        return janet_wrap_abstract(proc);
22592
0
    } else {
22593
0
#ifdef JANET_EV
22594
0
        os_proc_wait_impl(proc);
22595
#else
22596
        return os_proc_wait_impl(proc);
22597
#endif
22598
0
    }
22599
0
}
22600
22601
JANET_CORE_FN(os_execute,
22602
              "(os/execute args &opt flags env)",
22603
              "Execute a program on the system and return the exit code. `args` is an array/tuple "
22604
              "of strings. The first string is the name of the program and the remainder are "
22605
              "arguments passed to the program. `flags` is a keyword made from the following "
22606
              "characters that modifies how the program executes:\n"
22607
              "* :e - enables passing an environment to the program. Without 'e', the "
22608
              "current environment is inherited.\n"
22609
              "* :p - allows searching the current PATH for the program to execute. "
22610
              "Without this flag, the first element of `args` must be an absolute path.\n"
22611
              "* :x - raises error if exit code is non-zero.\n"
22612
              "* :d - prevents the garbage collector terminating the program (if still running) "
22613
              "and calling the equivalent of `os/proc-wait` (allows zombie processes).\n"
22614
              "`env` is a table/struct mapping environment variables to values. It can also "
22615
              "contain the keys :in, :out, and :err, which allow redirecting stdio in the "
22616
              "subprocess. :in, :out, and :err should be core/file or core/stream values. "
22617
              "If core/stream values are used, the caller is responsible for ensuring pipes do not "
22618
0
              "cause the program to block and deadlock.") {
22619
0
    return os_execute_impl(argc, argv, JANET_EXECUTE_EXECUTE);
22620
0
}
22621
22622
JANET_CORE_FN(os_spawn,
22623
              "(os/spawn args &opt flags env)",
22624
              "Execute a program on the system and return a core/process value representing the "
22625
              "spawned subprocess. Takes the same arguments as `os/execute` but does not wait for "
22626
              "the subprocess to complete. Unlike `os/execute`, the value `:pipe` can be used for "
22627
              ":in, :out and :err keys in `env`. If used, the returned core/process will have a "
22628
              "writable stream in the :in field and readable streams in the :out and :err fields. "
22629
              "On non-Windows systems, the subprocess PID will be in the :pid field. The caller is "
22630
              "responsible for waiting on the process (e.g. by calling `os/proc-wait` on the "
22631
              "returned core/process value) to avoid creating zombie process. After the subprocess "
22632
              "completes, the exit value is in the :return-code field. If `flags` includes 'x', a "
22633
              "non-zero exit code will cause a waiting fiber to raise an error. The use of "
22634
              "`:pipe` may fail if there are too many active file descriptors. The caller is "
22635
              "responsible for closing pipes created by `:pipe` (either individually or using "
22636
              "`os/proc-close`). Similar to `os/execute`, the caller is responsible for ensuring "
22637
              "pipes do not cause the program to block and deadlock. As a special case, the stream passed to `:err` "
22638
0
              "can be the keyword `:out` to redirect stderr to stdout in the subprocess.") {
22639
0
    return os_execute_impl(argc, argv, JANET_EXECUTE_SPAWN);
22640
0
}
22641
22642
JANET_CORE_FN(os_posix_exec,
22643
              "(os/posix-exec args &opt flags env)",
22644
              "Use the execvpe or execve system calls to replace the current process with an interface similar to os/execute. "
22645
              "However, instead of creating a subprocess, the current process is replaced. Is not supported on Windows, and "
22646
0
              "does not allow redirection of stdio.") {
22647
#ifdef JANET_WINDOWS
22648
    (void) argc;
22649
    (void) argv;
22650
    janet_panic("not supported on Windows");
22651
#else
22652
0
    return os_execute_impl(argc, argv, JANET_EXECUTE_EXEC);
22653
0
#endif
22654
0
}
22655
22656
JANET_CORE_FN(os_posix_fork,
22657
              "(os/posix-fork)",
22658
              "Make a `fork` system call and create a new process. Return nil if in the new process, otherwise a core/process object (as returned by os/spawn). "
22659
0
              "Not supported on all systems (POSIX only).") {
22660
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
22661
0
    janet_fixarity(argc, 0);
22662
0
    (void) argv;
22663
#ifdef JANET_WINDOWS
22664
    janet_panic("not supported on Windows");
22665
#else
22666
0
    pid_t result;
22667
0
    do {
22668
0
        result = fork();
22669
0
    } while (result == -1 && errno == EINTR);
22670
0
    if (result == -1) {
22671
0
        janet_panic(janet_strerror(errno));
22672
0
    }
22673
0
    if (result) {
22674
0
        JanetProc *proc = janet_abstract(&ProcAT, sizeof(JanetProc));
22675
0
        memset(proc, 0, sizeof(JanetProc));
22676
0
        proc->pid = result;
22677
0
        proc->flags = JANET_PROC_ALLOW_ZOMBIE;
22678
0
        return janet_wrap_abstract(proc);
22679
0
    }
22680
0
    return janet_wrap_nil();
22681
0
#endif
22682
0
}
22683
22684
JANET_CORE_FN(os_posix_chroot,
22685
              "(os/posix-chroot dirname)",
22686
              "Call `chroot` to change the root directory to `dirname`. "
22687
0
              "Not supported on all systems (POSIX only).") {
22688
0
    janet_sandbox_assert(JANET_SANDBOX_CHROOT);
22689
0
    janet_fixarity(argc, 1);
22690
#ifdef JANET_WINDOWS
22691
    janet_panic("not supported on Windows");
22692
#else
22693
0
    const char *root = janet_getcstring(argv, 0);
22694
0
    int result;
22695
0
    do {
22696
0
        result = chroot(root);
22697
0
    } while (result == -1 && errno == EINTR);
22698
0
    if (result == -1) {
22699
0
        janet_panic(janet_strerror(errno));
22700
0
    }
22701
0
    return janet_wrap_nil();
22702
0
#endif
22703
0
}
22704
22705
#ifdef JANET_EV
22706
/* Runs in a separate thread */
22707
0
static JanetEVGenericMessage os_shell_subr(JanetEVGenericMessage args) {
22708
0
    int stat = system((const char *) args.argp);
22709
0
    janet_free(args.argp);
22710
0
    if (args.argi) {
22711
0
        args.tag = JANET_EV_TCTAG_INTEGER;
22712
0
    } else {
22713
0
        args.tag = JANET_EV_TCTAG_BOOLEAN;
22714
0
    }
22715
0
    args.argi = stat;
22716
0
    return args;
22717
0
}
22718
#endif
22719
22720
JANET_CORE_FN(os_shell,
22721
              "(os/shell str)",
22722
0
              "Pass a command string str directly to the system shell.") {
22723
0
    janet_sandbox_assert(JANET_SANDBOX_SUBPROCESS);
22724
0
    janet_arity(argc, 0, 1);
22725
0
    const char *cmd = argc
22726
0
                      ? janet_getcstring(argv, 0)
22727
0
                      : NULL;
22728
0
#ifdef JANET_EV
22729
0
    janet_ev_threaded_await(os_shell_subr, 0, argc, cmd ? strdup(cmd) : NULL);
22730
#else
22731
    int stat = system(cmd);
22732
    return argc
22733
           ? janet_wrap_integer(stat)
22734
           : janet_wrap_boolean(stat);
22735
#endif
22736
0
}
22737
22738
#endif /* JANET_NO_PROCESSES */
22739
22740
JANET_CORE_FN(os_environ,
22741
              "(os/environ)",
22742
0
              "Get a copy of the OS environment table.") {
22743
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
22744
0
    (void) argv;
22745
0
    janet_fixarity(argc, 0);
22746
0
    int32_t nenv = 0;
22747
0
    janet_lock_environ();
22748
0
    char **env = environ;
22749
0
    while (*env++)
22750
0
        nenv += 1;
22751
0
    JanetTable *t = janet_table(nenv);
22752
0
    for (int32_t i = 0; i < nenv; i++) {
22753
0
        char *e = environ[i];
22754
0
        char *eq = strchr(e, '=');
22755
0
        if (!eq) {
22756
0
            janet_unlock_environ();
22757
0
            janet_panic("no '=' in environ");
22758
0
        }
22759
0
        char *v = eq + 1;
22760
0
        int32_t full_len = (int32_t) strlen(e);
22761
0
        int32_t val_len = (int32_t) strlen(v);
22762
0
        janet_table_put(
22763
0
            t,
22764
0
            janet_stringv((const uint8_t *)e, full_len - val_len - 1),
22765
0
            janet_stringv((const uint8_t *)v, val_len)
22766
0
        );
22767
0
    }
22768
0
    janet_unlock_environ();
22769
0
    return janet_wrap_table(t);
22770
0
}
22771
22772
JANET_CORE_FN(os_getenv,
22773
              "(os/getenv variable &opt dflt)",
22774
0
              "Get the string value of an environment variable.") {
22775
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
22776
0
    janet_arity(argc, 1, 2);
22777
0
    const char *cstr = janet_getcstring(argv, 0);
22778
0
    janet_lock_environ();
22779
0
    const char *res = getenv(cstr);
22780
0
    Janet ret = res
22781
0
                ? janet_cstringv(res)
22782
0
                : argc == 2
22783
0
                ? argv[1]
22784
0
                : janet_wrap_nil();
22785
0
    janet_unlock_environ();
22786
0
    return ret;
22787
0
}
22788
22789
JANET_CORE_FN(os_setenv,
22790
              "(os/setenv variable value)",
22791
0
              "Set an environment variable.") {
22792
#ifdef JANET_WINDOWS
22793
#define SETENV(K,V) _putenv_s(K, V)
22794
#define UNSETENV(K) _putenv_s(K, "")
22795
#else
22796
0
#define SETENV(K,V) setenv(K, V, 1)
22797
0
#define UNSETENV(K) unsetenv(K)
22798
0
#endif
22799
0
    janet_sandbox_assert(JANET_SANDBOX_ENV);
22800
0
    janet_arity(argc, 1, 2);
22801
0
    const char *ks = janet_getcstring(argv, 0);
22802
0
    const char *vs = janet_optcstring(argv, argc, 1, NULL);
22803
0
    janet_lock_environ();
22804
0
    if (NULL == vs) {
22805
0
        UNSETENV(ks);
22806
0
    } else {
22807
0
        SETENV(ks, vs);
22808
0
    }
22809
0
    janet_unlock_environ();
22810
0
    return janet_wrap_nil();
22811
0
}
22812
22813
JANET_CORE_FN(os_time,
22814
              "(os/time)",
22815
              "Get the current time expressed as the number of whole seconds since "
22816
0
              "January 1, 1970, the Unix epoch. Returns a real number.") {
22817
0
    janet_fixarity(argc, 0);
22818
0
    (void) argv;
22819
0
    double dtime = (double)(time(NULL));
22820
0
    return janet_wrap_number(dtime);
22821
0
}
22822
22823
JANET_CORE_FN(os_clock,
22824
              "(os/clock &opt source format)",
22825
              "Return the current time of the requested clock source.\n\n"
22826
              "The `source` argument selects the clock source to use, when not specified the default "
22827
              "is `:realtime`:\n"
22828
              "- :realtime: Return the real (i.e., wall-clock) time. This clock is affected by discontinuous "
22829
              "  jumps in the system time\n"
22830
              "- :monotonic: Return the number of whole + fractional seconds since some fixed point in "
22831
              "  time. The clock is guaranteed to be non-decreasing in real time.\n"
22832
              "- :cputime: Return the CPU time consumed by this process  (i.e. all threads in the process)\n"
22833
              "The `format` argument selects the type of output, when not specified the default is `:double`:\n"
22834
              "- :double: Return the number of seconds + fractional seconds as a double\n"
22835
              "- :int: Return the number of seconds as an integer\n"
22836
0
              "- :tuple: Return a 2 integer tuple [seconds, nanoseconds]\n") {
22837
0
    enum JanetTimeSource source;
22838
0
    janet_sandbox_assert(JANET_SANDBOX_HRTIME);
22839
0
    janet_arity(argc, 0, 2);
22840
22841
0
    JanetKeyword sourcestr = janet_optkeyword(argv, argc, 0, NULL);
22842
0
    if (sourcestr == NULL || janet_cstrcmp(sourcestr, "realtime") == 0) {
22843
0
        source = JANET_TIME_REALTIME;
22844
0
    } else if (janet_cstrcmp(sourcestr, "monotonic") == 0) {
22845
0
        source = JANET_TIME_MONOTONIC;
22846
0
    } else if (janet_cstrcmp(sourcestr, "cputime") == 0) {
22847
0
        source = JANET_TIME_CPUTIME;
22848
0
    } else {
22849
0
        janet_panicf("expected :realtime, :monotonic, or :cputime, got %v", argv[0]);
22850
0
    }
22851
22852
0
    struct timespec tv;
22853
0
    if (janet_gettime(&tv, source)) janet_panic("could not get time");
22854
22855
0
    JanetKeyword formatstr = janet_optkeyword(argv, argc, 1, NULL);
22856
0
    if (formatstr == NULL || janet_cstrcmp(formatstr, "double") == 0) {
22857
0
        double dtime = (double)(tv.tv_sec + (tv.tv_nsec / 1E9));
22858
0
        return janet_wrap_number(dtime);
22859
0
    } else if (janet_cstrcmp(formatstr, "int") == 0) {
22860
0
        return janet_wrap_number((double)(tv.tv_sec));
22861
0
    } else if (janet_cstrcmp(formatstr, "tuple") == 0) {
22862
0
        Janet tup[2] = {janet_wrap_number((double)tv.tv_sec),
22863
0
                        janet_wrap_number((double)tv.tv_nsec)
22864
0
                       };
22865
0
        return janet_wrap_tuple(janet_tuple_n(tup, 2));
22866
0
    } else {
22867
0
        janet_panicf("expected :double, :int, or :tuple, got %v", argv[1]);
22868
0
    }
22869
0
}
22870
22871
JANET_CORE_FN(os_sleep,
22872
              "(os/sleep n)",
22873
              "Suspend the program for `n` seconds. `n` can be a real number. Returns "
22874
0
              "nil.") {
22875
0
    janet_fixarity(argc, 1);
22876
0
    double delay = janet_getnumber(argv, 0);
22877
0
    if (delay < 0) janet_panic("invalid argument to sleep");
22878
#ifdef JANET_WINDOWS
22879
    Sleep((DWORD)(delay * 1000));
22880
#else
22881
0
    int rc;
22882
0
    struct timespec ts;
22883
0
    ts.tv_sec = (time_t) delay;
22884
0
    ts.tv_nsec = (delay <= UINT32_MAX)
22885
0
                 ? (long)((delay - ((uint32_t)delay)) * 1000000000)
22886
0
                 : 0;
22887
0
    RETRY_EINTR(rc, nanosleep(&ts, &ts));
22888
0
#endif
22889
0
    return janet_wrap_nil();
22890
0
}
22891
22892
JANET_CORE_FN(os_isatty,
22893
              "(os/isatty &opt file)",
22894
              "Returns true if `file` is a terminal. If `file` is not specified, "
22895
0
              "it will default to standard output.") {
22896
0
    janet_arity(argc, 0, 1);
22897
0
    FILE *f = (argc == 1) ? janet_getfile(argv, 0, NULL) : stdout;
22898
#ifdef JANET_WINDOWS
22899
    int fd = _fileno(f);
22900
    if (fd == -1) janet_panic("not a valid stream");
22901
    return janet_wrap_boolean(_isatty(fd));
22902
#else
22903
0
    int fd = fileno(f);
22904
0
    if (fd == -1) janet_panic(janet_strerror(errno));
22905
0
    return janet_wrap_boolean(isatty(fd));
22906
0
#endif
22907
0
}
22908
22909
JANET_CORE_FN(os_cwd,
22910
              "(os/cwd)",
22911
0
              "Returns the current working directory.") {
22912
0
    janet_fixarity(argc, 0);
22913
0
    (void) argv;
22914
0
    char buf[FILENAME_MAX];
22915
0
    char *ptr;
22916
#ifdef JANET_WINDOWS
22917
    ptr = _getcwd(buf, FILENAME_MAX);
22918
#else
22919
0
    ptr = getcwd(buf, FILENAME_MAX);
22920
0
#endif
22921
0
    if (NULL == ptr) janet_panic("could not get current directory");
22922
0
    return janet_cstringv(ptr);
22923
0
}
22924
22925
JANET_CORE_FN(os_cryptorand,
22926
              "(os/cryptorand n &opt buf)",
22927
0
              "Get or append `n` bytes of good quality random data provided by the OS. Returns a new buffer or `buf`.") {
22928
0
    JanetBuffer *buffer;
22929
0
    janet_arity(argc, 1, 2);
22930
0
    int32_t offset;
22931
0
    int32_t n = janet_getinteger(argv, 0);
22932
0
    if (n < 0) janet_panic("expected positive integer");
22933
0
    if (argc == 2) {
22934
0
        buffer = janet_getbuffer(argv, 1);
22935
0
        offset = buffer->count;
22936
0
    } else {
22937
0
        offset = 0;
22938
0
        buffer = janet_buffer(n);
22939
0
    }
22940
    /* We could optimize here by adding setcount_uninit */
22941
0
    janet_buffer_setcount(buffer, offset + n);
22942
22943
0
    if (janet_cryptorand(buffer->data + offset, n) != 0)
22944
0
        janet_panic("unable to get sufficient random data");
22945
22946
0
    return janet_wrap_buffer(buffer);
22947
0
}
22948
22949
/* Helper function to get given or current time as local or UTC struct tm.
22950
 * - arg n+0: optional time_t to be converted, uses current time if not given
22951
 * - arg n+1: optional truthy to indicate the convnersion uses local time */
22952
0
static struct tm *time_to_tm(const Janet *argv, int32_t argc, int32_t n, struct tm *t_infos) {
22953
0
    time_t t;
22954
0
    if (argc > n && !janet_checktype(argv[n], JANET_NIL)) {
22955
0
        int64_t integer = janet_getinteger64(argv, n);
22956
0
        t = (time_t) integer;
22957
0
    } else {
22958
0
        time(&t);
22959
0
    }
22960
0
    struct tm *t_info = NULL;
22961
0
    if (argc > n + 1 && janet_truthy(argv[n + 1])) {
22962
        /* local time */
22963
#ifdef JANET_WINDOWS
22964
        _tzset();
22965
        localtime_s(t_infos, &t);
22966
        t_info = t_infos;
22967
#else
22968
0
        tzset();
22969
0
        t_info = localtime_r(&t, t_infos);
22970
0
#endif
22971
0
    } else {
22972
        /* utc time */
22973
#ifdef JANET_WINDOWS
22974
        gmtime_s(t_infos, &t);
22975
        t_info = t_infos;
22976
#else
22977
0
        t_info = gmtime_r(&t, t_infos);
22978
0
#endif
22979
0
    }
22980
0
    return t_info;
22981
0
}
22982
22983
JANET_CORE_FN(os_date,
22984
              "(os/date &opt time local)",
22985
              "Returns the given time as a date struct, or the current time if `time` is not given. "
22986
              "Returns a struct with following key values. Note that all numbers are 0-indexed. "
22987
              "Date is given in UTC unless `local` is truthy, in which case the date is formatted for "
22988
              "the local timezone.\n\n"
22989
              "* :seconds - number of seconds [0-61]\n\n"
22990
              "* :minutes - number of minutes [0-59]\n\n"
22991
              "* :hours - number of hours [0-23]\n\n"
22992
              "* :month-day - day of month [0-30]\n\n"
22993
              "* :month - month of year [0, 11]\n\n"
22994
              "* :year - years since year 0 (e.g. 2019)\n\n"
22995
              "* :week-day - day of the week [0-6]\n\n"
22996
              "* :year-day - day of the year [0-365]\n\n"
22997
0
              "* :dst - if Day Light Savings is in effect") {
22998
0
    janet_arity(argc, 0, 2);
22999
0
    (void) argv;
23000
0
    struct tm t_infos;
23001
0
    struct tm *t_info = time_to_tm(argv, argc, 0, &t_infos);
23002
0
    JanetKV *st = janet_struct_begin(9);
23003
0
    janet_struct_put(st, janet_ckeywordv("seconds"), janet_wrap_number(t_info->tm_sec));
23004
0
    janet_struct_put(st, janet_ckeywordv("minutes"), janet_wrap_number(t_info->tm_min));
23005
0
    janet_struct_put(st, janet_ckeywordv("hours"), janet_wrap_number(t_info->tm_hour));
23006
0
    janet_struct_put(st, janet_ckeywordv("month-day"), janet_wrap_number(t_info->tm_mday - 1));
23007
0
    janet_struct_put(st, janet_ckeywordv("month"), janet_wrap_number(t_info->tm_mon));
23008
0
    janet_struct_put(st, janet_ckeywordv("year"), janet_wrap_number(t_info->tm_year + 1900));
23009
0
    janet_struct_put(st, janet_ckeywordv("week-day"), janet_wrap_number(t_info->tm_wday));
23010
0
    janet_struct_put(st, janet_ckeywordv("year-day"), janet_wrap_number(t_info->tm_yday));
23011
0
    janet_struct_put(st, janet_ckeywordv("dst"), janet_wrap_boolean(t_info->tm_isdst));
23012
0
    return janet_wrap_struct(janet_struct_end(st));
23013
0
}
23014
23015
0
#define SIZETIMEFMT     250
23016
23017
JANET_CORE_FN(os_strftime,
23018
              "(os/strftime fmt &opt time local)",
23019
              "Format the given time as a string, or the current time if `time` is not given. "
23020
              "The time is formatted according to the same rules as the ISO C89 function strftime(). "
23021
              "The time is formatted in UTC unless `local` is truthy, in which case the date is formatted for "
23022
0
              "the local timezone.") {
23023
0
    janet_arity(argc, 1, 3);
23024
0
    const char *fmt = janet_getcstring(argv, 0);
23025
    /* ANSI X3.159-1989, section 4.12.3.5 "The strftime function" */
23026
0
    static const char *valid = "aAbBcdHIjmMpSUwWxXyYZ%";
23027
0
    const char *p = fmt;
23028
0
    while (*p) {
23029
0
        if (*p++ == '%') {
23030
0
            if (!strchr(valid, *p)) {
23031
0
                janet_panicf("invalid conversion specifier '%%%c'", *p);
23032
0
            }
23033
0
            p++;
23034
0
        }
23035
0
    }
23036
0
    struct tm t_infos;
23037
0
    struct tm *t_info = time_to_tm(argv, argc, 1, &t_infos);
23038
0
    char buf[SIZETIMEFMT];
23039
0
    (void)strftime(buf, SIZETIMEFMT, fmt, t_info);
23040
0
    return janet_cstringv(buf);
23041
0
}
23042
23043
0
static int entry_getdst(Janet env_entry) {
23044
0
    Janet v;
23045
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
23046
0
        JanetTable *entry = janet_unwrap_table(env_entry);
23047
0
        v = janet_table_get(entry, janet_ckeywordv("dst"));
23048
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
23049
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
23050
0
        v = janet_struct_get(entry, janet_ckeywordv("dst"));
23051
0
    } else {
23052
0
        v = janet_wrap_nil();
23053
0
    }
23054
0
    if (janet_checktype(v, JANET_NIL)) {
23055
0
        return -1;
23056
0
    } else {
23057
0
        return janet_truthy(v);
23058
0
    }
23059
0
}
23060
23061
#ifdef JANET_WINDOWS
23062
typedef int32_t timeint_t;
23063
#else
23064
typedef int64_t timeint_t;
23065
#endif
23066
23067
0
static timeint_t entry_getint(Janet env_entry, char *field) {
23068
0
    Janet i;
23069
0
    if (janet_checktype(env_entry, JANET_TABLE)) {
23070
0
        JanetTable *entry = janet_unwrap_table(env_entry);
23071
0
        i = janet_table_get(entry, janet_ckeywordv(field));
23072
0
    } else if (janet_checktype(env_entry, JANET_STRUCT)) {
23073
0
        const JanetKV *entry = janet_unwrap_struct(env_entry);
23074
0
        i = janet_struct_get(entry, janet_ckeywordv(field));
23075
0
    } else {
23076
0
        return 0;
23077
0
    }
23078
23079
0
    if (janet_checktype(i, JANET_NIL)) {
23080
0
        return 0;
23081
0
    }
23082
23083
#ifdef JANET_WINDOWS
23084
    if (!janet_checkint(i)) {
23085
        janet_panicf("bad slot #%s, expected 32 bit signed integer, got %v",
23086
                     field, i);
23087
    }
23088
#else
23089
0
    if (!janet_checkint64(i)) {
23090
0
        janet_panicf("bad slot #%s, expected 64 bit signed integer, got %v",
23091
0
                     field, i);
23092
0
    }
23093
0
#endif
23094
23095
0
    return (timeint_t)janet_unwrap_number(i);
23096
0
}
23097
23098
JANET_CORE_FN(os_mktime,
23099
              "(os/mktime date-struct &opt local)",
23100
              "Get the broken down date-struct time expressed as the number "
23101
              "of seconds since January 1, 1970, the Unix epoch. "
23102
              "Returns a real number. "
23103
              "Date is given in UTC unless `local` is truthy, in which case the "
23104
              "date is computed for the local timezone.\n\n"
23105
0
              "Inverse function to os/date.") {
23106
0
    janet_arity(argc, 1, 2);
23107
0
    time_t t;
23108
0
    struct tm t_info;
23109
23110
    /* Use memset instead of = {0} to silence paranoid warning in macos */
23111
0
    memset(&t_info, 0, sizeof(t_info));
23112
23113
0
    if (!janet_checktype(argv[0], JANET_TABLE) &&
23114
0
            !janet_checktype(argv[0], JANET_STRUCT))
23115
0
        janet_panic_type(argv[0], 0, JANET_TFLAG_DICTIONARY);
23116
23117
0
    t_info.tm_sec = entry_getint(argv[0], "seconds");
23118
0
    t_info.tm_min = entry_getint(argv[0], "minutes");
23119
0
    t_info.tm_hour = entry_getint(argv[0], "hours");
23120
0
    t_info.tm_mday = entry_getint(argv[0], "month-day") + 1;
23121
0
    t_info.tm_mon = entry_getint(argv[0], "month");
23122
0
    t_info.tm_year = entry_getint(argv[0], "year") - 1900;
23123
0
    t_info.tm_isdst = entry_getdst(argv[0]);
23124
23125
0
    if (argc >= 2 && janet_truthy(argv[1])) {
23126
        /* local time */
23127
0
        t = mktime(&t_info);
23128
0
    } else {
23129
        /* utc time */
23130
#ifdef JANET_NO_UTC_MKTIME
23131
        janet_panic("os/mktime UTC not supported on this platform");
23132
#else
23133
0
        t = timegm(&t_info);
23134
0
#endif
23135
0
    }
23136
23137
0
    if (t == (time_t) -1) {
23138
0
        janet_panicf("%s", janet_strerror(errno));
23139
0
    }
23140
23141
0
    return janet_wrap_number((double)t);
23142
0
}
23143
23144
#ifdef JANET_NO_SYMLINKS
23145
#define j_symlink link
23146
#else
23147
0
#define j_symlink symlink
23148
#endif
23149
23150
JANET_CORE_FN(os_setlocale,
23151
              "(os/setlocale &opt locale category)",
23152
              "Set the system locale, which affects how dates and numbers are formatted. "
23153
              "Passing nil to locale will return the current locale. Category can be one of:\n\n"
23154
              " * :all (default)\n"
23155
              " * :collate\n"
23156
              " * :ctype\n"
23157
              " * :monetary\n"
23158
              " * :numeric\n"
23159
              " * :time\n\n"
23160
              "Returns the new locale if set successfully, otherwise nil. Note that this will affect "
23161
0
              "other functions such as `os/strftime` and even `printf`.") {
23162
0
    janet_arity(argc, 0, 2);
23163
0
    const char *locale_name = janet_optcstring(argv, argc, 0, NULL);
23164
0
    int category_int = LC_ALL;
23165
0
    if (argc > 1 && !janet_checktype(argv[1], JANET_NIL)) {
23166
0
        if (janet_keyeq(argv[1], "all")) {
23167
0
            category_int = LC_ALL;
23168
0
        } else if (janet_keyeq(argv[1], "collate")) {
23169
0
            category_int = LC_COLLATE;
23170
0
        } else if (janet_keyeq(argv[1], "ctype")) {
23171
0
            category_int = LC_CTYPE;
23172
0
        } else if (janet_keyeq(argv[1], "monetary")) {
23173
0
            category_int = LC_MONETARY;
23174
0
        } else if (janet_keyeq(argv[1], "numeric")) {
23175
0
            category_int = LC_NUMERIC;
23176
0
        } else if (janet_keyeq(argv[1], "time")) {
23177
0
            category_int = LC_TIME;
23178
0
        } else {
23179
0
            janet_panicf("expected one of :all, :collate, :ctype, :monetary, :numeric, or :time, got %v", argv[1]);
23180
0
        }
23181
0
    }
23182
0
    const char *old = setlocale(category_int, locale_name);
23183
0
    if (old == NULL) return janet_wrap_nil();
23184
0
    return janet_cstringv(old);
23185
0
}
23186
23187
JANET_CORE_FN(os_link,
23188
              "(os/link oldpath newpath &opt symlink)",
23189
              "Create a link at newpath that points to oldpath and returns nil. "
23190
              "Iff symlink is truthy, creates a symlink. "
23191
              "Iff symlink is falsey or not provided, "
23192
0
              "creates a hard link. Does not work on Windows.") {
23193
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23194
0
    janet_arity(argc, 2, 3);
23195
#ifdef JANET_WINDOWS
23196
    (void) argc;
23197
    (void) argv;
23198
    janet_panic("not supported on Windows");
23199
#else
23200
0
    const char *oldpath = janet_getcstring(argv, 0);
23201
0
    const char *newpath = janet_getcstring(argv, 1);
23202
0
    int res = ((argc == 3 && janet_truthy(argv[2])) ? j_symlink : link)(oldpath, newpath);
23203
0
    if (-1 == res) janet_panicf("%s: %s -> %s", janet_strerror(errno), oldpath, newpath);
23204
0
    return janet_wrap_nil();
23205
0
#endif
23206
0
}
23207
23208
JANET_CORE_FN(os_symlink,
23209
              "(os/symlink oldpath newpath)",
23210
0
              "Create a symlink from oldpath to newpath, returning nil. Same as `(os/link oldpath newpath true)`.") {
23211
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23212
0
    janet_fixarity(argc, 2);
23213
#ifdef JANET_WINDOWS
23214
    (void) argc;
23215
    (void) argv;
23216
    janet_panic("not supported on Windows");
23217
#else
23218
0
    const char *oldpath = janet_getcstring(argv, 0);
23219
0
    const char *newpath = janet_getcstring(argv, 1);
23220
0
    int res = j_symlink(oldpath, newpath);
23221
0
    if (-1 == res) janet_panicf("%s: %s -> %s", janet_strerror(errno), oldpath, newpath);
23222
0
    return janet_wrap_nil();
23223
0
#endif
23224
0
}
23225
23226
#undef j_symlink
23227
23228
JANET_CORE_FN(os_mkdir,
23229
              "(os/mkdir path)",
23230
              "Create a new directory. The path will be relative to the current directory if relative, otherwise "
23231
              "it will be an absolute path. Returns true if the directory was created, false if the directory already exists, and "
23232
0
              "errors otherwise.") {
23233
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23234
0
    janet_fixarity(argc, 1);
23235
0
    const char *path = janet_getcstring(argv, 0);
23236
#ifdef JANET_WINDOWS
23237
    int res = _mkdir(path);
23238
#else
23239
0
    int res = mkdir(path, S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IXOTH);
23240
0
#endif
23241
0
    if (res == 0) return janet_wrap_true();
23242
0
    if (errno == EEXIST) return janet_wrap_false();
23243
0
    janet_panicf("%s: %s", janet_strerror(errno), path);
23244
0
}
23245
23246
JANET_CORE_FN(os_rmdir,
23247
              "(os/rmdir path)",
23248
0
              "Delete a directory. The directory must be empty to succeed.") {
23249
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23250
0
    janet_fixarity(argc, 1);
23251
0
    const char *path = janet_getcstring(argv, 0);
23252
#ifdef JANET_WINDOWS
23253
    int res = _rmdir(path);
23254
#else
23255
0
    int res = rmdir(path);
23256
0
#endif
23257
0
    if (-1 == res) janet_panicf("%s: %s", janet_strerror(errno), path);
23258
0
    return janet_wrap_nil();
23259
0
}
23260
23261
JANET_CORE_FN(os_cd,
23262
              "(os/cd path)",
23263
0
              "Change current directory to path. Returns nil on success, errors on failure.") {
23264
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23265
0
    janet_fixarity(argc, 1);
23266
0
    const char *path = janet_getcstring(argv, 0);
23267
#ifdef JANET_WINDOWS
23268
    int res = _chdir(path);
23269
#else
23270
0
    int res = chdir(path);
23271
0
#endif
23272
0
    if (-1 == res) janet_panicf("%s: %s", janet_strerror(errno), path);
23273
0
    return janet_wrap_nil();
23274
0
}
23275
23276
JANET_CORE_FN(os_touch,
23277
              "(os/touch path &opt actime modtime)",
23278
              "Update the access time and modification times for a file. By default, sets "
23279
0
              "times to the current time.") {
23280
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23281
0
    janet_arity(argc, 1, 3);
23282
0
    const char *path = janet_getcstring(argv, 0);
23283
0
    struct utimbuf timebuf, *bufp;
23284
0
    if (argc >= 2) {
23285
0
        bufp = &timebuf;
23286
0
        timebuf.actime = (time_t) janet_getnumber(argv, 1);
23287
0
        if (argc >= 3) {
23288
0
            timebuf.modtime = (time_t) janet_getnumber(argv, 2);
23289
0
        } else {
23290
0
            timebuf.modtime = timebuf.actime;
23291
0
        }
23292
0
    } else {
23293
0
        bufp = NULL;
23294
0
    }
23295
0
    int res = utime(path, bufp);
23296
0
    if (-1 == res) janet_panic(janet_strerror(errno));
23297
0
    return janet_wrap_nil();
23298
0
}
23299
23300
JANET_CORE_FN(os_remove,
23301
              "(os/rm path)",
23302
0
              "Delete a file. Returns nil.") {
23303
0
    janet_fixarity(argc, 1);
23304
0
    const char *path = janet_getcstring(argv, 0);
23305
0
    int status = remove(path);
23306
0
    if (-1 == status) janet_panicf("%s: %s", janet_strerror(errno), path);
23307
0
    return janet_wrap_nil();
23308
0
}
23309
23310
#ifndef JANET_NO_SYMLINKS
23311
JANET_CORE_FN(os_readlink,
23312
              "(os/readlink path)",
23313
0
              "Read the contents of a symbolic link. Does not work on Windows.\n") {
23314
0
    janet_fixarity(argc, 1);
23315
#ifdef JANET_WINDOWS
23316
    (void) argc;
23317
    (void) argv;
23318
    janet_panic("not supported on Windows");
23319
#else
23320
0
    static char buffer[PATH_MAX];
23321
0
    const char *path = janet_getcstring(argv, 0);
23322
0
    ssize_t len = readlink(path, buffer, sizeof buffer);
23323
0
    if (len < 0 || (size_t)len >= sizeof buffer)
23324
0
        janet_panicf("%s: %s", janet_strerror(errno), path);
23325
0
    return janet_stringv((const uint8_t *)buffer, len);
23326
0
#endif
23327
0
}
23328
#endif
23329
23330
#ifdef JANET_WINDOWS
23331
23332
typedef struct _stat jstat_t;
23333
typedef unsigned short jmode_t;
23334
23335
static int32_t janet_perm_to_unix(unsigned short m) {
23336
    int32_t ret = 0;
23337
    if (m & S_IEXEC) ret |= 0111;
23338
    if (m & S_IWRITE) ret |= 0222;
23339
    if (m & S_IREAD) ret |= 0444;
23340
    return ret;
23341
}
23342
23343
static unsigned short janet_perm_from_unix(int32_t x) {
23344
    unsigned short m = 0;
23345
    if (x & 111) m |= S_IEXEC;
23346
    if (x & 222) m |= S_IWRITE;
23347
    if (x & 444) m |= S_IREAD;
23348
    return m;
23349
}
23350
23351
static const uint8_t *janet_decode_mode(unsigned short m) {
23352
    const char *str = "other";
23353
    if (m & _S_IFREG) str = "file";
23354
    else if (m & _S_IFDIR) str = "directory";
23355
    else if (m & _S_IFCHR) str = "character";
23356
    return janet_ckeyword(str);
23357
}
23358
23359
static int32_t janet_decode_permissions(jmode_t mode) {
23360
    return (int32_t)(mode & (S_IEXEC | S_IWRITE | S_IREAD));
23361
}
23362
23363
#else
23364
23365
typedef struct stat jstat_t;
23366
typedef mode_t jmode_t;
23367
23368
0
static int32_t janet_perm_to_unix(mode_t m) {
23369
0
    return (int32_t) m;
23370
0
}
23371
23372
0
static mode_t janet_perm_from_unix(int32_t x) {
23373
0
    return (mode_t) x;
23374
0
}
23375
23376
0
static const uint8_t *janet_decode_mode(mode_t m) {
23377
0
    const char *str = "other";
23378
0
    if (S_ISREG(m)) str = "file";
23379
0
    else if (S_ISDIR(m)) str = "directory";
23380
0
    else if (S_ISFIFO(m)) str = "fifo";
23381
0
    else if (S_ISBLK(m)) str = "block";
23382
0
    else if (S_ISSOCK(m)) str = "socket";
23383
0
    else if (S_ISLNK(m)) str = "link";
23384
0
    else if (S_ISCHR(m)) str = "character";
23385
0
    return janet_ckeyword(str);
23386
0
}
23387
23388
0
static int32_t janet_decode_permissions(jmode_t mode) {
23389
0
    return (int32_t)(mode & 0777);
23390
0
}
23391
23392
#endif
23393
23394
0
static int32_t os_parse_permstring(const uint8_t *perm) {
23395
0
    int32_t m = 0;
23396
0
    if (perm[0] == 'r') m |= 0400;
23397
0
    if (perm[1] == 'w') m |= 0200;
23398
0
    if (perm[2] == 'x') m |= 0100;
23399
0
    if (perm[3] == 'r') m |= 0040;
23400
0
    if (perm[4] == 'w') m |= 0020;
23401
0
    if (perm[5] == 'x') m |= 0010;
23402
0
    if (perm[6] == 'r') m |= 0004;
23403
0
    if (perm[7] == 'w') m |= 0002;
23404
0
    if (perm[8] == 'x') m |= 0001;
23405
0
    return m;
23406
0
}
23407
23408
0
static Janet os_make_permstring(int32_t permissions) {
23409
0
    uint8_t bytes[9] = {0};
23410
0
    bytes[0] = (permissions & 0400) ? 'r' : '-';
23411
0
    bytes[1] = (permissions & 0200) ? 'w' : '-';
23412
0
    bytes[2] = (permissions & 0100) ? 'x' : '-';
23413
0
    bytes[3] = (permissions & 0040) ? 'r' : '-';
23414
0
    bytes[4] = (permissions & 0020) ? 'w' : '-';
23415
0
    bytes[5] = (permissions & 0010) ? 'x' : '-';
23416
0
    bytes[6] = (permissions & 0004) ? 'r' : '-';
23417
0
    bytes[7] = (permissions & 0002) ? 'w' : '-';
23418
0
    bytes[8] = (permissions & 0001) ? 'x' : '-';
23419
0
    return janet_stringv(bytes, sizeof(bytes));
23420
0
}
23421
23422
0
static int32_t os_get_unix_mode(const Janet *argv, int32_t n) {
23423
0
    int32_t unix_mode;
23424
0
    if (janet_checkint(argv[n])) {
23425
        /* Integer mode */
23426
0
        int32_t x = janet_unwrap_integer(argv[n]);
23427
0
        if (x < 0 || x > 0777) {
23428
0
            janet_panicf("bad slot #%d, expected integer in range [0, 8r777], got %v", n, argv[n]);
23429
0
        }
23430
0
        unix_mode = x;
23431
0
    } else {
23432
        /* Bytes mode */
23433
0
        JanetByteView bytes = janet_getbytes(argv, n);
23434
0
        if (bytes.len != 9) {
23435
0
            janet_panicf("bad slot #%d: expected byte sequence of length 9, got %v", n, argv[n]);
23436
0
        }
23437
0
        unix_mode = os_parse_permstring(bytes.bytes);
23438
0
    }
23439
0
    return unix_mode;
23440
0
}
23441
23442
0
static jmode_t os_getmode(const Janet *argv, int32_t n) {
23443
0
    return janet_perm_from_unix(os_get_unix_mode(argv, n));
23444
0
}
23445
23446
/* Getters */
23447
0
static Janet os_stat_dev(jstat_t *st) {
23448
0
    return janet_wrap_number(st->st_dev);
23449
0
}
23450
0
static Janet os_stat_inode(jstat_t *st) {
23451
0
    return janet_wrap_number(st->st_ino);
23452
0
}
23453
0
static Janet os_stat_mode(jstat_t *st) {
23454
0
    return janet_wrap_keyword(janet_decode_mode(st->st_mode));
23455
0
}
23456
0
static Janet os_stat_int_permissions(jstat_t *st) {
23457
0
    return janet_wrap_integer(janet_perm_to_unix(janet_decode_permissions(st->st_mode)));
23458
0
}
23459
0
static Janet os_stat_permissions(jstat_t *st) {
23460
0
    return os_make_permstring(janet_perm_to_unix(janet_decode_permissions(st->st_mode)));
23461
0
}
23462
0
static Janet os_stat_uid(jstat_t *st) {
23463
0
    return janet_wrap_number(st->st_uid);
23464
0
}
23465
0
static Janet os_stat_gid(jstat_t *st) {
23466
0
    return janet_wrap_number(st->st_gid);
23467
0
}
23468
0
static Janet os_stat_nlink(jstat_t *st) {
23469
0
    return janet_wrap_number(st->st_nlink);
23470
0
}
23471
0
static Janet os_stat_rdev(jstat_t *st) {
23472
0
    return janet_wrap_number(st->st_rdev);
23473
0
}
23474
0
static Janet os_stat_size(jstat_t *st) {
23475
0
    return janet_wrap_number(st->st_size);
23476
0
}
23477
0
static Janet os_stat_accessed(jstat_t *st) {
23478
0
    return janet_wrap_number((double) st->st_atime);
23479
0
}
23480
0
static Janet os_stat_modified(jstat_t *st) {
23481
0
    return janet_wrap_number((double) st->st_mtime);
23482
0
}
23483
0
static Janet os_stat_changed(jstat_t *st) {
23484
0
    return janet_wrap_number((double) st->st_ctime);
23485
0
}
23486
#ifdef JANET_WINDOWS
23487
static Janet os_stat_blocks(jstat_t *st) {
23488
    (void) st;
23489
    return janet_wrap_number(0);
23490
}
23491
static Janet os_stat_blocksize(jstat_t *st) {
23492
    (void) st;
23493
    return janet_wrap_number(0);
23494
}
23495
#else
23496
0
static Janet os_stat_blocks(jstat_t *st) {
23497
0
    return janet_wrap_number(st->st_blocks);
23498
0
}
23499
0
static Janet os_stat_blocksize(jstat_t *st) {
23500
0
    return janet_wrap_number(st->st_blksize);
23501
0
}
23502
#endif
23503
23504
struct OsStatGetter {
23505
    const char *name;
23506
    Janet(*fn)(jstat_t *st);
23507
};
23508
23509
static const struct OsStatGetter os_stat_getters[] = {
23510
    {"dev", os_stat_dev},
23511
    {"inode", os_stat_inode},
23512
    {"mode", os_stat_mode},
23513
    {"int-permissions", os_stat_int_permissions},
23514
    {"permissions", os_stat_permissions},
23515
    {"uid", os_stat_uid},
23516
    {"gid", os_stat_gid},
23517
    {"nlink", os_stat_nlink},
23518
    {"rdev", os_stat_rdev},
23519
    {"size", os_stat_size},
23520
    {"blocks", os_stat_blocks},
23521
    {"blocksize", os_stat_blocksize},
23522
    {"accessed", os_stat_accessed},
23523
    {"modified", os_stat_modified},
23524
    {"changed", os_stat_changed},
23525
    {NULL, NULL}
23526
};
23527
23528
0
static Janet os_stat_or_lstat(int do_lstat, int32_t argc, Janet *argv) {
23529
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23530
0
    janet_arity(argc, 1, 2);
23531
0
    const char *path = janet_getcstring(argv, 0);
23532
0
    JanetTable *tab = NULL;
23533
0
    const uint8_t *key = NULL;
23534
0
    if (argc == 2) {
23535
0
        if (janet_checktype(argv[1], JANET_KEYWORD)) {
23536
0
            key = janet_getkeyword(argv, 1);
23537
0
        } else {
23538
0
            tab = janet_gettable(argv, 1);
23539
0
        }
23540
0
    } else {
23541
0
        tab = janet_table(0);
23542
0
    }
23543
23544
    /* Build result */
23545
0
    jstat_t st;
23546
#ifdef JANET_WINDOWS
23547
    (void) do_lstat;
23548
    int res = _stat(path, &st);
23549
#else
23550
0
    int res;
23551
0
    if (do_lstat) {
23552
0
        res = lstat(path, &st);
23553
0
    } else {
23554
0
        res = stat(path, &st);
23555
0
    }
23556
0
#endif
23557
0
    if (-1 == res) {
23558
0
        return janet_wrap_nil();
23559
0
    }
23560
23561
0
    if (NULL == key) {
23562
        /* Put results in table */
23563
0
        for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; sg++) {
23564
0
            janet_table_put(tab, janet_ckeywordv(sg->name), sg->fn(&st));
23565
0
        }
23566
0
        return janet_wrap_table(tab);
23567
0
    } else {
23568
        /* Get one result */
23569
0
        for (const struct OsStatGetter *sg = os_stat_getters; sg->name != NULL; sg++) {
23570
0
            if (janet_cstrcmp(key, sg->name)) continue;
23571
0
            return sg->fn(&st);
23572
0
        }
23573
0
        janet_panicf("unexpected keyword %v", janet_wrap_keyword(key));
23574
0
    }
23575
0
}
23576
23577
JANET_CORE_FN(os_stat,
23578
              "(os/stat path &opt tab|key)",
23579
              "Gets information about a file or directory. Returns a table if the second argument is a keyword, returns "
23580
              "only that information from stat. If the file or directory does not exist, returns nil. The keys are:\n\n"
23581
              "* :dev - the device that the file is on\n\n"
23582
              "* :mode - the type of file, one of :file, :directory, :block, :character, :fifo, :socket, :link, or :other\n\n"
23583
              "* :int-permissions - A Unix permission integer like 8r744\n\n"
23584
              "* :permissions - A Unix permission string like \"rwxr--r--\"\n\n"
23585
              "* :uid - File uid\n\n"
23586
              "* :gid - File gid\n\n"
23587
              "* :nlink - number of links to file\n\n"
23588
              "* :rdev - Real device of file. 0 on Windows\n\n"
23589
              "* :size - size of file in bytes\n\n"
23590
              "* :blocks - number of blocks in file. 0 on Windows\n\n"
23591
              "* :blocksize - size of blocks in file. 0 on Windows\n\n"
23592
              "* :accessed - timestamp when file last accessed\n\n"
23593
              "* :changed - timestamp when file last changed (permissions changed)\n\n"
23594
0
              "* :modified - timestamp when file last modified (content changed)\n") {
23595
0
    return os_stat_or_lstat(0, argc, argv);
23596
0
}
23597
23598
JANET_CORE_FN(os_lstat,
23599
              "(os/lstat path &opt tab|key)",
23600
0
              "Like os/stat, but don't follow symlinks.\n") {
23601
0
    return os_stat_or_lstat(1, argc, argv);
23602
0
}
23603
23604
JANET_CORE_FN(os_chmod,
23605
              "(os/chmod path mode)",
23606
              "Change file permissions, where `mode` is a permission string as returned by "
23607
              "`os/perm-string`, or an integer as returned by `os/perm-int`. "
23608
              "When `mode` is an integer, it is interpreted as a Unix permission value, best specified in octal, like "
23609
0
              "8r666 or 8r400. Windows will not differentiate between user, group, and other permissions, and thus will combine all of these permissions. Returns nil.") {
23610
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23611
0
    janet_fixarity(argc, 2);
23612
0
    const char *path = janet_getcstring(argv, 0);
23613
#ifdef JANET_WINDOWS
23614
    int res = _chmod(path, os_getmode(argv, 1));
23615
#else
23616
0
    int res = chmod(path, os_getmode(argv, 1));
23617
0
#endif
23618
0
    if (-1 == res) janet_panicf("%s: %s", janet_strerror(errno), path);
23619
0
    return janet_wrap_nil();
23620
0
}
23621
23622
#ifndef JANET_NO_UMASK
23623
JANET_CORE_FN(os_umask,
23624
              "(os/umask mask)",
23625
0
              "Set a new umask, returns the old umask.") {
23626
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23627
0
    janet_fixarity(argc, 1);
23628
0
    int mask = (int) os_getmode(argv, 0);
23629
#ifdef JANET_WINDOWS
23630
    int res = _umask(mask);
23631
#else
23632
0
    int res = umask(mask);
23633
0
#endif
23634
0
    return janet_wrap_integer(janet_perm_to_unix(res));
23635
0
}
23636
#endif
23637
23638
JANET_CORE_FN(os_dir,
23639
              "(os/dir dir &opt array)",
23640
              "Iterate over files and subdirectories in a directory. Returns an array of paths parts, "
23641
0
              "with only the file name or directory name and no prefix.") {
23642
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23643
0
    janet_arity(argc, 1, 2);
23644
0
    const char *dir = janet_getcstring(argv, 0);
23645
0
    JanetArray *paths = (argc == 2) ? janet_getarray(argv, 1) : janet_array(0);
23646
#ifdef JANET_WINDOWS
23647
    /* Read directory items with FindFirstFile / FindNextFile / FindClose */
23648
    struct _finddata_t afile;
23649
    char pattern[MAX_PATH + 1];
23650
    if (strlen(dir) > (sizeof(pattern) - 3))
23651
        janet_panicf("path too long: %s", dir);
23652
    sprintf(pattern, "%s/*", dir);
23653
    intptr_t res = _findfirst(pattern, &afile);
23654
    if (-1 == res) janet_panicv(janet_cstringv(janet_strerror(errno)));
23655
    do {
23656
        if (strcmp(".", afile.name) && strcmp("..", afile.name)) {
23657
            janet_array_push(paths, janet_cstringv(afile.name));
23658
        }
23659
    } while (_findnext(res, &afile) != -1);
23660
    _findclose(res);
23661
#else
23662
    /* Read directory items with opendir / readdir / closedir */
23663
0
    struct dirent *dp;
23664
0
    DIR *dfd = opendir(dir);
23665
0
    if (dfd == NULL) janet_panicf("cannot open directory %s: %s", dir, janet_strerror(errno));
23666
0
    for (;;) {
23667
0
        errno = 0;
23668
0
        dp = readdir(dfd);
23669
0
        if (dp == NULL) {
23670
0
            if (errno) {
23671
0
                int olderr = errno;
23672
0
                closedir(dfd);
23673
0
                janet_panicf("failed to read directory %s: %s", dir, janet_strerror(olderr));
23674
0
            }
23675
0
            break;
23676
0
        }
23677
0
        if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) {
23678
0
            continue;
23679
0
        }
23680
0
        janet_array_push(paths, janet_cstringv(dp->d_name));
23681
0
    }
23682
0
    closedir(dfd);
23683
0
#endif
23684
0
    return janet_wrap_array(paths);
23685
0
}
23686
23687
JANET_CORE_FN(os_rename,
23688
              "(os/rename oldname newname)",
23689
0
              "Rename a file on disk to a new path. Returns nil.") {
23690
0
    janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23691
0
    janet_fixarity(argc, 2);
23692
0
    const char *src = janet_getcstring(argv, 0);
23693
0
    const char *dest = janet_getcstring(argv, 1);
23694
0
    int status = rename(src, dest);
23695
0
    if (status) {
23696
0
        janet_panic(janet_strerror(errno));
23697
0
    }
23698
0
    return janet_wrap_nil();
23699
0
}
23700
23701
JANET_CORE_FN(os_realpath,
23702
              "(os/realpath path)",
23703
              "Get the absolute path for a given path, following ../, ./, and symlinks. "
23704
0
              "Returns an absolute path as a string.") {
23705
0
    janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23706
0
    janet_fixarity(argc, 1);
23707
0
    const char *src = janet_getcstring(argv, 0);
23708
#ifdef JANET_NO_REALPATH
23709
    janet_panic("os/realpath not enabled for this platform");
23710
#else
23711
#ifdef JANET_WINDOWS
23712
    char *dest = _fullpath(NULL, src, _MAX_PATH);
23713
#else
23714
0
    char *dest = realpath(src, NULL);
23715
0
#endif
23716
0
    if (NULL == dest) janet_panicf("%s: %s", janet_strerror(errno), src);
23717
0
    Janet ret = janet_cstringv(dest);
23718
0
    janet_free(dest);
23719
0
    return ret;
23720
0
#endif
23721
0
}
23722
23723
JANET_CORE_FN(os_permission_string,
23724
              "(os/perm-string int)",
23725
              "Convert a Unix octal permission value from a permission integer as returned by `os/stat` "
23726
              "to a human readable string, that follows the formatting "
23727
              "of Unix tools like `ls`. Returns the string as a 9-character string of r, w, x and - characters. Does not "
23728
0
              "include the file/directory/symlink character as rendered by `ls`.") {
23729
0
    janet_fixarity(argc, 1);
23730
0
    return os_make_permstring(os_get_unix_mode(argv, 0));
23731
0
}
23732
23733
JANET_CORE_FN(os_permission_int,
23734
              "(os/perm-int bytes)",
23735
0
              "Parse a 9-character permission string and return an integer that can be used by chmod.") {
23736
0
    janet_fixarity(argc, 1);
23737
0
    return janet_wrap_integer(os_get_unix_mode(argv, 0));
23738
0
}
23739
23740
#ifdef JANET_EV
23741
23742
/*
23743
 * Define a few functions on streams the require JANET_EV to be defined.
23744
 */
23745
23746
0
static jmode_t os_optmode(int32_t argc, const Janet *argv, int32_t n, int32_t dflt) {
23747
0
    if (argc > n) return os_getmode(argv, n);
23748
0
    return janet_perm_from_unix(dflt);
23749
0
}
23750
23751
JANET_CORE_FN(os_open,
23752
              "(os/open path &opt flags mode)",
23753
              "Create a stream from a file, like the POSIX open system call. Returns a new stream. "
23754
              "`mode` should be a file mode as passed to `os/chmod`, but only if the create flag is given. "
23755
              "The default mode is 8r666. "
23756
              "Allowed flags are as follows:\n\n"
23757
              "  * :r - open this file for reading\n"
23758
              "  * :w - open this file for writing\n"
23759
              "  * :c - create a new file (O\\_CREATE)\n"
23760
              "  * :e - fail if the file exists (O\\_EXCL)\n"
23761
              "  * :t - shorten an existing file to length 0 (O\\_TRUNC)\n\n"
23762
              "Posix-only flags:\n\n"
23763
              "  * :a - append to a file (O\\_APPEND)\n"
23764
              "  * :x - O\\_SYNC\n"
23765
              "  * :C - O\\_NOCTTY\n\n"
23766
              "Windows-only flags:\n\n"
23767
              "  * :R - share reads (FILE\\_SHARE\\_READ)\n"
23768
              "  * :W - share writes (FILE\\_SHARE\\_WRITE)\n"
23769
              "  * :D - share deletes (FILE\\_SHARE\\_DELETE)\n"
23770
              "  * :H - FILE\\_ATTRIBUTE\\_HIDDEN\n"
23771
              "  * :O - FILE\\_ATTRIBUTE\\_READONLY\n"
23772
              "  * :F - FILE\\_ATTRIBUTE\\_OFFLINE\n"
23773
              "  * :T - FILE\\_ATTRIBUTE\\_TEMPORARY\n"
23774
              "  * :d - FILE\\_FLAG\\_DELETE\\_ON\\_CLOSE\n"
23775
0
              "  * :b - FILE\\_FLAG\\_NO\\_BUFFERING\n") {
23776
0
    janet_arity(argc, 1, 3);
23777
0
    const char *path = janet_getcstring(argv, 0);
23778
0
    const uint8_t *opt_flags = janet_optkeyword(argv, argc, 1, (const uint8_t *) "r");
23779
0
    jmode_t mode = os_optmode(argc, argv, 2, 0666);
23780
0
    uint32_t stream_flags = 0;
23781
0
    JanetHandle fd;
23782
#ifdef JANET_WINDOWS
23783
    (void) mode;
23784
    DWORD desiredAccess = 0;
23785
    DWORD shareMode = 0;
23786
    DWORD creationDisp = 0;
23787
    DWORD flagsAndAttributes = FILE_FLAG_OVERLAPPED;
23788
    /* We map unix-like open flags to the creationDisp parameter */
23789
    int creatUnix = 0;
23790
#define OCREAT 1
23791
#define OEXCL 2
23792
#define OTRUNC 4
23793
    for (const uint8_t *c = opt_flags; *c; c++) {
23794
        switch (*c) {
23795
            default:
23796
                break;
23797
            case 'r':
23798
                desiredAccess |= GENERIC_READ;
23799
                stream_flags |= JANET_STREAM_READABLE;
23800
                janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23801
                break;
23802
            case 'w':
23803
                desiredAccess |= GENERIC_WRITE;
23804
                stream_flags |= JANET_STREAM_WRITABLE;
23805
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23806
                break;
23807
            case 'c':
23808
                creatUnix |= OCREAT;
23809
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23810
                break;
23811
            case 'e':
23812
                creatUnix |= OEXCL;
23813
                break;
23814
            case 't':
23815
                creatUnix |= OTRUNC;
23816
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23817
                break;
23818
            /* Windows only flags */
23819
            case 'D':
23820
                shareMode |= FILE_SHARE_DELETE;
23821
                break;
23822
            case 'R':
23823
                shareMode |= FILE_SHARE_READ;
23824
                break;
23825
            case 'W':
23826
                shareMode |= FILE_SHARE_WRITE;
23827
                break;
23828
            case 'H':
23829
                flagsAndAttributes |= FILE_ATTRIBUTE_HIDDEN;
23830
                break;
23831
            case 'O':
23832
                flagsAndAttributes |= FILE_ATTRIBUTE_READONLY;
23833
                break;
23834
            case 'F':
23835
                flagsAndAttributes |= FILE_ATTRIBUTE_OFFLINE;
23836
                break;
23837
            case 'T':
23838
                flagsAndAttributes |= FILE_ATTRIBUTE_TEMPORARY;
23839
                break;
23840
            case 'd':
23841
                flagsAndAttributes |= FILE_FLAG_DELETE_ON_CLOSE;
23842
                break;
23843
            case 'b':
23844
                flagsAndAttributes |= FILE_FLAG_NO_BUFFERING;
23845
                break;
23846
                /* we could potentially add more here -
23847
                 * https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea
23848
                 */
23849
        }
23850
    }
23851
    switch (creatUnix) {
23852
        default:
23853
            janet_panic("invalid creation flags");
23854
        case 0:
23855
            creationDisp = OPEN_EXISTING;
23856
            break;
23857
        case OCREAT:
23858
            creationDisp = OPEN_ALWAYS;
23859
            break;
23860
        case OCREAT + OEXCL:
23861
            creationDisp = CREATE_NEW;
23862
            break;
23863
        case OCREAT + OTRUNC:
23864
            creationDisp = CREATE_ALWAYS;
23865
            break;
23866
        case OTRUNC:
23867
            creationDisp = TRUNCATE_EXISTING;
23868
            break;
23869
    }
23870
    fd = CreateFileA(path, desiredAccess, shareMode, NULL, creationDisp, flagsAndAttributes, NULL);
23871
    if (fd == INVALID_HANDLE_VALUE) janet_panicv(janet_ev_lasterr());
23872
#else
23873
0
    int open_flags = O_NONBLOCK;
23874
0
#ifdef JANET_LINUX
23875
0
    open_flags |= O_CLOEXEC;
23876
0
#endif
23877
0
    int read_flag = 0;
23878
0
    int write_flag = 0;
23879
0
    for (const uint8_t *c = opt_flags; *c; c++) {
23880
0
        switch (*c) {
23881
0
            default:
23882
0
                break;
23883
0
            case 'r':
23884
0
                read_flag = 1;
23885
0
                stream_flags |= JANET_STREAM_READABLE;
23886
0
                janet_sandbox_assert(JANET_SANDBOX_FS_READ);
23887
0
                break;
23888
0
            case 'w':
23889
0
                write_flag = 1;
23890
0
                stream_flags |= JANET_STREAM_WRITABLE;
23891
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23892
0
                break;
23893
0
            case 'c':
23894
0
                open_flags |= O_CREAT;
23895
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23896
0
                break;
23897
0
            case 'e':
23898
0
                open_flags |= O_EXCL;
23899
0
                break;
23900
0
            case 't':
23901
0
                open_flags |= O_TRUNC;
23902
0
                janet_sandbox_assert(JANET_SANDBOX_FS_WRITE);
23903
0
                break;
23904
            /* posix only */
23905
0
            case 'x':
23906
0
                open_flags |= O_SYNC;
23907
0
                break;
23908
0
            case 'C':
23909
0
                open_flags |= O_NOCTTY;
23910
0
                break;
23911
0
            case 'a':
23912
0
                open_flags |= O_APPEND;
23913
0
                break;
23914
0
        }
23915
0
    }
23916
    /* If both read and write, fix up to O_RDWR */
23917
0
    if (read_flag && !write_flag) {
23918
0
        open_flags |= O_RDONLY;
23919
0
    } else if (write_flag && !read_flag) {
23920
0
        open_flags |= O_WRONLY;
23921
0
    } else {
23922
0
        open_flags |= O_RDWR;
23923
0
    }
23924
23925
0
    do {
23926
0
        fd = open(path, open_flags, mode);
23927
0
    } while (fd == -1 && errno == EINTR);
23928
0
    if (fd == -1) janet_panicv(janet_ev_lasterr());
23929
0
#endif
23930
0
    return janet_wrap_abstract(janet_stream(fd, stream_flags, NULL));
23931
0
}
23932
23933
JANET_CORE_FN(os_pipe,
23934
              "(os/pipe &opt flags)",
23935
              "Create a readable stream and a writable stream that are connected. Returns a two-element "
23936
              "tuple where the first element is a readable stream and the second element is the writable "
23937
              "stream. `flags` is a keyword set of flags to disable non-blocking settings on the ends of the pipe. "
23938
              "This may be desired if passing the pipe to a subprocess with `os/spawn`.\n\n"
23939
              "* :W - sets the writable end of the pipe to a blocking stream.\n"
23940
              "* :R - sets the readable end of the pipe to a blocking stream.\n\n"
23941
0
              "By default, both ends of the pipe are non-blocking for use with the `ev` module.") {
23942
0
    (void) argv;
23943
0
    janet_arity(argc, 0, 1);
23944
0
    JanetHandle fds[2];
23945
0
    int flags = 0;
23946
0
    if (argc > 0 && !janet_checktype(argv[0], JANET_NIL)) {
23947
0
        flags = (int) janet_getflags(argv, 0, "WR");
23948
0
    }
23949
0
    if (janet_make_pipe(fds, flags)) janet_panicv(janet_ev_lasterr());
23950
0
    JanetStream *reader = janet_stream(fds[0], (flags & 2) ? 0 : JANET_STREAM_READABLE, NULL);
23951
0
    JanetStream *writer = janet_stream(fds[1], (flags & 1) ? 0 : JANET_STREAM_WRITABLE, NULL);
23952
0
    Janet tup[2] = {janet_wrap_abstract(reader), janet_wrap_abstract(writer)};
23953
0
    return janet_wrap_tuple(janet_tuple_n(tup, 2));
23954
0
}
23955
23956
#endif
23957
23958
#endif /* JANET_REDUCED_OS */
23959
23960
/* Module entry point */
23961
0
void janet_lib_os(JanetTable *env) {
23962
#if !defined(JANET_REDUCED_OS) && defined(JANET_WINDOWS) && defined(JANET_THREADS)
23963
    /* During start up, the top-most abstract machine (thread)
23964
     * in the thread tree sets up the critical section. */
23965
    static volatile long env_lock_initializing = 0;
23966
    static volatile long env_lock_initialized = 0;
23967
    if (!InterlockedExchange(&env_lock_initializing, 1)) {
23968
        InitializeCriticalSection(&env_lock);
23969
        InterlockedOr(&env_lock_initialized, 1);
23970
    } else {
23971
        while (!InterlockedOr(&env_lock_initialized, 0)) {
23972
            Sleep(0);
23973
        }
23974
    }
23975
23976
#endif
23977
0
#ifndef JANET_NO_PROCESSES
23978
0
#endif
23979
0
    JanetRegExt os_cfuns[] = {
23980
0
        JANET_CORE_REG("os/exit", os_exit),
23981
0
        JANET_CORE_REG("os/which", os_which),
23982
0
        JANET_CORE_REG("os/arch", os_arch),
23983
0
        JANET_CORE_REG("os/compiler", os_compiler),
23984
0
#ifndef JANET_REDUCED_OS
23985
23986
        /* misc (un-sandboxed) */
23987
0
        JANET_CORE_REG("os/cpu-count", os_cpu_count),
23988
0
        JANET_CORE_REG("os/cwd", os_cwd),
23989
0
        JANET_CORE_REG("os/cryptorand", os_cryptorand),
23990
0
        JANET_CORE_REG("os/perm-string", os_permission_string),
23991
0
        JANET_CORE_REG("os/perm-int", os_permission_int),
23992
0
        JANET_CORE_REG("os/mktime", os_mktime),
23993
0
        JANET_CORE_REG("os/time", os_time), /* not high resolution */
23994
0
        JANET_CORE_REG("os/date", os_date), /* not high resolution */
23995
0
        JANET_CORE_REG("os/strftime", os_strftime),
23996
0
        JANET_CORE_REG("os/sleep", os_sleep),
23997
0
        JANET_CORE_REG("os/isatty", os_isatty),
23998
0
        JANET_CORE_REG("os/setlocale", os_setlocale),
23999
24000
        /* env functions */
24001
0
        JANET_CORE_REG("os/environ", os_environ),
24002
0
        JANET_CORE_REG("os/getenv", os_getenv),
24003
0
        JANET_CORE_REG("os/setenv", os_setenv),
24004
24005
        /* fs read */
24006
0
        JANET_CORE_REG("os/dir", os_dir),
24007
0
        JANET_CORE_REG("os/stat", os_stat),
24008
0
        JANET_CORE_REG("os/lstat", os_lstat),
24009
0
        JANET_CORE_REG("os/chmod", os_chmod),
24010
0
        JANET_CORE_REG("os/touch", os_touch),
24011
0
        JANET_CORE_REG("os/realpath", os_realpath),
24012
0
        JANET_CORE_REG("os/cd", os_cd),
24013
0
        JANET_CORE_REG("os/posix-chroot", os_posix_chroot),
24014
0
#ifndef JANET_NO_UMASK
24015
0
        JANET_CORE_REG("os/umask", os_umask),
24016
0
#endif
24017
0
#ifndef JANET_NO_SYMLINKS
24018
0
        JANET_CORE_REG("os/readlink", os_readlink),
24019
0
#endif
24020
24021
        /* fs write */
24022
0
        JANET_CORE_REG("os/mkdir", os_mkdir),
24023
0
        JANET_CORE_REG("os/rmdir", os_rmdir),
24024
0
        JANET_CORE_REG("os/rm", os_remove),
24025
0
        JANET_CORE_REG("os/link", os_link),
24026
0
        JANET_CORE_REG("os/rename", os_rename),
24027
0
#ifndef JANET_NO_SYMLINKS
24028
0
        JANET_CORE_REG("os/symlink", os_symlink),
24029
0
#endif
24030
24031
        /* processes */
24032
0
#ifndef JANET_NO_PROCESSES
24033
0
        JANET_CORE_REG("os/execute", os_execute),
24034
0
        JANET_CORE_REG("os/spawn", os_spawn),
24035
0
        JANET_CORE_REG("os/shell", os_shell),
24036
0
        JANET_CORE_REG("os/posix-fork", os_posix_fork),
24037
0
        JANET_CORE_REG("os/posix-exec", os_posix_exec),
24038
        /* no need to sandbox process management if you can't create processes
24039
         * (allows for limited functionality if use exposes C-functions to create specific processes) */
24040
0
        JANET_CORE_REG("os/proc-wait", os_proc_wait),
24041
0
        JANET_CORE_REG("os/proc-kill", os_proc_kill),
24042
0
        JANET_CORE_REG("os/proc-close", os_proc_close),
24043
0
        JANET_CORE_REG("os/getpid", os_proc_getpid),
24044
0
#ifdef JANET_EV
24045
0
        JANET_CORE_REG("os/sigaction", os_sigaction),
24046
0
#endif
24047
0
#endif
24048
24049
        /* high resolution timers */
24050
0
        JANET_CORE_REG("os/clock", os_clock),
24051
24052
0
#ifdef JANET_EV
24053
0
        JANET_CORE_REG("os/open", os_open), /* fs read and write */
24054
0
        JANET_CORE_REG("os/pipe", os_pipe),
24055
0
#endif
24056
0
#endif
24057
0
        JANET_REG_END
24058
0
    };
24059
0
    janet_core_cfuns_ext(env, NULL, os_cfuns);
24060
0
}
24061
24062
24063
/* src/core/parse.c */
24064
#line 0 "src/core/parse.c"
24065
24066
/*
24067
* Copyright (c) 2025 Calvin Rose
24068
*
24069
* Permission is hereby granted, free of charge, to any person obtaining a copy
24070
* of this software and associated documentation files (the "Software"), to
24071
* deal in the Software without restriction, including without limitation the
24072
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
24073
* sell copies of the Software, and to permit persons to whom the Software is
24074
* furnished to do so, subject to the following conditions:
24075
*
24076
* The above copyright notice and this permission notice shall be included in
24077
* all copies or substantial portions of the Software.
24078
*
24079
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24080
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24081
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24082
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24083
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24084
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24085
* IN THE SOFTWARE.
24086
*/
24087
24088
#ifndef JANET_AMALG
24089
#include "features.h"
24090
#include <janet.h>
24091
#include "util.h"
24092
#endif
24093
24094
0
#define JANET_PARSER_DEAD 0x1
24095
275
#define JANET_PARSER_GENERATED_ERROR 0x2
24096
24097
/* Check if a character is whitespace */
24098
2.58M
static int is_whitespace(uint8_t c) {
24099
2.58M
    return c == ' '
24100
2.55M
           || c == '\t'
24101
2.51M
           || c == '\n'
24102
2.50M
           || c == '\r'
24103
2.49M
           || c == '\0'
24104
2.28M
           || c == '\v'
24105
2.21M
           || c == '\f';
24106
2.58M
}
24107
24108
/* Code generated by tools/symcharsgen.c.
24109
 * The table contains 256 bits, where each bit is 1
24110
 * if the corresponding ascii code is a symbol char, and 0
24111
 * if not. The upper characters are also considered symbol
24112
 * chars and are then checked for utf-8 compliance. */
24113
static const uint32_t symchars[8] = {
24114
    0x00000000, 0xf7ffec72, 0xc7ffffff, 0x07fffffe,
24115
    0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff
24116
};
24117
24118
/* Check if a character is a valid symbol character
24119
 * symbol chars are A-Z, a-z, 0-9, or one of !$&*+-./:<=>@\^_| */
24120
16.6M
int janet_is_symbol_char(uint8_t c) {
24121
16.6M
    return symchars[c >> 5] & ((uint32_t)1 << (c & 0x1F));
24122
16.6M
}
24123
24124
/* Validate some utf8. Useful for identifiers. Only validates
24125
 * the encoding, does not check for valid code points (they
24126
 * are less well defined than the encoding). */
24127
4.07k
int janet_valid_utf8(const uint8_t *str, int32_t len) {
24128
4.07k
    int32_t i = 0;
24129
4.07k
    int32_t j;
24130
2.73M
    while (i < len) {
24131
2.72M
        int32_t nexti;
24132
2.72M
        uint8_t c = str[i];
24133
24134
        /* Check the number of bytes in code point */
24135
2.72M
        if (c < 0x80) nexti = i + 1;
24136
7.16k
        else if ((c >> 5) == 0x06) nexti = i + 2;
24137
5.08k
        else if ((c >> 4) == 0x0E) nexti = i + 3;
24138
2.90k
        else if ((c >> 3) == 0x1E) nexti = i + 4;
24139
        /* Don't allow 5 or 6 byte code points */
24140
121
        else return 0;
24141
24142
        /* No overflow */
24143
2.72M
        if (nexti > len) return 0;
24144
24145
        /* Ensure trailing bytes are well formed (10XX XXXX) */
24146
2.74M
        for (j = i + 1; j < nexti; j++) {
24147
14.6k
            if ((str[j] >> 6) != 2) return 0;
24148
14.6k
        }
24149
24150
        /* Check for overlong encoding */
24151
2.72M
        if ((nexti == i + 2) && str[i] < 0xC2) return 0;
24152
2.72M
        if ((str[i] == 0xE0) && str[i + 1] < 0xA0) return 0;
24153
2.72M
        if ((str[i] == 0xF0) && str[i + 1] < 0x90) return 0;
24154
24155
2.72M
        i = nexti;
24156
2.72M
    }
24157
3.80k
    return 1;
24158
4.07k
}
24159
24160
/* Get hex digit from a letter */
24161
52.2k
static int to_hex(uint8_t c) {
24162
52.2k
    if (c >= '0' && c <= '9') {
24163
29.7k
        return c - '0';
24164
29.7k
    } else if (c >= 'A' && c <= 'F') {
24165
4.41k
        return 10 + c - 'A';
24166
18.0k
    } else if (c >= 'a' && c <= 'f') {
24167
17.9k
        return 10 + c - 'a';
24168
17.9k
    } else {
24169
87
        return -1;
24170
87
    }
24171
52.2k
}
24172
24173
typedef int (*Consumer)(JanetParser *p, JanetParseState *state, uint8_t c);
24174
struct JanetParseState {
24175
    int32_t counter;
24176
    int32_t argn;
24177
    int flags;
24178
    size_t line;
24179
    size_t column;
24180
    Consumer consumer;
24181
};
24182
24183
/* Define a stack on the main parser struct */
24184
#define DEF_PARSER_STACK(NAME, T, STACK, STACKCOUNT, STACKCAP) \
24185
60.6M
static void NAME(JanetParser *p, T x) { \
24186
60.6M
    size_t oldcount = p->STACKCOUNT; \
24187
60.6M
    size_t newcount = oldcount + 1; \
24188
60.6M
    if (newcount > p->STACKCAP) { \
24189
39.0k
        T *next; \
24190
39.0k
        size_t newcap = 2 * newcount; \
24191
39.0k
        next = janet_realloc(p->STACK, sizeof(T) * newcap); \
24192
39.0k
        if (NULL == next) { \
24193
0
            JANET_OUT_OF_MEMORY; \
24194
0
        } \
24195
39.0k
        p->STACK = next; \
24196
39.0k
        p->STACKCAP = newcap; \
24197
39.0k
    } \
24198
60.6M
    p->STACK[oldcount] = x; \
24199
60.6M
    p->STACKCOUNT = newcount; \
24200
60.6M
}
24201
24202
33.6M
DEF_PARSER_STACK(push_buf, uint8_t, buf, bufcount, bufcap)
24203
9.27M
DEF_PARSER_STACK(push_arg, Janet, args, argcount, argcap)
24204
17.7M
DEF_PARSER_STACK(_pushstate, JanetParseState, states, statecount, statecap)
24205
24206
#undef DEF_PARSER_STACK
24207
24208
16.4M
#define PFLAG_CONTAINER 0x100
24209
7.55M
#define PFLAG_BUFFER 0x200
24210
2.02M
#define PFLAG_PARENS 0x400
24211
540k
#define PFLAG_SQRBRACKETS 0x800
24212
4.62M
#define PFLAG_CURLYBRACKETS 0x1000
24213
5.08M
#define PFLAG_STRING 0x2000
24214
5.26M
#define PFLAG_LONGSTRING 0x4000
24215
4.43M
#define PFLAG_READERMAC 0x8000
24216
4.52M
#define PFLAG_ATSYM 0x10000
24217
432
#define PFLAG_COMMENT 0x20000
24218
2.21M
#define PFLAG_TOKEN 0x40000
24219
24220
17.7M
static void pushstate(JanetParser *p, Consumer consumer, int flags) {
24221
17.7M
    JanetParseState s;
24222
17.7M
    s.counter = 0;
24223
17.7M
    s.argn = 0;
24224
17.7M
    s.flags = flags;
24225
17.7M
    s.consumer = consumer;
24226
17.7M
    s.line = p->line;
24227
17.7M
    s.column = p->column;
24228
17.7M
    _pushstate(p, s);
24229
17.7M
}
24230
24231
9.27M
static void popstate(JanetParser *p, Janet val) {
24232
11.1M
    for (;;) {
24233
11.1M
        JanetParseState top = p->states[--p->statecount];
24234
11.1M
        JanetParseState *newtop = p->states + p->statecount - 1;
24235
        /* Source mapping info */
24236
11.1M
        if (janet_checktype(val, JANET_TUPLE)) {
24237
1.94M
            janet_tuple_sm_line(janet_unwrap_tuple(val)) = (int32_t) top.line;
24238
1.94M
            janet_tuple_sm_column(janet_unwrap_tuple(val)) = (int32_t) top.column;
24239
1.94M
        }
24240
11.1M
        if (newtop->flags & PFLAG_CONTAINER) {
24241
9.27M
            newtop->argn++;
24242
            /* Keep track of number of values in the root state */
24243
9.27M
            if (p->statecount == 1) {
24244
56.6k
                p->pending++;
24245
                /* Root items are always wrapped in a tuple for source map info. */
24246
56.6k
                const Janet *tup = janet_tuple_n(&val, 1);
24247
56.6k
                janet_tuple_sm_line(tup) = (int32_t) top.line;
24248
56.6k
                janet_tuple_sm_column(tup) = (int32_t) top.column;
24249
56.6k
                val = janet_wrap_tuple(tup);
24250
56.6k
            }
24251
9.27M
            push_arg(p, val);
24252
9.27M
            return;
24253
9.27M
        } else if (newtop->flags & PFLAG_READERMAC) {
24254
1.91M
            Janet *t = janet_tuple_begin(2);
24255
1.91M
            int c = newtop->flags & 0xFF;
24256
1.91M
            const char *which =
24257
1.91M
                (c == '\'') ? "quote" :
24258
1.91M
                (c == ',') ? "unquote" :
24259
1.90M
                (c == ';') ? "splice" :
24260
279k
                (c == '|') ? "short-fn" :
24261
14.3k
                (c == '~') ? "quasiquote" : "<unknown>";
24262
1.91M
            t[0] = janet_csymbolv(which);
24263
1.91M
            t[1] = val;
24264
            /* Quote source mapping info */
24265
1.91M
            janet_tuple_sm_line(t) = (int32_t) newtop->line;
24266
1.91M
            janet_tuple_sm_column(t) = (int32_t) newtop->column;
24267
1.91M
            val = janet_wrap_tuple(janet_tuple_end(t));
24268
1.91M
        } else {
24269
0
            return;
24270
0
        }
24271
11.1M
    }
24272
9.27M
}
24273
24274
275
static void delim_error(JanetParser *parser, size_t stack_index, char c, const char *msg) {
24275
275
    JanetParseState *s = parser->states + stack_index;
24276
275
    JanetBuffer *buffer = janet_buffer(40);
24277
275
    if (msg) {
24278
275
        janet_buffer_push_cstring(buffer, msg);
24279
275
    }
24280
275
    if (c) {
24281
275
        janet_buffer_push_u8(buffer, c);
24282
275
    }
24283
275
    if (stack_index > 0) {
24284
66
        janet_buffer_push_cstring(buffer, ", ");
24285
66
        if (s->flags & PFLAG_PARENS) {
24286
17
            janet_buffer_push_u8(buffer, '(');
24287
49
        } else if (s->flags & PFLAG_SQRBRACKETS) {
24288
13
            janet_buffer_push_u8(buffer, '[');
24289
36
        } else if (s->flags & PFLAG_CURLYBRACKETS) {
24290
12
            janet_buffer_push_u8(buffer, '{');
24291
24
        } else if (s->flags & PFLAG_STRING) {
24292
0
            janet_buffer_push_u8(buffer, '"');
24293
24
        } else if (s->flags & PFLAG_LONGSTRING) {
24294
0
            int32_t i;
24295
0
            for (i = 0; i < s->argn; i++) {
24296
0
                janet_buffer_push_u8(buffer, '`');
24297
0
            }
24298
0
        }
24299
66
        janet_formatb(buffer, " opened at line %d, column %d", (int32_t) s->line, (int32_t) s->column);
24300
66
    }
24301
275
    parser->error = (const char *) janet_string(buffer->data, buffer->count);
24302
275
    parser->flag |= JANET_PARSER_GENERATED_ERROR;
24303
275
}
24304
24305
76.6k
static int checkescape(uint8_t c) {
24306
76.6k
    switch (c) {
24307
7
        default:
24308
7
            return -1;
24309
1.06k
        case 'x':
24310
8.37k
        case 'u':
24311
11.9k
        case 'U':
24312
11.9k
            return 1;
24313
592
        case 'n':
24314
592
            return '\n';
24315
204
        case 't':
24316
204
            return '\t';
24317
203
        case 'r':
24318
203
            return '\r';
24319
432
        case '0':
24320
432
            return '\0';
24321
259
        case 'z':
24322
259
            return '\0';
24323
209
        case 'f':
24324
209
            return '\f';
24325
337
        case 'v':
24326
337
            return '\v';
24327
222
        case 'a':
24328
222
            return '\a';
24329
202
        case 'b':
24330
202
            return '\b';
24331
325
        case '\'':
24332
325
            return '\'';
24333
214
        case '?':
24334
214
            return '?';
24335
236
        case 'e':
24336
236
            return 27;
24337
824
        case '"':
24338
824
            return '"';
24339
60.4k
        case '\\':
24340
60.4k
            return '\\';
24341
76.6k
    }
24342
76.6k
}
24343
24344
/* Forward declare */
24345
static int stringchar(JanetParser *p, JanetParseState *state, uint8_t c);
24346
24347
10.7k
static void write_codepoint(JanetParser *p, int32_t codepoint) {
24348
10.7k
    if (codepoint <= 0x7F) {
24349
3.25k
        push_buf(p, (uint8_t) codepoint);
24350
7.50k
    } else if (codepoint <= 0x7FF) {
24351
2.62k
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x1F) | 0xC0);
24352
2.62k
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
24353
4.88k
    } else if (codepoint <= 0xFFFF) {
24354
2.02k
        push_buf(p, (uint8_t)((codepoint >> 12) & 0x0F) | 0xE0);
24355
2.02k
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x3F) | 0x80);
24356
2.02k
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
24357
2.86k
    } else {
24358
2.86k
        push_buf(p, (uint8_t)((codepoint >> 18) & 0x07) | 0xF0);
24359
2.86k
        push_buf(p, (uint8_t)((codepoint >> 12) & 0x3F) | 0x80);
24360
2.86k
        push_buf(p, (uint8_t)((codepoint >>  6) & 0x3F) | 0x80);
24361
2.86k
        push_buf(p, (uint8_t)((codepoint >>  0) & 0x3F) | 0x80);
24362
2.86k
    }
24363
10.7k
}
24364
24365
2.05k
static int escapeh(JanetParser *p, JanetParseState *state, uint8_t c) {
24366
2.05k
    int digit = to_hex(c);
24367
2.05k
    if (digit < 0) {
24368
40
        p->error = "invalid hex digit in hex escape";
24369
40
        return 1;
24370
40
    }
24371
2.01k
    state->argn = (state->argn << 4) + digit;
24372
2.01k
    state->counter--;
24373
2.01k
    if (!state->counter) {
24374
994
        push_buf(p, (uint8_t)(state->argn & 0xFF));
24375
994
        state->argn = 0;
24376
994
        state->consumer = stringchar;
24377
994
    }
24378
2.01k
    return 1;
24379
2.05k
}
24380
24381
50.1k
static int escapeu(JanetParser *p, JanetParseState *state, uint8_t c) {
24382
50.1k
    int digit = to_hex(c);
24383
50.1k
    if (digit < 0) {
24384
47
        p->error = "invalid hex digit in unicode escape";
24385
47
        return 1;
24386
47
    }
24387
50.1k
    state->argn = (state->argn << 4) + digit;
24388
50.1k
    state->counter--;
24389
50.1k
    if (!state->counter) {
24390
10.7k
        if (state->argn > 0x10FFFF) {
24391
3
            p->error = "invalid unicode codepoint";
24392
3
            return 1;
24393
3
        }
24394
10.7k
        write_codepoint(p, state->argn);
24395
10.7k
        state->argn = 0;
24396
10.7k
        state->consumer = stringchar;
24397
10.7k
    }
24398
50.1k
    return 1;
24399
50.1k
}
24400
24401
76.6k
static int escape1(JanetParser *p, JanetParseState *state, uint8_t c) {
24402
76.6k
    int e = checkescape(c);
24403
76.6k
    if (e < 0) {
24404
7
        p->error = "invalid string escape sequence";
24405
7
        return 1;
24406
7
    }
24407
76.6k
    if (c == 'x') {
24408
1.06k
        state->counter = 2;
24409
1.06k
        state->argn = 0;
24410
1.06k
        state->consumer = escapeh;
24411
75.5k
    } else if (c == 'u' || c == 'U') {
24412
10.8k
        state->counter = c == 'u' ? 4 : 6;
24413
10.8k
        state->argn = 0;
24414
10.8k
        state->consumer = escapeu;
24415
64.7k
    } else {
24416
64.7k
        push_buf(p, (uint8_t) e);
24417
64.7k
        state->consumer = stringchar;
24418
64.7k
    }
24419
76.6k
    return 1;
24420
76.6k
}
24421
24422
5.17M
static int stringend(JanetParser *p, JanetParseState *state) {
24423
5.17M
    Janet ret;
24424
5.17M
    uint8_t *bufstart = p->buf;
24425
5.17M
    int32_t buflen = (int32_t) p->bufcount;
24426
5.17M
    if (state->flags & PFLAG_LONGSTRING) {
24427
        /* Post process to remove leading whitespace */
24428
90.0k
        JanetParseState top = p->states[p->statecount - 1];
24429
90.0k
        int32_t indent_col = (int32_t) top.column - 1;
24430
90.0k
        uint8_t *r = bufstart, *end = r + buflen;
24431
        /* Unless there are only spaces before EOLs, disable reindenting */
24432
90.0k
        int reindent = 1;
24433
12.0M
        while (reindent && (r < end)) {
24434
11.9M
            if (*r++ == '\n') {
24435
16.0k
                for (int32_t j = 0; (r < end) && (*r != '\n') && (j < indent_col); j++, r++) {
24436
2.09k
                    if (*r != ' ') {
24437
1.55k
                        reindent = 0;
24438
1.55k
                        break;
24439
1.55k
                    }
24440
2.09k
                }
24441
15.4k
                if ((r + 1) < end && *r == '\r' && *(r + 1) == '\n') reindent = 1;
24442
15.4k
            }
24443
11.9M
        }
24444
        /* Now reindent if able */
24445
90.0k
        if (reindent) {
24446
88.9k
            uint8_t *w = bufstart;
24447
88.9k
            r = bufstart;
24448
11.9M
            while (r < end) {
24449
11.8M
                if (*r == '\n') {
24450
13.7k
                    *w++ = *r++;
24451
14.3k
                    for (int32_t j = 0; (r < end) && (*r != '\n') && (j < indent_col); j++, r++);
24452
13.7k
                    if ((r + 1) < end && *r == '\r' && *(r + 1) == '\n') *w++ = *r++;
24453
11.8M
                } else {
24454
11.8M
                    *w++ = *r++;
24455
11.8M
                }
24456
11.8M
            }
24457
88.9k
            buflen = (int32_t)(w - bufstart);
24458
88.9k
        }
24459
        /* Check for leading EOL so we can remove it */
24460
90.0k
        if (buflen > 1 && bufstart[0] == '\r' && bufstart[1] == '\n') { /* Windows EOL */
24461
1.08k
            buflen = buflen - 2;
24462
1.08k
            bufstart = bufstart + 2;
24463
88.9k
        } else if (buflen > 0 && bufstart[0] == '\n') { /* Unix EOL */
24464
1.51k
            buflen--;
24465
1.51k
            bufstart++;
24466
1.51k
        }
24467
        /* Check for trailing EOL so we can remove it */
24468
90.0k
        if (buflen > 1 && bufstart[buflen - 2] == '\r' && bufstart[buflen - 1] == '\n') { /* Windows EOL */
24469
1.16k
            buflen = buflen - 2;
24470
88.8k
        } else if (buflen > 0 && bufstart[buflen - 1] == '\n') { /* Unix EOL */
24471
909
            buflen--;
24472
909
        }
24473
90.0k
    }
24474
5.17M
    if (state->flags & PFLAG_BUFFER) {
24475
2.38M
        JanetBuffer *b = janet_buffer(buflen);
24476
2.38M
        janet_buffer_push_bytes(b, bufstart, buflen);
24477
2.38M
        ret = janet_wrap_buffer(b);
24478
2.78M
    } else {
24479
2.78M
        ret = janet_wrap_string(janet_string(bufstart, buflen));
24480
2.78M
    }
24481
5.17M
    p->bufcount = 0;
24482
5.17M
    popstate(p, ret);
24483
5.17M
    return 1;
24484
5.17M
}
24485
24486
10.8M
static int stringchar(JanetParser *p, JanetParseState *state, uint8_t c) {
24487
    /* Enter escape */
24488
10.8M
    if (c == '\\') {
24489
76.6k
        state->consumer = escape1;
24490
76.6k
        return 1;
24491
76.6k
    }
24492
    /* String end */
24493
10.7M
    if (c == '"') {
24494
5.08M
        return stringend(p, state);
24495
5.08M
    }
24496
    /* normal char */
24497
5.70M
    if (c != '\n' && c != '\r')
24498
5.69M
        push_buf(p, c);
24499
5.70M
    return 1;
24500
10.7M
}
24501
24502
/* Check for string equality in the buffer */
24503
6.28M
static int check_str_const(const char *cstr, const uint8_t *str, int32_t len) {
24504
6.28M
    int32_t index;
24505
6.49M
    for (index = 0; index < len; index++) {
24506
6.44M
        uint8_t c = str[index];
24507
6.44M
        uint8_t k = ((const uint8_t *)cstr)[index];
24508
6.44M
        if (c < k) return -1;
24509
769k
        if (c > k) return 1;
24510
212k
        if (k == '\0') break;
24511
212k
    }
24512
58.2k
    return (cstr[index] == '\0') ? 0 : -1;
24513
6.28M
}
24514
24515
14.4M
static int tokenchar(JanetParser *p, JanetParseState *state, uint8_t c) {
24516
14.4M
    Janet ret;
24517
14.4M
    double numval;
24518
14.4M
    int32_t blen;
24519
14.4M
    if (janet_is_symbol_char(c)) {
24520
12.2M
        push_buf(p, (uint8_t) c);
24521
12.2M
        if (c > 127) state->argn = 1; /* Use to indicate non ascii */
24522
12.2M
        return 1;
24523
12.2M
    }
24524
    /* Token finished */
24525
2.21M
    blen = (int32_t) p->bufcount;
24526
2.21M
    int start_dig = p->buf[0] >= '0' && p->buf[0] <= '9';
24527
2.21M
    int start_num = start_dig || p->buf[0] == '-' || p->buf[0] == '+' || p->buf[0] == '.';
24528
2.21M
    if (p->buf[0] == ':') {
24529
        /* Don't do full utf-8 check unless we have seen non ascii characters. */
24530
6.69k
        int valid = (!state->argn) || janet_valid_utf8(p->buf + 1, blen - 1);
24531
6.69k
        if (!valid) {
24532
61
            p->error = "invalid utf-8 in keyword";
24533
61
            return 0;
24534
61
        }
24535
6.63k
        ret = janet_keywordv(p->buf + 1, blen - 1);
24536
6.63k
#ifdef JANET_INT_TYPES
24537
2.20M
    } else if (start_num && !janet_scan_numeric(p->buf, blen, &ret)) {
24538
97.1k
        (void) numval;
24539
#else
24540
    } else if (start_num && !janet_scan_number(p->buf, blen, &numval)) {
24541
        ret = janet_wrap_number(numval);
24542
#endif
24543
2.10M
    } else if (!check_str_const("nil", p->buf, blen)) {
24544
20.0k
        ret = janet_wrap_nil();
24545
2.08M
    } else if (!check_str_const("false", p->buf, blen)) {
24546
783
        ret = janet_wrap_false();
24547
2.08M
    } else if (!check_str_const("true", p->buf, blen)) {
24548
29.2k
        ret = janet_wrap_true();
24549
2.05M
    } else {
24550
2.05M
        if (start_dig) {
24551
456
            p->error = "symbol literal cannot start with a digit";
24552
456
            return 0;
24553
2.05M
        } else {
24554
            /* Don't do full utf-8 check unless we have seen non ascii characters. */
24555
2.05M
            int valid = (!state->argn) || janet_valid_utf8(p->buf, blen);
24556
2.05M
            if (!valid) {
24557
212
                p->error = "invalid utf-8 in symbol";
24558
212
                return 0;
24559
212
            }
24560
2.05M
            ret = janet_symbolv(p->buf, blen);
24561
2.05M
        }
24562
2.05M
    }
24563
2.21M
    p->bufcount = 0;
24564
2.21M
    popstate(p, ret);
24565
2.21M
    return 0;
24566
2.21M
}
24567
24568
1.07M
static int comment(JanetParser *p, JanetParseState *state, uint8_t c) {
24569
1.07M
    (void) state;
24570
1.07M
    if (c == '\n') {
24571
344
        p->statecount--;
24572
344
        p->bufcount = 0;
24573
1.07M
    } else {
24574
1.07M
        push_buf(p, c);
24575
1.07M
    }
24576
1.07M
    return 1;
24577
1.07M
}
24578
24579
26.4k
static Janet close_tuple(JanetParser *p, JanetParseState *state, int32_t flag) {
24580
26.4k
    Janet *ret = janet_tuple_begin(state->argn);
24581
26.4k
    janet_tuple_flag(ret) |= flag;
24582
447k
    for (int32_t i = state->argn - 1; i >= 0; i--)
24583
420k
        ret[i] = p->args[--p->argcount];
24584
26.4k
    return janet_wrap_tuple(janet_tuple_end(ret));
24585
26.4k
}
24586
24587
4.63k
static Janet close_array(JanetParser *p, JanetParseState *state) {
24588
4.63k
    JanetArray *array = janet_array(state->argn);
24589
113k
    for (int32_t i = state->argn - 1; i >= 0; i--)
24590
109k
        array->data[i] = p->args[--p->argcount];
24591
4.63k
    array->count = state->argn;
24592
4.63k
    return janet_wrap_array(array);
24593
4.63k
}
24594
24595
1.75M
static Janet close_struct(JanetParser *p, JanetParseState *state) {
24596
1.75M
    JanetKV *st = janet_struct_begin(state->argn >> 1);
24597
3.71M
    for (size_t i = p->argcount - state->argn; i < p->argcount; i += 2) {
24598
1.95M
        Janet key = p->args[i];
24599
1.95M
        Janet value = p->args[i + 1];
24600
1.95M
        janet_struct_put(st, key, value);
24601
1.95M
    }
24602
1.75M
    p->argcount -= state->argn;
24603
1.75M
    return janet_wrap_struct(janet_struct_end(st));
24604
1.75M
}
24605
24606
106k
static Janet close_table(JanetParser *p, JanetParseState *state) {
24607
106k
    JanetTable *table = janet_table(state->argn >> 1);
24608
1.71M
    for (size_t i = p->argcount - state->argn; i < p->argcount; i += 2) {
24609
1.60M
        Janet key = p->args[i];
24610
1.60M
        Janet value = p->args[i + 1];
24611
1.60M
        janet_table_put(table, key, value);
24612
1.60M
    }
24613
106k
    p->argcount -= state->argn;
24614
106k
    return janet_wrap_table(table);
24615
106k
}
24616
24617
15.9M
#define PFLAG_INSTRING 0x100000
24618
2.20M
#define PFLAG_END_CANDIDATE 0x200000
24619
15.7M
static int longstring(JanetParser *p, JanetParseState *state, uint8_t c) {
24620
15.7M
    if (state->flags & PFLAG_INSTRING) {
24621
        /* We are inside the long string */
24622
13.6M
        if (c == '`') {
24623
99.2k
            state->flags |= PFLAG_END_CANDIDATE;
24624
99.2k
            state->flags &= ~PFLAG_INSTRING;
24625
99.2k
            state->counter = 1; /* Use counter to keep track of number of '=' seen */
24626
99.2k
            return 1;
24627
99.2k
        }
24628
13.5M
        push_buf(p, c);
24629
13.5M
        return 1;
24630
13.6M
    } else if (state->flags & PFLAG_END_CANDIDATE) {
24631
994k
        int i;
24632
        /* We are checking a potential end of the string */
24633
994k
        if (state->counter == state->argn) {
24634
90.0k
            stringend(p, state);
24635
90.0k
            return 0;
24636
90.0k
        }
24637
904k
        if (c == '`' && state->counter < state->argn) {
24638
895k
            state->counter++;
24639
895k
            return 1;
24640
895k
        }
24641
        /* Failed end candidate */
24642
835k
        for (i = 0; i < state->counter; i++) {
24643
826k
            push_buf(p, '`');
24644
826k
        }
24645
9.20k
        push_buf(p, c);
24646
9.20k
        state->counter = 0;
24647
9.20k
        state->flags &= ~PFLAG_END_CANDIDATE;
24648
9.20k
        state->flags |= PFLAG_INSTRING;
24649
9.20k
        return 1;
24650
1.10M
    } else {
24651
        /* We are at beginning of string */
24652
1.10M
        state->argn++;
24653
1.10M
        if (c != '`') {
24654
90.2k
            state->flags |= PFLAG_INSTRING;
24655
90.2k
            push_buf(p, c);
24656
90.2k
        }
24657
1.10M
        return 1;
24658
1.10M
    }
24659
15.7M
}
24660
24661
static int root(JanetParser *p, JanetParseState *state, uint8_t c);
24662
24663
2.50M
static int atsign(JanetParser *p, JanetParseState *state, uint8_t c) {
24664
2.50M
    (void) state;
24665
2.50M
    p->statecount--;
24666
2.50M
    switch (c) {
24667
107k
        case '{':
24668
107k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_CURLYBRACKETS | PFLAG_ATSYM);
24669
107k
            return 1;
24670
2.38M
        case '"':
24671
2.38M
            pushstate(p, stringchar, PFLAG_BUFFER | PFLAG_STRING);
24672
2.38M
            return 1;
24673
1.42k
        case '`':
24674
1.42k
            pushstate(p, longstring, PFLAG_BUFFER | PFLAG_LONGSTRING);
24675
1.42k
            return 1;
24676
11.5k
        case '[':
24677
11.5k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_SQRBRACKETS | PFLAG_ATSYM);
24678
11.5k
            return 1;
24679
2.50k
        case '(':
24680
2.50k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_PARENS | PFLAG_ATSYM);
24681
2.50k
            return 1;
24682
3.93k
        default:
24683
3.93k
            break;
24684
2.50M
    }
24685
3.93k
    pushstate(p, tokenchar, PFLAG_TOKEN);
24686
3.93k
    push_buf(p, '@'); /* Push the leading at-sign that was dropped */
24687
3.93k
    return 0;
24688
2.50M
}
24689
24690
/* The root state of the parser */
24691
17.4M
static int root(JanetParser *p, JanetParseState *state, uint8_t c) {
24692
17.4M
    switch (c) {
24693
2.58M
        default:
24694
2.58M
            if (is_whitespace(c)) return 1;
24695
2.20M
            if (!janet_is_symbol_char(c)) {
24696
429
                p->error = "unexpected character";
24697
429
                return 1;
24698
429
            }
24699
2.20M
            pushstate(p, tokenchar, PFLAG_TOKEN);
24700
2.20M
            return 0;
24701
577k
        case '\'':
24702
2.23M
        case ',':
24703
2.50M
        case ';':
24704
2.50M
        case '~':
24705
2.51M
        case '|':
24706
2.51M
            pushstate(p, root, PFLAG_READERMAC | c);
24707
2.51M
            return 1;
24708
2.70M
        case '"':
24709
2.70M
            pushstate(p, stringchar, PFLAG_STRING);
24710
2.70M
            return 1;
24711
432
        case '#':
24712
432
            pushstate(p, comment, PFLAG_COMMENT);
24713
432
            return 1;
24714
2.50M
        case '@':
24715
2.50M
            pushstate(p, atsign, PFLAG_ATSYM);
24716
2.50M
            return 1;
24717
88.8k
        case '`':
24718
88.8k
            pushstate(p, longstring, PFLAG_LONGSTRING);
24719
88.8k
            return 1;
24720
1.98k
        case ')':
24721
31.2k
        case ']':
24722
1.89M
        case '}': {
24723
1.89M
            Janet ds;
24724
1.89M
            if (p->statecount == 1) {
24725
209
                delim_error(p, 0, c, "unexpected closing delimiter ");
24726
209
                return 1;
24727
209
            }
24728
1.89M
            if ((c == ')' && (state->flags & PFLAG_PARENS)) ||
24729
1.89M
                    (c == ']' && (state->flags & PFLAG_SQRBRACKETS))) {
24730
31.1k
                if (state->flags & PFLAG_ATSYM) {
24731
4.63k
                    ds = close_array(p, state);
24732
26.4k
                } else {
24733
26.4k
                    ds = close_tuple(p, state, c == ']' ? JANET_TUPLE_FLAG_BRACKETCTOR : 0);
24734
26.4k
                }
24735
1.86M
            } else if (c == '}' && (state->flags & PFLAG_CURLYBRACKETS)) {
24736
1.86M
                if (state->argn & 1) {
24737
38
                    p->error = "struct and table literals expect even number of arguments";
24738
38
                    return 1;
24739
38
                }
24740
1.86M
                if (state->flags & PFLAG_ATSYM) {
24741
106k
                    ds = close_table(p, state);
24742
1.75M
                } else {
24743
1.75M
                    ds = close_struct(p, state);
24744
1.75M
                }
24745
1.86M
            } else {
24746
66
                delim_error(p, p->statecount - 1, c, "mismatched delimiter ");
24747
66
                return 1;
24748
66
            }
24749
1.89M
            popstate(p, ds);
24750
1.89M
        }
24751
0
        return 1;
24752
2.01M
        case '(':
24753
2.01M
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_PARENS);
24754
2.01M
            return 1;
24755
499k
        case '[':
24756
499k
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_SQRBRACKETS);
24757
499k
            return 1;
24758
2.65M
        case '{':
24759
2.65M
            pushstate(p, root, PFLAG_CONTAINER | PFLAG_CURLYBRACKETS);
24760
2.65M
            return 1;
24761
17.4M
    }
24762
17.4M
}
24763
24764
57.7M
static void janet_parser_checkdead(JanetParser *parser) {
24765
57.7M
    if (parser->flag) janet_panic("parser is dead, cannot consume");
24766
57.7M
    if (parser->error) janet_panic("parser has unchecked error, cannot consume");
24767
57.7M
}
24768
24769
/* Public API */
24770
24771
57.7M
void janet_parser_consume(JanetParser *parser, uint8_t c) {
24772
57.7M
    int consumed = 0;
24773
57.7M
    janet_parser_checkdead(parser);
24774
57.7M
    if (c == '\r') {
24775
29.2k
        parser->line++;
24776
29.2k
        parser->column = 0;
24777
57.7M
    } else if (c == '\n') {
24778
32.7k
        parser->column = 0;
24779
32.7k
        if (parser->lookback != '\r')
24780
21.5k
            parser->line++;
24781
57.7M
    } else {
24782
57.7M
        parser->column++;
24783
57.7M
    }
24784
120M
    while (!consumed && !parser->error) {
24785
62.3M
        JanetParseState *state = parser->states + parser->statecount - 1;
24786
62.3M
        consumed = state->consumer(parser, state, c);
24787
62.3M
    }
24788
57.7M
    parser->lookback = c;
24789
57.7M
}
24790
24791
0
void janet_parser_eof(JanetParser *parser) {
24792
0
    janet_parser_checkdead(parser);
24793
0
    size_t oldcolumn = parser->column;
24794
0
    size_t oldline = parser->line;
24795
0
    janet_parser_consume(parser, '\n');
24796
0
    if (parser->statecount > 1) {
24797
0
        delim_error(parser, parser->statecount - 1, 0, "unexpected end of source");
24798
0
    }
24799
0
    parser->line = oldline;
24800
0
    parser->column = oldcolumn;
24801
0
    parser->flag |= JANET_PARSER_DEAD;
24802
0
}
24803
24804
57.7M
enum JanetParserStatus janet_parser_status(JanetParser *parser) {
24805
57.7M
    if (parser->error) return JANET_PARSE_ERROR;
24806
57.7M
    if (parser->flag) return JANET_PARSE_DEAD;
24807
57.7M
    if (parser->statecount > 1) return JANET_PARSE_PENDING;
24808
67.4k
    return JANET_PARSE_ROOT;
24809
57.7M
}
24810
24811
0
void janet_parser_flush(JanetParser *parser) {
24812
0
    parser->argcount = 0;
24813
0
    parser->statecount = 1;
24814
0
    parser->bufcount = 0;
24815
0
    parser->pending = 0;
24816
0
}
24817
24818
0
const char *janet_parser_error(JanetParser *parser) {
24819
0
    enum JanetParserStatus status = janet_parser_status(parser);
24820
0
    if (status == JANET_PARSE_ERROR) {
24821
0
        const char *e = parser->error;
24822
0
        parser->error = NULL;
24823
0
        parser->flag &= ~JANET_PARSER_GENERATED_ERROR;
24824
0
        janet_parser_flush(parser);
24825
0
        return e;
24826
0
    }
24827
0
    return NULL;
24828
0
}
24829
24830
0
Janet janet_parser_produce(JanetParser *parser) {
24831
0
    Janet ret;
24832
0
    size_t i;
24833
0
    if (parser->pending == 0) return janet_wrap_nil();
24834
0
    ret = janet_unwrap_tuple(parser->args[0])[0];
24835
0
    for (i = 1; i < parser->argcount; i++) {
24836
0
        parser->args[i - 1] = parser->args[i];
24837
0
    }
24838
0
    parser->pending--;
24839
0
    parser->argcount--;
24840
0
    parser->states[0].argn--;
24841
0
    return ret;
24842
0
}
24843
24844
0
Janet janet_parser_produce_wrapped(JanetParser *parser) {
24845
0
    Janet ret;
24846
0
    size_t i;
24847
0
    if (parser->pending == 0) return janet_wrap_nil();
24848
0
    ret = parser->args[0];
24849
0
    for (i = 1; i < parser->argcount; i++) {
24850
0
        parser->args[i - 1] = parser->args[i];
24851
0
    }
24852
0
    parser->pending--;
24853
0
    parser->argcount--;
24854
0
    parser->states[0].argn--;
24855
0
    return ret;
24856
0
}
24857
24858
5.80k
void janet_parser_init(JanetParser *parser) {
24859
5.80k
    parser->args = NULL;
24860
5.80k
    parser->states = NULL;
24861
5.80k
    parser->buf = NULL;
24862
5.80k
    parser->argcount = 0;
24863
5.80k
    parser->argcap = 0;
24864
5.80k
    parser->bufcount = 0;
24865
5.80k
    parser->bufcap = 0;
24866
5.80k
    parser->statecount = 0;
24867
5.80k
    parser->statecap = 0;
24868
5.80k
    parser->error = NULL;
24869
5.80k
    parser->lookback = -1;
24870
5.80k
    parser->line = 1;
24871
5.80k
    parser->column = 0;
24872
5.80k
    parser->pending = 0;
24873
5.80k
    parser->flag = 0;
24874
24875
5.80k
    pushstate(parser, root, PFLAG_CONTAINER);
24876
5.80k
}
24877
24878
5.80k
void janet_parser_deinit(JanetParser *parser) {
24879
5.80k
    janet_free(parser->args);
24880
5.80k
    janet_free(parser->buf);
24881
5.80k
    janet_free(parser->states);
24882
5.80k
}
24883
24884
0
void janet_parser_clone(const JanetParser *src, JanetParser *dest) {
24885
    /* Misc fields */
24886
0
    dest->flag = src->flag;
24887
0
    dest->pending = src->pending;
24888
0
    dest->lookback = src->lookback;
24889
0
    dest->line = src->line;
24890
0
    dest->column = src->column;
24891
0
    dest->error = src->error;
24892
24893
    /* Keep counts */
24894
0
    dest->argcount = src->argcount;
24895
0
    dest->bufcount = src->bufcount;
24896
0
    dest->statecount = src->statecount;
24897
24898
    /* Capacities are equal to counts */
24899
0
    dest->bufcap = dest->bufcount;
24900
0
    dest->statecap = dest->statecount;
24901
0
    dest->argcap = dest->argcount;
24902
24903
    /* Deep cloned fields */
24904
0
    dest->args = NULL;
24905
0
    dest->states = NULL;
24906
0
    dest->buf = NULL;
24907
0
    if (dest->bufcap) {
24908
0
        dest->buf = janet_malloc(dest->bufcap);
24909
0
        if (!dest->buf) goto nomem;
24910
0
        memcpy(dest->buf, src->buf, dest->bufcap);
24911
0
    }
24912
0
    if (dest->argcap) {
24913
0
        dest->args = janet_malloc(sizeof(Janet) * dest->argcap);
24914
0
        if (!dest->args) goto nomem;
24915
0
        memcpy(dest->args, src->args, dest->argcap * sizeof(Janet));
24916
0
    }
24917
0
    if (dest->statecap) {
24918
0
        dest->states = janet_malloc(sizeof(JanetParseState) * dest->statecap);
24919
0
        if (!dest->states) goto nomem;
24920
0
        memcpy(dest->states, src->states, dest->statecap * sizeof(JanetParseState));
24921
0
    }
24922
24923
0
    return;
24924
24925
0
nomem:
24926
0
    JANET_OUT_OF_MEMORY;
24927
0
}
24928
24929
0
int janet_parser_has_more(JanetParser *parser) {
24930
0
    return !!parser->pending;
24931
0
}
24932
24933
/* C functions */
24934
24935
0
static int parsermark(void *p, size_t size) {
24936
0
    size_t i;
24937
0
    JanetParser *parser = (JanetParser *)p;
24938
0
    (void) size;
24939
0
    for (i = 0; i < parser->argcount; i++) {
24940
0
        janet_mark(parser->args[i]);
24941
0
    }
24942
0
    if (parser->flag & JANET_PARSER_GENERATED_ERROR) {
24943
0
        janet_mark(janet_wrap_string((const uint8_t *) parser->error));
24944
0
    }
24945
0
    return 0;
24946
0
}
24947
24948
0
static int parsergc(void *p, size_t size) {
24949
0
    JanetParser *parser = (JanetParser *)p;
24950
0
    (void) size;
24951
0
    janet_parser_deinit(parser);
24952
0
    return 0;
24953
0
}
24954
24955
static int parserget(void *p, Janet key, Janet *out);
24956
static Janet parsernext(void *p, Janet key);
24957
24958
const JanetAbstractType janet_parser_type = {
24959
    "core/parser",
24960
    parsergc,
24961
    parsermark,
24962
    parserget,
24963
    NULL, /* put */
24964
    NULL, /* marshal */
24965
    NULL, /* unmarshal */
24966
    NULL, /* tostring */
24967
    NULL, /* compare */
24968
    NULL, /* hash */
24969
    parsernext,
24970
    JANET_ATEND_NEXT
24971
};
24972
24973
/* C Function parser */
24974
JANET_CORE_FN(cfun_parse_parser,
24975
              "(parser/new)",
24976
              "Creates and returns a new parser object. Parsers are state machines "
24977
0
              "that can receive bytes and generate a stream of values.") {
24978
0
    (void) argv;
24979
0
    janet_fixarity(argc, 0);
24980
0
    JanetParser *p = janet_abstract(&janet_parser_type, sizeof(JanetParser));
24981
0
    janet_parser_init(p);
24982
0
    return janet_wrap_abstract(p);
24983
0
}
24984
24985
JANET_CORE_FN(cfun_parse_consume,
24986
              "(parser/consume parser bytes &opt index)",
24987
              "Input bytes into the parser and parse them. Will not throw errors "
24988
              "if there is a parse error. Starts at the byte index given by `index`. Returns "
24989
0
              "the number of bytes read.") {
24990
0
    janet_arity(argc, 2, 3);
24991
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
24992
0
    JanetByteView view = janet_getbytes(argv, 1);
24993
0
    if (argc == 3) {
24994
0
        int32_t offset = janet_getinteger(argv, 2);
24995
0
        if (offset < 0 || offset > view.len)
24996
0
            janet_panicf("invalid offset %d out of range [0,%d]", offset, view.len);
24997
0
        view.len -= offset;
24998
0
        view.bytes += offset;
24999
0
    }
25000
0
    int32_t i;
25001
0
    for (i = 0; i < view.len; i++) {
25002
0
        janet_parser_consume(p, view.bytes[i]);
25003
0
        switch (janet_parser_status(p)) {
25004
0
            case JANET_PARSE_ROOT:
25005
0
            case JANET_PARSE_PENDING:
25006
0
                break;
25007
0
            default:
25008
0
                return janet_wrap_integer(i + 1);
25009
0
        }
25010
0
    }
25011
0
    return janet_wrap_integer(i);
25012
0
}
25013
25014
JANET_CORE_FN(cfun_parse_eof,
25015
              "(parser/eof parser)",
25016
0
              "Indicate to the parser that the end of file was reached. This puts the parser in the :dead state.") {
25017
0
    janet_fixarity(argc, 1);
25018
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25019
0
    janet_parser_eof(p);
25020
0
    return argv[0];
25021
0
}
25022
25023
JANET_CORE_FN(cfun_parse_insert,
25024
              "(parser/insert parser value)",
25025
              "Insert a value into the parser. This means that the parser state can be manipulated "
25026
              "in between chunks of bytes. This would allow a user to add extra elements to arrays "
25027
0
              "and tuples, for example. Returns the parser.") {
25028
0
    janet_fixarity(argc, 2);
25029
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25030
0
    JanetParseState *s = p->states + p->statecount - 1;
25031
0
    if (s->consumer == tokenchar) {
25032
0
        janet_parser_consume(p, ' ');
25033
0
        p->column--;
25034
0
        s = p->states + p->statecount - 1;
25035
0
    }
25036
0
    if (s->flags & PFLAG_COMMENT) s--;
25037
0
    if (s->flags & PFLAG_CONTAINER) {
25038
0
        s->argn++;
25039
0
        if (p->statecount == 1) {
25040
0
            p->pending++;
25041
0
            Janet tup = janet_wrap_tuple(janet_tuple_n(argv + 1, 1));
25042
0
            push_arg(p, tup);
25043
0
        } else {
25044
0
            push_arg(p, argv[1]);
25045
0
        }
25046
0
    } else if (s->flags & (PFLAG_STRING | PFLAG_LONGSTRING)) {
25047
0
        const uint8_t *str = janet_to_string(argv[1]);
25048
0
        int32_t slen = janet_string_length(str);
25049
0
        size_t newcount = p->bufcount + slen;
25050
0
        if (p->bufcap < newcount) {
25051
0
            size_t newcap = 2 * newcount;
25052
0
            p->buf = janet_realloc(p->buf, newcap);
25053
0
            if (p->buf == NULL) {
25054
0
                JANET_OUT_OF_MEMORY;
25055
0
            }
25056
0
            p->bufcap = newcap;
25057
0
        }
25058
0
        safe_memcpy(p->buf + p->bufcount, str, slen);
25059
0
        p->bufcount = newcount;
25060
0
    } else {
25061
0
        janet_panic("cannot insert value into parser");
25062
0
    }
25063
0
    return argv[0];
25064
0
}
25065
25066
JANET_CORE_FN(cfun_parse_has_more,
25067
              "(parser/has-more parser)",
25068
0
              "Check if the parser has more values in the value queue.") {
25069
0
    janet_fixarity(argc, 1);
25070
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25071
0
    return janet_wrap_boolean(janet_parser_has_more(p));
25072
0
}
25073
25074
JANET_CORE_FN(cfun_parse_byte,
25075
              "(parser/byte parser b)",
25076
0
              "Input a single byte `b` into the parser byte stream. Returns the parser.") {
25077
0
    janet_fixarity(argc, 2);
25078
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25079
0
    int32_t i = janet_getinteger(argv, 1);
25080
0
    janet_parser_consume(p, 0xFF & i);
25081
0
    return argv[0];
25082
0
}
25083
25084
JANET_CORE_FN(cfun_parse_status,
25085
              "(parser/status parser)",
25086
              "Gets the current status of the parser state machine. The status will "
25087
              "be one of:\n\n"
25088
              "* :pending - a value is being parsed.\n\n"
25089
              "* :error - a parsing error was encountered.\n\n"
25090
0
              "* :root - the parser can either read more values or safely terminate.") {
25091
0
    janet_fixarity(argc, 1);
25092
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25093
0
    const char *stat = NULL;
25094
0
    switch (janet_parser_status(p)) {
25095
0
        case JANET_PARSE_PENDING:
25096
0
            stat = "pending";
25097
0
            break;
25098
0
        case JANET_PARSE_ERROR:
25099
0
            stat = "error";
25100
0
            break;
25101
0
        case JANET_PARSE_ROOT:
25102
0
            stat = "root";
25103
0
            break;
25104
0
        case JANET_PARSE_DEAD:
25105
0
            stat = "dead";
25106
0
            break;
25107
0
    }
25108
0
    return janet_ckeywordv(stat);
25109
0
}
25110
25111
JANET_CORE_FN(cfun_parse_error,
25112
              "(parser/error parser)",
25113
              "If the parser is in the error state, returns the message associated with "
25114
              "that error. Otherwise, returns nil. Also flushes the parser state and parser "
25115
              "queue, so be sure to handle everything in the queue before calling "
25116
0
              "`parser/error`.") {
25117
0
    janet_fixarity(argc, 1);
25118
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25119
0
    const char *err = janet_parser_error(p);
25120
0
    if (err) {
25121
0
        return (p->flag & JANET_PARSER_GENERATED_ERROR)
25122
0
               ? janet_wrap_string((const uint8_t *) err)
25123
0
               : janet_cstringv(err);
25124
0
    }
25125
0
    return janet_wrap_nil();
25126
0
}
25127
25128
JANET_CORE_FN(cfun_parse_produce,
25129
              "(parser/produce parser &opt wrap)",
25130
              "Dequeue the next value in the parse queue. Will return nil if "
25131
              "no parsed values are in the queue, otherwise will dequeue the "
25132
              "next value. If `wrap` is truthy, will return a 1-element tuple that "
25133
              "wraps the result. This tuple can be used for source-mapping "
25134
0
              "purposes.") {
25135
0
    janet_arity(argc, 1, 2);
25136
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25137
0
    if (argc == 2 && janet_truthy(argv[1])) {
25138
0
        return janet_parser_produce_wrapped(p);
25139
0
    } else {
25140
0
        return janet_parser_produce(p);
25141
0
    }
25142
0
}
25143
25144
JANET_CORE_FN(cfun_parse_flush,
25145
              "(parser/flush parser)",
25146
              "Clears the parser state and parse queue. Can be used to reset the parser "
25147
              "if an error was encountered. Does not reset the line and column counter, so "
25148
0
              "to begin parsing in a new context, create a new parser.") {
25149
0
    janet_fixarity(argc, 1);
25150
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25151
0
    janet_parser_flush(p);
25152
0
    return argv[0];
25153
0
}
25154
25155
JANET_CORE_FN(cfun_parse_where,
25156
              "(parser/where parser &opt line col)",
25157
              "Returns the current line number and column of the parser's internal state. If line is "
25158
              "provided, the current line number of the parser is first set to that value. If column is "
25159
0
              "also provided, the current column number of the parser is also first set to that value.") {
25160
0
    janet_arity(argc, 1, 3);
25161
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25162
0
    if (argc > 1) {
25163
0
        int32_t line = janet_getinteger(argv, 1);
25164
0
        if (line < 1)
25165
0
            janet_panicf("invalid line number %d", line);
25166
0
        p->line = (size_t) line;
25167
0
    }
25168
0
    if (argc > 2) {
25169
0
        int32_t column = janet_getinteger(argv, 2);
25170
0
        if (column < 0)
25171
0
            janet_panicf("invalid column number %d", column);
25172
0
        p->column = (size_t) column;
25173
0
    }
25174
0
    Janet *tup = janet_tuple_begin(2);
25175
0
    tup[0] = janet_wrap_integer(p->line);
25176
0
    tup[1] = janet_wrap_integer(p->column);
25177
0
    return janet_wrap_tuple(janet_tuple_end(tup));
25178
0
}
25179
25180
static Janet janet_wrap_parse_state(JanetParseState *s, Janet *args,
25181
0
                                    uint8_t *buff, uint32_t bufcount) {
25182
0
    JanetTable *state = janet_table(0);
25183
0
    const uint8_t *buffer;
25184
0
    int add_buffer = 0;
25185
0
    const char *type = NULL;
25186
25187
0
    if (s->flags & PFLAG_CONTAINER) {
25188
0
        JanetArray *container_args = janet_array(s->argn);
25189
0
        for (int32_t i = 0; i < s->argn; i++) {
25190
0
            janet_array_push(container_args, args[i]);
25191
0
        }
25192
0
        janet_table_put(state, janet_ckeywordv("args"),
25193
0
                        janet_wrap_array(container_args));
25194
0
    }
25195
25196
0
    if (s->flags & PFLAG_PARENS || s->flags & PFLAG_SQRBRACKETS) {
25197
0
        if (s->flags & PFLAG_ATSYM) {
25198
0
            type = "array";
25199
0
        } else {
25200
0
            type = "tuple";
25201
0
        }
25202
0
    } else if (s->flags & PFLAG_CURLYBRACKETS) {
25203
0
        if (s->flags & PFLAG_ATSYM) {
25204
0
            type = "table";
25205
0
        } else {
25206
0
            type = "struct";
25207
0
        }
25208
0
    } else if (s->flags & PFLAG_STRING || s->flags & PFLAG_LONGSTRING) {
25209
0
        if (s->flags & PFLAG_BUFFER) {
25210
0
            type = "buffer";
25211
0
        } else {
25212
0
            type = "string";
25213
0
        }
25214
0
        add_buffer = 1;
25215
0
    } else if (s->flags & PFLAG_COMMENT) {
25216
0
        type = "comment";
25217
0
        add_buffer = 1;
25218
0
    } else if (s->flags & PFLAG_TOKEN) {
25219
0
        type = "token";
25220
0
        add_buffer = 1;
25221
0
    } else if (s->flags & PFLAG_ATSYM) {
25222
0
        type = "at";
25223
0
    } else if (s->flags & PFLAG_READERMAC) {
25224
0
        int c = s->flags & 0xFF;
25225
0
        type = (c == '\'') ? "quote" :
25226
0
               (c == ',') ? "unquote" :
25227
0
               (c == ';') ? "splice" :
25228
0
               (c == '~') ? "quasiquote" : "<reader>";
25229
0
    } else {
25230
0
        type = "root";
25231
0
    }
25232
25233
0
    if (type) {
25234
0
        janet_table_put(state, janet_ckeywordv("type"),
25235
0
                        janet_ckeywordv(type));
25236
0
    }
25237
25238
0
    if (add_buffer) {
25239
0
        buffer = janet_string(buff, bufcount);
25240
0
        janet_table_put(state, janet_ckeywordv("buffer"), janet_wrap_string(buffer));
25241
0
    }
25242
25243
0
    janet_table_put(state, janet_ckeywordv("line"), janet_wrap_integer(s->line));
25244
0
    janet_table_put(state, janet_ckeywordv("column"), janet_wrap_integer(s->column));
25245
0
    return janet_wrap_table(state);
25246
0
}
25247
25248
struct ParserStateGetter {
25249
    const char *name;
25250
    Janet(*fn)(const JanetParser *p);
25251
};
25252
25253
0
static Janet parser_state_delimiters(const JanetParser *_p) {
25254
0
    JanetParser *p = (JanetParser *)_p;
25255
0
    size_t i;
25256
0
    const uint8_t *str;
25257
0
    size_t oldcount;
25258
0
    oldcount = p->bufcount;
25259
0
    for (i = 0; i < p->statecount; i++) {
25260
0
        JanetParseState *s = p->states + i;
25261
0
        if (s->flags & PFLAG_PARENS) {
25262
0
            push_buf(p, '(');
25263
0
        } else if (s->flags & PFLAG_SQRBRACKETS) {
25264
0
            push_buf(p, '[');
25265
0
        } else if (s->flags & PFLAG_CURLYBRACKETS) {
25266
0
            push_buf(p, '{');
25267
0
        } else if (s->flags & PFLAG_STRING) {
25268
0
            push_buf(p, '"');
25269
0
        } else if (s->flags & PFLAG_LONGSTRING) {
25270
0
            int32_t i;
25271
0
            for (i = 0; i < s->argn; i++) {
25272
0
                push_buf(p, '`');
25273
0
            }
25274
0
        }
25275
0
    }
25276
    /* avoid ptr arithmetic on NULL */
25277
0
    str = janet_string(oldcount ? p->buf + oldcount : p->buf, (int32_t)(p->bufcount - oldcount));
25278
0
    p->bufcount = oldcount;
25279
0
    return janet_wrap_string(str);
25280
0
}
25281
25282
0
static Janet parser_state_frames(const JanetParser *p) {
25283
0
    int32_t count = (int32_t) p->statecount;
25284
0
    JanetArray *states = janet_array(count);
25285
0
    states->count = count;
25286
0
    uint8_t *buf = p->buf;
25287
    /* Iterate arg stack backwards */
25288
0
    Janet *args = p->argcount ? p->args + p->argcount : p->args; /* avoid ptr arithmetic on NULL */
25289
0
    for (int32_t i = count - 1; i >= 0; --i) {
25290
0
        JanetParseState *s = p->states + i;
25291
        /* avoid ptr arithmetic on args if NULL */
25292
0
        if ((s->flags & PFLAG_CONTAINER) && s->argn) {
25293
0
            args -= s->argn;
25294
0
        }
25295
0
        states->data[i] = janet_wrap_parse_state(s, args, buf, (uint32_t) p->bufcount);
25296
0
    }
25297
0
    return janet_wrap_array(states);
25298
0
}
25299
25300
static const struct ParserStateGetter parser_state_getters[] = {
25301
    {"frames", parser_state_frames},
25302
    {"delimiters", parser_state_delimiters},
25303
    {NULL, NULL}
25304
};
25305
25306
JANET_CORE_FN(cfun_parse_state,
25307
              "(parser/state parser &opt key)",
25308
              "Returns a representation of the internal state of the parser. If a key is passed, "
25309
              "only that information about the state is returned. Allowed keys are:\n\n"
25310
              "* :delimiters - Each byte in the string represents a nested data structure. For example, "
25311
              "if the parser state is '([\"', then the parser is in the middle of parsing a "
25312
              "string inside of square brackets inside parentheses. Can be used to augment a REPL prompt.\n\n"
25313
              "* :frames - Each table in the array represents a 'frame' in the parser state. Frames "
25314
              "contain information about the start of the expression being parsed as well as the "
25315
0
              "type of that expression and some type-specific information.") {
25316
0
    janet_arity(argc, 1, 2);
25317
0
    const uint8_t *key = NULL;
25318
0
    JanetParser *p = janet_getabstract(argv, 0, &janet_parser_type);
25319
0
    if (argc == 2) {
25320
0
        key = janet_getkeyword(argv, 1);
25321
0
    }
25322
25323
0
    if (key) {
25324
        /* Get one result */
25325
0
        for (const struct ParserStateGetter *sg = parser_state_getters;
25326
0
                sg->name != NULL; sg++) {
25327
0
            if (janet_cstrcmp(key, sg->name)) continue;
25328
0
            return sg->fn(p);
25329
0
        }
25330
0
        janet_panicf("unexpected keyword %v", janet_wrap_keyword(key));
25331
0
        return janet_wrap_nil();
25332
0
    } else {
25333
        /* Put results in table */
25334
0
        JanetTable *tab = janet_table(0);
25335
0
        for (const struct ParserStateGetter *sg = parser_state_getters;
25336
0
                sg->name != NULL; sg++) {
25337
0
            janet_table_put(tab, janet_ckeywordv(sg->name), sg->fn(p));
25338
0
        }
25339
0
        return janet_wrap_table(tab);
25340
0
    }
25341
0
}
25342
25343
JANET_CORE_FN(cfun_parse_clone,
25344
              "(parser/clone p)",
25345
              "Creates a deep clone of a parser that is identical to the input parser. "
25346
              "This cloned parser can be used to continue parsing from a good checkpoint "
25347
0
              "if parsing later fails. Returns a new parser.") {
25348
0
    janet_fixarity(argc, 1);
25349
0
    JanetParser *src = janet_getabstract(argv, 0, &janet_parser_type);
25350
0
    JanetParser *dest = janet_abstract(&janet_parser_type, sizeof(JanetParser));
25351
0
    janet_parser_clone(src, dest);
25352
0
    return janet_wrap_abstract(dest);
25353
0
}
25354
25355
static const JanetMethod parser_methods[] = {
25356
    {"byte", cfun_parse_byte},
25357
    {"clone", cfun_parse_clone},
25358
    {"consume", cfun_parse_consume},
25359
    {"eof", cfun_parse_eof},
25360
    {"error", cfun_parse_error},
25361
    {"flush", cfun_parse_flush},
25362
    {"has-more", cfun_parse_has_more},
25363
    {"insert", cfun_parse_insert},
25364
    {"produce", cfun_parse_produce},
25365
    {"state", cfun_parse_state},
25366
    {"status", cfun_parse_status},
25367
    {"where", cfun_parse_where},
25368
    {NULL, NULL}
25369
};
25370
25371
0
static int parserget(void *p, Janet key, Janet *out) {
25372
0
    (void) p;
25373
0
    if (!janet_checktype(key, JANET_KEYWORD)) return 0;
25374
0
    return janet_getmethod(janet_unwrap_keyword(key), parser_methods, out);
25375
0
}
25376
25377
0
static Janet parsernext(void *p, Janet key) {
25378
0
    (void) p;
25379
0
    return janet_nextmethod(parser_methods, key);
25380
0
}
25381
25382
/* Load the library */
25383
0
void janet_lib_parse(JanetTable *env) {
25384
0
    JanetRegExt parse_cfuns[] = {
25385
0
        JANET_CORE_REG("parser/new", cfun_parse_parser),
25386
0
        JANET_CORE_REG("parser/clone", cfun_parse_clone),
25387
0
        JANET_CORE_REG("parser/has-more", cfun_parse_has_more),
25388
0
        JANET_CORE_REG("parser/produce", cfun_parse_produce),
25389
0
        JANET_CORE_REG("parser/consume", cfun_parse_consume),
25390
0
        JANET_CORE_REG("parser/byte", cfun_parse_byte),
25391
0
        JANET_CORE_REG("parser/error", cfun_parse_error),
25392
0
        JANET_CORE_REG("parser/status", cfun_parse_status),
25393
0
        JANET_CORE_REG("parser/flush", cfun_parse_flush),
25394
0
        JANET_CORE_REG("parser/state", cfun_parse_state),
25395
0
        JANET_CORE_REG("parser/where", cfun_parse_where),
25396
0
        JANET_CORE_REG("parser/eof", cfun_parse_eof),
25397
0
        JANET_CORE_REG("parser/insert", cfun_parse_insert),
25398
0
        JANET_REG_END
25399
0
    };
25400
0
    janet_core_cfuns_ext(env, NULL, parse_cfuns);
25401
0
}
25402
25403
25404
/* src/core/peg.c */
25405
#line 0 "src/core/peg.c"
25406
25407
/*
25408
* Copyright (c) 2025 Calvin Rose
25409
*
25410
* Permission is hereby granted, free of charge, to any person obtaining a copy
25411
* of this software and associated documentation files (the "Software"), to
25412
* deal in the Software without restriction, including without limitation the
25413
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
25414
* sell copies of the Software, and to permit persons to whom the Software is
25415
* furnished to do so, subject to the following conditions:
25416
*
25417
* The above copyright notice and this permission notice shall be included in
25418
* all copies or substantial portions of the Software.
25419
*
25420
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
25421
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25422
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25423
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25424
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25425
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
25426
* IN THE SOFTWARE.
25427
*/
25428
25429
#ifndef JANET_AMALG
25430
#include "features.h"
25431
#include <janet.h>
25432
#include <string.h>
25433
#include "util.h"
25434
#include "vector.h"
25435
#include "util.h"
25436
#endif
25437
25438
#ifdef JANET_PEG
25439
25440
/*
25441
 * Runtime
25442
 */
25443
25444
/* Hold captured patterns and match state */
25445
typedef struct {
25446
    const uint8_t *text_start;
25447
    const uint8_t *text_end;
25448
    /* text_end can be restricted by some rules, but
25449
       outer_text_end will always contain the real end of
25450
       input, which we need to generate a line mapping */
25451
    const uint8_t *outer_text_end;
25452
    const uint32_t *bytecode;
25453
    const Janet *constants;
25454
    JanetArray *captures;
25455
    JanetBuffer *scratch;
25456
    JanetBuffer *tags;
25457
    JanetArray *tagged_captures;
25458
    const Janet *extrav;
25459
    int32_t *linemap;
25460
    int32_t extrac;
25461
    int32_t depth;
25462
    int32_t linemaplen;
25463
    int32_t has_backref;
25464
    enum {
25465
        PEG_MODE_NORMAL,
25466
        PEG_MODE_ACCUMULATE
25467
    } mode;
25468
} PegState;
25469
25470
/* Allow backtrack with captures. We need
25471
 * to save state at branches, and then reload
25472
 * if one branch fails and try a new branch. */
25473
typedef struct {
25474
    int32_t cap;
25475
    int32_t tcap;
25476
    int32_t scratch;
25477
} CapState;
25478
25479
/* Save the current capture state */
25480
0
static CapState cap_save(PegState *s) {
25481
0
    CapState cs;
25482
0
    cs.scratch = s->scratch->count;
25483
0
    cs.cap = s->captures->count;
25484
0
    cs.tcap = s->tagged_captures->count;
25485
0
    return cs;
25486
0
}
25487
25488
/* Load a saved capture state in the case of failure */
25489
0
static void cap_load(PegState *s, CapState cs) {
25490
0
    s->scratch->count = cs.scratch;
25491
0
    s->captures->count = cs.cap;
25492
0
    s->tags->count = cs.tcap;
25493
0
    s->tagged_captures->count = cs.tcap;
25494
0
}
25495
25496
/* Load a saved capture state in the case of success. Keeps
25497
 * tagged captures around for backref. */
25498
0
static void cap_load_keept(PegState *s, CapState cs) {
25499
0
    s->scratch->count = cs.scratch;
25500
0
    s->captures->count = cs.cap;
25501
0
}
25502
25503
/* Add a capture */
25504
0
static void pushcap(PegState *s, Janet capture, uint32_t tag) {
25505
0
    if (s->mode == PEG_MODE_ACCUMULATE) {
25506
0
        janet_to_string_b(s->scratch, capture);
25507
0
    }
25508
0
    if (s->mode == PEG_MODE_NORMAL) {
25509
0
        janet_array_push(s->captures, capture);
25510
0
    }
25511
0
    if (s->has_backref) {
25512
0
        janet_array_push(s->tagged_captures, capture);
25513
0
        janet_buffer_push_u8(s->tags, tag);
25514
0
    }
25515
0
}
25516
25517
/* Lazily generate line map to get line and column information for PegState.
25518
 * line and column are 1-indexed. */
25519
typedef struct {
25520
    int32_t line;
25521
    int32_t col;
25522
} LineCol;
25523
0
static LineCol get_linecol_from_position(PegState *s, int32_t position) {
25524
    /* Generate if not made yet */
25525
0
    if (s->linemaplen < 0) {
25526
0
        int32_t newline_count = 0;
25527
0
        for (const uint8_t *c = s->text_start; c < s->outer_text_end; c++) {
25528
0
            if (*c == '\n') newline_count++;
25529
0
        }
25530
0
        int32_t *mem = janet_smalloc(sizeof(int32_t) * newline_count);
25531
0
        size_t index = 0;
25532
0
        for (const uint8_t *c = s->text_start; c < s->outer_text_end; c++) {
25533
0
            if (*c == '\n') mem[index++] = (int32_t)(c - s->text_start);
25534
0
        }
25535
0
        s->linemaplen = newline_count;
25536
0
        s->linemap = mem;
25537
0
    }
25538
    /* Do binary search for line. Slightly modified from classic binary search:
25539
     * - if we find that our current character is a line break, just return immediately.
25540
     *   a newline character is consider to be on the same line as the character before
25541
     *   (\n is line terminator, not line separator).
25542
     * - in the not-found case, we still want to find the greatest-indexed newline that
25543
     *   is before position. we use that to calculate the line and column.
25544
     * - in the case that lo = 0 and s->linemap[0] is still greater than position, we
25545
     *   are on the first line and our column is position + 1. */
25546
0
    int32_t hi = s->linemaplen; /* hi is greater than the actual line */
25547
0
    int32_t lo = 0; /* lo is less than or equal to the actual line */
25548
0
    LineCol ret;
25549
0
    while (lo + 1 < hi) {
25550
0
        int32_t mid = lo + (hi - lo) / 2;
25551
0
        if (s->linemap[mid] >= position) {
25552
0
            hi = mid;
25553
0
        } else {
25554
0
            lo = mid;
25555
0
        }
25556
0
    }
25557
    /* first line case */
25558
0
    if (s->linemaplen == 0 || (lo == 0 && s->linemap[0] >= position)) {
25559
0
        ret.line = 1;
25560
0
        ret.col = position + 1;
25561
0
    } else {
25562
0
        ret.line = lo + 2;
25563
0
        ret.col = position - s->linemap[lo];
25564
0
    }
25565
0
    return ret;
25566
0
}
25567
25568
/* Convert a uint64_t to a int64_t by wrapping to a maximum number of bytes */
25569
0
static int64_t peg_convert_u64_s64(uint64_t from, int width) {
25570
0
    int shift = 8 * (8 - width);
25571
0
    return ((int64_t)(from << shift)) >> shift;
25572
0
}
25573
25574
/* Prevent stack overflow */
25575
0
#define down1(s) do { \
25576
0
    if (0 == --((s)->depth)) janet_panic("peg/match recursed too deeply"); \
25577
0
} while (0)
25578
0
#define up1(s) ((s)->depth++)
25579
25580
/* Evaluate a peg rule
25581
 * Pre-conditions: s is in a valid state
25582
 * Post-conditions: If there is a match, returns a pointer to the next text.
25583
 * All captures on the capture stack are valid. If there is no match,
25584
 * returns NULL. Extra captures from successful child expressions can be
25585
 * left on the capture stack.
25586
 */
25587
static const uint8_t *peg_rule(
25588
    PegState *s,
25589
    const uint32_t *rule,
25590
0
    const uint8_t *text) {
25591
0
tail:
25592
0
    switch (*rule) {
25593
0
        default:
25594
0
            janet_panic("unexpected opcode");
25595
0
            return NULL;
25596
25597
0
        case RULE_LITERAL: {
25598
0
            uint32_t len = rule[1];
25599
0
            if (text + len > s->text_end) return NULL;
25600
0
            return memcmp(text, rule + 2, len) ? NULL : text + len;
25601
0
        }
25602
25603
0
        case RULE_NCHAR: {
25604
0
            uint32_t n = rule[1];
25605
0
            return (text + n > s->text_end) ? NULL : text + n;
25606
0
        }
25607
25608
0
        case RULE_NOTNCHAR: {
25609
0
            uint32_t n = rule[1];
25610
0
            return (text + n > s->text_end) ? text : NULL;
25611
0
        }
25612
25613
0
        case RULE_RANGE: {
25614
0
            uint8_t lo = rule[1] & 0xFF;
25615
0
            uint8_t hi = (rule[1] >> 16) & 0xFF;
25616
0
            return (text < s->text_end &&
25617
0
                    text[0] >= lo &&
25618
0
                    text[0] <= hi)
25619
0
                   ? text + 1
25620
0
                   : NULL;
25621
0
        }
25622
25623
0
        case RULE_SET: {
25624
0
            if (text >= s->text_end) return NULL;
25625
0
            uint32_t word = rule[1 + (text[0] >> 5)];
25626
0
            uint32_t mask = (uint32_t)1 << (text[0] & 0x1F);
25627
0
            return (word & mask)
25628
0
                   ? text + 1
25629
0
                   : NULL;
25630
0
        }
25631
25632
0
        case RULE_LOOK: {
25633
0
            text += ((int32_t *)rule)[1];
25634
0
            if (text < s->text_start || text > s->text_end) return NULL;
25635
0
            down1(s);
25636
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[2], text);
25637
0
            up1(s);
25638
0
            text -= ((int32_t *)rule)[1];
25639
0
            return result ? text : NULL;
25640
0
        }
25641
25642
0
        case RULE_CHOICE: {
25643
0
            uint32_t len = rule[1];
25644
0
            const uint32_t *args = rule + 2;
25645
0
            if (len == 0) return NULL;
25646
0
            down1(s);
25647
0
            CapState cs = cap_save(s);
25648
0
            for (uint32_t i = 0; i < len - 1; i++) {
25649
0
                const uint8_t *result = peg_rule(s, s->bytecode + args[i], text);
25650
0
                if (result) {
25651
0
                    up1(s);
25652
0
                    return result;
25653
0
                }
25654
0
                cap_load(s, cs);
25655
0
            }
25656
0
            up1(s);
25657
0
            rule = s->bytecode + args[len - 1];
25658
0
            goto tail;
25659
0
        }
25660
25661
0
        case RULE_SEQUENCE: {
25662
0
            uint32_t len = rule[1];
25663
0
            const uint32_t *args = rule + 2;
25664
0
            if (len == 0) return text;
25665
0
            down1(s);
25666
0
            for (uint32_t i = 0; text && i < len - 1; i++)
25667
0
                text = peg_rule(s, s->bytecode + args[i], text);
25668
0
            up1(s);
25669
0
            if (!text) return NULL;
25670
0
            rule = s->bytecode + args[len - 1];
25671
0
            goto tail;
25672
0
        }
25673
25674
0
        case RULE_IF: {
25675
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25676
0
            const uint32_t *rule_b = s->bytecode + rule[2];
25677
0
            down1(s);
25678
0
            const uint8_t *result = peg_rule(s, rule_a, text);
25679
0
            up1(s);
25680
0
            if (!result) return NULL;
25681
0
            rule = rule_b;
25682
0
            goto tail;
25683
0
        }
25684
0
        case RULE_IFNOT: {
25685
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25686
0
            const uint32_t *rule_b = s->bytecode + rule[2];
25687
0
            down1(s);
25688
0
            CapState cs = cap_save(s);
25689
0
            const uint8_t *result = peg_rule(s, rule_a, text);
25690
0
            if (!!result) {
25691
0
                up1(s);
25692
0
                return NULL;
25693
0
            } else {
25694
0
                cap_load(s, cs);
25695
0
                up1(s);
25696
0
                rule = rule_b;
25697
0
                goto tail;
25698
0
            }
25699
0
        }
25700
25701
0
        case RULE_NOT: {
25702
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25703
0
            down1(s);
25704
0
            CapState cs = cap_save(s);
25705
0
            const uint8_t *result = peg_rule(s, rule_a, text);
25706
0
            if (result) {
25707
0
                up1(s);
25708
0
                return NULL;
25709
0
            } else {
25710
0
                cap_load(s, cs);
25711
0
                up1(s);
25712
0
                return text;
25713
0
            }
25714
0
        }
25715
25716
0
        case RULE_THRU:
25717
0
        case RULE_TO: {
25718
0
            const uint32_t *rule_a = s->bytecode + rule[1];
25719
0
            const uint8_t *next_text = NULL;
25720
0
            CapState cs = cap_save(s);
25721
0
            down1(s);
25722
0
            while (text <= s->text_end) {
25723
0
                CapState cs2 = cap_save(s);
25724
0
                next_text = peg_rule(s, rule_a, text);
25725
0
                if (next_text) {
25726
0
                    if (rule[0] == RULE_TO) cap_load(s, cs2);
25727
0
                    break;
25728
0
                }
25729
0
                cap_load(s, cs2);
25730
0
                text++;
25731
0
            }
25732
0
            up1(s);
25733
0
            if (text > s->text_end) {
25734
0
                cap_load(s, cs);
25735
0
                return NULL;
25736
0
            }
25737
0
            return rule[0] == RULE_TO ? text : next_text;
25738
0
        }
25739
25740
0
        case RULE_BETWEEN: {
25741
0
            uint32_t lo = rule[1];
25742
0
            uint32_t hi = rule[2];
25743
0
            const uint32_t *rule_a = s->bytecode + rule[3];
25744
0
            uint32_t captured = 0;
25745
0
            const uint8_t *next_text;
25746
0
            CapState cs = cap_save(s);
25747
0
            down1(s);
25748
0
            while (captured < hi) {
25749
0
                CapState cs2 = cap_save(s);
25750
0
                next_text = peg_rule(s, rule_a, text);
25751
0
                if (!next_text || ((next_text == text) && (hi == UINT32_MAX))) {
25752
0
                    cap_load(s, cs2);
25753
0
                    break;
25754
0
                }
25755
0
                captured++;
25756
0
                text = next_text;
25757
0
            }
25758
0
            up1(s);
25759
0
            if (captured < lo) {
25760
0
                cap_load(s, cs);
25761
0
                return NULL;
25762
0
            }
25763
0
            return text;
25764
0
        }
25765
25766
        /* Capturing rules */
25767
25768
0
        case RULE_GETTAG: {
25769
0
            uint32_t search = rule[1];
25770
0
            uint32_t tag = rule[2];
25771
0
            for (int32_t i = s->tags->count - 1; i >= 0; i--) {
25772
0
                if (s->tags->data[i] == search) {
25773
0
                    pushcap(s, s->tagged_captures->data[i], tag);
25774
0
                    return text;
25775
0
                }
25776
0
            }
25777
0
            return NULL;
25778
0
        }
25779
25780
0
        case RULE_POSITION: {
25781
0
            pushcap(s, janet_wrap_number((double)(text - s->text_start)), rule[1]);
25782
0
            return text;
25783
0
        }
25784
25785
0
        case RULE_LINE: {
25786
0
            LineCol lc = get_linecol_from_position(s, (int32_t)(text - s->text_start));
25787
0
            pushcap(s, janet_wrap_number((double)(lc.line)), rule[1]);
25788
0
            return text;
25789
0
        }
25790
25791
0
        case RULE_COLUMN: {
25792
0
            LineCol lc = get_linecol_from_position(s, (int32_t)(text - s->text_start));
25793
0
            pushcap(s, janet_wrap_number((double)(lc.col)), rule[1]);
25794
0
            return text;
25795
0
        }
25796
25797
0
        case RULE_ARGUMENT: {
25798
0
            int32_t index = ((int32_t *)rule)[1];
25799
0
            Janet capture = (index >= s->extrac) ? janet_wrap_nil() : s->extrav[index];
25800
0
            pushcap(s, capture, rule[2]);
25801
0
            return text;
25802
0
        }
25803
25804
0
        case RULE_CONSTANT: {
25805
0
            pushcap(s, s->constants[rule[1]], rule[2]);
25806
0
            return text;
25807
0
        }
25808
25809
0
        case RULE_CAPTURE: {
25810
0
            down1(s);
25811
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25812
0
            up1(s);
25813
0
            if (!result) return NULL;
25814
            /* Specialized pushcap - avoid intermediate string creation */
25815
0
            if (!s->has_backref && s->mode == PEG_MODE_ACCUMULATE) {
25816
0
                janet_buffer_push_bytes(s->scratch, text, (int32_t)(result - text));
25817
0
            } else {
25818
0
                uint32_t tag = rule[2];
25819
0
                pushcap(s, janet_stringv(text, (int32_t)(result - text)), tag);
25820
0
            }
25821
0
            return result;
25822
0
        }
25823
25824
0
        case RULE_CAPTURE_NUM: {
25825
0
            down1(s);
25826
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25827
0
            up1(s);
25828
0
            if (!result) return NULL;
25829
            /* check number parsing */
25830
0
            double x = 0.0;
25831
0
            int32_t base = (int32_t) rule[2];
25832
0
            if (janet_scan_number_base(text, (int32_t)(result - text), base, &x)) return NULL;
25833
            /* Specialized pushcap - avoid intermediate string creation */
25834
0
            if (!s->has_backref && s->mode == PEG_MODE_ACCUMULATE) {
25835
0
                janet_buffer_push_bytes(s->scratch, text, (int32_t)(result - text));
25836
0
            } else {
25837
0
                uint32_t tag = rule[3];
25838
0
                pushcap(s, janet_wrap_number(x), tag);
25839
0
            }
25840
0
            return result;
25841
0
        }
25842
25843
0
        case RULE_ACCUMULATE: {
25844
0
            uint32_t tag = rule[2];
25845
0
            int oldmode = s->mode;
25846
0
            if (!tag && oldmode == PEG_MODE_ACCUMULATE) {
25847
0
                rule = s->bytecode + rule[1];
25848
0
                goto tail;
25849
0
            }
25850
0
            CapState cs = cap_save(s);
25851
0
            s->mode = PEG_MODE_ACCUMULATE;
25852
0
            down1(s);
25853
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25854
0
            up1(s);
25855
0
            s->mode = oldmode;
25856
0
            if (!result) return NULL;
25857
0
            Janet cap = janet_stringv(s->scratch->data + cs.scratch,
25858
0
                                      s->scratch->count - cs.scratch);
25859
0
            cap_load_keept(s, cs);
25860
0
            pushcap(s, cap, tag);
25861
0
            return result;
25862
0
        }
25863
25864
0
        case RULE_DROP: {
25865
0
            CapState cs = cap_save(s);
25866
0
            down1(s);
25867
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25868
0
            up1(s);
25869
0
            if (!result) return NULL;
25870
0
            cap_load(s, cs);
25871
0
            return result;
25872
0
        }
25873
25874
0
        case RULE_ONLY_TAGS: {
25875
0
            CapState cs = cap_save(s);
25876
0
            down1(s);
25877
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25878
0
            up1(s);
25879
0
            if (!result) return NULL;
25880
0
            cap_load_keept(s, cs);
25881
0
            return result;
25882
0
        }
25883
25884
0
        case RULE_GROUP: {
25885
0
            uint32_t tag = rule[2];
25886
0
            int oldmode = s->mode;
25887
0
            CapState cs = cap_save(s);
25888
0
            s->mode = PEG_MODE_NORMAL;
25889
0
            down1(s);
25890
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
25891
0
            up1(s);
25892
0
            s->mode = oldmode;
25893
0
            if (!result) return NULL;
25894
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
25895
0
            JanetArray *sub_captures = janet_array(num_sub_captures);
25896
0
            safe_memcpy(sub_captures->data,
25897
0
                        s->captures->data + cs.cap,
25898
0
                        sizeof(Janet) * num_sub_captures);
25899
0
            sub_captures->count = num_sub_captures;
25900
0
            cap_load_keept(s, cs);
25901
0
            pushcap(s, janet_wrap_array(sub_captures), tag);
25902
0
            return result;
25903
0
        }
25904
25905
0
        case RULE_NTH: {
25906
0
            uint32_t nth = rule[1];
25907
0
            if (nth > INT32_MAX) nth = INT32_MAX;
25908
0
            uint32_t tag = rule[3];
25909
0
            int oldmode = s->mode;
25910
0
            CapState cs = cap_save(s);
25911
0
            s->mode = PEG_MODE_NORMAL;
25912
0
            down1(s);
25913
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[2], text);
25914
0
            up1(s);
25915
0
            s->mode = oldmode;
25916
0
            if (!result) return NULL;
25917
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
25918
0
            Janet cap;
25919
0
            if (num_sub_captures > (int32_t) nth) {
25920
0
                cap = s->captures->data[cs.cap + nth];
25921
0
            } else {
25922
0
                return NULL;
25923
0
            }
25924
0
            cap_load_keept(s, cs);
25925
0
            pushcap(s, cap, tag);
25926
0
            return result;
25927
0
        }
25928
25929
0
        case RULE_SUB: {
25930
0
            const uint8_t *text_start = text;
25931
0
            const uint32_t *rule_window = s->bytecode + rule[1];
25932
0
            const uint32_t *rule_subpattern = s->bytecode + rule[2];
25933
0
            down1(s);
25934
0
            const uint8_t *window_end = peg_rule(s, rule_window, text);
25935
0
            up1(s);
25936
0
            if (!window_end) {
25937
0
                return NULL;
25938
0
            }
25939
0
            const uint8_t *saved_end = s->text_end;
25940
0
            s->text_end = window_end;
25941
0
            down1(s);
25942
0
            const uint8_t *next_text = peg_rule(s, rule_subpattern, text_start);
25943
0
            up1(s);
25944
0
            s->text_end = saved_end;
25945
25946
0
            if (!next_text) {
25947
0
                return NULL;
25948
0
            }
25949
25950
0
            return window_end;
25951
0
        }
25952
25953
0
        case RULE_TIL: {
25954
0
            const uint32_t *rule_terminus = s->bytecode + rule[1];
25955
0
            const uint32_t *rule_subpattern = s->bytecode + rule[2];
25956
25957
0
            const uint8_t *terminus_start = text;
25958
0
            const uint8_t *terminus_end = NULL;
25959
0
            down1(s);
25960
0
            while (terminus_start <= s->text_end) {
25961
0
                CapState cs2 = cap_save(s);
25962
0
                terminus_end = peg_rule(s, rule_terminus, terminus_start);
25963
0
                cap_load(s, cs2);
25964
0
                if (terminus_end) {
25965
0
                    break;
25966
0
                }
25967
0
                terminus_start++;
25968
0
            }
25969
0
            up1(s);
25970
25971
0
            if (!terminus_end) {
25972
0
                return NULL;
25973
0
            }
25974
25975
0
            const uint8_t *saved_end = s->text_end;
25976
0
            s->text_end = terminus_start;
25977
0
            down1(s);
25978
0
            const uint8_t *matched = peg_rule(s, rule_subpattern, text);
25979
0
            up1(s);
25980
0
            s->text_end = saved_end;
25981
25982
0
            if (!matched) {
25983
0
                return NULL;
25984
0
            }
25985
25986
0
            return terminus_end;
25987
0
        }
25988
25989
0
        case RULE_SPLIT: {
25990
0
            const uint8_t *saved_end = s->text_end;
25991
0
            const uint32_t *rule_separator = s->bytecode + rule[1];
25992
0
            const uint32_t *rule_subpattern = s->bytecode + rule[2];
25993
25994
0
            const uint8_t *chunk_start = text;
25995
0
            const uint8_t *chunk_end = NULL;
25996
25997
0
            while (text <= saved_end) {
25998
                /* Find next split (or end of text) */
25999
0
                CapState cs = cap_save(s);
26000
0
                down1(s);
26001
0
                while (text <= saved_end) {
26002
0
                    chunk_end = text;
26003
0
                    const uint8_t *check = peg_rule(s, rule_separator, text);
26004
0
                    cap_load(s, cs);
26005
0
                    if (check) {
26006
0
                        text = check;
26007
0
                        break;
26008
0
                    }
26009
0
                    text++;
26010
0
                }
26011
0
                up1(s);
26012
26013
                /* Match between splits */
26014
0
                s->text_end = chunk_end;
26015
0
                down1(s);
26016
0
                const uint8_t *subpattern_end = peg_rule(s, rule_subpattern, chunk_start);
26017
0
                up1(s);
26018
0
                s->text_end = saved_end;
26019
0
                if (!subpattern_end) return NULL; /* Don't match anything */
26020
26021
                /* Ensure forward progress */
26022
0
                if (text == chunk_start) return NULL;
26023
0
                chunk_start = text;
26024
0
            }
26025
26026
0
            s->text_end = saved_end;
26027
0
            return s->text_end;
26028
0
        }
26029
26030
0
        case RULE_REPLACE:
26031
0
        case RULE_MATCHTIME: {
26032
0
            uint32_t tag = rule[3];
26033
0
            int oldmode = s->mode;
26034
0
            CapState cs = cap_save(s);
26035
0
            s->mode = PEG_MODE_NORMAL;
26036
0
            down1(s);
26037
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
26038
0
            up1(s);
26039
0
            s->mode = oldmode;
26040
0
            if (!result) return NULL;
26041
26042
0
            Janet cap = janet_wrap_nil();
26043
0
            Janet constant = s->constants[rule[2]];
26044
0
            switch (janet_type(constant)) {
26045
0
                default:
26046
0
                    cap = constant;
26047
0
                    break;
26048
0
                case JANET_STRUCT:
26049
0
                    if (s->captures->count) {
26050
0
                        cap = janet_struct_get(janet_unwrap_struct(constant),
26051
0
                                               s->captures->data[s->captures->count - 1]);
26052
0
                    }
26053
0
                    break;
26054
0
                case JANET_TABLE:
26055
0
                    if (s->captures->count) {
26056
0
                        cap = janet_table_get(janet_unwrap_table(constant),
26057
0
                                              s->captures->data[s->captures->count - 1]);
26058
0
                    }
26059
0
                    break;
26060
0
                case JANET_CFUNCTION:
26061
0
                    cap = janet_unwrap_cfunction(constant)(s->captures->count - cs.cap,
26062
0
                                                           s->captures->data + cs.cap);
26063
0
                    break;
26064
0
                case JANET_FUNCTION:
26065
0
                    cap = janet_call(janet_unwrap_function(constant),
26066
0
                                     s->captures->count - cs.cap,
26067
0
                                     s->captures->data + cs.cap);
26068
0
                    break;
26069
0
            }
26070
0
            cap_load_keept(s, cs);
26071
0
            if (rule[0] == RULE_MATCHTIME && !janet_truthy(cap)) return NULL;
26072
0
            pushcap(s, cap, tag);
26073
0
            return result;
26074
0
        }
26075
26076
0
        case RULE_ERROR: {
26077
0
            int oldmode = s->mode;
26078
0
            s->mode = PEG_MODE_NORMAL;
26079
0
            int32_t old_cap = s->captures->count;
26080
0
            down1(s);
26081
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
26082
0
            up1(s);
26083
0
            s->mode = oldmode;
26084
0
            if (!result) return NULL;
26085
0
            if (s->captures->count > old_cap) {
26086
                /* Throw last capture */
26087
0
                janet_panicv(s->captures->data[s->captures->count - 1]);
26088
0
            } else {
26089
                /* Throw generic error */
26090
0
                int32_t start = (int32_t)(text - s->text_start);
26091
0
                LineCol lc = get_linecol_from_position(s, start);
26092
0
                janet_panicf("match error at line %d, column %d", lc.line, lc.col);
26093
0
            }
26094
0
            return NULL;
26095
0
        }
26096
26097
0
        case RULE_BACKMATCH: {
26098
0
            uint32_t search = rule[1];
26099
0
            for (int32_t i = s->tags->count - 1; i >= 0; i--) {
26100
0
                if (s->tags->data[i] == search) {
26101
0
                    Janet capture = s->tagged_captures->data[i];
26102
0
                    if (!janet_checktype(capture, JANET_STRING))
26103
0
                        return NULL;
26104
0
                    const uint8_t *bytes = janet_unwrap_string(capture);
26105
0
                    int32_t len = janet_string_length(bytes);
26106
0
                    if (text + len > s->text_end)
26107
0
                        return NULL;
26108
0
                    return memcmp(text, bytes, len) ? NULL : text + len;
26109
0
                }
26110
0
            }
26111
0
            return NULL;
26112
0
        }
26113
26114
0
        case RULE_LENPREFIX: {
26115
0
            int oldmode = s->mode;
26116
0
            s->mode = PEG_MODE_NORMAL;
26117
0
            const uint8_t *next_text;
26118
0
            CapState cs = cap_save(s);
26119
0
            down1(s);
26120
0
            next_text = peg_rule(s, s->bytecode + rule[1], text);
26121
0
            up1(s);
26122
0
            if (NULL == next_text) return NULL;
26123
0
            s->mode = oldmode;
26124
0
            int32_t num_sub_captures = s->captures->count - cs.cap;
26125
0
            Janet lencap;
26126
0
            if (num_sub_captures <= 0 ||
26127
0
                    (lencap = s->captures->data[cs.cap], !janet_checkint(lencap))) {
26128
0
                cap_load(s, cs);
26129
0
                return NULL;
26130
0
            }
26131
0
            int32_t nrep = janet_unwrap_integer(lencap);
26132
            /* drop captures from len pattern */
26133
0
            cap_load(s, cs);
26134
0
            for (int32_t i = 0; i < nrep; i++) {
26135
0
                down1(s);
26136
0
                next_text = peg_rule(s, s->bytecode + rule[2], next_text);
26137
0
                up1(s);
26138
0
                if (NULL == next_text) {
26139
0
                    cap_load(s, cs);
26140
0
                    return NULL;
26141
0
                }
26142
0
            }
26143
0
            return next_text;
26144
0
        }
26145
26146
0
        case RULE_READINT: {
26147
0
            uint32_t tag = rule[2];
26148
0
            uint32_t signedness = rule[1] & 0x10;
26149
0
            uint32_t endianness = rule[1] & 0x20;
26150
0
            int width = (int)(rule[1] & 0xF);
26151
0
            if (text + width > s->text_end) return NULL;
26152
0
            uint64_t accum = 0;
26153
0
            if (endianness) {
26154
                /* BE */
26155
0
                for (int i = 0; i < width; i++) accum = (accum << 8) | text[i];
26156
0
            } else {
26157
                /* LE */
26158
0
                for (int i = width - 1; i >= 0; i--) accum = (accum << 8) | text[i];
26159
0
            }
26160
26161
0
            Janet capture_value;
26162
            /* We can only parse integeres of greater than 6 bytes reliable if int-types are enabled.
26163
             * Otherwise, we may lose precision, so 6 is the maximum size when int-types are disabled. */
26164
0
#ifdef JANET_INT_TYPES
26165
0
            if (width > 6) {
26166
0
                if (signedness) {
26167
0
                    capture_value = janet_wrap_s64(peg_convert_u64_s64(accum, width));
26168
0
                } else {
26169
0
                    capture_value = janet_wrap_u64(accum);
26170
0
                }
26171
0
            } else
26172
0
#endif
26173
0
            {
26174
0
                double double_value;
26175
0
                if (signedness) {
26176
0
                    double_value = (double)(peg_convert_u64_s64(accum, width));
26177
0
                } else {
26178
0
                    double_value = (double)accum;
26179
0
                }
26180
0
                capture_value = janet_wrap_number(double_value);
26181
0
            }
26182
26183
0
            pushcap(s, capture_value, tag);
26184
0
            return text + width;
26185
0
        }
26186
26187
0
        case RULE_UNREF: {
26188
0
            int32_t tcap = s->tags->count;
26189
0
            down1(s);
26190
0
            const uint8_t *result = peg_rule(s, s->bytecode + rule[1], text);
26191
0
            up1(s);
26192
0
            if (!result) return NULL;
26193
0
            int32_t final_tcap = s->tags->count;
26194
            /* Truncate tagged captures to not include items of the given tag */
26195
0
            int32_t w = tcap;
26196
            /* If no tag is given, drop ALL tagged captures */
26197
0
            if (rule[2]) {
26198
0
                for (int32_t i = tcap; i < final_tcap; i++) {
26199
0
                    if (s->tags->data[i] != (0xFF & rule[2])) {
26200
0
                        s->tags->data[w] = s->tags->data[i];
26201
0
                        s->tagged_captures->data[w] = s->tagged_captures->data[i];
26202
0
                        w++;
26203
0
                    }
26204
0
                }
26205
0
            }
26206
0
            s->tags->count = w;
26207
0
            s->tagged_captures->count = w;
26208
0
            return result;
26209
0
        }
26210
26211
0
    }
26212
0
}
26213
26214
/*
26215
 * Compilation
26216
 */
26217
26218
typedef struct {
26219
    JanetTable *grammar;
26220
    JanetTable *default_grammar;
26221
    JanetTable *tags;
26222
    Janet *constants;
26223
    uint32_t *bytecode;
26224
    Janet form;
26225
    int depth;
26226
    uint32_t nexttag;
26227
    int has_backref;
26228
} Builder;
26229
26230
/* Forward declaration to allow recursion */
26231
static uint32_t peg_compile1(Builder *b, Janet peg);
26232
26233
/*
26234
 * Errors
26235
 */
26236
26237
0
static void builder_cleanup(Builder *b) {
26238
0
    janet_v_free(b->constants);
26239
0
    janet_v_free(b->bytecode);
26240
0
}
26241
26242
0
JANET_NO_RETURN static void peg_panic(Builder *b, const char *msg) {
26243
0
    builder_cleanup(b);
26244
0
    janet_panicf("grammar error in %p, %s", b->form, msg);
26245
0
}
26246
26247
0
#define peg_panicf(b,...) peg_panic((b), (const char *) janet_formatc(__VA_ARGS__))
26248
26249
0
static void peg_fixarity(Builder *b, int32_t argc, int32_t arity) {
26250
0
    if (argc != arity) {
26251
0
        peg_panicf(b, "expected %d argument%s, got %d",
26252
0
                   arity,
26253
0
                   arity == 1 ? "" : "s",
26254
0
                   argc);
26255
0
    }
26256
0
}
26257
26258
0
static void peg_arity(Builder *b, int32_t arity, int32_t min, int32_t max) {
26259
0
    if (min >= 0 && arity < min)
26260
0
        peg_panicf(b, "arity mismatch, expected at least %d, got %d", min, arity);
26261
0
    if (max >= 0 && arity > max)
26262
0
        peg_panicf(b, "arity mismatch, expected at most %d, got %d", max, arity);
26263
0
}
26264
26265
0
static const uint8_t *peg_getset(Builder *b, Janet x) {
26266
0
    if (!janet_checktype(x, JANET_STRING))
26267
0
        peg_panic(b, "expected string for character set");
26268
0
    const uint8_t *str = janet_unwrap_string(x);
26269
0
    return str;
26270
0
}
26271
26272
0
static const uint8_t *peg_getrange(Builder *b, Janet x) {
26273
0
    if (!janet_checktype(x, JANET_STRING))
26274
0
        peg_panic(b, "expected string for character range");
26275
0
    const uint8_t *str = janet_unwrap_string(x);
26276
0
    if (janet_string_length(str) != 2)
26277
0
        peg_panicf(b, "expected string to have length 2, got %v", x);
26278
0
    if (str[1] < str[0])
26279
0
        peg_panicf(b, "range %v is empty", x);
26280
0
    return str;
26281
0
}
26282
26283
0
static int32_t peg_getinteger(Builder *b, Janet x) {
26284
0
    if (!janet_checkint(x))
26285
0
        peg_panicf(b, "expected integer, got %v", x);
26286
0
    return janet_unwrap_integer(x);
26287
0
}
26288
26289
0
static int32_t peg_getnat(Builder *b, Janet x) {
26290
0
    int32_t i = peg_getinteger(b, x);
26291
0
    if (i < 0)
26292
0
        peg_panicf(b, "expected non-negative integer, got %v", x);
26293
0
    return i;
26294
0
}
26295
26296
/*
26297
 * Emission
26298
 */
26299
26300
0
static uint32_t emit_constant(Builder *b, Janet c) {
26301
0
    uint32_t cindex = (uint32_t) janet_v_count(b->constants);
26302
0
    janet_v_push(b->constants, c);
26303
0
    return cindex;
26304
0
}
26305
26306
0
static uint32_t emit_tag(Builder *b, Janet t) {
26307
0
    if (!janet_checktype(t, JANET_KEYWORD))
26308
0
        peg_panicf(b, "expected keyword for capture tag, got %v", t);
26309
0
    Janet check = janet_table_get(b->tags, t);
26310
0
    if (janet_checktype(check, JANET_NIL)) {
26311
0
        uint32_t tag = b->nexttag++;
26312
0
        if (tag > 255) {
26313
0
            peg_panic(b, "too many tags - up to 255 tags are supported per peg");
26314
0
        }
26315
0
        Janet val = janet_wrap_number(tag);
26316
0
        janet_table_put(b->tags, t, val);
26317
0
        return tag;
26318
0
    } else {
26319
0
        return (uint32_t) janet_unwrap_number(check);
26320
0
    }
26321
0
}
26322
26323
/* Reserve space in bytecode for a rule. When a special emits a rule,
26324
 * it must place that rule immediately on the bytecode stack. This lets
26325
 * the compiler know where the rule is going to be before it is complete,
26326
 * allowing recursive rules. */
26327
typedef struct {
26328
    Builder *builder;
26329
    uint32_t index;
26330
    int32_t size;
26331
} Reserve;
26332
26333
0
static Reserve reserve(Builder *b, int32_t size) {
26334
0
    Reserve r;
26335
0
    r.index = janet_v_count(b->bytecode);
26336
0
    r.builder = b;
26337
0
    r.size = size;
26338
0
    for (int32_t i = 0; i < size; i++)
26339
0
        janet_v_push(b->bytecode, 0);
26340
0
    return r;
26341
0
}
26342
26343
/* Emit a rule in the builder. Returns the index of the new rule */
26344
0
static void emit_rule(Reserve r, int32_t op, int32_t n, const uint32_t *body) {
26345
0
    janet_assert(r.size == n + 1, "bad reserve");
26346
0
    r.builder->bytecode[r.index] = op;
26347
0
    memcpy(r.builder->bytecode + r.index + 1, body, n * sizeof(uint32_t));
26348
0
}
26349
26350
/* For RULE_LITERAL */
26351
0
static void emit_bytes(Builder *b, uint32_t op, int32_t len, const uint8_t *bytes) {
26352
0
    uint32_t next_rule = janet_v_count(b->bytecode);
26353
0
    janet_v_push(b->bytecode, op);
26354
0
    janet_v_push(b->bytecode, len);
26355
0
    int32_t words = ((len + 3) >> 2);
26356
0
    for (int32_t i = 0; i < words; i++)
26357
0
        janet_v_push(b->bytecode, 0);
26358
0
    memcpy(b->bytecode + next_rule + 2, bytes, len);
26359
0
}
26360
26361
/* For fixed arity rules of arities 1, 2, and 3 */
26362
0
static void emit_1(Reserve r, uint32_t op, uint32_t arg) {
26363
0
    emit_rule(r, op, 1, &arg);
26364
0
}
26365
0
static void emit_2(Reserve r, uint32_t op, uint32_t arg1, uint32_t arg2) {
26366
0
    uint32_t arr[2] = {arg1, arg2};
26367
0
    emit_rule(r, op, 2, arr);
26368
0
}
26369
0
static void emit_3(Reserve r, uint32_t op, uint32_t arg1, uint32_t arg2, uint32_t arg3) {
26370
0
    uint32_t arr[3] = {arg1, arg2, arg3};
26371
0
    emit_rule(r, op, 3, arr);
26372
0
}
26373
26374
/*
26375
 * Specials
26376
 */
26377
26378
0
static void bitmap_set(uint32_t *bitmap, uint8_t c) {
26379
0
    bitmap[c >> 5] |= ((uint32_t)1) << (c & 0x1F);
26380
0
}
26381
26382
0
static void spec_range(Builder *b, int32_t argc, const Janet *argv) {
26383
0
    peg_arity(b, argc, 1, -1);
26384
0
    if (argc == 1) {
26385
0
        Reserve r = reserve(b, 2);
26386
0
        const uint8_t *str = peg_getrange(b, argv[0]);
26387
0
        uint32_t arg = str[0] | (str[1] << 16);
26388
0
        emit_1(r, RULE_RANGE, arg);
26389
0
    } else {
26390
        /* Compile as a set */
26391
0
        Reserve r = reserve(b, 9);
26392
0
        uint32_t bitmap[8] = {0};
26393
0
        for (int32_t i = 0; i < argc; i++) {
26394
0
            const uint8_t *str = peg_getrange(b, argv[i]);
26395
0
            for (uint32_t c = str[0]; c <= str[1]; c++)
26396
0
                bitmap_set(bitmap, c);
26397
0
        }
26398
0
        emit_rule(r, RULE_SET, 8, bitmap);
26399
0
    }
26400
0
}
26401
26402
0
static void spec_set(Builder *b, int32_t argc, const Janet *argv) {
26403
0
    peg_fixarity(b, argc, 1);
26404
0
    Reserve r = reserve(b, 9);
26405
0
    const uint8_t *str = peg_getset(b, argv[0]);
26406
0
    uint32_t bitmap[8] = {0};
26407
0
    for (int32_t i = 0; i < janet_string_length(str); i++)
26408
0
        bitmap_set(bitmap, str[i]);
26409
0
    emit_rule(r, RULE_SET, 8, bitmap);
26410
0
}
26411
26412
0
static void spec_look(Builder *b, int32_t argc, const Janet *argv) {
26413
0
    peg_arity(b, argc, 1, 2);
26414
0
    Reserve r = reserve(b, 3);
26415
0
    int32_t rulearg = argc == 2 ? 1 : 0;
26416
0
    int32_t offset = argc == 2 ? peg_getinteger(b, argv[0]) : 0;
26417
0
    uint32_t subrule = peg_compile1(b, argv[rulearg]);
26418
0
    emit_2(r, RULE_LOOK, (uint32_t) offset, subrule);
26419
0
}
26420
26421
/* Rule of the form [len, rules...] */
26422
0
static void spec_variadic(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26423
0
    uint32_t rule = janet_v_count(b->bytecode);
26424
0
    janet_v_push(b->bytecode, op);
26425
0
    janet_v_push(b->bytecode, argc);
26426
0
    for (int32_t i = 0; i < argc; i++)
26427
0
        janet_v_push(b->bytecode, 0);
26428
0
    for (int32_t i = 0; i < argc; i++) {
26429
0
        uint32_t rulei = peg_compile1(b, argv[i]);
26430
0
        b->bytecode[rule + 2 + i] = rulei;
26431
0
    }
26432
0
}
26433
26434
0
static void spec_choice(Builder *b, int32_t argc, const Janet *argv) {
26435
0
    spec_variadic(b, argc, argv, RULE_CHOICE);
26436
0
}
26437
0
static void spec_sequence(Builder *b, int32_t argc, const Janet *argv) {
26438
0
    spec_variadic(b, argc, argv, RULE_SEQUENCE);
26439
0
}
26440
26441
/* For (if a b) and (if-not a b) */
26442
0
static void spec_branch(Builder *b, int32_t argc, const Janet *argv, uint32_t rule) {
26443
0
    peg_fixarity(b, argc, 2);
26444
0
    Reserve r = reserve(b, 3);
26445
0
    uint32_t rule_a = peg_compile1(b, argv[0]);
26446
0
    uint32_t rule_b = peg_compile1(b, argv[1]);
26447
0
    emit_2(r, rule, rule_a, rule_b);
26448
0
}
26449
26450
0
static void spec_if(Builder *b, int32_t argc, const Janet *argv) {
26451
0
    spec_branch(b, argc, argv, RULE_IF);
26452
0
}
26453
0
static void spec_ifnot(Builder *b, int32_t argc, const Janet *argv) {
26454
0
    spec_branch(b, argc, argv, RULE_IFNOT);
26455
0
}
26456
0
static void spec_lenprefix(Builder *b, int32_t argc, const Janet *argv) {
26457
0
    spec_branch(b, argc, argv, RULE_LENPREFIX);
26458
0
}
26459
26460
0
static void spec_between(Builder *b, int32_t argc, const Janet *argv) {
26461
0
    peg_fixarity(b, argc, 3);
26462
0
    Reserve r = reserve(b, 4);
26463
0
    int32_t lo = peg_getnat(b, argv[0]);
26464
0
    int32_t hi = peg_getnat(b, argv[1]);
26465
0
    uint32_t subrule = peg_compile1(b, argv[2]);
26466
0
    emit_3(r, RULE_BETWEEN, lo, hi, subrule);
26467
0
}
26468
26469
0
static void spec_repeater(Builder *b, int32_t argc, const Janet *argv, int32_t min) {
26470
0
    peg_fixarity(b, argc, 1);
26471
0
    Reserve r = reserve(b, 4);
26472
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26473
0
    emit_3(r, RULE_BETWEEN, min, UINT32_MAX, subrule);
26474
0
}
26475
26476
0
static void spec_some(Builder *b, int32_t argc, const Janet *argv) {
26477
0
    spec_repeater(b, argc, argv, 1);
26478
0
}
26479
0
static void spec_any(Builder *b, int32_t argc, const Janet *argv) {
26480
0
    spec_repeater(b, argc, argv, 0);
26481
0
}
26482
26483
0
static void spec_atleast(Builder *b, int32_t argc, const Janet *argv) {
26484
0
    peg_fixarity(b, argc, 2);
26485
0
    Reserve r = reserve(b, 4);
26486
0
    int32_t n = peg_getnat(b, argv[0]);
26487
0
    uint32_t subrule = peg_compile1(b, argv[1]);
26488
0
    emit_3(r, RULE_BETWEEN, n, UINT32_MAX, subrule);
26489
0
}
26490
26491
0
static void spec_atmost(Builder *b, int32_t argc, const Janet *argv) {
26492
0
    peg_fixarity(b, argc, 2);
26493
0
    Reserve r = reserve(b, 4);
26494
0
    int32_t n = peg_getnat(b, argv[0]);
26495
0
    uint32_t subrule = peg_compile1(b, argv[1]);
26496
0
    emit_3(r, RULE_BETWEEN, 0, n, subrule);
26497
0
}
26498
26499
0
static void spec_opt(Builder *b, int32_t argc, const Janet *argv) {
26500
0
    peg_fixarity(b, argc, 1);
26501
0
    Reserve r = reserve(b, 4);
26502
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26503
0
    emit_3(r, RULE_BETWEEN, 0, 1, subrule);
26504
0
}
26505
26506
0
static void spec_repeat(Builder *b, int32_t argc, const Janet *argv) {
26507
0
    peg_fixarity(b, argc, 2);
26508
0
    Reserve r = reserve(b, 4);
26509
0
    int32_t n = peg_getnat(b, argv[0]);
26510
0
    uint32_t subrule = peg_compile1(b, argv[1]);
26511
0
    emit_3(r, RULE_BETWEEN, n, n, subrule);
26512
0
}
26513
26514
/* Rule of the form [rule] */
26515
0
static void spec_onerule(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26516
0
    peg_fixarity(b, argc, 1);
26517
0
    Reserve r = reserve(b, 2);
26518
0
    uint32_t rule = peg_compile1(b, argv[0]);
26519
0
    emit_1(r, op, rule);
26520
0
}
26521
26522
0
static void spec_not(Builder *b, int32_t argc, const Janet *argv) {
26523
0
    spec_onerule(b, argc, argv, RULE_NOT);
26524
0
}
26525
0
static void spec_error(Builder *b, int32_t argc, const Janet *argv) {
26526
0
    if (argc == 0) {
26527
0
        Reserve r = reserve(b, 2);
26528
0
        uint32_t rule = peg_compile1(b, janet_wrap_number(0));
26529
0
        emit_1(r, RULE_ERROR, rule);
26530
0
    } else {
26531
0
        spec_onerule(b, argc, argv, RULE_ERROR);
26532
0
    }
26533
0
}
26534
0
static void spec_to(Builder *b, int32_t argc, const Janet *argv) {
26535
0
    spec_onerule(b, argc, argv, RULE_TO);
26536
0
}
26537
0
static void spec_thru(Builder *b, int32_t argc, const Janet *argv) {
26538
0
    spec_onerule(b, argc, argv, RULE_THRU);
26539
0
}
26540
0
static void spec_drop(Builder *b, int32_t argc, const Janet *argv) {
26541
0
    spec_onerule(b, argc, argv, RULE_DROP);
26542
0
}
26543
0
static void spec_only_tags(Builder *b, int32_t argc, const Janet *argv) {
26544
0
    spec_onerule(b, argc, argv, RULE_ONLY_TAGS);
26545
0
}
26546
26547
/* Rule of the form [rule, tag] */
26548
0
static void spec_cap1(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26549
0
    peg_arity(b, argc, 1, 2);
26550
0
    Reserve r = reserve(b, 3);
26551
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26552
0
    uint32_t rule = peg_compile1(b, argv[0]);
26553
0
    emit_2(r, op, rule, tag);
26554
0
}
26555
26556
0
static void spec_capture(Builder *b, int32_t argc, const Janet *argv) {
26557
0
    spec_cap1(b, argc, argv, RULE_CAPTURE);
26558
0
}
26559
0
static void spec_accumulate(Builder *b, int32_t argc, const Janet *argv) {
26560
0
    spec_cap1(b, argc, argv, RULE_ACCUMULATE);
26561
0
}
26562
0
static void spec_group(Builder *b, int32_t argc, const Janet *argv) {
26563
0
    spec_cap1(b, argc, argv, RULE_GROUP);
26564
0
}
26565
0
static void spec_unref(Builder *b, int32_t argc, const Janet *argv) {
26566
0
    spec_cap1(b, argc, argv, RULE_UNREF);
26567
0
}
26568
26569
0
static void spec_nth(Builder *b, int32_t argc, const Janet *argv) {
26570
0
    peg_arity(b, argc, 2, 3);
26571
0
    Reserve r = reserve(b, 4);
26572
0
    uint32_t nth = peg_getnat(b, argv[0]);
26573
0
    uint32_t rule = peg_compile1(b, argv[1]);
26574
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26575
0
    emit_3(r, RULE_NTH, nth, rule, tag);
26576
0
}
26577
26578
0
static void spec_capture_number(Builder *b, int32_t argc, const Janet *argv) {
26579
0
    peg_arity(b, argc, 1, 3);
26580
0
    Reserve r = reserve(b, 4);
26581
0
    uint32_t base = 0;
26582
0
    if (argc >= 2) {
26583
0
        if (!janet_checktype(argv[1], JANET_NIL)) {
26584
0
            if (!janet_checkint(argv[1])) goto error;
26585
0
            base = (uint32_t) janet_unwrap_integer(argv[1]);
26586
0
            if (base < 2 || base > 36) goto error;
26587
0
        }
26588
0
    }
26589
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26590
0
    uint32_t rule = peg_compile1(b, argv[0]);
26591
0
    emit_3(r, RULE_CAPTURE_NUM, rule, base, tag);
26592
0
    return;
26593
0
error:
26594
0
    peg_panicf(b, "expected integer between 2 and 36, got %v", argv[1]);
26595
0
}
26596
26597
0
static void spec_reference(Builder *b, int32_t argc, const Janet *argv) {
26598
0
    peg_arity(b, argc, 1, 2);
26599
0
    Reserve r = reserve(b, 3);
26600
0
    uint32_t search = emit_tag(b, argv[0]);
26601
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26602
0
    b->has_backref = 1;
26603
0
    emit_2(r, RULE_GETTAG, search, tag);
26604
0
}
26605
26606
0
static void spec_tag1(Builder *b, int32_t argc, const Janet *argv, uint32_t op) {
26607
0
    peg_arity(b, argc, 0, 1);
26608
0
    Reserve r = reserve(b, 2);
26609
0
    uint32_t tag = (argc) ? emit_tag(b, argv[0]) : 0;
26610
0
    (void) argv;
26611
0
    emit_1(r, op, tag);
26612
0
}
26613
26614
0
static void spec_position(Builder *b, int32_t argc, const Janet *argv) {
26615
0
    spec_tag1(b, argc, argv, RULE_POSITION);
26616
0
}
26617
0
static void spec_line(Builder *b, int32_t argc, const Janet *argv) {
26618
0
    spec_tag1(b, argc, argv, RULE_LINE);
26619
0
}
26620
0
static void spec_column(Builder *b, int32_t argc, const Janet *argv) {
26621
0
    spec_tag1(b, argc, argv, RULE_COLUMN);
26622
0
}
26623
26624
0
static void spec_backmatch(Builder *b, int32_t argc, const Janet *argv) {
26625
0
    b->has_backref = 1;
26626
0
    spec_tag1(b, argc, argv, RULE_BACKMATCH);
26627
0
}
26628
26629
0
static void spec_argument(Builder *b, int32_t argc, const Janet *argv) {
26630
0
    peg_arity(b, argc, 1, 2);
26631
0
    Reserve r = reserve(b, 3);
26632
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26633
0
    int32_t index = peg_getnat(b, argv[0]);
26634
0
    emit_2(r, RULE_ARGUMENT, index, tag);
26635
0
}
26636
26637
0
static void spec_constant(Builder *b, int32_t argc, const Janet *argv) {
26638
0
    janet_arity(argc, 1, 2);
26639
0
    Reserve r = reserve(b, 3);
26640
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26641
0
    emit_2(r, RULE_CONSTANT, emit_constant(b, argv[0]), tag);
26642
0
}
26643
26644
0
static void spec_replace(Builder *b, int32_t argc, const Janet *argv) {
26645
0
    peg_arity(b, argc, 2, 3);
26646
0
    Reserve r = reserve(b, 4);
26647
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26648
0
    uint32_t constant = emit_constant(b, argv[1]);
26649
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26650
0
    emit_3(r, RULE_REPLACE, subrule, constant, tag);
26651
0
}
26652
26653
0
static void spec_matchtime(Builder *b, int32_t argc, const Janet *argv) {
26654
0
    peg_arity(b, argc, 2, 3);
26655
0
    Reserve r = reserve(b, 4);
26656
0
    uint32_t subrule = peg_compile1(b, argv[0]);
26657
0
    Janet fun = argv[1];
26658
0
    if (!janet_checktype(fun, JANET_FUNCTION) &&
26659
0
            !janet_checktype(fun, JANET_CFUNCTION)) {
26660
0
        peg_panicf(b, "expected function or cfunction, got %v", fun);
26661
0
    }
26662
0
    uint32_t tag = (argc == 3) ? emit_tag(b, argv[2]) : 0;
26663
0
    uint32_t cindex = emit_constant(b, fun);
26664
0
    emit_3(r, RULE_MATCHTIME, subrule, cindex, tag);
26665
0
}
26666
26667
0
static void spec_sub(Builder *b, int32_t argc, const Janet *argv) {
26668
0
    peg_fixarity(b, argc, 2);
26669
0
    Reserve r = reserve(b, 3);
26670
0
    uint32_t subrule1 = peg_compile1(b, argv[0]);
26671
0
    uint32_t subrule2 = peg_compile1(b, argv[1]);
26672
0
    emit_2(r, RULE_SUB, subrule1, subrule2);
26673
0
}
26674
26675
0
static void spec_til(Builder *b, int32_t argc, const Janet *argv) {
26676
0
    peg_fixarity(b, argc, 2);
26677
0
    Reserve r = reserve(b, 3);
26678
0
    uint32_t subrule1 = peg_compile1(b, argv[0]);
26679
0
    uint32_t subrule2 = peg_compile1(b, argv[1]);
26680
0
    emit_2(r, RULE_TIL, subrule1, subrule2);
26681
0
}
26682
26683
0
static void spec_split(Builder *b, int32_t argc, const Janet *argv) {
26684
0
    peg_fixarity(b, argc, 2);
26685
0
    Reserve r = reserve(b, 3);
26686
0
    uint32_t subrule1 = peg_compile1(b, argv[0]);
26687
0
    uint32_t subrule2 = peg_compile1(b, argv[1]);
26688
0
    emit_2(r, RULE_SPLIT, subrule1, subrule2);
26689
0
}
26690
26691
#ifdef JANET_INT_TYPES
26692
0
#define JANET_MAX_READINT_WIDTH 8
26693
#else
26694
#define JANET_MAX_READINT_WIDTH 6
26695
#endif
26696
26697
0
static void spec_readint(Builder *b, int32_t argc, const Janet *argv, uint32_t mask) {
26698
0
    peg_arity(b, argc, 1, 2);
26699
0
    Reserve r = reserve(b, 3);
26700
0
    uint32_t tag = (argc == 2) ? emit_tag(b, argv[1]) : 0;
26701
0
    int32_t width = peg_getnat(b, argv[0]);
26702
0
    if ((width < 0) || (width > JANET_MAX_READINT_WIDTH)) {
26703
0
        peg_panicf(b, "width must be between 0 and %d, got %d", JANET_MAX_READINT_WIDTH, width);
26704
0
    }
26705
0
    emit_2(r, RULE_READINT, mask | ((uint32_t) width), tag);
26706
0
}
26707
26708
0
static void spec_uint_le(Builder *b, int32_t argc, const Janet *argv) {
26709
0
    spec_readint(b, argc, argv, 0x0u);
26710
0
}
26711
0
static void spec_int_le(Builder *b, int32_t argc, const Janet *argv) {
26712
0
    spec_readint(b, argc, argv, 0x10u);
26713
0
}
26714
0
static void spec_uint_be(Builder *b, int32_t argc, const Janet *argv) {
26715
0
    spec_readint(b, argc, argv, 0x20u);
26716
0
}
26717
0
static void spec_int_be(Builder *b, int32_t argc, const Janet *argv) {
26718
0
    spec_readint(b, argc, argv, 0x30u);
26719
0
}
26720
26721
/* Special compiler form */
26722
typedef void (*Special)(Builder *b, int32_t argc, const Janet *argv);
26723
typedef struct {
26724
    const char *name;
26725
    Special special;
26726
} SpecialPair;
26727
26728
/* Keep in lexical order (vim :sort works well) */
26729
static const SpecialPair peg_specials[] = {
26730
    {"!", spec_not},
26731
    {"$", spec_position},
26732
    {"%", spec_accumulate},
26733
    {"*", spec_sequence},
26734
    {"+", spec_choice},
26735
    {"->", spec_reference},
26736
    {"/", spec_replace},
26737
    {"<-", spec_capture},
26738
    {">", spec_look},
26739
    {"?", spec_opt},
26740
    {"accumulate", spec_accumulate},
26741
    {"any", spec_any},
26742
    {"argument", spec_argument},
26743
    {"at-least", spec_atleast},
26744
    {"at-most", spec_atmost},
26745
    {"backmatch", spec_backmatch},
26746
    {"backref", spec_reference},
26747
    {"between", spec_between},
26748
    {"capture", spec_capture},
26749
    {"choice", spec_choice},
26750
    {"cmt", spec_matchtime},
26751
    {"column", spec_column},
26752
    {"constant", spec_constant},
26753
    {"drop", spec_drop},
26754
    {"error", spec_error},
26755
    {"group", spec_group},
26756
    {"if", spec_if},
26757
    {"if-not", spec_ifnot},
26758
    {"int", spec_int_le},
26759
    {"int-be", spec_int_be},
26760
    {"lenprefix", spec_lenprefix},
26761
    {"line", spec_line},
26762
    {"look", spec_look},
26763
    {"not", spec_not},
26764
    {"nth", spec_nth},
26765
    {"number", spec_capture_number},
26766
    {"only-tags", spec_only_tags},
26767
    {"opt", spec_opt},
26768
    {"position", spec_position},
26769
    {"quote", spec_capture},
26770
    {"range", spec_range},
26771
    {"repeat", spec_repeat},
26772
    {"replace", spec_replace},
26773
    {"sequence", spec_sequence},
26774
    {"set", spec_set},
26775
    {"some", spec_some},
26776
    {"split", spec_split},
26777
    {"sub", spec_sub},
26778
    {"thru", spec_thru},
26779
    {"til", spec_til},
26780
    {"to", spec_to},
26781
    {"uint", spec_uint_le},
26782
    {"uint-be", spec_uint_be},
26783
    {"unref", spec_unref},
26784
};
26785
26786
/* Compile a janet value into a rule and return the rule index. */
26787
0
static uint32_t peg_compile1(Builder *b, Janet peg) {
26788
26789
    /* Keep track of the form being compiled for error purposes */
26790
0
    Janet old_form = b->form;
26791
0
    JanetTable *old_grammar = b->grammar;
26792
0
    b->form = peg;
26793
26794
    /* Resolve keyword references */
26795
0
    int i = JANET_RECURSION_GUARD;
26796
0
    JanetTable *grammar = old_grammar;
26797
0
    for (; i > 0 && janet_checktype(peg, JANET_KEYWORD); --i) {
26798
0
        Janet nextPeg = janet_table_get_ex(grammar, peg, &grammar);
26799
0
        if (!grammar || janet_checktype(nextPeg, JANET_NIL)) {
26800
0
            nextPeg = (b->default_grammar == NULL)
26801
0
                      ? janet_wrap_nil()
26802
0
                      : janet_table_get(b->default_grammar, peg);
26803
0
            if (janet_checktype(nextPeg, JANET_NIL)) {
26804
0
                peg_panic(b, "unknown rule");
26805
0
            }
26806
0
        }
26807
0
        peg = nextPeg;
26808
0
        b->form = peg;
26809
0
        b->grammar = grammar;
26810
0
    }
26811
0
    if (i == 0)
26812
0
        peg_panic(b, "reference chain too deep");
26813
26814
    /* Check cache - for tuples we check only the local cache, as
26815
     * in a different grammar, the same tuple can compile to a different
26816
     * rule - for example, (+ :a :b) depends on whatever :a and :b are bound to. */
26817
0
    Janet check = janet_checktype(peg, JANET_TUPLE)
26818
0
                  ? janet_table_rawget(grammar, peg)
26819
0
                  : janet_table_get(grammar, peg);
26820
0
    if (!janet_checktype(check, JANET_NIL)) {
26821
0
        b->form = old_form;
26822
0
        b->grammar = old_grammar;
26823
0
        return (uint32_t) janet_unwrap_number(check);
26824
0
    }
26825
26826
    /* Check depth */
26827
0
    if (b->depth-- == 0)
26828
0
        peg_panic(b, "peg grammar recursed too deeply");
26829
26830
    /* The final rule to return */
26831
0
    uint32_t rule = janet_v_count(b->bytecode);
26832
26833
    /* Add to cache. Do not cache structs, as we don't yet know
26834
     * what rule they will return! We can just as effectively cache
26835
     * the structs main rule. */
26836
0
    if (!janet_checktype(peg, JANET_STRUCT)) {
26837
0
        JanetTable *which_grammar = grammar;
26838
        /* If we are a primitive pattern, add to the global cache (root grammar table) */
26839
0
        if (!janet_checktype(peg, JANET_TUPLE)) {
26840
0
            while (which_grammar->proto)
26841
0
                which_grammar = which_grammar->proto;
26842
0
        }
26843
0
        janet_table_put(which_grammar, peg, janet_wrap_number(rule));
26844
0
    }
26845
26846
0
    switch (janet_type(peg)) {
26847
0
        default:
26848
0
            peg_panic(b, "unexpected peg source");
26849
0
            return 0;
26850
26851
0
        case JANET_BOOLEAN: {
26852
0
            int n = janet_unwrap_boolean(peg);
26853
0
            Reserve r = reserve(b, 2);
26854
0
            emit_1(r, n ? RULE_NCHAR : RULE_NOTNCHAR, 0);
26855
0
            break;
26856
0
        }
26857
0
        case JANET_NUMBER: {
26858
0
            int32_t n = peg_getinteger(b, peg);
26859
0
            Reserve r = reserve(b, 2);
26860
0
            if (n < 0) {
26861
0
                emit_1(r, RULE_NOTNCHAR, -n);
26862
0
            } else {
26863
0
                emit_1(r, RULE_NCHAR, n);
26864
0
            }
26865
0
            break;
26866
0
        }
26867
0
        case JANET_STRING: {
26868
0
            const uint8_t *str = janet_unwrap_string(peg);
26869
0
            int32_t len = janet_string_length(str);
26870
0
            emit_bytes(b, RULE_LITERAL, len, str);
26871
0
            break;
26872
0
        }
26873
0
        case JANET_BUFFER: {
26874
0
            const JanetBuffer *buf = janet_unwrap_buffer(peg);
26875
0
            emit_bytes(b, RULE_LITERAL, buf->count, buf->data);
26876
0
            break;
26877
0
        }
26878
0
        case JANET_TABLE: {
26879
            /* Build grammar table */
26880
0
            JanetTable *new_grammar = janet_table_clone(janet_unwrap_table(peg));
26881
0
            new_grammar->proto = grammar;
26882
0
            b->grammar = grammar = new_grammar;
26883
            /* Run the main rule */
26884
0
            Janet main_rule = janet_table_rawget(grammar, janet_ckeywordv("main"));
26885
0
            if (janet_checktype(main_rule, JANET_NIL))
26886
0
                peg_panic(b, "grammar requires :main rule");
26887
0
            rule = peg_compile1(b, main_rule);
26888
0
            break;
26889
0
        }
26890
0
        case JANET_STRUCT: {
26891
            /* Build grammar table */
26892
0
            const JanetKV *st = janet_unwrap_struct(peg);
26893
0
            JanetTable *new_grammar = janet_table(2 * janet_struct_capacity(st));
26894
0
            for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
26895
0
                if (janet_checktype(st[i].key, JANET_KEYWORD)) {
26896
0
                    janet_table_put(new_grammar, st[i].key, st[i].value);
26897
0
                }
26898
0
            }
26899
0
            new_grammar->proto = grammar;
26900
0
            b->grammar = grammar = new_grammar;
26901
            /* Run the main rule */
26902
0
            Janet main_rule = janet_table_rawget(grammar, janet_ckeywordv("main"));
26903
0
            if (janet_checktype(main_rule, JANET_NIL))
26904
0
                peg_panic(b, "grammar requires :main rule");
26905
0
            rule = peg_compile1(b, main_rule);
26906
0
            break;
26907
0
        }
26908
0
        case JANET_TUPLE: {
26909
0
            const Janet *tup = janet_unwrap_tuple(peg);
26910
0
            int32_t len = janet_tuple_length(tup);
26911
0
            if (len == 0) peg_panic(b, "tuple in grammar must have non-zero length");
26912
0
            if (janet_checkint(tup[0])) {
26913
0
                int32_t n = janet_unwrap_integer(tup[0]);
26914
0
                if (n < 0) {
26915
0
                    peg_panicf(b, "expected non-negative integer, got %d", n);
26916
0
                }
26917
0
                spec_repeat(b, len, tup);
26918
0
                break;
26919
0
            }
26920
0
            if (!janet_checktype(tup[0], JANET_SYMBOL))
26921
0
                peg_panicf(b, "expected grammar command, found %v", tup[0]);
26922
0
            const uint8_t *sym = janet_unwrap_symbol(tup[0]);
26923
0
            const SpecialPair *sp = janet_strbinsearch(
26924
0
                                        &peg_specials,
26925
0
                                        sizeof(peg_specials) / sizeof(SpecialPair),
26926
0
                                        sizeof(SpecialPair),
26927
0
                                        sym);
26928
0
            if (sp) {
26929
0
                sp->special(b, len - 1, tup + 1);
26930
0
            } else {
26931
0
                peg_panicf(b, "unknown special %S", sym);
26932
0
            }
26933
0
            break;
26934
0
        }
26935
0
    }
26936
26937
    /* Increase depth again */
26938
0
    b->depth++;
26939
0
    b->form = old_form;
26940
0
    b->grammar = old_grammar;
26941
0
    return rule;
26942
0
}
26943
26944
/*
26945
 * Post-Compilation
26946
 */
26947
26948
0
static int peg_mark(void *p, size_t size) {
26949
0
    (void) size;
26950
0
    JanetPeg *peg = (JanetPeg *)p;
26951
0
    if (NULL != peg->constants)
26952
0
        for (uint32_t i = 0; i < peg->num_constants; i++)
26953
0
            janet_mark(peg->constants[i]);
26954
0
    return 0;
26955
0
}
26956
26957
0
static void peg_marshal(void *p, JanetMarshalContext *ctx) {
26958
0
    JanetPeg *peg = (JanetPeg *)p;
26959
0
    janet_marshal_size(ctx, peg->bytecode_len);
26960
0
    janet_marshal_int(ctx, (int32_t)peg->num_constants);
26961
0
    janet_marshal_abstract(ctx, p);
26962
0
    for (size_t i = 0; i < peg->bytecode_len; i++)
26963
0
        janet_marshal_int(ctx, (int32_t) peg->bytecode[i]);
26964
0
    for (uint32_t j = 0; j < peg->num_constants; j++)
26965
0
        janet_marshal_janet(ctx, peg->constants[j]);
26966
0
}
26967
26968
/* Used to ensure that if we place several arrays in one memory chunk, each
26969
 * array will be correctly aligned */
26970
0
static size_t size_padded(size_t offset, size_t size) {
26971
0
    size_t x = size + offset - 1;
26972
0
    return x - (x % size);
26973
0
}
26974
26975
0
static void *peg_unmarshal(JanetMarshalContext *ctx) {
26976
0
    size_t bytecode_len = janet_unmarshal_size(ctx);
26977
0
    uint32_t num_constants = (uint32_t) janet_unmarshal_int(ctx);
26978
26979
    /* Calculate offsets. Should match those in make_peg */
26980
0
    size_t bytecode_start = size_padded(sizeof(JanetPeg), sizeof(uint32_t));
26981
0
    size_t bytecode_size = bytecode_len * sizeof(uint32_t);
26982
0
    size_t constants_start = size_padded(bytecode_start + bytecode_size, sizeof(Janet));
26983
0
    size_t total_size = constants_start + sizeof(Janet) * (size_t) num_constants;
26984
26985
    /* DOS prevention? I.E. we could read bytecode and constants before
26986
     * hand so we don't allocated a ton of memory on bad, short input */
26987
26988
    /* Allocate PEG */
26989
0
    char *mem = janet_unmarshal_abstract(ctx, total_size);
26990
0
    JanetPeg *peg = (JanetPeg *)mem;
26991
0
    uint32_t *bytecode = (uint32_t *)(mem + bytecode_start);
26992
0
    Janet *constants = (Janet *)(mem + constants_start);
26993
0
    peg->bytecode = NULL;
26994
0
    peg->constants = NULL;
26995
0
    peg->bytecode_len = bytecode_len;
26996
0
    peg->num_constants = num_constants;
26997
26998
0
    for (size_t i = 0; i < peg->bytecode_len; i++)
26999
0
        bytecode[i] = (uint32_t) janet_unmarshal_int(ctx);
27000
0
    for (uint32_t j = 0; j < peg->num_constants; j++)
27001
0
        constants[j] = janet_unmarshal_janet(ctx);
27002
27003
    /* After here, no panics except for the bad: label. */
27004
27005
    /* Keep track at each index if an instruction was
27006
     * reference (0x01) or is in a main bytecode position
27007
     * (0x02). This lets us do a linear scan and not
27008
     * need to a depth first traversal. It is stricter
27009
     * than a dfs by not allowing certain kinds of unused
27010
     * bytecode. */
27011
0
    uint32_t blen = (int32_t) peg->bytecode_len;
27012
0
    uint32_t clen = peg->num_constants;
27013
0
    uint8_t *op_flags = janet_calloc(1, blen);
27014
0
    if (NULL == op_flags) {
27015
0
        JANET_OUT_OF_MEMORY;
27016
0
    }
27017
27018
    /* verify peg bytecode */
27019
0
    int32_t has_backref = 0;
27020
0
    uint32_t i = 0;
27021
0
    while (i < blen) {
27022
0
        uint32_t instr = bytecode[i];
27023
0
        uint32_t *rule = bytecode + i;
27024
0
        op_flags[i] |= 0x02;
27025
0
        switch (instr) {
27026
0
            case RULE_LITERAL:
27027
0
                i += 2 + ((rule[1] + 3) >> 2);
27028
0
                break;
27029
0
            case RULE_NCHAR:
27030
0
            case RULE_NOTNCHAR:
27031
0
            case RULE_RANGE:
27032
0
            case RULE_POSITION:
27033
0
            case RULE_LINE:
27034
0
            case RULE_COLUMN:
27035
                /* [1 word] */
27036
0
                i += 2;
27037
0
                break;
27038
0
            case RULE_BACKMATCH:
27039
                /* [1 word] */
27040
0
                i += 2;
27041
0
                has_backref = 1;
27042
0
                break;
27043
0
            case RULE_SET:
27044
                /* [8 words] */
27045
0
                i += 9;
27046
0
                break;
27047
0
            case RULE_LOOK:
27048
                /* [offset, rule] */
27049
0
                if (rule[2] >= blen) goto bad;
27050
0
                op_flags[rule[2]] |= 0x1;
27051
0
                i += 3;
27052
0
                break;
27053
0
            case RULE_CHOICE:
27054
0
            case RULE_SEQUENCE:
27055
                /* [len, rules...] */
27056
0
            {
27057
0
                uint32_t len = rule[1];
27058
0
                for (uint32_t j = 0; j < len; j++) {
27059
0
                    if (rule[2 + j] >= blen) goto bad;
27060
0
                    op_flags[rule[2 + j]] |= 0x1;
27061
0
                }
27062
0
                i += 2 + len;
27063
0
            }
27064
0
            break;
27065
0
            case RULE_IF:
27066
0
            case RULE_IFNOT:
27067
0
            case RULE_LENPREFIX:
27068
                /* [rule_a, rule_b (b if not a)] */
27069
0
                if (rule[1] >= blen) goto bad;
27070
0
                if (rule[2] >= blen) goto bad;
27071
0
                op_flags[rule[1]] |= 0x01;
27072
0
                op_flags[rule[2]] |= 0x01;
27073
0
                i += 3;
27074
0
                break;
27075
0
            case RULE_BETWEEN:
27076
                /* [lo, hi, rule] */
27077
0
                if (rule[3] >= blen) goto bad;
27078
0
                op_flags[rule[3]] |= 0x01;
27079
0
                i += 4;
27080
0
                break;
27081
0
            case RULE_ARGUMENT:
27082
                /* [searchtag, tag] */
27083
0
                i += 3;
27084
0
                break;
27085
0
            case RULE_GETTAG:
27086
                /* [searchtag, tag] */
27087
0
                i += 3;
27088
0
                has_backref = 1;
27089
0
                break;
27090
0
            case RULE_CONSTANT:
27091
                /* [constant, tag] */
27092
0
                if (rule[1] >= clen) goto bad;
27093
0
                i += 3;
27094
0
                break;
27095
0
            case RULE_CAPTURE_NUM:
27096
                /* [rule, base, tag] */
27097
0
                if (rule[1] >= blen) goto bad;
27098
0
                op_flags[rule[1]] |= 0x01;
27099
0
                i += 4;
27100
0
                break;
27101
0
            case RULE_ACCUMULATE:
27102
0
            case RULE_GROUP:
27103
0
            case RULE_CAPTURE:
27104
0
            case RULE_UNREF:
27105
                /* [rule, tag] */
27106
0
                if (rule[1] >= blen) goto bad;
27107
0
                op_flags[rule[1]] |= 0x01;
27108
0
                i += 3;
27109
0
                break;
27110
0
            case RULE_REPLACE:
27111
0
            case RULE_MATCHTIME:
27112
                /* [rule, constant, tag] */
27113
0
                if (rule[1] >= blen) goto bad;
27114
0
                if (rule[2] >= clen) goto bad;
27115
0
                op_flags[rule[1]] |= 0x01;
27116
0
                i += 4;
27117
0
                break;
27118
0
            case RULE_SUB:
27119
0
            case RULE_TIL:
27120
0
            case RULE_SPLIT:
27121
                /* [rule, rule] */
27122
0
                if (rule[1] >= blen) goto bad;
27123
0
                if (rule[2] >= blen) goto bad;
27124
0
                op_flags[rule[1]] |= 0x01;
27125
0
                op_flags[rule[2]] |= 0x01;
27126
0
                i += 3;
27127
0
                break;
27128
0
            case RULE_ERROR:
27129
0
            case RULE_DROP:
27130
0
            case RULE_ONLY_TAGS:
27131
0
            case RULE_NOT:
27132
0
            case RULE_TO:
27133
0
            case RULE_THRU:
27134
                /* [rule] */
27135
0
                if (rule[1] >= blen) goto bad;
27136
0
                op_flags[rule[1]] |= 0x01;
27137
0
                i += 2;
27138
0
                break;
27139
0
            case RULE_READINT:
27140
                /* [ width | (endianness << 5) | (signedness << 6), tag ] */
27141
0
                if (rule[1] > JANET_MAX_READINT_WIDTH) goto bad;
27142
0
                i += 3;
27143
0
                break;
27144
0
            case RULE_NTH:
27145
                /* [nth, rule, tag] */
27146
0
                if (rule[2] >= blen) goto bad;
27147
0
                op_flags[rule[2]] |= 0x01;
27148
0
                i += 4;
27149
0
                break;
27150
0
            default:
27151
0
                goto bad;
27152
0
        }
27153
0
    }
27154
27155
    /* last instruction cannot overflow */
27156
0
    if (i != blen) goto bad;
27157
27158
    /* Make sure all referenced instructions are actually
27159
     * in instruction positions. */
27160
0
    for (i = 0; i < blen; i++)
27161
0
        if (op_flags[i] == 0x01) goto bad;
27162
27163
    /* Good return */
27164
0
    peg->bytecode = bytecode;
27165
0
    peg->constants = constants;
27166
0
    peg->has_backref = has_backref;
27167
0
    janet_free(op_flags);
27168
0
    return peg;
27169
27170
0
bad:
27171
0
    janet_free(op_flags);
27172
0
    janet_panic("invalid peg bytecode");
27173
0
}
27174
27175
static int cfun_peg_getter(JanetAbstract a, Janet key, Janet *out);
27176
static Janet peg_next(void *p, Janet key);
27177
27178
const JanetAbstractType janet_peg_type = {
27179
    "core/peg",
27180
    NULL,
27181
    peg_mark,
27182
    cfun_peg_getter,
27183
    NULL, /* put */
27184
    peg_marshal,
27185
    peg_unmarshal,
27186
    NULL, /* tostring */
27187
    NULL, /* compare */
27188
    NULL, /* hash */
27189
    peg_next,
27190
    JANET_ATEND_NEXT
27191
};
27192
27193
/* Convert Builder to JanetPeg (Janet Abstract Value) */
27194
0
static JanetPeg *make_peg(Builder *b) {
27195
0
    size_t bytecode_start = size_padded(sizeof(JanetPeg), sizeof(uint32_t));
27196
0
    size_t bytecode_size = janet_v_count(b->bytecode) * sizeof(uint32_t);
27197
0
    size_t constants_start = size_padded(bytecode_start + bytecode_size, sizeof(Janet));
27198
0
    size_t constants_size = janet_v_count(b->constants) * sizeof(Janet);
27199
0
    size_t total_size = constants_start + constants_size;
27200
0
    char *mem = janet_abstract(&janet_peg_type, total_size);
27201
0
    JanetPeg *peg = (JanetPeg *)mem;
27202
0
    peg->bytecode = (uint32_t *)(mem + bytecode_start);
27203
0
    peg->constants = (Janet *)(mem + constants_start);
27204
0
    peg->num_constants = janet_v_count(b->constants);
27205
0
    safe_memcpy(peg->bytecode, b->bytecode, bytecode_size);
27206
0
    safe_memcpy(peg->constants, b->constants, constants_size);
27207
0
    peg->bytecode_len = janet_v_count(b->bytecode);
27208
0
    peg->has_backref = b->has_backref;
27209
0
    return peg;
27210
0
}
27211
27212
/* Compiler entry point */
27213
0
static JanetPeg *compile_peg(Janet x) {
27214
0
    Builder builder;
27215
0
    builder.grammar = janet_table(0);
27216
0
    builder.default_grammar = NULL;
27217
0
    {
27218
0
        Janet default_grammarv = janet_dyn("peg-grammar");
27219
0
        if (janet_checktype(default_grammarv, JANET_TABLE)) {
27220
0
            builder.default_grammar = janet_unwrap_table(default_grammarv);
27221
0
        }
27222
0
    }
27223
0
    builder.tags = janet_table(0);
27224
0
    builder.constants = NULL;
27225
0
    builder.bytecode = NULL;
27226
0
    builder.nexttag = 1;
27227
0
    builder.form = x;
27228
0
    builder.depth = JANET_RECURSION_GUARD;
27229
0
    builder.has_backref = 0;
27230
0
    peg_compile1(&builder, x);
27231
0
    JanetPeg *peg = make_peg(&builder);
27232
0
    builder_cleanup(&builder);
27233
0
    return peg;
27234
0
}
27235
27236
/*
27237
 * C Functions
27238
 */
27239
27240
JANET_CORE_FN(cfun_peg_compile,
27241
              "(peg/compile peg)",
27242
              "Compiles a peg source data structure into a <core/peg>. This will speed up matching "
27243
              "if the same peg will be used multiple times. Will also use `(dyn :peg-grammar)` to supplement "
27244
0
              "the grammar of the peg for otherwise undefined peg keywords.") {
27245
0
    janet_fixarity(argc, 1);
27246
0
    JanetPeg *peg = compile_peg(argv[0]);
27247
0
    return janet_wrap_abstract(peg);
27248
0
}
27249
27250
/* Common data for peg cfunctions */
27251
typedef struct {
27252
    JanetPeg *peg;
27253
    PegState s;
27254
    JanetByteView bytes;
27255
    Janet subst;
27256
    int32_t start;
27257
} PegCall;
27258
27259
/* Initialize state for peg cfunctions */
27260
0
static PegCall peg_cfun_init(int32_t argc, Janet *argv, int get_replace) {
27261
0
    PegCall ret;
27262
0
    int32_t min = get_replace ? 3 : 2;
27263
0
    janet_arity(argc, min, -1);
27264
0
    if (janet_checktype(argv[0], JANET_ABSTRACT) &&
27265
0
            janet_abstract_type(janet_unwrap_abstract(argv[0])) == &janet_peg_type) {
27266
0
        ret.peg = janet_unwrap_abstract(argv[0]);
27267
0
    } else {
27268
0
        ret.peg = compile_peg(argv[0]);
27269
0
    }
27270
0
    if (get_replace) {
27271
0
        ret.subst = argv[1];
27272
0
        ret.bytes = janet_getbytes(argv, 2);
27273
0
    } else {
27274
0
        ret.bytes = janet_getbytes(argv, 1);
27275
0
    }
27276
0
    if (argc > min) {
27277
0
        ret.start = janet_gethalfrange(argv, min, ret.bytes.len, "offset");
27278
0
        ret.s.extrac = argc - min - 1;
27279
0
        ret.s.extrav = janet_tuple_n(argv + min + 1, argc - min - 1);
27280
0
    } else {
27281
0
        ret.start = 0;
27282
0
        ret.s.extrac = 0;
27283
0
        ret.s.extrav = NULL;
27284
0
    }
27285
0
    ret.s.mode = PEG_MODE_NORMAL;
27286
0
    ret.s.text_start = ret.bytes.bytes;
27287
0
    ret.s.text_end = ret.bytes.bytes + ret.bytes.len;
27288
0
    ret.s.outer_text_end = ret.s.text_end;
27289
0
    ret.s.depth = JANET_RECURSION_GUARD;
27290
0
    ret.s.captures = janet_array(0);
27291
0
    ret.s.tagged_captures = janet_array(0);
27292
0
    ret.s.scratch = janet_buffer(10);
27293
0
    ret.s.tags = janet_buffer(10);
27294
0
    ret.s.constants = ret.peg->constants;
27295
0
    ret.s.bytecode = ret.peg->bytecode;
27296
0
    ret.s.linemap = NULL;
27297
0
    ret.s.linemaplen = -1;
27298
0
    ret.s.has_backref = ret.peg->has_backref;
27299
0
    return ret;
27300
0
}
27301
27302
0
static void peg_call_reset(PegCall *c) {
27303
0
    c->s.depth = JANET_RECURSION_GUARD;
27304
0
    c->s.captures->count = 0;
27305
0
    c->s.tagged_captures->count = 0;
27306
0
    c->s.scratch->count = 0;
27307
0
    c->s.tags->count = 0;
27308
0
}
27309
27310
JANET_CORE_FN(cfun_peg_match,
27311
              "(peg/match peg text &opt start & args)",
27312
              "Match a Parsing Expression Grammar to a byte string and return an array of captured values. "
27313
0
              "Returns nil if text does not match the language defined by peg. The syntax of PEGs is documented on the Janet website.") {
27314
0
    PegCall c = peg_cfun_init(argc, argv, 0);
27315
0
    const uint8_t *result = peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + c.start);
27316
0
    return result ? janet_wrap_array(c.s.captures) : janet_wrap_nil();
27317
0
}
27318
27319
JANET_CORE_FN(cfun_peg_find,
27320
              "(peg/find peg text &opt start & args)",
27321
0
              "Find first index where the peg matches in text. Returns an integer, or nil if not found.") {
27322
0
    PegCall c = peg_cfun_init(argc, argv, 0);
27323
0
    for (int32_t i = c.start; i < c.bytes.len; i++) {
27324
0
        peg_call_reset(&c);
27325
0
        if (peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i))
27326
0
            return janet_wrap_integer(i);
27327
0
    }
27328
0
    return janet_wrap_nil();
27329
0
}
27330
27331
JANET_CORE_FN(cfun_peg_find_all,
27332
              "(peg/find-all peg text &opt start & args)",
27333
0
              "Find all indexes where the peg matches in text. Returns an array of integers.") {
27334
0
    PegCall c = peg_cfun_init(argc, argv, 0);
27335
0
    JanetArray *ret = janet_array(0);
27336
0
    for (int32_t i = c.start; i < c.bytes.len; i++) {
27337
0
        peg_call_reset(&c);
27338
0
        if (peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i))
27339
0
            janet_array_push(ret, janet_wrap_integer(i));
27340
0
    }
27341
0
    return janet_wrap_array(ret);
27342
0
}
27343
27344
0
static Janet cfun_peg_replace_generic(int32_t argc, Janet *argv, int only_one) {
27345
0
    PegCall c = peg_cfun_init(argc, argv, 1);
27346
0
    JanetBuffer *ret = janet_buffer(0);
27347
0
    int32_t trail = 0;
27348
0
    for (int32_t i = c.start; i < c.bytes.len;) {
27349
0
        peg_call_reset(&c);
27350
0
        const uint8_t *result = peg_rule(&c.s, c.s.bytecode, c.bytes.bytes + i);
27351
0
        if (NULL != result) {
27352
0
            if (trail < i) {
27353
0
                janet_buffer_push_bytes(ret, c.bytes.bytes + trail, (i - trail));
27354
0
                trail = i;
27355
0
            }
27356
0
            int32_t nexti = (int32_t)(result - c.bytes.bytes);
27357
0
            JanetByteView subst = janet_text_substitution(&c.subst, c.bytes.bytes + i, nexti - i, c.s.captures);
27358
0
            janet_buffer_push_bytes(ret, subst.bytes, subst.len);
27359
0
            trail = nexti;
27360
0
            if (nexti == i) nexti++;
27361
0
            i = nexti;
27362
0
            if (only_one) break;
27363
0
        } else {
27364
0
            i++;
27365
0
        }
27366
0
    }
27367
0
    if (trail < c.bytes.len) {
27368
0
        janet_buffer_push_bytes(ret, c.bytes.bytes + trail, (c.bytes.len - trail));
27369
0
    }
27370
0
    return janet_wrap_buffer(ret);
27371
0
}
27372
27373
JANET_CORE_FN(cfun_peg_replace_all,
27374
              "(peg/replace-all peg subst text &opt start & args)",
27375
              "Replace all matches of `peg` in `text` with `subst`, returning a new buffer. "
27376
              "The peg does not need to make captures to do replacement. "
27377
              "If `subst` is a function, it will be called with the "
27378
0
              "matching text followed by any captures.") {
27379
0
    return cfun_peg_replace_generic(argc, argv, 0);
27380
0
}
27381
27382
JANET_CORE_FN(cfun_peg_replace,
27383
              "(peg/replace peg subst text &opt start & args)",
27384
              "Replace first match of `peg` in `text` with `subst`, returning a new buffer. "
27385
              "The peg does not need to make captures to do replacement. "
27386
              "If `subst` is a function, it will be called with the "
27387
              "matching text followed by any captures. "
27388
0
              "If no matches are found, returns the input string in a new buffer.") {
27389
0
    return cfun_peg_replace_generic(argc, argv, 1);
27390
0
}
27391
27392
static JanetMethod peg_methods[] = {
27393
    {"match", cfun_peg_match},
27394
    {"find", cfun_peg_find},
27395
    {"find-all", cfun_peg_find_all},
27396
    {"replace", cfun_peg_replace},
27397
    {"replace-all", cfun_peg_replace_all},
27398
    {NULL, NULL}
27399
};
27400
27401
0
static int cfun_peg_getter(JanetAbstract a, Janet key, Janet *out) {
27402
0
    (void) a;
27403
0
    if (!janet_checktype(key, JANET_KEYWORD))
27404
0
        return 0;
27405
0
    return janet_getmethod(janet_unwrap_keyword(key), peg_methods, out);
27406
0
}
27407
27408
0
static Janet peg_next(void *p, Janet key) {
27409
0
    (void) p;
27410
0
    return janet_nextmethod(peg_methods, key);
27411
0
}
27412
27413
/* Load the peg module */
27414
0
void janet_lib_peg(JanetTable *env) {
27415
0
    JanetRegExt cfuns[] = {
27416
0
        JANET_CORE_REG("peg/compile", cfun_peg_compile),
27417
0
        JANET_CORE_REG("peg/match", cfun_peg_match),
27418
0
        JANET_CORE_REG("peg/find", cfun_peg_find),
27419
0
        JANET_CORE_REG("peg/find-all", cfun_peg_find_all),
27420
0
        JANET_CORE_REG("peg/replace", cfun_peg_replace),
27421
0
        JANET_CORE_REG("peg/replace-all", cfun_peg_replace_all),
27422
0
        JANET_REG_END
27423
0
    };
27424
0
    janet_core_cfuns_ext(env, NULL, cfuns);
27425
0
    janet_register_abstract_type(&janet_peg_type);
27426
0
}
27427
27428
#endif /* ifdef JANET_PEG */
27429
27430
27431
/* src/core/pp.c */
27432
#line 0 "src/core/pp.c"
27433
27434
/*
27435
* Copyright (c) 2025 Calvin Rose
27436
*
27437
* Permission is hereby granted, free of charge, to any person obtaining a copy
27438
* of this software and associated documentation files (the "Software"), to
27439
* deal in the Software without restriction, including without limitation the
27440
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
27441
* sell copies of the Software, and to permit persons to whom the Software is
27442
* furnished to do so, subject to the following conditions:
27443
*
27444
* The above copyright notice and this permission notice shall be included in
27445
* all copies or substantial portions of the Software.
27446
*
27447
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
27448
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27449
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
27450
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27451
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
27452
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
27453
* IN THE SOFTWARE.
27454
*/
27455
27456
#ifndef JANET_AMALG
27457
#include "features.h"
27458
#include <janet.h>
27459
#include "util.h"
27460
#include "state.h"
27461
#include <math.h>
27462
#endif
27463
27464
#include <string.h>
27465
#include <ctype.h>
27466
#include <inttypes.h>
27467
#include <float.h>
27468
27469
/* Implements a pretty printer for Janet. The pretty printer
27470
 * is simple and not that flexible, but fast. */
27471
27472
/* Temporary buffer size */
27473
0
#define BUFSIZE 64
27474
27475
/* Preprocessor hacks */
27476
#define STR_HELPER(x) #x
27477
#define STR(x) STR_HELPER(x)
27478
27479
0
static void number_to_string_b(JanetBuffer *buffer, double x) {
27480
0
    janet_buffer_ensure(buffer, buffer->count + BUFSIZE, 2);
27481
0
    const char *fmt = (x == floor(x) &&
27482
0
                       x <= JANET_INTMAX_DOUBLE &&
27483
0
                       x >= JANET_INTMIN_DOUBLE) ? "%.0f" : ("%." STR(DBL_DIG) "g");
27484
0
    int count;
27485
0
    if (x == 0.0) {
27486
        /* Prevent printing of '-0' */
27487
0
        count = 1;
27488
0
        buffer->data[buffer->count] = '0';
27489
0
    } else {
27490
0
        count = snprintf((char *) buffer->data + buffer->count, BUFSIZE, fmt, x);
27491
0
    }
27492
0
    buffer->count += count;
27493
0
}
27494
27495
/* expects non positive x */
27496
0
static int count_dig10(int32_t x) {
27497
0
    int result = 1;
27498
0
    for (;;) {
27499
0
        if (x > -10) return result;
27500
0
        if (x > -100) return result + 1;
27501
0
        if (x > -1000) return result + 2;
27502
0
        if (x > -10000) return result + 3;
27503
0
        x /= 10000;
27504
0
        result += 4;
27505
0
    }
27506
0
}
27507
27508
0
static void integer_to_string_b(JanetBuffer *buffer, int32_t x) {
27509
0
    janet_buffer_extra(buffer, BUFSIZE);
27510
0
    uint8_t *buf = buffer->data + buffer->count;
27511
0
    int32_t neg = 0;
27512
0
    int32_t len = 0;
27513
0
    if (x == 0) {
27514
0
        buf[0] = '0';
27515
0
        buffer->count++;
27516
0
        return;
27517
0
    }
27518
0
    if (x > 0) {
27519
0
        x = -x;
27520
0
    } else {
27521
0
        neg = 1;
27522
0
        *buf++ = '-';
27523
0
    }
27524
0
    len = count_dig10(x);
27525
0
    buf += len;
27526
0
    while (x) {
27527
0
        uint8_t digit = (uint8_t) - (x % 10);
27528
0
        *(--buf) = '0' + digit;
27529
0
        x /= 10;
27530
0
    }
27531
0
    buffer->count += len + neg;
27532
0
}
27533
27534
0
#define HEX(i) (((uint8_t *) janet_base64)[(i)])
27535
27536
/* Returns a string description for a pointer. Truncates
27537
 * title to 32 characters */
27538
0
static void string_description_b(JanetBuffer *buffer, const char *title, void *pointer) {
27539
0
    janet_buffer_ensure(buffer, buffer->count + BUFSIZE, 2);
27540
0
    uint8_t *c = buffer->data + buffer->count;
27541
0
    int32_t i;
27542
0
    union {
27543
0
        uint8_t bytes[sizeof(void *)];
27544
0
        void *p;
27545
0
    } pbuf;
27546
27547
0
    pbuf.p = pointer;
27548
0
    *c++ = '<';
27549
    /* Maximum of 32 bytes for abstract type name */
27550
0
    for (i = 0; i < 32 && title[i]; ++i)
27551
0
        *c++ = ((uint8_t *)title) [i];
27552
0
    *c++ = ' ';
27553
0
    *c++ = '0';
27554
0
    *c++ = 'x';
27555
0
#if defined(JANET_64)
27556
0
#define POINTSIZE 6
27557
#else
27558
#define POINTSIZE (sizeof(void *))
27559
#endif
27560
0
    for (i = POINTSIZE; i > 0; --i) {
27561
0
        uint8_t byte = pbuf.bytes[i - 1];
27562
0
        *c++ = HEX(byte >> 4);
27563
0
        *c++ = HEX(byte & 0xF);
27564
0
    }
27565
0
    *c++ = '>';
27566
0
    buffer->count = (int32_t)(c - buffer->data);
27567
0
#undef POINTSIZE
27568
0
}
27569
27570
0
static void janet_escape_string_impl(JanetBuffer *buffer, const uint8_t *str, int32_t len) {
27571
0
    janet_buffer_push_u8(buffer, '"');
27572
0
    for (int32_t i = 0; i < len; ++i) {
27573
0
        uint8_t c = str[i];
27574
0
        switch (c) {
27575
0
            case '"':
27576
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\\"", 2);
27577
0
                break;
27578
0
            case '\n':
27579
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\n", 2);
27580
0
                break;
27581
0
            case '\r':
27582
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\r", 2);
27583
0
                break;
27584
0
            case '\0':
27585
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\0", 2);
27586
0
                break;
27587
0
            case '\f':
27588
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\f", 2);
27589
0
                break;
27590
0
            case '\v':
27591
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\v", 2);
27592
0
                break;
27593
0
            case '\a':
27594
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\a", 2);
27595
0
                break;
27596
0
            case '\b':
27597
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\b", 2);
27598
0
                break;
27599
0
            case 27:
27600
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\e", 2);
27601
0
                break;
27602
0
            case '\\':
27603
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\\\", 2);
27604
0
                break;
27605
0
            case '\t':
27606
0
                janet_buffer_push_bytes(buffer, (const uint8_t *)"\\t", 2);
27607
0
                break;
27608
0
            default:
27609
0
                if (c < 32 || c > 126) {
27610
0
                    uint8_t buf[4];
27611
0
                    buf[0] = '\\';
27612
0
                    buf[1] = 'x';
27613
0
                    buf[2] = janet_base64[(c >> 4) & 0xF];
27614
0
                    buf[3] = janet_base64[c & 0xF];
27615
0
                    janet_buffer_push_bytes(buffer, buf, 4);
27616
0
                } else {
27617
0
                    janet_buffer_push_u8(buffer, c);
27618
0
                }
27619
0
                break;
27620
0
        }
27621
0
    }
27622
0
    janet_buffer_push_u8(buffer, '"');
27623
0
}
27624
27625
0
static void janet_escape_string_b(JanetBuffer *buffer, const uint8_t *str) {
27626
0
    janet_escape_string_impl(buffer, str, janet_string_length(str));
27627
0
}
27628
27629
0
static void janet_escape_buffer_b(JanetBuffer *buffer, JanetBuffer *bx) {
27630
0
    if (bx == buffer) {
27631
        /* Ensures buffer won't resize while escaping */
27632
0
        janet_buffer_ensure(bx, bx->count + 5 * bx->count + 3, 1);
27633
0
    }
27634
0
    janet_buffer_push_u8(buffer, '@');
27635
0
    janet_escape_string_impl(buffer, bx->data, bx->count);
27636
0
}
27637
27638
0
void janet_to_string_b(JanetBuffer *buffer, Janet x) {
27639
0
    switch (janet_type(x)) {
27640
0
        case JANET_NIL:
27641
0
            janet_buffer_push_cstring(buffer, "");
27642
0
            break;
27643
0
        case JANET_BOOLEAN:
27644
0
            janet_buffer_push_cstring(buffer,
27645
0
                                      janet_unwrap_boolean(x) ? "true" : "false");
27646
0
            break;
27647
0
        case JANET_NUMBER:
27648
0
            number_to_string_b(buffer, janet_unwrap_number(x));
27649
0
            break;
27650
0
        case JANET_STRING:
27651
0
        case JANET_SYMBOL:
27652
0
        case JANET_KEYWORD:
27653
0
            janet_buffer_push_bytes(buffer,
27654
0
                                    janet_unwrap_string(x),
27655
0
                                    janet_string_length(janet_unwrap_string(x)));
27656
0
            break;
27657
0
        case JANET_BUFFER: {
27658
0
            JanetBuffer *to = janet_unwrap_buffer(x);
27659
            /* Prevent resizing buffer while appending */
27660
0
            if (buffer == to) janet_buffer_extra(buffer, to->count);
27661
0
            janet_buffer_push_bytes(buffer, to->data, to->count);
27662
0
            break;
27663
0
        }
27664
0
        case JANET_ABSTRACT: {
27665
0
            JanetAbstract p = janet_unwrap_abstract(x);
27666
0
            const JanetAbstractType *t = janet_abstract_type(p);
27667
0
            if (t->tostring != NULL) {
27668
0
                t->tostring(p, buffer);
27669
0
            } else {
27670
0
                string_description_b(buffer, t->name, p);
27671
0
            }
27672
0
        }
27673
0
        return;
27674
0
        case JANET_CFUNCTION: {
27675
0
            JanetCFunRegistry *reg = janet_registry_get(janet_unwrap_cfunction(x));
27676
0
            if (NULL != reg) {
27677
0
                janet_buffer_push_cstring(buffer, "<cfunction ");
27678
0
                if (NULL != reg->name_prefix) {
27679
0
                    janet_buffer_push_cstring(buffer, reg->name_prefix);
27680
0
                    janet_buffer_push_u8(buffer, '/');
27681
0
                }
27682
0
                janet_buffer_push_cstring(buffer, reg->name);
27683
0
                janet_buffer_push_u8(buffer, '>');
27684
0
                break;
27685
0
            }
27686
0
            goto fallthrough;
27687
0
        }
27688
0
        case JANET_FUNCTION: {
27689
0
            JanetFunction *fun = janet_unwrap_function(x);
27690
0
            JanetFuncDef *def = fun->def;
27691
0
            if (def == NULL) {
27692
0
                janet_buffer_push_cstring(buffer, "<incomplete function>");
27693
0
                break;
27694
0
            }
27695
0
            if (def->name) {
27696
0
                const uint8_t *n = def->name;
27697
0
                janet_buffer_push_cstring(buffer, "<function ");
27698
0
                janet_buffer_push_bytes(buffer, n, janet_string_length(n));
27699
0
                janet_buffer_push_u8(buffer, '>');
27700
0
                break;
27701
0
            }
27702
0
            goto fallthrough;
27703
0
        }
27704
0
    fallthrough:
27705
0
        default:
27706
0
            string_description_b(buffer, janet_type_names[janet_type(x)], janet_unwrap_pointer(x));
27707
0
            break;
27708
0
    }
27709
0
}
27710
27711
/* See parse.c for full table */
27712
27713
/* Check if a symbol or keyword contains no symbol characters */
27714
0
static int contains_bad_chars(const uint8_t *sym, int issym) {
27715
0
    int32_t len = janet_string_length(sym);
27716
0
    if (len && issym && sym[0] >= '0' && sym[0] <= '9') return 1;
27717
0
    if (!janet_valid_utf8(sym, len)) return 1;
27718
0
    for (int32_t i = 0; i < len; i++) {
27719
0
        if (!janet_is_symbol_char(sym[i])) return 1;
27720
0
    }
27721
0
    return 0;
27722
0
}
27723
27724
0
void janet_description_b(JanetBuffer *buffer, Janet x) {
27725
0
    switch (janet_type(x)) {
27726
0
        default:
27727
0
            break;
27728
0
        case JANET_NIL:
27729
0
            janet_buffer_push_cstring(buffer, "nil");
27730
0
            return;
27731
0
        case JANET_KEYWORD:
27732
0
            janet_buffer_push_u8(buffer, ':');
27733
0
            break;
27734
0
        case JANET_STRING:
27735
0
            janet_escape_string_b(buffer, janet_unwrap_string(x));
27736
0
            return;
27737
0
        case JANET_BUFFER: {
27738
0
            JanetBuffer *b = janet_unwrap_buffer(x);
27739
0
            janet_escape_buffer_b(buffer, b);
27740
0
            return;
27741
0
        }
27742
0
        case JANET_ABSTRACT: {
27743
0
            JanetAbstract p = janet_unwrap_abstract(x);
27744
0
            const JanetAbstractType *t = janet_abstract_type(p);
27745
0
            if (t->tostring != NULL) {
27746
0
                janet_buffer_push_cstring(buffer, "<");
27747
0
                janet_buffer_push_cstring(buffer, t->name);
27748
0
                janet_buffer_push_cstring(buffer, " ");
27749
0
                t->tostring(p, buffer);
27750
0
                janet_buffer_push_cstring(buffer, ">");
27751
0
            } else {
27752
0
                string_description_b(buffer, t->name, p);
27753
0
            }
27754
0
            return;
27755
0
        }
27756
0
    }
27757
0
    janet_to_string_b(buffer, x);
27758
0
}
27759
27760
0
const uint8_t *janet_description(Janet x) {
27761
0
    JanetBuffer b;
27762
0
    janet_buffer_init(&b, 10);
27763
0
    janet_description_b(&b, x);
27764
0
    const uint8_t *ret = janet_string(b.data, b.count);
27765
0
    janet_buffer_deinit(&b);
27766
0
    return ret;
27767
0
}
27768
27769
/* Convert any value to a janet string. Similar to description, but
27770
 * strings, symbols, and buffers will return their content. */
27771
0
const uint8_t *janet_to_string(Janet x) {
27772
0
    switch (janet_type(x)) {
27773
0
        default: {
27774
0
            JanetBuffer b;
27775
0
            janet_buffer_init(&b, 10);
27776
0
            janet_to_string_b(&b, x);
27777
0
            const uint8_t *ret = janet_string(b.data, b.count);
27778
0
            janet_buffer_deinit(&b);
27779
0
            return ret;
27780
0
        }
27781
0
        case JANET_BUFFER:
27782
0
            return janet_string(janet_unwrap_buffer(x)->data, janet_unwrap_buffer(x)->count);
27783
0
        case JANET_STRING:
27784
0
        case JANET_SYMBOL:
27785
0
        case JANET_KEYWORD:
27786
0
            return janet_unwrap_string(x);
27787
0
    }
27788
0
}
27789
27790
/* Hold state for pretty printer. */
27791
struct pretty {
27792
    JanetBuffer *buffer;
27793
    int depth;
27794
    int indent;
27795
    int flags;
27796
    int32_t bufstartlen;
27797
    int32_t *keysort_buffer;
27798
    int32_t keysort_capacity;
27799
    int32_t keysort_start;
27800
    JanetTable seen;
27801
};
27802
27803
/* Print jdn format */
27804
0
static int print_jdn_one(struct pretty *S, Janet x, int depth) {
27805
0
    if (depth == 0) return 1;
27806
0
    switch (janet_type(x)) {
27807
0
        case JANET_NIL:
27808
0
        case JANET_BOOLEAN:
27809
0
        case JANET_BUFFER:
27810
0
        case JANET_STRING:
27811
0
            janet_description_b(S->buffer, x);
27812
0
            break;
27813
0
        case JANET_NUMBER:
27814
0
            janet_buffer_ensure(S->buffer, S->buffer->count + BUFSIZE, 2);
27815
0
            double num = janet_unwrap_number(x);
27816
0
            if (isnan(num)) return 1;
27817
0
            if (isinf(num)) return 1;
27818
0
            janet_buffer_dtostr(S->buffer, num);
27819
0
            break;
27820
0
        case JANET_SYMBOL:
27821
0
        case JANET_KEYWORD:
27822
0
            if (contains_bad_chars(janet_unwrap_keyword(x), janet_type(x) == JANET_SYMBOL)) return 1;
27823
0
            janet_description_b(S->buffer, x);
27824
0
            break;
27825
0
        case JANET_TUPLE: {
27826
0
            JanetTuple t = janet_unwrap_tuple(x);
27827
0
            int isb = janet_tuple_flag(t) & JANET_TUPLE_FLAG_BRACKETCTOR;
27828
0
            janet_buffer_push_u8(S->buffer, isb ? '[' : '(');
27829
0
            for (int32_t i = 0; i < janet_tuple_length(t); i++) {
27830
0
                if (i) janet_buffer_push_u8(S->buffer, ' ');
27831
0
                if (print_jdn_one(S, t[i], depth - 1)) return 1;
27832
0
            }
27833
0
            janet_buffer_push_u8(S->buffer, isb ? ']' : ')');
27834
0
        }
27835
0
        break;
27836
0
        case JANET_ARRAY: {
27837
0
            janet_table_put(&S->seen, x, janet_wrap_true());
27838
0
            JanetArray *a = janet_unwrap_array(x);
27839
0
            janet_buffer_push_cstring(S->buffer, "@[");
27840
0
            for (int32_t i = 0; i < a->count; i++) {
27841
0
                if (i) janet_buffer_push_u8(S->buffer, ' ');
27842
0
                if (print_jdn_one(S, a->data[i], depth - 1)) return 1;
27843
0
            }
27844
0
            janet_buffer_push_u8(S->buffer, ']');
27845
0
        }
27846
0
        break;
27847
0
        case JANET_TABLE: {
27848
0
            janet_table_put(&S->seen, x, janet_wrap_true());
27849
0
            JanetTable *tab = janet_unwrap_table(x);
27850
0
            janet_buffer_push_cstring(S->buffer, "@{");
27851
0
            int isFirst = 1;
27852
0
            for (int32_t i = 0; i < tab->capacity; i++) {
27853
0
                const JanetKV *kv = tab->data + i;
27854
0
                if (janet_checktype(kv->key, JANET_NIL)) continue;
27855
0
                if (!isFirst) janet_buffer_push_u8(S->buffer, ' ');
27856
0
                isFirst = 0;
27857
0
                if (print_jdn_one(S, kv->key, depth - 1)) return 1;
27858
0
                janet_buffer_push_u8(S->buffer, ' ');
27859
0
                if (print_jdn_one(S, kv->value, depth - 1)) return 1;
27860
0
            }
27861
0
            janet_buffer_push_u8(S->buffer, '}');
27862
0
        }
27863
0
        break;
27864
0
        case JANET_STRUCT: {
27865
0
            JanetStruct st = janet_unwrap_struct(x);
27866
0
            janet_buffer_push_u8(S->buffer, '{');
27867
0
            int isFirst = 1;
27868
0
            for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
27869
0
                const JanetKV *kv = st + i;
27870
0
                if (janet_checktype(kv->key, JANET_NIL)) continue;
27871
0
                if (!isFirst) janet_buffer_push_u8(S->buffer, ' ');
27872
0
                isFirst = 0;
27873
0
                if (print_jdn_one(S, kv->key, depth - 1)) return 1;
27874
0
                janet_buffer_push_u8(S->buffer, ' ');
27875
0
                if (print_jdn_one(S, kv->value, depth - 1)) return 1;
27876
0
            }
27877
0
            janet_buffer_push_u8(S->buffer, '}');
27878
0
        }
27879
0
        break;
27880
0
        default:
27881
0
            return 1;
27882
0
    }
27883
0
    return 0;
27884
0
}
27885
27886
0
static void print_newline(struct pretty *S, int just_a_space) {
27887
0
    int i;
27888
0
    if (just_a_space || (S->flags & JANET_PRETTY_ONELINE)) {
27889
0
        janet_buffer_push_u8(S->buffer, ' ');
27890
0
        return;
27891
0
    }
27892
0
    janet_buffer_push_u8(S->buffer, '\n');
27893
0
    for (i = 0; i < S->indent; i++) {
27894
0
        janet_buffer_push_u8(S->buffer, ' ');
27895
0
    }
27896
0
}
27897
27898
/* Color coding for types */
27899
static const char janet_cycle_color[] = "\x1B[36m";
27900
static const char janet_class_color[] = "\x1B[34m";
27901
static const char *janet_pretty_colors[] = {
27902
    "\x1B[32m",
27903
    "\x1B[36m",
27904
    "\x1B[36m",
27905
    "\x1B[36m",
27906
    "\x1B[35m",
27907
    "\x1B[34m",
27908
    "\x1B[33m",
27909
    "\x1B[36m",
27910
    "\x1B[36m",
27911
    "\x1B[36m",
27912
    "\x1B[36m",
27913
    "\x1B[35m",
27914
    "\x1B[36m",
27915
    "\x1B[36m",
27916
    "\x1B[36m",
27917
    "\x1B[36m"
27918
};
27919
27920
0
#define JANET_PRETTY_DICT_ONELINE 4
27921
0
#define JANET_PRETTY_IND_ONELINE 10
27922
0
#define JANET_PRETTY_DICT_LIMIT 30
27923
0
#define JANET_PRETTY_ARRAY_LIMIT 160
27924
27925
/* Helper for pretty printing */
27926
0
static void janet_pretty_one(struct pretty *S, Janet x, int is_dict_value) {
27927
    /* Add to seen */
27928
0
    switch (janet_type(x)) {
27929
0
        case JANET_NIL:
27930
0
        case JANET_NUMBER:
27931
0
        case JANET_SYMBOL:
27932
0
        case JANET_BOOLEAN:
27933
0
            break;
27934
0
        default: {
27935
0
            Janet seenid = janet_table_get(&S->seen, x);
27936
0
            if (janet_checktype(seenid, JANET_NUMBER)) {
27937
0
                if (S->flags & JANET_PRETTY_COLOR) {
27938
0
                    janet_buffer_push_cstring(S->buffer, janet_cycle_color);
27939
0
                }
27940
0
                janet_buffer_push_cstring(S->buffer, "<cycle ");
27941
0
                integer_to_string_b(S->buffer, janet_unwrap_integer(seenid));
27942
0
                janet_buffer_push_u8(S->buffer, '>');
27943
0
                if (S->flags & JANET_PRETTY_COLOR) {
27944
0
                    janet_buffer_push_cstring(S->buffer, "\x1B[0m");
27945
0
                }
27946
0
                return;
27947
0
            } else {
27948
0
                janet_table_put(&S->seen, x, janet_wrap_integer(S->seen.count));
27949
0
                break;
27950
0
            }
27951
0
        }
27952
0
    }
27953
27954
0
    switch (janet_type(x)) {
27955
0
        default: {
27956
0
            const char *color = janet_pretty_colors[janet_type(x)];
27957
0
            if (color && (S->flags & JANET_PRETTY_COLOR)) {
27958
0
                janet_buffer_push_cstring(S->buffer, color);
27959
0
            }
27960
0
            if (janet_checktype(x, JANET_BUFFER) && janet_unwrap_buffer(x) == S->buffer) {
27961
0
                janet_buffer_ensure(S->buffer, S->buffer->count + S->bufstartlen * 4 + 3, 1);
27962
0
                janet_buffer_push_u8(S->buffer, '@');
27963
0
                janet_escape_string_impl(S->buffer, S->buffer->data, S->bufstartlen);
27964
0
            } else {
27965
0
                janet_description_b(S->buffer, x);
27966
0
            }
27967
0
            if (color && (S->flags & JANET_PRETTY_COLOR)) {
27968
0
                janet_buffer_push_cstring(S->buffer, "\x1B[0m");
27969
0
            }
27970
0
            break;
27971
0
        }
27972
0
        case JANET_ARRAY:
27973
0
        case JANET_TUPLE: {
27974
0
            int32_t i = 0, len = 0;
27975
0
            const Janet *arr = NULL;
27976
0
            int isarray = janet_checktype(x, JANET_ARRAY);
27977
0
            janet_indexed_view(x, &arr, &len);
27978
0
            int hasbrackets = !isarray && (janet_tuple_flag(arr) & JANET_TUPLE_FLAG_BRACKETCTOR);
27979
0
            const char *startstr = isarray ? "@[" : hasbrackets ? "[" : "(";
27980
0
            const char endchar = isarray ? ']' : hasbrackets ? ']' : ')';
27981
0
            janet_buffer_push_cstring(S->buffer, startstr);
27982
0
            S->depth--;
27983
0
            S->indent += 2;
27984
0
            if (S->depth == 0) {
27985
0
                janet_buffer_push_cstring(S->buffer, "...");
27986
0
            } else {
27987
0
                if (!isarray && !(S->flags & JANET_PRETTY_ONELINE) && len >= JANET_PRETTY_IND_ONELINE)
27988
0
                    janet_buffer_push_u8(S->buffer, ' ');
27989
0
                if (is_dict_value && len >= JANET_PRETTY_IND_ONELINE) print_newline(S, 0);
27990
0
                if (len > JANET_PRETTY_ARRAY_LIMIT && !(S->flags & JANET_PRETTY_NOTRUNC)) {
27991
0
                    for (i = 0; i < 3; i++) {
27992
0
                        if (i) print_newline(S, 0);
27993
0
                        janet_pretty_one(S, arr[i], 0);
27994
0
                    }
27995
0
                    print_newline(S, 0);
27996
0
                    janet_buffer_push_cstring(S->buffer, "...");
27997
0
                    for (i = 0; i < 3; i++) {
27998
0
                        print_newline(S, 0);
27999
0
                        janet_pretty_one(S, arr[len - 3 + i], 0);
28000
0
                    }
28001
0
                } else {
28002
0
                    for (i = 0; i < len; i++) {
28003
0
                        if (i) print_newline(S, len < JANET_PRETTY_IND_ONELINE);
28004
0
                        janet_pretty_one(S, arr[i], 0);
28005
0
                    }
28006
0
                }
28007
0
            }
28008
0
            S->indent -= 2;
28009
0
            S->depth++;
28010
0
            janet_buffer_push_u8(S->buffer, endchar);
28011
0
            break;
28012
0
        }
28013
0
        case JANET_STRUCT:
28014
0
        case JANET_TABLE: {
28015
0
            int istable = janet_checktype(x, JANET_TABLE);
28016
28017
            /* For object-like tables, print class name */
28018
0
            if (istable) {
28019
0
                JanetTable *t = janet_unwrap_table(x);
28020
0
                JanetTable *proto = t->proto;
28021
0
                janet_buffer_push_cstring(S->buffer, "@");
28022
0
                if (NULL != proto) {
28023
0
                    Janet name = janet_table_get(proto, janet_ckeywordv("_name"));
28024
0
                    const uint8_t *n;
28025
0
                    int32_t len;
28026
0
                    if (janet_bytes_view(name, &n, &len)) {
28027
0
                        if (S->flags & JANET_PRETTY_COLOR) {
28028
0
                            janet_buffer_push_cstring(S->buffer, janet_class_color);
28029
0
                        }
28030
0
                        janet_buffer_push_bytes(S->buffer, n, len);
28031
0
                        if (S->flags & JANET_PRETTY_COLOR) {
28032
0
                            janet_buffer_push_cstring(S->buffer, "\x1B[0m");
28033
0
                        }
28034
0
                    }
28035
0
                }
28036
0
            } else {
28037
0
                JanetStruct st = janet_unwrap_struct(x);
28038
0
                JanetStruct proto = janet_struct_proto(st);
28039
0
                if (NULL != proto) {
28040
0
                    Janet name = janet_struct_get(proto, janet_ckeywordv("_name"));
28041
0
                    const uint8_t *n;
28042
0
                    int32_t len;
28043
0
                    if (janet_bytes_view(name, &n, &len)) {
28044
0
                        if (S->flags & JANET_PRETTY_COLOR) {
28045
0
                            janet_buffer_push_cstring(S->buffer, janet_class_color);
28046
0
                        }
28047
0
                        janet_buffer_push_bytes(S->buffer, n, len);
28048
0
                        if (S->flags & JANET_PRETTY_COLOR) {
28049
0
                            janet_buffer_push_cstring(S->buffer, "\x1B[0m");
28050
0
                        }
28051
0
                    }
28052
0
                }
28053
0
            }
28054
0
            janet_buffer_push_cstring(S->buffer, "{");
28055
28056
0
            S->depth--;
28057
0
            S->indent += 2;
28058
0
            if (S->depth == 0) {
28059
0
                janet_buffer_push_cstring(S->buffer, "...");
28060
0
            } else {
28061
0
                int32_t i = 0, len = 0, cap = 0;
28062
0
                const JanetKV *kvs = NULL;
28063
0
                janet_dictionary_view(x, &kvs, &len, &cap);
28064
0
                if (!istable && !(S->flags & JANET_PRETTY_ONELINE) && len >= JANET_PRETTY_DICT_ONELINE)
28065
0
                    janet_buffer_push_u8(S->buffer, ' ');
28066
0
                if (is_dict_value && len >= JANET_PRETTY_DICT_ONELINE) print_newline(S, 0);
28067
0
                int32_t ks_start = S->keysort_start;
28068
28069
                /* Ensure buffer is large enough to sort keys. */
28070
0
                int truncated = 0;
28071
0
                int64_t mincap = (int64_t) len + (int64_t) ks_start;
28072
0
                if (mincap > INT32_MAX) {
28073
0
                    truncated = 1;
28074
0
                    len = 0;
28075
0
                    mincap = ks_start;
28076
0
                }
28077
28078
0
                if (S->keysort_capacity < mincap) {
28079
0
                    if (mincap >= INT32_MAX / 2) {
28080
0
                        S->keysort_capacity = INT32_MAX;
28081
0
                    } else {
28082
0
                        S->keysort_capacity = (int32_t)(mincap * 2);
28083
0
                    }
28084
0
                    S->keysort_buffer = janet_srealloc(S->keysort_buffer, sizeof(int32_t) * S->keysort_capacity);
28085
0
                    if (NULL == S->keysort_buffer) {
28086
0
                        JANET_OUT_OF_MEMORY;
28087
0
                    }
28088
0
                }
28089
28090
0
                janet_sorted_keys(kvs, cap, S->keysort_buffer == NULL ? NULL : S->keysort_buffer + ks_start);
28091
0
                S->keysort_start += len;
28092
0
                if (!(S->flags & JANET_PRETTY_NOTRUNC) && (len > JANET_PRETTY_DICT_LIMIT)) {
28093
0
                    len = JANET_PRETTY_DICT_LIMIT;
28094
0
                    truncated = 1;
28095
0
                }
28096
28097
0
                for (i = 0; i < len; i++) {
28098
0
                    if (i) print_newline(S, len < JANET_PRETTY_DICT_ONELINE);
28099
0
                    int32_t j = S->keysort_buffer[i + ks_start];
28100
0
                    janet_pretty_one(S, kvs[j].key, 0);
28101
0
                    janet_buffer_push_u8(S->buffer, ' ');
28102
0
                    janet_pretty_one(S, kvs[j].value, 1);
28103
0
                }
28104
28105
0
                if (truncated) {
28106
0
                    print_newline(S, 0);
28107
0
                    janet_buffer_push_cstring(S->buffer, "...");
28108
0
                }
28109
28110
0
                S->keysort_start = ks_start;
28111
0
            }
28112
0
            S->indent -= 2;
28113
0
            S->depth++;
28114
0
            janet_buffer_push_u8(S->buffer, '}');
28115
0
            break;
28116
0
        }
28117
0
    }
28118
    /* Remove from seen */
28119
0
    janet_table_remove(&S->seen, x);
28120
0
    return;
28121
0
}
28122
28123
0
static JanetBuffer *janet_pretty_(JanetBuffer *buffer, int depth, int flags, Janet x, int32_t startlen) {
28124
0
    struct pretty S;
28125
0
    if (NULL == buffer) {
28126
0
        buffer = janet_buffer(0);
28127
0
    }
28128
0
    S.buffer = buffer;
28129
0
    S.depth = depth;
28130
0
    S.indent = 0;
28131
0
    S.flags = flags;
28132
0
    S.bufstartlen = startlen;
28133
0
    S.keysort_capacity = 0;
28134
0
    S.keysort_buffer = NULL;
28135
0
    S.keysort_start = 0;
28136
0
    janet_table_init(&S.seen, 10);
28137
0
    janet_pretty_one(&S, x, 0);
28138
0
    janet_table_deinit(&S.seen);
28139
0
    return S.buffer;
28140
0
}
28141
28142
/* Helper for printing a janet value in a pretty form. Not meant to be used
28143
 * for serialization or anything like that. */
28144
0
JanetBuffer *janet_pretty(JanetBuffer *buffer, int depth, int flags, Janet x) {
28145
0
    return janet_pretty_(buffer, depth, flags, x, buffer ? buffer->count : 0);
28146
0
}
28147
28148
0
static JanetBuffer *janet_jdn_(JanetBuffer *buffer, int depth, Janet x, int32_t startlen) {
28149
0
    struct pretty S;
28150
0
    if (NULL == buffer) {
28151
0
        buffer = janet_buffer(0);
28152
0
    }
28153
0
    S.buffer = buffer;
28154
0
    S.depth = depth;
28155
0
    S.indent = 0;
28156
0
    S.flags = 0;
28157
0
    S.bufstartlen = startlen;
28158
0
    S.keysort_capacity = 0;
28159
0
    S.keysort_buffer = NULL;
28160
0
    S.keysort_start = 0;
28161
0
    janet_table_init(&S.seen, 10);
28162
0
    int res = print_jdn_one(&S, x, depth);
28163
0
    janet_table_deinit(&S.seen);
28164
0
    if (res) {
28165
0
        janet_panic("could not print to jdn format");
28166
0
    }
28167
0
    return S.buffer;
28168
0
}
28169
28170
0
JanetBuffer *janet_jdn(JanetBuffer *buffer, int depth, Janet x) {
28171
0
    return janet_jdn_(buffer, depth, x, buffer ? buffer->count : 0);
28172
0
}
28173
28174
0
static const char *typestr(Janet x) {
28175
0
    JanetType t = janet_type(x);
28176
0
    return (t == JANET_ABSTRACT)
28177
0
           ? janet_abstract_type(janet_unwrap_abstract(x))->name
28178
0
           : janet_type_names[t];
28179
0
}
28180
28181
0
static void pushtypes(JanetBuffer *buffer, int types) {
28182
0
    int first = 1;
28183
0
    int i = 0;
28184
0
    while (types) {
28185
0
        if (1 & types) {
28186
0
            if (first) {
28187
0
                first = 0;
28188
0
            } else {
28189
0
                janet_buffer_push_cstring(buffer, (types == 1) ? " or " : ", ");
28190
0
            }
28191
0
            janet_buffer_push_cstring(buffer, janet_type_names[i]);
28192
0
        }
28193
0
        i++;
28194
0
        types >>= 1;
28195
0
    }
28196
0
}
28197
28198
/*
28199
 * code adapted from lua/lstrlib.c http://lua.org
28200
 */
28201
28202
264
#define MAX_ITEM  256
28203
264
#define FMT_FLAGS "-+ #0"
28204
132
#define FMT_REPLACE_INTTYPES "diouxX"
28205
#define MAX_FORMAT 32
28206
28207
struct FmtMapping {
28208
    char c;
28209
    const char *mapping;
28210
};
28211
28212
/* Janet uses fixed width integer types for most things, so map
28213
 * format specifiers to these fixed sizes */
28214
static const struct FmtMapping format_mappings[] = {
28215
    {'D', PRId64},
28216
    {'I', PRIi64},
28217
    {'d', PRId64},
28218
    {'i', PRIi64},
28219
    {'o', PRIo64},
28220
    {'u', PRIu64},
28221
    {'x', PRIx64},
28222
    {'X', PRIX64},
28223
};
28224
28225
132
static const char *get_fmt_mapping(char c) {
28226
396
    for (size_t i = 0; i < (sizeof(format_mappings) / sizeof(struct FmtMapping)); i++) {
28227
396
        if (format_mappings[i].c == c)
28228
132
            return format_mappings[i].mapping;
28229
396
    }
28230
0
    janet_assert(0, "bad format mapping");
28231
0
}
28232
28233
static const char *scanformat(
28234
    const char *strfrmt,
28235
    char *form,
28236
    char width[3],
28237
132
    char precision[3]) {
28238
132
    const char *p = strfrmt;
28239
28240
    /* Parse strfrmt */
28241
132
    memset(width, '\0', 3);
28242
132
    memset(precision, '\0', 3);
28243
132
    while (*p != '\0' && strchr(FMT_FLAGS, *p) != NULL)
28244
0
        p++; /* skip flags */
28245
132
    if ((size_t)(p - strfrmt) >= sizeof(FMT_FLAGS)) janet_panic("invalid format (repeated flags)");
28246
132
    if (isdigit((int)(*p)))
28247
0
        width[0] = *p++; /* skip width */
28248
132
    if (isdigit((int)(*p)))
28249
0
        width[1] = *p++; /* (2 digits at most) */
28250
132
    if (*p == '.') {
28251
0
        p++;
28252
0
        if (isdigit((int)(*p)))
28253
0
            precision[0] = *p++; /* skip precision */
28254
0
        if (isdigit((int)(*p)))
28255
0
            precision[1] = *p++; /* (2 digits at most) */
28256
0
    }
28257
132
    if (isdigit((int)(*p)))
28258
0
        janet_panic("invalid format (width or precision too long)");
28259
28260
    /* Write to form - replace characters with fixed size stuff */
28261
132
    *(form++) = '%';
28262
132
    const char *p2 = strfrmt;
28263
264
    while (p2 <= p) {
28264
132
        char *loc = strchr(FMT_REPLACE_INTTYPES, *p2);
28265
132
        if (loc != NULL && *loc != '\0') {
28266
132
            const char *mapping = get_fmt_mapping(*p2++);
28267
132
            size_t len = strlen(mapping);
28268
132
            memcpy(form, mapping, len);
28269
132
            form += len;
28270
132
        } else {
28271
0
            *(form++) = *(p2++);
28272
0
        }
28273
132
    }
28274
132
    *form = '\0';
28275
28276
132
    return p;
28277
132
}
28278
28279
66
void janet_formatbv(JanetBuffer *b, const char *format, va_list args) {
28280
66
    const char *format_end = format + strlen(format);
28281
66
    const char *c = format;
28282
66
    int32_t startlen = b->count;
28283
1.84k
    while (c < format_end) {
28284
1.78k
        if (*c != '%') {
28285
1.65k
            janet_buffer_push_u8(b, (uint8_t) *c++);
28286
1.65k
        } else if (*++c == '%') {
28287
0
            janet_buffer_push_u8(b, (uint8_t) *c++);
28288
132
        } else {
28289
132
            char form[MAX_FORMAT], item[MAX_ITEM];
28290
132
            char width[3], precision[3];
28291
132
            int nb = 0; /* number of bytes in added item */
28292
132
            c = scanformat(c, form, width, precision);
28293
132
            switch (*c++) {
28294
0
                case 'c': {
28295
0
                    int n = va_arg(args, int);
28296
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28297
0
                    break;
28298
0
                }
28299
132
                case 'd':
28300
132
                case 'i': {
28301
132
                    int64_t n = (int64_t) va_arg(args, int32_t);
28302
132
                    nb = snprintf(item, MAX_ITEM, form, n);
28303
132
                    break;
28304
132
                }
28305
0
                case 'D':
28306
0
                case 'I': {
28307
0
                    int64_t n = va_arg(args, int64_t);
28308
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28309
0
                    break;
28310
0
                }
28311
0
                case 'x':
28312
0
                case 'X':
28313
0
                case 'o':
28314
0
                case 'u': {
28315
0
                    uint64_t n = va_arg(args, uint64_t);
28316
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28317
0
                    break;
28318
0
                }
28319
0
                case 'a':
28320
0
                case 'A':
28321
0
                case 'e':
28322
0
                case 'E':
28323
0
                case 'f':
28324
0
                case 'g':
28325
0
                case 'G': {
28326
0
                    double d = va_arg(args, double);
28327
0
                    nb = snprintf(item, MAX_ITEM, form, d);
28328
0
                    break;
28329
0
                }
28330
0
                case 's':
28331
0
                case 'S': {
28332
0
                    const char *str = va_arg(args, const char *);
28333
0
                    int32_t len = c[-1] == 's'
28334
0
                                  ? (int32_t) strlen(str)
28335
0
                                  : janet_string_length((JanetString) str);
28336
0
                    if (form[2] == '\0')
28337
0
                        janet_buffer_push_bytes(b, (const uint8_t *) str, len);
28338
0
                    else {
28339
0
                        if (len != (int32_t) strlen((const char *) str))
28340
0
                            janet_panic("string contains zeros");
28341
0
                        if (!strchr(form, '.') && len >= 100) {
28342
0
                            janet_panic("no precision and string is too long to be formatted");
28343
0
                        } else {
28344
0
                            nb = snprintf(item, MAX_ITEM, form, str);
28345
0
                        }
28346
0
                    }
28347
0
                    break;
28348
0
                }
28349
0
                case 'V':
28350
0
                    janet_to_string_b(b, va_arg(args, Janet));
28351
0
                    break;
28352
0
                case 'v':
28353
0
                    janet_description_b(b, va_arg(args, Janet));
28354
0
                    break;
28355
0
                case 't':
28356
0
                    janet_buffer_push_cstring(b, typestr(va_arg(args, Janet)));
28357
0
                    break;
28358
0
                case 'T': {
28359
0
                    int types = va_arg(args, int);
28360
0
                    pushtypes(b, types);
28361
0
                    break;
28362
0
                }
28363
0
                case 'M':
28364
0
                case 'm':
28365
0
                case 'N':
28366
0
                case 'n':
28367
0
                case 'Q':
28368
0
                case 'q':
28369
0
                case 'P':
28370
0
                case 'p': { /* janet pretty , precision = depth */
28371
0
                    int depth = atoi(precision);
28372
0
                    if (depth < 1) depth = JANET_RECURSION_GUARD;
28373
0
                    char d = c[-1];
28374
0
                    int has_color = (d == 'P') || (d == 'Q') || (d == 'M') || (d == 'N');
28375
0
                    int has_oneline = (d == 'Q') || (d == 'q') || (d == 'N') || (d == 'n');
28376
0
                    int has_notrunc = (d == 'M') || (d == 'm') || (d == 'N') || (d == 'n');
28377
0
                    int flags = 0;
28378
0
                    flags |= has_color ? JANET_PRETTY_COLOR : 0;
28379
0
                    flags |= has_oneline ? JANET_PRETTY_ONELINE : 0;
28380
0
                    flags |= has_notrunc ? JANET_PRETTY_NOTRUNC : 0;
28381
0
                    janet_pretty_(b, depth, flags, va_arg(args, Janet), startlen);
28382
0
                    break;
28383
0
                }
28384
0
                case 'j': {
28385
0
                    int depth = atoi(precision);
28386
0
                    if (depth < 1)
28387
0
                        depth = JANET_RECURSION_GUARD;
28388
0
                    janet_jdn_(b, depth, va_arg(args, Janet), startlen);
28389
0
                    break;
28390
0
                }
28391
0
                default: {
28392
                    /* also treat cases 'nLlh' */
28393
0
                    janet_panicf("invalid conversion '%s' to 'format'",
28394
0
                                 form);
28395
0
                }
28396
132
            }
28397
132
            if (nb >= MAX_ITEM)
28398
0
                janet_panic("format buffer overflow");
28399
132
            if (nb > 0)
28400
132
                janet_buffer_push_bytes(b, (uint8_t *) item, nb);
28401
132
        }
28402
28403
1.78k
    }
28404
66
}
28405
28406
/* Helper function for formatting strings. Useful for generating error messages and the like.
28407
 * Similar to printf, but specialized for operating with janet. */
28408
0
const uint8_t *janet_formatc(const char *format, ...) {
28409
0
    va_list args;
28410
0
    const uint8_t *ret;
28411
0
    JanetBuffer buffer;
28412
0
    int32_t len = 0;
28413
28414
    /* Calculate length, init buffer and args */
28415
0
    while (format[len]) len++;
28416
0
    janet_buffer_init(&buffer, len);
28417
0
    va_start(args, format);
28418
28419
    /* Run format */
28420
0
    janet_formatbv(&buffer, format, args);
28421
28422
    /* Iterate length */
28423
0
    va_end(args);
28424
28425
0
    ret = janet_string(buffer.data, buffer.count);
28426
0
    janet_buffer_deinit(&buffer);
28427
0
    return ret;
28428
0
}
28429
28430
66
JanetBuffer *janet_formatb(JanetBuffer *buffer, const char *format, ...) {
28431
66
    va_list args;
28432
66
    va_start(args, format);
28433
66
    janet_formatbv(buffer, format, args);
28434
66
    va_end(args);
28435
66
    return buffer;
28436
66
}
28437
28438
/* Shared implementation between string/format and
28439
 * buffer/format */
28440
void janet_buffer_format(
28441
    JanetBuffer *b,
28442
    const char *strfrmt,
28443
    int32_t argstart,
28444
    int32_t argc,
28445
0
    Janet *argv) {
28446
0
    size_t sfl = strlen(strfrmt);
28447
0
    const char *strfrmt_end = strfrmt + sfl;
28448
0
    int32_t arg = argstart;
28449
0
    int32_t startlen = b->count;
28450
0
    while (strfrmt < strfrmt_end) {
28451
0
        if (*strfrmt != '%')
28452
0
            janet_buffer_push_u8(b, (uint8_t) * strfrmt++);
28453
0
        else if (*++strfrmt == '%')
28454
0
            janet_buffer_push_u8(b, (uint8_t) * strfrmt++); /* %% */
28455
0
        else { /* format item */
28456
0
            char form[MAX_FORMAT], item[MAX_ITEM];
28457
0
            char width[3], precision[3];
28458
0
            int nb = 0; /* number of bytes in added item */
28459
0
            if (++arg >= argc)
28460
0
                janet_panic("not enough values for format");
28461
0
            strfrmt = scanformat(strfrmt, form, width, precision);
28462
0
            switch (*strfrmt++) {
28463
0
                case 'c': {
28464
0
                    nb = snprintf(item, MAX_ITEM, form, (int)
28465
0
                                  janet_getinteger(argv, arg));
28466
0
                    break;
28467
0
                }
28468
0
                case 'D':
28469
0
                case 'I':
28470
0
                case 'd':
28471
0
                case 'i': {
28472
0
                    int64_t n = janet_getinteger64(argv, arg);
28473
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28474
0
                    break;
28475
0
                }
28476
0
                case 'x':
28477
0
                case 'X':
28478
0
                case 'o':
28479
0
                case 'u': {
28480
0
                    uint64_t n = janet_getuinteger64(argv, arg);
28481
0
                    nb = snprintf(item, MAX_ITEM, form, n);
28482
0
                    break;
28483
0
                }
28484
0
                case 'a':
28485
0
                case 'A':
28486
0
                case 'e':
28487
0
                case 'E':
28488
0
                case 'f':
28489
0
                case 'g':
28490
0
                case 'G': {
28491
0
                    double d = janet_getnumber(argv, arg);
28492
0
                    nb = snprintf(item, MAX_ITEM, form, d);
28493
0
                    break;
28494
0
                }
28495
0
                case 's': {
28496
0
                    const char *s = janet_getcbytes(argv, arg);
28497
0
                    if (form[2] == '\0')
28498
0
                        janet_buffer_push_cstring(b, s);
28499
0
                    else {
28500
0
                        nb = snprintf(item, MAX_ITEM, form, s);
28501
0
                    }
28502
0
                    break;
28503
0
                }
28504
0
                case 'V': {
28505
0
                    janet_to_string_b(b, argv[arg]);
28506
0
                    break;
28507
0
                }
28508
0
                case 'v': {
28509
0
                    janet_description_b(b, argv[arg]);
28510
0
                    break;
28511
0
                }
28512
0
                case 't':
28513
0
                    janet_buffer_push_cstring(b, typestr(argv[arg]));
28514
0
                    break;
28515
0
                case 'M':
28516
0
                case 'm':
28517
0
                case 'N':
28518
0
                case 'n':
28519
0
                case 'Q':
28520
0
                case 'q':
28521
0
                case 'P':
28522
0
                case 'p': { /* janet pretty , precision = depth */
28523
0
                    int depth = atoi(precision);
28524
0
                    if (depth < 1) depth = JANET_RECURSION_GUARD;
28525
0
                    char d = strfrmt[-1];
28526
0
                    int has_color = (d == 'P') || (d == 'Q') || (d == 'M') || (d == 'N');
28527
0
                    int has_oneline = (d == 'Q') || (d == 'q') || (d == 'N') || (d == 'n');
28528
0
                    int has_notrunc = (d == 'M') || (d == 'm') || (d == 'N') || (d == 'n');
28529
0
                    int flags = 0;
28530
0
                    flags |= has_color ? JANET_PRETTY_COLOR : 0;
28531
0
                    flags |= has_oneline ? JANET_PRETTY_ONELINE : 0;
28532
0
                    flags |= has_notrunc ? JANET_PRETTY_NOTRUNC : 0;
28533
0
                    janet_pretty_(b, depth, flags, argv[arg], startlen);
28534
0
                    break;
28535
0
                }
28536
0
                case 'j': {
28537
0
                    int depth = atoi(precision);
28538
0
                    if (depth < 1)
28539
0
                        depth = JANET_RECURSION_GUARD;
28540
0
                    janet_jdn_(b, depth, argv[arg], startlen);
28541
0
                    break;
28542
0
                }
28543
0
                default: {
28544
                    /* also treat cases 'nLlh' */
28545
0
                    janet_panicf("invalid conversion '%s' to 'format'",
28546
0
                                 form);
28547
0
                }
28548
0
            }
28549
0
            if (nb >= MAX_ITEM)
28550
0
                janet_panic("format buffer overflow");
28551
0
            if (nb > 0)
28552
0
                janet_buffer_push_bytes(b, (uint8_t *) item, nb);
28553
0
        }
28554
0
    }
28555
0
}
28556
28557
#undef HEX
28558
#undef BUFSIZE
28559
28560
28561
/* src/core/regalloc.c */
28562
#line 0 "src/core/regalloc.c"
28563
28564
/*
28565
* Copyright (c) 2025 Calvin Rose
28566
*
28567
* Permission is hereby granted, free of charge, to any person obtaining a copy
28568
* of this software and associated documentation files (the "Software"), to
28569
* deal in the Software without restriction, including without limitation the
28570
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28571
* sell copies of the Software, and to permit persons to whom the Software is
28572
* furnished to do so, subject to the following conditions:
28573
*
28574
* The above copyright notice and this permission notice shall be included in
28575
* all copies or substantial portions of the Software.
28576
*
28577
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28578
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28579
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28580
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28581
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28582
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28583
* IN THE SOFTWARE.
28584
*/
28585
28586
#ifndef JANET_AMALG
28587
#include "features.h"
28588
#include <janet.h>
28589
#include "regalloc.h"
28590
#include "util.h"
28591
#endif
28592
28593
/* The JanetRegisterAllocator is really just a bitset. */
28594
28595
0
void janetc_regalloc_init(JanetcRegisterAllocator *ra) {
28596
0
    ra->chunks = NULL;
28597
0
    ra->count = 0;
28598
0
    ra->capacity = 0;
28599
0
    ra->max = 0;
28600
0
    ra->regtemps = 0;
28601
0
}
28602
28603
0
void janetc_regalloc_deinit(JanetcRegisterAllocator *ra) {
28604
0
    janet_free(ra->chunks);
28605
0
}
28606
28607
/* Fallbacks for when ctz not available */
28608
#ifdef __GNUC__
28609
#define count_trailing_zeros(x) __builtin_ctz(x)
28610
0
#define count_trailing_ones(x) __builtin_ctz(~(x))
28611
#else
28612
static int32_t count_trailing_ones(uint32_t x) {
28613
    int32_t ret = 0;
28614
    while (x & 1) {
28615
        ret++;
28616
        x >>= 1;
28617
    }
28618
    return ret;
28619
}
28620
#define count_trailing_zeros(x) count_trailing_ones(~(x))
28621
#endif
28622
28623
/* Get ith bit */
28624
0
#define ithbit(I) ((uint32_t)1 << (I))
28625
28626
/* Get N bits */
28627
#define nbits(N) (ithbit(N) - 1)
28628
28629
/* Copy a register allocator */
28630
0
void janetc_regalloc_clone(JanetcRegisterAllocator *dest, JanetcRegisterAllocator *src) {
28631
0
    size_t size;
28632
0
    dest->count = src->count;
28633
0
    dest->capacity = src->capacity;
28634
0
    dest->max = src->max;
28635
0
    size = sizeof(uint32_t) * (size_t) dest->capacity;
28636
0
    dest->regtemps = 0;
28637
0
    if (size) {
28638
0
        dest->chunks = janet_malloc(size);
28639
0
        if (!dest->chunks) {
28640
0
            JANET_OUT_OF_MEMORY;
28641
0
        }
28642
0
        memcpy(dest->chunks, src->chunks, size);
28643
0
    } else {
28644
0
        dest->chunks = NULL;
28645
0
    }
28646
0
}
28647
28648
/* Allocate one more chunk in chunks */
28649
0
static void pushchunk(JanetcRegisterAllocator *ra) {
28650
    /* Registers 240-255 are always allocated (reserved) */
28651
0
    uint32_t chunk = ra->count == 7 ? 0xFFFF0000 : 0;
28652
0
    int32_t newcount = ra->count + 1;
28653
0
    if (newcount > ra->capacity) {
28654
0
        int32_t newcapacity = newcount * 2;
28655
0
        ra->chunks = janet_realloc(ra->chunks, (size_t) newcapacity * sizeof(uint32_t));
28656
0
        if (!ra->chunks) {
28657
0
            JANET_OUT_OF_MEMORY;
28658
0
        }
28659
0
        ra->capacity = newcapacity;
28660
0
    }
28661
0
    ra->chunks[ra->count] = chunk;
28662
0
    ra->count = newcount;
28663
0
}
28664
28665
/* Reallocate a given register */
28666
0
void janetc_regalloc_touch(JanetcRegisterAllocator *ra, int32_t reg) {
28667
0
    int32_t chunk = reg >> 5;
28668
0
    int32_t bit = reg & 0x1F;
28669
0
    while (chunk >= ra->count) pushchunk(ra);
28670
0
    ra->chunks[chunk] |= ithbit(bit);
28671
0
}
28672
28673
/* Allocate one register. */
28674
0
int32_t janetc_regalloc_1(JanetcRegisterAllocator *ra) {
28675
    /* Get the nth bit in the array */
28676
0
    int32_t bit, chunk, nchunks, reg;
28677
0
    bit = -1;
28678
0
    nchunks = ra->count;
28679
0
    for (chunk = 0; chunk < nchunks; chunk++) {
28680
0
        uint32_t block = ra->chunks[chunk];
28681
0
        if (block == 0xFFFFFFFF) continue;
28682
0
        bit = count_trailing_ones(block);
28683
0
        break;
28684
0
    }
28685
    /* No reg found */
28686
0
    if (bit == -1) {
28687
0
        pushchunk(ra);
28688
0
        bit = 0;
28689
0
        chunk = nchunks;
28690
0
    }
28691
    /* set the bit at index bit in chunk */
28692
0
    ra->chunks[chunk] |= ithbit(bit);
28693
0
    reg = (chunk << 5) + bit;
28694
0
    if (reg > ra->max)
28695
0
        ra->max = reg;
28696
0
    return reg;
28697
0
}
28698
28699
/* Free a register. The register must have been previously allocated
28700
 * without being freed. */
28701
0
void janetc_regalloc_free(JanetcRegisterAllocator *ra, int32_t reg) {
28702
0
    int32_t chunk = reg >> 5;
28703
0
    int32_t bit = reg & 0x1F;
28704
0
    ra->chunks[chunk] &= ~ithbit(bit);
28705
0
}
28706
28707
/* Check if a register is set. */
28708
0
int janetc_regalloc_check(JanetcRegisterAllocator *ra, int32_t reg) {
28709
0
    int32_t chunk = reg >> 5;
28710
0
    int32_t bit = reg & 0x1F;
28711
0
    while (chunk >= ra->count) pushchunk(ra);
28712
0
    return !!(ra->chunks[chunk] & ithbit(bit));
28713
0
}
28714
28715
/* Get a register that will fit in 8 bits (< 256). Do not call this
28716
 * twice with the same value of nth without calling janetc_regalloc_free
28717
 * on the returned register before. */
28718
0
int32_t janetc_regalloc_temp(JanetcRegisterAllocator *ra, JanetcRegisterTemp nth) {
28719
0
    int32_t oldmax = ra->max;
28720
0
    if (ra->regtemps & (1 << nth)) {
28721
0
        JANET_EXIT("regtemp already allocated");
28722
0
    }
28723
0
    ra->regtemps |= 1 << nth;
28724
0
    int32_t reg = janetc_regalloc_1(ra);
28725
0
    if (reg > 0xFF) {
28726
0
        reg = 0xF0 + nth;
28727
0
        ra->max = (reg > oldmax) ? reg : oldmax;
28728
0
    }
28729
0
    return reg;
28730
0
}
28731
28732
0
void janetc_regalloc_freetemp(JanetcRegisterAllocator *ra, int32_t reg, JanetcRegisterTemp nth) {
28733
0
    ra->regtemps &= ~(1 << nth);
28734
0
    if (reg < 0xF0)
28735
0
        janetc_regalloc_free(ra, reg);
28736
0
}
28737
28738
28739
/* src/core/run.c */
28740
#line 0 "src/core/run.c"
28741
28742
/*
28743
* Copyright (c) 2025 Calvin Rose
28744
*
28745
* Permission is hereby granted, free of charge, to any person obtaining a copy
28746
* of this software and associated documentation files (the "Software"), to
28747
* deal in the Software without restriction, including without limitation the
28748
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28749
* sell copies of the Software, and to permit persons to whom the Software is
28750
* furnished to do so, subject to the following conditions:
28751
*
28752
* The above copyright notice and this permission notice shall be included in
28753
* all copies or substantial portions of the Software.
28754
*
28755
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28756
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28757
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28758
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28759
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28760
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28761
* IN THE SOFTWARE.
28762
*/
28763
28764
#ifndef JANET_AMALG
28765
#include "features.h"
28766
#include <janet.h>
28767
#include "state.h"
28768
#endif
28769
28770
/* Run a string of code. The return value is a set of error flags, JANET_DO_ERROR_RUNTIME, JANET_DO_ERROR_COMPILE, and JANET_DOR_ERROR_PARSE if
28771
 * any errors were encountered in those phases. More information is printed to stderr. */
28772
0
int janet_dobytes(JanetTable *env, const uint8_t *bytes, int32_t len, const char *sourcePath, Janet *out) {
28773
0
    JanetParser *parser;
28774
0
    int errflags = 0, done = 0;
28775
0
    int32_t index = 0;
28776
0
    Janet ret = janet_wrap_nil();
28777
0
    JanetFiber *fiber = NULL;
28778
0
    const uint8_t *where = sourcePath ? janet_cstring(sourcePath) : NULL;
28779
28780
0
    if (where) janet_gcroot(janet_wrap_string(where));
28781
0
    if (NULL == sourcePath) sourcePath = "<unknown>";
28782
0
    parser = janet_abstract(&janet_parser_type, sizeof(JanetParser));
28783
0
    janet_parser_init(parser);
28784
0
    janet_gcroot(janet_wrap_abstract(parser));
28785
28786
    /* While we haven't seen an error */
28787
0
    while (!done) {
28788
28789
        /* Evaluate parsed values */
28790
0
        while (janet_parser_has_more(parser)) {
28791
0
            Janet form = janet_parser_produce(parser);
28792
0
            JanetCompileResult cres = janet_compile(form, env, where);
28793
0
            if (cres.status == JANET_COMPILE_OK) {
28794
0
                JanetFunction *f = janet_thunk(cres.funcdef);
28795
0
                fiber = janet_fiber(f, 64, 0, NULL);
28796
0
                fiber->env = env;
28797
0
                JanetSignal status = janet_continue(fiber, janet_wrap_nil(), &ret);
28798
0
                if (status != JANET_SIGNAL_OK && status != JANET_SIGNAL_EVENT) {
28799
0
                    janet_stacktrace_ext(fiber, ret, "");
28800
0
                    errflags |= JANET_DO_ERROR_RUNTIME;
28801
0
                    done = 1;
28802
0
                }
28803
0
            } else {
28804
0
                ret = janet_wrap_string(cres.error);
28805
0
                int32_t line = (int32_t) parser->line;
28806
0
                int32_t col = (int32_t) parser->column;
28807
0
                if ((cres.error_mapping.line > 0) &&
28808
0
                        (cres.error_mapping.column > 0)) {
28809
0
                    line = cres.error_mapping.line;
28810
0
                    col = cres.error_mapping.column;
28811
0
                }
28812
0
                if (cres.macrofiber) {
28813
0
                    janet_eprintf("%s:%d:%d: compile error", sourcePath,
28814
0
                                  line, col);
28815
0
                    janet_stacktrace_ext(cres.macrofiber, ret, "");
28816
0
                } else {
28817
0
                    janet_eprintf("%s:%d:%d: compile error: %s\n", sourcePath,
28818
0
                                  line, col, (const char *)cres.error);
28819
0
                }
28820
0
                errflags |= JANET_DO_ERROR_COMPILE;
28821
0
                done = 1;
28822
0
            }
28823
0
        }
28824
28825
0
        if (done) break;
28826
28827
        /* Dispatch based on parse state */
28828
0
        switch (janet_parser_status(parser)) {
28829
0
            case JANET_PARSE_DEAD:
28830
0
                done = 1;
28831
0
                break;
28832
0
            case JANET_PARSE_ERROR: {
28833
0
                const char *e = janet_parser_error(parser);
28834
0
                errflags |= JANET_DO_ERROR_PARSE;
28835
0
                ret = janet_cstringv(e);
28836
0
                int32_t line = (int32_t) parser->line;
28837
0
                int32_t col = (int32_t) parser->column;
28838
0
                janet_eprintf("%s:%d:%d: parse error: %s\n", sourcePath, line, col, e);
28839
0
                done = 1;
28840
0
                break;
28841
0
            }
28842
0
            case JANET_PARSE_ROOT:
28843
0
            case JANET_PARSE_PENDING:
28844
0
                if (index >= len) {
28845
0
                    janet_parser_eof(parser);
28846
0
                } else {
28847
0
                    janet_parser_consume(parser, bytes[index++]);
28848
0
                }
28849
0
                break;
28850
0
        }
28851
28852
0
    }
28853
28854
    /* Clean up and return errors */
28855
0
    janet_gcunroot(janet_wrap_abstract(parser));
28856
0
    if (where) janet_gcunroot(janet_wrap_string(where));
28857
0
#ifdef JANET_EV
28858
    /* Enter the event loop if we are not already in it */
28859
0
    if (janet_vm.stackn == 0) {
28860
0
        if (fiber) {
28861
0
            janet_gcroot(janet_wrap_fiber(fiber));
28862
0
        }
28863
0
        janet_loop();
28864
0
        if (fiber) {
28865
0
            janet_gcunroot(janet_wrap_fiber(fiber));
28866
0
            ret = fiber->last_value;
28867
0
        }
28868
0
    }
28869
0
#endif
28870
0
    if (out) *out = ret;
28871
0
    return errflags;
28872
0
}
28873
28874
0
int janet_dostring(JanetTable *env, const char *str, const char *sourcePath, Janet *out) {
28875
0
    int32_t len = 0;
28876
0
    while (str[len]) ++len;
28877
0
    return janet_dobytes(env, (const uint8_t *)str, len, sourcePath, out);
28878
0
}
28879
28880
/* Run a fiber to completion (use event loop if enabled). Return the status. */
28881
0
int janet_loop_fiber(JanetFiber *fiber) {
28882
0
    int status;
28883
0
#ifdef JANET_EV
28884
0
    janet_schedule(fiber, janet_wrap_nil());
28885
0
    janet_loop();
28886
0
    status = janet_fiber_status(fiber);
28887
#else
28888
    Janet out;
28889
    status = janet_continue(fiber, janet_wrap_nil(), &out);
28890
    if (status != JANET_SIGNAL_OK && status != JANET_SIGNAL_EVENT) {
28891
        janet_stacktrace_ext(fiber, out, "");
28892
    }
28893
#endif
28894
0
    return status;
28895
0
}
28896
28897
28898
/* src/core/specials.c */
28899
#line 0 "src/core/specials.c"
28900
28901
/*
28902
* Copyright (c) 2025 Calvin Rose
28903
*
28904
* Permission is hereby granted, free of charge, to any person obtaining a copy
28905
* of this software and associated documentation files (the "Software"), to
28906
* deal in the Software without restriction, including without limitation the
28907
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
28908
* sell copies of the Software, and to permit persons to whom the Software is
28909
* furnished to do so, subject to the following conditions:
28910
*
28911
* The above copyright notice and this permission notice shall be included in
28912
* all copies or substantial portions of the Software.
28913
*
28914
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28915
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
28916
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28917
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
28918
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28919
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
28920
* IN THE SOFTWARE.
28921
*/
28922
28923
#ifndef JANET_AMALG
28924
#include "features.h"
28925
#include <janet.h>
28926
#include "compile.h"
28927
#include "util.h"
28928
#include "vector.h"
28929
#include "emit.h"
28930
#endif
28931
28932
0
static JanetSlot janetc_quote(JanetFopts opts, int32_t argn, const Janet *argv) {
28933
0
    if (argn != 1) {
28934
0
        janetc_cerror(opts.compiler, "expected 1 argument to quote");
28935
0
        return janetc_cslot(janet_wrap_nil());
28936
0
    }
28937
0
    return janetc_cslot(argv[0]);
28938
0
}
28939
28940
0
static JanetSlot janetc_splice(JanetFopts opts, int32_t argn, const Janet *argv) {
28941
0
    JanetSlot ret;
28942
0
    if (!(opts.flags & JANET_FOPTS_ACCEPT_SPLICE)) {
28943
0
        janetc_cerror(opts.compiler, "splice can only be used in function parameters and data constructors, it has no effect here");
28944
0
        return janetc_cslot(janet_wrap_nil());
28945
0
    }
28946
0
    if (argn != 1) {
28947
0
        janetc_cerror(opts.compiler, "expected 1 argument to splice");
28948
0
        return janetc_cslot(janet_wrap_nil());
28949
0
    }
28950
0
    ret = janetc_value(opts, argv[0]);
28951
0
    ret.flags |= JANET_SLOT_SPLICED;
28952
0
    return ret;
28953
0
}
28954
28955
0
static JanetSlot qq_slots(JanetFopts opts, JanetSlot *slots, int makeop) {
28956
0
    JanetSlot target = janetc_gettarget(opts);
28957
0
    janetc_pushslots(opts.compiler, slots);
28958
0
    janetc_freeslots(opts.compiler, slots);
28959
0
    janetc_emit_s(opts.compiler, makeop, target, 1);
28960
0
    return target;
28961
0
}
28962
28963
0
static JanetSlot quasiquote(JanetFopts opts, Janet x, int depth, int level) {
28964
0
    if (depth == 0) {
28965
0
        janetc_cerror(opts.compiler, "quasiquote too deeply nested");
28966
0
        return janetc_cslot(janet_wrap_nil());
28967
0
    }
28968
0
    JanetSlot *slots = NULL;
28969
0
    JanetFopts subopts = opts;
28970
0
    subopts.flags &= ~JANET_FOPTS_HINT;
28971
0
    switch (janet_type(x)) {
28972
0
        default:
28973
0
            return janetc_cslot(x);
28974
0
        case JANET_TUPLE: {
28975
0
            int32_t i, len;
28976
0
            const Janet *tup = janet_unwrap_tuple(x);
28977
0
            len = janet_tuple_length(tup);
28978
0
            if (len > 1 && janet_checktype(tup[0], JANET_SYMBOL)) {
28979
0
                const uint8_t *head = janet_unwrap_symbol(tup[0]);
28980
0
                if (!janet_cstrcmp(head, "unquote")) {
28981
0
                    if (level == 0) {
28982
0
                        JanetFopts subopts = janetc_fopts_default(opts.compiler);
28983
0
                        subopts.flags |= JANET_FOPTS_ACCEPT_SPLICE;
28984
0
                        return janetc_value(subopts, tup[1]);
28985
0
                    } else {
28986
0
                        level--;
28987
0
                    }
28988
0
                } else if (!janet_cstrcmp(head, "quasiquote")) {
28989
0
                    level++;
28990
0
                }
28991
0
            }
28992
0
            for (i = 0; i < len; i++)
28993
0
                janet_v_push(slots, quasiquote(subopts, tup[i], depth - 1, level));
28994
0
            return qq_slots(opts, slots, (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR)
28995
0
                            ? JOP_MAKE_BRACKET_TUPLE
28996
0
                            : JOP_MAKE_TUPLE);
28997
0
        }
28998
0
        case JANET_ARRAY: {
28999
0
            int32_t i;
29000
0
            JanetArray *array = janet_unwrap_array(x);
29001
0
            for (i = 0; i < array->count; i++)
29002
0
                janet_v_push(slots, quasiquote(subopts, array->data[i], depth - 1, level));
29003
0
            return qq_slots(opts, slots, JOP_MAKE_ARRAY);
29004
0
        }
29005
0
        case JANET_TABLE:
29006
0
        case JANET_STRUCT: {
29007
0
            const JanetKV *kv = NULL, *kvs = NULL;
29008
0
            int32_t len, cap = 0;
29009
0
            janet_dictionary_view(x, &kvs, &len, &cap);
29010
0
            while ((kv = janet_dictionary_next(kvs, cap, kv))) {
29011
0
                JanetSlot key = quasiquote(subopts, kv->key, depth - 1, level);
29012
0
                JanetSlot value =  quasiquote(subopts, kv->value, depth - 1, level);
29013
0
                key.flags &= ~JANET_SLOT_SPLICED;
29014
0
                value.flags &= ~JANET_SLOT_SPLICED;
29015
0
                janet_v_push(slots, key);
29016
0
                janet_v_push(slots, value);
29017
0
            }
29018
0
            return qq_slots(opts, slots,
29019
0
                            janet_checktype(x, JANET_TABLE) ? JOP_MAKE_TABLE : JOP_MAKE_STRUCT);
29020
0
        }
29021
0
    }
29022
0
}
29023
29024
0
static JanetSlot janetc_quasiquote(JanetFopts opts, int32_t argn, const Janet *argv) {
29025
0
    if (argn != 1) {
29026
0
        janetc_cerror(opts.compiler, "expected 1 argument to quasiquote");
29027
0
        return janetc_cslot(janet_wrap_nil());
29028
0
    }
29029
0
    return quasiquote(opts, argv[0], JANET_RECURSION_GUARD, 0);
29030
0
}
29031
29032
0
static JanetSlot janetc_unquote(JanetFopts opts, int32_t argn, const Janet *argv) {
29033
0
    (void) argn;
29034
0
    (void) argv;
29035
0
    janetc_cerror(opts.compiler, "cannot use unquote here");
29036
0
    return janetc_cslot(janet_wrap_nil());
29037
0
}
29038
29039
/* Perform destructuring. Be careful to
29040
 * keep the order registers are freed.
29041
 * Returns if the slot 'right' can be freed. */
29042
static int destructure(JanetCompiler *c,
29043
                       Janet left,
29044
                       JanetSlot right,
29045
                       int (*leaf)(JanetCompiler *c,
29046
                                   const uint8_t *sym,
29047
                                   JanetSlot s,
29048
                                   JanetTable *attr),
29049
0
                       JanetTable *attr) {
29050
0
    switch (janet_type(left)) {
29051
0
        default:
29052
0
            janetc_error(c, janet_formatc("unexpected type in destructuring, got %v", left));
29053
0
            return 1;
29054
0
        case JANET_SYMBOL:
29055
            /* Leaf, assign right to left */
29056
0
            return leaf(c, janet_unwrap_symbol(left), right, attr);
29057
0
        case JANET_TUPLE:
29058
0
        case JANET_ARRAY: {
29059
0
            int32_t len = 0;
29060
0
            const Janet *values = NULL;
29061
0
            janet_indexed_view(left, &values, &len);
29062
0
            for (int32_t i = 0; i < len; i++) {
29063
0
                JanetSlot nextright = janetc_farslot(c);
29064
0
                Janet subval = values[i];
29065
29066
0
                if (janet_checktype(subval, JANET_SYMBOL) && !janet_cstrcmp(janet_unwrap_symbol(subval), "&")) {
29067
0
                    if (i + 1 >= len) {
29068
0
                        janetc_cerror(c, "expected symbol following '& in destructuring pattern");
29069
0
                        return 1;
29070
0
                    }
29071
29072
0
                    if (i + 2 < len) {
29073
0
                        int32_t num_extra = len - i - 1;
29074
0
                        Janet *extra = janet_tuple_begin(num_extra);
29075
0
                        janet_tuple_flag(extra) |= JANET_TUPLE_FLAG_BRACKETCTOR;
29076
29077
0
                        for (int32_t j = 0; j < num_extra; ++j) {
29078
0
                            extra[j] = values[j + i + 1];
29079
0
                        }
29080
29081
0
                        janetc_error(c, janet_formatc("expected a single symbol follow '& in destructuring pattern, found %q", janet_wrap_tuple(janet_tuple_end(extra))));
29082
0
                        return 1;
29083
0
                    }
29084
29085
0
                    if (!janet_checktype(values[i + 1], JANET_SYMBOL)) {
29086
0
                        janetc_error(c, janet_formatc("expected symbol following '& in destructuring pattern, found %q", values[i + 1]));
29087
0
                        return 1;
29088
0
                    }
29089
29090
0
                    JanetSlot argi = janetc_farslot(c);
29091
0
                    JanetSlot arg  = janetc_farslot(c);
29092
0
                    JanetSlot len  = janetc_farslot(c);
29093
29094
0
                    janetc_emit_si(c, JOP_LOAD_INTEGER, argi, i, 0);
29095
0
                    janetc_emit_ss(c, JOP_LENGTH, len, right, 0);
29096
29097
                    /* loop condition - reuse arg slot for the condition result */
29098
0
                    int32_t label_loop_start = janetc_emit_sss(c, JOP_LESS_THAN, arg, argi, len, 0);
29099
0
                    int32_t label_loop_cond_jump = janetc_emit_si(c, JOP_JUMP_IF_NOT, arg, 0, 0);
29100
29101
                    /* loop body */
29102
0
                    janetc_emit_sss(c, JOP_GET, arg, right, argi, 0);
29103
0
                    janetc_emit_s(c, JOP_PUSH, arg, 0);
29104
0
                    janetc_emit_ssi(c, JOP_ADD_IMMEDIATE, argi, argi, 1, 0);
29105
29106
                    /* loop - jump back to the start of the loop */
29107
0
                    int32_t label_loop_loop = janet_v_count(c->buffer);
29108
0
                    janetc_emit(c, JOP_JUMP);
29109
0
                    int32_t label_loop_exit = janet_v_count(c->buffer);
29110
29111
                    /* avoid shifting negative numbers */
29112
0
                    c->buffer[label_loop_cond_jump] |= (uint32_t)(label_loop_exit - label_loop_cond_jump) << 16;
29113
0
                    c->buffer[label_loop_loop] |= (uint32_t)(label_loop_start - label_loop_loop) << 8;
29114
29115
0
                    janetc_freeslot(c, argi);
29116
0
                    janetc_freeslot(c, arg);
29117
0
                    janetc_freeslot(c, len);
29118
29119
0
                    janetc_emit_s(c, JOP_MAKE_TUPLE, nextright, 1);
29120
29121
0
                    leaf(c, janet_unwrap_symbol(values[i + 1]), nextright, attr);
29122
0
                    janetc_freeslot(c, nextright);
29123
0
                    break;
29124
0
                }
29125
29126
0
                if (i < 0x100) {
29127
0
                    janetc_emit_ssu(c, JOP_GET_INDEX, nextright, right, (uint8_t) i, 1);
29128
0
                } else {
29129
0
                    JanetSlot k = janetc_cslot(janet_wrap_integer(i));
29130
0
                    janetc_emit_sss(c, JOP_IN, nextright, right, k, 1);
29131
0
                }
29132
0
                if (destructure(c, subval, nextright, leaf, attr))
29133
0
                    janetc_freeslot(c, nextright);
29134
0
            }
29135
0
        }
29136
0
        return 1;
29137
0
        case JANET_TABLE:
29138
0
        case JANET_STRUCT: {
29139
0
            const JanetKV *kvs = NULL;
29140
0
            int32_t cap = 0, len = 0;
29141
0
            janet_dictionary_view(left, &kvs, &len, &cap);
29142
0
            for (int32_t i = 0; i < cap; i++) {
29143
0
                if (janet_checktype(kvs[i].key, JANET_NIL)) continue;
29144
0
                JanetSlot nextright = janetc_farslot(c);
29145
0
                JanetSlot k = janetc_value(janetc_fopts_default(c), kvs[i].key);
29146
0
                janetc_emit_sss(c, JOP_IN, nextright, right, k, 1);
29147
0
                if (destructure(c, kvs[i].value, nextright, leaf, attr))
29148
0
                    janetc_freeslot(c, nextright);
29149
0
            }
29150
0
        }
29151
0
        return 1;
29152
0
    }
29153
0
}
29154
29155
/* Create a source map for definitions. */
29156
0
static const Janet *janetc_make_sourcemap(JanetCompiler *c) {
29157
0
    Janet *tup = janet_tuple_begin(3);
29158
0
    tup[0] = c->source ? janet_wrap_string(c->source) : janet_wrap_nil();
29159
0
    tup[1] = janet_wrap_integer(c->current_mapping.line);
29160
0
    tup[2] = janet_wrap_integer(c->current_mapping.column);
29161
0
    return janet_tuple_end(tup);
29162
0
}
29163
29164
0
static JanetSlot janetc_varset(JanetFopts opts, int32_t argn, const Janet *argv) {
29165
0
    if (argn != 2) {
29166
0
        janetc_cerror(opts.compiler, "expected 2 arguments to set");
29167
0
        return janetc_cslot(janet_wrap_nil());
29168
0
    }
29169
0
    JanetFopts subopts = janetc_fopts_default(opts.compiler);
29170
0
    if (janet_checktype(argv[0], JANET_SYMBOL)) {
29171
        /* Normal var - (set a 1) */
29172
0
        const uint8_t *sym = janet_unwrap_symbol(argv[0]);
29173
0
        JanetSlot dest = janetc_resolve(opts.compiler, sym);
29174
0
        if (!(dest.flags & JANET_SLOT_MUTABLE)) {
29175
0
            janetc_cerror(opts.compiler, "cannot set constant");
29176
0
            return janetc_cslot(janet_wrap_nil());
29177
0
        }
29178
0
        subopts.flags = JANET_FOPTS_HINT;
29179
0
        subopts.hint = dest;
29180
0
        JanetSlot ret = janetc_value(subopts, argv[1]);
29181
0
        janetc_copy(opts.compiler, dest, ret);
29182
0
        return ret;
29183
0
    } else if (janet_checktype(argv[0], JANET_TUPLE)) {
29184
        /* Set a field (setf behavior) - (set (tab :key) 2) */
29185
0
        const Janet *tup = janet_unwrap_tuple(argv[0]);
29186
        /* Tuple must have 2 elements */
29187
0
        if (janet_tuple_length(tup) != 2) {
29188
0
            janetc_cerror(opts.compiler, "expected 2 element tuple for l-value to set");
29189
0
            return janetc_cslot(janet_wrap_nil());
29190
0
        }
29191
0
        JanetSlot ds = janetc_value(subopts, tup[0]);
29192
0
        JanetSlot key = janetc_value(subopts, tup[1]);
29193
        /* Can't be tail position because we will emit a PUT instruction afterwards */
29194
        /* Also can't drop either */
29195
0
        opts.flags &= ~(JANET_FOPTS_TAIL | JANET_FOPTS_DROP);
29196
0
        JanetSlot rvalue = janetc_value(opts, argv[1]);
29197
        /* Emit the PUT instruction */
29198
0
        janetc_emit_sss(opts.compiler, JOP_PUT, ds, key, rvalue, 0);
29199
0
        return rvalue;
29200
0
    } else {
29201
        /* Error */
29202
0
        janetc_cerror(opts.compiler, "expected symbol or tuple for l-value to set");
29203
0
        return janetc_cslot(janet_wrap_nil());
29204
0
    }
29205
0
}
29206
29207
/* Add attributes to a global def or var table */
29208
0
static JanetTable *handleattr(JanetCompiler *c, const char *kind, int32_t argn, const Janet *argv) {
29209
0
    int32_t i;
29210
0
    JanetTable *tab = janet_table(2);
29211
0
    const char *binding_name = janet_type(argv[0]) == JANET_SYMBOL
29212
0
                               ? ((const char *)janet_unwrap_symbol(argv[0]))
29213
0
                               : "<multiple bindings>";
29214
0
    if (argn < 2) {
29215
0
        janetc_error(c, janet_formatc("expected at least 2 arguments to %s", kind));
29216
0
        return NULL;
29217
0
    }
29218
0
    for (i = 1; i < argn - 1; i++) {
29219
0
        Janet attr = argv[i];
29220
0
        switch (janet_type(attr)) {
29221
0
            case JANET_TUPLE:
29222
0
                janetc_cerror(c, "unexpected form - did you intend to use defn?");
29223
0
                break;
29224
0
            default:
29225
0
                janetc_error(c, janet_formatc("cannot add metadata %v to binding %s", attr, binding_name));
29226
0
                break;
29227
0
            case JANET_KEYWORD:
29228
0
                janet_table_put(tab, attr, janet_wrap_true());
29229
0
                break;
29230
0
            case JANET_STRING:
29231
0
                janet_table_put(tab, janet_ckeywordv("doc"), attr);
29232
0
                break;
29233
0
            case JANET_STRUCT:
29234
0
                janet_table_merge_struct(tab, janet_unwrap_struct(attr));
29235
0
                break;
29236
0
        }
29237
0
    }
29238
0
    return tab;
29239
0
}
29240
29241
typedef struct SlotHeadPair {
29242
    Janet lhs;
29243
    JanetSlot rhs;
29244
} SlotHeadPair;
29245
29246
0
SlotHeadPair *dohead_destructure(JanetCompiler *c, SlotHeadPair *into, JanetFopts opts, Janet lhs, Janet rhs) {
29247
29248
    /* Detect if we can do an optimization to avoid some allocations */
29249
0
    int can_destructure_lhs = janet_checktype(lhs, JANET_TUPLE)
29250
0
                              || janet_checktype(lhs, JANET_ARRAY);
29251
0
    int rhs_is_indexed = janet_checktype(rhs, JANET_ARRAY)
29252
0
                         || (janet_checktype(rhs, JANET_TUPLE) && (janet_tuple_flag(janet_unwrap_tuple(rhs)) & JANET_TUPLE_FLAG_BRACKETCTOR));
29253
0
    uint32_t has_drop = opts.flags & JANET_FOPTS_DROP;
29254
29255
0
    JanetFopts subopts = janetc_fopts_default(c);
29256
0
    subopts.flags = opts.flags & ~(JANET_FOPTS_TAIL | JANET_FOPTS_DROP);
29257
29258
0
    if (has_drop && can_destructure_lhs && rhs_is_indexed) {
29259
        /* Code is of the form (def [a b] [1 2]), avoid the allocation of two tuples */
29260
0
        JanetView view_lhs = {0};
29261
0
        JanetView view_rhs = {0};
29262
0
        janet_indexed_view(lhs, &view_lhs.items, &view_lhs.len);
29263
0
        janet_indexed_view(rhs, &view_rhs.items, &view_rhs.len);
29264
0
        int found_amp = 0;
29265
0
        for (int32_t i = 0; i < view_lhs.len; i++) {
29266
0
            if (janet_symeq(view_lhs.items[i], "&")) {
29267
0
                found_amp = 1;
29268
                /* Good error will be generated later. */
29269
0
                break;
29270
0
            }
29271
0
        }
29272
0
        if (!found_amp) {
29273
0
            for (int32_t i = 0; i < view_lhs.len; i++) {
29274
0
                Janet sub_rhs = view_rhs.len <= i ? janet_wrap_nil() : view_rhs.items[i];
29275
0
                into = dohead_destructure(c, into, subopts, view_lhs.items[i], sub_rhs);
29276
0
            }
29277
0
            return into;
29278
0
        }
29279
0
    }
29280
29281
    /* No optimization, do the simple way */
29282
0
    subopts.hint = opts.hint;
29283
0
    JanetSlot ret = janetc_value(subopts, rhs);
29284
0
    SlotHeadPair shp = {lhs, ret};
29285
0
    janet_v_push(into, shp);
29286
0
    return into;
29287
0
}
29288
29289
/* Def or var a symbol in a local scope */
29290
0
static int namelocal(JanetCompiler *c, const uint8_t *head, int32_t flags, JanetSlot ret) {
29291
0
    int isUnnamedRegister = !(ret.flags & JANET_SLOT_NAMED) &&
29292
0
                            ret.index > 0 &&
29293
0
                            ret.envindex >= 0;
29294
    /* optimization for `(def x my-def)` - don't emit a movn/movf instruction, we can just alias my-def */
29295
    /* TODO - implement optimization for `(def x my-var)` correctly as well w/ de-aliasing */
29296
0
    int canAlias = !(flags & JANET_SLOT_MUTABLE) &&
29297
0
                   !(ret.flags & JANET_SLOT_MUTABLE) &&
29298
0
                   (ret.flags & JANET_SLOT_NAMED) &&
29299
0
                   (ret.index >= 0) &&
29300
0
                   (ret.envindex == -1);
29301
0
    if (canAlias) {
29302
0
        ret.flags &= ~JANET_SLOT_MUTABLE;
29303
0
        isUnnamedRegister = 1; /* don't free slot after use - is an alias for another slot */
29304
0
    } else if (!isUnnamedRegister) {
29305
        /* Slot is not able to be named */
29306
0
        JanetSlot localslot = janetc_farslot(c);
29307
0
        janetc_copy(c, localslot, ret);
29308
0
        ret = localslot;
29309
0
    }
29310
0
    ret.flags |= flags;
29311
0
    janetc_nameslot(c, head, ret);
29312
0
    return !isUnnamedRegister;
29313
0
}
29314
29315
static int varleaf(
29316
    JanetCompiler *c,
29317
    const uint8_t *sym,
29318
    JanetSlot s,
29319
0
    JanetTable *reftab) {
29320
0
    if (c->scope->flags & JANET_SCOPE_TOP) {
29321
        /* Global var, generate var */
29322
0
        JanetSlot refslot;
29323
0
        JanetTable *entry = janet_table_clone(reftab);
29324
29325
0
        Janet redef_kw = janet_ckeywordv("redef");
29326
0
        int is_redef = janet_truthy(janet_table_get(c->env, redef_kw));
29327
29328
0
        JanetArray *ref;
29329
0
        JanetBinding old_binding;
29330
0
        if (is_redef && (old_binding = janet_resolve_ext(c->env, sym),
29331
0
                         old_binding.type == JANET_BINDING_VAR)) {
29332
0
            ref = janet_unwrap_array(old_binding.value);
29333
0
        } else {
29334
0
            ref = janet_array(1);
29335
0
            janet_array_push(ref, janet_wrap_nil());
29336
0
        }
29337
29338
0
        janet_table_put(entry, janet_ckeywordv("ref"), janet_wrap_array(ref));
29339
0
        janet_table_put(entry, janet_ckeywordv("source-map"),
29340
0
                        janet_wrap_tuple(janetc_make_sourcemap(c)));
29341
0
        janet_table_put(c->env, janet_wrap_symbol(sym), janet_wrap_table(entry));
29342
0
        refslot = janetc_cslot(janet_wrap_array(ref));
29343
0
        janetc_emit_ssu(c, JOP_PUT_INDEX, refslot, s, 0, 0);
29344
0
        return 1;
29345
0
    } else {
29346
0
        return namelocal(c, sym, JANET_SLOT_MUTABLE, s);
29347
0
    }
29348
0
}
29349
29350
0
static JanetSlot janetc_var(JanetFopts opts, int32_t argn, const Janet *argv) {
29351
0
    JanetCompiler *c = opts.compiler;
29352
0
    JanetTable *attr_table = handleattr(c, "var", argn, argv);
29353
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29354
0
        return janetc_cslot(janet_wrap_nil());
29355
0
    }
29356
0
    SlotHeadPair *into = NULL;
29357
0
    into = dohead_destructure(c, into, opts, argv[0], argv[argn - 1]);
29358
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29359
0
        janet_v_free(into);
29360
0
        return janetc_cslot(janet_wrap_nil());
29361
0
    }
29362
0
    JanetSlot ret;
29363
0
    janet_assert(janet_v_count(into) > 0, "bad destructure");
29364
0
    for (int32_t i = 0; i < janet_v_count(into); i++) {
29365
0
        destructure(c, into[i].lhs, into[i].rhs, varleaf, attr_table);
29366
0
        ret = into[i].rhs;
29367
0
    }
29368
0
    janet_v_free(into);
29369
0
    return ret;
29370
0
}
29371
29372
static int defleaf(
29373
    JanetCompiler *c,
29374
    const uint8_t *sym,
29375
    JanetSlot s,
29376
0
    JanetTable *tab) {
29377
0
    if (c->scope->flags & JANET_SCOPE_TOP) {
29378
0
        JanetTable *entry = janet_table_clone(tab);
29379
0
        janet_table_put(entry, janet_ckeywordv("source-map"),
29380
0
                        janet_wrap_tuple(janetc_make_sourcemap(c)));
29381
29382
0
        Janet redef_kw = janet_ckeywordv("redef");
29383
0
        int is_redef = janet_truthy(janet_table_get(c->env, redef_kw));
29384
0
        if (is_redef) janet_table_put(entry, redef_kw, janet_wrap_true());
29385
29386
0
        if (is_redef) {
29387
0
            JanetBinding binding = janet_resolve_ext(c->env, sym);
29388
0
            JanetArray *ref;
29389
0
            if (binding.type == JANET_BINDING_DYNAMIC_DEF || binding.type == JANET_BINDING_DYNAMIC_MACRO) {
29390
0
                ref = janet_unwrap_array(binding.value);
29391
0
            } else {
29392
0
                ref = janet_array(1);
29393
0
                janet_array_push(ref, janet_wrap_nil());
29394
0
            }
29395
0
            janet_table_put(entry, janet_ckeywordv("ref"), janet_wrap_array(ref));
29396
0
            JanetSlot refslot = janetc_cslot(janet_wrap_array(ref));
29397
0
            janetc_emit_ssu(c, JOP_PUT_INDEX, refslot, s, 0, 0);
29398
0
        } else {
29399
0
            JanetSlot valsym = janetc_cslot(janet_ckeywordv("value"));
29400
0
            JanetSlot tabslot = janetc_cslot(janet_wrap_table(entry));
29401
0
            janetc_emit_sss(c, JOP_PUT, tabslot, valsym, s, 0);
29402
0
        }
29403
29404
        /* Add env entry to env */
29405
0
        janet_table_put(c->env, janet_wrap_symbol(sym), janet_wrap_table(entry));
29406
0
    }
29407
0
    return namelocal(c, sym, 0, s);
29408
0
}
29409
29410
0
static JanetSlot janetc_def(JanetFopts opts, int32_t argn, const Janet *argv) {
29411
0
    JanetCompiler *c = opts.compiler;
29412
0
    JanetTable *attr_table = handleattr(c, "def", argn, argv);
29413
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29414
0
        return janetc_cslot(janet_wrap_nil());
29415
0
    }
29416
0
    opts.flags &= ~JANET_FOPTS_HINT;
29417
0
    SlotHeadPair *into = NULL;
29418
0
    into = dohead_destructure(c, into, opts, argv[0], argv[argn - 1]);
29419
0
    if (c->result.status == JANET_COMPILE_ERROR) {
29420
0
        janet_v_free(into);
29421
0
        return janetc_cslot(janet_wrap_nil());
29422
0
    }
29423
0
    JanetSlot ret;
29424
0
    janet_assert(janet_v_count(into) > 0, "bad destructure");
29425
0
    for (int32_t i = 0; i < janet_v_count(into); i++) {
29426
0
        destructure(c, into[i].lhs, into[i].rhs, defleaf, attr_table);
29427
0
        ret = into[i].rhs;
29428
0
    }
29429
0
    janet_v_free(into);
29430
0
    return ret;
29431
0
}
29432
29433
/* Check if a form matches the pattern (= nil _) or (not= nil _) */
29434
0
static int janetc_check_nil_form(Janet x, Janet *capture, uint32_t fun_tag) {
29435
0
    if (!janet_checktype(x, JANET_TUPLE)) return 0;
29436
0
    JanetTuple tup = janet_unwrap_tuple(x);
29437
0
    if (3 != janet_tuple_length(tup)) return 0;
29438
0
    Janet op1 = tup[0];
29439
0
    if (!janet_checktype(op1, JANET_FUNCTION)) return 0;
29440
0
    JanetFunction *fun = janet_unwrap_function(op1);
29441
0
    uint32_t tag = fun->def->flags & JANET_FUNCDEF_FLAG_TAG;
29442
0
    if (tag != fun_tag) return 0;
29443
0
    if (janet_checktype(tup[1], JANET_NIL)) {
29444
0
        *capture = tup[2];
29445
0
        return 1;
29446
0
    } else if (janet_checktype(tup[2], JANET_NIL)) {
29447
0
        *capture = tup[1];
29448
0
        return 1;
29449
0
    }
29450
0
    return 0;
29451
0
}
29452
29453
/*
29454
 * :condition
29455
 * ...
29456
 * jump-if-not condition :right
29457
 * :left
29458
 * ...
29459
 * jump done (only if not tail)
29460
 * :right
29461
 * ...
29462
 * :done
29463
 */
29464
0
static JanetSlot janetc_if(JanetFopts opts, int32_t argn, const Janet *argv) {
29465
0
    JanetCompiler *c = opts.compiler;
29466
0
    int32_t labelr, labeljr, labeld, labeljd;
29467
0
    JanetFopts condopts, bodyopts;
29468
0
    JanetSlot cond, left, right, target;
29469
0
    Janet truebody, falsebody;
29470
0
    JanetScope condscope, tempscope;
29471
0
    const int tail = opts.flags & JANET_FOPTS_TAIL;
29472
0
    const int drop = opts.flags & JANET_FOPTS_DROP;
29473
0
    uint8_t ifnjmp = JOP_JUMP_IF_NOT;
29474
29475
0
    if (argn < 2 || argn > 3) {
29476
0
        janetc_cerror(c, "expected 2 or 3 arguments to if");
29477
0
        return janetc_cslot(janet_wrap_nil());
29478
0
    }
29479
29480
    /* Get the bodies of the if expression */
29481
0
    truebody = argv[1];
29482
0
    falsebody = argn > 2 ? argv[2] : janet_wrap_nil();
29483
29484
    /* Get options */
29485
0
    condopts = janetc_fopts_default(c);
29486
0
    bodyopts = opts;
29487
0
    bodyopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
29488
29489
    /* Set target for compilation */
29490
0
    target = (drop || tail)
29491
0
             ? janetc_cslot(janet_wrap_nil())
29492
0
             : janetc_gettarget(opts);
29493
29494
    /* Compile condition */
29495
0
    janetc_scope(&condscope, c, 0, "if");
29496
29497
0
    Janet condform = argv[0];
29498
0
    if (janetc_check_nil_form(condform, &condform, JANET_FUN_EQ)) {
29499
0
        ifnjmp = JOP_JUMP_IF_NOT_NIL;
29500
0
    } else if (janetc_check_nil_form(condform, &condform, JANET_FUN_NEQ)) {
29501
0
        ifnjmp = JOP_JUMP_IF_NIL;
29502
0
    }
29503
29504
0
    cond = janetc_value(condopts, condform);
29505
29506
    /* Check constant condition. */
29507
    /* TODO: Use type info for more short circuits */
29508
0
    if (cond.flags & JANET_SLOT_CONSTANT) {
29509
0
        int swap_condition = 0;
29510
0
        if (ifnjmp == JOP_JUMP_IF_NOT && !janet_truthy(cond.constant)) swap_condition = 1;
29511
0
        if (ifnjmp == JOP_JUMP_IF_NIL && janet_checktype(cond.constant, JANET_NIL)) swap_condition = 1;
29512
0
        if (ifnjmp == JOP_JUMP_IF_NOT_NIL && !janet_checktype(cond.constant, JANET_NIL)) swap_condition = 1;
29513
0
        if (swap_condition) {
29514
            /* Swap the true and false bodies */
29515
0
            Janet temp = falsebody;
29516
0
            falsebody = truebody;
29517
0
            truebody = temp;
29518
0
        }
29519
0
        janetc_scope(&tempscope, c, 0, "if-true");
29520
0
        right = janetc_value(bodyopts, truebody);
29521
0
        if (!drop && !tail) janetc_copy(c, target, right);
29522
0
        janetc_popscope(c);
29523
0
        if (!janet_checktype(falsebody, JANET_NIL)) {
29524
0
            janetc_throwaway(bodyopts, falsebody);
29525
0
        }
29526
0
        janetc_popscope(c);
29527
0
        return target;
29528
0
    }
29529
29530
    /* Compile jump to right */
29531
0
    labeljr = janetc_emit_si(c, ifnjmp, cond, 0, 0);
29532
29533
    /* Condition left body */
29534
0
    janetc_scope(&tempscope, c, 0, "if-true");
29535
0
    left = janetc_value(bodyopts, truebody);
29536
0
    if (!drop && !tail) janetc_copy(c, target, left);
29537
0
    janetc_popscope(c);
29538
29539
    /* Compile jump to done */
29540
0
    labeljd = janet_v_count(c->buffer);
29541
0
    if (!tail && !(drop && janet_checktype(falsebody, JANET_NIL))) janetc_emit(c, JOP_JUMP);
29542
29543
    /* Compile right body */
29544
0
    labelr = janet_v_count(c->buffer);
29545
0
    janetc_scope(&tempscope, c, 0, "if-false");
29546
0
    right = janetc_value(bodyopts, falsebody);
29547
0
    if (!drop && !tail) janetc_copy(c, target, right);
29548
0
    janetc_popscope(c);
29549
29550
    /* Pop main scope */
29551
0
    janetc_popscope(c);
29552
29553
    /* Write jumps - only add jump lengths if jump actually emitted */
29554
0
    labeld = janet_v_count(c->buffer);
29555
0
    c->buffer[labeljr] |= (labelr - labeljr) << 16;
29556
0
    if (!tail) c->buffer[labeljd] |= (labeld - labeljd) << 8;
29557
29558
0
    if (tail) target.flags |= JANET_SLOT_RETURNED;
29559
0
    return target;
29560
0
}
29561
29562
/* Compile a do form. Do forms execute their body sequentially and
29563
 * evaluate to the last expression in the body. */
29564
0
static JanetSlot janetc_do(JanetFopts opts, int32_t argn, const Janet *argv) {
29565
0
    int32_t i;
29566
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
29567
0
    JanetCompiler *c = opts.compiler;
29568
0
    JanetFopts subopts = janetc_fopts_default(c);
29569
0
    JanetScope tempscope;
29570
0
    janetc_scope(&tempscope, c, 0, "do");
29571
0
    for (i = 0; i < argn; i++) {
29572
0
        if (i != argn - 1) {
29573
0
            subopts.flags = JANET_FOPTS_DROP;
29574
0
        } else {
29575
0
            subopts = opts;
29576
0
            subopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
29577
0
        }
29578
0
        ret = janetc_value(subopts, argv[i]);
29579
0
        if (i != argn - 1) {
29580
0
            janetc_freeslot(c, ret);
29581
0
        }
29582
0
    }
29583
0
    janetc_popscope_keepslot(c, ret);
29584
0
    return ret;
29585
0
}
29586
29587
/* Compile an upscope form. Upscope forms execute their body sequentially and
29588
 * evaluate to the last expression in the body, but without lexical scope. */
29589
0
static JanetSlot janetc_upscope(JanetFopts opts, int32_t argn, const Janet *argv) {
29590
0
    int32_t i;
29591
0
    JanetSlot ret = janetc_cslot(janet_wrap_nil());
29592
0
    JanetCompiler *c = opts.compiler;
29593
0
    JanetFopts subopts = janetc_fopts_default(c);
29594
0
    for (i = 0; i < argn; i++) {
29595
0
        if (i != argn - 1) {
29596
0
            subopts.flags = JANET_FOPTS_DROP;
29597
0
        } else {
29598
0
            subopts = opts;
29599
0
            subopts.flags &= ~JANET_FOPTS_ACCEPT_SPLICE;
29600
0
        }
29601
0
        ret = janetc_value(subopts, argv[i]);
29602
0
        if (i != argn - 1) {
29603
0
            janetc_freeslot(c, ret);
29604
0
        }
29605
0
    }
29606
0
    return ret;
29607
0
}
29608
29609
/* Add a funcdef to the top most function scope */
29610
0
static int32_t janetc_addfuncdef(JanetCompiler *c, JanetFuncDef *def) {
29611
0
    JanetScope *scope = c->scope;
29612
0
    while (scope) {
29613
0
        if (scope->flags & JANET_SCOPE_FUNCTION)
29614
0
            break;
29615
0
        scope = scope->parent;
29616
0
    }
29617
0
    janet_assert(scope, "could not add funcdef");
29618
0
    janet_v_push(scope->defs, def);
29619
0
    return janet_v_count(scope->defs) - 1;
29620
0
}
29621
29622
/*
29623
 * break
29624
 *
29625
 * jump :end or retn if in function
29626
 */
29627
0
static JanetSlot janetc_break(JanetFopts opts, int32_t argn, const Janet *argv) {
29628
0
    JanetCompiler *c = opts.compiler;
29629
0
    JanetScope *scope = c->scope;
29630
0
    if (argn > 1) {
29631
0
        janetc_cerror(c, "expected at most 1 argument");
29632
0
        return janetc_cslot(janet_wrap_nil());
29633
0
    }
29634
29635
    /* Find scope to break from */
29636
0
    while (scope) {
29637
0
        if (scope->flags & (JANET_SCOPE_FUNCTION | JANET_SCOPE_WHILE))
29638
0
            break;
29639
0
        scope = scope->parent;
29640
0
    }
29641
0
    if (NULL == scope) {
29642
0
        janetc_cerror(c, "break must occur in while loop or closure");
29643
0
        return janetc_cslot(janet_wrap_nil());
29644
0
    }
29645
29646
    /* Emit code to break from that scope */
29647
0
    JanetFopts subopts = janetc_fopts_default(c);
29648
0
    if (scope->flags & JANET_SCOPE_FUNCTION) {
29649
0
        if (!(scope->flags & JANET_SCOPE_WHILE) && argn) {
29650
            /* Closure body with return argument */
29651
0
            subopts.flags |= JANET_FOPTS_TAIL;
29652
0
            janetc_value(subopts, argv[0]);
29653
0
            return janetc_cslot(janet_wrap_nil());
29654
0
        } else {
29655
            /* while loop IIFE or no argument */
29656
0
            if (argn) {
29657
0
                subopts.flags |= JANET_FOPTS_DROP;
29658
0
                janetc_value(subopts, argv[0]);
29659
0
            }
29660
0
            janetc_emit(c, JOP_RETURN_NIL);
29661
0
            return janetc_cslot(janet_wrap_nil());
29662
0
        }
29663
0
    } else {
29664
0
        if (argn) {
29665
0
            subopts.flags |= JANET_FOPTS_DROP;
29666
0
            janetc_value(subopts, argv[0]);
29667
0
        }
29668
        /* Tag the instruction so the while special can turn it into a proper jump */
29669
0
        janetc_emit(c, 0x80 | JOP_JUMP);
29670
0
        return janetc_cslot(janet_wrap_nil());
29671
0
    }
29672
0
}
29673
29674
/*
29675
 * :whiletop
29676
 * ...
29677
 * :condition
29678
 * jump-if-not cond :done
29679
 * ...
29680
 * jump :whiletop
29681
 * :done
29682
 */
29683
0
static JanetSlot janetc_while(JanetFopts opts, int32_t argn, const Janet *argv) {
29684
0
    JanetCompiler *c = opts.compiler;
29685
0
    JanetSlot cond;
29686
0
    JanetFopts subopts = janetc_fopts_default(c);
29687
0
    JanetScope tempscope;
29688
0
    int32_t labelwt, labeld, labeljt, labelc, i;
29689
0
    int infinite = 0;
29690
0
    int is_nil_form = 0;
29691
0
    int is_notnil_form = 0;
29692
0
    uint8_t ifjmp = JOP_JUMP_IF;
29693
0
    uint8_t ifnjmp = JOP_JUMP_IF_NOT;
29694
29695
0
    if (argn < 1) {
29696
0
        janetc_cerror(c, "expected at least 1 argument to while");
29697
0
        return janetc_cslot(janet_wrap_nil());
29698
0
    }
29699
29700
0
    labelwt = janet_v_count(c->buffer);
29701
29702
0
    janetc_scope(&tempscope, c, JANET_SCOPE_WHILE, "while");
29703
29704
    /* Check for `(= nil _)` or `(not= nil _)` in condition, and if so, use the
29705
     * jmpnl or jmpnn instructions. This let's us implement `(each ...)`
29706
     * more efficiently. */
29707
0
    Janet condform = argv[0];
29708
0
    if (janetc_check_nil_form(condform, &condform, JANET_FUN_EQ)) {
29709
0
        is_nil_form = 1;
29710
0
        ifjmp = JOP_JUMP_IF_NIL;
29711
0
        ifnjmp = JOP_JUMP_IF_NOT_NIL;
29712
0
    }
29713
0
    if (janetc_check_nil_form(condform, &condform, JANET_FUN_NEQ)) {
29714
0
        is_notnil_form = 1;
29715
0
        ifjmp = JOP_JUMP_IF_NOT_NIL;
29716
0
        ifnjmp = JOP_JUMP_IF_NIL;
29717
0
    }
29718
29719
    /* Compile condition */
29720
0
    cond = janetc_value(subopts, condform);
29721
29722
    /* Check for constant condition */
29723
0
    if (cond.flags & JANET_SLOT_CONSTANT) {
29724
        /* Loop never executes */
29725
0
        int never_executes = is_nil_form
29726
0
                             ? !janet_checktype(cond.constant, JANET_NIL)
29727
0
                             : is_notnil_form
29728
0
                             ? janet_checktype(cond.constant, JANET_NIL)
29729
0
                             : !janet_truthy(cond.constant);
29730
0
        if (never_executes) {
29731
0
            janetc_popscope(c);
29732
0
            return janetc_cslot(janet_wrap_nil());
29733
0
        }
29734
        /* Infinite loop */
29735
0
        infinite = 1;
29736
0
    }
29737
29738
    /* Infinite loop does not need to check condition */
29739
0
    labelc = infinite
29740
0
             ? 0
29741
0
             : janetc_emit_si(c, ifnjmp, cond, 0, 0);
29742
29743
    /* Compile body */
29744
0
    for (i = 1; i < argn; i++) {
29745
0
        subopts.flags = JANET_FOPTS_DROP;
29746
0
        janetc_freeslot(c, janetc_value(subopts, argv[i]));
29747
0
    }
29748
29749
    /* Check if closure created in while scope. If so,
29750
     * recompile in a function scope. */
29751
0
    if (tempscope.flags & JANET_SCOPE_CLOSURE) {
29752
0
        subopts = janetc_fopts_default(c);
29753
0
        tempscope.flags |= JANET_SCOPE_UNUSED;
29754
0
        janetc_popscope(c);
29755
0
        if (c->buffer) janet_v__cnt(c->buffer) = labelwt;
29756
0
        if (c->mapbuffer) janet_v__cnt(c->mapbuffer) = labelwt;
29757
29758
0
        janetc_scope(&tempscope, c, JANET_SCOPE_FUNCTION, "while-iife");
29759
29760
        /* Recompile in the function scope */
29761
0
        cond = janetc_value(subopts, condform);
29762
0
        if (!(cond.flags & JANET_SLOT_CONSTANT)) {
29763
            /* If not an infinite loop, return nil when condition false */
29764
0
            janetc_emit_si(c, ifjmp, cond, 2, 0);
29765
0
            janetc_emit(c, JOP_RETURN_NIL);
29766
0
        }
29767
0
        for (i = 1; i < argn; i++) {
29768
0
            subopts.flags = JANET_FOPTS_DROP;
29769
0
            janetc_freeslot(c, janetc_value(subopts, argv[i]));
29770
0
        }
29771
        /* But now add tail recursion */
29772
0
        int32_t tempself = janetc_regalloc_temp(&tempscope.ra, JANETC_REGTEMP_0);
29773
0
        janetc_emit(c, JOP_LOAD_SELF | (tempself << 8));
29774
0
        janetc_emit(c, JOP_TAILCALL | (tempself << 8));
29775
0
        janetc_regalloc_freetemp(&c->scope->ra, tempself, JANETC_REGTEMP_0);
29776
        /* Compile function */
29777
0
        JanetFuncDef *def = janetc_pop_funcdef(c);
29778
0
        def->name = janet_cstring("_while");
29779
0
        janet_def_addflags(def);
29780
0
        int32_t defindex = janetc_addfuncdef(c, def);
29781
        /* And then load the closure and call it. */
29782
0
        int32_t cloreg = janetc_regalloc_temp(&c->scope->ra, JANETC_REGTEMP_0);
29783
0
        janetc_emit(c, JOP_CLOSURE | (cloreg << 8) | (defindex << 16));
29784
0
        janetc_emit(c, JOP_CALL | (cloreg << 8) | (cloreg << 16));
29785
0
        janetc_regalloc_freetemp(&c->scope->ra, cloreg, JANETC_REGTEMP_0);
29786
0
        c->scope->flags |= JANET_SCOPE_CLOSURE;
29787
0
        return janetc_cslot(janet_wrap_nil());
29788
0
    }
29789
29790
    /* Compile jump to :whiletop */
29791
0
    labeljt = janet_v_count(c->buffer);
29792
0
    janetc_emit(c, JOP_JUMP);
29793
29794
    /* Calculate jumps */
29795
0
    labeld = janet_v_count(c->buffer);
29796
0
    if (!infinite) c->buffer[labelc] |= (uint32_t)(labeld - labelc) << 16;
29797
0
    c->buffer[labeljt] |= (uint32_t)(labelwt - labeljt) << 8;
29798
29799
    /* Calculate breaks */
29800
0
    for (int32_t i = labelwt; i < labeld; i++) {
29801
0
        if (c->buffer[i] == (0x80 | JOP_JUMP)) {
29802
0
            c->buffer[i] = JOP_JUMP | ((labeld - i) << 8);
29803
0
        }
29804
0
    }
29805
29806
    /* Pop scope and return nil slot */
29807
0
    janetc_popscope(c);
29808
29809
0
    return janetc_cslot(janet_wrap_nil());
29810
0
}
29811
29812
0
static JanetSlot janetc_fn(JanetFopts opts, int32_t argn, const Janet *argv) {
29813
0
    JanetCompiler *c = opts.compiler;
29814
0
    JanetFuncDef *def;
29815
0
    JanetSlot ret;
29816
0
    Janet head;
29817
0
    JanetScope fnscope;
29818
0
    int32_t paramcount, argi, parami, arity, min_arity = 0, max_arity, defindex, i;
29819
0
    JanetFopts subopts = janetc_fopts_default(c);
29820
0
    const Janet *params;
29821
0
    const char *errmsg = NULL;
29822
29823
    /* Function flags */
29824
0
    int vararg = 0;
29825
0
    int structarg = 0;
29826
0
    int allow_extra = 0;
29827
0
    int selfref = 0;
29828
0
    int hasname = 0;
29829
0
    int seenamp = 0;
29830
0
    int seenopt = 0;
29831
0
    int namedargs = 0;
29832
29833
    /* Begin function */
29834
0
    c->scope->flags |= JANET_SCOPE_CLOSURE;
29835
0
    janetc_scope(&fnscope, c, JANET_SCOPE_FUNCTION, "function");
29836
29837
0
    if (argn == 0) {
29838
0
        errmsg = "expected at least 1 argument to function literal";
29839
0
        goto error;
29840
0
    }
29841
29842
    /* Read function parameters */
29843
0
    parami = 0;
29844
0
    head = argv[0];
29845
0
    if (janet_checktype(head, JANET_SYMBOL)) {
29846
0
        selfref = 1;
29847
0
        hasname = 1;
29848
0
        parami = 1;
29849
0
    } else if (janet_checktype(head, JANET_KEYWORD)) {
29850
0
        hasname = 1;
29851
0
        parami = 1;
29852
0
    }
29853
0
    if (parami >= argn || !janet_checktype(argv[parami], JANET_TUPLE)) {
29854
0
        errmsg = "expected function parameters";
29855
0
        goto error;
29856
0
    }
29857
29858
    /* Keep track of destructured parameters */
29859
0
    JanetSlot *destructed_params = NULL;
29860
0
    JanetSlot *named_params = NULL;
29861
0
    JanetTable *named_table = NULL;
29862
0
    JanetSlot named_slot;
29863
29864
    /* Compile function parameters */
29865
0
    params = janet_unwrap_tuple(argv[parami]);
29866
0
    paramcount = janet_tuple_length(params);
29867
0
    arity = paramcount;
29868
0
    for (i = 0; i < paramcount; i++) {
29869
0
        Janet param = params[i];
29870
0
        if (namedargs) {
29871
0
            arity--;
29872
0
            if (!janet_checktype(param, JANET_SYMBOL)) {
29873
0
                errmsg = "only named arguments can follow &named";
29874
0
                goto error;
29875
0
            }
29876
0
            Janet key = janet_wrap_keyword(janet_unwrap_symbol(param));
29877
0
            janet_table_put(named_table, key, param);
29878
0
            janet_v_push(named_params, janetc_farslot(c));
29879
0
        } else if (janet_checktype(param, JANET_SYMBOL)) {
29880
            /* Check for varargs and unfixed arity */
29881
0
            const uint8_t *sym = janet_unwrap_symbol(param);
29882
0
            if (sym[0] == '&') {
29883
0
                if (!janet_cstrcmp(sym, "&")) {
29884
0
                    if (seenamp) {
29885
0
                        errmsg = "& in unexpected location";
29886
0
                        goto error;
29887
0
                    } else if (i == paramcount - 1) {
29888
0
                        allow_extra = 1;
29889
0
                        arity--;
29890
0
                    } else if (i == paramcount - 2) {
29891
0
                        vararg = 1;
29892
0
                        arity -= 2;
29893
0
                    } else {
29894
0
                        errmsg = "& in unexpected location";
29895
0
                        goto error;
29896
0
                    }
29897
0
                    seenamp = 1;
29898
0
                } else if (!janet_cstrcmp(sym, "&opt")) {
29899
0
                    if (seenopt) {
29900
0
                        errmsg = "only one &opt allowed";
29901
0
                        goto error;
29902
0
                    } else if (i == paramcount - 1) {
29903
0
                        errmsg = "&opt cannot be last item in parameter list";
29904
0
                        goto error;
29905
0
                    }
29906
0
                    min_arity = i;
29907
0
                    arity--;
29908
0
                    seenopt = 1;
29909
0
                } else if (!janet_cstrcmp(sym, "&keys")) {
29910
0
                    if (seenamp) {
29911
0
                        errmsg = "&keys in unexpected location";
29912
0
                        goto error;
29913
0
                    } else if (i == paramcount - 2) {
29914
0
                        vararg = 1;
29915
0
                        structarg = 1;
29916
0
                        arity -= 2;
29917
0
                    } else {
29918
0
                        errmsg = "&keys in unexpected location";
29919
0
                        goto error;
29920
0
                    }
29921
0
                    seenamp = 1;
29922
0
                } else if (!janet_cstrcmp(sym, "&named")) {
29923
0
                    if (seenamp) {
29924
0
                        errmsg = "&named in unexpected location";
29925
0
                        goto error;
29926
0
                    }
29927
0
                    vararg = 1;
29928
0
                    structarg = 1;
29929
0
                    arity--;
29930
0
                    seenamp = 1;
29931
0
                    namedargs = 1;
29932
0
                    named_table = janet_table(10);
29933
0
                    named_slot = janetc_farslot(c);
29934
0
                } else {
29935
0
                    janetc_nameslot(c, sym, janetc_farslot(c));
29936
0
                }
29937
0
            } else {
29938
0
                janetc_nameslot(c, sym, janetc_farslot(c));
29939
0
            }
29940
0
        } else {
29941
0
            janet_v_push(destructed_params, janetc_farslot(c));
29942
0
        }
29943
0
    }
29944
29945
    /* Compile destructed params */
29946
0
    int32_t j = 0;
29947
0
    for (i = 0; i < paramcount; i++) {
29948
0
        Janet param = params[i];
29949
0
        if (!janet_checktype(param, JANET_SYMBOL)) {
29950
0
            janet_assert(janet_v_count(destructed_params) > j, "out of bounds");
29951
0
            JanetSlot reg = destructed_params[j++];
29952
0
            destructure(c, param, reg, defleaf, NULL);
29953
0
            janetc_freeslot(c, reg);
29954
0
        }
29955
0
    }
29956
0
    janet_v_free(destructed_params);
29957
29958
    /* Compile named arguments */
29959
0
    if (namedargs) {
29960
0
        Janet param = janet_wrap_table(named_table);
29961
0
        destructure(c, param, named_slot, defleaf, NULL);
29962
0
        janetc_freeslot(c, named_slot);
29963
0
        janet_v_free(named_params);
29964
0
    }
29965
29966
0
    max_arity = (vararg || allow_extra) ? INT32_MAX : arity;
29967
0
    if (!seenopt) min_arity = arity;
29968
29969
    /* Check for self ref (also avoid if arguments shadow own name) */
29970
0
    if (selfref) {
29971
        /* Check if the parameters shadow the function name. If so, don't
29972
         * emit JOP_LOAD_SELF and add a binding since that most users
29973
         * seem to expect that function parameters take precedence over the
29974
         * function name */
29975
0
        const uint8_t *sym = janet_unwrap_symbol(head);
29976
0
        int32_t len = janet_v_count(c->scope->syms);
29977
0
        int found = 0;
29978
0
        for (int32_t i = 0; i < len; i++) {
29979
0
            if (c->scope->syms[i].sym == sym) {
29980
0
                found = 1;
29981
0
            }
29982
0
        }
29983
0
        if (!found) {
29984
0
            JanetSlot slot = janetc_farslot(c);
29985
0
            slot.flags = JANET_SLOT_NAMED | JANET_FUNCTION;
29986
0
            janetc_emit_s(c, JOP_LOAD_SELF, slot, 1);
29987
0
            janetc_nameslot(c, sym, slot);
29988
0
        }
29989
0
    }
29990
29991
    /* Compile function body */
29992
0
    if (parami + 1 == argn) {
29993
0
        janetc_emit(c, JOP_RETURN_NIL);
29994
0
    } else {
29995
0
        for (argi = parami + 1; argi < argn; argi++) {
29996
0
            subopts.flags = (argi == (argn - 1)) ? JANET_FOPTS_TAIL : JANET_FOPTS_DROP;
29997
0
            janetc_value(subopts, argv[argi]);
29998
0
            if (c->result.status == JANET_COMPILE_ERROR)
29999
0
                goto error2;
30000
0
        }
30001
0
    }
30002
30003
    /* Build function */
30004
0
    def = janetc_pop_funcdef(c);
30005
0
    def->arity = arity;
30006
0
    def->min_arity = min_arity;
30007
0
    def->max_arity = max_arity;
30008
0
    if (vararg) def->flags |= JANET_FUNCDEF_FLAG_VARARG;
30009
0
    if (structarg) def->flags |= JANET_FUNCDEF_FLAG_STRUCTARG;
30010
30011
0
    if (hasname) def->name = janet_unwrap_symbol(head); /* Also correctly unwraps keyword */
30012
0
    janet_def_addflags(def);
30013
0
    defindex = janetc_addfuncdef(c, def);
30014
30015
    /* Ensure enough slots for vararg function. */
30016
0
    if (arity + vararg > def->slotcount) def->slotcount = arity + vararg;
30017
30018
    /* Instantiate closure */
30019
0
    ret = janetc_gettarget(opts);
30020
0
    janetc_emit_su(c, JOP_CLOSURE, ret, defindex, 1);
30021
0
    return ret;
30022
30023
0
error:
30024
0
    janetc_cerror(c, errmsg);
30025
0
error2:
30026
0
    janetc_popscope(c);
30027
0
    return janetc_cslot(janet_wrap_nil());
30028
0
}
30029
30030
/* Keep in lexicographic order */
30031
static const JanetSpecial janetc_specials[] = {
30032
    {"break", janetc_break},
30033
    {"def", janetc_def},
30034
    {"do", janetc_do},
30035
    {"fn", janetc_fn},
30036
    {"if", janetc_if},
30037
    {"quasiquote", janetc_quasiquote},
30038
    {"quote", janetc_quote},
30039
    {"set", janetc_varset},
30040
    {"splice", janetc_splice},
30041
    {"unquote", janetc_unquote},
30042
    {"upscope", janetc_upscope},
30043
    {"var", janetc_var},
30044
    {"while", janetc_while}
30045
};
30046
30047
/* Find a special */
30048
0
const JanetSpecial *janetc_special(const uint8_t *name) {
30049
0
    return janet_strbinsearch(
30050
0
               &janetc_specials,
30051
0
               sizeof(janetc_specials) / sizeof(JanetSpecial),
30052
0
               sizeof(JanetSpecial),
30053
0
               name);
30054
0
}
30055
30056
30057
/* src/core/state.c */
30058
#line 0 "src/core/state.c"
30059
30060
/*
30061
* Copyright (c) 2025 Calvin Rose
30062
*
30063
* Permission is hereby granted, free of charge, to any person obtaining a copy
30064
* of this software and associated documentation files (the "Software"), to
30065
* deal in the Software without restriction, including without limitation the
30066
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
30067
* sell copies of the Software, and to permit persons to whom the Software is
30068
* furnished to do so, subject to the following conditions:
30069
*
30070
* The above copyright notice and this permission notice shall be included in
30071
* all copies or substantial portions of the Software.
30072
*
30073
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30074
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30075
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30076
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30077
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30078
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30079
* IN THE SOFTWARE.
30080
*/
30081
30082
#ifndef JANET_AMALG
30083
#include "features.h"
30084
#include <janet.h>
30085
#include "state.h"
30086
#include "util.h"
30087
#endif
30088
30089
#ifdef JANET_WINDOWS
30090
#include <windows.h>
30091
#endif
30092
30093
JANET_THREAD_LOCAL JanetVM janet_vm;
30094
30095
0
JanetVM *janet_local_vm(void) {
30096
0
    return &janet_vm;
30097
0
}
30098
30099
0
JanetVM *janet_vm_alloc(void) {
30100
0
    JanetVM *mem = janet_malloc(sizeof(JanetVM));
30101
0
    if (NULL == mem) {
30102
0
        JANET_OUT_OF_MEMORY;
30103
0
    }
30104
0
    return mem;
30105
0
}
30106
30107
0
void janet_vm_free(JanetVM *vm) {
30108
0
    janet_free(vm);
30109
0
}
30110
30111
0
void janet_vm_save(JanetVM *into) {
30112
0
    *into = janet_vm;
30113
0
}
30114
30115
0
void janet_vm_load(JanetVM *from) {
30116
0
    janet_vm = *from;
30117
0
}
30118
30119
/* Trigger suspension of the Janet vm by trying to
30120
 * exit the interpreter loop when convenient. You can optionally
30121
 * use NULL to interrupt the current VM when convenient */
30122
0
void janet_interpreter_interrupt(JanetVM *vm) {
30123
0
    vm = vm ? vm : &janet_vm;
30124
0
    janet_atomic_inc(&vm->auto_suspend);
30125
0
}
30126
30127
0
void janet_interpreter_interrupt_handled(JanetVM *vm) {
30128
0
    vm = vm ? vm : &janet_vm;
30129
0
    janet_atomic_dec(&vm->auto_suspend);
30130
0
}
30131
30132
30133
/* src/core/string.c */
30134
#line 0 "src/core/string.c"
30135
30136
/*
30137
* Copyright (c) 2025 Calvin Rose
30138
*
30139
* Permission is hereby granted, free of charge, to any person obtaining a copy
30140
* of this software and associated documentation files (the "Software"), to
30141
* deal in the Software without restriction, including without limitation the
30142
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
30143
* sell copies of the Software, and to permit persons to whom the Software is
30144
* furnished to do so, subject to the following conditions:
30145
*
30146
* The above copyright notice and this permission notice shall be included in
30147
* all copies or substantial portions of the Software.
30148
*
30149
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30150
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30151
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30152
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30153
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30154
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30155
* IN THE SOFTWARE.
30156
*/
30157
30158
#ifndef JANET_AMALG
30159
#include "features.h"
30160
#include <janet.h>
30161
#include "gc.h"
30162
#include "util.h"
30163
#include "state.h"
30164
#endif
30165
30166
#include <string.h>
30167
30168
/* Begin building a string */
30169
0
uint8_t *janet_string_begin(int32_t length) {
30170
0
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_STRING, sizeof(JanetStringHead) + (size_t) length + 1);
30171
0
    head->length = length;
30172
0
    uint8_t *data = (uint8_t *)head->data;
30173
0
    data[length] = 0;
30174
0
    return data;
30175
0
}
30176
30177
/* Finish building a string */
30178
0
const uint8_t *janet_string_end(uint8_t *str) {
30179
0
    janet_string_hash(str) = janet_string_calchash(str, janet_string_length(str));
30180
0
    return str;
30181
0
}
30182
30183
/* Load a buffer as a string */
30184
2.78M
const uint8_t *janet_string(const uint8_t *buf, int32_t len) {
30185
2.78M
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_STRING, sizeof(JanetStringHead) + (size_t) len + 1);
30186
2.78M
    head->length = len;
30187
2.78M
    head->hash = janet_string_calchash(buf, len);
30188
2.78M
    uint8_t *data = (uint8_t *)head->data;
30189
2.78M
    safe_memcpy(data, buf, len);
30190
2.78M
    data[len] = 0;
30191
2.78M
    return data;
30192
2.78M
}
30193
30194
/* Compare two strings */
30195
480k
int janet_string_compare(const uint8_t *lhs, const uint8_t *rhs) {
30196
480k
    int32_t xlen = janet_string_length(lhs);
30197
480k
    int32_t ylen = janet_string_length(rhs);
30198
480k
    int32_t len = xlen > ylen ? ylen : xlen;
30199
480k
    int res = memcmp(lhs, rhs, len);
30200
480k
    if (res) return res > 0 ? 1 : -1;
30201
479k
    if (xlen == ylen) return 0;
30202
697
    return xlen < ylen ? -1 : 1;
30203
479k
}
30204
30205
/* Compare a janet string with a piece of memory */
30206
4.34M
int janet_string_equalconst(const uint8_t *lhs, const uint8_t *rhs, int32_t rlen, int32_t rhash) {
30207
4.34M
    int32_t lhash = janet_string_hash(lhs);
30208
4.34M
    int32_t llen = janet_string_length(lhs);
30209
4.34M
    if (lhash != rhash || llen != rlen)
30210
227k
        return 0;
30211
4.11M
    if (lhs == rhs)
30212
26.4k
        return 1;
30213
4.09M
    return !memcmp(lhs, rhs, rlen);
30214
4.11M
}
30215
30216
/* Check if two strings are equal */
30217
131k
int janet_string_equal(const uint8_t *lhs, const uint8_t *rhs) {
30218
131k
    return janet_string_equalconst(lhs, rhs,
30219
131k
                                   janet_string_length(rhs), janet_string_hash(rhs));
30220
131k
}
30221
30222
/* Load a c string */
30223
0
const uint8_t *janet_cstring(const char *str) {
30224
0
    return janet_string((const uint8_t *)str, (int32_t)strlen(str));
30225
0
}
30226
30227
/* Knuth Morris Pratt Algorithm */
30228
30229
struct kmp_state {
30230
    int32_t i;
30231
    int32_t j;
30232
    int32_t textlen;
30233
    int32_t patlen;
30234
    int32_t *lookup;
30235
    const uint8_t *text;
30236
    const uint8_t *pat;
30237
};
30238
30239
static void kmp_init(
30240
    struct kmp_state *s,
30241
    const uint8_t *text, int32_t textlen,
30242
0
    const uint8_t *pat, int32_t patlen) {
30243
0
    if (patlen == 0) {
30244
0
        janet_panic("expected non-empty pattern");
30245
0
    }
30246
0
    int32_t *lookup = janet_calloc(patlen, sizeof(int32_t));
30247
0
    if (!lookup) {
30248
0
        JANET_OUT_OF_MEMORY;
30249
0
    }
30250
0
    s->lookup = lookup;
30251
0
    s->i = 0;
30252
0
    s->j = 0;
30253
0
    s->text = text;
30254
0
    s->pat = pat;
30255
0
    s->textlen = textlen;
30256
0
    s->patlen = patlen;
30257
    /* Init state machine */
30258
0
    {
30259
0
        int32_t i, j;
30260
0
        for (i = 1, j = 0; i < patlen; i++) {
30261
0
            while (j && pat[j] != pat[i]) j = lookup[j - 1];
30262
0
            if (pat[j] == pat[i]) j++;
30263
0
            lookup[i] = j;
30264
0
        }
30265
0
    }
30266
0
}
30267
30268
0
static void kmp_deinit(struct kmp_state *state) {
30269
0
    janet_free(state->lookup);
30270
0
}
30271
30272
0
static void kmp_seti(struct kmp_state *state, int32_t i) {
30273
0
    state->i = i;
30274
0
    state->j = 0;
30275
0
}
30276
30277
0
static int32_t kmp_next(struct kmp_state *state) {
30278
0
    int32_t i = state->i;
30279
0
    int32_t j = state->j;
30280
0
    int32_t textlen = state->textlen;
30281
0
    int32_t patlen = state->patlen;
30282
0
    const uint8_t *text = state->text;
30283
0
    const uint8_t *pat = state->pat;
30284
0
    int32_t *lookup = state->lookup;
30285
0
    while (i < textlen) {
30286
0
        if (text[i] == pat[j]) {
30287
0
            if (j == patlen - 1) {
30288
0
                state->i = i + 1;
30289
0
                state->j = lookup[j];
30290
0
                return i - j;
30291
0
            } else {
30292
0
                i++;
30293
0
                j++;
30294
0
            }
30295
0
        } else {
30296
0
            if (j > 0) {
30297
0
                j = lookup[j - 1];
30298
0
            } else {
30299
0
                i++;
30300
0
            }
30301
0
        }
30302
0
    }
30303
0
    return -1;
30304
0
}
30305
30306
/* CFuns */
30307
30308
JANET_CORE_FN(cfun_string_slice,
30309
              "(string/slice bytes &opt start end)",
30310
              "Returns a substring from a byte sequence. The substring is from "
30311
              "index `start` inclusive to index `end`, exclusive. All indexing "
30312
              "is from 0. `start` and `end` can also be negative to indicate indexing "
30313
              "from the end of the string. Note that if `start` is negative it is "
30314
              "exclusive, and if `end` is negative it is inclusive, to allow a full "
30315
0
              "negative slice range.") {
30316
0
    JanetByteView view = janet_getbytes(argv, 0);
30317
0
    JanetRange range = janet_getslice(argc, argv);
30318
0
    return janet_stringv(view.bytes + range.start, range.end - range.start);
30319
0
}
30320
30321
JANET_CORE_FN(cfun_symbol_slice,
30322
              "(symbol/slice bytes &opt start end)",
30323
0
              "Same as string/slice, but returns a symbol.") {
30324
0
    JanetByteView view = janet_getbytes(argv, 0);
30325
0
    JanetRange range = janet_getslice(argc, argv);
30326
0
    return janet_symbolv(view.bytes + range.start, range.end - range.start);
30327
0
}
30328
30329
JANET_CORE_FN(cfun_keyword_slice,
30330
              "(keyword/slice bytes &opt start end)",
30331
0
              "Same as string/slice, but returns a keyword.") {
30332
0
    JanetByteView view = janet_getbytes(argv, 0);
30333
0
    JanetRange range = janet_getslice(argc, argv);
30334
0
    return janet_keywordv(view.bytes + range.start, range.end - range.start);
30335
0
}
30336
30337
JANET_CORE_FN(cfun_string_repeat,
30338
              "(string/repeat bytes n)",
30339
0
              "Returns a string that is `n` copies of `bytes` concatenated.") {
30340
0
    janet_fixarity(argc, 2);
30341
0
    JanetByteView view = janet_getbytes(argv, 0);
30342
0
    int32_t rep = janet_getinteger(argv, 1);
30343
0
    if (rep < 0) janet_panic("expected non-negative number of repetitions");
30344
0
    if (rep == 0) return janet_cstringv("");
30345
0
    int64_t mulres = (int64_t) rep * view.len;
30346
0
    if (mulres > INT32_MAX) janet_panic("result string is too long");
30347
0
    uint8_t *newbuf = janet_string_begin((int32_t) mulres);
30348
0
    uint8_t *end = newbuf + mulres;
30349
0
    for (uint8_t *p = newbuf; p < end; p += view.len) {
30350
0
        safe_memcpy(p, view.bytes, view.len);
30351
0
    }
30352
0
    return janet_wrap_string(janet_string_end(newbuf));
30353
0
}
30354
30355
JANET_CORE_FN(cfun_string_bytes,
30356
              "(string/bytes str)",
30357
0
              "Returns a tuple of integers that are the byte values of the string.") {
30358
0
    janet_fixarity(argc, 1);
30359
0
    JanetByteView view = janet_getbytes(argv, 0);
30360
0
    Janet *tup = janet_tuple_begin(view.len);
30361
0
    int32_t i;
30362
0
    for (i = 0; i < view.len; i++) {
30363
0
        tup[i] = janet_wrap_integer((int32_t) view.bytes[i]);
30364
0
    }
30365
0
    return janet_wrap_tuple(janet_tuple_end(tup));
30366
0
}
30367
30368
JANET_CORE_FN(cfun_string_frombytes,
30369
              "(string/from-bytes & byte-vals)",
30370
              "Creates a string from integer parameters with byte values. All integers "
30371
0
              "will be coerced to the range of 1 byte 0-255.") {
30372
0
    int32_t i;
30373
0
    uint8_t *buf = janet_string_begin(argc);
30374
0
    for (i = 0; i < argc; i++) {
30375
0
        int32_t c = janet_getinteger(argv, i);
30376
0
        buf[i] = c & 0xFF;
30377
0
    }
30378
0
    return janet_wrap_string(janet_string_end(buf));
30379
0
}
30380
30381
JANET_CORE_FN(cfun_string_asciilower,
30382
              "(string/ascii-lower str)",
30383
              "Returns a new string where all bytes are replaced with the "
30384
              "lowercase version of themselves in ASCII. Does only a very simple "
30385
0
              "case check, meaning no unicode support.") {
30386
0
    janet_fixarity(argc, 1);
30387
0
    JanetByteView view = janet_getbytes(argv, 0);
30388
0
    uint8_t *buf = janet_string_begin(view.len);
30389
0
    for (int32_t i = 0; i < view.len; i++) {
30390
0
        uint8_t c = view.bytes[i];
30391
0
        if (c >= 65 && c <= 90) {
30392
0
            buf[i] = c + 32;
30393
0
        } else {
30394
0
            buf[i] = c;
30395
0
        }
30396
0
    }
30397
0
    return janet_wrap_string(janet_string_end(buf));
30398
0
}
30399
30400
JANET_CORE_FN(cfun_string_asciiupper,
30401
              "(string/ascii-upper str)",
30402
              "Returns a new string where all bytes are replaced with the "
30403
              "uppercase version of themselves in ASCII. Does only a very simple "
30404
0
              "case check, meaning no unicode support.") {
30405
0
    janet_fixarity(argc, 1);
30406
0
    JanetByteView view = janet_getbytes(argv, 0);
30407
0
    uint8_t *buf = janet_string_begin(view.len);
30408
0
    for (int32_t i = 0; i < view.len; i++) {
30409
0
        uint8_t c = view.bytes[i];
30410
0
        if (c >= 97 && c <= 122) {
30411
0
            buf[i] = c - 32;
30412
0
        } else {
30413
0
            buf[i] = c;
30414
0
        }
30415
0
    }
30416
0
    return janet_wrap_string(janet_string_end(buf));
30417
0
}
30418
30419
JANET_CORE_FN(cfun_string_reverse,
30420
              "(string/reverse str)",
30421
0
              "Returns a string that is the reversed version of `str`.") {
30422
0
    janet_fixarity(argc, 1);
30423
0
    JanetByteView view = janet_getbytes(argv, 0);
30424
0
    uint8_t *buf = janet_string_begin(view.len);
30425
0
    int32_t i, j;
30426
0
    for (i = 0, j = view.len - 1; i < view.len; i++, j--) {
30427
0
        buf[i] = view.bytes[j];
30428
0
    }
30429
0
    return janet_wrap_string(janet_string_end(buf));
30430
0
}
30431
30432
0
static void findsetup(int32_t argc, Janet *argv, struct kmp_state *s, int32_t extra) {
30433
0
    janet_arity(argc, 2, 3 + extra);
30434
0
    JanetByteView pat = janet_getbytes(argv, 0);
30435
0
    JanetByteView text = janet_getbytes(argv, 1);
30436
0
    int32_t start = 0;
30437
0
    if (argc >= 3) {
30438
0
        start = janet_getinteger(argv, 2);
30439
0
        if (start < 0) janet_panic("expected non-negative start index");
30440
0
    }
30441
0
    kmp_init(s, text.bytes, text.len, pat.bytes, pat.len);
30442
0
    s->i = start;
30443
0
}
30444
30445
JANET_CORE_FN(cfun_string_find,
30446
              "(string/find patt str &opt start-index)",
30447
              "Searches for the first instance of pattern `patt` in string "
30448
              "`str`. Returns the index of the first character in `patt` if found, "
30449
0
              "otherwise returns nil.") {
30450
0
    int32_t result;
30451
0
    struct kmp_state state;
30452
0
    findsetup(argc, argv, &state, 0);
30453
0
    result = kmp_next(&state);
30454
0
    kmp_deinit(&state);
30455
0
    return result < 0
30456
0
           ? janet_wrap_nil()
30457
0
           : janet_wrap_integer(result);
30458
0
}
30459
30460
JANET_CORE_FN(cfun_string_hasprefix,
30461
              "(string/has-prefix? pfx str)",
30462
0
              "Tests whether `str` starts with `pfx`.") {
30463
0
    janet_fixarity(argc, 2);
30464
0
    JanetByteView prefix = janet_getbytes(argv, 0);
30465
0
    JanetByteView str = janet_getbytes(argv, 1);
30466
0
    return str.len < prefix.len
30467
0
           ? janet_wrap_false()
30468
0
           : janet_wrap_boolean(memcmp(prefix.bytes, str.bytes, prefix.len) == 0);
30469
0
}
30470
30471
JANET_CORE_FN(cfun_string_hassuffix,
30472
              "(string/has-suffix? sfx str)",
30473
0
              "Tests whether `str` ends with `sfx`.") {
30474
0
    janet_fixarity(argc, 2);
30475
0
    JanetByteView suffix = janet_getbytes(argv, 0);
30476
0
    JanetByteView str = janet_getbytes(argv, 1);
30477
0
    return str.len < suffix.len
30478
0
           ? janet_wrap_false()
30479
0
           : janet_wrap_boolean(memcmp(suffix.bytes,
30480
0
                                       str.bytes + str.len - suffix.len,
30481
0
                                       suffix.len) == 0);
30482
0
}
30483
30484
JANET_CORE_FN(cfun_string_findall,
30485
              "(string/find-all patt str &opt start-index)",
30486
              "Searches for all instances of pattern `patt` in string "
30487
              "`str`. Returns an array of all indices of found patterns. Overlapping "
30488
              "instances of the pattern are counted individually, meaning a byte in `str` "
30489
0
              "may contribute to multiple found patterns.") {
30490
0
    int32_t result;
30491
0
    struct kmp_state state;
30492
0
    findsetup(argc, argv, &state, 0);
30493
0
    JanetArray *array = janet_array(0);
30494
0
    while ((result = kmp_next(&state)) >= 0) {
30495
0
        janet_array_push(array, janet_wrap_integer(result));
30496
0
    }
30497
0
    kmp_deinit(&state);
30498
0
    return janet_wrap_array(array);
30499
0
}
30500
30501
struct replace_state {
30502
    struct kmp_state kmp;
30503
    Janet subst;
30504
};
30505
30506
0
static void replacesetup(int32_t argc, Janet *argv, struct replace_state *s) {
30507
0
    janet_arity(argc, 3, 4);
30508
0
    JanetByteView pat = janet_getbytes(argv, 0);
30509
0
    Janet subst = argv[1];
30510
0
    JanetByteView text = janet_getbytes(argv, 2);
30511
0
    int32_t start = 0;
30512
0
    if (argc == 4) {
30513
0
        start = janet_getinteger(argv, 3);
30514
0
        if (start < 0) janet_panic("expected non-negative start index");
30515
0
    }
30516
0
    kmp_init(&s->kmp, text.bytes, text.len, pat.bytes, pat.len);
30517
0
    s->kmp.i = start;
30518
0
    s->subst = subst;
30519
0
}
30520
30521
JANET_CORE_FN(cfun_string_replace,
30522
              "(string/replace patt subst str)",
30523
              "Replace the first occurrence of `patt` with `subst` in the string `str`. "
30524
              "If `subst` is a function, it will be called with `patt` only if a match is found, "
30525
              "and should return the actual replacement text to use. "
30526
0
              "Will return the new string if `patt` is found, otherwise returns `str`.") {
30527
0
    int32_t result;
30528
0
    struct replace_state s;
30529
0
    uint8_t *buf;
30530
0
    replacesetup(argc, argv, &s);
30531
0
    result = kmp_next(&s.kmp);
30532
0
    if (result < 0) {
30533
0
        kmp_deinit(&s.kmp);
30534
0
        return janet_stringv(s.kmp.text, s.kmp.textlen);
30535
0
    }
30536
0
    JanetByteView subst = janet_text_substitution(&s.subst, s.kmp.text + result, s.kmp.patlen, NULL);
30537
0
    buf = janet_string_begin(s.kmp.textlen - s.kmp.patlen + subst.len);
30538
0
    safe_memcpy(buf, s.kmp.text, result);
30539
0
    safe_memcpy(buf + result, subst.bytes, subst.len);
30540
0
    safe_memcpy(buf + result + subst.len,
30541
0
                s.kmp.text + result + s.kmp.patlen,
30542
0
                s.kmp.textlen - result - s.kmp.patlen);
30543
0
    kmp_deinit(&s.kmp);
30544
0
    return janet_wrap_string(janet_string_end(buf));
30545
0
}
30546
30547
JANET_CORE_FN(cfun_string_replaceall,
30548
              "(string/replace-all patt subst str)",
30549
              "Replace all instances of `patt` with `subst` in the string `str`. Overlapping "
30550
              "matches will not be counted, only the first match in such a span will be replaced. "
30551
              "If `subst` is a function, it will be called with `patt` once for each match, "
30552
              "and should return the actual replacement text to use. "
30553
0
              "Will return the new string if `patt` is found, otherwise returns `str`.") {
30554
0
    int32_t result;
30555
0
    struct replace_state s;
30556
0
    JanetBuffer b;
30557
0
    int32_t lastindex = 0;
30558
0
    replacesetup(argc, argv, &s);
30559
0
    janet_buffer_init(&b, s.kmp.textlen);
30560
0
    while ((result = kmp_next(&s.kmp)) >= 0) {
30561
0
        JanetByteView subst = janet_text_substitution(&s.subst, s.kmp.text + result, s.kmp.patlen, NULL);
30562
0
        janet_buffer_push_bytes(&b, s.kmp.text + lastindex, result - lastindex);
30563
0
        janet_buffer_push_bytes(&b, subst.bytes, subst.len);
30564
0
        lastindex = result + s.kmp.patlen;
30565
0
        kmp_seti(&s.kmp, lastindex);
30566
0
    }
30567
0
    janet_buffer_push_bytes(&b, s.kmp.text + lastindex, s.kmp.textlen - lastindex);
30568
0
    const uint8_t *ret = janet_string(b.data, b.count);
30569
0
    janet_buffer_deinit(&b);
30570
0
    kmp_deinit(&s.kmp);
30571
0
    return janet_wrap_string(ret);
30572
0
}
30573
30574
JANET_CORE_FN(cfun_string_split,
30575
              "(string/split delim str &opt start limit)",
30576
              "Splits a string `str` with delimiter `delim` and returns an array of "
30577
              "substrings. The substrings will not contain the delimiter `delim`. If `delim` "
30578
              "is not found, the returned array will have one element. Will start searching "
30579
              "for `delim` at the index `start` (if provided), and return up to a maximum "
30580
0
              "of `limit` results (if provided).") {
30581
0
    int32_t result;
30582
0
    JanetArray *array;
30583
0
    struct kmp_state state;
30584
0
    int32_t limit = -1, lastindex = 0;
30585
0
    if (argc == 4) {
30586
0
        limit = janet_getinteger(argv, 3);
30587
0
    }
30588
0
    findsetup(argc, argv, &state, 1);
30589
0
    array = janet_array(0);
30590
0
    while ((result = kmp_next(&state)) >= 0 && --limit) {
30591
0
        const uint8_t *slice = janet_string(state.text + lastindex, result - lastindex);
30592
0
        janet_array_push(array, janet_wrap_string(slice));
30593
0
        lastindex = result + state.patlen;
30594
0
        kmp_seti(&state, lastindex);
30595
0
    }
30596
0
    const uint8_t *slice = janet_string(state.text + lastindex, state.textlen - lastindex);
30597
0
    janet_array_push(array, janet_wrap_string(slice));
30598
0
    kmp_deinit(&state);
30599
0
    return janet_wrap_array(array);
30600
0
}
30601
30602
JANET_CORE_FN(cfun_string_checkset,
30603
              "(string/check-set set str)",
30604
              "Checks that the string `str` only contains bytes that appear in the string `set`. "
30605
              "Returns true if all bytes in `str` appear in `set`, false if some bytes in `str` do "
30606
0
              "not appear in `set`.") {
30607
0
    uint32_t bitset[8] = {0, 0, 0, 0, 0, 0, 0, 0};
30608
0
    janet_fixarity(argc, 2);
30609
0
    JanetByteView set = janet_getbytes(argv, 0);
30610
0
    JanetByteView str = janet_getbytes(argv, 1);
30611
    /* Populate set */
30612
0
    for (int32_t i = 0; i < set.len; i++) {
30613
0
        int index = set.bytes[i] >> 5;
30614
0
        uint32_t mask = 1 << (set.bytes[i] & 0x1F);
30615
0
        bitset[index] |= mask;
30616
0
    }
30617
    /* Check set */
30618
0
    for (int32_t i = 0; i < str.len; i++) {
30619
0
        int index = str.bytes[i] >> 5;
30620
0
        uint32_t mask = 1 << (str.bytes[i] & 0x1F);
30621
0
        if (!(bitset[index] & mask)) {
30622
0
            return janet_wrap_false();
30623
0
        }
30624
0
    }
30625
0
    return janet_wrap_true();
30626
0
}
30627
30628
JANET_CORE_FN(cfun_string_join,
30629
              "(string/join parts &opt sep)",
30630
              "Joins an array of strings into one string, optionally separated by "
30631
0
              "a separator string `sep`.") {
30632
0
    janet_arity(argc, 1, 2);
30633
0
    JanetView parts = janet_getindexed(argv, 0);
30634
0
    JanetByteView joiner;
30635
0
    if (argc == 2) {
30636
0
        joiner = janet_getbytes(argv, 1);
30637
0
    } else {
30638
0
        joiner.bytes = NULL;
30639
0
        joiner.len = 0;
30640
0
    }
30641
    /* Check args */
30642
0
    int32_t i;
30643
0
    int64_t finallen = 0;
30644
0
    for (i = 0; i < parts.len; i++) {
30645
0
        const uint8_t *chunk;
30646
0
        int32_t chunklen = 0;
30647
0
        if (!janet_bytes_view(parts.items[i], &chunk, &chunklen)) {
30648
0
            janet_panicf("item %d of parts is not a byte sequence, got %v", i, parts.items[i]);
30649
0
        }
30650
0
        if (i) finallen += joiner.len;
30651
0
        finallen += chunklen;
30652
0
        if (finallen > INT32_MAX)
30653
0
            janet_panic("result string too long");
30654
0
    }
30655
0
    uint8_t *buf, *out;
30656
0
    out = buf = janet_string_begin((int32_t) finallen);
30657
0
    for (i = 0; i < parts.len; i++) {
30658
0
        const uint8_t *chunk = NULL;
30659
0
        int32_t chunklen = 0;
30660
0
        if (i) {
30661
0
            safe_memcpy(out, joiner.bytes, joiner.len);
30662
0
            out += joiner.len;
30663
0
        }
30664
0
        janet_bytes_view(parts.items[i], &chunk, &chunklen);
30665
0
        safe_memcpy(out, chunk, chunklen);
30666
0
        out += chunklen;
30667
0
    }
30668
0
    return janet_wrap_string(janet_string_end(buf));
30669
0
}
30670
30671
JANET_CORE_FN(cfun_string_format,
30672
              "(string/format format & values)",
30673
              "Similar to C's `snprintf`, but specialized for operating with Janet values. Returns "
30674
              "a new string.\n\n"
30675
              "The following conversion specifiers are supported, where the upper case specifiers generate "
30676
              "upper case output:\n"
30677
              "- `c`: ASCII character.\n"
30678
              "- `d`, `i`: integer, formatted as a decimal number.\n"
30679
              "- `x`, `X`: integer, formatted as a hexadecimal number.\n"
30680
              "- `o`: integer, formatted as an octal number.\n"
30681
              "- `f`, `F`: floating point number, formatted as a decimal number.\n"
30682
              "- `e`, `E`: floating point number, formatted in scientific notation.\n"
30683
              "- `g`, `G`: floating point number, formatted in its shortest form.\n"
30684
              "- `a`, `A`: floating point number, formatted as a hexadecimal number.\n"
30685
              "- `s`: formatted as a string, precision indicates padding and maximum length.\n"
30686
              "- `t`: emit the type of the given value.\n"
30687
              "- `v`: format with (describe x)\n"
30688
              "- `V`: format with (string x)\n"
30689
              "- `j`: format to jdn (Janet data notation).\n"
30690
              "\n"
30691
              "The following conversion specifiers are used for \"pretty-printing\", where the upper-case "
30692
              "variants generate colored output. These specifiers can take a precision "
30693
              "argument to specify the maximum nesting depth to print.\n"
30694
              "- `p`, `P`: pretty format, truncating if necessary\n"
30695
              "- `m`, `M`: pretty format without truncating.\n"
30696
              "- `q`, `Q`: pretty format on one line, truncating if necessary.\n"
30697
0
              "- `n`, `N`: pretty format on one line without truncation.\n") {
30698
0
    janet_arity(argc, 1, -1);
30699
0
    JanetBuffer *buffer = janet_buffer(0);
30700
0
    const char *strfrmt = (const char *) janet_getstring(argv, 0);
30701
0
    janet_buffer_format(buffer, strfrmt, 0, argc, argv);
30702
0
    return janet_stringv(buffer->data, buffer->count);
30703
0
}
30704
30705
0
static int trim_help_checkset(JanetByteView set, uint8_t x) {
30706
0
    for (int32_t j = 0; j < set.len; j++)
30707
0
        if (set.bytes[j] == x)
30708
0
            return 1;
30709
0
    return 0;
30710
0
}
30711
30712
0
static int32_t trim_help_leftedge(JanetByteView str, JanetByteView set) {
30713
0
    for (int32_t i = 0; i < str.len; i++)
30714
0
        if (!trim_help_checkset(set, str.bytes[i]))
30715
0
            return i;
30716
0
    return str.len;
30717
0
}
30718
30719
0
static int32_t trim_help_rightedge(JanetByteView str, JanetByteView set) {
30720
0
    for (int32_t i = str.len - 1; i >= 0; i--)
30721
0
        if (!trim_help_checkset(set, str.bytes[i]))
30722
0
            return i + 1;
30723
0
    return 0;
30724
0
}
30725
30726
0
static void trim_help_args(int32_t argc, Janet *argv, JanetByteView *str, JanetByteView *set) {
30727
0
    janet_arity(argc, 1, 2);
30728
0
    *str = janet_getbytes(argv, 0);
30729
0
    if (argc >= 2) {
30730
0
        *set = janet_getbytes(argv, 1);
30731
0
    } else {
30732
0
        set->bytes = (const uint8_t *)(" \t\r\n\v\f");
30733
0
        set->len = 6;
30734
0
    }
30735
0
}
30736
30737
JANET_CORE_FN(cfun_string_trim,
30738
              "(string/trim str &opt set)",
30739
              "Trim leading and trailing whitespace from a byte sequence. If the argument "
30740
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
30741
0
    JanetByteView str, set;
30742
0
    trim_help_args(argc, argv, &str, &set);
30743
0
    int32_t left_edge = trim_help_leftedge(str, set);
30744
0
    int32_t right_edge = trim_help_rightedge(str, set);
30745
0
    if (right_edge < left_edge)
30746
0
        return janet_stringv(NULL, 0);
30747
0
    return janet_stringv(str.bytes + left_edge, right_edge - left_edge);
30748
0
}
30749
30750
JANET_CORE_FN(cfun_string_triml,
30751
              "(string/triml str &opt set)",
30752
              "Trim leading whitespace from a byte sequence. If the argument "
30753
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
30754
0
    JanetByteView str, set;
30755
0
    trim_help_args(argc, argv, &str, &set);
30756
0
    int32_t left_edge = trim_help_leftedge(str, set);
30757
0
    return janet_stringv(str.bytes + left_edge, str.len - left_edge);
30758
0
}
30759
30760
JANET_CORE_FN(cfun_string_trimr,
30761
              "(string/trimr str &opt set)",
30762
              "Trim trailing whitespace from a byte sequence. If the argument "
30763
0
              "`set` is provided, consider only characters in `set` to be whitespace.") {
30764
0
    JanetByteView str, set;
30765
0
    trim_help_args(argc, argv, &str, &set);
30766
0
    int32_t right_edge = trim_help_rightedge(str, set);
30767
0
    return janet_stringv(str.bytes, right_edge);
30768
0
}
30769
30770
/* Module entry point */
30771
0
void janet_lib_string(JanetTable *env) {
30772
0
    JanetRegExt string_cfuns[] = {
30773
0
        JANET_CORE_REG("string/slice", cfun_string_slice),
30774
0
        JANET_CORE_REG("keyword/slice", cfun_keyword_slice),
30775
0
        JANET_CORE_REG("symbol/slice", cfun_symbol_slice),
30776
0
        JANET_CORE_REG("string/repeat", cfun_string_repeat),
30777
0
        JANET_CORE_REG("string/bytes", cfun_string_bytes),
30778
0
        JANET_CORE_REG("string/from-bytes", cfun_string_frombytes),
30779
0
        JANET_CORE_REG("string/ascii-lower", cfun_string_asciilower),
30780
0
        JANET_CORE_REG("string/ascii-upper", cfun_string_asciiupper),
30781
0
        JANET_CORE_REG("string/reverse", cfun_string_reverse),
30782
0
        JANET_CORE_REG("string/find", cfun_string_find),
30783
0
        JANET_CORE_REG("string/find-all", cfun_string_findall),
30784
0
        JANET_CORE_REG("string/has-prefix?", cfun_string_hasprefix),
30785
0
        JANET_CORE_REG("string/has-suffix?", cfun_string_hassuffix),
30786
0
        JANET_CORE_REG("string/replace", cfun_string_replace),
30787
0
        JANET_CORE_REG("string/replace-all", cfun_string_replaceall),
30788
0
        JANET_CORE_REG("string/split", cfun_string_split),
30789
0
        JANET_CORE_REG("string/check-set", cfun_string_checkset),
30790
0
        JANET_CORE_REG("string/join", cfun_string_join),
30791
0
        JANET_CORE_REG("string/format", cfun_string_format),
30792
0
        JANET_CORE_REG("string/trim", cfun_string_trim),
30793
0
        JANET_CORE_REG("string/triml", cfun_string_triml),
30794
0
        JANET_CORE_REG("string/trimr", cfun_string_trimr),
30795
0
        JANET_REG_END
30796
0
    };
30797
0
    janet_core_cfuns_ext(env, NULL, string_cfuns);
30798
0
}
30799
30800
30801
/* src/core/strtod.c */
30802
#line 0 "src/core/strtod.c"
30803
30804
/*
30805
* Copyright (c) 2025 Calvin Rose
30806
*
30807
* Permission is hereby granted, free of charge, to any person obtaining a copy
30808
* of this software and associated documentation files (the "Software"), to
30809
* deal in the Software without restriction, including without limitation the
30810
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
30811
* sell copies of the Software, and to permit persons to whom the Software is
30812
* furnished to do so, subject to the following conditions:
30813
*
30814
* The above copyright notice and this permission notice shall be included in
30815
* all copies or substantial portions of the Software.
30816
*
30817
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30818
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30819
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30820
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
30821
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
30822
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
30823
* IN THE SOFTWARE.
30824
*/
30825
30826
/* Use a custom double parser instead of libc's strtod for better portability
30827
 * and control.
30828
 *
30829
 * This version has been modified for much greater flexibility in parsing, such
30830
 * as choosing the radix and supporting scientific notation with any radix.
30831
 *
30832
 * Numbers are of the form [-+]R[rR]I.F[eE&][-+]X in pseudo-regex form, where R
30833
 * is the radix, I is the integer part, F is the fractional part, and X is the
30834
 * exponent. All signs, radix, decimal point, fractional part, and exponent can
30835
 * be omitted.  The radix is assumed to be 10 if omitted, and the E or e
30836
 * separator for the exponent can only be used when the radix is 10. This is
30837
 * because E is a valid digit in bases 15 or greater. For bases greater than
30838
 * 10, the letters are used as digits. A through Z correspond to the digits 10
30839
 * through 35, and the lowercase letters have the same values. The radix number
30840
 * is always in base 10. For example, a hexadecimal number could be written
30841
 * '16rdeadbeef'. janet_scan_number also supports some c style syntax for
30842
 * hexadecimal literals. The previous number could also be written
30843
 * '0xdeadbeef'.
30844
 */
30845
30846
#ifndef JANET_AMALG
30847
#include "features.h"
30848
#include <janet.h>
30849
#include "util.h"
30850
#endif
30851
30852
#include <math.h>
30853
#include <string.h>
30854
30855
/* Lookup table for getting values of characters when parsing numbers. Handles
30856
 * digits 0-9 and a-z (and A-Z). A-Z have values of 10 to 35. */
30857
static uint8_t digit_lookup[128] = {
30858
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30859
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30860
    0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30861
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
30862
    0xff, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
30863
    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0xff, 0xff, 0xff, 0xff, 0xff,
30864
    0xff, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
30865
    25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 0xff, 0xff, 0xff, 0xff, 0xff
30866
};
30867
30868
32.4k
#define BIGNAT_NBIT 31
30869
19.0G
#define BIGNAT_BASE 0x80000000U
30870
30871
/* Allow for large mantissa. BigNat is a natural number. */
30872
struct BigNat {
30873
    uint32_t first_digit; /* First digit so we don't need to allocate when not needed. */
30874
    int32_t n; /* n digits */
30875
    int32_t cap; /* allocated digit capacity */
30876
    uint32_t *digits; /* Each digit is base (2 ^ 31). Digits are least significant first. */
30877
};
30878
30879
/* Initialize a bignat to 0 */
30880
125k
static void bignat_zero(struct BigNat *x) {
30881
125k
    x->first_digit = 0;
30882
125k
    x->n = 0;
30883
125k
    x->cap = 0;
30884
125k
    x->digits = NULL;
30885
125k
}
30886
30887
/* Allocate n more digits for mant. Return a pointer to these digits. */
30888
175k
static uint32_t *bignat_extra(struct BigNat *mant, int32_t n) {
30889
175k
    int32_t oldn = mant->n;
30890
175k
    int32_t newn = oldn + n;
30891
175k
    if (mant->cap < newn) {
30892
13.8k
        int32_t newcap = 2 * newn;
30893
13.8k
        uint32_t *mem = janet_realloc(mant->digits, (size_t) newcap * sizeof(uint32_t));
30894
13.8k
        if (NULL == mem) {
30895
0
            JANET_OUT_OF_MEMORY;
30896
0
        }
30897
13.8k
        mant->cap = newcap;
30898
13.8k
        mant->digits = mem;
30899
13.8k
    }
30900
175k
    mant->n = newn;
30901
175k
    return mant->digits + oldn;
30902
175k
}
30903
30904
/* Append a digit */
30905
172k
static void bignat_append(struct BigNat *mant, uint32_t dig) {
30906
172k
    bignat_extra(mant, 1)[0] = dig;
30907
172k
}
30908
30909
/* Multiply the mantissa mant by a factor and the add a term
30910
 * in one operation. factor will be between 2 and 36^4,
30911
 * term will be between 0 and 36. */
30912
1.29M
static void bignat_muladd(struct BigNat *mant, uint32_t factor, uint32_t term) {
30913
1.29M
    int32_t i;
30914
1.29M
    uint64_t carry = ((uint64_t) mant->first_digit) * factor + term;
30915
1.29M
    mant->first_digit = carry % BIGNAT_BASE;
30916
1.29M
    carry /= BIGNAT_BASE;
30917
7.98G
    for (i = 0; i < mant->n; i++) {
30918
7.98G
        carry += ((uint64_t) mant->digits[i]) * factor;
30919
7.98G
        mant->digits[i] = carry % BIGNAT_BASE;
30920
7.98G
        carry /= BIGNAT_BASE;
30921
7.98G
    }
30922
1.29M
    if (carry) bignat_append(mant, (uint32_t) carry);
30923
1.29M
}
30924
30925
/* Divide the mantissa mant by a factor. Drop the remainder. */
30926
313k
static void bignat_div(struct BigNat *mant, uint32_t divisor) {
30927
313k
    int32_t i;
30928
313k
    uint32_t quotient, remainder;
30929
313k
    uint64_t dividend;
30930
313k
    remainder = 0, quotient = 0;
30931
3.09G
    for (i = mant->n - 1; i >= 0; i--) {
30932
3.09G
        dividend = ((uint64_t)remainder * BIGNAT_BASE) + mant->digits[i];
30933
3.09G
        if (i < mant->n - 1) mant->digits[i + 1] = quotient;
30934
3.09G
        quotient = (uint32_t)(dividend / divisor);
30935
3.09G
        remainder = (uint32_t)(dividend % divisor);
30936
3.09G
        mant->digits[i] = remainder;
30937
3.09G
    }
30938
313k
    dividend = ((uint64_t)remainder * BIGNAT_BASE) + mant->first_digit;
30939
313k
    if (mant->n && mant->digits[mant->n - 1] == 0) mant->n--;
30940
313k
    mant->first_digit = (uint32_t)(dividend / divisor);
30941
313k
}
30942
30943
/* Shift left by a multiple of BIGNAT_NBIT */
30944
3.17k
static void bignat_lshift_n(struct BigNat *mant, int n) {
30945
3.17k
    if (!n) return;
30946
3.17k
    int32_t oldn = mant->n;
30947
3.17k
    bignat_extra(mant, n);
30948
3.17k
    memmove(mant->digits + n, mant->digits, sizeof(uint32_t) * oldn);
30949
3.17k
    memset(mant->digits, 0, sizeof(uint32_t) * (n - 1));
30950
3.17k
    mant->digits[n - 1] = mant->first_digit;
30951
3.17k
    mant->first_digit = 0;
30952
3.17k
}
30953
30954
#ifdef __GNUC__
30955
9.74k
#define clz(x) __builtin_clz(x)
30956
#else
30957
static int clz(uint32_t x) {
30958
    int n = 0;
30959
    if (x <= 0x0000ffff) n += 16, x <<= 16;
30960
    if (x <= 0x00ffffff) n += 8, x <<= 8;
30961
    if (x <= 0x0fffffff) n += 4, x <<= 4;
30962
    if (x <= 0x3fffffff) n += 2, x <<= 2;
30963
    if (x <= 0x7fffffff) n ++;
30964
    return n;
30965
}
30966
#endif
30967
30968
/* Extract double value from mantissa */
30969
26.4k
static double bignat_extract(struct BigNat *mant, int32_t exponent2) {
30970
26.4k
    uint64_t top53;
30971
26.4k
    int32_t n = mant->n;
30972
    /* Get most significant 53 bits from mant. Bit 52 (0 indexed) should
30973
     * always be 1. This is essentially a large right shift on mant.*/
30974
26.4k
    if (n) {
30975
        /* Two or more digits */
30976
9.74k
        uint64_t d1 = mant->digits[n - 1]; /* MSD (non-zero) */
30977
9.74k
        uint64_t d2 = (n == 1) ? mant->first_digit : mant->digits[n - 2];
30978
9.74k
        uint64_t d3 = (n > 2) ? mant->digits[n - 3] : (n == 2) ? mant->first_digit : 0;
30979
9.74k
        int lz = clz((uint32_t) d1);
30980
9.74k
        int nbits = 32 - lz;
30981
        /* First get 54 bits */
30982
9.74k
        top53 = (d2 << (54 - BIGNAT_NBIT)) + (d3 >> (2 * BIGNAT_NBIT - 54));
30983
9.74k
        top53 >>= nbits;
30984
9.74k
        top53 |= (d1 << (54 - nbits));
30985
        /* Rounding based on lowest bit of 54 */
30986
9.74k
        if (top53 & 1) top53++;
30987
9.74k
        top53 >>= 1;
30988
9.74k
        if (top53 > 0x1FffffFFFFffffUL) {
30989
1.77k
            top53 >>= 1;
30990
1.77k
            exponent2++;
30991
1.77k
        }
30992
        /* Correct exponent - to correct for large right shift to mantissa. */
30993
9.74k
        exponent2 += (nbits - 53) + BIGNAT_NBIT * n;
30994
16.7k
    } else {
30995
        /* One digit */
30996
16.7k
        top53 = mant->first_digit;
30997
16.7k
    }
30998
26.4k
    return ldexp((double)top53, exponent2);
30999
26.4k
}
31000
31001
/* Read in a mantissa and exponent of a certain base, and give
31002
 * back the double value. Should properly handle 0s, infinities, and
31003
 * denormalized numbers. (When the exponent values are too large or small) */
31004
static double convert(
31005
    int negative,
31006
    struct BigNat *mant,
31007
    int32_t base,
31008
36.6k
    int32_t exponent) {
31009
31010
36.6k
    int32_t exponent2 = 0;
31011
31012
    /* Approximate exponent in base 2 of mant and exponent. This should get us a good estimate of the final size of the
31013
     * number, within * 2^32 or so. */
31014
36.6k
    int64_t mant_exp2_approx = mant->n * 32 + 16;
31015
36.6k
    int64_t exp_exp2_approx = (int64_t)(floor(log2(base) * exponent));
31016
36.6k
    int64_t exp2_approx = mant_exp2_approx + exp_exp2_approx;
31017
31018
    /* Short circuit zero, huge, and small numbers. We use the exponent range of valid IEEE754 doubles (-1022, 1023)
31019
     * with a healthy buffer to allow for inaccuracies in the approximation and denormailzed numbers. */
31020
36.6k
    if (mant->n == 0 && mant->first_digit == 0)
31021
8.90k
        return negative ? -0.0 : 0.0;
31022
27.7k
    if (exp2_approx > 1176)
31023
675
        return negative ? -INFINITY : INFINITY;
31024
27.1k
    if (exp2_approx < -1175)
31025
632
        return negative ? -0.0 : 0.0;
31026
31027
    /* Final value is X = mant * base ^ exponent * 2 ^ exponent2
31028
     * Get exponent to zero while holding X constant. */
31029
31030
    /* Positive exponents are simple */
31031
60.9k
    for (; exponent > 3; exponent -= 4) bignat_muladd(mant, base * base * base * base, 0);
31032
29.2k
    for (; exponent > 1; exponent -= 2) bignat_muladd(mant, base * base, 0);
31033
29.3k
    for (; exponent > 0; exponent -= 1) bignat_muladd(mant, base, 0);
31034
31035
    /* Negative exponents are tricky - we don't want to loose bits
31036
     * from integer division, so we need to premultiply. */
31037
26.4k
    if (exponent < 0) {
31038
3.17k
        int32_t shamt = 5 - exponent / 4;
31039
3.17k
        bignat_lshift_n(mant, shamt);
31040
3.17k
        exponent2 -= shamt * BIGNAT_NBIT;
31041
313k
        for (; exponent < -3; exponent += 4) bignat_div(mant, base * base * base * base);
31042
4.38k
        for (; exponent < -1; exponent += 2) bignat_div(mant, base * base);
31043
5.25k
        for (; exponent <  0; exponent += 1) bignat_div(mant, base);
31044
3.17k
    }
31045
31046
26.4k
    return negative
31047
26.4k
           ? -bignat_extract(mant, exponent2)
31048
26.4k
           : bignat_extract(mant, exponent2);
31049
27.1k
}
31050
31051
/* Scan a real (double) from a string. If the string cannot be converted into
31052
 * and integer, return 0. */
31053
int janet_scan_number_base(
31054
    const uint8_t *str,
31055
    int32_t len,
31056
    int32_t base,
31057
125k
    double *out) {
31058
125k
    const uint8_t *end = str + len;
31059
125k
    int seenadigit = 0;
31060
125k
    int ex = 0;
31061
125k
    int seenpoint = 0;
31062
125k
    int foundexp = 0;
31063
125k
    int neg = 0;
31064
125k
    struct BigNat mant;
31065
125k
    bignat_zero(&mant);
31066
31067
    /* Prevent some kinds of overflow bugs relating to the exponent
31068
     * overflowing.  For example, if a string was passed 2GB worth of 0s after
31069
     * the decimal point, exponent could wrap around and become positive. It's
31070
     * easier to reject ridiculously large inputs than to check for overflows.
31071
     * */
31072
125k
    if (len > INT32_MAX / 40) goto error;
31073
31074
    /* Get sign */
31075
125k
    if (str >= end) goto error;
31076
125k
    if (*str == '-') {
31077
94.1k
        neg = 1;
31078
94.1k
        str++;
31079
94.1k
    } else if (*str == '+') {
31080
3.10k
        str++;
31081
3.10k
    }
31082
31083
    /* Check for leading 0x or digit digit r */
31084
125k
    if (base == 0) {
31085
125k
        if (str + 1 < end && str[0] == '0' && str[1] == 'x') {
31086
960
            base = 16;
31087
960
            str += 2;
31088
124k
        } else if (str + 1 < end  &&
31089
50.7k
                   str[0] >= '0' && str[0] <= '9' &&
31090
40.4k
                   str[1] == 'r') {
31091
4.47k
            base = str[0] - '0';
31092
4.47k
            str += 2;
31093
120k
        } else if (str + 2 < end  &&
31094
37.5k
                   str[0] >= '0' && str[0] <= '9' &&
31095
32.4k
                   str[1] >= '0' && str[1] <= '9' &&
31096
25.3k
                   str[2] == 'r') {
31097
16.9k
            base = 10 * (str[0] - '0') + (str[1] - '0');
31098
16.9k
            if (base < 2 || base > 36) goto error;
31099
7.46k
            str += 3;
31100
7.46k
        }
31101
125k
    }
31102
31103
    /* If still base is 0, set to default (10) */
31104
116k
    if (base == 0) {
31105
105k
        base = 10;
31106
105k
    }
31107
116k
    int exp_base = base;
31108
31109
    /* Skip leading zeros */
31110
225k
    while (str < end && (*str == '0' || *str == '.')) {
31111
110k
        if (seenpoint) ex--;
31112
110k
        if (*str == '.') {
31113
8.10k
            if (seenpoint) goto error;
31114
7.67k
            seenpoint = 1;
31115
102k
        } else {
31116
102k
            seenadigit = 1;
31117
102k
        }
31118
109k
        str++;
31119
109k
    }
31120
31121
    /* Parse significant digits */
31122
1.36M
    while (str < end) {
31123
1.28M
        if (*str == '.') {
31124
1.53k
            if (seenpoint) goto error;
31125
899
            seenpoint = 1;
31126
1.28M
        } else if (*str == '&') {
31127
6.85k
            foundexp = 1;
31128
6.85k
            break;
31129
1.27M
        } else if (base == 16 && (*str == 'P' || *str == 'p')) { /* IEEE hex float */
31130
593
            foundexp = 1;
31131
593
            exp_base = 10;
31132
593
            base = 2;
31133
593
            ex *= 4; /* We need to correct the current exponent after we change the base */
31134
593
            break;
31135
1.27M
        } else if (base == 10 && (*str == 'E' || *str == 'e')) {
31136
4.09k
            foundexp = 1;
31137
4.09k
            break;
31138
1.27M
        } else if (*str == '_') {
31139
2.11k
            if (!seenadigit) goto error;
31140
1.26M
        } else {
31141
1.26M
            int digit = digit_lookup[*str & 0x7F];
31142
1.26M
            if (*str > 127 || digit >= base) goto error;
31143
1.25M
            if (seenpoint) ex--;
31144
1.25M
            bignat_muladd(&mant, base, digit);
31145
1.25M
            seenadigit = 1;
31146
1.25M
        }
31147
1.25M
        str++;
31148
1.25M
    }
31149
31150
95.3k
    if (!seenadigit)
31151
55.8k
        goto error;
31152
31153
    /* Read exponent */
31154
39.5k
    if (str < end && foundexp) {
31155
9.07k
        int eneg = 0;
31156
9.07k
        int32_t ee = 0;
31157
9.07k
        seenadigit = 0;
31158
9.07k
        str++;
31159
9.07k
        if (str >= end) goto error;
31160
7.67k
        if (*str == '-') {
31161
1.38k
            eneg = 1;
31162
1.38k
            str++;
31163
6.28k
        } else if (*str == '+') {
31164
633
            str++;
31165
633
        }
31166
        /* Skip leading 0s in exponent */
31167
8.33k
        while (str < end && *str == '0') {
31168
661
            str++;
31169
661
            seenadigit = 1;
31170
661
        }
31171
21.1k
        while (str < end) {
31172
14.5k
            int digit = digit_lookup[*str & 0x7F];
31173
14.5k
            if (*str > 127 || digit >= exp_base) goto error;
31174
13.4k
            if (ee < (INT32_MAX / 40)) {
31175
13.0k
                ee = exp_base * ee + digit;
31176
13.0k
            }
31177
13.4k
            str++;
31178
13.4k
            seenadigit = 1;
31179
13.4k
        }
31180
6.58k
        if (eneg) ex -= ee;
31181
5.21k
        else ex += ee;
31182
6.58k
    }
31183
31184
37.0k
    if (!seenadigit)
31185
313
        goto error;
31186
31187
36.6k
    *out = convert(neg, &mant, base, ex);
31188
36.6k
    janet_free(mant.digits);
31189
36.6k
    return 0;
31190
31191
88.8k
error:
31192
88.8k
    janet_free(mant.digits);
31193
88.8k
    return 1;
31194
37.0k
}
31195
31196
int janet_scan_number(
31197
    const uint8_t *str,
31198
    int32_t len,
31199
0
    double *out) {
31200
0
    return janet_scan_number_base(str, len, 0, out);
31201
0
}
31202
31203
#ifdef JANET_INT_TYPES
31204
31205
static int scan_uint64(
31206
    const uint8_t *str,
31207
    int32_t len,
31208
    uint64_t *out,
31209
82.8k
    int *neg) {
31210
82.8k
    const uint8_t *end = str + len;
31211
82.8k
    int seenadigit = 0;
31212
82.8k
    int base = 10;
31213
82.8k
    *neg = 0;
31214
82.8k
    *out = 0;
31215
82.8k
    uint64_t accum = 0;
31216
    /* len max is INT64_MAX in base 2 with _ between each bits */
31217
    /* '2r' + 64 bits + 63 _  + sign = 130 => 150 for some leading  */
31218
    /* zeros */
31219
82.8k
    if (len > 150) return 0;
31220
    /* Get sign */
31221
82.5k
    if (str >= end) return 0;
31222
82.5k
    if (*str == '-') {
31223
65.4k
        *neg = 1;
31224
65.4k
        str++;
31225
65.4k
    } else if (*str == '+') {
31226
3.31k
        str++;
31227
3.31k
    }
31228
    /* Check for leading 0x or digit digit r */
31229
82.5k
    if (str + 1 < end && str[0] == '0' && str[1] == 'x') {
31230
1.10k
        base = 16;
31231
1.10k
        str += 2;
31232
81.4k
    } else if (str + 1 < end  &&
31233
43.5k
               str[0] >= '0' && str[0] <= '9' &&
31234
38.1k
               str[1] == 'r') {
31235
772
        base = str[0] - '0';
31236
772
        str += 2;
31237
80.7k
    } else if (str + 2 < end  &&
31238
36.3k
               str[0] >= '0' && str[0] <= '9' &&
31239
32.1k
               str[1] >= '0' && str[1] <= '9' &&
31240
29.2k
               str[2] == 'r') {
31241
15.4k
        base = 10 * (str[0] - '0') + (str[1] - '0');
31242
15.4k
        if (base < 2 || base > 36) return 0;
31243
14.9k
        str += 3;
31244
14.9k
    }
31245
31246
    /* Skip leading zeros */
31247
95.2k
    while (str < end && *str == '0') {
31248
13.1k
        seenadigit = 1;
31249
13.1k
        str++;
31250
13.1k
    }
31251
    /* Parse significant digits */
31252
329k
    while (str < end) {
31253
264k
        if (*str == '_') {
31254
3.26k
            if (!seenadigit) return 0;
31255
261k
        } else {
31256
261k
            int digit = digit_lookup[*str & 0x7F];
31257
261k
            if (*str > 127 || digit >= base) return 0;
31258
245k
            if (accum > (UINT64_MAX - digit) / base) return 0;
31259
245k
            accum = accum * base + digit;
31260
245k
            seenadigit = 1;
31261
245k
        }
31262
247k
        str++;
31263
247k
    }
31264
31265
65.1k
    if (!seenadigit) return 0;
31266
61.9k
    *out = accum;
31267
61.9k
    return 1;
31268
65.1k
}
31269
31270
78.5k
int janet_scan_int64(const uint8_t *str, int32_t len, int64_t *out) {
31271
78.5k
    int neg;
31272
78.5k
    uint64_t bi;
31273
78.5k
    if (scan_uint64(str, len, &bi, &neg)) {
31274
60.3k
        if (neg && bi <= ((UINT64_MAX / 2) + 1)) {
31275
48.8k
            if (bi > INT64_MAX) {
31276
6.25k
                *out = INT64_MIN;
31277
42.5k
            } else {
31278
42.5k
                *out = -((int64_t) bi);
31279
42.5k
            }
31280
48.8k
            return 1;
31281
48.8k
        }
31282
11.5k
        if (!neg && bi <= INT64_MAX) {
31283
10.3k
            *out = (int64_t) bi;
31284
10.3k
            return 1;
31285
10.3k
        }
31286
11.5k
    }
31287
19.4k
    return 0;
31288
78.5k
}
31289
31290
4.31k
int janet_scan_uint64(const uint8_t *str, int32_t len, uint64_t *out) {
31291
4.31k
    int neg;
31292
4.31k
    uint64_t bi;
31293
4.31k
    if (scan_uint64(str, len, &bi, &neg)) {
31294
1.60k
        if (!neg) {
31295
1.34k
            *out = bi;
31296
1.34k
            return 1;
31297
1.34k
        }
31298
1.60k
    }
31299
2.97k
    return 0;
31300
4.31k
}
31301
31302
/* Similar to janet_scan_number but allows for
31303
 * more numeric types with a given suffix. */
31304
int janet_scan_numeric(
31305
    const uint8_t *str,
31306
    int32_t len,
31307
211k
    Janet *out) {
31308
211k
    int result;
31309
211k
    double num;
31310
211k
    int64_t i64 = 0;
31311
211k
    uint64_t u64 = 0;
31312
211k
    if (len < 2 || str[len - 2] != ':') {
31313
125k
        result = janet_scan_number_base(str, len, 0, &num);
31314
125k
        *out = janet_wrap_number(num);
31315
125k
        return result;
31316
125k
    }
31317
86.5k
    switch (str[len - 1]) {
31318
3.39k
        default:
31319
3.39k
            return 1;
31320
278
        case 'n':
31321
278
            result = janet_scan_number_base(str, len - 2, 0, &num);
31322
278
            *out = janet_wrap_number(num);
31323
278
            return result;
31324
        /* Condition is inverted janet_scan_int64 and janet_scan_uint64 */
31325
78.5k
        case 's':
31326
78.5k
            result = !janet_scan_int64(str, len - 2, &i64);
31327
78.5k
            *out = janet_wrap_s64(i64);
31328
78.5k
            return result;
31329
4.31k
        case 'u':
31330
4.31k
            result = !janet_scan_uint64(str, len - 2, &u64);
31331
4.31k
            *out = janet_wrap_u64(u64);
31332
4.31k
            return result;
31333
86.5k
    }
31334
86.5k
}
31335
31336
#endif
31337
31338
0
void janet_buffer_dtostr(JanetBuffer *buffer, double x) {
31339
0
#define BUFSIZE 32
31340
0
    janet_buffer_extra(buffer, BUFSIZE);
31341
0
    int count = snprintf((char *) buffer->data + buffer->count, BUFSIZE, "%.17g", x);
31342
0
#undef BUFSIZE
31343
    /* fix locale issues with commas */
31344
0
    for (int i = 0; i < count; i++) {
31345
0
        char c = buffer->data[buffer->count + i];
31346
0
        if (c == ',') {
31347
0
            buffer->data[buffer->count + i] = '.';
31348
0
        }
31349
0
    }
31350
0
    buffer->count += count;
31351
0
}
31352
31353
31354
/* src/core/struct.c */
31355
#line 0 "src/core/struct.c"
31356
31357
/*
31358
* Copyright (c) 2025 Calvin Rose
31359
*
31360
* Permission is hereby granted, free of charge, to any person obtaining a copy
31361
* of this software and associated documentation files (the "Software"), to
31362
* deal in the Software without restriction, including without limitation the
31363
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31364
* sell copies of the Software, and to permit persons to whom the Software is
31365
* furnished to do so, subject to the following conditions:
31366
*
31367
* The above copyright notice and this permission notice shall be included in
31368
* all copies or substantial portions of the Software.
31369
*
31370
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31371
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31372
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31373
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31374
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31375
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31376
* IN THE SOFTWARE.
31377
*/
31378
31379
#ifndef JANET_AMALG
31380
#include "features.h"
31381
#include <janet.h>
31382
#include "gc.h"
31383
#include "util.h"
31384
#include <math.h>
31385
#endif
31386
31387
/* Begin creation of a struct */
31388
1.76M
JanetKV *janet_struct_begin(int32_t count) {
31389
    /* Calculate capacity as power of 2 after 2 * count. */
31390
1.76M
    int32_t capacity = janet_tablen(2 * count);
31391
1.76M
    if (capacity < 0) capacity = janet_tablen(count + 1);
31392
31393
1.76M
    size_t size = sizeof(JanetStructHead) + (size_t) capacity * sizeof(JanetKV);
31394
1.76M
    JanetStructHead *head = janet_gcalloc(JANET_MEMORY_STRUCT, size);
31395
1.76M
    head->length = count;
31396
1.76M
    head->capacity = capacity;
31397
1.76M
    head->hash = 0;
31398
1.76M
    head->proto = NULL;
31399
31400
1.76M
    JanetKV *st = (JanetKV *)(head->data);
31401
1.76M
    janet_memempty(st, capacity);
31402
1.76M
    return st;
31403
1.76M
}
31404
31405
/* Find an item in a struct without looking for prototypes. Should be similar to janet_dict_find, but
31406
 * specialized to structs (slightly more compact). */
31407
0
const JanetKV *janet_struct_find(const JanetKV *st, Janet key) {
31408
0
    int32_t cap = janet_struct_capacity(st);
31409
0
    int32_t index = janet_maphash(cap, janet_hash(key));
31410
0
    int32_t i;
31411
0
    for (i = index; i < cap; i++)
31412
0
        if (janet_checktype(st[i].key, JANET_NIL) || janet_equals(st[i].key, key))
31413
0
            return st + i;
31414
0
    for (i = 0; i < index; i++)
31415
0
        if (janet_checktype(st[i].key, JANET_NIL) || janet_equals(st[i].key, key))
31416
0
            return st + i;
31417
0
    return NULL;
31418
0
}
31419
31420
/* Put a kv pair into a struct that has not yet been fully constructed.
31421
 * Nil keys and values are ignored, extra keys are ignore, and duplicate keys are
31422
 * ignored.
31423
 *
31424
 * Runs will be in sorted order, as the collisions resolver essentially
31425
 * preforms an in-place insertion sort. This ensures the internal structure of the
31426
 * hash map is independent of insertion order.
31427
 */
31428
3.33M
void janet_struct_put_ext(JanetKV *st, Janet key, Janet value, int replace) {
31429
3.33M
    int32_t cap = janet_struct_capacity(st);
31430
3.33M
    int32_t hash = janet_hash(key);
31431
3.33M
    int32_t index = janet_maphash(cap, hash);
31432
3.33M
    int32_t i, j, dist;
31433
3.33M
    int32_t bounds[4] = {index, cap, 0, index};
31434
3.33M
    if (janet_checktype(key, JANET_NIL) || janet_checktype(value, JANET_NIL)) return;
31435
3.32M
    if (janet_checktype(key, JANET_NUMBER) && isnan(janet_unwrap_number(key))) return;
31436
    /* Avoid extra items */
31437
3.32M
    if (janet_struct_hash(st) == janet_struct_length(st)) return;
31438
3.32M
    for (dist = 0, j = 0; j < 4; j += 2)
31439
4.36M
        for (i = bounds[j]; i < bounds[j + 1]; i++, dist++) {
31440
4.35M
            int status;
31441
4.35M
            int32_t otherhash;
31442
4.35M
            int32_t otherindex, otherdist;
31443
4.35M
            JanetKV *kv = st + i;
31444
            /* We found an empty slot, so just add key and value */
31445
4.35M
            if (janet_checktype(kv->key, JANET_NIL)) {
31446
2.76M
                kv->key = key;
31447
2.76M
                kv->value = value;
31448
                /* Update the temporary count */
31449
2.76M
                janet_struct_hash(st)++;
31450
2.76M
                return;
31451
2.76M
            }
31452
            /* Robinhood hashing - check if colliding kv pair
31453
             * is closer to their source than current. We use robinhood
31454
             * hashing to ensure that equivalent structs that are constructed
31455
             * with different order have the same internal layout, and therefor
31456
             * will compare properly - i.e., {1 2 3 4} should equal {3 4 1 2}.
31457
             * Collisions are resolved via an insertion sort insertion. */
31458
1.59M
            otherhash = janet_hash(kv->key);
31459
1.59M
            otherindex = janet_maphash(cap, otherhash);
31460
1.59M
            otherdist = (i + cap - otherindex) & (cap - 1);
31461
1.59M
            if (dist < otherdist)
31462
233k
                status = -1;
31463
1.36M
            else if (otherdist < dist)
31464
114k
                status = 1;
31465
1.24M
            else if (hash < otherhash)
31466
403k
                status = -1;
31467
843k
            else if (otherhash < hash)
31468
156k
                status = 1;
31469
687k
            else
31470
687k
                status = janet_compare(key, kv->key);
31471
            /* If other is closer to their ideal slot */
31472
1.59M
            if (status == 1) {
31473
                /* Swap current kv pair with pair in slot */
31474
273k
                JanetKV temp = *kv;
31475
273k
                kv->key = key;
31476
273k
                kv->value = value;
31477
273k
                key = temp.key;
31478
273k
                value = temp.value;
31479
                /* Save dist and hash of new kv pair */
31480
273k
                dist = otherdist;
31481
273k
                hash = otherhash;
31482
1.32M
            } else if (status == 0) {
31483
564k
                if (replace) {
31484
                    /* A key was added to the struct more than once - replace old value */
31485
564k
                    kv->value = value;
31486
564k
                }
31487
564k
                return;
31488
564k
            }
31489
1.59M
        }
31490
3.32M
}
31491
31492
3.33M
void janet_struct_put(JanetKV *st, Janet key, Janet value) {
31493
3.33M
    janet_struct_put_ext(st, key, value, 1);
31494
3.33M
}
31495
31496
/* Finish building a struct */
31497
1.75M
const JanetKV *janet_struct_end(JanetKV *st) {
31498
1.75M
    if (janet_struct_hash(st) != janet_struct_length(st)) {
31499
        /* Error building struct, probably duplicate values. We need to rebuild
31500
         * the struct using only the values that went in. The second creation should always
31501
         * succeed. */
31502
2.30k
        JanetKV *newst = janet_struct_begin(janet_struct_hash(st));
31503
5.60M
        for (int32_t i = 0; i < janet_struct_capacity(st); i++) {
31504
5.59M
            JanetKV *kv = st + i;
31505
5.59M
            if (!janet_checktype(kv->key, JANET_NIL)) {
31506
1.37M
                janet_struct_put(newst, kv->key, kv->value);
31507
1.37M
            }
31508
5.59M
        }
31509
2.30k
        janet_struct_proto(newst) = janet_struct_proto(st);
31510
2.30k
        st = newst;
31511
2.30k
    }
31512
1.75M
    janet_struct_hash(st) = janet_kv_calchash(st, janet_struct_capacity(st));
31513
1.75M
    if (janet_struct_proto(st)) {
31514
0
        janet_struct_hash(st) += 2654435761u * janet_struct_hash(janet_struct_proto(st));
31515
0
    }
31516
1.75M
    return (const JanetKV *)st;
31517
1.75M
}
31518
31519
/* Get an item from a struct without looking into prototypes. */
31520
0
Janet janet_struct_rawget(const JanetKV *st, Janet key) {
31521
0
    const JanetKV *kv = janet_struct_find(st, key);
31522
0
    return kv ? kv->value : janet_wrap_nil();
31523
0
}
31524
31525
/* Get an item from a struct */
31526
0
Janet janet_struct_get(const JanetKV *st, Janet key) {
31527
0
    for (int i = JANET_MAX_PROTO_DEPTH; st && i; --i, st = janet_struct_proto(st)) {
31528
0
        const JanetKV *kv = janet_struct_find(st, key);
31529
0
        if (NULL != kv && !janet_checktype(kv->key, JANET_NIL)) {
31530
0
            return kv->value;
31531
0
        }
31532
0
    }
31533
0
    return janet_wrap_nil();
31534
0
}
31535
31536
/* Get an item from a struct, and record which prototype the item came from. */
31537
0
Janet janet_struct_get_ex(const JanetKV *st, Janet key, JanetStruct *which) {
31538
0
    for (int i = JANET_MAX_PROTO_DEPTH; st && i; --i, st = janet_struct_proto(st)) {
31539
0
        const JanetKV *kv = janet_struct_find(st, key);
31540
0
        if (NULL != kv && !janet_checktype(kv->key, JANET_NIL)) {
31541
0
            *which = st;
31542
0
            return kv->value;
31543
0
        }
31544
0
    }
31545
0
    return janet_wrap_nil();
31546
0
}
31547
31548
/* Convert struct to table */
31549
0
JanetTable *janet_struct_to_table(const JanetKV *st) {
31550
0
    JanetTable *table = janet_table(janet_struct_capacity(st));
31551
0
    int32_t i;
31552
0
    for (i = 0; i < janet_struct_capacity(st); i++) {
31553
0
        const JanetKV *kv = st + i;
31554
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
31555
0
            janet_table_put(table, kv->key, kv->value);
31556
0
        }
31557
0
    }
31558
0
    return table;
31559
0
}
31560
31561
/* C Functions */
31562
31563
JANET_CORE_FN(cfun_struct_with_proto,
31564
              "(struct/with-proto proto & kvs)",
31565
              "Create a structure, as with the usual struct constructor but set the "
31566
0
              "struct prototype as well.") {
31567
0
    janet_arity(argc, 1, -1);
31568
0
    JanetStruct proto = janet_optstruct(argv, argc, 0, NULL);
31569
0
    if (!(argc & 1))
31570
0
        janet_panic("expected odd number of arguments");
31571
0
    JanetKV *st = janet_struct_begin(argc / 2);
31572
0
    for (int32_t i = 1; i < argc; i += 2) {
31573
0
        janet_struct_put(st, argv[i], argv[i + 1]);
31574
0
    }
31575
0
    janet_struct_proto(st) = proto;
31576
0
    return janet_wrap_struct(janet_struct_end(st));
31577
0
}
31578
31579
JANET_CORE_FN(cfun_struct_getproto,
31580
              "(struct/getproto st)",
31581
0
              "Return the prototype of a struct, or nil if it doesn't have one.") {
31582
0
    janet_fixarity(argc, 1);
31583
0
    JanetStruct st = janet_getstruct(argv, 0);
31584
0
    return janet_struct_proto(st)
31585
0
           ? janet_wrap_struct(janet_struct_proto(st))
31586
0
           : janet_wrap_nil();
31587
0
}
31588
31589
JANET_CORE_FN(cfun_struct_flatten,
31590
              "(struct/proto-flatten st)",
31591
              "Convert a struct with prototypes to a struct with no prototypes by merging "
31592
0
              "all key value pairs from recursive prototypes into one new struct.") {
31593
0
    janet_fixarity(argc, 1);
31594
0
    JanetStruct st = janet_getstruct(argv, 0);
31595
31596
    /* get an upper bounds on the number of items in the final struct */
31597
0
    int64_t pair_count = 0;
31598
0
    JanetStruct cursor = st;
31599
0
    while (cursor) {
31600
0
        pair_count += janet_struct_length(cursor);
31601
0
        cursor = janet_struct_proto(cursor);
31602
0
    }
31603
31604
0
    if (pair_count > INT32_MAX) {
31605
0
        janet_panic("struct too large");
31606
0
    }
31607
31608
0
    JanetKV *accum = janet_struct_begin((int32_t) pair_count);
31609
0
    cursor = st;
31610
0
    while (cursor) {
31611
0
        for (int32_t i = 0; i < janet_struct_capacity(cursor); i++) {
31612
0
            const JanetKV *kv = cursor + i;
31613
0
            if (!janet_checktype(kv->key, JANET_NIL)) {
31614
0
                janet_struct_put_ext(accum, kv->key, kv->value, 0);
31615
0
            }
31616
0
        }
31617
0
        cursor = janet_struct_proto(cursor);
31618
0
    }
31619
0
    return janet_wrap_struct(janet_struct_end(accum));
31620
0
}
31621
31622
JANET_CORE_FN(cfun_struct_to_table,
31623
              "(struct/to-table st &opt recursive)",
31624
              "Convert a struct to a table. If recursive is true, also convert the "
31625
0
              "table's prototypes into the new struct's prototypes as well.") {
31626
0
    janet_arity(argc, 1, 2);
31627
0
    JanetStruct st = janet_getstruct(argv, 0);
31628
0
    int recursive = argc > 1 && janet_truthy(argv[1]);
31629
0
    JanetTable *tab = NULL;
31630
0
    JanetStruct cursor = st;
31631
0
    JanetTable *tab_cursor = tab;
31632
0
    do {
31633
0
        if (tab) {
31634
0
            tab_cursor->proto = janet_table(janet_struct_length(cursor));
31635
0
            tab_cursor = tab_cursor->proto;
31636
0
        } else {
31637
0
            tab = janet_table(janet_struct_length(cursor));
31638
0
            tab_cursor = tab;
31639
0
        }
31640
        /* TODO - implement as memcpy since struct memory should be compatible
31641
         * with table memory */
31642
0
        for (int32_t i = 0; i < janet_struct_capacity(cursor); i++) {
31643
0
            const JanetKV *kv = cursor + i;
31644
0
            if (!janet_checktype(kv->key, JANET_NIL)) {
31645
0
                janet_table_put(tab_cursor, kv->key, kv->value);
31646
0
            }
31647
0
        }
31648
0
        cursor = janet_struct_proto(cursor);
31649
0
    } while (recursive && cursor);
31650
0
    return janet_wrap_table(tab);
31651
0
}
31652
31653
JANET_CORE_FN(cfun_struct_rawget,
31654
              "(struct/rawget st key)",
31655
              "Gets a value from a struct `st` without looking at the prototype struct. "
31656
              "If `st` does not contain the key directly, the function will return "
31657
0
              "nil without checking the prototype. Returns the value in the struct.") {
31658
0
    janet_fixarity(argc, 2);
31659
0
    JanetStruct st = janet_getstruct(argv, 0);
31660
0
    return janet_struct_rawget(st, argv[1]);
31661
0
}
31662
31663
/* Load the struct module */
31664
0
void janet_lib_struct(JanetTable *env) {
31665
0
    JanetRegExt struct_cfuns[] = {
31666
0
        JANET_CORE_REG("struct/with-proto", cfun_struct_with_proto),
31667
0
        JANET_CORE_REG("struct/getproto", cfun_struct_getproto),
31668
0
        JANET_CORE_REG("struct/proto-flatten", cfun_struct_flatten),
31669
0
        JANET_CORE_REG("struct/to-table", cfun_struct_to_table),
31670
0
        JANET_CORE_REG("struct/rawget", cfun_struct_rawget),
31671
0
        JANET_REG_END
31672
0
    };
31673
0
    janet_core_cfuns_ext(env, NULL, struct_cfuns);
31674
0
}
31675
31676
31677
/* src/core/symcache.c */
31678
#line 0 "src/core/symcache.c"
31679
31680
/*
31681
* Copyright (c) 2025 Calvin Rose
31682
*
31683
* Permission is hereby granted, free of charge, to any person obtaining a copy
31684
* of this software and associated documentation files (the "Software"), to
31685
* deal in the Software without restriction, including without limitation the
31686
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31687
* sell copies of the Software, and to permit persons to whom the Software is
31688
* furnished to do so, subject to the following conditions:
31689
*
31690
* The above copyright notice and this permission notice shall be included in
31691
* all copies or substantial portions of the Software.
31692
*
31693
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31694
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31695
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31696
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31697
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31698
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31699
* IN THE SOFTWARE.
31700
*/
31701
31702
/* The symbol cache is an open hashtable with all active symbols in the program
31703
 * stored in it. As the primary use of symbols is table lookups and equality
31704
 * checks, all symbols are interned so that there is a single copy of it in the
31705
 * whole program. Equality is then just a pointer check. */
31706
31707
#ifndef JANET_AMALG
31708
#include "features.h"
31709
#include <janet.h>
31710
#include "state.h"
31711
#include "gc.h"
31712
#include "util.h"
31713
#include "symcache.h"
31714
#endif
31715
31716
#include <string.h>
31717
31718
/* Initialize the cache (allocate cache memory) */
31719
5.80k
void janet_symcache_init() {
31720
5.80k
    janet_vm.cache_capacity = 1024;
31721
5.80k
    janet_vm.cache = janet_calloc(1, (size_t) janet_vm.cache_capacity * sizeof(const uint8_t *));
31722
5.80k
    if (NULL == janet_vm.cache) {
31723
0
        JANET_OUT_OF_MEMORY;
31724
0
    }
31725
5.80k
    memset(&janet_vm.gensym_counter, '0', sizeof(janet_vm.gensym_counter));
31726
5.80k
    janet_vm.gensym_counter[0] = '_';
31727
5.80k
    janet_vm.cache_count = 0;
31728
5.80k
    janet_vm.cache_deleted = 0;
31729
5.80k
}
31730
31731
/* Deinitialize the cache (free the cache memory) */
31732
5.80k
void janet_symcache_deinit() {
31733
5.80k
    janet_free((void *)janet_vm.cache);
31734
5.80k
    janet_vm.cache = NULL;
31735
5.80k
    janet_vm.cache_capacity = 0;
31736
5.80k
    janet_vm.cache_count = 0;
31737
5.80k
    janet_vm.cache_deleted = 0;
31738
5.80k
}
31739
31740
/* Mark an entry in the table as deleted. */
31741
static const uint8_t JANET_SYMCACHE_DELETED[1] = {0};
31742
31743
/* Find an item in the cache and return its location.
31744
 * If the item is not found, return the location
31745
 * where one would put it. */
31746
static const uint8_t **janet_symcache_findmem(
31747
    const uint8_t *str,
31748
    int32_t len,
31749
    int32_t hash,
31750
4.02M
    int *success) {
31751
4.02M
    uint32_t bounds[4];
31752
4.02M
    uint32_t i, j, index;
31753
4.02M
    const uint8_t **firstEmpty = NULL;
31754
31755
    /* We will search two ranges - index to the end,
31756
     * and 0 to the index. */
31757
4.02M
    index = (uint32_t)hash & (janet_vm.cache_capacity - 1);
31758
4.02M
    bounds[0] = index;
31759
4.02M
    bounds[1] = janet_vm.cache_capacity;
31760
4.02M
    bounds[2] = 0;
31761
4.02M
    bounds[3] = index;
31762
4.02M
    for (j = 0; j < 4; j += 2)
31763
4.25M
        for (i = bounds[j]; i < bounds[j + 1]; ++i) {
31764
4.25M
            const uint8_t *test = janet_vm.cache[i];
31765
            /* Check empty spots */
31766
4.25M
            if (NULL == test) {
31767
41.3k
                if (NULL == firstEmpty)
31768
41.3k
                    firstEmpty = janet_vm.cache + i;
31769
41.3k
                goto notfound;
31770
41.3k
            }
31771
            /* Check for marked deleted */
31772
4.21M
            if (JANET_SYMCACHE_DELETED == test) {
31773
159
                if (firstEmpty == NULL)
31774
47
                    firstEmpty = janet_vm.cache + i;
31775
159
                continue;
31776
159
            }
31777
4.21M
            if (janet_string_equalconst(test, str, len, hash)) {
31778
                /* Replace first deleted */
31779
3.98M
                *success = 1;
31780
3.98M
                if (firstEmpty != NULL) {
31781
47
                    *firstEmpty = test;
31782
47
                    janet_vm.cache[i] = JANET_SYMCACHE_DELETED;
31783
47
                    return firstEmpty;
31784
47
                }
31785
3.98M
                return janet_vm.cache + i;
31786
3.98M
            }
31787
4.21M
        }
31788
41.3k
notfound:
31789
41.3k
    *success = 0;
31790
41.3k
    janet_assert(firstEmpty != NULL, "symcache failed to get memory");
31791
41.3k
    return firstEmpty;
31792
41.3k
}
31793
31794
#define janet_symcache_find(str, success) \
31795
41.3k
    janet_symcache_findmem((str), janet_string_length(str), janet_string_hash(str), (success))
31796
31797
/* Resize the cache. */
31798
20
static void janet_cache_resize(uint32_t newCapacity) {
31799
20
    uint32_t i, oldCapacity;
31800
20
    const uint8_t **oldCache = janet_vm.cache;
31801
20
    const uint8_t **newCache = janet_calloc(1, (size_t) newCapacity * sizeof(const uint8_t *));
31802
20
    if (newCache == NULL) {
31803
0
        JANET_OUT_OF_MEMORY;
31804
0
    }
31805
20
    oldCapacity = janet_vm.cache_capacity;
31806
20
    janet_vm.cache = newCache;
31807
20
    janet_vm.cache_capacity = newCapacity;
31808
20
    janet_vm.cache_deleted = 0;
31809
    /* Add all of the old cache entries back */
31810
29.7k
    for (i = 0; i < oldCapacity; ++i) {
31811
29.6k
        int status;
31812
29.6k
        const uint8_t **bucket;
31813
29.6k
        const uint8_t *x = oldCache[i];
31814
29.6k
        if (x != NULL && x != JANET_SYMCACHE_DELETED) {
31815
14.8k
            bucket = janet_symcache_find(x, &status);
31816
14.8k
            if (status || bucket == NULL) {
31817
                /* there was a problem with the algorithm. */
31818
0
                break;
31819
0
            }
31820
14.8k
            *bucket = x;
31821
14.8k
        }
31822
29.6k
    }
31823
    /* Free the old cache */
31824
20
    janet_free((void *)oldCache);
31825
20
}
31826
31827
/* Add an item to the cache */
31828
26.4k
static void janet_symcache_put(const uint8_t *x, const uint8_t **bucket) {
31829
26.4k
    if ((janet_vm.cache_count + janet_vm.cache_deleted) * 2 > janet_vm.cache_capacity) {
31830
20
        int status;
31831
20
        janet_cache_resize(janet_tablen((2 * janet_vm.cache_count + 1)));
31832
20
        bucket = janet_symcache_find(x, &status);
31833
20
    }
31834
    /* Add x to the cache */
31835
26.4k
    janet_vm.cache_count++;
31836
26.4k
    *bucket = x;
31837
26.4k
}
31838
31839
/* Remove a symbol from the symcache */
31840
26.4k
void janet_symbol_deinit(const uint8_t *sym) {
31841
26.4k
    int status = 0;
31842
26.4k
    const uint8_t **bucket = janet_symcache_find(sym, &status);
31843
26.4k
    if (status) {
31844
26.4k
        janet_vm.cache_count--;
31845
26.4k
        janet_vm.cache_deleted++;
31846
26.4k
        *bucket = JANET_SYMCACHE_DELETED;
31847
26.4k
    }
31848
26.4k
}
31849
31850
/* Create a symbol from a byte string */
31851
3.98M
const uint8_t *janet_symbol(const uint8_t *str, int32_t len) {
31852
3.98M
    int32_t hash = janet_string_calchash(str, len);
31853
3.98M
    uint8_t *newstr;
31854
3.98M
    int success = 0;
31855
3.98M
    const uint8_t **bucket = janet_symcache_findmem(str, len, hash, &success);
31856
3.98M
    if (success)
31857
3.95M
        return *bucket;
31858
26.4k
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_SYMBOL, sizeof(JanetStringHead) + (size_t) len + 1);
31859
26.4k
    head->hash = hash;
31860
26.4k
    head->length = len;
31861
26.4k
    newstr = (uint8_t *)(head->data);
31862
26.4k
    safe_memcpy(newstr, str, len);
31863
26.4k
    newstr[len] = 0;
31864
26.4k
    janet_symcache_put((const uint8_t *)newstr, bucket);
31865
26.4k
    return newstr;
31866
3.98M
}
31867
31868
/* Get a symbol from a cstring */
31869
1.91M
const uint8_t *janet_csymbol(const char *cstr) {
31870
1.91M
    return janet_symbol((const uint8_t *)cstr, (int32_t) strlen(cstr));
31871
1.91M
}
31872
31873
/* Increment the gensym buffer */
31874
0
static void inc_gensym(void) {
31875
0
    for (int i = sizeof(janet_vm.gensym_counter) - 2; i; i--) {
31876
0
        if (janet_vm.gensym_counter[i] == '9') {
31877
0
            janet_vm.gensym_counter[i] = 'a';
31878
0
            break;
31879
0
        } else if (janet_vm.gensym_counter[i] == 'z') {
31880
0
            janet_vm.gensym_counter[i] = 'A';
31881
0
            break;
31882
0
        } else if (janet_vm.gensym_counter[i] == 'Z') {
31883
0
            janet_vm.gensym_counter[i] = '0';
31884
0
        } else {
31885
0
            janet_vm.gensym_counter[i]++;
31886
0
            break;
31887
0
        }
31888
0
    }
31889
0
}
31890
31891
/* Generate a unique symbol. This is used in the library function gensym. The
31892
 * symbol will be of the format _XXXXXX, where X is a base64 digit, and
31893
 * prefix is the argument passed. No prefix for speed. */
31894
0
const uint8_t *janet_symbol_gen(void) {
31895
0
    const uint8_t **bucket = NULL;
31896
0
    uint8_t *sym;
31897
0
    int32_t hash = 0;
31898
0
    int status;
31899
    /* Leave spaces for 6 base 64 digits and two dashes. That means 64^6 possible suffixes, which
31900
     * is enough for resolving collisions. */
31901
0
    do {
31902
0
        hash = janet_string_calchash(
31903
0
                   janet_vm.gensym_counter,
31904
0
                   sizeof(janet_vm.gensym_counter) - 1);
31905
0
        bucket = janet_symcache_findmem(
31906
0
                     janet_vm.gensym_counter,
31907
0
                     sizeof(janet_vm.gensym_counter) - 1,
31908
0
                     hash,
31909
0
                     &status);
31910
0
    } while (status && (inc_gensym(), 1));
31911
0
    JanetStringHead *head = janet_gcalloc(JANET_MEMORY_SYMBOL, sizeof(JanetStringHead) + sizeof(janet_vm.gensym_counter));
31912
0
    head->length = sizeof(janet_vm.gensym_counter) - 1;
31913
0
    head->hash = hash;
31914
0
    sym = (uint8_t *)(head->data);
31915
0
    memcpy(sym, janet_vm.gensym_counter, sizeof(janet_vm.gensym_counter));
31916
0
    sym[head->length] = 0;
31917
0
    janet_symcache_put((const uint8_t *)sym, bucket);
31918
0
    return (const uint8_t *)sym;
31919
0
}
31920
31921
31922
/* src/core/table.c */
31923
#line 0 "src/core/table.c"
31924
31925
/*
31926
* Copyright (c) 2025 Calvin Rose
31927
*
31928
* Permission is hereby granted, free of charge, to any person obtaining a copy
31929
* of this software and associated documentation files (the "Software"), to
31930
* deal in the Software without restriction, including without limitation the
31931
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
31932
* sell copies of the Software, and to permit persons to whom the Software is
31933
* furnished to do so, subject to the following conditions:
31934
*
31935
* The above copyright notice and this permission notice shall be included in
31936
* all copies or substantial portions of the Software.
31937
*
31938
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31939
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
31940
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
31941
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31942
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
31943
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
31944
* IN THE SOFTWARE.
31945
*/
31946
31947
#ifndef JANET_AMALG
31948
#include "features.h"
31949
#include <janet.h>
31950
#include "gc.h"
31951
#include "util.h"
31952
#include <math.h>
31953
#endif
31954
31955
18.6k
#define JANET_TABLE_FLAG_STACK 0x10000
31956
31957
0
static void *janet_memalloc_empty_local(int32_t count) {
31958
0
    int32_t i;
31959
0
    void *mem = janet_smalloc((size_t) count * sizeof(JanetKV));
31960
0
    JanetKV *mmem = (JanetKV *)mem;
31961
0
    for (i = 0; i < count; i++) {
31962
0
        JanetKV *kv = mmem + i;
31963
0
        kv->key = janet_wrap_nil();
31964
0
        kv->value = janet_wrap_nil();
31965
0
    }
31966
0
    return mem;
31967
0
}
31968
31969
129k
static JanetTable *janet_table_init_impl(JanetTable *table, int32_t capacity, int stackalloc) {
31970
129k
    JanetKV *data;
31971
129k
    capacity = janet_tablen(capacity);
31972
129k
    if (stackalloc) table->gc.flags = JANET_TABLE_FLAG_STACK;
31973
129k
    if (capacity) {
31974
129k
        if (stackalloc) {
31975
0
            data = janet_memalloc_empty_local(capacity);
31976
129k
        } else {
31977
129k
            data = (JanetKV *) janet_memalloc_empty(capacity);
31978
129k
            if (NULL == data) {
31979
0
                JANET_OUT_OF_MEMORY;
31980
0
            }
31981
129k
        }
31982
129k
        table->data = data;
31983
129k
        table->capacity = capacity;
31984
129k
    } else {
31985
0
        table->data = NULL;
31986
0
        table->capacity = 0;
31987
0
    }
31988
129k
    table->count = 0;
31989
129k
    table->deleted = 0;
31990
129k
    table->proto = NULL;
31991
129k
    return table;
31992
129k
}
31993
31994
/* Initialize a table (for use with scratch memory) */
31995
0
JanetTable *janet_table_init(JanetTable *table, int32_t capacity) {
31996
0
    return janet_table_init_impl(table, capacity, 1);
31997
0
}
31998
31999
/* Initialize a table without using scratch memory */
32000
17.4k
JanetTable *janet_table_init_raw(JanetTable *table, int32_t capacity) {
32001
17.4k
    return janet_table_init_impl(table, capacity, 0);
32002
17.4k
}
32003
32004
/* Deinitialize a table */
32005
17.4k
void janet_table_deinit(JanetTable *table) {
32006
17.4k
    if (table->gc.flags & JANET_TABLE_FLAG_STACK) {
32007
0
        janet_sfree(table->data);
32008
17.4k
    } else {
32009
17.4k
        janet_free(table->data);
32010
17.4k
    }
32011
17.4k
}
32012
32013
/* Create a new table */
32014
32015
112k
JanetTable *janet_table(int32_t capacity) {
32016
112k
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE, sizeof(JanetTable));
32017
112k
    return janet_table_init_impl(table, capacity, 0);
32018
112k
}
32019
32020
0
JanetTable *janet_table_weakk(int32_t capacity) {
32021
0
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE_WEAKK, sizeof(JanetTable));
32022
0
    return janet_table_init_impl(table, capacity, 0);
32023
0
}
32024
32025
0
JanetTable *janet_table_weakv(int32_t capacity) {
32026
0
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE_WEAKV, sizeof(JanetTable));
32027
0
    return janet_table_init_impl(table, capacity, 0);
32028
0
}
32029
32030
0
JanetTable *janet_table_weakkv(int32_t capacity) {
32031
0
    JanetTable *table = janet_gcalloc(JANET_MEMORY_TABLE_WEAKKV, sizeof(JanetTable));
32032
0
    return janet_table_init_impl(table, capacity, 0);
32033
0
}
32034
32035
/* Find the bucket that contains the given key. Will also return
32036
 * bucket where key should go if not in the table. */
32037
3.37M
JanetKV *janet_table_find(JanetTable *t, Janet key) {
32038
3.37M
    return (JanetKV *) janet_dict_find(t->data, t->capacity, key);
32039
3.37M
}
32040
32041
/* Resize the dictionary table. */
32042
1.20k
static void janet_table_rehash(JanetTable *t, int32_t size) {
32043
1.20k
    JanetKV *olddata = t->data;
32044
1.20k
    JanetKV *newdata;
32045
1.20k
    int islocal = t->gc.flags & JANET_TABLE_FLAG_STACK;
32046
1.20k
    if (islocal) {
32047
0
        newdata = (JanetKV *) janet_memalloc_empty_local(size);
32048
1.20k
    } else {
32049
1.20k
        newdata = (JanetKV *) janet_memalloc_empty(size);
32050
1.20k
        if (NULL == newdata) {
32051
0
            JANET_OUT_OF_MEMORY;
32052
0
        }
32053
1.20k
    }
32054
1.20k
    int32_t oldcapacity = t->capacity;
32055
1.20k
    t->data = newdata;
32056
1.20k
    t->capacity = size;
32057
1.20k
    t->deleted = 0;
32058
1.66M
    for (int32_t i = 0; i < oldcapacity; i++) {
32059
1.66M
        JanetKV *kv = olddata + i;
32060
1.66M
        if (!janet_checktype(kv->key, JANET_NIL)) {
32061
831k
            JanetKV *newkv = janet_table_find(t, kv->key);
32062
831k
            *newkv = *kv;
32063
831k
        }
32064
1.66M
    }
32065
1.20k
    if (islocal) {
32066
0
        janet_sfree(olddata);
32067
1.20k
    } else {
32068
1.20k
        janet_free(olddata);
32069
1.20k
    }
32070
1.20k
}
32071
32072
/* Get a value out of the table */
32073
0
Janet janet_table_get(JanetTable *t, Janet key) {
32074
0
    for (int i = JANET_MAX_PROTO_DEPTH; t && i; t = t->proto, --i) {
32075
0
        JanetKV *bucket = janet_table_find(t, key);
32076
0
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
32077
0
            return bucket->value;
32078
0
    }
32079
0
    return janet_wrap_nil();
32080
0
}
32081
32082
/* Get a value out of the table, and record which prototype it was from. */
32083
0
Janet janet_table_get_ex(JanetTable *t, Janet key, JanetTable **which) {
32084
0
    for (int i = JANET_MAX_PROTO_DEPTH; t && i; t = t->proto, --i) {
32085
0
        JanetKV *bucket = janet_table_find(t, key);
32086
0
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
32087
0
            *which = t;
32088
0
            return bucket->value;
32089
0
        }
32090
0
    }
32091
0
    return janet_wrap_nil();
32092
0
}
32093
32094
/* Get a value out of the table. Don't check prototype tables. */
32095
0
Janet janet_table_rawget(JanetTable *t, Janet key) {
32096
0
    JanetKV *bucket = janet_table_find(t, key);
32097
0
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
32098
0
        return bucket->value;
32099
0
    else
32100
0
        return janet_wrap_nil();
32101
0
}
32102
32103
/* Remove an entry from the dictionary. Return the value that
32104
 * was removed. */
32105
5.99k
Janet janet_table_remove(JanetTable *t, Janet key) {
32106
5.99k
    JanetKV *bucket = janet_table_find(t, key);
32107
5.99k
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
32108
4.85k
        Janet ret = bucket->value;
32109
4.85k
        t->count--;
32110
4.85k
        t->deleted++;
32111
4.85k
        bucket->key = janet_wrap_nil();
32112
4.85k
        bucket->value = janet_wrap_false();
32113
4.85k
        return ret;
32114
4.85k
    } else {
32115
1.14k
        return janet_wrap_nil();
32116
1.14k
    }
32117
5.99k
}
32118
32119
/* Put a value into the object */
32120
1.60M
void janet_table_put(JanetTable *t, Janet key, Janet value) {
32121
1.60M
    if (janet_checktype(key, JANET_NIL)) return;
32122
1.60M
    if (janet_checktype(key, JANET_NUMBER) && isnan(janet_unwrap_number(key))) return;
32123
1.60M
    if (janet_checktype(value, JANET_NIL)) {
32124
5.99k
        janet_table_remove(t, key);
32125
1.59M
    } else {
32126
1.59M
        JanetKV *bucket = janet_table_find(t, key);
32127
1.59M
        if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL)) {
32128
654k
            bucket->value = value;
32129
941k
        } else {
32130
941k
            if (NULL == bucket || 2 * (t->count + t->deleted + 1) > t->capacity) {
32131
1.20k
                janet_table_rehash(t, janet_tablen(2 * t->count + 2));
32132
1.20k
            }
32133
941k
            bucket = janet_table_find(t, key);
32134
941k
            if (janet_checktype(bucket->value, JANET_BOOLEAN))
32135
0
                --t->deleted;
32136
941k
            bucket->key = key;
32137
941k
            bucket->value = value;
32138
941k
            ++t->count;
32139
941k
        }
32140
1.59M
    }
32141
1.60M
}
32142
32143
/* Used internally so don't check arguments
32144
 * Put into a table, but if the key already exists do nothing. */
32145
0
static void janet_table_put_no_overwrite(JanetTable *t, Janet key, Janet value) {
32146
0
    JanetKV *bucket = janet_table_find(t, key);
32147
0
    if (NULL != bucket && !janet_checktype(bucket->key, JANET_NIL))
32148
0
        return;
32149
0
    if (NULL == bucket || 2 * (t->count + t->deleted + 1) > t->capacity) {
32150
0
        janet_table_rehash(t, janet_tablen(2 * t->count + 2));
32151
0
    }
32152
0
    bucket = janet_table_find(t, key);
32153
0
    if (janet_checktype(bucket->value, JANET_BOOLEAN))
32154
0
        --t->deleted;
32155
0
    bucket->key = key;
32156
0
    bucket->value = value;
32157
0
    ++t->count;
32158
0
}
32159
32160
/* Clear a table */
32161
0
void janet_table_clear(JanetTable *t) {
32162
0
    int32_t capacity = t->capacity;
32163
0
    JanetKV *data = t->data;
32164
0
    janet_memempty(data, capacity);
32165
0
    t->count = 0;
32166
0
    t->deleted = 0;
32167
0
}
32168
32169
/* Clone a table. */
32170
0
JanetTable *janet_table_clone(JanetTable *table) {
32171
0
    JanetTable *newTable = janet_gcalloc(JANET_MEMORY_TABLE, sizeof(JanetTable));
32172
0
    newTable->count = table->count;
32173
0
    newTable->capacity = table->capacity;
32174
0
    newTable->deleted = table->deleted;
32175
0
    newTable->proto = table->proto;
32176
0
    newTable->data = janet_malloc(newTable->capacity * sizeof(JanetKV));
32177
0
    if (NULL == newTable->data) {
32178
0
        JANET_OUT_OF_MEMORY;
32179
0
    }
32180
0
    memcpy(newTable->data, table->data, (size_t) table->capacity * sizeof(JanetKV));
32181
0
    return newTable;
32182
0
}
32183
32184
/* Merge a table or struct into a table */
32185
0
static void janet_table_mergekv(JanetTable *table, const JanetKV *kvs, int32_t cap) {
32186
0
    int32_t i;
32187
0
    for (i = 0; i < cap; i++) {
32188
0
        const JanetKV *kv = kvs + i;
32189
0
        if (!janet_checktype(kv->key, JANET_NIL)) {
32190
0
            janet_table_put(table, kv->key, kv->value);
32191
0
        }
32192
0
    }
32193
0
}
32194
32195
/* Merge a table into another table */
32196
0
void janet_table_merge_table(JanetTable *table, JanetTable *other) {
32197
0
    janet_table_mergekv(table, other->data, other->capacity);
32198
0
}
32199
32200
/* Merge a struct into a table */
32201
0
void janet_table_merge_struct(JanetTable *table, const JanetKV *other) {
32202
0
    janet_table_mergekv(table, other, janet_struct_capacity(other));
32203
0
}
32204
32205
/* Convert table to struct */
32206
0
const JanetKV *janet_table_to_struct(JanetTable *t) {
32207
0
    JanetKV *st = janet_struct_begin(t->count);
32208
0
    JanetKV *kv = t->data;
32209
0
    JanetKV *end = t->data + t->capacity;
32210
0
    while (kv < end) {
32211
0
        if (!janet_checktype(kv->key, JANET_NIL))
32212
0
            janet_struct_put(st, kv->key, kv->value);
32213
0
        kv++;
32214
0
    }
32215
0
    return janet_struct_end(st);
32216
0
}
32217
32218
0
JanetTable *janet_table_proto_flatten(JanetTable *t) {
32219
0
    JanetTable *newTable = janet_table(0);
32220
0
    while (t) {
32221
0
        JanetKV *kv = t->data;
32222
0
        JanetKV *end = t->data + t->capacity;
32223
0
        while (kv < end) {
32224
0
            if (!janet_checktype(kv->key, JANET_NIL))
32225
0
                janet_table_put_no_overwrite(newTable, kv->key, kv->value);
32226
0
            kv++;
32227
0
        }
32228
0
        t = t->proto;
32229
0
    }
32230
0
    return newTable;
32231
0
}
32232
32233
/* C Functions */
32234
32235
JANET_CORE_FN(cfun_table_new,
32236
              "(table/new capacity)",
32237
              "Creates a new empty table with pre-allocated memory "
32238
              "for `capacity` entries. This means that if one knows the number of "
32239
              "entries going into a table on creation, extra memory allocation "
32240
              "can be avoided. "
32241
0
              "Returns the new table.") {
32242
0
    janet_fixarity(argc, 1);
32243
0
    int32_t cap = janet_getnat(argv, 0);
32244
0
    return janet_wrap_table(janet_table(cap));
32245
0
}
32246
32247
JANET_CORE_FN(cfun_table_weak,
32248
              "(table/weak capacity)",
32249
              "Creates a new empty table with weak references to keys and values. Similar to `table/new`. "
32250
0
              "Returns the new table.") {
32251
0
    janet_fixarity(argc, 1);
32252
0
    int32_t cap = janet_getnat(argv, 0);
32253
0
    return janet_wrap_table(janet_table_weakkv(cap));
32254
0
}
32255
32256
JANET_CORE_FN(cfun_table_weak_keys,
32257
              "(table/weak-keys capacity)",
32258
              "Creates a new empty table with weak references to keys and normal references to values. Similar to `table/new`. "
32259
0
              "Returns the new table.") {
32260
0
    janet_fixarity(argc, 1);
32261
0
    int32_t cap = janet_getnat(argv, 0);
32262
0
    return janet_wrap_table(janet_table_weakk(cap));
32263
0
}
32264
32265
JANET_CORE_FN(cfun_table_weak_values,
32266
              "(table/weak-values capacity)",
32267
              "Creates a new empty table with normal references to keys and weak references to values. Similar to `table/new`. "
32268
0
              "Returns the new table.") {
32269
0
    janet_fixarity(argc, 1);
32270
0
    int32_t cap = janet_getnat(argv, 0);
32271
0
    return janet_wrap_table(janet_table_weakv(cap));
32272
0
}
32273
32274
JANET_CORE_FN(cfun_table_getproto,
32275
              "(table/getproto tab)",
32276
              "Get the prototype table of a table. Returns nil if the table "
32277
0
              "has no prototype, otherwise returns the prototype.") {
32278
0
    janet_fixarity(argc, 1);
32279
0
    JanetTable *t = janet_gettable(argv, 0);
32280
0
    return t->proto
32281
0
           ? janet_wrap_table(t->proto)
32282
0
           : janet_wrap_nil();
32283
0
}
32284
32285
JANET_CORE_FN(cfun_table_setproto,
32286
              "(table/setproto tab proto)",
32287
0
              "Set the prototype of a table. Returns the original table `tab`.") {
32288
0
    janet_fixarity(argc, 2);
32289
0
    JanetTable *table = janet_gettable(argv, 0);
32290
0
    JanetTable *proto = NULL;
32291
0
    if (!janet_checktype(argv[1], JANET_NIL)) {
32292
0
        proto = janet_gettable(argv, 1);
32293
0
    }
32294
0
    table->proto = proto;
32295
0
    return argv[0];
32296
0
}
32297
32298
JANET_CORE_FN(cfun_table_tostruct,
32299
              "(table/to-struct tab &opt proto)",
32300
0
              "Convert a table to a struct. Returns a new struct.") {
32301
0
    janet_arity(argc, 1, 2);
32302
0
    JanetTable *t = janet_gettable(argv, 0);
32303
0
    JanetStruct proto = janet_optstruct(argv, argc, 1, NULL);
32304
0
    JanetStruct st = janet_table_to_struct(t);
32305
0
    janet_struct_proto(st) = proto;
32306
0
    return janet_wrap_struct(st);
32307
0
}
32308
32309
JANET_CORE_FN(cfun_table_rawget,
32310
              "(table/rawget tab key)",
32311
              "Gets a value from a table `tab` without looking at the prototype table. "
32312
              "If `tab` does not contain the key directly, the function will return "
32313
0
              "nil without checking the prototype. Returns the value in the table.") {
32314
0
    janet_fixarity(argc, 2);
32315
0
    JanetTable *table = janet_gettable(argv, 0);
32316
0
    return janet_table_rawget(table, argv[1]);
32317
0
}
32318
32319
JANET_CORE_FN(cfun_table_clone,
32320
              "(table/clone tab)",
32321
              "Create a copy of a table. Updates to the new table will not change the old table, "
32322
0
              "and vice versa.") {
32323
0
    janet_fixarity(argc, 1);
32324
0
    JanetTable *table = janet_gettable(argv, 0);
32325
0
    return janet_wrap_table(janet_table_clone(table));
32326
0
}
32327
32328
JANET_CORE_FN(cfun_table_clear,
32329
              "(table/clear tab)",
32330
0
              "Remove all key-value pairs in a table and return the modified table `tab`.") {
32331
0
    janet_fixarity(argc, 1);
32332
0
    JanetTable *table = janet_gettable(argv, 0);
32333
0
    janet_table_clear(table);
32334
0
    return janet_wrap_table(table);
32335
0
}
32336
32337
JANET_CORE_FN(cfun_table_proto_flatten,
32338
              "(table/proto-flatten tab)",
32339
0
              "Create a new table that is the result of merging all prototypes into a new table.") {
32340
0
    janet_fixarity(argc, 1);
32341
0
    JanetTable *table = janet_gettable(argv, 0);
32342
0
    return janet_wrap_table(janet_table_proto_flatten(table));
32343
0
}
32344
32345
/* Load the table module */
32346
0
void janet_lib_table(JanetTable *env) {
32347
0
    JanetRegExt table_cfuns[] = {
32348
0
        JANET_CORE_REG("table/new", cfun_table_new),
32349
0
        JANET_CORE_REG("table/weak", cfun_table_weak),
32350
0
        JANET_CORE_REG("table/weak-keys", cfun_table_weak_keys),
32351
0
        JANET_CORE_REG("table/weak-values", cfun_table_weak_values),
32352
0
        JANET_CORE_REG("table/to-struct", cfun_table_tostruct),
32353
0
        JANET_CORE_REG("table/getproto", cfun_table_getproto),
32354
0
        JANET_CORE_REG("table/setproto", cfun_table_setproto),
32355
0
        JANET_CORE_REG("table/rawget", cfun_table_rawget),
32356
0
        JANET_CORE_REG("table/clone", cfun_table_clone),
32357
0
        JANET_CORE_REG("table/clear", cfun_table_clear),
32358
0
        JANET_CORE_REG("table/proto-flatten", cfun_table_proto_flatten),
32359
0
        JANET_REG_END
32360
0
    };
32361
0
    janet_core_cfuns_ext(env, NULL, table_cfuns);
32362
0
}
32363
32364
32365
/* src/core/tuple.c */
32366
#line 0 "src/core/tuple.c"
32367
32368
/*
32369
* Copyright (c) 2025 Calvin Rose
32370
*
32371
* Permission is hereby granted, free of charge, to any person obtaining a copy
32372
* of this software and associated documentation files (the "Software"), to
32373
* deal in the Software without restriction, including without limitation the
32374
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
32375
* sell copies of the Software, and to permit persons to whom the Software is
32376
* furnished to do so, subject to the following conditions:
32377
*
32378
* The above copyright notice and this permission notice shall be included in
32379
* all copies or substantial portions of the Software.
32380
*
32381
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32382
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32383
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32384
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32385
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
32386
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
32387
* IN THE SOFTWARE.
32388
*/
32389
32390
#ifndef JANET_AMALG
32391
#include "features.h"
32392
#include <janet.h>
32393
#include "symcache.h"
32394
#include "gc.h"
32395
#include "util.h"
32396
#endif
32397
32398
/* Create a new empty tuple of the given size. This will return memory
32399
 * which should be filled with Janets. The memory will not be collected until
32400
 * janet_tuple_end is called. */
32401
2.00M
Janet *janet_tuple_begin(int32_t length) {
32402
2.00M
    size_t size = sizeof(JanetTupleHead) + ((size_t) length * sizeof(Janet));
32403
2.00M
    JanetTupleHead *head = janet_gcalloc(JANET_MEMORY_TUPLE, size);
32404
2.00M
    head->sm_line = -1;
32405
2.00M
    head->sm_column = -1;
32406
2.00M
    head->length = length;
32407
2.00M
    return (Janet *)(head->data);
32408
2.00M
}
32409
32410
/* Finish building a tuple */
32411
2.00M
const Janet *janet_tuple_end(Janet *tuple) {
32412
2.00M
    janet_tuple_hash(tuple) = janet_array_calchash(tuple, janet_tuple_length(tuple));
32413
2.00M
    return (const Janet *)tuple;
32414
2.00M
}
32415
32416
/* Build a tuple with n values */
32417
56.6k
const Janet *janet_tuple_n(const Janet *values, int32_t n) {
32418
56.6k
    Janet *t = janet_tuple_begin(n);
32419
56.6k
    safe_memcpy(t, values, sizeof(Janet) * n);
32420
56.6k
    return janet_tuple_end(t);
32421
56.6k
}
32422
32423
/* C Functions */
32424
32425
JANET_CORE_FN(cfun_tuple_brackets,
32426
              "(tuple/brackets & xs)",
32427
0
              "Creates a new bracketed tuple containing the elements xs.") {
32428
0
    const Janet *tup = janet_tuple_n(argv, argc);
32429
0
    janet_tuple_flag(tup) |= JANET_TUPLE_FLAG_BRACKETCTOR;
32430
0
    return janet_wrap_tuple(tup);
32431
0
}
32432
32433
JANET_CORE_FN(cfun_tuple_slice,
32434
              "(tuple/slice arrtup [,start=0 [,end=(length arrtup)]])",
32435
              "Take a sub-sequence of an array or tuple from index `start` "
32436
              "inclusive to index `end` exclusive. If `start` or `end` are not provided, "
32437
              "they default to 0 and the length of `arrtup`, respectively. "
32438
              "`start` and `end` can also be negative to indicate indexing "
32439
              "from the end of the input. Note that if `start` is negative it is "
32440
              "exclusive, and if `end` is negative it is inclusive, to allow a full "
32441
0
              "negative slice range. Returns the new tuple.") {
32442
0
    JanetView view = janet_getindexed(argv, 0);
32443
0
    JanetRange range = janet_getslice(argc, argv);
32444
0
    return janet_wrap_tuple(janet_tuple_n(view.items + range.start, range.end - range.start));
32445
0
}
32446
32447
JANET_CORE_FN(cfun_tuple_type,
32448
              "(tuple/type tup)",
32449
              "Checks how the tuple was constructed. Will return the keyword "
32450
              ":brackets if the tuple was parsed with brackets, and :parens "
32451
              "otherwise. The two types of tuples will behave the same most of "
32452
              "the time, but will print differently and be treated differently by "
32453
0
              "the compiler.") {
32454
0
    janet_fixarity(argc, 1);
32455
0
    const Janet *tup = janet_gettuple(argv, 0);
32456
0
    if (janet_tuple_flag(tup) & JANET_TUPLE_FLAG_BRACKETCTOR) {
32457
0
        return janet_ckeywordv("brackets");
32458
0
    } else {
32459
0
        return janet_ckeywordv("parens");
32460
0
    }
32461
0
}
32462
32463
JANET_CORE_FN(cfun_tuple_sourcemap,
32464
              "(tuple/sourcemap tup)",
32465
              "Returns the sourcemap metadata attached to a tuple, "
32466
0
              "which is another tuple (line, column).") {
32467
0
    janet_fixarity(argc, 1);
32468
0
    const Janet *tup = janet_gettuple(argv, 0);
32469
0
    Janet contents[2];
32470
0
    contents[0] = janet_wrap_integer(janet_tuple_head(tup)->sm_line);
32471
0
    contents[1] = janet_wrap_integer(janet_tuple_head(tup)->sm_column);
32472
0
    return janet_wrap_tuple(janet_tuple_n(contents, 2));
32473
0
}
32474
32475
JANET_CORE_FN(cfun_tuple_setmap,
32476
              "(tuple/setmap tup line column)",
32477
              "Set the sourcemap metadata on a tuple. line and column indicate "
32478
0
              "should be integers.") {
32479
0
    janet_fixarity(argc, 3);
32480
0
    const Janet *tup = janet_gettuple(argv, 0);
32481
0
    janet_tuple_head(tup)->sm_line = janet_getinteger(argv, 1);
32482
0
    janet_tuple_head(tup)->sm_column = janet_getinteger(argv, 2);
32483
0
    return argv[0];
32484
0
}
32485
32486
JANET_CORE_FN(cfun_tuple_join,
32487
              "(tuple/join & parts)",
32488
0
              "Create a tuple by joining together other tuples and arrays.") {
32489
0
    janet_arity(argc, 0, -1);
32490
0
    int32_t total_len = 0;
32491
0
    for (int32_t i = 0; i < argc; i++) {
32492
0
        int32_t len = 0;
32493
0
        const Janet *vals = NULL;
32494
0
        if (!janet_indexed_view(argv[i], &vals, &len)) {
32495
0
            janet_panicf("expected indexed type for argument %d, got %v", i, argv[i]);
32496
0
        }
32497
0
        if (INT32_MAX - total_len < len) {
32498
0
            janet_panic("tuple too large");
32499
0
        }
32500
0
        total_len += len;
32501
0
    }
32502
0
    Janet *tup = janet_tuple_begin(total_len);
32503
0
    Janet *tup_cursor = tup;
32504
0
    for (int32_t i = 0; i < argc; i++) {
32505
0
        int32_t len = 0;
32506
0
        const Janet *vals = NULL;
32507
0
        janet_indexed_view(argv[i], &vals, &len);
32508
0
        memcpy(tup_cursor, vals, len * sizeof(Janet));
32509
0
        tup_cursor += len;
32510
0
    }
32511
0
    return janet_wrap_tuple(janet_tuple_end(tup));
32512
0
}
32513
32514
/* Load the tuple module */
32515
0
void janet_lib_tuple(JanetTable *env) {
32516
0
    JanetRegExt tuple_cfuns[] = {
32517
0
        JANET_CORE_REG("tuple/brackets", cfun_tuple_brackets),
32518
0
        JANET_CORE_REG("tuple/slice", cfun_tuple_slice),
32519
0
        JANET_CORE_REG("tuple/type", cfun_tuple_type),
32520
0
        JANET_CORE_REG("tuple/sourcemap", cfun_tuple_sourcemap),
32521
0
        JANET_CORE_REG("tuple/setmap", cfun_tuple_setmap),
32522
0
        JANET_CORE_REG("tuple/join", cfun_tuple_join),
32523
0
        JANET_REG_END
32524
0
    };
32525
0
    janet_core_cfuns_ext(env, NULL, tuple_cfuns);
32526
0
}
32527
32528
32529
/* src/core/util.c */
32530
#line 0 "src/core/util.c"
32531
32532
/*
32533
* Copyright (c) 2025 Calvin Rose
32534
*
32535
* Permission is hereby granted, free of charge, to any person obtaining a copy
32536
* of this software and associated documentation files (the "Software"), to
32537
* deal in the Software without restriction, including without limitation the
32538
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
32539
* sell copies of the Software, and to permit persons to whom the Software is
32540
* furnished to do so, subject to the following conditions:
32541
*
32542
* The above copyright notice and this permission notice shall be included in
32543
* all copies or substantial portions of the Software.
32544
*
32545
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
32546
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32547
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
32548
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
32549
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
32550
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
32551
* IN THE SOFTWARE.
32552
*/
32553
32554
#ifndef JANET_AMALG
32555
#include "features.h"
32556
#include <janet.h>
32557
#include "util.h"
32558
#include "state.h"
32559
#include "gc.h"
32560
#ifdef JANET_WINDOWS
32561
#include <windows.h>
32562
#else
32563
#include <unistd.h>
32564
#include <sys/types.h>
32565
#include <sys/stat.h>
32566
#include <fcntl.h>
32567
#endif
32568
#endif
32569
32570
#ifdef JANET_WINDOWS
32571
#ifdef JANET_DYNAMIC_MODULES
32572
#include <psapi.h>
32573
#ifdef JANET_MSVC
32574
#pragma comment (lib, "Psapi.lib")
32575
#endif
32576
#endif
32577
#endif
32578
32579
#ifdef JANET_APPLE
32580
#include <AvailabilityMacros.h>
32581
#endif
32582
32583
#include <inttypes.h>
32584
32585
/* Base 64 lookup table for digits */
32586
const char janet_base64[65] =
32587
    "0123456789"
32588
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
32589
    "abcdefghijklmnopqrstuvwxyz"
32590
    "_=";
32591
32592
/* The JANET value types in order. These types can be used as
32593
 * mnemonics instead of a bit pattern for type checking */
32594
const char *const janet_type_names[16] = {
32595
    "number",
32596
    "nil",
32597
    "boolean",
32598
    "fiber",
32599
    "string",
32600
    "symbol",
32601
    "keyword",
32602
    "array",
32603
    "tuple",
32604
    "table",
32605
    "struct",
32606
    "buffer",
32607
    "function",
32608
    "cfunction",
32609
    "abstract",
32610
    "pointer"
32611
};
32612
32613
/* Docstring for signal lists these */
32614
const char *const janet_signal_names[14] = {
32615
    "ok",
32616
    "error",
32617
    "debug",
32618
    "yield",
32619
    "user0",
32620
    "user1",
32621
    "user2",
32622
    "user3",
32623
    "user4",
32624
    "user5",
32625
    "user6",
32626
    "user7",
32627
    "interrupt",
32628
    "await"
32629
};
32630
32631
/* Docstring for fiber/status lists these */
32632
const char *const janet_status_names[16] = {
32633
    "dead",
32634
    "error",
32635
    "debug",
32636
    "pending",
32637
    "user0",
32638
    "user1",
32639
    "user2",
32640
    "user3",
32641
    "user4",
32642
    "user5",
32643
    "user6",
32644
    "user7",
32645
    "interrupted",
32646
    "suspended",
32647
    "new",
32648
    "alive"
32649
};
32650
32651
19.1M
uint32_t janet_hash_mix(uint32_t input, uint32_t more) {
32652
19.1M
    uint32_t mix1 = (more + 0x9e3779b9 + (input << 6) + (input >> 2));
32653
19.1M
    return input ^ (0x9e3779b9 + (mix1 << 6) + (mix1 >> 2));
32654
19.1M
}
32655
32656
#ifndef JANET_PRF
32657
32658
6.77M
int32_t janet_string_calchash(const uint8_t *str, int32_t len) {
32659
6.77M
    if (NULL == str || len == 0) return 5381;
32660
4.16M
    const uint8_t *end = str + len;
32661
4.16M
    uint32_t hash = 5381;
32662
31.4M
    while (str < end)
32663
27.2M
        hash = (hash << 5) + hash + *str++;
32664
4.16M
    hash = janet_hash_mix(hash, (uint32_t) len);
32665
4.16M
    return (int32_t) hash;
32666
6.77M
}
32667
32668
#else
32669
32670
/*
32671
  Public domain siphash implementation sourced from:
32672
32673
  https://raw.githubusercontent.com/veorq/SipHash/master/halfsiphash.c
32674
32675
  We have made a few alterations, such as hardcoding the output size
32676
  and then removing dead code.
32677
*/
32678
#define cROUNDS 2
32679
#define dROUNDS 4
32680
32681
#define ROTL(x, b) (uint32_t)(((x) << (b)) | ((x) >> (32 - (b))))
32682
32683
#define U8TO32_LE(p)                                                           \
32684
    (((uint32_t)((p)[0])) | ((uint32_t)((p)[1]) << 8) |                        \
32685
     ((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24))
32686
32687
#define SIPROUND                                                               \
32688
    do {                                                                       \
32689
        v0 += v1;                                                              \
32690
        v1 = ROTL(v1, 5);                                                      \
32691
        v1 ^= v0;                                                              \
32692
        v0 = ROTL(v0, 16);                                                     \
32693
        v2 += v3;                                                              \
32694
        v3 = ROTL(v3, 8);                                                      \
32695
        v3 ^= v2;                                                              \
32696
        v0 += v3;                                                              \
32697
        v3 = ROTL(v3, 7);                                                      \
32698
        v3 ^= v0;                                                              \
32699
        v2 += v1;                                                              \
32700
        v1 = ROTL(v1, 13);                                                     \
32701
        v1 ^= v2;                                                              \
32702
        v2 = ROTL(v2, 16);                                                     \
32703
    } while (0)
32704
32705
static uint32_t halfsiphash(const uint8_t *in, const size_t inlen, const uint8_t *k) {
32706
32707
    uint32_t v0 = 0;
32708
    uint32_t v1 = 0;
32709
    uint32_t v2 = UINT32_C(0x6c796765);
32710
    uint32_t v3 = UINT32_C(0x74656462);
32711
    uint32_t k0 = U8TO32_LE(k);
32712
    uint32_t k1 = U8TO32_LE(k + 4);
32713
    uint32_t m;
32714
    int i;
32715
    const uint8_t *end = in + inlen - (inlen % sizeof(uint32_t));
32716
    const int left = inlen & 3;
32717
    uint32_t b = ((uint32_t)inlen) << 24;
32718
    v3 ^= k1;
32719
    v2 ^= k0;
32720
    v1 ^= k1;
32721
    v0 ^= k0;
32722
32723
    for (; in != end; in += 4) {
32724
        m = U8TO32_LE(in);
32725
        v3 ^= m;
32726
32727
        for (i = 0; i < cROUNDS; ++i)
32728
            SIPROUND;
32729
32730
        v0 ^= m;
32731
    }
32732
32733
    switch (left) {
32734
        case 3:
32735
            b |= ((uint32_t)in[2]) << 16;
32736
        /* fallthrough */
32737
        case 2:
32738
            b |= ((uint32_t)in[1]) << 8;
32739
        /* fallthrough */
32740
        case 1:
32741
            b |= ((uint32_t)in[0]);
32742
            break;
32743
        case 0:
32744
            break;
32745
    }
32746
32747
    v3 ^= b;
32748
32749
    for (i = 0; i < cROUNDS; ++i)
32750
        SIPROUND;
32751
32752
    v0 ^= b;
32753
32754
    v2 ^= 0xff;
32755
32756
    for (i = 0; i < dROUNDS; ++i)
32757
        SIPROUND;
32758
32759
    b = v1 ^ v3;
32760
    return b;
32761
}
32762
/* end of siphash */
32763
32764
static uint8_t hash_key[JANET_HASH_KEY_SIZE] = {0};
32765
32766
void janet_init_hash_key(uint8_t new_key[JANET_HASH_KEY_SIZE]) {
32767
    memcpy(hash_key, new_key, sizeof(hash_key));
32768
}
32769
32770
/* Calculate hash for string */
32771
32772
int32_t janet_string_calchash(const uint8_t *str, int32_t len) {
32773
    uint32_t hash;
32774
    hash = halfsiphash(str, len, hash_key);
32775
    return (int32_t)hash;
32776
}
32777
32778
#endif
32779
32780
/* Computes hash of an array of values */
32781
2.00M
int32_t janet_array_calchash(const Janet *array, int32_t len) {
32782
2.00M
    const Janet *end = array + len;
32783
2.00M
    uint32_t hash = 33;
32784
6.31M
    while (array < end) {
32785
4.31M
        hash = janet_hash_mix(hash, janet_hash(*array++));
32786
4.31M
    }
32787
2.00M
    return (int32_t) hash;
32788
2.00M
}
32789
32790
/* Computes hash of an array of values */
32791
1.75M
int32_t janet_kv_calchash(const JanetKV *kvs, int32_t len) {
32792
1.75M
    const JanetKV *end = kvs + len;
32793
1.75M
    uint32_t hash = 33;
32794
7.11M
    while (kvs < end) {
32795
5.35M
        hash = janet_hash_mix(hash, janet_hash(kvs->key));
32796
5.35M
        hash = janet_hash_mix(hash, janet_hash(kvs->value));
32797
5.35M
        kvs++;
32798
5.35M
    }
32799
1.75M
    return (int32_t) hash;
32800
1.75M
}
32801
32802
/* Calculate next power of 2. May overflow. If n is 0,
32803
 * will return 0. */
32804
1.89M
int32_t janet_tablen(int32_t n) {
32805
1.89M
    if (n < 0) return 0;
32806
1.89M
    n |= n >> 1;
32807
1.89M
    n |= n >> 2;
32808
1.89M
    n |= n >> 4;
32809
1.89M
    n |= n >> 8;
32810
1.89M
    n |= n >> 16;
32811
1.89M
    return n + 1;
32812
1.89M
}
32813
32814
/* Avoid some undefined behavior that was common in the code base. */
32815
2.87M
void safe_memcpy(void *dest, const void *src, size_t len) {
32816
2.87M
    if (!len) return;
32817
263k
    memcpy(dest, src, len);
32818
263k
}
32819
32820
/* Helper to find a value in a Janet struct or table. Returns the bucket
32821
 * containing the key, or the first empty bucket if there is no such key. */
32822
3.37M
const JanetKV *janet_dict_find(const JanetKV *buckets, int32_t cap, Janet key) {
32823
3.37M
    int32_t index = janet_maphash(cap, janet_hash(key));
32824
3.37M
    int32_t i;
32825
3.37M
    const JanetKV *first_bucket = NULL;
32826
    /* Higher half */
32827
44.9M
    for (i = index; i < cap; i++) {
32828
44.9M
        const JanetKV *kv = buckets + i;
32829
44.9M
        if (janet_checktype(kv->key, JANET_NIL)) {
32830
43.0M
            if (janet_checktype(kv->value, JANET_NIL)) {
32831
2.71M
                return kv;
32832
40.3M
            } else if (NULL == first_bucket) {
32833
56.3k
                first_bucket = kv;
32834
56.3k
            }
32835
43.0M
        } else if (janet_equals(kv->key, key)) {
32836
658k
            return buckets + i;
32837
658k
        }
32838
44.9M
    }
32839
    /* Lower half */
32840
6.72k
    for (i = 0; i < index; i++) {
32841
6.72k
        const JanetKV *kv = buckets + i;
32842
6.72k
        if (janet_checktype(kv->key, JANET_NIL)) {
32843
2.62k
            if (janet_checktype(kv->value, JANET_NIL)) {
32844
1.47k
                return kv;
32845
1.47k
            } else if (NULL == first_bucket) {
32846
384
                first_bucket = kv;
32847
384
            }
32848
4.10k
        } else if (janet_equals(kv->key, key)) {
32849
877
            return buckets + i;
32850
877
        }
32851
6.72k
    }
32852
0
    return first_bucket;
32853
2.34k
}
32854
32855
/* Get a value from a janet struct or table. */
32856
0
Janet janet_dictionary_get(const JanetKV *data, int32_t cap, Janet key) {
32857
0
    const JanetKV *kv = janet_dict_find(data, cap, key);
32858
0
    if (kv && !janet_checktype(kv->key, JANET_NIL)) {
32859
0
        return kv->value;
32860
0
    }
32861
0
    return janet_wrap_nil();
32862
0
}
32863
32864
/* Iterate through a struct or dictionary generically */
32865
0
const JanetKV *janet_dictionary_next(const JanetKV *kvs, int32_t cap, const JanetKV *kv) {
32866
0
    const JanetKV *end = kvs + cap;
32867
0
    kv = (kv == NULL) ? kvs : kv + 1;
32868
0
    while (kv < end) {
32869
0
        if (!janet_checktype(kv->key, JANET_NIL))
32870
0
            return kv;
32871
0
        kv++;
32872
0
    }
32873
0
    return NULL;
32874
0
}
32875
32876
/* Compare a janet string with a cstring. More efficient than loading
32877
 * c string as a janet string. */
32878
0
int janet_cstrcmp(const uint8_t *str, const char *other) {
32879
0
    int32_t len = janet_string_length(str);
32880
0
    int32_t index;
32881
0
    for (index = 0; index < len; index++) {
32882
0
        uint8_t c = str[index];
32883
0
        uint8_t k = ((const uint8_t *)other)[index];
32884
0
        if (c < k) return -1;
32885
0
        if (c > k) return 1;
32886
0
        if (k == '\0') break;
32887
0
    }
32888
0
    return (other[index] == '\0') ? 0 : -1;
32889
0
}
32890
32891
/* Do a binary search on a static array of structs. Each struct must
32892
 * have a string as its first element, and the struct must be sorted
32893
 * lexicographically by that element. */
32894
const void *janet_strbinsearch(
32895
    const void *tab,
32896
    size_t tabcount,
32897
    size_t itemsize,
32898
0
    const uint8_t *key) {
32899
0
    size_t low = 0;
32900
0
    size_t hi = tabcount;
32901
0
    const char *t = (const char *)tab;
32902
0
    while (low < hi) {
32903
0
        size_t mid = low + ((hi - low) / 2);
32904
0
        const char **item = (const char **)(t + mid * itemsize);
32905
0
        const char *name = *item;
32906
0
        int comp = janet_cstrcmp(key, name);
32907
0
        if (comp < 0) {
32908
0
            hi = mid;
32909
0
        } else if (comp > 0) {
32910
0
            low = mid + 1;
32911
0
        } else {
32912
0
            return (const void *)item;
32913
0
        }
32914
0
    }
32915
0
    return NULL;
32916
0
}
32917
32918
/* Add sourcemapping and documentation to a binding table */
32919
0
static void janet_add_meta(JanetTable *table, const char *doc, const char *source_file, int32_t source_line) {
32920
0
    if (doc) {
32921
0
        janet_table_put(table, janet_ckeywordv("doc"), janet_cstringv(doc));
32922
0
    }
32923
0
    if (source_file && source_line) {
32924
0
        Janet triple[3];
32925
0
        triple[0] = janet_cstringv(source_file);
32926
0
        triple[1] = janet_wrap_integer(source_line);
32927
0
        triple[2] = janet_wrap_integer(1);
32928
0
        Janet value = janet_wrap_tuple(janet_tuple_n(triple, 3));
32929
0
        janet_table_put(table, janet_ckeywordv("source-map"), value);
32930
0
    }
32931
0
}
32932
32933
/* Add a def to an environment */
32934
0
void janet_def_sm(JanetTable *env, const char *name, Janet val, const char *doc, const char *source_file, int32_t source_line) {
32935
0
    JanetTable *subt = janet_table(2);
32936
0
    janet_table_put(subt, janet_ckeywordv("value"), val);
32937
0
    janet_add_meta(subt, doc, source_file, source_line);
32938
0
    janet_table_put(env, janet_csymbolv(name), janet_wrap_table(subt));
32939
0
}
32940
0
void janet_def(JanetTable *env, const char *name, Janet value, const char *doc) {
32941
0
    janet_def_sm(env, name, value, doc, NULL, 0);
32942
0
}
32943
32944
/* Add a var to the environment */
32945
0
void janet_var_sm(JanetTable *env, const char *name, Janet val, const char *doc, const char *source_file, int32_t source_line) {
32946
0
    JanetArray *array = janet_array(1);
32947
0
    JanetTable *subt = janet_table(2);
32948
0
    janet_array_push(array, val);
32949
0
    janet_table_put(subt, janet_ckeywordv("ref"), janet_wrap_array(array));
32950
0
    janet_add_meta(subt, doc, source_file, source_line);
32951
0
    janet_table_put(env, janet_csymbolv(name), janet_wrap_table(subt));
32952
0
}
32953
0
void janet_var(JanetTable *env, const char *name, Janet val, const char *doc) {
32954
0
    janet_var_sm(env, name, val, doc, NULL, 0);
32955
0
}
32956
32957
/* Registry functions */
32958
32959
/* Put the registry in sorted order. */
32960
0
static void janet_registry_sort(void) {
32961
0
    for (size_t i = 1; i < janet_vm.registry_count; i++) {
32962
0
        JanetCFunRegistry reg = janet_vm.registry[i];
32963
0
        size_t j;
32964
0
        for (j = i; j > 0; j--) {
32965
0
            if ((void *)(janet_vm.registry[j - 1].cfun) < (void *)(reg.cfun)) break;
32966
0
            janet_vm.registry[j] = janet_vm.registry[j - 1];
32967
0
        }
32968
0
        janet_vm.registry[j] = reg;
32969
0
    }
32970
0
    janet_vm.registry_dirty = 0;
32971
0
}
32972
32973
void janet_registry_put(
32974
    JanetCFunction key,
32975
    const char *name,
32976
    const char *name_prefix,
32977
    const char *source_file,
32978
0
    int32_t source_line) {
32979
0
    if (janet_vm.registry_count == janet_vm.registry_cap) {
32980
0
        size_t newcap = (janet_vm.registry_count + 1) * 2;
32981
        /* Size it nicely with core by default */
32982
0
        if (newcap < 512) {
32983
0
            newcap = 512;
32984
0
        }
32985
0
        void *newmem = janet_realloc(janet_vm.registry, newcap * sizeof(JanetCFunRegistry));
32986
0
        if (NULL == newmem) {
32987
0
            JANET_OUT_OF_MEMORY;
32988
0
        }
32989
0
        janet_vm.registry = newmem;
32990
0
        janet_vm.registry_cap = newcap;
32991
0
    }
32992
0
    JanetCFunRegistry value = {
32993
0
        key,
32994
0
        name,
32995
0
        name_prefix,
32996
0
        source_file,
32997
0
        source_line
32998
0
    };
32999
0
    janet_vm.registry[janet_vm.registry_count++] = value;
33000
0
    janet_vm.registry_dirty = 1;
33001
0
}
33002
33003
0
JanetCFunRegistry *janet_registry_get(JanetCFunction key) {
33004
0
    if (janet_vm.registry_dirty) {
33005
0
        janet_registry_sort();
33006
0
    }
33007
0
    for (size_t i = 0; i < janet_vm.registry_count; i++) {
33008
0
        if (janet_vm.registry[i].cfun == key) {
33009
0
            return janet_vm.registry + i;
33010
0
        }
33011
0
    }
33012
0
    JanetCFunRegistry *lo = janet_vm.registry;
33013
0
    JanetCFunRegistry *hi = lo + janet_vm.registry_count;
33014
0
    while (lo < hi) {
33015
0
        JanetCFunRegistry *mid = lo + (hi - lo) / 2;
33016
0
        if (mid->cfun == key) {
33017
0
            return mid;
33018
0
        }
33019
0
        if ((void *)(mid->cfun) > (void *)(key)) {
33020
0
            hi = mid;
33021
0
        } else {
33022
0
            lo = mid + 1;
33023
0
        }
33024
0
    }
33025
0
    return NULL;
33026
0
}
33027
33028
typedef struct {
33029
    char *buf;
33030
    size_t plen;
33031
} NameBuf;
33032
33033
0
static void namebuf_init(NameBuf *namebuf, const char *prefix) {
33034
0
    size_t plen = strlen(prefix);
33035
0
    namebuf->plen = plen;
33036
0
    namebuf->buf = janet_smalloc(namebuf->plen + 256);
33037
0
    if (NULL == namebuf->buf) {
33038
0
        JANET_OUT_OF_MEMORY;
33039
0
    }
33040
0
    memcpy(namebuf->buf, prefix, plen);
33041
0
    namebuf->buf[plen] = '/';
33042
0
}
33043
33044
0
static void namebuf_deinit(NameBuf *namebuf) {
33045
0
    janet_sfree(namebuf->buf);
33046
0
}
33047
33048
0
static char *namebuf_name(NameBuf *namebuf, const char *suffix) {
33049
0
    size_t slen = strlen(suffix);
33050
0
    namebuf->buf = janet_srealloc(namebuf->buf, namebuf->plen + 2 + slen);
33051
0
    if (NULL == namebuf->buf) {
33052
0
        JANET_OUT_OF_MEMORY;
33053
0
    }
33054
0
    memcpy(namebuf->buf + namebuf->plen + 1, suffix, slen);
33055
0
    namebuf->buf[namebuf->plen + 1 + slen] = '\0';
33056
0
    return (char *)(namebuf->buf);
33057
0
}
33058
33059
0
void janet_cfuns(JanetTable *env, const char *regprefix, const JanetReg *cfuns) {
33060
0
    while (cfuns->name) {
33061
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
33062
0
        if (env) janet_def(env, cfuns->name, fun, cfuns->documentation);
33063
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, NULL, 0);
33064
0
        cfuns++;
33065
0
    }
33066
0
}
33067
33068
0
void janet_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
33069
0
    while (cfuns->name) {
33070
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
33071
0
        if (env) janet_def_sm(env, cfuns->name, fun, cfuns->documentation, cfuns->source_file, cfuns->source_line);
33072
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
33073
0
        cfuns++;
33074
0
    }
33075
0
}
33076
33077
0
void janet_cfuns_prefix(JanetTable *env, const char *regprefix, const JanetReg *cfuns) {
33078
0
    NameBuf nb;
33079
0
    if (env) namebuf_init(&nb, regprefix);
33080
0
    while (cfuns->name) {
33081
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
33082
0
        if (env) janet_def(env, namebuf_name(&nb, cfuns->name), fun, cfuns->documentation);
33083
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, NULL, 0);
33084
0
        cfuns++;
33085
0
    }
33086
0
    if (env) namebuf_deinit(&nb);
33087
0
}
33088
33089
0
void janet_cfuns_ext_prefix(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
33090
0
    NameBuf nb;
33091
0
    if (env) namebuf_init(&nb, regprefix);
33092
0
    while (cfuns->name) {
33093
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
33094
0
        if (env) janet_def_sm(env, namebuf_name(&nb, cfuns->name), fun, cfuns->documentation, cfuns->source_file, cfuns->source_line);
33095
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
33096
0
        cfuns++;
33097
0
    }
33098
0
    if (env) namebuf_deinit(&nb);
33099
0
}
33100
33101
/* Register a value in the global registry */
33102
0
void janet_register(const char *name, JanetCFunction cfun) {
33103
0
    janet_registry_put(cfun, name, NULL, NULL, 0);
33104
0
}
33105
33106
/* Abstract type introspection */
33107
33108
0
void janet_register_abstract_type(const JanetAbstractType *at) {
33109
0
    Janet sym = janet_csymbolv(at->name);
33110
0
    Janet check = janet_table_get(janet_vm.abstract_registry, sym);
33111
0
    if (!janet_checktype(check, JANET_NIL) && at != janet_unwrap_pointer(check)) {
33112
0
        janet_panicf("cannot register abstract type %s, "
33113
0
                     "a type with the same name exists", at->name);
33114
0
    }
33115
0
    janet_table_put(janet_vm.abstract_registry, sym, janet_wrap_pointer((void *) at));
33116
0
}
33117
33118
0
const JanetAbstractType *janet_get_abstract_type(Janet key) {
33119
0
    Janet wrapped = janet_table_get(janet_vm.abstract_registry, key);
33120
0
    if (janet_checktype(wrapped, JANET_NIL)) {
33121
0
        return NULL;
33122
0
    }
33123
0
    return (JanetAbstractType *)(janet_unwrap_pointer(wrapped));
33124
0
}
33125
33126
#ifndef JANET_BOOTSTRAP
33127
0
void janet_core_def_sm(JanetTable *env, const char *name, Janet x, const void *p, const void *sf, int32_t sl) {
33128
0
    (void) sf;
33129
0
    (void) sl;
33130
0
    (void) p;
33131
0
    Janet key = janet_csymbolv(name);
33132
0
    janet_table_put(env, key, x);
33133
0
    if (janet_checktype(x, JANET_CFUNCTION)) {
33134
0
        janet_registry_put(janet_unwrap_cfunction(x), name, NULL, NULL, 0);
33135
0
    }
33136
0
}
33137
33138
0
void janet_core_cfuns_ext(JanetTable *env, const char *regprefix, const JanetRegExt *cfuns) {
33139
0
    (void) regprefix;
33140
0
    while (cfuns->name) {
33141
0
        Janet fun = janet_wrap_cfunction(cfuns->cfun);
33142
0
        janet_table_put(env, janet_csymbolv(cfuns->name), fun);
33143
0
        janet_registry_put(cfuns->cfun, cfuns->name, regprefix, cfuns->source_file, cfuns->source_line);
33144
0
        cfuns++;
33145
0
    }
33146
0
}
33147
#endif
33148
33149
0
JanetBinding janet_binding_from_entry(Janet entry) {
33150
0
    JanetTable *entry_table;
33151
0
    JanetBinding binding = {
33152
0
        JANET_BINDING_NONE,
33153
0
        janet_wrap_nil(),
33154
0
        JANET_BINDING_DEP_NONE
33155
0
    };
33156
33157
    /* Check environment for entry */
33158
0
    if (!janet_checktype(entry, JANET_TABLE))
33159
0
        return binding;
33160
0
    entry_table = janet_unwrap_table(entry);
33161
33162
    /* deprecation check */
33163
0
    Janet deprecate = janet_table_get(entry_table, janet_ckeywordv("deprecated"));
33164
0
    if (janet_checktype(deprecate, JANET_KEYWORD)) {
33165
0
        JanetKeyword depkw = janet_unwrap_keyword(deprecate);
33166
0
        if (!janet_cstrcmp(depkw, "relaxed")) {
33167
0
            binding.deprecation = JANET_BINDING_DEP_RELAXED;
33168
0
        } else if (!janet_cstrcmp(depkw, "normal")) {
33169
0
            binding.deprecation = JANET_BINDING_DEP_NORMAL;
33170
0
        } else if (!janet_cstrcmp(depkw, "strict")) {
33171
0
            binding.deprecation = JANET_BINDING_DEP_STRICT;
33172
0
        }
33173
0
    } else if (!janet_checktype(deprecate, JANET_NIL)) {
33174
0
        binding.deprecation = JANET_BINDING_DEP_NORMAL;
33175
0
    }
33176
33177
0
    int macro = janet_truthy(janet_table_get(entry_table, janet_ckeywordv("macro")));
33178
0
    Janet value = janet_table_get(entry_table, janet_ckeywordv("value"));
33179
0
    Janet ref = janet_table_get(entry_table, janet_ckeywordv("ref"));
33180
0
    int ref_is_valid = janet_checktype(ref, JANET_ARRAY);
33181
0
    int redef = ref_is_valid && janet_truthy(janet_table_get(entry_table, janet_ckeywordv("redef")));
33182
33183
0
    if (macro) {
33184
0
        binding.value = redef ? ref : value;
33185
0
        binding.type = redef ? JANET_BINDING_DYNAMIC_MACRO : JANET_BINDING_MACRO;
33186
0
        return binding;
33187
0
    }
33188
33189
0
    if (ref_is_valid) {
33190
0
        binding.value = ref;
33191
0
        binding.type = redef ? JANET_BINDING_DYNAMIC_DEF : JANET_BINDING_VAR;
33192
0
    } else {
33193
0
        binding.value = value;
33194
0
        binding.type = JANET_BINDING_DEF;
33195
0
    }
33196
33197
0
    return binding;
33198
0
}
33199
33200
/* If the value at the given address can be coerced to a byte view,
33201
   return that byte view. If it can't, replace the value at the address
33202
   with the result of janet_to_string, and return a byte view over that
33203
   string. */
33204
0
static JanetByteView memoize_byte_view(Janet *value) {
33205
0
    JanetByteView result;
33206
0
    if (!janet_bytes_view(*value, &result.bytes, &result.len)) {
33207
0
        JanetString str = janet_to_string(*value);
33208
0
        *value = janet_wrap_string(str);
33209
0
        result.bytes = str;
33210
0
        result.len = janet_string_length(str);
33211
0
    }
33212
0
    return result;
33213
0
}
33214
33215
0
static JanetByteView to_byte_view(Janet value) {
33216
0
    JanetByteView result;
33217
0
    if (!janet_bytes_view(value, &result.bytes, &result.len)) {
33218
0
        JanetString str = janet_to_string(value);
33219
0
        result.bytes = str;
33220
0
        result.len = janet_string_length(str);
33221
0
    }
33222
0
    return result;
33223
0
}
33224
33225
JanetByteView janet_text_substitution(
33226
    Janet *subst,
33227
    const uint8_t *bytes,
33228
    uint32_t len,
33229
0
    JanetArray *extra_argv) {
33230
0
    int32_t extra_argc = extra_argv == NULL ? 0 : extra_argv->count;
33231
0
    JanetType type = janet_type(*subst);
33232
0
    switch (type) {
33233
0
        case JANET_FUNCTION:
33234
0
        case JANET_CFUNCTION: {
33235
0
            int32_t argc = 1 + extra_argc;
33236
0
            Janet *argv = janet_tuple_begin(argc);
33237
0
            argv[0] = janet_stringv(bytes, len);
33238
0
            for (int32_t i = 0; i < extra_argc; i++) {
33239
0
                argv[i + 1] = extra_argv->data[i];
33240
0
            }
33241
0
            janet_tuple_end(argv);
33242
0
            if (type == JANET_FUNCTION) {
33243
0
                return to_byte_view(janet_call(janet_unwrap_function(*subst), argc, argv));
33244
0
            } else {
33245
0
                return to_byte_view(janet_unwrap_cfunction(*subst)(argc, argv));
33246
0
            }
33247
0
        }
33248
0
        default:
33249
0
            return memoize_byte_view(subst);
33250
0
    }
33251
0
}
33252
33253
0
JanetBinding janet_resolve_ext(JanetTable *env, const uint8_t *sym) {
33254
0
    Janet entry = janet_table_get(env, janet_wrap_symbol(sym));
33255
0
    return janet_binding_from_entry(entry);
33256
0
}
33257
33258
0
JanetBindingType janet_resolve(JanetTable *env, const uint8_t *sym, Janet *out) {
33259
0
    JanetBinding binding = janet_resolve_ext(env, sym);
33260
0
    if (binding.type == JANET_BINDING_DYNAMIC_DEF || binding.type == JANET_BINDING_DYNAMIC_MACRO) {
33261
0
        *out = janet_array_peek(janet_unwrap_array(binding.value));
33262
0
    } else {
33263
0
        *out = binding.value;
33264
0
    }
33265
0
    return binding.type;
33266
0
}
33267
33268
/* Resolve a symbol in the core environment. */
33269
0
Janet janet_resolve_core(const char *name) {
33270
0
    JanetTable *env = janet_core_env(NULL);
33271
0
    Janet out = janet_wrap_nil();
33272
0
    janet_resolve(env, janet_csymbol(name), &out);
33273
0
    return out;
33274
0
}
33275
33276
/* Read both tuples and arrays as c pointers + int32_t length. Return 1 if the
33277
 * view can be constructed, 0 if an invalid type. */
33278
0
int janet_indexed_view(Janet seq, const Janet **data, int32_t *len) {
33279
0
    if (janet_checktype(seq, JANET_ARRAY)) {
33280
0
        *data = janet_unwrap_array(seq)->data;
33281
0
        *len = janet_unwrap_array(seq)->count;
33282
0
        return 1;
33283
0
    } else if (janet_checktype(seq, JANET_TUPLE)) {
33284
0
        *data = janet_unwrap_tuple(seq);
33285
0
        *len = janet_tuple_length(janet_unwrap_tuple(seq));
33286
0
        return 1;
33287
0
    }
33288
0
    return 0;
33289
0
}
33290
33291
/* Read both strings and buffer as unsigned character array + int32_t len.
33292
 * Returns 1 if the view can be constructed and 0 if the type is invalid. */
33293
0
int janet_bytes_view(Janet str, const uint8_t **data, int32_t *len) {
33294
0
    JanetType t = janet_type(str);
33295
0
    if (t == JANET_STRING || t == JANET_SYMBOL || t == JANET_KEYWORD) {
33296
0
        *data = janet_unwrap_string(str);
33297
0
        *len = janet_string_length(janet_unwrap_string(str));
33298
0
        return 1;
33299
0
    } else if (t == JANET_BUFFER) {
33300
0
        *data = janet_unwrap_buffer(str)->data;
33301
0
        *len = janet_unwrap_buffer(str)->count;
33302
0
        return 1;
33303
0
    } else if (t == JANET_ABSTRACT) {
33304
0
        void *abst = janet_unwrap_abstract(str);
33305
0
        const JanetAbstractType *atype = janet_abstract_type(abst);
33306
0
        if (NULL == atype->bytes) {
33307
0
            return 0;
33308
0
        }
33309
0
        JanetByteView view = atype->bytes(abst, janet_abstract_size(abst));
33310
0
        *data = view.bytes;
33311
0
        *len = view.len;
33312
0
        return 1;
33313
0
    }
33314
0
    return 0;
33315
0
}
33316
33317
/* Read both structs and tables as the entries of a hashtable with
33318
 * identical structure. Returns 1 if the view can be constructed and
33319
 * 0 if the type is invalid. */
33320
0
int janet_dictionary_view(Janet tab, const JanetKV **data, int32_t *len, int32_t *cap) {
33321
0
    if (janet_checktype(tab, JANET_TABLE)) {
33322
0
        *data = janet_unwrap_table(tab)->data;
33323
0
        *cap = janet_unwrap_table(tab)->capacity;
33324
0
        *len = janet_unwrap_table(tab)->count;
33325
0
        return 1;
33326
0
    } else if (janet_checktype(tab, JANET_STRUCT)) {
33327
0
        *data = janet_unwrap_struct(tab);
33328
0
        *cap = janet_struct_capacity(janet_unwrap_struct(tab));
33329
0
        *len = janet_struct_length(janet_unwrap_struct(tab));
33330
0
        return 1;
33331
0
    }
33332
0
    return 0;
33333
0
}
33334
33335
0
int janet_checkint(Janet x) {
33336
0
    if (!janet_checktype(x, JANET_NUMBER))
33337
0
        return 0;
33338
0
    double dval = janet_unwrap_number(x);
33339
0
    return janet_checkintrange(dval);
33340
0
}
33341
33342
0
int janet_checkuint(Janet x) {
33343
0
    if (!janet_checktype(x, JANET_NUMBER))
33344
0
        return 0;
33345
0
    double dval = janet_unwrap_number(x);
33346
0
    return janet_checkuintrange(dval);
33347
0
}
33348
33349
0
int janet_checkint64(Janet x) {
33350
0
    if (!janet_checktype(x, JANET_NUMBER))
33351
0
        return 0;
33352
0
    double dval = janet_unwrap_number(x);
33353
0
    return janet_checkint64range(dval);
33354
0
}
33355
33356
0
int janet_checkuint64(Janet x) {
33357
0
    if (!janet_checktype(x, JANET_NUMBER))
33358
0
        return 0;
33359
0
    double dval = janet_unwrap_number(x);
33360
0
    return janet_checkuint64range(dval);
33361
0
}
33362
33363
0
int janet_checkint16(Janet x) {
33364
0
    if (!janet_checktype(x, JANET_NUMBER))
33365
0
        return 0;
33366
0
    double dval = janet_unwrap_number(x);
33367
0
    return janet_checkint16range(dval);
33368
0
}
33369
33370
0
int janet_checkuint16(Janet x) {
33371
0
    if (!janet_checktype(x, JANET_NUMBER))
33372
0
        return 0;
33373
0
    double dval = janet_unwrap_number(x);
33374
0
    return janet_checkuint16range(dval);
33375
0
}
33376
33377
0
int janet_checksize(Janet x) {
33378
0
    if (!janet_checktype(x, JANET_NUMBER))
33379
0
        return 0;
33380
0
    double dval = janet_unwrap_number(x);
33381
0
    if (dval != (double)((size_t) dval)) return 0;
33382
0
    if (SIZE_MAX > JANET_INTMAX_INT64) {
33383
0
        return dval <= JANET_INTMAX_INT64;
33384
0
    } else {
33385
0
        return dval <= SIZE_MAX;
33386
0
    }
33387
0
}
33388
33389
0
JanetTable *janet_get_core_table(const char *name) {
33390
0
    JanetTable *env = janet_core_env(NULL);
33391
0
    Janet out = janet_wrap_nil();
33392
0
    JanetBindingType bt = janet_resolve(env, janet_csymbol(name), &out);
33393
0
    if (bt == JANET_BINDING_NONE) return NULL;
33394
0
    if (!janet_checktype(out, JANET_TABLE)) return NULL;
33395
0
    return janet_unwrap_table(out);
33396
0
}
33397
33398
/* Sort keys of a dictionary type */
33399
0
int32_t janet_sorted_keys(const JanetKV *dict, int32_t cap, int32_t *index_buffer) {
33400
33401
    /* First, put populated indices into index_buffer */
33402
0
    int32_t next_index = 0;
33403
0
    for (int32_t i = 0; i < cap; i++) {
33404
0
        if (!janet_checktype(dict[i].key, JANET_NIL)) {
33405
0
            index_buffer[next_index++] = i;
33406
0
        }
33407
0
    }
33408
33409
    /* Next, sort those (simple insertion sort here for now) */
33410
0
    for (int32_t i = 1; i < next_index; i++) {
33411
0
        int32_t index_to_insert = index_buffer[i];
33412
0
        Janet lhs = dict[index_to_insert].key;
33413
0
        for (int32_t j = i - 1; j >= 0; j--) {
33414
0
            index_buffer[j + 1] = index_buffer[j];
33415
0
            Janet rhs = dict[index_buffer[j]].key;
33416
0
            if (janet_compare(lhs, rhs) >= 0) {
33417
0
                index_buffer[j + 1] = index_to_insert;
33418
0
                break;
33419
0
            } else if (j == 0) {
33420
0
                index_buffer[0] = index_to_insert;
33421
0
            }
33422
0
        }
33423
0
    }
33424
33425
    /* Return number of indices found */
33426
0
    return next_index;
33427
33428
0
}
33429
33430
/* Clock shims for various platforms */
33431
#ifdef JANET_GETTIME
33432
#ifdef JANET_WINDOWS
33433
#include <profileapi.h>
33434
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
33435
    if (source == JANET_TIME_REALTIME) {
33436
        FILETIME ftime;
33437
        GetSystemTimeAsFileTime(&ftime);
33438
        int64_t wintime = (int64_t)(ftime.dwLowDateTime) | ((int64_t)(ftime.dwHighDateTime) << 32);
33439
        /* Windows epoch is January 1, 1601 apparently */
33440
        wintime -= 116444736000000000LL;
33441
        spec->tv_sec  = wintime / 10000000LL;
33442
        /* Resolution is 100 nanoseconds. */
33443
        spec->tv_nsec = wintime % 10000000LL * 100;
33444
    } else if (source == JANET_TIME_MONOTONIC) {
33445
        LARGE_INTEGER count;
33446
        LARGE_INTEGER perf_freq;
33447
        QueryPerformanceCounter(&count);
33448
        QueryPerformanceFrequency(&perf_freq);
33449
        spec->tv_sec = count.QuadPart / perf_freq.QuadPart;
33450
        spec->tv_nsec = (long)((count.QuadPart % perf_freq.QuadPart) * 1000000000 / perf_freq.QuadPart);
33451
    } else if (source == JANET_TIME_CPUTIME) {
33452
        FILETIME creationTime, exitTime, kernelTime, userTime;
33453
        GetProcessTimes(GetCurrentProcess(), &creationTime, &exitTime, &kernelTime, &userTime);
33454
        int64_t tmp = ((int64_t)userTime.dwHighDateTime << 32) + userTime.dwLowDateTime;
33455
        spec->tv_sec = tmp / 10000000LL;
33456
        spec->tv_nsec = tmp % 10000000LL * 100;
33457
    }
33458
    return 0;
33459
}
33460
/* clock_gettime() wasn't available on Mac until 10.12. */
33461
#elif defined(JANET_APPLE) && !defined(MAC_OS_X_VERSION_10_12)
33462
#include <mach/clock.h>
33463
#include <mach/mach.h>
33464
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
33465
    if (source == JANET_TIME_CPUTIME) {
33466
        clock_t tmp = clock();
33467
        spec->tv_sec = tmp / CLOCKS_PER_SEC;
33468
        spec->tv_nsec = ((tmp - (spec->tv_sec * CLOCKS_PER_SEC)) * 1000000000) / CLOCKS_PER_SEC;
33469
    } else {
33470
        clock_serv_t cclock;
33471
        mach_timespec_t mts;
33472
        clock_id_t cid = CALENDAR_CLOCK;
33473
        if (source == JANET_TIME_REALTIME) {
33474
            cid = CALENDAR_CLOCK;
33475
        } else if (source == JANET_TIME_MONOTONIC) {
33476
            cid = SYSTEM_CLOCK;
33477
        }
33478
        host_get_clock_service(mach_host_self(), cid, &cclock);
33479
        clock_get_time(cclock, &mts);
33480
        mach_port_deallocate(mach_task_self(), cclock);
33481
        spec->tv_sec = mts.tv_sec;
33482
        spec->tv_nsec = mts.tv_nsec;
33483
    }
33484
    return 0;
33485
}
33486
#else
33487
0
int janet_gettime(struct timespec *spec, enum JanetTimeSource source) {
33488
0
    clockid_t cid = CLOCK_REALTIME;
33489
0
    if (source == JANET_TIME_REALTIME) {
33490
0
        cid = CLOCK_REALTIME;
33491
0
    } else if (source == JANET_TIME_MONOTONIC) {
33492
0
        cid = CLOCK_MONOTONIC;
33493
0
    } else if (source == JANET_TIME_CPUTIME) {
33494
0
        cid = CLOCK_PROCESS_CPUTIME_ID;
33495
0
    }
33496
0
    return clock_gettime(cid, spec);
33497
0
}
33498
#endif
33499
#endif
33500
33501
/* Better strerror (thread-safe if available) */
33502
0
const char *janet_strerror(int e) {
33503
#ifdef JANET_WINDOWS
33504
    /* Microsoft strerror seems sane here and is thread safe by default */
33505
    return strerror(e);
33506
#elif defined(__GLIBC__)
33507
    /* See https://linux.die.net/man/3/strerror_r */
33508
0
    return strerror_r(e, janet_vm.strerror_buf, sizeof(janet_vm.strerror_buf));
33509
#else
33510
    strerror_r(e, janet_vm.strerror_buf, sizeof(janet_vm.strerror_buf));
33511
    return janet_vm.strerror_buf;
33512
#endif
33513
0
}
33514
33515
/* Setting C99 standard makes this not available, but it should
33516
 * work/link properly if we detect a BSD */
33517
#if defined(JANET_BSD) || defined(MAC_OS_X_VERSION_10_7)
33518
void arc4random_buf(void *buf, size_t nbytes);
33519
#endif
33520
33521
0
int janet_cryptorand(uint8_t *out, size_t n) {
33522
0
#ifndef JANET_NO_CRYPTORAND
33523
#ifdef JANET_WINDOWS
33524
    for (size_t i = 0; i < n; i += sizeof(unsigned int)) {
33525
        unsigned int v;
33526
        if (rand_s(&v))
33527
            return -1;
33528
        for (int32_t j = 0; (j < (int32_t) sizeof(unsigned int)) && (i + j < n); j++) {
33529
            out[i + j] = v & 0xff;
33530
            v = v >> 8;
33531
        }
33532
    }
33533
    return 0;
33534
#elif defined(JANET_BSD) || defined(MAC_OS_X_VERSION_10_7)
33535
    arc4random_buf(out, n);
33536
    return 0;
33537
#else
33538
    /* We should be able to call getrandom on linux, but it doesn't seem
33539
       to be uniformly supported on linux distros.
33540
       On Mac, arc4random_buf wasn't available on until 10.7.
33541
       In these cases, use this fallback path for now... */
33542
0
    int rc;
33543
0
    int randfd;
33544
0
    RETRY_EINTR(randfd, open("/dev/urandom", O_RDONLY | O_CLOEXEC));
33545
0
    if (randfd < 0)
33546
0
        return -1;
33547
0
    while (n > 0) {
33548
0
        ssize_t nread;
33549
0
        RETRY_EINTR(nread, read(randfd, out, n));
33550
0
        if (nread <= 0) {
33551
0
            RETRY_EINTR(rc, close(randfd));
33552
0
            return -1;
33553
0
        }
33554
0
        out += nread;
33555
0
        n -= nread;
33556
0
    }
33557
0
    RETRY_EINTR(rc, close(randfd));
33558
0
    return 0;
33559
0
#endif
33560
#else
33561
    (void) out;
33562
    (void) n;
33563
    return -1;
33564
#endif
33565
0
}
33566
33567
/* Dynamic library loading */
33568
33569
0
char *get_processed_name(const char *name) {
33570
0
    if (name[0] == '.') return (char *) name;
33571
0
    const char *c;
33572
0
    for (c = name; *c; c++) {
33573
0
        if (*c == '/') return (char *) name;
33574
0
    }
33575
0
    size_t l = (size_t)(c - name);
33576
0
    char *ret = janet_malloc(l + 3);
33577
0
    if (NULL == ret) {
33578
0
        JANET_OUT_OF_MEMORY;
33579
0
    }
33580
0
    ret[0] = '.';
33581
0
    ret[1] = '/';
33582
0
    memcpy(ret + 2, name, l + 1);
33583
0
    return ret;
33584
0
}
33585
33586
#if defined(JANET_NO_DYNAMIC_MODULES)
33587
33588
const char *error_clib(void) {
33589
    return "dynamic modules not supported";
33590
}
33591
33592
#else
33593
#if defined(JANET_WINDOWS)
33594
33595
static char error_clib_buf[256];
33596
char *error_clib(void) {
33597
    FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
33598
                   NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
33599
                   error_clib_buf, sizeof(error_clib_buf), NULL);
33600
    error_clib_buf[strlen(error_clib_buf) - 1] = '\0';
33601
    return error_clib_buf;
33602
}
33603
33604
Clib load_clib(const char *name) {
33605
    if (name == NULL) {
33606
        return GetModuleHandle(NULL);
33607
    } else {
33608
        return LoadLibrary(name);
33609
    }
33610
}
33611
33612
void free_clib(HINSTANCE clib) {
33613
    if (clib != GetModuleHandle(NULL)) {
33614
        FreeLibrary(clib);
33615
    }
33616
}
33617
33618
void *symbol_clib(HINSTANCE clib, const char *sym) {
33619
    if (clib != GetModuleHandle(NULL)) {
33620
        return GetProcAddress(clib, sym);
33621
    } else {
33622
        /* Look up symbols from all loaded modules */
33623
        HMODULE hMods[1024];
33624
        DWORD needed = 0;
33625
        if (EnumProcessModules(GetCurrentProcess(), hMods, sizeof(hMods), &needed)) {
33626
            needed /= sizeof(HMODULE);
33627
            for (DWORD i = 0; i < needed; i++) {
33628
                void *address = GetProcAddress(hMods[i], sym);
33629
                if (NULL != address) {
33630
                    return address;
33631
                }
33632
            }
33633
        } else {
33634
            janet_panicf("ffi: %s", error_clib());
33635
        }
33636
        return NULL;
33637
    }
33638
}
33639
33640
#endif
33641
#endif
33642
33643
/* Alloc function macro fills */
33644
0
void *(janet_malloc)(size_t size) {
33645
0
    return janet_malloc(size);
33646
0
}
33647
33648
0
void (janet_free)(void *ptr) {
33649
0
    janet_free(ptr);
33650
0
}
33651
33652
0
void *(janet_calloc)(size_t nmemb, size_t size) {
33653
0
    return janet_calloc(nmemb, size);
33654
0
}
33655
33656
0
void *(janet_realloc)(void *ptr, size_t size) {
33657
0
    return janet_realloc(ptr, size);
33658
0
}
33659
33660
33661
/* src/core/value.c */
33662
#line 0 "src/core/value.c"
33663
33664
/*
33665
* Copyright (c) 2025 Calvin Rose
33666
*
33667
* Permission is hereby granted, free of charge, to any person obtaining a copy
33668
* of this software and associated documentation files (the "Software"), to
33669
* deal in the Software without restriction, including without limitation the
33670
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
33671
* sell copies of the Software, and to permit persons to whom the Software is
33672
* furnished to do so, subject to the following conditions:
33673
*
33674
* The above copyright notice and this permission notice shall be included in
33675
* all copies or substantial portions of the Software.
33676
*
33677
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
33678
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
33679
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
33680
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33681
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
33682
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
33683
* IN THE SOFTWARE.
33684
*/
33685
33686
#ifndef JANET_AMALG
33687
#include "features.h"
33688
#include "util.h"
33689
#include "state.h"
33690
#include "gc.h"
33691
#include "fiber.h"
33692
#include <janet.h>
33693
#endif
33694
33695
#include <math.h>
33696
33697
714k
static void push_traversal_node(void *lhs, void *rhs, int32_t index2) {
33698
714k
    JanetTraversalNode node;
33699
714k
    node.self = (JanetGCObject *) lhs;
33700
714k
    node.other = (JanetGCObject *) rhs;
33701
714k
    node.index = 0;
33702
714k
    node.index2 = index2;
33703
714k
    int is_new = janet_vm.traversal_base == NULL;
33704
714k
    if (is_new || (janet_vm.traversal + 1 >= janet_vm.traversal_top)) {
33705
306
        size_t oldsize = is_new ? 0 : (janet_vm.traversal - janet_vm.traversal_base);
33706
306
        size_t newsize = 2 * oldsize + 1;
33707
306
        if (newsize < 128) {
33708
271
            newsize = 128;
33709
271
        }
33710
306
        JanetTraversalNode *tn = janet_realloc(janet_vm.traversal_base, newsize * sizeof(JanetTraversalNode));
33711
306
        if (tn == NULL) {
33712
0
            JANET_OUT_OF_MEMORY;
33713
0
        }
33714
306
        janet_vm.traversal_base = tn;
33715
306
        janet_vm.traversal_top = janet_vm.traversal_base + newsize;
33716
306
        janet_vm.traversal = janet_vm.traversal_base + oldsize;
33717
306
    }
33718
714k
    *(++janet_vm.traversal) = node;
33719
714k
}
33720
33721
/*
33722
 * Used for travsersing structs and tuples without recursion
33723
 * Returns:
33724
 * 0 - next node found
33725
 * 1 - early stop - lhs < rhs
33726
 * 2 - no next node found
33727
 * 3 - early stop - lhs > rhs
33728
 */
33729
2.73M
static int traversal_next(Janet *x, Janet *y) {
33730
2.73M
    JanetTraversalNode *t = janet_vm.traversal;
33731
3.40M
    while (t && t > janet_vm.traversal_base) {
33732
2.18M
        JanetGCObject *self = t->self;
33733
2.18M
        JanetTupleHead *tself = (JanetTupleHead *)self;
33734
2.18M
        JanetStructHead *sself = (JanetStructHead *)self;
33735
2.18M
        JanetGCObject *other = t->other;
33736
2.18M
        JanetTupleHead *tother = (JanetTupleHead *)other;
33737
2.18M
        JanetStructHead *sother = (JanetStructHead *)other;
33738
2.18M
        if ((self->flags & JANET_MEM_TYPEBITS) == JANET_MEMORY_TUPLE) {
33739
            /* Node is a tuple at index t->index */
33740
645k
            if (t->index < tself->length && t->index < tother->length) {
33741
476k
                int32_t index = t->index++;
33742
476k
                *x = tself->data[index];
33743
476k
                *y = tother->data[index];
33744
476k
                janet_vm.traversal = t;
33745
476k
                return 0;
33746
476k
            }
33747
168k
            if (t->index2 && tself->length != tother->length) {
33748
0
                return tself->length > tother->length ? 3 : 1;
33749
0
            }
33750
1.53M
        } else {
33751
            /* Node is a struct at index t->index: if t->index2 is true, we should return the values. */
33752
1.53M
            if (t->index2) {
33753
514k
                t->index2 = 0;
33754
514k
                int32_t index = t->index++;
33755
514k
                *x = sself->data[index].value;
33756
514k
                *y = sother->data[index].value;
33757
514k
                janet_vm.traversal = t;
33758
514k
                return 0;
33759
514k
            }
33760
1.02M
            for (int32_t i = t->index; i < sself->capacity; i++) {
33761
515k
                t->index2 = 1;
33762
515k
                *x = sself->data[t->index].key;
33763
515k
                *y = sother->data[t->index].key;
33764
515k
                janet_vm.traversal = t;
33765
515k
                return 0;
33766
515k
            }
33767
            /* Traverse prototype */
33768
508k
            JanetStruct sproto = sself->proto;
33769
508k
            JanetStruct oproto = sother->proto;
33770
508k
            if (sproto && !oproto) return 3;
33771
508k
            if (!sproto && oproto) return 1;
33772
508k
            if (oproto && sproto) {
33773
0
                *x = janet_wrap_struct(sproto);
33774
0
                *y = janet_wrap_struct(oproto);
33775
0
                janet_vm.traversal = t - 1;
33776
0
                return 0;
33777
0
            }
33778
508k
        }
33779
677k
        t--;
33780
677k
    }
33781
1.22M
    janet_vm.traversal = t;
33782
1.22M
    return 2;
33783
2.73M
}
33784
33785
/*
33786
 * Define a number of functions that can be used internally on ANY Janet.
33787
 */
33788
33789
0
Janet janet_next(Janet ds, Janet key) {
33790
0
    return janet_next_impl(ds, key, 0);
33791
0
}
33792
33793
0
Janet janet_next_impl(Janet ds, Janet key, int is_interpreter) {
33794
0
    JanetType t = janet_type(ds);
33795
0
    switch (t) {
33796
0
        default:
33797
0
            janet_panicf("expected iterable type, got %v", ds);
33798
0
        case JANET_TABLE:
33799
0
        case JANET_STRUCT: {
33800
0
            const JanetKV *start;
33801
0
            int32_t cap;
33802
0
            if (t == JANET_TABLE) {
33803
0
                JanetTable *tab = janet_unwrap_table(ds);
33804
0
                cap = tab->capacity;
33805
0
                start = tab->data;
33806
0
            } else {
33807
0
                JanetStruct st = janet_unwrap_struct(ds);
33808
0
                cap = janet_struct_capacity(st);
33809
0
                start = st;
33810
0
            }
33811
0
            const JanetKV *end = start + cap;
33812
0
            const JanetKV *kv = janet_checktype(key, JANET_NIL)
33813
0
                                ? start
33814
0
                                : janet_dict_find(start, cap, key) + 1;
33815
0
            while (kv < end) {
33816
0
                if (!janet_checktype(kv->key, JANET_NIL)) return kv->key;
33817
0
                kv++;
33818
0
            }
33819
0
            break;
33820
0
        }
33821
0
        case JANET_STRING:
33822
0
        case JANET_KEYWORD:
33823
0
        case JANET_SYMBOL:
33824
0
        case JANET_BUFFER:
33825
0
        case JANET_ARRAY:
33826
0
        case JANET_TUPLE: {
33827
0
            int32_t i;
33828
0
            if (janet_checktype(key, JANET_NIL)) {
33829
0
                i = 0;
33830
0
            } else if (janet_checkint(key)) {
33831
0
                i = janet_unwrap_integer(key) + 1;
33832
0
            } else {
33833
0
                break;
33834
0
            }
33835
0
            int32_t len;
33836
0
            if (t == JANET_BUFFER) {
33837
0
                len = janet_unwrap_buffer(ds)->count;
33838
0
            } else if (t == JANET_ARRAY) {
33839
0
                len = janet_unwrap_array(ds)->count;
33840
0
            } else if (t == JANET_TUPLE) {
33841
0
                len = janet_tuple_length(janet_unwrap_tuple(ds));
33842
0
            } else {
33843
0
                len = janet_string_length(janet_unwrap_string(ds));
33844
0
            }
33845
0
            if (i < len && i >= 0) {
33846
0
                return janet_wrap_integer(i);
33847
0
            }
33848
0
            break;
33849
0
        }
33850
0
        case JANET_ABSTRACT: {
33851
0
            JanetAbstract abst = janet_unwrap_abstract(ds);
33852
0
            const JanetAbstractType *at = janet_abstract_type(abst);
33853
0
            if (NULL == at->next) break;
33854
0
            return at->next(abst, key);
33855
0
        }
33856
0
        case JANET_FIBER: {
33857
0
            JanetFiber *child = janet_unwrap_fiber(ds);
33858
0
            Janet retreg;
33859
0
            JanetFiberStatus status = janet_fiber_status(child);
33860
0
            if (status == JANET_STATUS_ALIVE ||
33861
0
                    status == JANET_STATUS_DEAD ||
33862
0
                    status == JANET_STATUS_ERROR ||
33863
0
                    status == JANET_STATUS_USER0 ||
33864
0
                    status == JANET_STATUS_USER1 ||
33865
0
                    status == JANET_STATUS_USER2 ||
33866
0
                    status == JANET_STATUS_USER3 ||
33867
0
                    status == JANET_STATUS_USER4) {
33868
0
                return janet_wrap_nil();
33869
0
            }
33870
0
            janet_vm.fiber->child = child;
33871
0
            JanetSignal sig = janet_continue(child, janet_wrap_nil(), &retreg);
33872
0
            if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
33873
0
                if (is_interpreter) {
33874
0
                    janet_signalv(sig, retreg);
33875
0
                } else {
33876
0
                    janet_vm.fiber->child = NULL;
33877
0
                    janet_panicv(retreg);
33878
0
                }
33879
0
            }
33880
0
            janet_vm.fiber->child = NULL;
33881
0
            if (sig == JANET_SIGNAL_OK ||
33882
0
                    sig == JANET_SIGNAL_ERROR ||
33883
0
                    sig == JANET_SIGNAL_USER0 ||
33884
0
                    sig == JANET_SIGNAL_USER1 ||
33885
0
                    sig == JANET_SIGNAL_USER2 ||
33886
0
                    sig == JANET_SIGNAL_USER3 ||
33887
0
                    sig == JANET_SIGNAL_USER4) {
33888
                /* Fiber cannot be resumed, so discard last value. */
33889
0
                return janet_wrap_nil();
33890
0
            } else {
33891
0
                return janet_wrap_integer(0);
33892
0
            }
33893
0
        }
33894
0
    }
33895
0
    return janet_wrap_nil();
33896
0
}
33897
33898
/* Compare two abstract values */
33899
35.5k
static int janet_compare_abstract(JanetAbstract xx, JanetAbstract yy) {
33900
35.5k
    if (xx == yy) return 0;
33901
35.5k
    const JanetAbstractType *xt = janet_abstract_type(xx);
33902
35.5k
    const JanetAbstractType *yt = janet_abstract_type(yy);
33903
35.5k
    if (xt != yt) {
33904
1.49k
        return xt > yt ? 1 : -1;
33905
1.49k
    }
33906
34.0k
    if (xt->compare == NULL) {
33907
0
        return xx > yy ? 1 : -1;
33908
0
    }
33909
34.0k
    return xt->compare(xx, yy);
33910
34.0k
}
33911
33912
1.83M
int janet_equals(Janet x, Janet y) {
33913
1.83M
    janet_vm.traversal = janet_vm.traversal_base;
33914
2.67M
    do {
33915
2.67M
        if (janet_type(x) != janet_type(y)) return 0;
33916
2.49M
        switch (janet_type(x)) {
33917
581k
            case JANET_NIL:
33918
581k
                break;
33919
8.06k
            case JANET_BOOLEAN:
33920
8.06k
                if (janet_unwrap_boolean(x) != janet_unwrap_boolean(y)) return 0;
33921
7.18k
                break;
33922
7.18k
            case JANET_NUMBER:
33923
6.09k
                if (janet_unwrap_number(x) != janet_unwrap_number(y)) return 0;
33924
4.59k
                break;
33925
131k
            case JANET_STRING:
33926
131k
                if (!janet_string_equal(janet_unwrap_string(x), janet_unwrap_string(y))) return 0;
33927
129k
                break;
33928
129k
            case JANET_ABSTRACT:
33929
31.3k
                if (janet_compare_abstract(janet_unwrap_abstract(x), janet_unwrap_abstract(y))) return 0;
33930
19.8k
                break;
33931
1.32M
            default:
33932
1.32M
                if (janet_unwrap_pointer(x) != janet_unwrap_pointer(y)) return 0;
33933
347k
                break;
33934
347k
            case JANET_TUPLE: {
33935
127k
                const Janet *t1 = janet_unwrap_tuple(x);
33936
127k
                const Janet *t2 = janet_unwrap_tuple(y);
33937
127k
                if (t1 == t2) break;
33938
127k
                if (JANET_TUPLE_FLAG_BRACKETCTOR & (janet_tuple_flag(t1) ^ janet_tuple_flag(t2))) return 0;
33939
122k
                if (janet_tuple_hash(t1) != janet_tuple_hash(t2)) return 0;
33940
118k
                if (janet_tuple_length(t1) != janet_tuple_length(t2)) return 0;
33941
118k
                push_traversal_node(janet_tuple_head(t1), janet_tuple_head(t2), 0);
33942
118k
                break;
33943
118k
            }
33944
0
            break;
33945
292k
            case JANET_STRUCT: {
33946
292k
                const JanetKV *s1 = janet_unwrap_struct(x);
33947
292k
                const JanetKV *s2 = janet_unwrap_struct(y);
33948
292k
                if (s1 == s2) break;
33949
292k
                if (janet_struct_hash(s1) != janet_struct_hash(s2)) return 0;
33950
291k
                if (janet_struct_length(s1) != janet_struct_length(s2)) return 0;
33951
291k
                if (janet_struct_proto(s1) && !janet_struct_proto(s2)) return 0;
33952
291k
                if (!janet_struct_proto(s1) && janet_struct_proto(s2)) return 0;
33953
291k
                push_traversal_node(janet_struct_head(s1), janet_struct_head(s2), 0);
33954
291k
                break;
33955
291k
            }
33956
0
            break;
33957
2.49M
        }
33958
2.49M
    } while (!traversal_next(&x, &y));
33959
659k
    return 1;
33960
1.83M
}
33961
33962
7.66M
static uint64_t murmur64(uint64_t h) {
33963
7.66M
    h ^= h >> 33;
33964
7.66M
    h *= 0xff51afd7ed558ccdUL;
33965
7.66M
    h ^= h >> 33;
33966
7.66M
    h *= 0xc4ceb9fe1a85ec53UL;
33967
7.66M
    h ^= h >> 33;
33968
7.66M
    return h;
33969
7.66M
}
33970
33971
/* Computes a hash value for a function */
33972
23.3M
int32_t janet_hash(Janet x) {
33973
23.3M
    int32_t hash = 0;
33974
23.3M
    switch (janet_type(x)) {
33975
7.94M
        case JANET_NIL:
33976
7.94M
            hash = 0;
33977
7.94M
            break;
33978
21.9k
        case JANET_BOOLEAN:
33979
21.9k
            hash = janet_unwrap_boolean(x);
33980
21.9k
            break;
33981
1.76M
        case JANET_STRING:
33982
4.68M
        case JANET_SYMBOL:
33983
4.81M
        case JANET_KEYWORD:
33984
4.81M
            hash = janet_string_hash(janet_unwrap_string(x));
33985
4.81M
            break;
33986
1.91M
        case JANET_TUPLE:
33987
1.91M
            hash = janet_tuple_hash(janet_unwrap_tuple(x));
33988
1.91M
            hash += (janet_tuple_flag(janet_unwrap_tuple(x)) & JANET_TUPLE_FLAG_BRACKETCTOR) ? 1 : 0;
33989
1.91M
            break;
33990
884k
        case JANET_STRUCT:
33991
884k
            hash = janet_struct_hash(janet_unwrap_struct(x));
33992
884k
            break;
33993
32.7k
        case JANET_NUMBER: {
33994
32.7k
            union {
33995
32.7k
                double d;
33996
32.7k
                uint64_t u;
33997
32.7k
            } as;
33998
32.7k
            as.d = janet_unwrap_number(x);
33999
32.7k
            as.d += 0.0; /* normalize negative 0 */
34000
32.7k
            uint32_t lo = (uint32_t)(as.u & 0xFFFFFFFF);
34001
32.7k
            uint32_t hi = (uint32_t)(as.u >> 32);
34002
32.7k
            uint32_t hilo = (hi ^ lo) * 2654435769u;
34003
32.7k
            hash = (int32_t)((hilo << 16) | (hilo >> 16));
34004
32.7k
            break;
34005
4.68M
        }
34006
43.3k
        case JANET_ABSTRACT: {
34007
43.3k
            JanetAbstract xx = janet_unwrap_abstract(x);
34008
43.3k
            const JanetAbstractType *at = janet_abstract_type(xx);
34009
43.3k
            if (at->hash != NULL) {
34010
43.3k
                hash = at->hash(xx, janet_abstract_size(xx));
34011
43.3k
                break;
34012
43.3k
            }
34013
43.3k
        }
34014
        /* fallthrough */
34015
7.66M
        default:
34016
7.66M
            if (sizeof(double) == sizeof(void *)) {
34017
                /* Assuming 8 byte pointer (8 byte aligned) */
34018
7.66M
                uint64_t i = murmur64(janet_u64(x));
34019
7.66M
                hash = (int32_t)(i >> 32);
34020
7.66M
            } else {
34021
                /* Assuming 4 byte pointer (or smaller) */
34022
0
                uintptr_t diff = (uintptr_t) janet_unwrap_pointer(x);
34023
0
                uint32_t hilo = (uint32_t) diff * 2654435769u;
34024
0
                hash = (int32_t)((hilo << 16) | (hilo >> 16));
34025
0
            }
34026
7.66M
            break;
34027
23.3M
    }
34028
23.3M
    return hash;
34029
23.3M
}
34030
34031
/* Compares x to y. If they are equal returns 0. If x is less, returns -1.
34032
 * If y is less, returns 1. All types are comparable
34033
 * and should have strict ordering, excepts NaNs. */
34034
687k
int janet_compare(Janet x, Janet y) {
34035
687k
    janet_vm.traversal = janet_vm.traversal_base;
34036
687k
    int status;
34037
1.35M
    do {
34038
1.35M
        JanetType tx = janet_type(x);
34039
1.35M
        JanetType ty = janet_type(y);
34040
1.35M
        if (tx != ty) return tx < ty ? -1 : 1;
34041
1.23M
        switch (tx) {
34042
442k
            case JANET_NIL:
34043
442k
                break;
34044
424
            case JANET_BOOLEAN: {
34045
424
                int diff = janet_unwrap_boolean(x) - janet_unwrap_boolean(y);
34046
424
                if (diff) return diff;
34047
424
                break;
34048
424
            }
34049
1.97k
            case JANET_NUMBER: {
34050
1.97k
                double xx = janet_unwrap_number(x);
34051
1.97k
                double yy = janet_unwrap_number(y);
34052
1.97k
                if (xx == yy) {
34053
1.63k
                    break;
34054
1.63k
                } else {
34055
337
                    return (xx < yy) ? -1 : 1;
34056
337
                }
34057
1.97k
            }
34058
133k
            case JANET_STRING:
34059
479k
            case JANET_SYMBOL:
34060
480k
            case JANET_KEYWORD: {
34061
480k
                int diff = janet_string_compare(janet_unwrap_string(x), janet_unwrap_string(y));
34062
480k
                if (diff) return diff;
34063
478k
                break;
34064
480k
            }
34065
478k
            case JANET_ABSTRACT: {
34066
4.17k
                int diff = janet_compare_abstract(janet_unwrap_abstract(x), janet_unwrap_abstract(y));
34067
4.17k
                if (diff) return diff;
34068
3.46k
                break;
34069
4.17k
            }
34070
3.46k
            default: {
34071
26
                if (janet_unwrap_pointer(x) == janet_unwrap_pointer(y)) {
34072
0
                    break;
34073
26
                } else {
34074
26
                    return janet_unwrap_pointer(x) > janet_unwrap_pointer(y) ? 1 : -1;
34075
26
                }
34076
26
            }
34077
84.0k
            case JANET_TUPLE: {
34078
84.0k
                const Janet *lhs = janet_unwrap_tuple(x);
34079
84.0k
                const Janet *rhs = janet_unwrap_tuple(y);
34080
84.0k
                if (JANET_TUPLE_FLAG_BRACKETCTOR & (janet_tuple_flag(lhs) ^ janet_tuple_flag(rhs))) {
34081
0
                    return (janet_tuple_flag(lhs) & JANET_TUPLE_FLAG_BRACKETCTOR) ? 1 : -1;
34082
0
                }
34083
84.0k
                push_traversal_node(janet_tuple_head(lhs), janet_tuple_head(rhs), 1);
34084
84.0k
                break;
34085
84.0k
            }
34086
220k
            case JANET_STRUCT: {
34087
220k
                const JanetKV *lhs = janet_unwrap_struct(x);
34088
220k
                const JanetKV *rhs = janet_unwrap_struct(y);
34089
220k
                int32_t llen = janet_struct_capacity(lhs);
34090
220k
                int32_t rlen = janet_struct_capacity(rhs);
34091
220k
                int32_t lhash = janet_struct_hash(lhs);
34092
220k
                int32_t rhash = janet_struct_hash(rhs);
34093
220k
                if (llen < rlen) return -1;
34094
219k
                if (llen > rlen) return 1;
34095
219k
                if (lhash < rhash) return -1;
34096
219k
                if (lhash > rhash) return 1;
34097
219k
                push_traversal_node(janet_struct_head(lhs), janet_struct_head(rhs), 0);
34098
219k
                break;
34099
219k
            }
34100
1.23M
        }
34101
1.23M
    } while (!(status = traversal_next(&x, &y)));
34102
564k
    return status - 2;
34103
687k
}
34104
34105
0
static int32_t getter_checkint(JanetType type, Janet key, int32_t max) {
34106
0
    if (!janet_checkint(key)) goto bad;
34107
0
    int32_t ret = janet_unwrap_integer(key);
34108
0
    if (ret < 0) goto bad;
34109
0
    if (ret >= max) goto bad;
34110
0
    return ret;
34111
0
bad:
34112
0
    janet_panicf("expected integer key for %s in range [0, %d), got %v", janet_type_names[type], max, key);
34113
0
}
34114
34115
/* Gets a value and returns. Can panic. */
34116
0
Janet janet_in(Janet ds, Janet key) {
34117
0
    Janet value;
34118
0
    JanetType type = janet_type(ds);
34119
0
    switch (type) {
34120
0
        default:
34121
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
34122
0
            break;
34123
0
        case JANET_STRUCT:
34124
0
            value = janet_struct_get(janet_unwrap_struct(ds), key);
34125
0
            break;
34126
0
        case JANET_TABLE:
34127
0
            value = janet_table_get(janet_unwrap_table(ds), key);
34128
0
            break;
34129
0
        case JANET_ARRAY: {
34130
0
            JanetArray *array = janet_unwrap_array(ds);
34131
0
            int32_t index = getter_checkint(type, key, array->count);
34132
0
            value = array->data[index];
34133
0
            break;
34134
0
        }
34135
0
        case JANET_TUPLE: {
34136
0
            const Janet *tuple = janet_unwrap_tuple(ds);
34137
0
            int32_t len = janet_tuple_length(tuple);
34138
0
            value = tuple[getter_checkint(type, key, len)];
34139
0
            break;
34140
0
        }
34141
0
        case JANET_BUFFER: {
34142
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
34143
0
            int32_t index = getter_checkint(type, key, buffer->count);
34144
0
            value = janet_wrap_integer(buffer->data[index]);
34145
0
            break;
34146
0
        }
34147
0
        case JANET_STRING:
34148
0
        case JANET_SYMBOL:
34149
0
        case JANET_KEYWORD: {
34150
0
            const uint8_t *str = janet_unwrap_string(ds);
34151
0
            int32_t index = getter_checkint(type, key, janet_string_length(str));
34152
0
            value = janet_wrap_integer(str[index]);
34153
0
            break;
34154
0
        }
34155
0
        case JANET_ABSTRACT: {
34156
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
34157
0
            if (type->get) {
34158
0
                if (!(type->get)(janet_unwrap_abstract(ds), key, &value))
34159
0
                    janet_panicf("key %v not found in %v ", key, ds);
34160
0
            } else {
34161
0
                janet_panicf("no getter for %v ", ds);
34162
0
            }
34163
0
            break;
34164
0
        }
34165
0
        case JANET_FIBER: {
34166
            /* Bit of a hack to allow iterating over fibers. */
34167
0
            if (janet_equals(key, janet_wrap_integer(0))) {
34168
0
                return janet_unwrap_fiber(ds)->last_value;
34169
0
            } else {
34170
0
                janet_panicf("expected key 0, got %v", key);
34171
0
            }
34172
0
        }
34173
0
    }
34174
0
    return value;
34175
0
}
34176
34177
0
Janet janet_get(Janet ds, Janet key) {
34178
0
    JanetType t = janet_type(ds);
34179
0
    switch (t) {
34180
0
        default:
34181
0
            return janet_wrap_nil();
34182
0
        case JANET_STRING:
34183
0
        case JANET_SYMBOL:
34184
0
        case JANET_KEYWORD: {
34185
0
            if (!janet_checkint(key)) return janet_wrap_nil();
34186
0
            int32_t index = janet_unwrap_integer(key);
34187
0
            if (index < 0) return janet_wrap_nil();
34188
0
            const uint8_t *str = janet_unwrap_string(ds);
34189
0
            if (index >= janet_string_length(str)) return janet_wrap_nil();
34190
0
            return janet_wrap_integer(str[index]);
34191
0
        }
34192
0
        case JANET_ABSTRACT: {
34193
0
            Janet value;
34194
0
            void *abst = janet_unwrap_abstract(ds);
34195
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(abst);
34196
0
            if (!type->get) return janet_wrap_nil();
34197
0
            if ((type->get)(abst, key, &value))
34198
0
                return value;
34199
0
            return janet_wrap_nil();
34200
0
        }
34201
0
        case JANET_ARRAY:
34202
0
        case JANET_TUPLE:
34203
0
        case JANET_BUFFER: {
34204
0
            if (!janet_checkint(key)) return janet_wrap_nil();
34205
0
            int32_t index = janet_unwrap_integer(key);
34206
0
            if (index < 0) return janet_wrap_nil();
34207
0
            if (t == JANET_ARRAY) {
34208
0
                JanetArray *a = janet_unwrap_array(ds);
34209
0
                if (index >= a->count) return janet_wrap_nil();
34210
0
                return a->data[index];
34211
0
            } else if (t == JANET_BUFFER) {
34212
0
                JanetBuffer *b = janet_unwrap_buffer(ds);
34213
0
                if (index >= b->count) return janet_wrap_nil();
34214
0
                return janet_wrap_integer(b->data[index]);
34215
0
            } else {
34216
0
                const Janet *t = janet_unwrap_tuple(ds);
34217
0
                if (index >= janet_tuple_length(t)) return janet_wrap_nil();
34218
0
                return t[index];
34219
0
            }
34220
0
        }
34221
0
        case JANET_TABLE: {
34222
0
            return janet_table_get(janet_unwrap_table(ds), key);
34223
0
        }
34224
0
        case JANET_STRUCT: {
34225
0
            const JanetKV *st = janet_unwrap_struct(ds);
34226
0
            return janet_struct_get(st, key);
34227
0
        }
34228
0
        case JANET_FIBER: {
34229
            /* Bit of a hack to allow iterating over fibers. */
34230
0
            if (janet_equals(key, janet_wrap_integer(0))) {
34231
0
                return janet_unwrap_fiber(ds)->last_value;
34232
0
            } else {
34233
0
                return janet_wrap_nil();
34234
0
            }
34235
0
        }
34236
0
    }
34237
0
}
34238
34239
0
Janet janet_getindex(Janet ds, int32_t index) {
34240
0
    Janet value;
34241
0
    if (index < 0) janet_panic("expected non-negative index");
34242
0
    switch (janet_type(ds)) {
34243
0
        default:
34244
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, ds);
34245
0
            break;
34246
0
        case JANET_STRING:
34247
0
        case JANET_SYMBOL:
34248
0
        case JANET_KEYWORD:
34249
0
            if (index >= janet_string_length(janet_unwrap_string(ds))) {
34250
0
                value = janet_wrap_nil();
34251
0
            } else {
34252
0
                value = janet_wrap_integer(janet_unwrap_string(ds)[index]);
34253
0
            }
34254
0
            break;
34255
0
        case JANET_ARRAY:
34256
0
            if (index >= janet_unwrap_array(ds)->count) {
34257
0
                value = janet_wrap_nil();
34258
0
            } else {
34259
0
                value = janet_unwrap_array(ds)->data[index];
34260
0
            }
34261
0
            break;
34262
0
        case JANET_BUFFER:
34263
0
            if (index >= janet_unwrap_buffer(ds)->count) {
34264
0
                value = janet_wrap_nil();
34265
0
            } else {
34266
0
                value = janet_wrap_integer(janet_unwrap_buffer(ds)->data[index]);
34267
0
            }
34268
0
            break;
34269
0
        case JANET_TUPLE:
34270
0
            if (index >= janet_tuple_length(janet_unwrap_tuple(ds))) {
34271
0
                value = janet_wrap_nil();
34272
0
            } else {
34273
0
                value = janet_unwrap_tuple(ds)[index];
34274
0
            }
34275
0
            break;
34276
0
        case JANET_TABLE:
34277
0
            value = janet_table_get(janet_unwrap_table(ds), janet_wrap_integer(index));
34278
0
            break;
34279
0
        case JANET_STRUCT:
34280
0
            value = janet_struct_get(janet_unwrap_struct(ds), janet_wrap_integer(index));
34281
0
            break;
34282
0
        case JANET_ABSTRACT: {
34283
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
34284
0
            if (type->get) {
34285
0
                if (!(type->get)(janet_unwrap_abstract(ds), janet_wrap_integer(index), &value))
34286
0
                    value = janet_wrap_nil();
34287
0
            } else {
34288
0
                janet_panicf("no getter for %v ", ds);
34289
0
            }
34290
0
            break;
34291
0
        }
34292
0
        case JANET_FIBER: {
34293
0
            if (index == 0) {
34294
0
                value = janet_unwrap_fiber(ds)->last_value;
34295
0
            } else {
34296
0
                value = janet_wrap_nil();
34297
0
            }
34298
0
            break;
34299
0
        }
34300
0
    }
34301
0
    return value;
34302
0
}
34303
34304
0
int32_t janet_length(Janet x) {
34305
0
    switch (janet_type(x)) {
34306
0
        default:
34307
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
34308
0
        case JANET_STRING:
34309
0
        case JANET_SYMBOL:
34310
0
        case JANET_KEYWORD:
34311
0
            return janet_string_length(janet_unwrap_string(x));
34312
0
        case JANET_ARRAY:
34313
0
            return janet_unwrap_array(x)->count;
34314
0
        case JANET_BUFFER:
34315
0
            return janet_unwrap_buffer(x)->count;
34316
0
        case JANET_TUPLE:
34317
0
            return janet_tuple_length(janet_unwrap_tuple(x));
34318
0
        case JANET_STRUCT:
34319
0
            return janet_struct_length(janet_unwrap_struct(x));
34320
0
        case JANET_TABLE:
34321
0
            return janet_unwrap_table(x)->count;
34322
0
        case JANET_ABSTRACT: {
34323
0
            void *abst = janet_unwrap_abstract(x);
34324
0
            const JanetAbstractType *type = janet_abstract_type(abst);
34325
0
            if (type->length != NULL) {
34326
0
                size_t len = type->length(abst, janet_abstract_size(abst));
34327
0
                if (len > INT32_MAX) {
34328
0
                    janet_panicf("invalid integer length %u", len);
34329
0
                }
34330
0
                return (int32_t)(len);
34331
0
            }
34332
0
            Janet argv[1] = { x };
34333
0
            Janet len = janet_mcall("length", 1, argv);
34334
0
            if (!janet_checkint(len))
34335
0
                janet_panicf("invalid integer length %v", len);
34336
0
            return janet_unwrap_integer(len);
34337
0
        }
34338
0
    }
34339
0
}
34340
34341
0
Janet janet_lengthv(Janet x) {
34342
0
    switch (janet_type(x)) {
34343
0
        default:
34344
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_LENGTHABLE, x);
34345
0
        case JANET_STRING:
34346
0
        case JANET_SYMBOL:
34347
0
        case JANET_KEYWORD:
34348
0
            return janet_wrap_integer(janet_string_length(janet_unwrap_string(x)));
34349
0
        case JANET_ARRAY:
34350
0
            return janet_wrap_integer(janet_unwrap_array(x)->count);
34351
0
        case JANET_BUFFER:
34352
0
            return janet_wrap_integer(janet_unwrap_buffer(x)->count);
34353
0
        case JANET_TUPLE:
34354
0
            return janet_wrap_integer(janet_tuple_length(janet_unwrap_tuple(x)));
34355
0
        case JANET_STRUCT:
34356
0
            return janet_wrap_integer(janet_struct_length(janet_unwrap_struct(x)));
34357
0
        case JANET_TABLE:
34358
0
            return janet_wrap_integer(janet_unwrap_table(x)->count);
34359
0
        case JANET_ABSTRACT: {
34360
0
            void *abst = janet_unwrap_abstract(x);
34361
0
            const JanetAbstractType *type = janet_abstract_type(abst);
34362
0
            if (type->length != NULL) {
34363
0
                size_t len = type->length(abst, janet_abstract_size(abst));
34364
                /* If len is always less then double, we can never overflow */
34365
#ifdef JANET_32
34366
                return janet_wrap_number(len);
34367
#else
34368
0
                if (len < (size_t) JANET_INTMAX_INT64) {
34369
0
                    return janet_wrap_number((double) len);
34370
0
                } else {
34371
0
                    janet_panicf("integer length %u too large", len);
34372
0
                }
34373
0
#endif
34374
0
            }
34375
0
            Janet argv[1] = { x };
34376
0
            return janet_mcall("length", 1, argv);
34377
0
        }
34378
0
    }
34379
0
}
34380
34381
0
void janet_putindex(Janet ds, int32_t index, Janet value) {
34382
0
    switch (janet_type(ds)) {
34383
0
        default:
34384
0
            janet_panicf("expected %T, got %v",
34385
0
                         JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
34386
0
        case JANET_ARRAY: {
34387
0
            JanetArray *array = janet_unwrap_array(ds);
34388
0
            if (index >= array->count) {
34389
0
                janet_array_ensure(array, index + 1, 2);
34390
0
                array->count = index + 1;
34391
0
            }
34392
0
            array->data[index] = value;
34393
0
            break;
34394
0
        }
34395
0
        case JANET_BUFFER: {
34396
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
34397
0
            if (!janet_checkint(value))
34398
0
                janet_panicf("can only put integers in buffers, got %v", value);
34399
0
            if (index >= buffer->count) {
34400
0
                janet_buffer_ensure(buffer, index + 1, 2);
34401
0
                buffer->count = index + 1;
34402
0
            }
34403
0
            buffer->data[index] = (uint8_t)(janet_unwrap_integer(value) & 0xFF);
34404
0
            break;
34405
0
        }
34406
0
        case JANET_TABLE: {
34407
0
            JanetTable *table = janet_unwrap_table(ds);
34408
0
            janet_table_put(table, janet_wrap_integer(index), value);
34409
0
            break;
34410
0
        }
34411
0
        case JANET_ABSTRACT: {
34412
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
34413
0
            if (type->put) {
34414
0
                (type->put)(janet_unwrap_abstract(ds), janet_wrap_integer(index), value);
34415
0
            } else {
34416
0
                janet_panicf("no setter for %v ", ds);
34417
0
            }
34418
0
            break;
34419
0
        }
34420
0
    }
34421
0
}
34422
34423
0
void janet_put(Janet ds, Janet key, Janet value) {
34424
0
    JanetType type = janet_type(ds);
34425
0
    switch (type) {
34426
0
        default:
34427
0
            janet_panicf("expected %T, got %v",
34428
0
                         JANET_TFLAG_ARRAY | JANET_TFLAG_BUFFER | JANET_TFLAG_TABLE, ds);
34429
0
        case JANET_ARRAY: {
34430
0
            JanetArray *array = janet_unwrap_array(ds);
34431
0
            int32_t index = getter_checkint(type, key, INT32_MAX - 1);
34432
0
            if (index >= array->count) {
34433
0
                janet_array_setcount(array, index + 1);
34434
0
            }
34435
0
            array->data[index] = value;
34436
0
            break;
34437
0
        }
34438
0
        case JANET_BUFFER: {
34439
0
            JanetBuffer *buffer = janet_unwrap_buffer(ds);
34440
0
            int32_t index = getter_checkint(type, key, INT32_MAX - 1);
34441
0
            if (!janet_checkint(value))
34442
0
                janet_panicf("can only put integers in buffers, got %v", value);
34443
0
            if (index >= buffer->count) {
34444
0
                janet_buffer_setcount(buffer, index + 1);
34445
0
            }
34446
0
            buffer->data[index] = (uint8_t)(janet_unwrap_integer(value) & 0xFF);
34447
0
            break;
34448
0
        }
34449
0
        case JANET_TABLE:
34450
0
            janet_table_put(janet_unwrap_table(ds), key, value);
34451
0
            break;
34452
0
        case JANET_ABSTRACT: {
34453
0
            JanetAbstractType *type = (JanetAbstractType *)janet_abstract_type(janet_unwrap_abstract(ds));
34454
0
            if (type->put) {
34455
0
                (type->put)(janet_unwrap_abstract(ds), key, value);
34456
0
            } else {
34457
0
                janet_panicf("no setter for %v ", ds);
34458
0
            }
34459
0
            break;
34460
0
        }
34461
0
    }
34462
0
}
34463
34464
34465
/* src/core/vector.c */
34466
#line 0 "src/core/vector.c"
34467
34468
/*
34469
* Copyright (c) 2025 Calvin Rose
34470
*
34471
* Permission is hereby granted, free of charge, to any person obtaining a copy
34472
* of this software and associated documentation files (the "Software"), to
34473
* deal in the Software without restriction, including without limitation the
34474
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
34475
* sell copies of the Software, and to permit persons to whom the Software is
34476
* furnished to do so, subject to the following conditions:
34477
*
34478
* The above copyright notice and this permission notice shall be included in
34479
* all copies or substantial portions of the Software.
34480
*
34481
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34482
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34483
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34484
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34485
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
34486
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
34487
* IN THE SOFTWARE.
34488
*/
34489
34490
#ifndef JANET_AMALG
34491
#include "features.h"
34492
#include "vector.h"
34493
#include "util.h"
34494
#endif
34495
34496
/* Grow the buffer dynamically. Used for push operations. */
34497
0
void *janet_v_grow(void *v, int32_t increment, int32_t itemsize) {
34498
0
    int32_t dbl_cur = (NULL != v) ? 2 * janet_v__cap(v) : 0;
34499
0
    int32_t min_needed = janet_v_count(v) + increment;
34500
0
    int32_t m = dbl_cur > min_needed ? dbl_cur : min_needed;
34501
0
    size_t newsize = ((size_t) itemsize) * m + sizeof(int32_t) * 2;
34502
0
    int32_t *p = (int32_t *) janet_srealloc(v ? janet_v__raw(v) : 0, newsize);
34503
0
    if (!v) p[1] = 0;
34504
0
    p[0] = m;
34505
0
    return p + 2;
34506
0
}
34507
34508
/* Convert a buffer to normal allocated memory (forget capacity) */
34509
0
void *janet_v_flattenmem(void *v, int32_t itemsize) {
34510
0
    char *p;
34511
0
    if (NULL == v) return NULL;
34512
0
    size_t size = (size_t) itemsize * janet_v__cnt(v);
34513
0
    p = janet_malloc(size);
34514
0
    if (NULL != p) {
34515
0
        safe_memcpy(p, v, size);
34516
0
        return p;
34517
0
    } else {
34518
0
        JANET_OUT_OF_MEMORY;
34519
0
    }
34520
0
}
34521
34522
34523
34524
/* src/core/vm.c */
34525
#line 0 "src/core/vm.c"
34526
34527
/*
34528
* Copyright (c) 2025 Calvin Rose
34529
*
34530
* Permission is hereby granted, free of charge, to any person obtaining a copy
34531
* of this software and associated documentation files (the "Software"), to
34532
* deal in the Software without restriction, including without limitation the
34533
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
34534
* sell copies of the Software, and to permit persons to whom the Software is
34535
* furnished to do so, subject to the following conditions:
34536
*
34537
* The above copyright notice and this permission notice shall be included in
34538
* all copies or substantial portions of the Software.
34539
*
34540
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34541
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
34542
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
34543
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34544
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
34545
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
34546
* IN THE SOFTWARE.
34547
*/
34548
34549
#ifndef JANET_AMALG
34550
#include "features.h"
34551
#include <janet.h>
34552
#include "state.h"
34553
#include "fiber.h"
34554
#include "gc.h"
34555
#include "symcache.h"
34556
#include "util.h"
34557
#endif
34558
34559
#include <math.h>
34560
34561
/* Virtual registers
34562
 *
34563
 * One instruction word
34564
 * CC | BB | AA | OP
34565
 * DD | DD | DD | OP
34566
 * EE | EE | AA | OP
34567
 */
34568
0
#define A ((*pc >> 8)  & 0xFF)
34569
0
#define B ((*pc >> 16) & 0xFF)
34570
0
#define C (*pc >> 24)
34571
0
#define D (*pc >> 8)
34572
0
#define E (*pc >> 16)
34573
34574
/* Signed interpretations of registers */
34575
0
#define CS (*((int32_t *)pc) >> 24)
34576
0
#define DS (*((int32_t *)pc) >> 8)
34577
0
#define ES (*((int32_t *)pc) >> 16)
34578
34579
/* How we dispatch instructions. By default, we use
34580
 * a switch inside an infinite loop. For GCC/clang, we use
34581
 * computed gotos. */
34582
#if defined(__GNUC__) && !defined(__EMSCRIPTEN__)
34583
#define JANET_USE_COMPUTED_GOTOS
34584
#endif
34585
34586
#ifdef JANET_USE_COMPUTED_GOTOS
34587
0
#define VM_START() { goto *op_lookup[first_opcode];
34588
0
#define VM_END() }
34589
0
#define VM_OP(op) label_##op :
34590
0
#define VM_DEFAULT() label_unknown_op:
34591
0
#define vm_next() goto *op_lookup[*pc & 0xFF]
34592
0
#define opcode (*pc & 0xFF)
34593
#else
34594
#define VM_START() uint8_t opcode = first_opcode; for (;;) {switch(opcode) {
34595
#define VM_END() }}
34596
#define VM_OP(op) case op :
34597
#define VM_DEFAULT() default:
34598
#define vm_next() opcode = *pc & 0xFF; continue
34599
#endif
34600
34601
/* Commit and restore VM state before possible longjmp */
34602
0
#define vm_commit() do { janet_stack_frame(stack)->pc = pc; } while (0)
34603
0
#define vm_restore() do { \
34604
0
    stack = fiber->data + fiber->frame; \
34605
0
    pc = janet_stack_frame(stack)->pc; \
34606
0
    func = janet_stack_frame(stack)->func; \
34607
0
} while (0)
34608
0
#define vm_return(sig, val) do { \
34609
0
    janet_vm.return_reg[0] = (val); \
34610
0
    vm_commit(); \
34611
0
    return (sig); \
34612
0
} while (0)
34613
0
#define vm_return_no_restore(sig, val) do { \
34614
0
    janet_vm.return_reg[0] = (val); \
34615
0
    return (sig); \
34616
0
} while (0)
34617
34618
/* Next instruction variations */
34619
0
#define maybe_collect() do {\
34620
0
    if (janet_vm.next_collection >= janet_vm.gc_interval) janet_collect(); } while (0)
34621
0
#define vm_checkgc_next() maybe_collect(); vm_next()
34622
0
#define vm_pcnext() pc++; vm_next()
34623
0
#define vm_checkgc_pcnext() maybe_collect(); vm_pcnext()
34624
34625
/* Handle certain errors in main vm loop */
34626
0
#define vm_throw(e) do { vm_commit(); janet_panic(e); } while (0)
34627
0
#define vm_assert(cond, e) do {if (!(cond)) vm_throw((e)); } while (0)
34628
0
#define vm_assert_type(X, T) do { \
34629
0
    if (!(janet_checktype((X), (T)))) { \
34630
0
        vm_commit(); \
34631
0
        janet_panicf("expected %T, got %v", (1 << (T)), (X)); \
34632
0
    } \
34633
0
} while (0)
34634
0
#define vm_assert_types(X, TS) do { \
34635
0
    if (!(janet_checktypes((X), (TS)))) { \
34636
0
        vm_commit(); \
34637
0
        janet_panicf("expected %T, got %v", (TS), (X)); \
34638
0
    } \
34639
0
} while (0)
34640
#ifdef JANET_NO_INTERPRETER_INTERRUPT
34641
#define vm_maybe_auto_suspend(COND)
34642
#else
34643
0
#define vm_maybe_auto_suspend(COND) do { \
34644
0
    if ((COND) && janet_atomic_load_relaxed(&janet_vm.auto_suspend)) { \
34645
0
        fiber->flags |= (JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP); \
34646
0
        vm_return(JANET_SIGNAL_INTERRUPT, janet_wrap_nil()); \
34647
0
    } \
34648
0
} while (0)
34649
#endif
34650
34651
/* Templates for certain patterns in opcodes */
34652
#define vm_binop_immediate(op)\
34653
0
    {\
34654
0
        Janet op1 = stack[B];\
34655
0
        if (!janet_checktype(op1, JANET_NUMBER)) {\
34656
0
            vm_commit();\
34657
0
            Janet _argv[2] = { op1, janet_wrap_number(CS) };\
34658
0
            stack[A] = janet_mcall(#op, 2, _argv);\
34659
0
            vm_checkgc_pcnext();\
34660
0
        } else {\
34661
0
            double x1 = janet_unwrap_number(op1);\
34662
0
            stack[A] = janet_wrap_number(x1 op CS);\
34663
0
            vm_pcnext();\
34664
0
        }\
34665
0
    }
34666
#define _vm_bitop_immediate(op, type1, rangecheck, msg)\
34667
0
    {\
34668
0
        Janet op1 = stack[B];\
34669
0
        if (!janet_checktype(op1, JANET_NUMBER)) {\
34670
0
            vm_commit();\
34671
0
            Janet _argv[2] = { op1, janet_wrap_number(CS) };\
34672
0
            stack[A] = janet_mcall(#op, 2, _argv);\
34673
0
            vm_checkgc_pcnext();\
34674
0
        } else {\
34675
0
            double y1 = janet_unwrap_number(op1);\
34676
0
            if (!rangecheck(y1)) { vm_commit(); janet_panicf("value %v out of range for " msg, op1); }\
34677
0
            type1 x1 = (type1) y1;\
34678
0
            stack[A] = janet_wrap_number((type1) (x1 op CS));\
34679
0
            vm_pcnext();\
34680
0
        }\
34681
0
    }
34682
0
#define vm_bitop_immediate(op) _vm_bitop_immediate(op, int32_t, janet_checkintrange, "32-bit signed integers");
34683
0
#define vm_bitopu_immediate(op) _vm_bitop_immediate(op, uint32_t, janet_checkuintrange, "32-bit unsigned integers");
34684
#define _vm_binop(op, wrap)\
34685
0
    {\
34686
0
        Janet op1 = stack[B];\
34687
0
        Janet op2 = stack[C];\
34688
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
34689
0
            double x1 = janet_unwrap_number(op1);\
34690
0
            double x2 = janet_unwrap_number(op2);\
34691
0
            stack[A] = wrap(x1 op x2);\
34692
0
            vm_pcnext();\
34693
0
        } else {\
34694
0
            vm_commit();\
34695
0
            stack[A] = janet_binop_call(#op, "r" #op, op1, op2);\
34696
0
            vm_checkgc_pcnext();\
34697
0
        }\
34698
0
    }
34699
0
#define vm_binop(op) _vm_binop(op, janet_wrap_number)
34700
#define _vm_bitop(op, type1, rangecheck, msg)\
34701
0
    {\
34702
0
        Janet op1 = stack[B];\
34703
0
        Janet op2 = stack[C];\
34704
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
34705
0
            double y1 = janet_unwrap_number(op1);\
34706
0
            double y2 = janet_unwrap_number(op2);\
34707
0
            if (!rangecheck(y1)) { vm_commit(); janet_panicf("value %v out of range for " msg, op1); }\
34708
0
            if (!janet_checkintrange(y2)) { vm_commit(); janet_panicf("rhs must be valid 32-bit signed integer, got %f", op2); }\
34709
0
            type1 x1 = (type1) y1;\
34710
0
            int32_t x2 = (int32_t) y2;\
34711
0
            stack[A] = janet_wrap_number((type1) (x1 op x2));\
34712
0
            vm_pcnext();\
34713
0
        } else {\
34714
0
            vm_commit();\
34715
0
            stack[A] = janet_binop_call(#op, "r" #op, op1, op2);\
34716
0
            vm_checkgc_pcnext();\
34717
0
        }\
34718
0
    }
34719
0
#define vm_bitop(op) _vm_bitop(op, int32_t, janet_checkintrange, "32-bit signed integers")
34720
0
#define vm_bitopu(op) _vm_bitop(op, uint32_t, janet_checkuintrange, "32-bit unsigned integers")
34721
#define vm_compop(op) \
34722
0
    {\
34723
0
        Janet op1 = stack[B];\
34724
0
        Janet op2 = stack[C];\
34725
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {\
34726
0
            double x1 = janet_unwrap_number(op1);\
34727
0
            double x2 = janet_unwrap_number(op2);\
34728
0
            stack[A] = janet_wrap_boolean(x1 op x2);\
34729
0
            vm_pcnext();\
34730
0
        } else {\
34731
0
            vm_commit();\
34732
0
            stack[A] = janet_wrap_boolean(janet_compare(op1, op2) op 0);\
34733
0
            vm_checkgc_pcnext();\
34734
0
        }\
34735
0
    }
34736
#define vm_compop_imm(op) \
34737
0
    {\
34738
0
        Janet op1 = stack[B];\
34739
0
        if (janet_checktype(op1, JANET_NUMBER)) {\
34740
0
            double x1 = janet_unwrap_number(op1);\
34741
0
            double x2 = (double) CS; \
34742
0
            stack[A] = janet_wrap_boolean(x1 op x2);\
34743
0
            vm_pcnext();\
34744
0
        } else {\
34745
0
            vm_commit();\
34746
0
            stack[A] = janet_wrap_boolean(janet_compare(op1, janet_wrap_integer(CS)) op 0);\
34747
0
            vm_checkgc_pcnext();\
34748
0
        }\
34749
0
    }
34750
34751
/* Trace a function call */
34752
0
static void vm_do_trace(JanetFunction *func, int32_t argc, const Janet *argv) {
34753
0
    if (func->def->name) {
34754
0
        janet_eprintf("trace (%S", func->def->name);
34755
0
    } else {
34756
0
        janet_eprintf("trace (%p", janet_wrap_function(func));
34757
0
    }
34758
0
    for (int32_t i = 0; i < argc; i++) {
34759
0
        janet_eprintf(" %p", argv[i]);
34760
0
    }
34761
0
    janet_eprintf(")\n");
34762
0
}
34763
34764
/* Invoke a method once we have looked it up */
34765
0
static Janet janet_method_invoke(Janet method, int32_t argc, Janet *argv) {
34766
0
    switch (janet_type(method)) {
34767
0
        case JANET_CFUNCTION:
34768
0
            return (janet_unwrap_cfunction(method))(argc, argv);
34769
0
        case JANET_FUNCTION: {
34770
0
            JanetFunction *fun = janet_unwrap_function(method);
34771
0
            return janet_call(fun, argc, argv);
34772
0
        }
34773
0
        case JANET_ABSTRACT: {
34774
0
            JanetAbstract abst = janet_unwrap_abstract(method);
34775
0
            const JanetAbstractType *at = janet_abstract_type(abst);
34776
0
            if (NULL != at->call) {
34777
0
                return at->call(abst, argc, argv);
34778
0
            }
34779
0
        }
34780
        /* fallthrough */
34781
0
        case JANET_STRING:
34782
0
        case JANET_BUFFER:
34783
0
        case JANET_TABLE:
34784
0
        case JANET_STRUCT:
34785
0
        case JANET_ARRAY:
34786
0
        case JANET_TUPLE: {
34787
0
            if (argc != 1) {
34788
0
                janet_panicf("%v called with %d arguments, possibly expected 1", method, argc);
34789
0
            }
34790
0
            return janet_in(method, argv[0]);
34791
0
        }
34792
0
        default: {
34793
0
            if (argc != 1) {
34794
0
                janet_panicf("%v called with %d arguments, possibly expected 1", method, argc);
34795
0
            }
34796
0
            return janet_in(argv[0], method);
34797
0
        }
34798
0
    }
34799
0
}
34800
34801
/* Call a non function type from a JOP_CALL or JOP_TAILCALL instruction.
34802
 * Assumes that the arguments are on the fiber stack. */
34803
0
static Janet call_nonfn(JanetFiber *fiber, Janet callee) {
34804
0
    int32_t argc = fiber->stacktop - fiber->stackstart;
34805
0
    fiber->stacktop = fiber->stackstart;
34806
0
    return janet_method_invoke(callee, argc, fiber->data + fiber->stacktop);
34807
0
}
34808
34809
/* Method lookup could potentially handle tables specially... */
34810
0
static Janet method_to_fun(Janet method, Janet obj) {
34811
0
    return janet_get(obj, method);
34812
0
}
34813
34814
/* Get a callable from a keyword method name and ensure that it is valid. */
34815
0
static Janet resolve_method(Janet name, JanetFiber *fiber) {
34816
0
    int32_t argc = fiber->stacktop - fiber->stackstart;
34817
0
    if (argc < 1) janet_panicf("method call (%v) takes at least 1 argument, got 0", name);
34818
0
    Janet callee = method_to_fun(name, fiber->data[fiber->stackstart]);
34819
0
    if (janet_checktype(callee, JANET_NIL))
34820
0
        janet_panicf("unknown method %v invoked on %v", name, fiber->data[fiber->stackstart]);
34821
0
    return callee;
34822
0
}
34823
34824
/* Lookup method on value x */
34825
0
static Janet janet_method_lookup(Janet x, const char *name) {
34826
0
    return method_to_fun(janet_ckeywordv(name), x);
34827
0
}
34828
34829
0
static Janet janet_unary_call(const char *method, Janet arg) {
34830
0
    Janet m = janet_method_lookup(arg, method);
34831
0
    if (janet_checktype(m, JANET_NIL)) {
34832
0
        janet_panicf("could not find method :%s for %v", method, arg);
34833
0
    } else {
34834
0
        Janet argv[1] = { arg };
34835
0
        return janet_method_invoke(m, 1, argv);
34836
0
    }
34837
0
}
34838
34839
/* Call a method first on the righthand side, and then on the left hand side with a prefix */
34840
0
static Janet janet_binop_call(const char *lmethod, const char *rmethod, Janet lhs, Janet rhs) {
34841
0
    Janet lm = janet_method_lookup(lhs, lmethod);
34842
0
    if (janet_checktype(lm, JANET_NIL)) {
34843
        /* Invert order for rmethod */
34844
0
        Janet lr = janet_method_lookup(rhs, rmethod);
34845
0
        Janet argv[2] = { rhs, lhs };
34846
0
        if (janet_checktype(lr, JANET_NIL)) {
34847
0
            janet_panicf("could not find method :%s for %v or :%s for %v",
34848
0
                         lmethod, lhs,
34849
0
                         rmethod, rhs);
34850
0
        }
34851
0
        return janet_method_invoke(lr, 2, argv);
34852
0
    } else {
34853
0
        Janet argv[2] = { lhs, rhs };
34854
0
        return janet_method_invoke(lm, 2, argv);
34855
0
    }
34856
0
}
34857
34858
/* Forward declaration */
34859
static JanetSignal janet_check_can_resume(JanetFiber *fiber, Janet *out, int is_cancel);
34860
static JanetSignal janet_continue_no_check(JanetFiber *fiber, Janet in, Janet *out);
34861
34862
/* Interpreter main loop */
34863
0
static JanetSignal run_vm(JanetFiber *fiber, Janet in) {
34864
34865
    /* opcode -> label lookup if using clang/GCC */
34866
0
#ifdef JANET_USE_COMPUTED_GOTOS
34867
0
    static void *op_lookup[255] = {
34868
0
        &&label_JOP_NOOP,
34869
0
        &&label_JOP_ERROR,
34870
0
        &&label_JOP_TYPECHECK,
34871
0
        &&label_JOP_RETURN,
34872
0
        &&label_JOP_RETURN_NIL,
34873
0
        &&label_JOP_ADD_IMMEDIATE,
34874
0
        &&label_JOP_ADD,
34875
0
        &&label_JOP_SUBTRACT_IMMEDIATE,
34876
0
        &&label_JOP_SUBTRACT,
34877
0
        &&label_JOP_MULTIPLY_IMMEDIATE,
34878
0
        &&label_JOP_MULTIPLY,
34879
0
        &&label_JOP_DIVIDE_IMMEDIATE,
34880
0
        &&label_JOP_DIVIDE,
34881
0
        &&label_JOP_DIVIDE_FLOOR,
34882
0
        &&label_JOP_MODULO,
34883
0
        &&label_JOP_REMAINDER,
34884
0
        &&label_JOP_BAND,
34885
0
        &&label_JOP_BOR,
34886
0
        &&label_JOP_BXOR,
34887
0
        &&label_JOP_BNOT,
34888
0
        &&label_JOP_SHIFT_LEFT,
34889
0
        &&label_JOP_SHIFT_LEFT_IMMEDIATE,
34890
0
        &&label_JOP_SHIFT_RIGHT,
34891
0
        &&label_JOP_SHIFT_RIGHT_IMMEDIATE,
34892
0
        &&label_JOP_SHIFT_RIGHT_UNSIGNED,
34893
0
        &&label_JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE,
34894
0
        &&label_JOP_MOVE_FAR,
34895
0
        &&label_JOP_MOVE_NEAR,
34896
0
        &&label_JOP_JUMP,
34897
0
        &&label_JOP_JUMP_IF,
34898
0
        &&label_JOP_JUMP_IF_NOT,
34899
0
        &&label_JOP_JUMP_IF_NIL,
34900
0
        &&label_JOP_JUMP_IF_NOT_NIL,
34901
0
        &&label_JOP_GREATER_THAN,
34902
0
        &&label_JOP_GREATER_THAN_IMMEDIATE,
34903
0
        &&label_JOP_LESS_THAN,
34904
0
        &&label_JOP_LESS_THAN_IMMEDIATE,
34905
0
        &&label_JOP_EQUALS,
34906
0
        &&label_JOP_EQUALS_IMMEDIATE,
34907
0
        &&label_JOP_COMPARE,
34908
0
        &&label_JOP_LOAD_NIL,
34909
0
        &&label_JOP_LOAD_TRUE,
34910
0
        &&label_JOP_LOAD_FALSE,
34911
0
        &&label_JOP_LOAD_INTEGER,
34912
0
        &&label_JOP_LOAD_CONSTANT,
34913
0
        &&label_JOP_LOAD_UPVALUE,
34914
0
        &&label_JOP_LOAD_SELF,
34915
0
        &&label_JOP_SET_UPVALUE,
34916
0
        &&label_JOP_CLOSURE,
34917
0
        &&label_JOP_PUSH,
34918
0
        &&label_JOP_PUSH_2,
34919
0
        &&label_JOP_PUSH_3,
34920
0
        &&label_JOP_PUSH_ARRAY,
34921
0
        &&label_JOP_CALL,
34922
0
        &&label_JOP_TAILCALL,
34923
0
        &&label_JOP_RESUME,
34924
0
        &&label_JOP_SIGNAL,
34925
0
        &&label_JOP_PROPAGATE,
34926
0
        &&label_JOP_IN,
34927
0
        &&label_JOP_GET,
34928
0
        &&label_JOP_PUT,
34929
0
        &&label_JOP_GET_INDEX,
34930
0
        &&label_JOP_PUT_INDEX,
34931
0
        &&label_JOP_LENGTH,
34932
0
        &&label_JOP_MAKE_ARRAY,
34933
0
        &&label_JOP_MAKE_BUFFER,
34934
0
        &&label_JOP_MAKE_STRING,
34935
0
        &&label_JOP_MAKE_STRUCT,
34936
0
        &&label_JOP_MAKE_TABLE,
34937
0
        &&label_JOP_MAKE_TUPLE,
34938
0
        &&label_JOP_MAKE_BRACKET_TUPLE,
34939
0
        &&label_JOP_GREATER_THAN_EQUAL,
34940
0
        &&label_JOP_LESS_THAN_EQUAL,
34941
0
        &&label_JOP_NEXT,
34942
0
        &&label_JOP_NOT_EQUALS,
34943
0
        &&label_JOP_NOT_EQUALS_IMMEDIATE,
34944
0
        &&label_JOP_CANCEL,
34945
0
        &&label_unknown_op,
34946
0
        &&label_unknown_op,
34947
0
        &&label_unknown_op,
34948
0
        &&label_unknown_op,
34949
0
        &&label_unknown_op,
34950
0
        &&label_unknown_op,
34951
0
        &&label_unknown_op,
34952
0
        &&label_unknown_op,
34953
0
        &&label_unknown_op,
34954
0
        &&label_unknown_op,
34955
0
        &&label_unknown_op,
34956
0
        &&label_unknown_op,
34957
0
        &&label_unknown_op,
34958
0
        &&label_unknown_op,
34959
0
        &&label_unknown_op,
34960
0
        &&label_unknown_op,
34961
0
        &&label_unknown_op,
34962
0
        &&label_unknown_op,
34963
0
        &&label_unknown_op,
34964
0
        &&label_unknown_op,
34965
0
        &&label_unknown_op,
34966
0
        &&label_unknown_op,
34967
0
        &&label_unknown_op,
34968
0
        &&label_unknown_op,
34969
0
        &&label_unknown_op,
34970
0
        &&label_unknown_op,
34971
0
        &&label_unknown_op,
34972
0
        &&label_unknown_op,
34973
0
        &&label_unknown_op,
34974
0
        &&label_unknown_op,
34975
0
        &&label_unknown_op,
34976
0
        &&label_unknown_op,
34977
0
        &&label_unknown_op,
34978
0
        &&label_unknown_op,
34979
0
        &&label_unknown_op,
34980
0
        &&label_unknown_op,
34981
0
        &&label_unknown_op,
34982
0
        &&label_unknown_op,
34983
0
        &&label_unknown_op,
34984
0
        &&label_unknown_op,
34985
0
        &&label_unknown_op,
34986
0
        &&label_unknown_op,
34987
0
        &&label_unknown_op,
34988
0
        &&label_unknown_op,
34989
0
        &&label_unknown_op,
34990
0
        &&label_unknown_op,
34991
0
        &&label_unknown_op,
34992
0
        &&label_unknown_op,
34993
0
        &&label_unknown_op,
34994
0
        &&label_unknown_op,
34995
0
        &&label_unknown_op,
34996
0
        &&label_unknown_op,
34997
0
        &&label_unknown_op,
34998
0
        &&label_unknown_op,
34999
0
        &&label_unknown_op,
35000
0
        &&label_unknown_op,
35001
0
        &&label_unknown_op,
35002
0
        &&label_unknown_op,
35003
0
        &&label_unknown_op,
35004
0
        &&label_unknown_op,
35005
0
        &&label_unknown_op,
35006
0
        &&label_unknown_op,
35007
0
        &&label_unknown_op,
35008
0
        &&label_unknown_op,
35009
0
        &&label_unknown_op,
35010
0
        &&label_unknown_op,
35011
0
        &&label_unknown_op,
35012
0
        &&label_unknown_op,
35013
0
        &&label_unknown_op,
35014
0
        &&label_unknown_op,
35015
0
        &&label_unknown_op,
35016
0
        &&label_unknown_op,
35017
0
        &&label_unknown_op,
35018
0
        &&label_unknown_op,
35019
0
        &&label_unknown_op,
35020
0
        &&label_unknown_op,
35021
0
        &&label_unknown_op,
35022
0
        &&label_unknown_op,
35023
0
        &&label_unknown_op,
35024
0
        &&label_unknown_op,
35025
0
        &&label_unknown_op,
35026
0
        &&label_unknown_op,
35027
0
        &&label_unknown_op,
35028
0
        &&label_unknown_op,
35029
0
        &&label_unknown_op,
35030
0
        &&label_unknown_op,
35031
0
        &&label_unknown_op,
35032
0
        &&label_unknown_op,
35033
0
        &&label_unknown_op,
35034
0
        &&label_unknown_op,
35035
0
        &&label_unknown_op,
35036
0
        &&label_unknown_op,
35037
0
        &&label_unknown_op,
35038
0
        &&label_unknown_op,
35039
0
        &&label_unknown_op,
35040
0
        &&label_unknown_op,
35041
0
        &&label_unknown_op,
35042
0
        &&label_unknown_op,
35043
0
        &&label_unknown_op,
35044
0
        &&label_unknown_op,
35045
0
        &&label_unknown_op,
35046
0
        &&label_unknown_op,
35047
0
        &&label_unknown_op,
35048
0
        &&label_unknown_op,
35049
0
        &&label_unknown_op,
35050
0
        &&label_unknown_op,
35051
0
        &&label_unknown_op,
35052
0
        &&label_unknown_op,
35053
0
        &&label_unknown_op,
35054
0
        &&label_unknown_op,
35055
0
        &&label_unknown_op,
35056
0
        &&label_unknown_op,
35057
0
        &&label_unknown_op,
35058
0
        &&label_unknown_op,
35059
0
        &&label_unknown_op,
35060
0
        &&label_unknown_op,
35061
0
        &&label_unknown_op,
35062
0
        &&label_unknown_op,
35063
0
        &&label_unknown_op,
35064
0
        &&label_unknown_op,
35065
0
        &&label_unknown_op,
35066
0
        &&label_unknown_op,
35067
0
        &&label_unknown_op,
35068
0
        &&label_unknown_op,
35069
0
        &&label_unknown_op,
35070
0
        &&label_unknown_op,
35071
0
        &&label_unknown_op,
35072
0
        &&label_unknown_op,
35073
0
        &&label_unknown_op,
35074
0
        &&label_unknown_op,
35075
0
        &&label_unknown_op,
35076
0
        &&label_unknown_op,
35077
0
        &&label_unknown_op,
35078
0
        &&label_unknown_op,
35079
0
        &&label_unknown_op,
35080
0
        &&label_unknown_op,
35081
0
        &&label_unknown_op,
35082
0
        &&label_unknown_op,
35083
0
        &&label_unknown_op,
35084
0
        &&label_unknown_op,
35085
0
        &&label_unknown_op,
35086
0
        &&label_unknown_op,
35087
0
        &&label_unknown_op,
35088
0
        &&label_unknown_op,
35089
0
        &&label_unknown_op,
35090
0
        &&label_unknown_op,
35091
0
        &&label_unknown_op,
35092
0
        &&label_unknown_op,
35093
0
        &&label_unknown_op,
35094
0
        &&label_unknown_op,
35095
0
        &&label_unknown_op,
35096
0
        &&label_unknown_op,
35097
0
        &&label_unknown_op,
35098
0
        &&label_unknown_op,
35099
0
        &&label_unknown_op,
35100
0
        &&label_unknown_op,
35101
0
        &&label_unknown_op,
35102
0
        &&label_unknown_op,
35103
0
        &&label_unknown_op,
35104
0
        &&label_unknown_op,
35105
0
        &&label_unknown_op,
35106
0
        &&label_unknown_op,
35107
0
        &&label_unknown_op,
35108
0
        &&label_unknown_op,
35109
0
        &&label_unknown_op,
35110
0
        &&label_unknown_op,
35111
0
        &&label_unknown_op,
35112
0
        &&label_unknown_op,
35113
0
        &&label_unknown_op,
35114
0
        &&label_unknown_op,
35115
0
        &&label_unknown_op,
35116
0
        &&label_unknown_op,
35117
0
        &&label_unknown_op,
35118
0
        &&label_unknown_op,
35119
0
        &&label_unknown_op,
35120
0
        &&label_unknown_op,
35121
0
        &&label_unknown_op,
35122
0
        &&label_unknown_op
35123
0
    };
35124
0
#endif
35125
35126
    /* Interpreter state */
35127
0
    register Janet *stack;
35128
0
    register uint32_t *pc;
35129
0
    register JanetFunction *func;
35130
35131
0
    if (fiber->flags & JANET_FIBER_RESUME_SIGNAL) {
35132
0
        JanetSignal sig = (fiber->gc.flags & JANET_FIBER_STATUS_MASK) >> JANET_FIBER_STATUS_OFFSET;
35133
0
        fiber->gc.flags &= ~JANET_FIBER_STATUS_MASK;
35134
0
        fiber->flags &= ~(JANET_FIBER_RESUME_SIGNAL | JANET_FIBER_FLAG_MASK);
35135
0
        janet_vm.return_reg[0] = in;
35136
0
        return sig;
35137
0
    }
35138
35139
0
    vm_restore();
35140
35141
0
    if (fiber->flags & JANET_FIBER_DID_LONGJUMP) {
35142
0
        if (janet_fiber_frame(fiber)->func == NULL) {
35143
            /* Inside a c function */
35144
0
            janet_fiber_popframe(fiber);
35145
0
            vm_restore();
35146
0
        }
35147
        /* Check if we were at a tail call instruction. If so, do implicit return */
35148
0
        if ((*pc & 0xFF) == JOP_TAILCALL) {
35149
            /* Tail call resume */
35150
0
            int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
35151
0
            janet_fiber_popframe(fiber);
35152
0
            if (entrance_frame) {
35153
0
                fiber->flags &= ~JANET_FIBER_FLAG_MASK;
35154
0
                vm_return(JANET_SIGNAL_OK, in);
35155
0
            }
35156
0
            vm_restore();
35157
0
        }
35158
0
    }
35159
35160
0
    if (!(fiber->flags & JANET_FIBER_RESUME_NO_USEVAL)) stack[A] = in;
35161
0
    if (!(fiber->flags & JANET_FIBER_RESUME_NO_SKIP)) pc++;
35162
35163
0
    uint8_t first_opcode = *pc & ((fiber->flags & JANET_FIBER_BREAKPOINT) ? 0x7F : 0xFF);
35164
35165
0
    fiber->flags &= ~JANET_FIBER_FLAG_MASK;
35166
35167
    /* Main interpreter loop. Semantically is a switch on
35168
     * (*pc & 0xFF) inside of an infinite loop. */
35169
0
    VM_START();
35170
35171
0
    VM_DEFAULT();
35172
0
    fiber->flags |= JANET_FIBER_BREAKPOINT | JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
35173
0
    vm_return(JANET_SIGNAL_DEBUG, janet_wrap_nil());
35174
35175
0
    VM_OP(JOP_NOOP)
35176
0
    vm_pcnext();
35177
35178
0
    VM_OP(JOP_ERROR)
35179
0
    vm_return(JANET_SIGNAL_ERROR, stack[A]);
35180
35181
0
    VM_OP(JOP_TYPECHECK)
35182
0
    vm_assert_types(stack[A], E);
35183
0
    vm_pcnext();
35184
35185
0
    VM_OP(JOP_RETURN) {
35186
0
        Janet retval = stack[D];
35187
0
        int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
35188
0
        janet_fiber_popframe(fiber);
35189
0
        if (entrance_frame) vm_return_no_restore(JANET_SIGNAL_OK, retval);
35190
0
        vm_restore();
35191
0
        stack[A] = retval;
35192
0
        vm_checkgc_pcnext();
35193
0
    }
35194
35195
0
    VM_OP(JOP_RETURN_NIL) {
35196
0
        Janet retval = janet_wrap_nil();
35197
0
        int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
35198
0
        janet_fiber_popframe(fiber);
35199
0
        if (entrance_frame) vm_return_no_restore(JANET_SIGNAL_OK, retval);
35200
0
        vm_restore();
35201
0
        stack[A] = retval;
35202
0
        vm_checkgc_pcnext();
35203
0
    }
35204
35205
0
    VM_OP(JOP_ADD_IMMEDIATE)
35206
0
    vm_binop_immediate(+);
35207
35208
0
    VM_OP(JOP_ADD)
35209
0
    vm_binop(+);
35210
35211
0
    VM_OP(JOP_SUBTRACT_IMMEDIATE)
35212
0
    vm_binop_immediate(-);
35213
35214
0
    VM_OP(JOP_SUBTRACT)
35215
0
    vm_binop(-);
35216
35217
0
    VM_OP(JOP_MULTIPLY_IMMEDIATE)
35218
0
    vm_binop_immediate(*);
35219
35220
0
    VM_OP(JOP_MULTIPLY)
35221
0
    vm_binop(*);
35222
35223
0
    VM_OP(JOP_DIVIDE_IMMEDIATE)
35224
0
    vm_binop_immediate( /);
35225
35226
0
    VM_OP(JOP_DIVIDE)
35227
0
    vm_binop( /);
35228
35229
0
    VM_OP(JOP_DIVIDE_FLOOR) {
35230
0
        Janet op1 = stack[B];
35231
0
        Janet op2 = stack[C];
35232
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
35233
0
            double x1 = janet_unwrap_number(op1);
35234
0
            double x2 = janet_unwrap_number(op2);
35235
0
            stack[A] = janet_wrap_number(floor(x1 / x2));
35236
0
            vm_pcnext();
35237
0
        } else {
35238
0
            vm_commit();
35239
0
            stack[A] = janet_binop_call("div", "rdiv", op1, op2);
35240
0
            vm_checkgc_pcnext();
35241
0
        }
35242
0
    }
35243
35244
0
    VM_OP(JOP_MODULO) {
35245
0
        Janet op1 = stack[B];
35246
0
        Janet op2 = stack[C];
35247
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
35248
0
            double x1 = janet_unwrap_number(op1);
35249
0
            double x2 = janet_unwrap_number(op2);
35250
0
            if (x2 == 0) {
35251
0
                stack[A] = janet_wrap_number(x1);
35252
0
            } else {
35253
0
                double intres = x2 * floor(x1 / x2);
35254
0
                stack[A] = janet_wrap_number(x1 - intres);
35255
0
            }
35256
0
            vm_pcnext();
35257
0
        } else {
35258
0
            vm_commit();
35259
0
            stack[A] = janet_binop_call("mod", "rmod", op1, op2);
35260
0
            vm_checkgc_pcnext();
35261
0
        }
35262
0
    }
35263
35264
0
    VM_OP(JOP_REMAINDER) {
35265
0
        Janet op1 = stack[B];
35266
0
        Janet op2 = stack[C];
35267
0
        if (janet_checktype(op1, JANET_NUMBER) && janet_checktype(op2, JANET_NUMBER)) {
35268
0
            double x1 = janet_unwrap_number(op1);
35269
0
            double x2 = janet_unwrap_number(op2);
35270
0
            stack[A] = janet_wrap_number(fmod(x1, x2));
35271
0
            vm_pcnext();
35272
0
        } else {
35273
0
            vm_commit();
35274
0
            stack[A] = janet_binop_call("%", "r%", op1, op2);
35275
0
            vm_checkgc_pcnext();
35276
0
        }
35277
0
    }
35278
35279
0
    VM_OP(JOP_BAND)
35280
0
    vm_bitop(&);
35281
35282
0
    VM_OP(JOP_BOR)
35283
0
    vm_bitop( |);
35284
35285
0
    VM_OP(JOP_BXOR)
35286
0
    vm_bitop(^);
35287
35288
0
    VM_OP(JOP_BNOT) {
35289
0
        Janet op = stack[E];
35290
0
        if (janet_checktype(op, JANET_NUMBER)) {
35291
0
            stack[A] = janet_wrap_integer(~janet_unwrap_integer(op));
35292
0
            vm_pcnext();
35293
0
        } else {
35294
0
            vm_commit();
35295
0
            stack[A] = janet_unary_call("~", op);
35296
0
            vm_checkgc_pcnext();
35297
0
        }
35298
0
    }
35299
35300
0
    VM_OP(JOP_SHIFT_RIGHT_UNSIGNED)
35301
0
    vm_bitopu( >>);
35302
35303
0
    VM_OP(JOP_SHIFT_RIGHT_UNSIGNED_IMMEDIATE)
35304
0
    vm_bitopu_immediate( >>);
35305
35306
0
    VM_OP(JOP_SHIFT_RIGHT)
35307
0
    vm_bitop( >>);
35308
35309
0
    VM_OP(JOP_SHIFT_RIGHT_IMMEDIATE)
35310
0
    vm_bitop_immediate( >>);
35311
35312
0
    VM_OP(JOP_SHIFT_LEFT)
35313
0
    vm_bitop( <<);
35314
35315
0
    VM_OP(JOP_SHIFT_LEFT_IMMEDIATE)
35316
0
    vm_bitop_immediate( <<);
35317
35318
0
    VM_OP(JOP_MOVE_NEAR)
35319
0
    stack[A] = stack[E];
35320
0
    vm_pcnext();
35321
35322
0
    VM_OP(JOP_MOVE_FAR)
35323
0
    stack[E] = stack[A];
35324
0
    vm_pcnext();
35325
35326
0
    VM_OP(JOP_JUMP)
35327
0
    vm_maybe_auto_suspend(DS <= 0);
35328
0
    pc += DS;
35329
0
    vm_next();
35330
35331
0
    VM_OP(JOP_JUMP_IF)
35332
0
    if (janet_truthy(stack[A])) {
35333
0
        vm_maybe_auto_suspend(ES <= 0);
35334
0
        pc += ES;
35335
0
    } else {
35336
0
        pc++;
35337
0
    }
35338
0
    vm_next();
35339
35340
0
    VM_OP(JOP_JUMP_IF_NOT)
35341
0
    if (janet_truthy(stack[A])) {
35342
0
        pc++;
35343
0
    } else {
35344
0
        vm_maybe_auto_suspend(ES <= 0);
35345
0
        pc += ES;
35346
0
    }
35347
0
    vm_next();
35348
35349
0
    VM_OP(JOP_JUMP_IF_NIL)
35350
0
    if (janet_checktype(stack[A], JANET_NIL)) {
35351
0
        vm_maybe_auto_suspend(ES <= 0);
35352
0
        pc += ES;
35353
0
    } else {
35354
0
        pc++;
35355
0
    }
35356
0
    vm_next();
35357
35358
0
    VM_OP(JOP_JUMP_IF_NOT_NIL)
35359
0
    if (janet_checktype(stack[A], JANET_NIL)) {
35360
0
        pc++;
35361
0
    } else {
35362
0
        vm_maybe_auto_suspend(ES <= 0);
35363
0
        pc += ES;
35364
0
    }
35365
0
    vm_next();
35366
35367
0
    VM_OP(JOP_LESS_THAN)
35368
0
    vm_compop( <);
35369
35370
0
    VM_OP(JOP_LESS_THAN_EQUAL)
35371
0
    vm_compop( <=);
35372
35373
0
    VM_OP(JOP_LESS_THAN_IMMEDIATE)
35374
0
    vm_compop_imm( <);
35375
35376
0
    VM_OP(JOP_GREATER_THAN)
35377
0
    vm_compop( >);
35378
35379
0
    VM_OP(JOP_GREATER_THAN_EQUAL)
35380
0
    vm_compop( >=);
35381
35382
0
    VM_OP(JOP_GREATER_THAN_IMMEDIATE)
35383
0
    vm_compop_imm( >);
35384
35385
0
    VM_OP(JOP_EQUALS)
35386
0
    stack[A] = janet_wrap_boolean(janet_equals(stack[B], stack[C]));
35387
0
    vm_pcnext();
35388
35389
0
    VM_OP(JOP_EQUALS_IMMEDIATE)
35390
0
    stack[A] = janet_wrap_boolean(janet_checktype(stack[B], JANET_NUMBER) && (janet_unwrap_number(stack[B]) == (double) CS));
35391
0
    vm_pcnext();
35392
35393
0
    VM_OP(JOP_NOT_EQUALS)
35394
0
    stack[A] = janet_wrap_boolean(!janet_equals(stack[B], stack[C]));
35395
0
    vm_pcnext();
35396
35397
0
    VM_OP(JOP_NOT_EQUALS_IMMEDIATE)
35398
0
    stack[A] = janet_wrap_boolean(!janet_checktype(stack[B], JANET_NUMBER) || (janet_unwrap_number(stack[B]) != (double) CS));
35399
0
    vm_pcnext();
35400
35401
0
    VM_OP(JOP_COMPARE)
35402
0
    stack[A] = janet_wrap_integer(janet_compare(stack[B], stack[C]));
35403
0
    vm_pcnext();
35404
35405
0
    VM_OP(JOP_NEXT)
35406
0
    vm_commit();
35407
0
    {
35408
0
        Janet temp = janet_next_impl(stack[B], stack[C], 1);
35409
0
        vm_restore();
35410
0
        stack[A] = temp;
35411
0
    }
35412
0
    vm_pcnext();
35413
35414
0
    VM_OP(JOP_LOAD_NIL)
35415
0
    stack[D] = janet_wrap_nil();
35416
0
    vm_pcnext();
35417
35418
0
    VM_OP(JOP_LOAD_TRUE)
35419
0
    stack[D] = janet_wrap_true();
35420
0
    vm_pcnext();
35421
35422
0
    VM_OP(JOP_LOAD_FALSE)
35423
0
    stack[D] = janet_wrap_false();
35424
0
    vm_pcnext();
35425
35426
0
    VM_OP(JOP_LOAD_INTEGER)
35427
0
    stack[A] = janet_wrap_integer(ES);
35428
0
    vm_pcnext();
35429
35430
0
    VM_OP(JOP_LOAD_CONSTANT) {
35431
0
        int32_t cindex = (int32_t)E;
35432
0
        vm_assert(cindex < func->def->constants_length, "invalid constant");
35433
0
        stack[A] = func->def->constants[cindex];
35434
0
        vm_pcnext();
35435
0
    }
35436
35437
0
    VM_OP(JOP_LOAD_SELF)
35438
0
    stack[D] = janet_wrap_function(func);
35439
0
    vm_pcnext();
35440
35441
0
    VM_OP(JOP_LOAD_UPVALUE) {
35442
0
        int32_t eindex = B;
35443
0
        int32_t vindex = C;
35444
0
        JanetFuncEnv *env;
35445
0
        vm_assert(func->def->environments_length > eindex, "invalid upvalue environment");
35446
0
        env = func->envs[eindex];
35447
0
        vm_assert(env->length > vindex, "invalid upvalue index");
35448
0
        vm_assert(janet_env_valid(env), "invalid upvalue environment");
35449
0
        if (env->offset > 0) {
35450
            /* On stack */
35451
0
            stack[A] = env->as.fiber->data[env->offset + vindex];
35452
0
        } else {
35453
            /* Off stack */
35454
0
            stack[A] = env->as.values[vindex];
35455
0
        }
35456
0
        vm_pcnext();
35457
0
    }
35458
35459
0
    VM_OP(JOP_SET_UPVALUE) {
35460
0
        int32_t eindex = B;
35461
0
        int32_t vindex = C;
35462
0
        JanetFuncEnv *env;
35463
0
        vm_assert(func->def->environments_length > eindex, "invalid upvalue environment");
35464
0
        env = func->envs[eindex];
35465
0
        vm_assert(env->length > vindex, "invalid upvalue index");
35466
0
        vm_assert(janet_env_valid(env), "invalid upvalue environment");
35467
0
        if (env->offset > 0) {
35468
0
            env->as.fiber->data[env->offset + vindex] = stack[A];
35469
0
        } else {
35470
0
            env->as.values[vindex] = stack[A];
35471
0
        }
35472
0
        vm_pcnext();
35473
0
    }
35474
35475
0
    VM_OP(JOP_CLOSURE) {
35476
0
        JanetFuncDef *fd;
35477
0
        JanetFunction *fn;
35478
0
        int32_t elen;
35479
0
        int32_t defindex = (int32_t)E;
35480
0
        vm_assert(defindex < func->def->defs_length, "invalid funcdef");
35481
0
        fd = func->def->defs[defindex];
35482
0
        elen = fd->environments_length;
35483
0
        fn = janet_gcalloc(JANET_MEMORY_FUNCTION, sizeof(JanetFunction) + ((size_t) elen * sizeof(JanetFuncEnv *)));
35484
0
        fn->def = fd;
35485
0
        {
35486
0
            int32_t i;
35487
0
            for (i = 0; i < elen; ++i) {
35488
0
                int32_t inherit = fd->environments[i];
35489
0
                if (inherit == -1 || inherit >= func->def->environments_length) {
35490
0
                    JanetStackFrame *frame = janet_stack_frame(stack);
35491
0
                    if (!frame->env) {
35492
                        /* Lazy capture of current stack frame */
35493
0
                        JanetFuncEnv *env = janet_gcalloc(JANET_MEMORY_FUNCENV, sizeof(JanetFuncEnv));
35494
0
                        env->offset = fiber->frame;
35495
0
                        env->as.fiber = fiber;
35496
0
                        env->length = func->def->slotcount;
35497
0
                        frame->env = env;
35498
0
                    }
35499
0
                    fn->envs[i] = frame->env;
35500
0
                } else {
35501
0
                    fn->envs[i] = func->envs[inherit];
35502
0
                }
35503
0
            }
35504
0
        }
35505
0
        stack[A] = janet_wrap_function(fn);
35506
0
        vm_checkgc_pcnext();
35507
0
    }
35508
35509
0
    VM_OP(JOP_PUSH)
35510
0
    janet_fiber_push(fiber, stack[D]);
35511
0
    stack = fiber->data + fiber->frame;
35512
0
    vm_checkgc_pcnext();
35513
35514
0
    VM_OP(JOP_PUSH_2)
35515
0
    janet_fiber_push2(fiber, stack[A], stack[E]);
35516
0
    stack = fiber->data + fiber->frame;
35517
0
    vm_checkgc_pcnext();
35518
35519
0
    VM_OP(JOP_PUSH_3)
35520
0
    janet_fiber_push3(fiber, stack[A], stack[B], stack[C]);
35521
0
    stack = fiber->data + fiber->frame;
35522
0
    vm_checkgc_pcnext();
35523
35524
0
    VM_OP(JOP_PUSH_ARRAY) {
35525
0
        const Janet *vals;
35526
0
        int32_t len;
35527
0
        if (janet_indexed_view(stack[D], &vals, &len)) {
35528
0
            janet_fiber_pushn(fiber, vals, len);
35529
0
        } else {
35530
0
            janet_panicf("expected %T, got %v", JANET_TFLAG_INDEXED, stack[D]);
35531
0
        }
35532
0
    }
35533
0
    stack = fiber->data + fiber->frame;
35534
0
    vm_checkgc_pcnext();
35535
35536
0
    VM_OP(JOP_CALL) {
35537
0
        vm_maybe_auto_suspend(1);
35538
0
        Janet callee = stack[E];
35539
0
        if (fiber->stacktop > fiber->maxstack) {
35540
0
            vm_throw("stack overflow");
35541
0
        }
35542
0
        if (janet_checktype(callee, JANET_KEYWORD)) {
35543
0
            vm_commit();
35544
0
            callee = resolve_method(callee, fiber);
35545
0
        }
35546
0
        if (janet_checktype(callee, JANET_FUNCTION)) {
35547
0
            func = janet_unwrap_function(callee);
35548
0
            if (func->gc.flags & JANET_FUNCFLAG_TRACE) {
35549
0
                vm_do_trace(func, fiber->stacktop - fiber->stackstart, fiber->data + fiber->stackstart);
35550
0
            }
35551
0
            vm_commit();
35552
0
            if (janet_fiber_funcframe(fiber, func)) {
35553
0
                int32_t n = fiber->stacktop - fiber->stackstart;
35554
0
                janet_panicf("%v called with %d argument%s, expected %d",
35555
0
                             callee, n, n == 1 ? "" : "s", func->def->arity);
35556
0
            }
35557
0
            stack = fiber->data + fiber->frame;
35558
0
            pc = func->def->bytecode;
35559
0
            vm_checkgc_next();
35560
0
        } else if (janet_checktype(callee, JANET_CFUNCTION)) {
35561
0
            vm_commit();
35562
0
            int32_t argc = fiber->stacktop - fiber->stackstart;
35563
0
            janet_fiber_cframe(fiber, janet_unwrap_cfunction(callee));
35564
0
            Janet ret = janet_unwrap_cfunction(callee)(argc, fiber->data + fiber->frame);
35565
0
            janet_fiber_popframe(fiber);
35566
0
            stack = fiber->data + fiber->frame;
35567
0
            stack[A] = ret;
35568
0
            vm_checkgc_pcnext();
35569
0
        } else {
35570
0
            vm_commit();
35571
0
            stack[A] = call_nonfn(fiber, callee);
35572
0
            vm_pcnext();
35573
0
        }
35574
0
    }
35575
35576
0
    VM_OP(JOP_TAILCALL) {
35577
0
        vm_maybe_auto_suspend(1);
35578
0
        Janet callee = stack[D];
35579
0
        if (fiber->stacktop > fiber->maxstack) {
35580
0
            vm_throw("stack overflow");
35581
0
        }
35582
0
        if (janet_checktype(callee, JANET_KEYWORD)) {
35583
0
            vm_commit();
35584
0
            callee = resolve_method(callee, fiber);
35585
0
        }
35586
0
        if (janet_checktype(callee, JANET_FUNCTION)) {
35587
0
            func = janet_unwrap_function(callee);
35588
0
            if (func->gc.flags & JANET_FUNCFLAG_TRACE) {
35589
0
                vm_do_trace(func, fiber->stacktop - fiber->stackstart, fiber->data + fiber->stackstart);
35590
0
            }
35591
0
            if (janet_fiber_funcframe_tail(fiber, func)) {
35592
0
                janet_stack_frame(fiber->data + fiber->frame)->pc = pc;
35593
0
                int32_t n = fiber->stacktop - fiber->stackstart;
35594
0
                janet_panicf("%v called with %d argument%s, expected %d",
35595
0
                             callee, n, n == 1 ? "" : "s", func->def->arity);
35596
0
            }
35597
0
            stack = fiber->data + fiber->frame;
35598
0
            pc = func->def->bytecode;
35599
0
            vm_checkgc_next();
35600
0
        } else {
35601
0
            Janet retreg;
35602
0
            int entrance_frame = janet_stack_frame(stack)->flags & JANET_STACKFRAME_ENTRANCE;
35603
0
            vm_commit();
35604
0
            if (janet_checktype(callee, JANET_CFUNCTION)) {
35605
0
                int32_t argc = fiber->stacktop - fiber->stackstart;
35606
0
                janet_fiber_cframe(fiber, janet_unwrap_cfunction(callee));
35607
0
                retreg = janet_unwrap_cfunction(callee)(argc, fiber->data + fiber->frame);
35608
0
                janet_fiber_popframe(fiber);
35609
0
            } else {
35610
0
                retreg = call_nonfn(fiber, callee);
35611
0
            }
35612
0
            janet_fiber_popframe(fiber);
35613
0
            if (entrance_frame) {
35614
0
                vm_return_no_restore(JANET_SIGNAL_OK, retreg);
35615
0
            }
35616
0
            vm_restore();
35617
0
            stack[A] = retreg;
35618
0
            vm_checkgc_pcnext();
35619
0
        }
35620
0
    }
35621
35622
0
    VM_OP(JOP_RESUME) {
35623
0
        Janet retreg;
35624
0
        vm_maybe_auto_suspend(1);
35625
0
        vm_assert_type(stack[B], JANET_FIBER);
35626
0
        JanetFiber *child = janet_unwrap_fiber(stack[B]);
35627
0
        if (janet_check_can_resume(child, &retreg, 0)) {
35628
0
            vm_commit();
35629
0
            janet_panicv(retreg);
35630
0
        }
35631
0
        fiber->child = child;
35632
0
        JanetSignal sig = janet_continue_no_check(child, stack[C], &retreg);
35633
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
35634
0
            vm_return(sig, retreg);
35635
0
        }
35636
0
        fiber->child = NULL;
35637
0
        stack = fiber->data + fiber->frame;
35638
0
        stack[A] = retreg;
35639
0
        vm_checkgc_pcnext();
35640
0
    }
35641
35642
0
    VM_OP(JOP_SIGNAL) {
35643
0
        int32_t s = C;
35644
0
        if (s > JANET_SIGNAL_USER9) s = JANET_SIGNAL_USER9;
35645
0
        if (s < 0) s = 0;
35646
0
        vm_return(s, stack[B]);
35647
0
    }
35648
35649
0
    VM_OP(JOP_PROPAGATE) {
35650
0
        Janet fv = stack[C];
35651
0
        vm_assert_type(fv, JANET_FIBER);
35652
0
        JanetFiber *f = janet_unwrap_fiber(fv);
35653
0
        JanetFiberStatus sub_status = janet_fiber_status(f);
35654
0
        if (sub_status > JANET_STATUS_USER9) {
35655
0
            vm_commit();
35656
0
            janet_panicf("cannot propagate from fiber with status :%s",
35657
0
                         janet_status_names[sub_status]);
35658
0
        }
35659
0
        fiber->child = f;
35660
0
        vm_return((int) sub_status, stack[B]);
35661
0
    }
35662
35663
0
    VM_OP(JOP_CANCEL) {
35664
0
        Janet retreg;
35665
0
        vm_assert_type(stack[B], JANET_FIBER);
35666
0
        JanetFiber *child = janet_unwrap_fiber(stack[B]);
35667
0
        if (janet_check_can_resume(child, &retreg, 1)) {
35668
0
            vm_commit();
35669
0
            janet_panicv(retreg);
35670
0
        }
35671
0
        fiber->child = child;
35672
0
        JanetSignal sig = janet_continue_signal(child, stack[C], &retreg, JANET_SIGNAL_ERROR);
35673
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
35674
0
            vm_return(sig, retreg);
35675
0
        }
35676
0
        fiber->child = NULL;
35677
0
        stack = fiber->data + fiber->frame;
35678
0
        stack[A] = retreg;
35679
0
        vm_checkgc_pcnext();
35680
0
    }
35681
35682
0
    VM_OP(JOP_PUT)
35683
0
    vm_commit();
35684
0
    fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL;
35685
0
    janet_put(stack[A], stack[B], stack[C]);
35686
0
    fiber->flags &= ~JANET_FIBER_RESUME_NO_USEVAL;
35687
0
    vm_checkgc_pcnext();
35688
35689
0
    VM_OP(JOP_PUT_INDEX)
35690
0
    vm_commit();
35691
0
    fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL;
35692
0
    janet_putindex(stack[A], C, stack[B]);
35693
0
    fiber->flags &= ~JANET_FIBER_RESUME_NO_USEVAL;
35694
0
    vm_checkgc_pcnext();
35695
35696
0
    VM_OP(JOP_IN)
35697
0
    vm_commit();
35698
0
    stack[A] = janet_in(stack[B], stack[C]);
35699
0
    vm_pcnext();
35700
35701
0
    VM_OP(JOP_GET)
35702
0
    vm_commit();
35703
0
    stack[A] = janet_get(stack[B], stack[C]);
35704
0
    vm_pcnext();
35705
35706
0
    VM_OP(JOP_GET_INDEX)
35707
0
    vm_commit();
35708
0
    stack[A] = janet_getindex(stack[B], C);
35709
0
    vm_pcnext();
35710
35711
0
    VM_OP(JOP_LENGTH)
35712
0
    vm_commit();
35713
0
    stack[A] = janet_lengthv(stack[E]);
35714
0
    vm_pcnext();
35715
35716
0
    VM_OP(JOP_MAKE_ARRAY) {
35717
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35718
0
        Janet *mem = fiber->data + fiber->stackstart;
35719
0
        stack[D] = janet_wrap_array(janet_array_n(mem, count));
35720
0
        fiber->stacktop = fiber->stackstart;
35721
0
        vm_checkgc_pcnext();
35722
0
    }
35723
35724
0
    VM_OP(JOP_MAKE_TUPLE)
35725
    /* fallthrough */
35726
0
    VM_OP(JOP_MAKE_BRACKET_TUPLE) {
35727
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35728
0
        Janet *mem = fiber->data + fiber->stackstart;
35729
0
        const Janet *tup = janet_tuple_n(mem, count);
35730
0
        if (opcode == JOP_MAKE_BRACKET_TUPLE)
35731
0
            janet_tuple_flag(tup) |= JANET_TUPLE_FLAG_BRACKETCTOR;
35732
0
        stack[D] = janet_wrap_tuple(tup);
35733
0
        fiber->stacktop = fiber->stackstart;
35734
0
        vm_checkgc_pcnext();
35735
0
    }
35736
35737
0
    VM_OP(JOP_MAKE_TABLE) {
35738
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35739
0
        Janet *mem = fiber->data + fiber->stackstart;
35740
0
        if (count & 1) {
35741
0
            vm_commit();
35742
0
            janet_panicf("expected even number of arguments to table constructor, got %d", count);
35743
0
        }
35744
0
        JanetTable *table = janet_table(count / 2);
35745
0
        for (int32_t i = 0; i < count; i += 2)
35746
0
            janet_table_put(table, mem[i], mem[i + 1]);
35747
0
        stack[D] = janet_wrap_table(table);
35748
0
        fiber->stacktop = fiber->stackstart;
35749
0
        vm_checkgc_pcnext();
35750
0
    }
35751
35752
0
    VM_OP(JOP_MAKE_STRUCT) {
35753
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35754
0
        Janet *mem = fiber->data + fiber->stackstart;
35755
0
        if (count & 1) {
35756
0
            vm_commit();
35757
0
            janet_panicf("expected even number of arguments to struct constructor, got %d", count);
35758
0
        }
35759
0
        JanetKV *st = janet_struct_begin(count / 2);
35760
0
        for (int32_t i = 0; i < count; i += 2)
35761
0
            janet_struct_put(st, mem[i], mem[i + 1]);
35762
0
        stack[D] = janet_wrap_struct(janet_struct_end(st));
35763
0
        fiber->stacktop = fiber->stackstart;
35764
0
        vm_checkgc_pcnext();
35765
0
    }
35766
35767
0
    VM_OP(JOP_MAKE_STRING) {
35768
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35769
0
        Janet *mem = fiber->data + fiber->stackstart;
35770
0
        JanetBuffer buffer;
35771
0
        janet_buffer_init(&buffer, 10 * count);
35772
0
        for (int32_t i = 0; i < count; i++)
35773
0
            janet_to_string_b(&buffer, mem[i]);
35774
0
        stack[D] = janet_stringv(buffer.data, buffer.count);
35775
0
        janet_buffer_deinit(&buffer);
35776
0
        fiber->stacktop = fiber->stackstart;
35777
0
        vm_checkgc_pcnext();
35778
0
    }
35779
35780
0
    VM_OP(JOP_MAKE_BUFFER) {
35781
0
        int32_t count = fiber->stacktop - fiber->stackstart;
35782
0
        Janet *mem = fiber->data + fiber->stackstart;
35783
0
        JanetBuffer *buffer = janet_buffer(10 * count);
35784
0
        for (int32_t i = 0; i < count; i++)
35785
0
            janet_to_string_b(buffer, mem[i]);
35786
0
        stack[D] = janet_wrap_buffer(buffer);
35787
0
        fiber->stacktop = fiber->stackstart;
35788
0
        vm_checkgc_pcnext();
35789
0
    }
35790
35791
0
    VM_END()
35792
0
}
35793
35794
/*
35795
 * Execute a single instruction in the fiber. Does this by inspecting
35796
 * the fiber, setting a breakpoint at the next instruction, executing, and
35797
 * resetting breakpoints to how they were prior. Yes, it's a bit hacky.
35798
 */
35799
0
JanetSignal janet_step(JanetFiber *fiber, Janet in, Janet *out) {
35800
    /* No finished or currently alive fibers. */
35801
0
    JanetFiberStatus status = janet_fiber_status(fiber);
35802
0
    if (status == JANET_STATUS_ALIVE ||
35803
0
            status == JANET_STATUS_DEAD ||
35804
0
            status == JANET_STATUS_ERROR) {
35805
0
        janet_panicf("cannot step fiber with status :%s", janet_status_names[status]);
35806
0
    }
35807
35808
    /* Get PC for setting breakpoints */
35809
0
    uint32_t *pc = janet_stack_frame(fiber->data + fiber->frame)->pc;
35810
35811
    /* Check current opcode (sans debug flag). This tells us where the next or next two candidate
35812
     * instructions will be. Usually it's the next instruction in memory,
35813
     * but for branching instructions it is also the target of the branch. */
35814
0
    uint32_t *nexta = NULL, *nextb = NULL, olda = 0, oldb = 0;
35815
35816
    /* Set temporary breakpoints */
35817
0
    switch (*pc & 0x7F) {
35818
0
        default:
35819
0
            nexta = pc + 1;
35820
0
            break;
35821
        /* These we just ignore for now. Supporting them means
35822
         * we could step into and out of functions (including JOP_CALL). */
35823
0
        case JOP_RETURN_NIL:
35824
0
        case JOP_RETURN:
35825
0
        case JOP_ERROR:
35826
0
        case JOP_TAILCALL:
35827
0
            break;
35828
0
        case JOP_JUMP:
35829
0
            nexta = pc + DS;
35830
0
            break;
35831
0
        case JOP_JUMP_IF:
35832
0
        case JOP_JUMP_IF_NOT:
35833
0
            nexta = pc + 1;
35834
0
            nextb = pc + ES;
35835
0
            break;
35836
0
    }
35837
0
    if (nexta) {
35838
0
        olda = *nexta;
35839
0
        *nexta |= 0x80;
35840
0
    }
35841
0
    if (nextb) {
35842
0
        oldb = *nextb;
35843
0
        *nextb |= 0x80;
35844
0
    }
35845
35846
    /* Go */
35847
0
    JanetSignal signal = janet_continue(fiber, in, out);
35848
35849
    /* Restore */
35850
0
    if (nexta) *nexta = olda;
35851
0
    if (nextb) *nextb = oldb;
35852
35853
0
    return signal;
35854
0
}
35855
35856
0
static Janet void_cfunction(int32_t argc, Janet *argv) {
35857
0
    (void) argc;
35858
0
    (void) argv;
35859
0
    janet_panic("placeholder");
35860
0
}
35861
35862
0
Janet janet_call(JanetFunction *fun, int32_t argc, const Janet *argv) {
35863
    /* Check entry conditions */
35864
0
    if (!janet_vm.fiber)
35865
0
        janet_panic("janet_call failed because there is no current fiber");
35866
0
    if (janet_vm.stackn >= JANET_RECURSION_GUARD)
35867
0
        janet_panic("C stack recursed too deeply");
35868
35869
    /* Dirty stack */
35870
0
    int32_t dirty_stack = janet_vm.fiber->stacktop - janet_vm.fiber->stackstart;
35871
0
    if (dirty_stack) {
35872
0
        janet_fiber_cframe(janet_vm.fiber, void_cfunction);
35873
0
    }
35874
35875
    /* Tracing */
35876
0
    if (fun->gc.flags & JANET_FUNCFLAG_TRACE) {
35877
0
        janet_vm.stackn++;
35878
0
        vm_do_trace(fun, argc, argv);
35879
0
        janet_vm.stackn--;
35880
0
    }
35881
35882
    /* Push frame */
35883
0
    janet_fiber_pushn(janet_vm.fiber, argv, argc);
35884
0
    if (janet_fiber_funcframe(janet_vm.fiber, fun)) {
35885
0
        int32_t min = fun->def->min_arity;
35886
0
        int32_t max = fun->def->max_arity;
35887
0
        Janet funv = janet_wrap_function(fun);
35888
0
        if (min == max && min != argc)
35889
0
            janet_panicf("arity mismatch in %v, expected %d, got %d", funv, min, argc);
35890
0
        if (min >= 0 && argc < min)
35891
0
            janet_panicf("arity mismatch in %v, expected at least %d, got %d", funv, min, argc);
35892
0
        janet_panicf("arity mismatch in %v, expected at most %d, got %d", funv, max, argc);
35893
0
    }
35894
0
    janet_fiber_frame(janet_vm.fiber)->flags |= JANET_STACKFRAME_ENTRANCE;
35895
35896
    /* Set up */
35897
0
    int32_t oldn = janet_vm.stackn++;
35898
0
    int handle = janet_gclock();
35899
35900
    /* Run vm */
35901
0
    janet_vm.fiber->flags |= JANET_FIBER_RESUME_NO_USEVAL | JANET_FIBER_RESUME_NO_SKIP;
35902
0
    int old_coerce_error = janet_vm.coerce_error;
35903
0
    janet_vm.coerce_error = 1;
35904
0
    JanetSignal signal = run_vm(janet_vm.fiber, janet_wrap_nil());
35905
0
    janet_vm.coerce_error = old_coerce_error;
35906
35907
    /* Teardown */
35908
0
    janet_vm.stackn = oldn;
35909
0
    janet_gcunlock(handle);
35910
0
    if (dirty_stack) {
35911
0
        janet_fiber_popframe(janet_vm.fiber);
35912
0
        janet_vm.fiber->stacktop += dirty_stack;
35913
0
    }
35914
35915
0
    if (signal != JANET_SIGNAL_OK) {
35916
        /* Should match logic in janet_signalv */
35917
0
#ifdef JANET_EV
35918
0
        if (janet_vm.root_fiber != NULL && signal == JANET_SIGNAL_EVENT) {
35919
0
            janet_vm.root_fiber->sched_id++;
35920
0
        }
35921
0
#endif
35922
0
        if (signal != JANET_SIGNAL_ERROR) {
35923
0
            *janet_vm.return_reg = janet_wrap_string(janet_formatc("%v coerced from %s to error", *janet_vm.return_reg, janet_signal_names[signal]));
35924
0
        }
35925
0
        janet_panicv(*janet_vm.return_reg);
35926
0
    }
35927
35928
0
    return *janet_vm.return_reg;
35929
0
}
35930
35931
0
static JanetSignal janet_check_can_resume(JanetFiber *fiber, Janet *out, int is_cancel) {
35932
    /* Check conditions */
35933
0
    JanetFiberStatus old_status = janet_fiber_status(fiber);
35934
0
    if (janet_vm.stackn >= JANET_RECURSION_GUARD) {
35935
0
        janet_fiber_set_status(fiber, JANET_STATUS_ERROR);
35936
0
        *out = janet_cstringv("C stack recursed too deeply");
35937
0
        return JANET_SIGNAL_ERROR;
35938
0
    }
35939
    /* If a "task" fiber is trying to be used as a normal fiber, detect that. See bug #920.
35940
     * Fibers must be marked as root fibers manually, or by the ev scheduler. */
35941
0
    if (janet_vm.fiber != NULL && (fiber->gc.flags & JANET_FIBER_FLAG_ROOT)) {
35942
0
#ifdef JANET_EV
35943
0
        *out = janet_cstringv(is_cancel
35944
0
                              ? "cannot cancel root fiber, use ev/cancel"
35945
0
                              : "cannot resume root fiber, use ev/go");
35946
#else
35947
        *out = janet_cstringv(is_cancel
35948
                              ? "cannot cancel root fiber"
35949
                              : "cannot resume root fiber");
35950
#endif
35951
0
        return JANET_SIGNAL_ERROR;
35952
0
    }
35953
0
    if (old_status == JANET_STATUS_ALIVE ||
35954
0
            old_status == JANET_STATUS_DEAD ||
35955
0
            (old_status >= JANET_STATUS_USER0 && old_status <= JANET_STATUS_USER4) ||
35956
0
            old_status == JANET_STATUS_ERROR) {
35957
0
        const uint8_t *str = janet_formatc("cannot resume fiber with status :%s",
35958
0
                                           janet_status_names[old_status]);
35959
0
        *out = janet_wrap_string(str);
35960
0
        return JANET_SIGNAL_ERROR;
35961
0
    }
35962
0
    return JANET_SIGNAL_OK;
35963
0
}
35964
35965
0
void janet_try_init(JanetTryState *state) {
35966
0
    state->stackn = janet_vm.stackn++;
35967
0
    state->gc_handle = janet_vm.gc_suspend;
35968
0
    state->vm_fiber = janet_vm.fiber;
35969
0
    state->vm_jmp_buf = janet_vm.signal_buf;
35970
0
    state->vm_return_reg = janet_vm.return_reg;
35971
0
    state->coerce_error = janet_vm.coerce_error;
35972
0
    janet_vm.return_reg = &(state->payload);
35973
0
    janet_vm.signal_buf = &(state->buf);
35974
0
    janet_vm.coerce_error = 0;
35975
0
}
35976
35977
0
void janet_restore(JanetTryState *state) {
35978
0
    janet_vm.stackn = state->stackn;
35979
0
    janet_vm.gc_suspend = state->gc_handle;
35980
0
    janet_vm.fiber = state->vm_fiber;
35981
0
    janet_vm.signal_buf = state->vm_jmp_buf;
35982
0
    janet_vm.return_reg = state->vm_return_reg;
35983
0
    janet_vm.coerce_error = state->coerce_error;
35984
0
}
35985
35986
0
static JanetSignal janet_continue_no_check(JanetFiber *fiber, Janet in, Janet *out) {
35987
35988
0
    JanetFiberStatus old_status = janet_fiber_status(fiber);
35989
35990
0
#ifdef JANET_EV
35991
0
    janet_fiber_did_resume(fiber);
35992
0
#endif
35993
35994
    /* Clear last value */
35995
0
    fiber->last_value = janet_wrap_nil();
35996
35997
    /* Continue child fiber if it exists */
35998
0
    if (fiber->child) {
35999
0
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
36000
0
        JanetFiber *child = fiber->child;
36001
0
        uint32_t instr = (janet_stack_frame(fiber->data + fiber->frame)->pc)[0];
36002
0
        janet_vm.stackn++;
36003
0
        JanetSignal sig = janet_continue(child, in, &in);
36004
0
        janet_vm.stackn--;
36005
0
        if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
36006
0
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
36007
0
            *out = in;
36008
0
            janet_fiber_set_status(fiber, sig);
36009
0
            fiber->last_value = child->last_value;
36010
0
            return sig;
36011
0
        }
36012
        /* Check if we need any special handling for certain opcodes */
36013
0
        switch (instr & 0x7F) {
36014
0
            default:
36015
0
                break;
36016
0
            case JOP_NEXT: {
36017
0
                if (sig == JANET_SIGNAL_OK ||
36018
0
                        sig == JANET_SIGNAL_ERROR ||
36019
0
                        sig == JANET_SIGNAL_USER0 ||
36020
0
                        sig == JANET_SIGNAL_USER1 ||
36021
0
                        sig == JANET_SIGNAL_USER2 ||
36022
0
                        sig == JANET_SIGNAL_USER3 ||
36023
0
                        sig == JANET_SIGNAL_USER4) {
36024
0
                    in = janet_wrap_nil();
36025
0
                } else {
36026
0
                    in = janet_wrap_integer(0);
36027
0
                }
36028
0
                break;
36029
0
            }
36030
0
        }
36031
0
        fiber->child = NULL;
36032
0
    }
36033
36034
    /* Handle new fibers being resumed with a non-nil value */
36035
0
    if (old_status == JANET_STATUS_NEW && !janet_checktype(in, JANET_NIL)) {
36036
0
        Janet *stack = fiber->data + fiber->frame;
36037
0
        JanetFunction *func = janet_stack_frame(stack)->func;
36038
0
        if (func) {
36039
0
            if (func->def->arity > 0) {
36040
0
                stack[0] = in;
36041
0
            } else if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
36042
0
                stack[0] = janet_wrap_tuple(janet_tuple_n(&in, 1));
36043
0
            }
36044
0
        }
36045
0
    }
36046
36047
    /* Save global state */
36048
0
    JanetTryState tstate;
36049
0
    JanetSignal sig = janet_try(&tstate);
36050
0
    if (!sig) {
36051
        /* Normal setup */
36052
0
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
36053
0
        janet_vm.fiber = fiber;
36054
0
        janet_fiber_set_status(fiber, JANET_STATUS_ALIVE);
36055
0
        sig = run_vm(fiber, in);
36056
0
    }
36057
36058
    /* Restore */
36059
0
    if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
36060
0
    janet_fiber_set_status(fiber, sig);
36061
0
    janet_restore(&tstate);
36062
0
    fiber->last_value = tstate.payload;
36063
0
    *out = tstate.payload;
36064
36065
0
    return sig;
36066
0
}
36067
36068
/* Enter the main vm loop */
36069
0
JanetSignal janet_continue(JanetFiber *fiber, Janet in, Janet *out) {
36070
    /* Check conditions */
36071
0
    JanetSignal tmp_signal = janet_check_can_resume(fiber, out, 0);
36072
0
    if (tmp_signal) return tmp_signal;
36073
0
    return janet_continue_no_check(fiber, in, out);
36074
0
}
36075
36076
/* Enter the main vm loop but immediately raise a signal */
36077
0
JanetSignal janet_continue_signal(JanetFiber *fiber, Janet in, Janet *out, JanetSignal sig) {
36078
0
    JanetSignal tmp_signal = janet_check_can_resume(fiber, out, sig != JANET_SIGNAL_OK);
36079
0
    if (tmp_signal) return tmp_signal;
36080
0
    if (sig != JANET_SIGNAL_OK) {
36081
0
        JanetFiber *child = fiber;
36082
0
        while (child->child) child = child->child;
36083
0
        child->gc.flags &= ~JANET_FIBER_STATUS_MASK;
36084
0
        child->gc.flags |= sig << JANET_FIBER_STATUS_OFFSET;
36085
0
        child->flags |= JANET_FIBER_RESUME_SIGNAL;
36086
0
    }
36087
0
    return janet_continue_no_check(fiber, in, out);
36088
0
}
36089
36090
JanetSignal janet_pcall(
36091
    JanetFunction *fun,
36092
    int32_t argc,
36093
    const Janet *argv,
36094
    Janet *out,
36095
0
    JanetFiber **f) {
36096
0
    JanetFiber *fiber;
36097
0
    if (f && *f) {
36098
0
        fiber = janet_fiber_reset(*f, fun, argc, argv);
36099
0
    } else {
36100
0
        fiber = janet_fiber(fun, 64, argc, argv);
36101
0
    }
36102
0
    if (f) *f = fiber;
36103
0
    if (NULL == fiber) {
36104
0
        *out = janet_cstringv("arity mismatch");
36105
0
        return JANET_SIGNAL_ERROR;
36106
0
    }
36107
0
    return janet_continue(fiber, janet_wrap_nil(), out);
36108
0
}
36109
36110
0
Janet janet_mcall(const char *name, int32_t argc, Janet *argv) {
36111
    /* At least 1 argument */
36112
0
    if (argc < 1) {
36113
0
        janet_panicf("method :%s expected at least 1 argument", name);
36114
0
    }
36115
    /* Find method */
36116
0
    Janet method = janet_method_lookup(argv[0], name);
36117
0
    if (janet_checktype(method, JANET_NIL)) {
36118
0
        janet_panicf("could not find method :%s for %v", name, argv[0]);
36119
0
    }
36120
    /* Invoke method */
36121
0
    return janet_method_invoke(method, argc, argv);
36122
0
}
36123
36124
/* Setup VM */
36125
5.80k
int janet_init(void) {
36126
36127
    /* Garbage collection */
36128
5.80k
    janet_vm.blocks = NULL;
36129
5.80k
    janet_vm.weak_blocks = NULL;
36130
5.80k
    janet_vm.next_collection = 0;
36131
5.80k
    janet_vm.gc_interval = 0x400000;
36132
5.80k
    janet_vm.block_count = 0;
36133
5.80k
    janet_vm.gc_mark_phase = 0;
36134
36135
5.80k
    janet_symcache_init();
36136
36137
    /* Initialize gc roots */
36138
5.80k
    janet_vm.roots = NULL;
36139
5.80k
    janet_vm.root_count = 0;
36140
5.80k
    janet_vm.root_capacity = 0;
36141
36142
    /* Scratch memory */
36143
5.80k
    janet_vm.user = NULL;
36144
5.80k
    janet_vm.scratch_mem = NULL;
36145
5.80k
    janet_vm.scratch_len = 0;
36146
5.80k
    janet_vm.scratch_cap = 0;
36147
36148
    /* Sandbox flags */
36149
5.80k
    janet_vm.sandbox_flags = 0;
36150
36151
    /* Initialize registry */
36152
5.80k
    janet_vm.registry = NULL;
36153
5.80k
    janet_vm.registry_cap = 0;
36154
5.80k
    janet_vm.registry_count = 0;
36155
5.80k
    janet_vm.registry_dirty = 0;
36156
36157
    /* Initialize abstract registry */
36158
5.80k
    janet_vm.abstract_registry = janet_table(0);
36159
5.80k
    janet_gcroot(janet_wrap_table(janet_vm.abstract_registry));
36160
36161
    /* Traversal */
36162
5.80k
    janet_vm.traversal = NULL;
36163
5.80k
    janet_vm.traversal_base = NULL;
36164
5.80k
    janet_vm.traversal_top = NULL;
36165
36166
    /* Core env */
36167
5.80k
    janet_vm.core_env = NULL;
36168
36169
    /* Auto suspension */
36170
5.80k
    janet_vm.auto_suspend = 0;
36171
36172
    /* Dynamic bindings */
36173
5.80k
    janet_vm.top_dyns = NULL;
36174
36175
    /* Seed RNG */
36176
5.80k
    janet_rng_seed(janet_default_rng(), 0);
36177
36178
    /* Fibers */
36179
5.80k
    janet_vm.fiber = NULL;
36180
5.80k
    janet_vm.root_fiber = NULL;
36181
5.80k
    janet_vm.stackn = 0;
36182
36183
5.80k
#ifdef JANET_EV
36184
5.80k
    janet_ev_init();
36185
5.80k
#endif
36186
5.80k
#ifdef JANET_NET
36187
5.80k
    janet_net_init();
36188
5.80k
#endif
36189
5.80k
    return 0;
36190
5.80k
}
36191
36192
/* Disable some features at runtime with no way to re-enable them */
36193
0
void janet_sandbox(uint32_t flags) {
36194
0
    janet_sandbox_assert(JANET_SANDBOX_SANDBOX);
36195
0
    janet_vm.sandbox_flags |= flags;
36196
0
}
36197
36198
0
void janet_sandbox_assert(uint32_t forbidden_flags) {
36199
0
    if (forbidden_flags & janet_vm.sandbox_flags) {
36200
0
        janet_panic("operation forbidden by sandbox");
36201
0
    }
36202
0
}
36203
36204
/* Clear all memory associated with the VM */
36205
5.80k
void janet_deinit(void) {
36206
5.80k
    janet_clear_memory();
36207
5.80k
    janet_symcache_deinit();
36208
5.80k
    janet_free(janet_vm.roots);
36209
5.80k
    janet_vm.roots = NULL;
36210
5.80k
    janet_vm.root_count = 0;
36211
5.80k
    janet_vm.root_capacity = 0;
36212
5.80k
    janet_vm.abstract_registry = NULL;
36213
5.80k
    janet_vm.core_env = NULL;
36214
5.80k
    janet_vm.top_dyns = NULL;
36215
5.80k
    janet_vm.user = NULL;
36216
5.80k
    janet_free(janet_vm.traversal_base);
36217
5.80k
    janet_vm.fiber = NULL;
36218
5.80k
    janet_vm.root_fiber = NULL;
36219
5.80k
    janet_free(janet_vm.registry);
36220
5.80k
    janet_vm.registry = NULL;
36221
5.80k
#ifdef JANET_EV
36222
5.80k
    janet_ev_deinit();
36223
5.80k
#endif
36224
5.80k
#ifdef JANET_NET
36225
5.80k
    janet_net_deinit();
36226
5.80k
#endif
36227
5.80k
}
36228
36229
36230
/* src/core/wrap.c */
36231
#line 0 "src/core/wrap.c"
36232
36233
/*
36234
* Copyright (c) 2025 Calvin Rose
36235
*
36236
* Permission is hereby granted, free of charge, to any person obtaining a copy
36237
* of this software and associated documentation files (the "Software"), to
36238
* deal in the Software without restriction, including without limitation the
36239
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
36240
* sell copies of the Software, and to permit persons to whom the Software is
36241
* furnished to do so, subject to the following conditions:
36242
*
36243
* The above copyright notice and this permission notice shall be included in
36244
* all copies or substantial portions of the Software.
36245
*
36246
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
36247
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
36248
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36249
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
36250
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
36251
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
36252
* IN THE SOFTWARE.
36253
*/
36254
36255
#ifndef JANET_AMALG
36256
#include "features.h"
36257
#include <janet.h>
36258
#include <math.h>
36259
#include "util.h"
36260
#include "state.h"
36261
#endif
36262
36263
/* Macro fills */
36264
36265
0
JanetType(janet_type)(Janet x) {
36266
0
    return janet_type(x);
36267
0
}
36268
0
int (janet_checktype)(Janet x, JanetType type) {
36269
0
    return janet_checktype(x, type);
36270
0
}
36271
0
int (janet_checktypes)(Janet x, int typeflags) {
36272
0
    return janet_checktypes(x, typeflags);
36273
0
}
36274
0
int (janet_truthy)(Janet x) {
36275
0
    return janet_truthy(x);
36276
0
}
36277
36278
0
JanetStruct(janet_unwrap_struct)(Janet x) {
36279
0
    return janet_unwrap_struct(x);
36280
0
}
36281
0
JanetTuple(janet_unwrap_tuple)(Janet x) {
36282
0
    return janet_unwrap_tuple(x);
36283
0
}
36284
0
JanetFiber *(janet_unwrap_fiber)(Janet x) {
36285
0
    return janet_unwrap_fiber(x);
36286
0
}
36287
0
JanetArray *(janet_unwrap_array)(Janet x) {
36288
0
    return janet_unwrap_array(x);
36289
0
}
36290
0
JanetTable *(janet_unwrap_table)(Janet x) {
36291
0
    return janet_unwrap_table(x);
36292
0
}
36293
0
JanetBuffer *(janet_unwrap_buffer)(Janet x) {
36294
0
    return janet_unwrap_buffer(x);
36295
0
}
36296
0
JanetString(janet_unwrap_string)(Janet x) {
36297
0
    return janet_unwrap_string(x);
36298
0
}
36299
0
JanetSymbol(janet_unwrap_symbol)(Janet x) {
36300
0
    return janet_unwrap_symbol(x);
36301
0
}
36302
0
JanetKeyword(janet_unwrap_keyword)(Janet x) {
36303
0
    return janet_unwrap_keyword(x);
36304
0
}
36305
0
JanetAbstract(janet_unwrap_abstract)(Janet x) {
36306
0
    return janet_unwrap_abstract(x);
36307
0
}
36308
0
void *(janet_unwrap_pointer)(Janet x) {
36309
0
    return janet_unwrap_pointer(x);
36310
0
}
36311
0
JanetFunction *(janet_unwrap_function)(Janet x) {
36312
0
    return janet_unwrap_function(x);
36313
0
}
36314
0
JanetCFunction(janet_unwrap_cfunction)(Janet x) {
36315
0
    return janet_unwrap_cfunction(x);
36316
0
}
36317
0
int (janet_unwrap_boolean)(Janet x) {
36318
0
    return janet_unwrap_boolean(x);
36319
0
}
36320
0
int32_t (janet_unwrap_integer)(Janet x) {
36321
0
    return janet_unwrap_integer(x);
36322
0
}
36323
36324
#if defined(JANET_NANBOX_32) || defined(JANET_NANBOX_64)
36325
0
Janet(janet_wrap_nil)(void) {
36326
0
    return janet_wrap_nil();
36327
0
}
36328
0
Janet(janet_wrap_true)(void) {
36329
0
    return janet_wrap_true();
36330
0
}
36331
0
Janet(janet_wrap_false)(void) {
36332
0
    return janet_wrap_false();
36333
0
}
36334
0
Janet(janet_wrap_boolean)(int x) {
36335
0
    return janet_wrap_boolean(x);
36336
0
}
36337
0
Janet(janet_wrap_string)(JanetString x) {
36338
0
    return janet_wrap_string(x);
36339
0
}
36340
0
Janet(janet_wrap_symbol)(JanetSymbol x) {
36341
0
    return janet_wrap_symbol(x);
36342
0
}
36343
0
Janet(janet_wrap_keyword)(JanetKeyword x) {
36344
0
    return janet_wrap_keyword(x);
36345
0
}
36346
0
Janet(janet_wrap_array)(JanetArray *x) {
36347
0
    return janet_wrap_array(x);
36348
0
}
36349
0
Janet(janet_wrap_tuple)(JanetTuple x) {
36350
0
    return janet_wrap_tuple(x);
36351
0
}
36352
0
Janet(janet_wrap_struct)(JanetStruct x) {
36353
0
    return janet_wrap_struct(x);
36354
0
}
36355
0
Janet(janet_wrap_fiber)(JanetFiber *x) {
36356
0
    return janet_wrap_fiber(x);
36357
0
}
36358
0
Janet(janet_wrap_buffer)(JanetBuffer *x) {
36359
0
    return janet_wrap_buffer(x);
36360
0
}
36361
0
Janet(janet_wrap_function)(JanetFunction *x) {
36362
0
    return janet_wrap_function(x);
36363
0
}
36364
0
Janet(janet_wrap_cfunction)(JanetCFunction x) {
36365
0
    return janet_wrap_cfunction(x);
36366
0
}
36367
0
Janet(janet_wrap_table)(JanetTable *x) {
36368
0
    return janet_wrap_table(x);
36369
0
}
36370
0
Janet(janet_wrap_abstract)(JanetAbstract x) {
36371
0
    return janet_wrap_abstract(x);
36372
0
}
36373
0
Janet(janet_wrap_pointer)(void *x) {
36374
0
    return janet_wrap_pointer(x);
36375
0
}
36376
0
Janet(janet_wrap_integer)(int32_t x) {
36377
0
    return janet_wrap_integer(x);
36378
0
}
36379
#endif
36380
36381
#ifndef JANET_NANBOX_32
36382
0
double (janet_unwrap_number)(Janet x) {
36383
0
    return janet_unwrap_number(x);
36384
0
}
36385
#endif
36386
36387
#ifdef JANET_NANBOX_64
36388
0
Janet(janet_wrap_number)(double x) {
36389
0
    return janet_wrap_number(x);
36390
0
}
36391
#endif
36392
36393
/*****/
36394
36395
130k
void *janet_memalloc_empty(int32_t count) {
36396
130k
    int32_t i;
36397
130k
    void *mem = janet_malloc((size_t) count * sizeof(JanetKV));
36398
130k
    janet_vm.next_collection += (size_t) count * sizeof(JanetKV);
36399
130k
    if (NULL == mem) {
36400
0
        JANET_OUT_OF_MEMORY;
36401
0
    }
36402
130k
    JanetKV *mmem = (JanetKV *)mem;
36403
6.21M
    for (i = 0; i < count; i++) {
36404
6.07M
        JanetKV *kv = mmem + i;
36405
6.07M
        kv->key = janet_wrap_nil();
36406
6.07M
        kv->value = janet_wrap_nil();
36407
6.07M
    }
36408
130k
    return mem;
36409
130k
}
36410
36411
1.76M
void janet_memempty(JanetKV *mem, int32_t count) {
36412
1.76M
    int32_t i;
36413
12.7M
    for (i = 0; i < count; i++) {
36414
10.9M
        mem[i].key = janet_wrap_nil();
36415
10.9M
        mem[i].value = janet_wrap_nil();
36416
10.9M
    }
36417
1.76M
}
36418
36419
#ifdef JANET_NANBOX_64
36420
36421
0
Janet janet_wrap_number_safe(double d) {
36422
0
    Janet ret;
36423
0
    ret.number = isnan(d) ? NAN : d;
36424
0
    return ret;
36425
0
}
36426
36427
18.8M
void *janet_nanbox_to_pointer(Janet x) {
36428
18.8M
    x.i64 &= JANET_NANBOX_PAYLOADBITS;
36429
18.8M
    return x.pointer;
36430
18.8M
}
36431
36432
2.58M
Janet janet_nanbox_from_pointer(void *p, uint64_t tagmask) {
36433
2.58M
    Janet ret;
36434
2.58M
    ret.pointer = p;
36435
2.58M
    ret.u64 |= tagmask;
36436
2.58M
    return ret;
36437
2.58M
}
36438
36439
10.5M
Janet janet_nanbox_from_cpointer(const void *p, uint64_t tagmask) {
36440
10.5M
    Janet ret;
36441
10.5M
    ret.pointer = (void *)p;
36442
10.5M
    ret.u64 |= tagmask;
36443
10.5M
    return ret;
36444
10.5M
}
36445
36446
125k
Janet janet_nanbox_from_double(double d) {
36447
125k
    Janet ret;
36448
125k
    ret.number = d;
36449
125k
    return ret;
36450
125k
}
36451
36452
34.1M
Janet janet_nanbox_from_bits(uint64_t bits) {
36453
34.1M
    Janet ret;
36454
34.1M
    ret.u64 = bits;
36455
34.1M
    return ret;
36456
34.1M
}
36457
36458
#elif defined(JANET_NANBOX_32)
36459
36460
Janet janet_wrap_number(double x) {
36461
    Janet ret;
36462
    ret.number = x;
36463
    ret.tagged.type += JANET_DOUBLE_OFFSET;
36464
    return ret;
36465
}
36466
36467
Janet janet_wrap_number_safe(double d) {
36468
    double x = isnan(d) ? NAN : d;
36469
    return janet_wrap_number(x);
36470
}
36471
36472
Janet janet_nanbox32_from_tagi(uint32_t tag, int32_t integer) {
36473
    Janet ret;
36474
    ret.tagged.type = tag;
36475
    ret.tagged.payload.integer = integer;
36476
    return ret;
36477
}
36478
36479
Janet janet_nanbox32_from_tagp(uint32_t tag, void *pointer) {
36480
    Janet ret;
36481
    ret.tagged.type = tag;
36482
    ret.tagged.payload.pointer = pointer;
36483
    return ret;
36484
}
36485
36486
double janet_unwrap_number(Janet x) {
36487
    x.tagged.type -= JANET_DOUBLE_OFFSET;
36488
    return x.number;
36489
}
36490
36491
#else
36492
36493
Janet janet_wrap_number_safe(double d) {
36494
    return janet_wrap_number(d);
36495
}
36496
36497
Janet janet_wrap_nil(void) {
36498
    Janet y;
36499
    y.type = JANET_NIL;
36500
    y.as.u64 = 0;
36501
    return y;
36502
}
36503
36504
Janet janet_wrap_true(void) {
36505
    Janet y;
36506
    y.type = JANET_BOOLEAN;
36507
    y.as.u64 = 1;
36508
    return y;
36509
}
36510
36511
Janet janet_wrap_false(void) {
36512
    Janet y;
36513
    y.type = JANET_BOOLEAN;
36514
    y.as.u64 = 0;
36515
    return y;
36516
}
36517
36518
Janet janet_wrap_boolean(int x) {
36519
    Janet y;
36520
    y.type = JANET_BOOLEAN;
36521
    y.as.u64 = !!x;
36522
    return y;
36523
}
36524
36525
#define JANET_WRAP_DEFINE(NAME, TYPE, DTYPE, UM)\
36526
Janet janet_wrap_##NAME(TYPE x) {\
36527
    Janet y;\
36528
    y.type = DTYPE;\
36529
    y.as.u64 = 0; /* zero other bits in case of 32 bit integer */ \
36530
    y.as.UM = x;\
36531
    return y;\
36532
}
36533
36534
JANET_WRAP_DEFINE(number, double, JANET_NUMBER, number)
36535
JANET_WRAP_DEFINE(string, const uint8_t *, JANET_STRING, cpointer)
36536
JANET_WRAP_DEFINE(symbol, const uint8_t *, JANET_SYMBOL, cpointer)
36537
JANET_WRAP_DEFINE(keyword, const uint8_t *, JANET_KEYWORD, cpointer)
36538
JANET_WRAP_DEFINE(array, JanetArray *, JANET_ARRAY, pointer)
36539
JANET_WRAP_DEFINE(tuple, const Janet *, JANET_TUPLE, cpointer)
36540
JANET_WRAP_DEFINE(struct, const JanetKV *, JANET_STRUCT, cpointer)
36541
JANET_WRAP_DEFINE(fiber, JanetFiber *, JANET_FIBER, pointer)
36542
JANET_WRAP_DEFINE(buffer, JanetBuffer *, JANET_BUFFER, pointer)
36543
JANET_WRAP_DEFINE(function, JanetFunction *, JANET_FUNCTION, pointer)
36544
JANET_WRAP_DEFINE(cfunction, JanetCFunction, JANET_CFUNCTION, pointer)
36545
JANET_WRAP_DEFINE(table, JanetTable *, JANET_TABLE, pointer)
36546
JANET_WRAP_DEFINE(abstract, void *, JANET_ABSTRACT, pointer)
36547
JANET_WRAP_DEFINE(pointer, void *, JANET_POINTER, pointer)
36548
36549
#undef JANET_WRAP_DEFINE
36550
36551
#endif
36552
36553
static const unsigned char janet_core_image_bytes[] = {
36554
  0xD3, 0x82, 0xBC, 0xCF, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0xD3, 0x03, 0xD0, 0x0A, 0x73, 0x6F, 
36555
  0x75, 0x72, 0x63, 0x65, 0x2D, 0x6D, 0x61, 0x70, 0xD2, 0x03, 0x00, 0xCE, 0x0A, 0x62, 0x6F, 0x6F, 
36556
  0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x8A, 0xC6, 0x01, 0xD0, 0x03, 0x64, 0x6F, 0x63, 0xCE, 
36557
  0x80, 0x88, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 
36558
  0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
36559
  0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
36560
  0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x63, 0x6F, 
36561
  0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x73, 
36562
  0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 
36563
  0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x68, 0x61, 0x6E, 
36564
  0x64, 0x6C, 0x69, 0x6E, 0x67, 0x2C, 0x0A, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
36565
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 0x70, 0x69, 0x2E, 0xD0, 0x05, 0x76, 0x61, 0x6C, 0x75, 
36566
  0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x09, 0x28, 0x00, 0x03, 
36567
  0xCE, 0x05, 0x70, 0x61, 0x72, 0x73, 0x65, 0xDA, 0x04, 0xD8, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 
36568
  0x72, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 0x0E, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 
36569
  0x6E, 0x73, 0x75, 0x6D, 0x65, 0xD8, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 
36570
  0x61, 0x74, 0x75, 0x73, 0xD0, 0x05, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD8, 0x0C, 0x70, 0x61, 0x72, 
36571
  0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD8, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 
36572
  0x72, 0x2F, 0x65, 0x6F, 0x66, 0xD8, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x68, 0x61, 
36573
  0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xD8, 0x0E, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 
36574
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xCE, 0x08, 0x6E, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
36575
  0x00, 0x28, 0x00, 0xCF, 0x03, 0x73, 0x74, 0x72, 0x00, 0x28, 0x01, 0xDA, 0x01, 0x02, 0x28, 0x03, 
36576
  0xCF, 0x01, 0x70, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x32, 
36577
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x02, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
36578
  0x04, 0x02, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x25, 0x04, 0x05, 0x02, 0x1E, 
36579
  0x04, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x35, 0x02, 0x05, 0x00, 0x01, 
36580
  0x02, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x05, 0x00, 0x35, 0x02, 0x04, 0x00, 0x31, 
36581
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x06, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1E, 0x02, 0x04, 0x00, 0x31, 
36582
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
36583
  0x05, 0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 
36584
  0x05, 0x06, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x35, 0x04, 0x06, 0x00, 0x01, 
36585
  0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x08, 0x00, 0x01, 0x04, 0x00, 0x00, 0x04, 
36586
  0x00, 0x00, 0x00, 0x8A, 0xCA, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
36587
  0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 
36588
  0x00, 0x0E, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
36589
  0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0B, 
36590
  0x00, 0x0B, 0x00, 0x07, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 
36591
  0x00, 0x09, 0x00, 0x09, 0xCF, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0xD3, 
36592
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6B, 0x01, 0xDA, 0x06, 0xCE, 0x3A, 0x28, 0x66, 
36593
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
36594
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
36595
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x63, 0x66, 0x75, 
36596
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
36597
  0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 
36598
  0x69, 0x6F, 0x6E, 0x3F, 0xDA, 0x04, 0xD8, 0x04, 0x74, 0x79, 0x70, 0x65, 0xD0, 0x08, 0x66, 0x75, 
36599
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x06, 0x00, 0xCF, 0x01, 0x78, 0x00, 0x06, 0x01, 0xDA, 
36600
  0x16, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 
36601
  0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6B, 0x46, 0x00, 0x46, 0x00, 0x46, 0x00, 
36602
  0x43, 0x00, 0x43, 0x00, 0x43, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 
36603
  0x68, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0F, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
36604
  0x72, 0x65, 0x2F, 0x6D, 0x61, 0x74, 0x68, 0x2E, 0x63, 0x81, 0x0F, 0x01, 0xDA, 0x06, 0xCE, 0x36, 
36605
  0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
36606
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 
36607
  0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 
36608
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 
36609
  0x63, 0x6F, 0x73, 0x68, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0xD3, 
36610
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x42, 0x01, 0xDA, 0x06, 0xCE, 0x6A, 0x28, 
36611
  0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x29, 
36612
  0x0A, 0x0A, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 
36613
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
36614
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
36615
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x0A, 0x6F, 0x66, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 
36616
  0x60, 0x6E, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
36617
  0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
36618
  0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x06, 0x17, 0x00, 0x03, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x74, 
36619
  0x69, 0x74, 0x69, 0x6F, 0x6E, 0xDA, 0x04, 0xD8, 0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 
36620
  0x3F, 0xD8, 0x0B, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD7, 0x00, 
36621
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x03, 0x03, 0x03, 0x02, 0x1C, 0x00, 0x0B, 0xCE, 0x0F, 0x70, 
36622
  0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x04, 
36623
  0xD8, 0x10, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 
36624
  0x65, 0x64, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x00, 0x1C, 
36625
  0x00, 0xCF, 0x01, 0x66, 0x00, 0x1C, 0x01, 0xCF, 0x01, 0x6E, 0x00, 0x1C, 0x02, 0xCF, 0x03, 0x69, 
36626
  0x6E, 0x64, 0x00, 0x1C, 0x03, 0xCF, 0x0F, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 
36627
  0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x00, 0x1C, 0x04, 0xCF, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 
36628
  0x01, 0x1C, 0x05, 0xCF, 0x03, 0x65, 0x6E, 0x64, 0x03, 0x1C, 0x07, 0xCF, 0x03, 0x6C, 0x65, 0x6E, 
36629
  0x05, 0x1C, 0x09, 0xCF, 0x05, 0x70, 0x61, 0x72, 0x74, 0x73, 0x09, 0x1C, 0x0B, 0xCF, 0x03, 0x72, 
36630
  0x65, 0x74, 0x0A, 0x14, 0x0C, 0xCF, 0x01, 0x6B, 0x0A, 0x14, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
36631
  0x30, 0x30, 0x33, 0x41, 0x2B, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x3F, 0x06, 0x02, 0x00, 
36632
  0x1B, 0x07, 0x06, 0x00, 0x0D, 0x08, 0x07, 0x01, 0x1B, 0x09, 0x08, 0x00, 0x31, 0x09, 0x00, 0x00, 
36633
  0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x2B, 0x0C, 0x00, 0x00, 
36634
  0x23, 0x0D, 0x0C, 0x09, 0x1E, 0x0D, 0x08, 0x00, 0x33, 0x02, 0x04, 0x05, 0x35, 0x0E, 0x00, 0x00, 
36635
  0x3C, 0x0B, 0x0C, 0x0E, 0x1B, 0x04, 0x05, 0x00, 0x06, 0x05, 0x05, 0x01, 0x05, 0x0C, 0x0C, 0x01, 
36636
  0x1C, 0xF8, 0xFF, 0xFF, 0x23, 0x0C, 0x04, 0x07, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x02, 0x04, 0x00, 
36637
  0x35, 0x0D, 0x00, 0x00, 0x32, 0x0B, 0x0D, 0x00, 0x2C, 0x0F, 0x01, 0x00, 0x35, 0x0E, 0x0F, 0x00, 
36638
  0x03, 0x0B, 0x00, 0x00, 0x87, 0x36, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x0E, 0x00, 
36639
  0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
36640
  0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x04, 0x07, 
36641
  0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF5, 0x01, 0xD8, 
36642
  0x06, 0x62, 0x79, 0x74, 0x65, 0x73, 0x3F, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
36643
  0x73, 0x6C, 0x69, 0x63, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 
36644
  0x03, 0x23, 0x00, 0x0B, 0xCE, 0x06, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0xDA, 0x04, 0xD8, 0x0B, 
36645
  0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0xDA, 0x2F, 0xDA, 0x30, 0x00, 
36646
  0x23, 0x00, 0xDA, 0x1E, 0x00, 0x23, 0x01, 0xCF, 0x06, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x08, 
36647
  0x15, 0x03, 0xCF, 0x03, 0x61, 0x72, 0x72, 0x09, 0x15, 0x04, 0xCF, 0x01, 0x69, 0x09, 0x14, 0x00, 
36648
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x64, 0x0C, 0x14, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
36649
  0x30, 0x30, 0x30, 0x33, 0x63, 0x0F, 0x14, 0x07, 0xCF, 0x01, 0x76, 0x16, 0x23, 0x04, 0xCF, 0x07, 
36650
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x65, 0x16, 0x22, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
36651
  0x30, 0x33, 0x67, 0x19, 0x22, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x66, 0x1C, 
36652
  0x22, 0x06, 0xDA, 0x46, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
36653
  0x1E, 0x02, 0x12, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 
36654
  0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 
36655
  0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x07, 0x00, 0x3A, 0x05, 0x00, 0x06, 
36656
  0x1B, 0x07, 0x05, 0x00, 0x3C, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 
36657
  0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 
36658
  0x28, 0x05, 0x00, 0x00, 0x49, 0x03, 0x00, 0x05, 0x1B, 0x05, 0x03, 0x00, 0x1F, 0x05, 0x08, 0x00, 
36659
  0x3A, 0x03, 0x00, 0x05, 0x1B, 0x06, 0x03, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 
36660
  0x35, 0x03, 0x07, 0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 
36661
  0x86, 0xB1, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x22, 0x00, 0x10, 0x00, 0x10, 0x00, 
36662
  0x10, 0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
36663
  0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x07, 0x05, 0x00, 
36664
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
36665
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0xDA, 0x32, 0x00, 0x17, 
36666
  0x01, 0xDA, 0x33, 0x00, 0x17, 0x02, 0xDA, 0x25, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
36667
  0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x01, 
36668
  0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 
36669
  0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 0x00, 0x01, 
36670
  0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 
36671
  0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x33, 0x06, 0x00, 0x05, 0x2C, 0x06, 0x02, 0x00, 
36672
  0x36, 0x06, 0x00, 0x00, 0x87, 0x47, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 
36673
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 
36674
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x05, 0x00, 
36675
  0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x05, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0xD3, 0x03, 0xDA, 0x03, 
36676
  0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6F, 0x73, 
36677
  0x2E, 0x63, 0x88, 0x73, 0x01, 0xDA, 0x06, 0xCE, 0x29, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x20, 
36678
  0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 
36679
  0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
36680
  0x6C, 0x2E, 0xDA, 0x08, 0xD8, 0x05, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0xCF, 0x09, 0x6D, 0x61, 0x74, 
36681
  0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 
36682
  0x0B, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 
36683
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
36684
  0x20, 0x61, 0x72, 0x63, 0x73, 0x69, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xD8, 
36685
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0xCF, 0x05, 0x61, 0x73, 0x3F, 0x2D, 
36686
  0x3E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xD5, 0x01, 0xDA, 0x06, 0xCE, 
36687
  0x80, 0xE0, 0x28, 0x61, 0x73, 0x3F, 0x2D, 0x3E, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x26, 0x20, 
36688
  0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 
36689
  0x6F, 0x72, 0x6D, 0x73, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2C, 0x20, 0x72, 
36690
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x61, 0x73, 0x60, 0x20, 0x69, 0x6E, 
36691
  0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
36692
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
36693
  0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x20, 0x54, 0x68, 
36694
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x73, 0x20, 
36695
  0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 0x20, 
36696
  0x61, 0x6E, 0x79, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 
36697
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 0x73, 
36698
  0x65, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x3B, 0x20, 
36699
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
36700
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
36701
  0x65, 0x2E, 0xD0, 0x05, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xCB, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x02, 
36702
  0xFF, 0x00, 0x00, 0x07, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x02, 0x05, 
36703
  0xCE, 0x05, 0x61, 0x73, 0x3F, 0x2D, 0x3E, 0xDA, 0x04, 0xD8, 0x06, 0x67, 0x65, 0x6E, 0x73, 0x79, 
36704
  0x6D, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x07, 0x00, 0x01, 
36705
  0x03, 0xCE, 0x08, 0x70, 0x6F, 0x73, 0x74, 0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 
36706
  0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x09, 0x23, 0x00, 0x04, 0xCE, 0x04, 0x77, 0x61, 
36707
  0x6C, 0x6B, 0xDA, 0x04, 0xDA, 0x1C, 0xD0, 0x05, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 
36708
  0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x00, 0x10, 0x00, 0x07, 0xCE, 0x09, 0x77, 0x61, 
36709
  0x6C, 0x6B, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x10, 0x00, 0xDA, 0x31, 0x00, 0x10, 
36710
  0x01, 0xCF, 0x04, 0x66, 0x6F, 0x72, 0x6D, 0x00, 0x10, 0x02, 0xCF, 0x09, 0x77, 0x61, 0x6C, 0x6B, 
36711
  0x2D, 0x64, 0x69, 0x63, 0x74, 0x01, 0x10, 0x04, 0xDA, 0x39, 0x01, 0x0F, 0x01, 0xCF, 0x07, 0x5F, 
36712
  0x30, 0x30, 0x30, 0x30, 0x32, 0x70, 0x04, 0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
36713
  0x32, 0x6F, 0x06, 0x0F, 0x05, 0xDA, 0x3A, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 
36714
  0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x0A, 0x00, 0x1B, 
36715
  0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x3A, 0x08, 0x01, 0x05, 0x31, 
36716
  0x08, 0x00, 0x00, 0x35, 0x09, 0x00, 0x00, 0x3C, 0x04, 0x07, 0x09, 0x49, 0x06, 0x01, 0x06, 0x1C, 
36717
  0xF7, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x85, 0xAC, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
36718
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x17, 0x00, 0x14, 0x00, 0x14, 
36719
  0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFE, 0x01, 0xD0, 0x06, 0x73, 0x74, 0x72, 0x75, 
36720
  0x63, 0x74, 0xD8, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 
36721
  0x75, 0x63, 0x74, 0xD0, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
36722
  0x00, 0x0A, 0x02, 0x02, 0x02, 0x01, 0x10, 0x00, 0x07, 0xCE, 0x08, 0x77, 0x61, 0x6C, 0x6B, 0x2D, 
36723
  0x69, 0x6E, 0x64, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x10, 0x00, 0xDA, 0x31, 0x00, 0x10, 0x01, 0xDA, 
36724
  0x64, 0x00, 0x10, 0x02, 0xCF, 0x08, 0x77, 0x61, 0x6C, 0x6B, 0x2D, 0x69, 0x6E, 0x64, 0x01, 0x10, 
36725
  0x04, 0xDA, 0x39, 0x01, 0x0F, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6E, 0x04, 
36726
  0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x6D, 0x07, 0x0F, 0x07, 0xDA, 0x1E, 
36727
  0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 
36728
  0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x0A, 0x00, 0x3A, 0x05, 0x01, 0x06, 0x1B, 0x07, 0x05, 0x00, 
36729
  0x31, 0x07, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x09, 0x00, 0x00, 
36730
  0x35, 0x08, 0x09, 0x00, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 
36731
  0x85, 0xA7, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
36732
  0x03, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0xBF, 
36733
  0xFE, 0x01, 0xD0, 0x05, 0x74, 0x75, 0x70, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
36734
  0x07, 0x02, 0x02, 0x02, 0x04, 0x0F, 0x00, 0x03, 0xCE, 0x0C, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 
36735
  0x79, 0x6E, 0x74, 0x61, 0x78, 0x21, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x2C, 0xD7, 0x00, 
36736
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x08, 0x28, 0x00, 0x05, 0xCE, 0x0B, 0x6B, 
36737
  0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 
36738
  0xD8, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 0x79, 0x70, 0x65, 0xD0, 0x06, 0x70, 0x61, 
36739
  0x72, 0x65, 0x6E, 0x73, 0xDA, 0x2C, 0xD8, 0x0E, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x62, 0x72, 
36740
  0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xD8, 0x0F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6F, 
36741
  0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0xD8, 0x0C, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 
36742
  0x65, 0x74, 0x6D, 0x61, 0x70, 0x00, 0x28, 0x00, 0xCF, 0x06, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 
36743
  0x00, 0x28, 0x01, 0xCF, 0x05, 0x61, 0x66, 0x74, 0x65, 0x72, 0x00, 0x28, 0x02, 0xCF, 0x0B, 0x6B, 
36744
  0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x05, 0x0F, 0x04, 0xCF, 0x07, 0x5F, 
36745
  0x30, 0x30, 0x30, 0x30, 0x32, 0x6C, 0x1F, 0x27, 0x05, 0xCF, 0x03, 0x72, 0x65, 0x73, 0x31, 0x00, 
36746
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 
36747
  0x06, 0x04, 0x1B, 0x04, 0x05, 0x00, 0x1E, 0x05, 0x08, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 
36748
  0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x25, 0x07, 0x08, 0x06, 0x1B, 0x03, 
36749
  0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x18, 0x00, 0x31, 0x00, 
36750
  0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x25, 0x06, 
36751
  0x07, 0x05, 0x1E, 0x06, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x05, 
36752
  0x07, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x07, 
36753
  0x05, 0x00, 0x35, 0x05, 0x07, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x00, 
36754
  0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x35, 0x04, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x34, 0x04, 
36755
  0x00, 0x00, 0x2C, 0x06, 0x07, 0x00, 0x36, 0x06, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0x85, 0x5B, 
36756
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x01, 0x16, 0x00, 
36757
  0x16, 0x00, 0x16, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 
36758
  0x03, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 0x00, 0x12, 
36759
  0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 
36760
  0x00, 0x07, 0x03, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36761
  0xBF, 0xFA, 0x03, 0x00, 0x0F, 0x00, 0xDA, 0x7A, 0x00, 0x0F, 0x01, 0xDA, 0x7B, 0x00, 0x0F, 0x02, 
36762
  0xCF, 0x0C, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x21, 0x31, 0x01, 
36763
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 
36764
  0x06, 0x04, 0x1E, 0x05, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x04, 
36765
  0x06, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x01, 0x00, 0x32, 0x00, 
36766
  0x03, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x36, 0x04, 0x00, 0x00, 0x85, 0x68, 0x25, 0x00, 0x25, 0x00, 
36767
  0x25, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x17, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x17, 
36768
  0x00, 0x17, 0x00, 0x17, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x23, 0x00, 0xDA, 0x31, 0x00, 
36769
  0x23, 0x01, 0xDA, 0x64, 0x00, 0x23, 0x02, 0xCF, 0x04, 0x77, 0x61, 0x6C, 0x6B, 0x03, 0x23, 0x04, 
36770
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x71, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 
36771
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x25, 0x03, 0x04, 
36772
  0x05, 0x1E, 0x03, 0x04, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 
36773
  0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x04, 0x06, 0x1E, 0x05, 0x07, 0x00, 0x32, 0x00, 0x01, 
36774
  0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x04, 
36775
  0x00, 0x36, 0x07, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x25, 0x06, 0x04, 0x07, 0x1E, 0x06, 0x04, 
36776
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x36, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 
36777
  0x00, 0x25, 0x07, 0x04, 0x08, 0x1E, 0x07, 0x07, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x09, 0x06, 
36778
  0x00, 0x35, 0x08, 0x09, 0x00, 0x32, 0x01, 0x08, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x36, 0x09, 0x00, 
36779
  0x00, 0x03, 0x01, 0x00, 0x00, 0x85, 0xB7, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 
36780
  0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 
36781
  0x03, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFE, 0x03, 
36782
  0x00, 0x03, 0x00, 0x03, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 
36783
  0x03, 0x04, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x03, 
36784
  0x00, 0x07, 0x00, 0xDA, 0x31, 0x00, 0x07, 0x01, 0xDA, 0x64, 0x00, 0x07, 0x02, 0xCF, 0x08, 0x70, 
36785
  0x6F, 0x73, 0x74, 0x77, 0x61, 0x6C, 0x6B, 0x2E, 0x02, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x32, 
36786
  0x03, 0x01, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x36, 
36787
  0x00, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x04, 
36788
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x64, 0xBF, 0xFF, 
36789
  0x00, 0x02, 0xDA, 0x80, 0x82, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2D, 0x01, 0x00, 0x00, 0x32, 0x01, 
36790
  0x00, 0x00, 0x2D, 0x01, 0x00, 0x02, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xC2, 0x14, 0x00, 
36791
  0x14, 0x00, 0x14, 0x00, 0x14, 0x85, 0xBE, 0x01, 0x04, 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06, 
36792
  0x00, 0x03, 0x00, 0x03, 0x05, 0x00, 0x00, 0x00, 0xCF, 0x06, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 
36793
  0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x02, 0x61, 0x73, 0x00, 0x07, 0x02, 0xCF, 
36794
  0x05, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x00, 0x07, 0x03, 0xDA, 0x55, 0x00, 0x07, 0x04, 0xCF, 0x04, 
36795
  0x70, 0x72, 0x65, 0x76, 0x1B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x02, 0x06, 
36796
  0x1B, 0x06, 0x05, 0x00, 0x30, 0x05, 0x01, 0x00, 0x35, 0x05, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 
36797
  0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x06, 0x01, 0x06, 0xDA, 0x04, 0xBF, 
36798
  0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0x84, 0xBF, 0xFF, 0x00, 0x02, 
36799
  0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x55, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0x86, 
36800
  0x00, 0x06, 0x00, 0xCF, 0x01, 0x79, 0x2D, 0x02, 0x00, 0x01, 0x25, 0x01, 0x00, 0x02, 0x1E, 0x01, 
36801
  0x03, 0x00, 0x2D, 0x02, 0x00, 0x08, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
36802
  0x85, 0xDE, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xCD, 0x02, 0xFE, 
36803
  0x00, 0x00, 0x07, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x1C, 0x01, 0x01, 0x05, 0xCE, 
36804
  0x06, 0x5F, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x5D, 0xDA, 0x80, 0x83, 
36805
  0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x75, 0xBF, 0xFF, 0x00, 
36806
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x74, 0x06, 0x1C, 0x01, 0xDA, 0x64, 0x09, 
36807
  0x1C, 0x02, 0xCF, 0x03, 0x73, 0x79, 0x6D, 0x0E, 0x1C, 0x00, 0xCF, 0x09, 0x6E, 0x65, 0x78, 0x74, 
36808
  0x2D, 0x70, 0x72, 0x65, 0x76, 0x2D, 0x00, 0x00, 0x06, 0x20, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 
36809
  0x00, 0x2D, 0x01, 0x00, 0x02, 0x2D, 0x02, 0x00, 0x06, 0x3A, 0x00, 0x01, 0x02, 0x1B, 0x01, 0x00, 
36810
  0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x00, 0x02, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x30, 0x00, 0x00, 
36811
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x00, 0x03, 
36812
  0x00, 0x2D, 0x04, 0x00, 0x04, 0x32, 0x02, 0x04, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 
36813
  0x00, 0x33, 0x05, 0x03, 0x00, 0x45, 0x04, 0x00, 0x00, 0x2F, 0x04, 0x00, 0x04, 0x2D, 0x05, 0x00, 
36814
  0x02, 0x2D, 0x06, 0x00, 0x06, 0x49, 0x03, 0x05, 0x06, 0x2F, 0x03, 0x00, 0x06, 0x2E, 0x05, 0x00, 
36815
  0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 
36816
  0x00, 0x06, 0x02, 0x08, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 
36817
  0xDA, 0x80, 0x84, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x55, 
36818
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0x86, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x64, 0xBF, 0xFF, 0x01, 
36819
  0x02, 0xDA, 0x80, 0x8B, 0x00, 0x06, 0x00, 0xDA, 0x80, 0x87, 0x2D, 0x02, 0x00, 0x01, 0x25, 0x01, 
36820
  0x00, 0x02, 0x1E, 0x01, 0x03, 0x00, 0x2D, 0x02, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 
36821
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xDE, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 
36822
  0x00, 0x26, 0x85, 0xDC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
36823
  0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
36824
  0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
36825
  0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 
36826
  0x85, 0xDB, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 
36827
  0x56, 0x01, 0x00, 0x00, 0xCF, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 
36828
  0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x31, 0x36, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 
36829
  0x11, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
36830
  0x2E, 0x63, 0x81, 0x72, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x84, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
36831
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x31, 0x36, 0x20, 0x62, 0x75, 
36832
  0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 
36833
  0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x61, 0x20, 0x31, 0x36, 0x20, 0x62, 0x69, 0x74, 0x20, 
36834
  0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
36835
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
36836
  0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
36837
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
36838
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 
36839
  0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 
36840
  0x6E, 0x74, 0x31, 0x36, 0xCF, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 
36841
  0x6D, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 0x2F, 0x63, 
36842
  0x6F, 0x72, 0x65, 0x2F, 0x6E, 0x65, 0x74, 0x2E, 0x63, 0x83, 0x5E, 0x01, 0xDA, 0x06, 0xCE, 0x58, 
36843
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x74, 
36844
  0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
36845
  0x72, 0x65, 0x6D, 0x6F, 0x74, 0x65, 0x20, 0x70, 0x65, 0x65, 0x72, 0x27, 0x73, 0x20, 0x61, 0x64, 
36846
  0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x69, 
36847
  0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x61, 
36848
  0x74, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xD8, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 
36849
  0x70, 0x65, 0x65, 0x72, 0x6E, 0x61, 0x6D, 0x65, 0xCF, 0x07, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 
36850
  0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xE9, 0x01, 0xDA, 0x06, 0xCE, 
36851
  0x80, 0xCC, 0x28, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x32, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 
36852
  0x29, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x32, 0x2D, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
36853
  0x74, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x72, 0x65, 
36854
  0x64, 0x75, 0x63, 0x65, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 
36855
  0x6E, 0x6F, 0x74, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 
36856
  0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
36857
  0x2E, 0x0A, 0x49, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
36858
  0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
36859
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 
36860
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 
36861
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 
36862
  0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x65, 0x76, 
36863
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 
36864
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x00, 0x13, 0x00, 0x05, 0xCE, 
36865
  0x07, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x32, 0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 0x31, 0x00, 
36866
  0x13, 0x01, 0xDA, 0x33, 0x00, 0x13, 0x02, 0xDA, 0x80, 0x99, 0x02, 0x13, 0x04, 0xDA, 0x3A, 0x08, 
36867
  0x13, 0x06, 0xDA, 0x7E, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 
36868
  0x28, 0x06, 0x00, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 
36869
  0x3A, 0x05, 0x01, 0x04, 0x1B, 0x06, 0x05, 0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x08, 0x00, 0x00, 
36870
  0x4A, 0x07, 0x08, 0x04, 0x1E, 0x07, 0x06, 0x00, 0x3A, 0x08, 0x01, 0x04, 0x32, 0x06, 0x08, 0x00, 
36871
  0x35, 0x06, 0x00, 0x00, 0x49, 0x04, 0x01, 0x04, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 
36872
  0x83, 0xED, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x11, 0x01, 
36873
  0x0C, 0x00, 0x03, 0x01, 0x0A, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x15, 0x00, 0x0E, 0x00, 
36874
  0x0E, 0x01, 0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xF8, 0x01, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 
36875
  0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x11, 
36876
  0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 
36877
  0x63, 0x82, 0x6A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA1, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
36878
  0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
36879
  0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x6D, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 
36880
  0x6E, 0x67, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 
36881
  0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
36882
  0x63, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
36883
  0x65, 0x6E, 0x74, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 
36884
  0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 
36885
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 
36886
  0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x77, 
36887
  0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xD8, 0x0C, 0x73, 0x74, 
36888
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x6C, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x67, 
36889
  0x61, 0x74, 0x68, 0x65, 0x72, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x41, 
36890
  0x03, 0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 
36891
  0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x69, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 
36892
  0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x62, 0x65, 
36893
  0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0x65, 0x6C, 0x20, 0x6F, 
36894
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
36895
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 
36896
  0x74, 0x68, 0x65, 0x79, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x0A, 0x52, 
36897
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x74, 0x68, 0x65, 
36898
  0x72, 0x65, 0x64, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 
36899
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xD7, 0x01, 0xCD, 
36900
  0x00, 0xDD, 0x00, 0x00, 0x12, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 0x4B, 0x01, 0x17, 
36901
  0xCE, 0x09, 0x65, 0x76, 0x2F, 0x67, 0x61, 0x74, 0x68, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x5C, 0xCF, 
36902
  0x03, 0x64, 0x65, 0x66, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0xCF, 0x03, 0x70, 
36903
  0x75, 0x74, 0xCF, 0x02, 0x66, 0x6E, 0xD0, 0x09, 0x65, 0x76, 0x2F, 0x67, 0x61, 0x74, 0x68, 0x65, 
36904
  0x72, 0xD8, 0x05, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x07, 0x03, 
36905
  0x03, 0x03, 0x03, 0x00, 0x02, 0xCE, 0x03, 0x70, 0x75, 0x74, 0x3C, 0x00, 0x01, 0x02, 0x03, 0x00, 
36906
  0x00, 0x00, 0xCF, 0x02, 0x64, 0x6F, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x01, 0xCF, 0x09, 0x6E, 0x65, 
36907
  0x74, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x07, 0x65, 0x76, 0x2F, 
36908
  0x63, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x03, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 
36909
  0x77, 0x6E, 0xBF, 0xFF, 0x00, 0x04, 0xCF, 0x0C, 0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 
36910
  0x72, 0x65, 0x61, 0x64, 0xBF, 0xFF, 0x00, 0x05, 0xCF, 0x0F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 
36911
  0x65, 0x2D, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x0C, 0x65, 
36912
  0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xBF, 0xFF, 0x00, 0x07, 0xCF, 
36913
  0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xBF, 0xFF, 
36914
  0x00, 0x08, 0xCF, 0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 
36915
  0x6B, 0xBF, 0xFF, 0x00, 0x09, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 
36916
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xBF, 0xFF, 0x00, 0x0A, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x77, 
36917
  0x69, 0x74, 0x68, 0x2D, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 0x00, 0x0B, 
36918
  0xCF, 0x0A, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x2D, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x0C, 
36919
  0xCF, 0x0F, 0x77, 0x61, 0x69, 0x74, 0x2D, 0x66, 0x6F, 0x72, 0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 
36920
  0x73, 0x00, 0x4B, 0x00, 0xCF, 0x06, 0x62, 0x6F, 0x64, 0x69, 0x65, 0x73, 0x00, 0x4B, 0x01, 0xDA, 
36921
  0x80, 0xA5, 0x02, 0x4B, 0x03, 0xCF, 0x04, 0x63, 0x68, 0x61, 0x6E, 0x05, 0x4B, 0x04, 0xDA, 0x7E, 
36922
  0x08, 0x4B, 0x05, 0xCF, 0x04, 0x66, 0x73, 0x65, 0x74, 0x0B, 0x4B, 0x06, 0xCF, 0x05, 0x66, 0x74, 
36923
  0x65, 0x6D, 0x70, 0x1B, 0x41, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x4F, 0x1B, 
36924
  0x41, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x51, 0x1E, 0x41, 0x0B, 0xCF, 0x07, 
36925
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x50, 0x21, 0x41, 0x0C, 0xDA, 0x43, 0x22, 0x41, 0x0D, 0xCF, 
36926
  0x04, 0x62, 0x6F, 0x64, 0x79, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 
36927
  0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x2C, 0x05, 0x00, 
36928
  0x00, 0x35, 0x02, 0x05, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x02, 0x06, 
36929
  0x00, 0x1B, 0x06, 0x02, 0x00, 0x44, 0x02, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x33, 0x08, 0x05, 
36930
  0x02, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x31, 0x08, 0x00, 0x00, 0x45, 0x02, 0x00, 
36931
  0x00, 0x2C, 0x09, 0x01, 0x00, 0x33, 0x09, 0x03, 0x02, 0x45, 0x08, 0x00, 0x00, 0x40, 0x02, 0x00, 
36932
  0x00, 0x2C, 0x0A, 0x01, 0x00, 0x33, 0x0A, 0x04, 0x02, 0x45, 0x09, 0x00, 0x00, 0x40, 0x02, 0x00, 
36933
  0x00, 0x1B, 0x0A, 0x02, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x02, 0x00, 0x0B, 0x1B, 0x0B, 0x02, 
36934
  0x00, 0x1F, 0x0B, 0x22, 0x00, 0x3A, 0x02, 0x00, 0x0B, 0x1B, 0x0C, 0x0B, 0x00, 0x1B, 0x0D, 0x02, 
36935
  0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x0F, 0x03, 0x00, 0x33, 0x0F, 0x04, 0x0C, 0x31, 0x0D, 0x00, 
36936
  0x00, 0x45, 0x0E, 0x00, 0x00, 0x2C, 0x10, 0x04, 0x00, 0x2C, 0x11, 0x05, 0x00, 0x33, 0x10, 0x11, 
36937
  0x02, 0x31, 0x0E, 0x00, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x0E, 0x06, 0x00, 0x28, 0x10, 0x00, 
36938
  0x00, 0x33, 0x0E, 0x0F, 0x10, 0x31, 0x03, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x0F, 0x01, 
36939
  0x00, 0x33, 0x0F, 0x06, 0x02, 0x45, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x07, 0x00, 0x33, 0x0F, 0x05, 
36940
  0x06, 0x31, 0x06, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x10, 0x08, 0x00, 0x33, 0x10, 0x0E, 
36941
  0x02, 0x45, 0x0F, 0x00, 0x00, 0x32, 0x0A, 0x0F, 0x00, 0x2C, 0x0E, 0x09, 0x00, 0x35, 0x02, 0x0E, 
36942
  0x00, 0x49, 0x0B, 0x00, 0x0B, 0x1C, 0xDF, 0xFF, 0xFF, 0x2D, 0x0B, 0x00, 0x0C, 0x33, 0x0B, 0x03, 
36943
  0x05, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x0C, 0x08, 0x00, 0x33, 0x0C, 0x07, 0x08, 0x31, 0x09, 0x00, 
36944
  0x00, 0x34, 0x0A, 0x00, 0x00, 0x32, 0x02, 0x04, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 
36945
  0x00, 0xBF, 0xFF, 0x8F, 0x47, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36946
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
36947
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36948
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x04, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
36949
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
36950
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
36951
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
36952
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x0C, 0x00, 
36953
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFC, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
36954
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0xC9, 0xC9, 
36955
  0xC9, 0xC9, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x13, 
36956
  0x00, 0x06, 0xCE, 0x0F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x72, 0x65, 0x6C, 0x65, 
36957
  0x61, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xCF, 0x05, 0x64, 0x65, 0x66, 0x65, 
36958
  0x72, 0xDA, 0x80, 0xB3, 0x00, 0x13, 0x00, 0xCF, 0x03, 0x61, 0x63, 0x71, 0x00, 0x13, 0x01, 0xCF, 
36959
  0x03, 0x72, 0x65, 0x6C, 0x00, 0x13, 0x02, 0xCF, 0x04, 0x6C, 0x6F, 0x63, 0x6B, 0x00, 0x13, 0x03, 
36960
  0xDA, 0x80, 0xC7, 0x00, 0x13, 0x04, 0xDA, 0x80, 0xB8, 0x02, 0x13, 0x06, 0xCF, 0x01, 0x6C, 0x2C, 
36961
  0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x33, 
36962
  0x08, 0x06, 0x02, 0x45, 0x07, 0x00, 0x00, 0x32, 0x00, 0x06, 0x00, 0x45, 0x08, 0x00, 0x00, 0x32, 
36963
  0x01, 0x06, 0x00, 0x45, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x32, 0x0B, 0x09, 0x00, 0x34, 
36964
  0x03, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x33, 0x0B, 0x07, 0x08, 0x31, 
36965
  0x0A, 0x00, 0x00, 0x45, 0x09, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x8F, 0x04, 0x0C, 0x00, 0x0C, 
36966
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36967
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
36968
  0x00, 0x05, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x03, 
36969
  0x03, 0x03, 0x03, 0x19, 0x00, 0x09, 0xCE, 0x0A, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x2D, 0x61, 
36970
  0x6C, 0x6C, 0xDA, 0x04, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0xD8, 
36971
  0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD8, 0x07, 0x65, 0x76, 
36972
  0x2F, 0x74, 0x61, 0x6B, 0x65, 0x00, 0x19, 0x00, 0xDA, 0x80, 0xC1, 0x00, 0x19, 0x01, 0xCF, 0x06, 
36973
  0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x00, 0x19, 0x02, 0xCF, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6F, 
36974
  0x6E, 0x00, 0x19, 0x03, 0xDA, 0x80, 0xBE, 0x00, 0x0B, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
36975
  0x30, 0x36, 0x4A, 0x02, 0x0B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x49, 0x05, 
36976
  0x0B, 0x06, 0xDA, 0x31, 0x0C, 0x19, 0x05, 0xDA, 0x32, 0x10, 0x19, 0x04, 0xCF, 0x07, 0x5F, 0x30, 
36977
  0x30, 0x30, 0x30, 0x36, 0x4B, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x01, 0x05, 0x1B, 0x05, 0x04, 
36978
  0x00, 0x1F, 0x05, 0x08, 0x00, 0x3A, 0x04, 0x01, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x32, 0x06, 0x02, 
36979
  0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x04, 0x07, 0x00, 0x49, 0x05, 0x01, 0x05, 0x1C, 0xF9, 0xFF, 
36980
  0xFF, 0x3F, 0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x01, 
36981
  0x00, 0x35, 0x04, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x22, 0x06, 0x04, 0x00, 0x1E, 0x06, 0x06, 
36982
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x07, 0x04, 0x04, 
36983
  0x01, 0x1C, 0xFA, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x8F, 0x31, 0x05, 0x00, 0x05, 0x00, 0x05, 
36984
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x00, 0x05, 
36985
  0x01, 0x0D, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
36986
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xD7, 0x01, 0xCD, 0x02, 
36987
  0xFE, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x05, 0x16, 0x01, 0x01, 0x10, 0xCE, 0x0F, 0x77, 0x61, 
36988
  0x69, 0x74, 0x2D, 0x66, 0x6F, 0x72, 0x2D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0xDA, 0x04, 0xD0, 
36989
  0x02, 0x74, 0x69, 0xD8, 0x09, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xCE, 0x0F, 
36990
  0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x65, 0x64, 0xD8, 
36991
  0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD0, 0x04, 0x64, 
36992
  0x65, 0x61, 0x64, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 
36993
  0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xB6, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0xB7, 0xBF, 
36994
  0xFF, 0x00, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0xB9, 0xBF, 0xFF, 0x00, 
36995
  0x07, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x80, 0xBB, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
36996
  0x80, 0xBC, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x80, 0xBD, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x80, 0xBE, 
36997
  0x00, 0x16, 0x00, 0xDA, 0x80, 0xC1, 0x00, 0x16, 0x01, 0xDA, 0x80, 0xD4, 0x00, 0x16, 0x02, 0xDA, 
36998
  0x80, 0xBF, 0x05, 0x16, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x4C, 0x08, 0x16, 
36999
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x4D, 0x30, 0x03, 0x00, 0x00, 0x2C, 0x04, 
37000
  0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 
37001
  0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x37, 0x04, 0x03, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x04, 
37002
  0x02, 0x00, 0x33, 0x00, 0x01, 0x04, 0x2D, 0x06, 0x00, 0x0B, 0x35, 0x04, 0x06, 0x00, 0x31, 0x03, 
37003
  0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x04, 0x06, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x25, 0x06, 
37004
  0x04, 0x07, 0x1E, 0x06, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x39, 0x04, 0x05, 0x03, 0x03, 0x04, 
37005
  0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x21, 0x02, 
37006
  0x11, 0xCE, 0x05, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x80, 0xD3, 0xD0, 0x02, 0x6F, 
37007
  0x6B, 0xCE, 0x10, 0x73, 0x69, 0x62, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 
37008
  0x6C, 0x65, 0x64, 0xD8, 0x10, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 0x2D, 
37009
  0x76, 0x61, 0x6C, 0x75, 0x65, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x80, 0xB4, 0xBF, 0xFF, 0x01, 0x02, 
37010
  0xDA, 0x80, 0xB5, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x80, 0xB6, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x80, 
37011
  0xB7, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x80, 0xB9, 0xBF, 
37012
  0xFF, 0x01, 0x07, 0xDA, 0x80, 0xBA, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x80, 0xBB, 0xBF, 0xFF, 0x01, 
37013
  0x09, 0xDA, 0x80, 0xBC, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x80, 0xBD, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 
37014
  0x80, 0xBE, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xC1, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xD4, 
37015
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xBF, 0x02, 0x21, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37016
  0x30, 0x36, 0x4E, 0x0A, 0x20, 0x04, 0xCF, 0x03, 0x73, 0x69, 0x67, 0x0C, 0x20, 0x05, 0xCF, 0x05, 
37017
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x01, 0x00, 0x01, 0x3F, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 
37018
  0x00, 0x22, 0x00, 0x01, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 
37019
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x3D, 0x03, 0x02, 0x00, 0x1B, 0x04, 0x03, 
37020
  0x00, 0x3D, 0x03, 0x02, 0x01, 0x1B, 0x05, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x25, 0x02, 0x04, 
37021
  0x03, 0x1E, 0x02, 0x05, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x28, 0x06, 0x00, 0x00, 0x3C, 0x03, 0x05, 
37022
  0x06, 0x1C, 0x0B, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x01, 0x2C, 0x07, 0x02, 
37023
  0x00, 0x33, 0x03, 0x06, 0x07, 0x2D, 0x06, 0x01, 0x0B, 0x35, 0x03, 0x06, 0x00, 0x31, 0x05, 0x00, 
37024
  0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x03, 0x06, 0x00, 0x39, 0x06, 0x03, 0x05, 0x07, 0x01, 0x01, 
37025
  0x01, 0x1C, 0xE4, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0x39, 0x0F, 0x00, 
37026
  0x0F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
37027
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0B, 0x00, 
37028
  0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
37029
  0x00, 0x0D, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0D, 0xBF, 0xFA, 0x07, 0x00, 0x07, 0x00, 
37030
  0x07, 0x8F, 0x38, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37031
  0x00, 0x05, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 
37032
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x00, 
37033
  0x00, 0x00, 0xDB, 0x00, 0xC9, 0xC9, 0xCF, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6C, 
37034
  0x69, 0x73, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x90, 0x8A, 0x03, 0xDA, 
37035
  0x06, 0xCE, 0x44, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x29, 
37036
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 
37037
  0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x62, 0x75, 
37038
  0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 
37039
  0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
37040
  0x06, 0x00, 0x00, 0x00, 0x04, 0x10, 0x01, 0x11, 0xCE, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
37041
  0x2F, 0x6C, 0x69, 0x73, 0x74, 0xDA, 0x04, 0xD0, 0x04, 0x6D, 0x6F, 0x64, 0x65, 0xD8, 0x07, 0x6F, 
37042
  0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0xD8, 0x06, 0x6F, 0x73, 0x2F, 0x64, 0x69, 0x72, 0xD7, 0x00, 
37043
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 0x01, 0x02, 0x02, 0x0C, 0x00, 0x04, 0xCE, 0x04, 0x73, 
37044
  0x6F, 0x72, 0x74, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x15, 0x06, 0x00, 0x00, 0xCD, 
37045
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x01, 0x3C, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 
37046
  0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 
37047
  0x05, 0x23, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 
37048
  0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
37049
  0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
37050
  0x12, 0x04, 0x04, 0x04, 0x02, 0x68, 0x00, 0x0D, 0xCE, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x68, 
37051
  0x65, 0x6C, 0x70, 0xDA, 0x04, 0xDA, 0x80, 0xF4, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x14, 0x06, 
37052
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x01, 0x3E, 0x3F, 0x01, 0x00, 0x00, 
37053
  0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 
37054
  0x3A, 0x04, 0x00, 0x05, 0x21, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 
37055
  0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 
37056
  0x03, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x68, 0x00, 0xCF, 
37057
  0x01, 0x61, 0x00, 0x68, 0x01, 0xCF, 0x02, 0x6C, 0x6F, 0x00, 0x68, 0x02, 0xCF, 0x02, 0x68, 0x69, 
37058
  0x00, 0x68, 0x03, 0xCF, 0x07, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x00, 0x68, 0x04, 0xCF, 
37059
  0x09, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0x09, 0x67, 0x09, 0xDA, 0x1E, 0x0A, 
37060
  0x67, 0x0A, 0xDA, 0x80, 0x87, 0x0B, 0x67, 0x0B, 0xCF, 0x01, 0x7A, 0x25, 0x67, 0x0C, 0xCF, 0x05, 
37061
  0x70, 0x69, 0x76, 0x6F, 0x74, 0x26, 0x67, 0x08, 0xCF, 0x04, 0x6C, 0x65, 0x66, 0x74, 0x27, 0x67, 
37062
  0x0D, 0xCF, 0x05, 0x72, 0x69, 0x67, 0x68, 0x74, 0x27, 0x50, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37063
  0x30, 0x30, 0x30, 0x56, 0x53, 0x59, 0x10, 0xCF, 0x03, 0x74, 0x6D, 0x70, 0x2E, 0x04, 0x00, 0x00, 
37064
  0x23, 0x05, 0x01, 0x02, 0x1E, 0x05, 0x65, 0x00, 0x3A, 0x06, 0x00, 0x01, 0x06, 0x07, 0x01, 0x02, 
37065
  0x2B, 0x09, 0x02, 0x00, 0x0D, 0x08, 0x07, 0x09, 0x3A, 0x07, 0x00, 0x08, 0x3A, 0x08, 0x00, 0x02, 
37066
  0x1B, 0x09, 0x06, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x48, 0x0C, 0x09, 0x0A, 
37067
  0x1E, 0x0C, 0x0D, 0x00, 0x48, 0x0E, 0x0A, 0x0B, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0A, 0x00, 
37068
  0x1C, 0x07, 0x00, 0x00, 0x48, 0x10, 0x0B, 0x09, 0x1E, 0x10, 0x03, 0x00, 0x1B, 0x0F, 0x09, 0x00, 
37069
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x0B, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1B, 0x08, 0x0D, 0x00, 
37070
  0x1C, 0x0C, 0x00, 0x00, 0x48, 0x0E, 0x0B, 0x0A, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0A, 0x00, 
37071
  0x1C, 0x07, 0x00, 0x00, 0x48, 0x10, 0x09, 0x0B, 0x1E, 0x10, 0x03, 0x00, 0x1B, 0x0F, 0x09, 0x00, 
37072
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x0B, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1B, 0x08, 0x0D, 0x00, 
37073
  0x1B, 0x0C, 0x08, 0x00, 0x1B, 0x08, 0x01, 0x00, 0x1B, 0x0D, 0x02, 0x00, 0x2C, 0x0F, 0x00, 0x00, 
37074
  0x25, 0x0E, 0x03, 0x0F, 0x1E, 0x0E, 0x0C, 0x00, 0x3A, 0x0F, 0x00, 0x08, 0x23, 0x10, 0x0F, 0x0C, 
37075
  0x1E, 0x10, 0x03, 0x00, 0x05, 0x08, 0x08, 0x01, 0x1C, 0xFC, 0xFF, 0xFF, 0x3A, 0x0F, 0x00, 0x0D, 
37076
  0x23, 0x10, 0x0C, 0x0F, 0x1E, 0x10, 0x03, 0x00, 0x07, 0x0D, 0x0D, 0x01, 0x1C, 0xFC, 0xFF, 0xFF, 
37077
  0x1C, 0x1B, 0x00, 0x00, 0x2C, 0x10, 0x01, 0x00, 0x25, 0x0F, 0x03, 0x10, 0x1E, 0x0F, 0x0C, 0x00, 
37078
  0x3A, 0x10, 0x00, 0x08, 0x21, 0x11, 0x10, 0x0C, 0x1E, 0x11, 0x03, 0x00, 0x05, 0x08, 0x08, 0x01, 
37079
  0x1C, 0xFC, 0xFF, 0xFF, 0x3A, 0x10, 0x00, 0x0D, 0x21, 0x11, 0x0C, 0x10, 0x1E, 0x11, 0x03, 0x00, 
37080
  0x07, 0x0D, 0x0D, 0x01, 0x1C, 0xFC, 0xFF, 0xFF, 0x1C, 0x0D, 0x00, 0x00, 0x3A, 0x10, 0x00, 0x08, 
37081
  0x32, 0x10, 0x0C, 0x00, 0x35, 0x11, 0x03, 0x00, 0x1E, 0x11, 0x03, 0x00, 0x05, 0x08, 0x08, 0x01, 
37082
  0x1C, 0xFB, 0xFF, 0xFF, 0x3A, 0x10, 0x00, 0x0D, 0x32, 0x0C, 0x10, 0x00, 0x35, 0x11, 0x03, 0x00, 
37083
  0x1E, 0x11, 0x03, 0x00, 0x07, 0x0D, 0x0D, 0x01, 0x1C, 0xFB, 0xFF, 0xFF, 0x48, 0x0E, 0x08, 0x0D, 
37084
  0x1E, 0x0E, 0x08, 0x00, 0x3A, 0x0F, 0x00, 0x08, 0x1B, 0x10, 0x0F, 0x00, 0x3A, 0x0F, 0x00, 0x0D, 
37085
  0x3C, 0x00, 0x08, 0x0F, 0x3C, 0x00, 0x0D, 0x10, 0x05, 0x08, 0x08, 0x01, 0x07, 0x0D, 0x0D, 0x01, 
37086
  0x47, 0x0E, 0x08, 0x0D, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xCC, 0xFF, 0xFF, 
37087
  0x23, 0x0E, 0x01, 0x0D, 0x1E, 0x0E, 0x04, 0x00, 0x33, 0x00, 0x01, 0x0D, 0x31, 0x03, 0x00, 0x00, 
37088
  0x35, 0x0F, 0x04, 0x00, 0x23, 0x0E, 0x08, 0x02, 0x1E, 0x0E, 0x04, 0x00, 0x33, 0x00, 0x08, 0x02, 
37089
  0x31, 0x03, 0x00, 0x00, 0x35, 0x0F, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x83, 0xA8, 0x01, 0x01, 
37090
  0x09, 0x00, 0x03, 0x01, 0x13, 0x01, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x13, 0x01, 0x13, 0xBF, 
37091
  0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
37092
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
37093
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
37094
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0x02, 0x07, 
37095
  0x00, 0x07, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37096
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
37097
  0x07, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
37098
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x07, 0x03, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
37099
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
37100
  0x01, 0x0D, 0x00, 0x07, 0x01, 0x12, 0x00, 0x09, 0x01, 0x17, 0x00, 0x09, 0x01, 0x09, 0x01, 0x09, 
37101
  0x01, 0x09, 0x01, 0x0B, 0x00, 0x07, 0x00, 0x1B, 0xBF, 0xF5, 0x05, 0x0C, 0x09, 0x00, 0x05, 0x01, 
37102
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
37103
  0xE9, 0x01, 0x00, 0x0C, 0x00, 0xDA, 0x33, 0x00, 0x0C, 0x01, 0xDA, 0x80, 0xFD, 0x00, 0x0C, 0x02, 
37104
  0xCF, 0x04, 0x73, 0x6F, 0x72, 0x74, 0x04, 0x0C, 0x04, 0xDA, 0x80, 0xFD, 0x20, 0x01, 0x03, 0x00, 
37105
  0x2C, 0x03, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x01, 0x00, 0x1B, 0x04, 0x03, 0x00, 
37106
  0x3F, 0x05, 0x00, 0x00, 0x07, 0x06, 0x05, 0x01, 0x2B, 0x05, 0x00, 0x00, 0x33, 0x00, 0x05, 0x06, 
37107
  0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x36, 0x05, 0x00, 0x00, 0x83, 0xC7, 0x03, 0x00, 
37108
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x17, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 
37109
  0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFF, 0x00, 0x00, 0xCF, 0x04, 0x73, 0x65, 0x70, 0x73, 0xBF, 
37110
  0xFF, 0x00, 0x02, 0xCF, 0x03, 0x73, 0x65, 0x70, 0xBF, 0xFF, 0x00, 0x03, 0xCF, 0x0C, 0x62, 0x75, 
37111
  0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x72, 0x70, 0x61, 0x74, 0x68, 0xBF, 0xFF, 0x00, 0x04, 0xCF, 0x0A, 
37112
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x64, 0x69, 0x72, 0xBF, 0xFF, 0x00, 0x05, 0xCF, 0x0B, 
37113
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 
37114
  0x15, 0x67, 0x65, 0x74, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2D, 0x66, 0x69, 
37115
  0x6C, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0xBF, 0xFF, 0x00, 0x07, 0xCF, 0x12, 0x70, 0x72, 0x69, 0x6D, 
37116
  0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xBF, 0xFF, 
37117
  0x00, 0x08, 0xCF, 0x09, 0x67, 0x65, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x73, 0xBF, 0xFF, 0x00, 
37118
  0x09, 0xCF, 0x04, 0x72, 0x6D, 0x72, 0x66, 0xBF, 0xFF, 0x00, 0x0A, 0xCF, 0x08, 0x63, 0x6F, 0x70, 
37119
  0x79, 0x66, 0x69, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x0B, 0xCF, 0x06, 0x63, 0x6F, 0x70, 0x79, 0x72, 
37120
  0x66, 0xBF, 0xFF, 0x00, 0x0C, 0xCF, 0x0D, 0x73, 0x79, 0x6E, 0x63, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 
37121
  0x66, 0x65, 0x73, 0x74, 0xBF, 0xFF, 0x00, 0x0D, 0xCF, 0x0F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
37122
  0x2F, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0xBF, 0xFF, 0x00, 0x0E, 0xCF, 0x11, 0x67, 
37123
  0x65, 0x74, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
37124
  0xBF, 0xFF, 0x00, 0x0F, 0xCF, 0x07, 0x64, 0x6F, 0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0x00, 0x10, 0x00, 
37125
  0xDA, 0x80, 0xE9, 0x02, 0x10, 0x02, 0xCF, 0x01, 0x64, 0x2D, 0x02, 0x00, 0x04, 0x35, 0x01, 0x02, 
37126
  0x00, 0x1B, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 
37127
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x07, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x02, 
37128
  0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x36, 0x05, 0x00, 
37129
  0x00, 0x40, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x8D, 0x0C, 0x00, 0x0C, 
37130
  0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 
37131
  0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x22, 0xD5, 
37132
  0x03, 0xD0, 0x07, 0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0xCE, 0x01, 0x5C, 0xD0, 0x06, 0x63, 
37133
  0x79, 0x67, 0x77, 0x69, 0x6E, 0xDA, 0x81, 0x17, 0xD0, 0x05, 0x6D, 0x69, 0x6E, 0x67, 0x77, 0xDA, 
37134
  0x81, 0x17, 0xC9, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x07, 
37135
  0x01, 0x02, 0xCE, 0x03, 0x73, 0x65, 0x70, 0xDA, 0x04, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x77, 0x68, 
37136
  0x69, 0x63, 0x68, 0xCE, 0x01, 0x2F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0x00, 0x07, 0x00, 
37137
  0xDA, 0x81, 0x07, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x3B, 
37138
  0x02, 0x03, 0x01, 0x20, 0x02, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 
37139
  0xFF, 0x90, 0x13, 0x1B, 0x00, 0x1B, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
37140
  0xDB, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 
37141
  0x02, 0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x72, 0x70, 0x61, 0x74, 0x68, 0xDA, 
37142
  0x04, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x00, 0x03, 
37143
  0x00, 0xCF, 0x04, 0x70, 0x61, 0x74, 0x68, 0x00, 0x03, 0x01, 0xDA, 0x81, 0x08, 0x31, 0x00, 0x00, 
37144
  0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0x90, 0x17, 0x05, 0x00, 0x05, 0x00, 0x05, 
37145
  0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x00, 0x01, 0x04, 0x13, 0x01, 0x06, 0xCE, 
37146
  0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x64, 0x69, 0x72, 0xDA, 0x04, 0xD0, 0x07, 0x73, 
37147
  0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0xD8, 0x03, 0x64, 0x79, 0x6E, 0xCE, 0x06, 0x62, 0x75, 0x6E, 
37148
  0x64, 0x6C, 0x65, 0xD8, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
37149
  0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 
37150
  0x00, 0x13, 0x00, 0xCF, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 
37151
  0x00, 0x13, 0x01, 0xDA, 0x81, 0x09, 0x02, 0x13, 0x03, 0xCF, 0x01, 0x73, 0x2D, 0x03, 0x00, 0x02, 
37152
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 
37153
  0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x03, 
37154
  0x35, 0x05, 0x06, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1C, 0x02, 0x00, 0x00, 
37155
  0x28, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x33, 0x05, 0x03, 0x06, 0x32, 0x04, 0x00, 0x00, 
37156
  0x2C, 0x06, 0x03, 0x00, 0x36, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x1B, 0x0C, 0x00, 0x0C, 0x00, 
37157
  0x05, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
37158
  0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37159
  0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x04, 0x10, 
37160
  0x01, 0x08, 0xCE, 0x0B, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xDA, 
37161
  0x04, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0x27, 0xDA, 0x81, 0x28, 0xBF, 0xFF, 0x00, 
37162
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
37163
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0x00, 0x10, 0x00, 0xDA, 0x81, 0x29, 0x00, 
37164
  0x10, 0x01, 0xCF, 0x08, 0x66, 0x69, 0x6C, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x00, 0x10, 0x02, 0xDA, 
37165
  0x81, 0x0A, 0x02, 0x10, 0x04, 0xDA, 0x81, 0x2A, 0x2D, 0x04, 0x00, 0x02, 0x35, 0x03, 0x04, 0x00, 
37166
  0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 
37167
  0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x03, 0x35, 0x06, 0x07, 0x00, 
37168
  0x2C, 0x05, 0x02, 0x00, 0x33, 0x06, 0x04, 0x05, 0x33, 0x04, 0x00, 0x04, 0x31, 0x01, 0x00, 0x00, 
37169
  0x2C, 0x05, 0x03, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x20, 0x0C, 0x00, 0x0C, 0x00, 
37170
  0x05, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
37171
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 
37172
  0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x07, 0xCE, 0x15, 0x67, 0x65, 
37173
  0x74, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x6E, 
37174
  0x61, 0x6D, 0x65, 0xDA, 0x04, 0xCE, 0x0C, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2E, 
37175
  0x6A, 0x64, 0x6E, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 
37176
  0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 
37177
  0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0x00, 0x04, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x04, 0x01, 0xDA, 
37178
  0x81, 0x0B, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x05, 0x36, 0x02, 
37179
  0x00, 0x00, 0xBF, 0xFF, 0x90, 0x25, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 
37180
  0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x13, 0x01, 0x0A, 0xCE, 0x12, 
37181
  0x70, 0x72, 0x69, 0x6D, 0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 
37182
  0x68, 0x73, 0xDA, 0x04, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x64, 0x69, 0x72, 0xDA, 0x80, 
37183
  0xEF, 0xDA, 0x80, 0xF0, 0xCE, 0x26, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x66, 0x61, 0x69, 
37184
  0x6C, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 
37185
  0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0xBF, 0xFF, 0x00, 0x00, 
37186
  0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 
37187
  0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 
37188
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0x00, 0x13, 0x00, 0xDA, 0x81, 0x0C, 0x02, 0x13, 0x02, 0xDA, 
37189
  0x81, 0x2A, 0x05, 0x13, 0x04, 0xDA, 0x81, 0x22, 0x0D, 0x13, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37190
  0x30, 0x30, 0x37, 0x64, 0x2D, 0x02, 0x00, 0x02, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 
37191
  0x2D, 0x04, 0x00, 0x04, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x04, 0x00, 0x00, 
37192
  0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x04, 0x06, 0x00, 
37193
  0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x02, 0x00, 
37194
  0x03, 0x07, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x01, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
37195
  0xBF, 0xFF, 0x90, 0x29, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 
37196
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 
37197
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
37198
  0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x09, 0x00, 0x03, 0xCE, 0x09, 0x67, 0x65, 0x74, 0x2D, 
37199
  0x66, 0x69, 0x6C, 0x65, 0x73, 0xDA, 0x04, 0xD0, 0x05, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x00, 0x09, 
37200
  0x00, 0xCF, 0x08, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x00, 0x09, 0x01, 0xDA, 0x81, 
37201
  0x0D, 0x05, 0x09, 0x02, 0xCF, 0x05, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x40, 0x02, 0x00, 0x00, 0x2C, 
37202
  0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x20, 0x03, 0x02, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x1B, 
37203
  0x02, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x3C, 0x00, 0x04, 0x02, 0x03, 0x02, 0x00, 0x00, 0x90, 
37204
  0x2F, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
37205
  0xBF, 0xFE, 0x03, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x07, 0x27, 
37206
  0x01, 0x0F, 0xCE, 0x04, 0x72, 0x6D, 0x72, 0x66, 0xDA, 0x04, 0xDA, 0x80, 0xEF, 0xD8, 0x08, 0x6F, 
37207
  0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 0xD0, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
37208
  0x72, 0x79, 0xDA, 0x80, 0xF1, 0xDA, 0x81, 0x28, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 
37209
  0x69, 0x72, 0xDA, 0x4F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
37210
  0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 
37211
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
37212
  0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0x00, 0x27, 0x00, 0xDA, 
37213
  0x1E, 0x00, 0x27, 0x01, 0xDA, 0x81, 0x0E, 0x05, 0x26, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37214
  0x30, 0x37, 0x65, 0x0D, 0x22, 0x05, 0xDA, 0x81, 0x2A, 0x11, 0x1F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
37215
  0x30, 0x30, 0x30, 0x37, 0x67, 0x14, 0x1F, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
37216
  0x66, 0x17, 0x1F, 0x08, 0xDA, 0x80, 0x87, 0x2E, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x32, 
37217
  0x00, 0x02, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x20, 
37218
  0x03, 0x02, 0x00, 0x1C, 0x1F, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x25, 0x02, 0x03, 0x04, 0x1E, 
37219
  0x02, 0x19, 0x00, 0x2D, 0x05, 0x00, 0x02, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 
37220
  0x00, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x04, 0x06, 0x00, 0x1B, 0x06, 0x04, 0x00, 0x28, 
37221
  0x07, 0x00, 0x00, 0x49, 0x04, 0x06, 0x07, 0x1B, 0x07, 0x04, 0x00, 0x1F, 0x07, 0x0A, 0x00, 0x3A, 
37222
  0x04, 0x06, 0x07, 0x1B, 0x08, 0x04, 0x00, 0x33, 0x00, 0x05, 0x08, 0x2C, 0x09, 0x04, 0x00, 0x35, 
37223
  0x04, 0x09, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x09, 0x01, 0x00, 0x49, 0x07, 0x06, 0x07, 0x1C, 
37224
  0xF7, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x04, 0x06, 0x00, 0x1C, 
37225
  0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x06, 0x00, 0x35, 0x04, 0x05, 0x00, 0x04, 
37226
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x33, 0x03, 0x03, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37227
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x1B, 0x00, 0x1B, 
37228
  0x00, 0x14, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
37229
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x16, 0x00, 0x16, 
37230
  0xBF, 0xFF, 0x14, 0x00, 0x14, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFA, 0x05, 0x07, 0x07, 
37231
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xF6, 0x03, 0xDB, 0x01, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
37232
  0x0A, 0x02, 0x02, 0x02, 0x09, 0x1F, 0x00, 0x01, 0x05, 0xCE, 0x08, 0x63, 0x6F, 0x70, 0x79, 0x66, 
37233
  0x69, 0x6C, 0x65, 0xDA, 0x04, 0xD0, 0x02, 0x72, 0x62, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 
37234
  0x6F, 0x70, 0x65, 0x6E, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xD0, 0x05, 0x63, 0x6C, 0x6F, 0x73, 
37235
  0x65, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xCE, 0x2B, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
37236
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x25, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 
37237
  0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 
37238
  0x64, 0x69, 0x6E, 0x67, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 
37239
  0xFF, 0xFF, 0xFF, 0x01, 0x06, 0x00, 0x03, 0xCE, 0x06, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0xDA, 
37240
  0x04, 0xD8, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
37241
  0x00, 0x06, 0x00, 0xCF, 0x03, 0x66, 0x6D, 0x74, 0x00, 0x06, 0x01, 0xCF, 0x04, 0x61, 0x72, 0x67, 
37242
  0x73, 0x00, 0x06, 0x02, 0xCF, 0x06, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0x31, 0x00, 0x00, 0x00, 
37243
  0x34, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 
37244
  0x04, 0x00, 0x00, 0x00, 0x80, 0xD0, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 
37245
  0x03, 0x00, 0x1F, 0x00, 0xCF, 0x04, 0x66, 0x72, 0x6F, 0x6D, 0x00, 0x1F, 0x01, 0xCF, 0x02, 0x74, 
37246
  0x6F, 0x00, 0x1F, 0x02, 0xDA, 0x81, 0x0F, 0x0B, 0x1B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37247
  0x30, 0x37, 0x68, 0x0E, 0x1B, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x69, 0x2C, 
37248
  0x03, 0x00, 0x00, 0x32, 0x00, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 
37249
  0x04, 0x03, 0x00, 0x1E, 0x03, 0x16, 0x00, 0x30, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x32, 
37250
  0x05, 0x06, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x28, 
37251
  0x07, 0x00, 0x00, 0x37, 0x06, 0x05, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 
37252
  0x08, 0x04, 0x00, 0x35, 0x06, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 
37253
  0x06, 0x08, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x25, 0x08, 0x06, 0x09, 0x1E, 0x08, 0x02, 0x00, 0x03, 
37254
  0x07, 0x00, 0x00, 0x39, 0x06, 0x07, 0x05, 0x03, 0x06, 0x00, 0x00, 0x2C, 0x05, 0x07, 0x00, 0x32, 
37255
  0x05, 0x00, 0x00, 0x2C, 0x05, 0x08, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
37256
  0x07, 0x00, 0x00, 0x00, 0x09, 0x21, 0x01, 0x01, 0x05, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xD0, 0x02, 
37257
  0x77, 0x62, 0xDA, 0x81, 0x46, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x81, 0x47, 0xDA, 0x80, 
37258
  0xDE, 0xDA, 0x80, 0xDF, 0xCE, 0x30, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 
37259
  0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x25, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 
37260
  0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 
37261
  0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0xDA, 0x81, 0x49, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4F, 
37262
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x50, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x0F, 0x0C, 0x1C, 
37263
  0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x6A, 0x0F, 0x1C, 0x04, 0xCF, 0x07, 0x5F, 
37264
  0x30, 0x30, 0x30, 0x30, 0x37, 0x6B, 0x2D, 0x00, 0x00, 0x01, 0x2C, 0x01, 0x00, 0x00, 0x32, 0x00, 
37265
  0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x1E, 0x00, 
37266
  0x16, 0x00, 0x30, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 
37267
  0x03, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x28, 0x04, 0x00, 0x00, 0x37, 0x03, 
37268
  0x02, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x35, 0x03, 
37269
  0x05, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x05, 0x00, 0x35, 0x03, 0x05, 0x00, 0x2C, 0x06, 
37270
  0x06, 0x00, 0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x02, 0x00, 0x03, 0x04, 0x00, 0x00, 0x39, 0x03, 
37271
  0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0x2C, 0x02, 0x07, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x32, 0x02, 
37272
  0x03, 0x00, 0x2C, 0x02, 0x08, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 
37273
  0x00, 0x05, 0x00, 0x00, 0x00, 0x0A, 0x25, 0x02, 0x06, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xD0, 0x0B, 
37274
  0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 0x80, 0xF0, 0xCD, 0x00, 
37275
  0x01, 0x00, 0x00, 0xD8, 0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 
37276
  0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
37277
  0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xCE, 0x06, 0x65, 0x6D, 0x70, 0x74, 0x79, 
37278
  0x3F, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xCF, 0x02, 0x78, 0x73, 0x00, 0x05, 0x01, 0xCF, 0x06, 0x65, 
37279
  0x6D, 0x70, 0x74, 0x79, 0x3F, 0x28, 0x03, 0x00, 0x00, 0x49, 0x02, 0x00, 0x03, 0x28, 0x04, 0x00, 
37280
  0x00, 0x25, 0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0x76, 0x32, 0x00, 0x32, 0x00, 0x2B, 0x00, 
37281
  0x2B, 0x00, 0x2B, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x74, 0x72, 0x69, 0x6D, 
37282
  0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0xD8, 0x0A, 0x66, 0x69, 0x6C, 0x65, 
37283
  0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xD8, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x63, 
37284
  0x6C, 0x65, 0x61, 0x72, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4F, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
37285
  0x81, 0x50, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 0x01, 0xCF, 0x03, 0x66, 
37286
  0x74, 0x6F, 0x05, 0x25, 0x01, 0xCF, 0x04, 0x70, 0x65, 0x72, 0x6D, 0x0A, 0x25, 0x02, 0xCF, 0x01, 
37287
  0x62, 0x2D, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 
37288
  0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x2C, 0x00, 0x02, 0x00, 0x31, 0x00, 0x00, 
37289
  0x00, 0x2C, 0x02, 0x03, 0x00, 0x35, 0x00, 0x02, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x2D, 0x00, 0x00, 
37290
  0x04, 0x2C, 0x03, 0x02, 0x00, 0x33, 0x00, 0x03, 0x02, 0x2C, 0x03, 0x04, 0x00, 0x35, 0x00, 0x03, 
37291
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x05, 0x00, 0x35, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x09, 
37292
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x06, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2D, 0x03, 0x00, 
37293
  0x01, 0x32, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1C, 0x09, 0x00, 
37294
  0x00, 0x2D, 0x00, 0x01, 0x01, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x03, 0x08, 0x00, 0x35, 0x00, 0x03, 
37295
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x09, 0x00, 0x35, 0x00, 0x03, 0x00, 0x1C, 0xE8, 0xFF, 
37296
  0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x45, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
37297
  0x15, 0x00, 0x15, 0x00, 0x0B, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0B, 0x02, 
37298
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
37299
  0x0D, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 
37300
  0x41, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 
37301
  0xFC, 0x0B, 0x00, 0x0B, 0x90, 0x43, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
37302
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
37303
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
37304
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x09, 0x09, 0x00, 
37305
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x00, 0x00, 0x00, 0x90, 0x42, 0x15, 0x00, 0x15, 
37306
  0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37307
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37308
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37309
  0x00, 0x05, 0x0B, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x13, 0x00, 0x00, 0x00, 0xD7, 0x01, 
37310
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x02, 0x02, 0x02, 0x07, 0x2B, 0x01, 0x12, 0xCE, 0x06, 0x63, 
37311
  0x6F, 0x70, 0x79, 0x72, 0x66, 0xDA, 0x04, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xD0, 0x04, 0x66, 
37312
  0x69, 0x6C, 0x65, 0xDA, 0x81, 0x3E, 0xDA, 0x81, 0x33, 0xDA, 0x80, 0xF1, 0xDA, 0x81, 0x28, 0xBF, 
37313
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 
37314
  0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
37315
  0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 
37316
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 
37317
  0x00, 0x0A, 0xDA, 0x81, 0x0F, 0x00, 0x2B, 0x00, 0xDA, 0x81, 0x4F, 0x00, 0x2B, 0x01, 0xDA, 0x81, 
37318
  0x50, 0x00, 0x2B, 0x02, 0xDA, 0x81, 0x10, 0x05, 0x2A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
37319
  0x30, 0x37, 0x6C, 0x12, 0x2A, 0x07, 0xDA, 0x81, 0x2A, 0x19, 0x2A, 0x08, 0xCF, 0x07, 0x5F, 0x30, 
37320
  0x30, 0x30, 0x30, 0x37, 0x6E, 0x1C, 0x2A, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
37321
  0x6D, 0x1F, 0x2A, 0x0A, 0xDA, 0x80, 0x87, 0x2E, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x32, 
37322
  0x00, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 
37323
  0x05, 0x02, 0x00, 0x25, 0x03, 0x04, 0x05, 0x1E, 0x03, 0x05, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2D, 
37324
  0x06, 0x00, 0x0A, 0x35, 0x05, 0x06, 0x00, 0x1C, 0x1E, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 
37325
  0x05, 0x04, 0x06, 0x1E, 0x05, 0x1B, 0x00, 0x2D, 0x07, 0x00, 0x02, 0x35, 0x06, 0x07, 0x00, 0x1B, 
37326
  0x07, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x06, 0x08, 0x00, 0x31, 
37327
  0x00, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x06, 0x08, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x28, 
37328
  0x09, 0x00, 0x00, 0x49, 0x06, 0x08, 0x09, 0x1B, 0x09, 0x06, 0x00, 0x1F, 0x09, 0x0D, 0x00, 0x3A, 
37329
  0x06, 0x08, 0x09, 0x1B, 0x0A, 0x06, 0x00, 0x33, 0x00, 0x07, 0x0A, 0x2C, 0x0B, 0x06, 0x00, 0x35, 
37330
  0x06, 0x0B, 0x00, 0x33, 0x01, 0x07, 0x0A, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x32, 
37331
  0x06, 0x0B, 0x00, 0x35, 0x0C, 0x02, 0x00, 0x49, 0x09, 0x08, 0x09, 0x1C, 0xF4, 0xFF, 0xFF, 0x04, 
37332
  0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x4F, 0x03, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37333
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 
37334
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x1B, 0x00, 0x1B, 0x00, 0x14, 0x01, 0x14, 0x00, 
37335
  0x14, 0x00, 0x14, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
37336
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x30, 0x00, 
37337
  0x30, 0x00, 0x30, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFF, 0x14, 0x00, 0x14, 0xBF, 0xF9, 0x03, 0xDB, 
37338
  0x01, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x07, 0x19, 0x01, 0x10, 
37339
  0xCE, 0x0D, 0x73, 0x79, 0x6E, 0x63, 0x2D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0xDA, 
37340
  0x04, 0xD0, 0x04, 0x6E, 0x61, 0x6D, 0x65, 0xCE, 0x00, 0xCE, 0x02, 0x25, 0x6A, 0xD8, 0x0D, 0x62, 
37341
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xDA, 0x81, 0x61, 0xCE, 
37342
  0x06, 0x25, 0x2E, 0x39, 0x39, 0x6D, 0x0A, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 
37343
  0x02, 0x03, 0x07, 0x19, 0x00, 0x06, 0xCE, 0x04, 0x73, 0x70, 0x69, 0x74, 0xDA, 0x04, 0xDA, 0x81, 
37344
  0x53, 0xDA, 0x81, 0x46, 0xCE, 0x14, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
37345
  0x6F, 0x70, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0xCE, 0x0B, 0x20, 0x77, 0x69, 0x74, 
37346
  0x68, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x60, 0xD8, 0x0A, 0x66, 
37347
  0x69, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x19, 0x00, 0xDA, 0x81, 0x22, 0x00, 
37348
  0x19, 0x01, 0xCF, 0x08, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x00, 0x19, 0x02, 0xCF, 
37349
  0x04, 0x6D, 0x6F, 0x64, 0x65, 0x00, 0x19, 0x03, 0xCF, 0x04, 0x73, 0x70, 0x69, 0x74, 0x04, 0x19, 
37350
  0x05, 0xDA, 0x81, 0x78, 0x08, 0x19, 0x07, 0xDA, 0x31, 0x20, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x00, 
37351
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x32, 0x00, 0x05, 
37352
  0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x02, 
37353
  0x00, 0x1C, 0x08, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x08, 0x00, 
37354
  0x09, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 0x01, 0x08, 0x00, 
37355
  0x00, 0x32, 0x07, 0x01, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x07, 0x00, 
37356
  0x00, 0x2C, 0x0A, 0x06, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0x87, 0x5D, 0x03, 
37357
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
37358
  0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
37359
  0x00, 0x0D, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF9, 
37360
  0x01, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 
37361
  0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 
37362
  0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
37363
  0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 
37364
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0x00, 0x19, 
37365
  0x00, 0xDA, 0x81, 0x39, 0x00, 0x19, 0x01, 0xDA, 0x81, 0x11, 0x02, 0x19, 0x03, 0xCF, 0x02, 0x62, 
37366
  0x6E, 0x06, 0x19, 0x05, 0xCF, 0x0D, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x2D, 0x6E, 
37367
  0x61, 0x6D, 0x65, 0x0A, 0x19, 0x07, 0xDA, 0x81, 0x64, 0x2C, 0x03, 0x00, 0x00, 0x3B, 0x02, 0x00, 
37368
  0x03, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x06, 0x35, 0x04, 0x05, 
37369
  0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 0x41, 0x06, 0x00, 
37370
  0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x00, 0x2C, 0x09, 0x03, 
37371
  0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x35, 0x09, 0x0A, 
37372
  0x00, 0x2C, 0x0A, 0x05, 0x00, 0x33, 0x07, 0x0A, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x0A, 0x0B, 
37373
  0x00, 0x32, 0x05, 0x07, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x36, 0x0B, 0x00, 0x00, 0xBF, 0xFF, 0x90, 
37374
  0x5C, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x05, 
37375
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
37376
  0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
37377
  0x00, 0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x05, 
37378
  0x14, 0x01, 0x10, 0xCE, 0x0F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6D, 0x61, 0x6E, 0x69, 
37379
  0x66, 0x65, 0x73, 0x74, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
37380
  0x01, 0x03, 0x07, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0xDA, 0x04, 
37381
  0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x67, 0x00, 0x07, 0x00, 0xDA, 0x81, 0x22, 0x00, 
37382
  0x07, 0x01, 0xCF, 0x07, 0x66, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2C, 0x02, 0x00, 0x00, 0x32, 
37383
  0x00, 0x02, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x25, 
37384
  0x03, 0x04, 0x02, 0x03, 0x03, 0x00, 0x00, 0x8B, 0x66, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
37385
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCE, 0x12, 0x6E, 0x6F, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
37386
  0x65, 0x20, 0x25, 0x76, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0xDA, 0x81, 0x49, 0xD7, 0x00, 0xCD, 
37387
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x07, 0x15, 0x00, 0x04, 0xCE, 0x05, 0x73, 0x6C, 
37388
  0x75, 0x72, 0x70, 0xDA, 0x04, 0xDA, 0x81, 0x45, 0xDA, 0x81, 0x46, 0xDA, 0x81, 0x74, 0xDA, 0x81, 
37389
  0x28, 0xD0, 0x03, 0x61, 0x6C, 0x6C, 0xDA, 0x81, 0x59, 0xDA, 0x81, 0x76, 0x00, 0x15, 0x00, 0xDA, 
37390
  0x81, 0x22, 0x00, 0x15, 0x01, 0xCF, 0x05, 0x73, 0x6C, 0x75, 0x72, 0x70, 0x04, 0x15, 0x03, 0xDA, 
37391
  0x31, 0x10, 0x15, 0x05, 0xDA, 0x81, 0x77, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 
37392
  0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 
37393
  0x06, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 
37394
  0x04, 0x05, 0x00, 0x01, 0x04, 0x00, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 
37395
  0x05, 0x05, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 
37396
  0x07, 0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x03, 0x05, 0x00, 0x00, 0x87, 0x54, 0x0A, 0x00, 0x0A, 
37397
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
37398
  0x00, 0x14, 0x00, 0x0D, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 
37399
  0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xDA, 0x09, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 
37400
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 
37401
  0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 
37402
  0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 
37403
  0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 
37404
  0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0x00, 0x14, 0x00, 
37405
  0xDA, 0x81, 0x29, 0x00, 0x14, 0x01, 0xDA, 0x81, 0x12, 0x03, 0x14, 0x03, 0xCF, 0x04, 0x6E, 0x61, 
37406
  0x6D, 0x65, 0x07, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x6F, 0x31, 0x00, 
37407
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x06, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x03, 
37408
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 
37409
  0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x06, 
37410
  0x02, 0x00, 0x35, 0x04, 0x06, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 
37411
  0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 
37412
  0x90, 0x67, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
37413
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 
37414
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xD7, 0x01, 0xCD, 0x02, 0xFE, 
37415
  0x00, 0x00, 0x0F, 0x01, 0x01, 0x01, 0x0F, 0x3F, 0x01, 0x02, 0x17, 0xCE, 0x11, 0x67, 0x65, 0x74, 
37416
  0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0xDA, 0x04, 
37417
  0xD8, 0x06, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0xD0, 0x0C, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x2D, 
37418
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xCE, 0x01, 0x2E, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xD0, 
37419
  0x02, 0x69, 0x65, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x0E, 0xCE, 0x1E, 0x63, 0x61, 0x6E, 
37420
  0x6E, 0x6F, 0x74, 0x20, 0x65, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
37421
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0xCE, 0x0C, 0x20, 0x66, 0x6F, 
37422
  0x72, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0xD8, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x74, 
37423
  0xDA, 0x80, 0xDB, 0xD8, 0x05, 0x6F, 0x73, 0x2F, 0x63, 0x64, 0xDA, 0x80, 0xDF, 0xBF, 0xFF, 0x00, 
37424
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
37425
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 
37426
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 
37427
  0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 
37428
  0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 
37429
  0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0x00, 0x3F, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x3F, 
37430
  0x01, 0xDA, 0x81, 0x13, 0x03, 0x3F, 0x03, 0xDA, 0x81, 0x39, 0x06, 0x3F, 0x05, 0xCF, 0x03, 0x64, 
37431
  0x69, 0x72, 0x0B, 0x3F, 0x07, 0xCF, 0x07, 0x77, 0x6F, 0x72, 0x6B, 0x64, 0x69, 0x72, 0x13, 0x3F, 
37432
  0x08, 0xCF, 0x0D, 0x66, 0x69, 0x78, 0x65, 0x64, 0x2D, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 
37433
  0x19, 0x2A, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x70, 0x1C, 0x2A, 0x0C, 0xCF, 
37434
  0x01, 0x5F, 0x2F, 0x3F, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x71, 0x32, 0x3F, 
37435
  0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x72, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 
37436
  0x00, 0x0D, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 
37437
  0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x3B, 0x06, 0x03, 0x07, 0x20, 0x06, 
37438
  0x02, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x31, 0x08, 
37439
  0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x0A, 
37440
  0x00, 0x03, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x30, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 
37441
  0x05, 0x00, 0x32, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 
37442
  0x0B, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x37, 0x0B, 0x0A, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x0A, 
37443
  0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x25, 0x0D, 
37444
  0x0B, 0x0E, 0x1E, 0x0D, 0x08, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x2C, 0x0E, 0x0A, 0x00, 0x33, 0x0B, 
37445
  0x07, 0x0E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x0E, 0x0B, 0x00, 0x35, 0x0B, 0x0E, 0x00, 0x1C, 0x01, 
37446
  0x00, 0x00, 0x30, 0x0A, 0x01, 0x00, 0x2C, 0x0B, 0x0C, 0x00, 0x32, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 
37447
  0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x37, 0x0B, 
37448
  0x0A, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x0D, 0x0D, 0x00, 0x35, 0x0B, 
37449
  0x0D, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0E, 
37450
  0x0E, 0x00, 0x25, 0x0D, 0x0B, 0x0E, 0x1E, 0x0D, 0x02, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x39, 0x0B, 
37451
  0x0C, 0x0A, 0x03, 0x0B, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 
37452
  0x00, 0x01, 0x04, 0x01, 0x06, 0xCE, 0x03, 0x74, 0x72, 0x79, 0xDA, 0x04, 0xDA, 0x81, 0x91, 0xBF, 
37453
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 
37454
  0x03, 0xDA, 0x81, 0x39, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x92, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
37455
  0x81, 0x93, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x94, 0x2D, 0x00, 0x00, 0x07, 0x31, 0x00, 0x00, 
37456
  0x00, 0x2C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x72, 0x07, 0x00, 0x07, 
37457
  0x00, 0x07, 0x00, 0x07, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x1D, 0x02, 
37458
  0x02, 0x16, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 
37459
  0x00, 0x01, 0x02, 0x0B, 0x00, 0x04, 0xCE, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 
37460
  0xDA, 0x04, 0xDA, 0x00, 0xD8, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 
37461
  0x72, 0x6F, 0x74, 0x6F, 0x00, 0x0B, 0x00, 0xCF, 0x06, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x00, 
37462
  0x0B, 0x01, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x04, 0x0B, 0x03, 0xDA, 
37463
  0x81, 0x9D, 0x09, 0x0B, 0x04, 0xCF, 0x06, 0x6E, 0x65, 0x77, 0x65, 0x6E, 0x76, 0x1E, 0x00, 0x03, 
37464
  0x00, 0x1B, 0x02, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 
37465
  0x00, 0x44, 0x04, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 
37466
  0x00, 0x1B, 0x04, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 0x89, 0xC0, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
37467
  0x00, 0x0F, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0xBF, 0xFA, 
37468
  0x01, 0xD0, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0xD0, 
37469
  0x0E, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0xD0, 
37470
  0x0F, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 
37471
  0xD0, 0x07, 0x77, 0x6F, 0x72, 0x6B, 0x64, 0x69, 0x72, 0xDA, 0x81, 0x6D, 0xDA, 0x81, 0x25, 0xD0, 
37472
  0x00, 0xDA, 0x80, 0xDC, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 
37473
  0x81, 0x07, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x81, 0x09, 
37474
  0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
37475
  0x01, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x01, 0x09, 
37476
  0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 0x81, 
37477
  0x10, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 
37478
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 
37479
  0x03, 0xDA, 0x81, 0x39, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x92, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
37480
  0x81, 0x93, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x94, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x95, 
37481
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x96, 0x02, 0x1D, 0x01, 0xCF, 0x07, 0x6E, 0x65, 0x77, 0x2D, 
37482
  0x65, 0x6E, 0x76, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x44, 
37483
  0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x3C, 0x01, 0x03, 0x02, 0x44, 0x02, 0x00, 0x00, 0x2C, 
37484
  0x03, 0x02, 0x00, 0x3C, 0x01, 0x03, 0x02, 0x30, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x3C, 
37485
  0x01, 0x03, 0x02, 0x2C, 0x02, 0x04, 0x00, 0x2D, 0x03, 0x00, 0x07, 0x3C, 0x01, 0x02, 0x03, 0x2C, 
37486
  0x02, 0x05, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x3C, 0x01, 0x02, 0x03, 0x2C, 0x02, 0x06, 0x00, 0x2D, 
37487
  0x03, 0x00, 0x08, 0x3C, 0x01, 0x02, 0x03, 0x30, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x07, 0x00, 0x33, 
37488
  0x02, 0x03, 0x01, 0x2C, 0x04, 0x08, 0x00, 0x35, 0x03, 0x04, 0x00, 0x28, 0x04, 0x00, 0x00, 0x37, 
37489
  0x02, 0x03, 0x04, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 
37490
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x01, 0x02, 0xCE, 0x0F, 0x6D, 0x61, 0x6B, 
37491
  0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x04, 0xDA, 0x81, 
37492
  0x9A, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0xA5, 0x00, 0x04, 0x00, 0xCF, 0x0F, 0x6D, 0x61, 0x6B, 
37493
  0x65, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x2D, 0x01, 0x00, 0x01, 
37494
  0x31, 0x01, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x78, 
37495
  0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
37496
  0x04, 0x0F, 0x03, 0x16, 0xCE, 0x08, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x04, 
37497
  0xD0, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x64, 0x69, 0x72, 0xCE, 0x10, 0x40, 0x73, 
37498
  0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0xDA, 0x81, 
37499
  0x28, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
37500
  0x02, 0x06, 0x00, 0x03, 0xCE, 0x07, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0xDA, 0x04, 0xD8, 
37501
  0x06, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x03, 
37502
  0x03, 0x03, 0x0F, 0x48, 0x00, 0x0C, 0xCE, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 
37503
  0x31, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x0F, 0x4D, 
37504
  0x00, 0x01, 0x0E, 0xCE, 0x0B, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 
37505
  0xDA, 0x04, 0xD0, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 
37506
  0xD1, 0x11, 0xD2, 0x03, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 
37507
  0x03, 0x09, 0x00, 0x02, 0xCE, 0x09, 0x69, 0x73, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0xDA, 
37508
  0x04, 0xDA, 0x81, 0xA0, 0xD3, 0x00, 0xDA, 0x81, 0x26, 0x00, 0x09, 0x00, 0xDA, 0x81, 0x22, 0x00, 
37509
  0x09, 0x01, 0xCF, 0x09, 0x69, 0x73, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2C, 0x02, 0x00, 
37510
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x35, 0x02, 0x03, 
37511
  0x00, 0x3A, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
37512
  0x00, 0x8B, 0x60, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x34, 
37513
  0x00, 0x34, 0x00, 0x34, 0xD0, 0x07, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0xD7, 0x00, 0xCD, 
37514
  0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x12, 0x63, 0x68, 
37515
  0x65, 0x63, 0x6B, 0x2D, 0x6E, 0x6F, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 
37516
  0xDA, 0x04, 0xDA, 0x81, 0x8C, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 
37517
  0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x3F, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 
37518
  0x01, 0xCF, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x6E, 0x6F, 0x74, 0x2D, 0x72, 0x65, 0x6C, 
37519
  0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 
37520
  0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 
37521
  0x00, 0x8B, 0x16, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
37522
  0xD2, 0x03, 0x00, 0xCE, 0x12, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 
37523
  0x2E, 0x6A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xD0, 0x05, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xD7, 0x00, 
37524
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x0E, 0x63, 
37525
  0x68, 0x65, 0x63, 0x6B, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x04, 0xDA, 
37526
  0x81, 0x8C, 0xDA, 0x81, 0xBB, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x0E, 0x63, 
37527
  0x68, 0x65, 0x63, 0x6B, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 
37528
  0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 
37529
  0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x15, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
37530
  0x00, 0x1F, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x3A, 0x63, 0x75, 
37531
  0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xD0, 0x06, 
37532
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0xDA, 0x81, 0xC0, 0xD2, 0x03, 0x00, 0xCE, 0x16, 0x3A, 0x63, 
37533
  0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 
37534
  0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xC0, 0xD2, 0x03, 0x00, 0xCE, 0x13, 0x3A, 
37535
  0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 
37536
  0x65, 0x3A, 0xD0, 0x06, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x81, 0xC0, 0xD2, 0x03, 0x00, 
37537
  0xCE, 0x12, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 
37538
  0x6D, 0x61, 0x67, 0x65, 0xDA, 0x81, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 
37539
  0x01, 0x01, 0x04, 0x19, 0x00, 0x04, 0xCE, 0x0C, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 0x73, 
37540
  0x2D, 0x64, 0x65, 0x70, 0xDA, 0x04, 0xDA, 0x81, 0x1E, 0xDA, 0x81, 0xBB, 0xCE, 0x01, 0x40, 0xDA, 
37541
  0x81, 0x8C, 0x00, 0x19, 0x00, 0xDA, 0x1E, 0x00, 0x19, 0x01, 0xCF, 0x0C, 0x63, 0x68, 0x65, 0x63, 
37542
  0x6B, 0x2D, 0x69, 0x73, 0x2D, 0x64, 0x65, 0x70, 0x04, 0x16, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37543
  0x30, 0x30, 0x35, 0x6D, 0x0C, 0x15, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6C, 
37544
  0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 
37545
  0x1B, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x03, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1C, 0x0F, 0x00, 0x00, 
37546
  0x2C, 0x04, 0x02, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 
37547
  0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x06, 0x00, 0x00, 
37548
  0x2C, 0x06, 0x03, 0x00, 0x32, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 
37549
  0x1B, 0x04, 0x06, 0x00, 0x1B, 0x02, 0x04, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 
37550
  0x03, 0x00, 0x00, 0x00, 0x8B, 0x17, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x21, 0x00, 
37551
  0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x21, 0x00, 
37552
  0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x5B, 0x00, 0x5B, 0x00, 0x5B, 0x00, 0x5B, 0x00, 0x21, 0x00, 
37553
  0x21, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x3A, 0x73, 0x79, 0x73, 
37554
  0x3A, 0x2F, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xC5, 
37555
  0xDA, 0x81, 0xCD, 0xD2, 0x03, 0x00, 0xCE, 0x16, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 
37556
  0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 
37557
  0xC5, 0xDA, 0x81, 0xCD, 0xD2, 0x03, 0x00, 0xCE, 0x13, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 
37558
  0x61, 0x6C, 0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xDA, 0x81, 0xCA, 0xDA, 
37559
  0x81, 0xCD, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 
37560
  0x6D, 0x61, 0x67, 0x65, 0xDA, 0x81, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 
37561
  0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x16, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x70, 0x72, 
37562
  0x6F, 0x6A, 0x65, 0x63, 0x74, 0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x04, 
37563
  0xDA, 0x81, 0x1E, 0xDA, 0x81, 0xBB, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x16, 
37564
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x70, 0x72, 0x6F, 0x6A, 0x65, 0x63, 0x74, 0x2D, 0x72, 0x65, 
37565
  0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 
37566
  0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 
37567
  0x00, 0x00, 0x8B, 0x18, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x23, 0x00, 0x23, 0x00, 
37568
  0x23, 0xD2, 0x03, 0x00, 0xCE, 0x0C, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x61, 0x6E, 
37569
  0x65, 0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xDB, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x2E, 0x3A, 0x61, 
37570
  0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 
37571
  0xC5, 0xDA, 0x81, 0xDB, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x3A, 
37572
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xDA, 0x81, 0xCA, 0xDA, 0x81, 0xDB, 0xD2, 0x03, 0x00, 
37573
  0xCE, 0x0D, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 0x6A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 
37574
  0x81, 0xBF, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 
37575
  0x02, 0xCE, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x64, 0x79, 0x6E, 0x2D, 0x72, 0x65, 0x6C, 
37576
  0x61, 0x74, 0x69, 0x76, 0x65, 0xDA, 0x04, 0xDA, 0x81, 0xCF, 0xDA, 0x81, 0xBB, 0x00, 0x07, 0x00, 
37577
  0xDA, 0x1E, 0x00, 0x07, 0x01, 0xCF, 0x12, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x64, 0x79, 0x6E, 
37578
  0x2D, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 
37579
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 
37580
  0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x14, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1F, 
37581
  0x00, 0x1F, 0x00, 0x1F, 0xD2, 0x03, 0x00, 0xCE, 0x0C, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2E, 
37582
  0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xE6, 0xD2, 0x03, 0x00, 0xCE, 0x11, 
37583
  0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0x2F, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 
37584
  0x74, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0xE6, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x3A, 0x40, 0x61, 0x6C, 
37585
  0x6C, 0x3A, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x3A, 0xDA, 0x81, 0xCA, 0xDA, 0x81, 0xE6, 
37586
  0xDA, 0x81, 0x26, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x04, 0x10, 
37587
  0x00, 0x04, 0xCE, 0x0A, 0x6D, 0x6F, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0xDA, 0x04, 
37588
  0xDA, 0x1C, 0xD0, 0x03, 0x6E, 0x69, 0x6C, 0xD0, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD8, 
37589
  0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 0x66, 0x66, 
37590
  0x69, 0x78, 0x3F, 0x00, 0x10, 0x00, 0xDA, 0x1E, 0x00, 0x10, 0x01, 0xDA, 0x81, 0x22, 0x00, 0x10, 
37591
  0x02, 0xCF, 0x0A, 0x6D, 0x6F, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x03, 0x10, 0x04, 
37592
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x74, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 
37593
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x25, 0x03, 0x04, 
37594
  0x05, 0x1E, 0x03, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x25, 0x05, 0x04, 
37595
  0x06, 0x1E, 0x05, 0x04, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x36, 0x06, 0x00, 
37596
  0x00, 0x31, 0x01, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x8B, 0x70, 0x09, 0x00, 0x09, 0x00, 0x09, 
37597
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37598
  0x02, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x05, 0x00, 0x05, 0xDA, 0x1A, 0xD8, 0x12, 0x6D, 0x6F, 
37599
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 
37600
  0xDA, 0x81, 0x28, 0xDA, 0x81, 0x7E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x17, 0x02, 0x02, 
37601
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x80, 0xA9, 0x00, 0x2A, 0xCE, 0x03, 0x6D, 0x61, 0x70, 0xDA, 
37602
  0x04, 0xDA, 0x30, 0xDA, 0x2F, 0x00, 0x80, 0xA9, 0x00, 0xDA, 0x31, 0x00, 0x80, 0xA9, 0x01, 0xDA, 
37603
  0x33, 0x00, 0x80, 0xA9, 0x02, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x73, 0x00, 0x80, 0xA9, 0x03, 0xCF, 
37604
  0x03, 0x6D, 0x61, 0x70, 0x01, 0x80, 0xA9, 0x05, 0xDA, 0x7E, 0x03, 0x80, 0xA8, 0x07, 0xCF, 0x05, 
37605
  0x6E, 0x69, 0x6E, 0x64, 0x73, 0x03, 0x80, 0xA8, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
37606
  0x31, 0x64, 0x05, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x66, 0x08, 0x13, 
37607
  0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x65, 0x0B, 0x13, 0x0A, 0xDA, 0x1E, 0x17, 
37608
  0x2C, 0x0A, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x30, 0x18, 0x2C, 0x09, 0xCF, 0x04, 0x6B, 0x65, 0x79, 
37609
  0x30, 0x18, 0x2C, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x68, 0x1B, 0x2C, 0x0C, 
37610
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x67, 0x1E, 0x2C, 0x0D, 0xDA, 0x1E, 0x30, 0x4E, 
37611
  0x0B, 0xDA, 0x82, 0x00, 0x32, 0x4E, 0x0C, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x31, 0x33, 0x4E, 0x0A, 
37612
  0xDA, 0x82, 0x01, 0x34, 0x4E, 0x0D, 0xCF, 0x04, 0x6B, 0x65, 0x79, 0x31, 0x34, 0x4E, 0x01, 0xCF, 
37613
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6A, 0x37, 0x4E, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37614
  0x30, 0x30, 0x31, 0x69, 0x3A, 0x4E, 0x10, 0xDA, 0x1E, 0x52, 0x7A, 0x0C, 0xDA, 0x82, 0x00, 0x54, 
37615
  0x7A, 0x0D, 0xDA, 0x82, 0x04, 0x56, 0x7A, 0x0E, 0xCF, 0x04, 0x69, 0x6E, 0x64, 0x32, 0x57, 0x7A, 
37616
  0x0B, 0xDA, 0x82, 0x01, 0x58, 0x7A, 0x0F, 0xDA, 0x82, 0x05, 0x59, 0x7A, 0x10, 0xCF, 0x04, 0x6B, 
37617
  0x65, 0x79, 0x32, 0x59, 0x7A, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6C, 0x5C, 
37618
  0x7A, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6B, 0x5F, 0x7A, 0x13, 0xDA, 0x1E, 
37619
  0x7E, 0x80, 0xA8, 0x0C, 0xCF, 0x09, 0x69, 0x74, 0x65, 0x72, 0x2D, 0x6B, 0x65, 0x79, 0x73, 0x80, 
37620
  0x82, 0x80, 0xA8, 0x0D, 0xCF, 0x0B, 0x63, 0x61, 0x6C, 0x6C, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 
37621
  0x72, 0x80, 0x83, 0x80, 0xA8, 0x0B, 0xCF, 0x04, 0x64, 0x6F, 0x6E, 0x65, 0x80, 0x83, 0x80, 0xA8, 
37622
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6E, 0x80, 0x86, 0x80, 0xA8, 0x0F, 0xCF, 
37623
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x6D, 0x80, 0x89, 0x80, 0xA8, 0x10, 0xDA, 0x1E, 0x80, 
37624
  0x8A, 0x80, 0x9E, 0x0E, 0xDA, 0x43, 0x80, 0x8A, 0x80, 0x9E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37625
  0x30, 0x30, 0x31, 0x6F, 0x80, 0x8E, 0x80, 0x9C, 0x13, 0xCF, 0x07, 0x6F, 0x6C, 0x64, 0x2D, 0x6B, 
37626
  0x65, 0x79, 0x80, 0x90, 0x80, 0x9C, 0x14, 0xCF, 0x02, 0x69, 0x69, 0x80, 0x92, 0x80, 0x9C, 0x15, 
37627
  0xCF, 0x07, 0x6E, 0x65, 0x77, 0x2D, 0x6B, 0x65, 0x79, 0x40, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 
37628
  0x00, 0x3F, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x26, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x0F, 
37629
  0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x1F, 0x09, 0x0A, 
37630
  0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 0x08, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x08, 0x00, 
37631
  0x00, 0x32, 0x05, 0x08, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x49, 0x09, 0x01, 
37632
  0x09, 0x1C, 0xF7, 0xFF, 0xFF, 0x1C, 0x95, 0x00, 0x00, 0x26, 0x08, 0x07, 0x01, 0x1E, 0x08, 0x18, 
37633
  0x00, 0x3D, 0x09, 0x02, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 
37634
  0x00, 0x49, 0x0B, 0x01, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 0x10, 0x00, 0x3A, 0x0B, 0x01, 
37635
  0x0C, 0x1B, 0x0D, 0x0B, 0x00, 0x49, 0x09, 0x0A, 0x09, 0x28, 0x0E, 0x00, 0x00, 0x25, 0x0B, 0x0E, 
37636
  0x09, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 0x0B, 0x0A, 0x09, 0x32, 0x0D, 0x0B, 
37637
  0x00, 0x35, 0x0E, 0x00, 0x00, 0x32, 0x05, 0x0E, 0x00, 0x2C, 0x0F, 0x00, 0x00, 0x35, 0x0B, 0x0F, 
37638
  0x00, 0x49, 0x0C, 0x01, 0x0C, 0x1C, 0xF1, 0xFF, 0xFF, 0x1C, 0x7C, 0x00, 0x00, 0x26, 0x09, 0x07, 
37639
  0x02, 0x1E, 0x09, 0x21, 0x00, 0x3D, 0x0A, 0x02, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 
37640
  0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x28, 0x0F, 0x00, 
37641
  0x00, 0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x16, 0x00, 0x3A, 0x0E, 0x01, 
37642
  0x0F, 0x1B, 0x10, 0x0E, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 
37643
  0x0A, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x0F, 0x00, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 0x28, 0x11, 0x00, 
37644
  0x00, 0x25, 0x0E, 0x11, 0x0D, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x3A, 0x0E, 0x0B, 
37645
  0x0A, 0x3A, 0x11, 0x0C, 0x0D, 0x33, 0x10, 0x0E, 0x11, 0x35, 0x12, 0x00, 0x00, 0x32, 0x05, 0x12, 
37646
  0x00, 0x2C, 0x11, 0x00, 0x00, 0x35, 0x0E, 0x11, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xEB, 0xFF, 
37647
  0xFF, 0x1C, 0x5A, 0x00, 0x00, 0x26, 0x0A, 0x07, 0x03, 0x1E, 0x0A, 0x2B, 0x00, 0x3D, 0x0B, 0x02, 
37648
  0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 0x01, 0x1B, 0x0D, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 
37649
  0x02, 0x1B, 0x0E, 0x0B, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 0x10, 0x00, 
37650
  0x00, 0x28, 0x12, 0x00, 0x00, 0x49, 0x11, 0x01, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1F, 0x12, 0x1D, 
37651
  0x00, 0x3A, 0x11, 0x01, 0x12, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x0B, 0x0C, 0x0B, 0x28, 0x14, 0x00, 
37652
  0x00, 0x25, 0x11, 0x14, 0x0B, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x16, 0x00, 0x00, 0x49, 0x0F, 0x0D, 
37653
  0x0F, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x0F, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x11, 0x00, 
37654
  0x00, 0x49, 0x10, 0x0E, 0x10, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x10, 0x1E, 0x11, 0x02, 
37655
  0x00, 0x1C, 0x0C, 0x00, 0x00, 0x3A, 0x11, 0x0C, 0x0B, 0x3A, 0x14, 0x0D, 0x0F, 0x3A, 0x15, 0x0E, 
37656
  0x10, 0x33, 0x13, 0x11, 0x14, 0x31, 0x15, 0x00, 0x00, 0x35, 0x16, 0x00, 0x00, 0x32, 0x05, 0x16, 
37657
  0x00, 0x2C, 0x14, 0x00, 0x00, 0x35, 0x11, 0x14, 0x00, 0x49, 0x12, 0x01, 0x12, 0x1C, 0xE4, 0xFF, 
37658
  0xFF, 0x1C, 0x2E, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 
37659
  0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0B, 0x0D, 
37660
  0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x2A, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 
37661
  0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x21, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 
37662
  0x00, 0x2B, 0x0E, 0x00, 0x00, 0x23, 0x11, 0x0E, 0x07, 0x1E, 0x11, 0x12, 0x00, 0x3A, 0x12, 0x0C, 
37663
  0x0E, 0x1B, 0x13, 0x12, 0x00, 0x3A, 0x12, 0x02, 0x0E, 0x1B, 0x14, 0x12, 0x00, 0x49, 0x12, 0x14, 
37664
  0x13, 0x1B, 0x15, 0x12, 0x00, 0x28, 0x16, 0x00, 0x00, 0x25, 0x12, 0x16, 0x15, 0x1E, 0x12, 0x04, 
37665
  0x00, 0x29, 0x0B, 0x00, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0C, 0x0E, 
37666
  0x15, 0x3A, 0x16, 0x14, 0x15, 0x3C, 0x0D, 0x0E, 0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1C, 0xEE, 0xFF, 
37667
  0xFF, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x34, 0x0D, 0x00, 
37668
  0x00, 0x35, 0x0E, 0x00, 0x00, 0x32, 0x05, 0x0E, 0x00, 0x2C, 0x12, 0x00, 0x00, 0x35, 0x11, 0x12, 
37669
  0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xE0, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 0x4C, 0x03, 
37670
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37671
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37672
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37673
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37674
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37675
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37676
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37677
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37678
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37679
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37680
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37681
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37682
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37683
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37684
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37685
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37686
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37687
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37688
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37689
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37690
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF5, 
37691
  0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x02, 
37692
  0xCE, 0x08, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0xDA, 0x04, 0x00, 0x01, 0x00, 0xDA, 
37693
  0x1E, 0x00, 0x01, 0x01, 0xCF, 0x08, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x03, 0x00, 
37694
  0x00, 0x00, 0x83, 0x19, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 
37695
  0x01, 0x11, 0x00, 0x07, 0xCE, 0x06, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x30, 
37696
  0x00, 0x11, 0x00, 0xCF, 0x04, 0x70, 0x72, 0x65, 0x64, 0x00, 0x11, 0x01, 0xDA, 0x33, 0x00, 0x11, 
37697
  0x02, 0xCF, 0x06, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x01, 0x11, 0x04, 0xDA, 0x7E, 0x01, 0x10, 
37698
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x43, 0x04, 0x10, 0x06, 0xCF, 0x07, 0x5F, 
37699
  0x30, 0x30, 0x30, 0x30, 0x31, 0x42, 0x07, 0x10, 0x07, 0xCF, 0x04, 0x69, 0x74, 0x65, 0x6D, 0x40, 
37700
  0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 0x1B, 
37701
  0x06, 0x05, 0x00, 0x1F, 0x06, 0x0B, 0x00, 0x3A, 0x05, 0x01, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x31, 
37702
  0x07, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0x1E, 0x05, 0x04, 0x00, 0x32, 0x04, 0x07, 0x00, 0x2C, 
37703
  0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 0x00, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 
37704
  0x04, 0x00, 0x00, 0x84, 0x63, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37705
  0x00, 0x03, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
37706
  0xBF, 0xFE, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCE, 0x05, 0x0A, 0x20, 0x20, 0x20, 0x20, 0xD7, 
37707
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x03, 0x2C, 0x00, 0x07, 0xCE, 0x09, 
37708
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x40, 0xDA, 0x2F, 0xDA, 
37709
  0x30, 0x00, 0x2C, 0x00, 0xDA, 0x81, 0x07, 0x00, 0x2C, 0x01, 0xDA, 0x33, 0x00, 0x2C, 0x02, 0xCF, 
37710
  0x09, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x02, 0x2C, 0x04, 0xDA, 0x3A, 0x11, 
37711
  0x1C, 0x07, 0xDA, 0x39, 0x12, 0x1C, 0x08, 0xDA, 0x43, 0x1F, 0x2A, 0x08, 0xDA, 0x39, 0x28, 0x04, 
37712
  0x00, 0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x4A, 0x05, 
37713
  0x06, 0x04, 0x1E, 0x05, 0x25, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 
37714
  0x07, 0x00, 0x1E, 0x06, 0x13, 0x00, 0x3F, 0x07, 0x01, 0x00, 0x2B, 0x09, 0x02, 0x00, 0x0A, 0x08, 
37715
  0x09, 0x07, 0x07, 0x07, 0x08, 0x01, 0x32, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x35, 0x08, 
37716
  0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x4A, 0x09, 
37717
  0x0A, 0x04, 0x1E, 0x09, 0x06, 0x00, 0x3A, 0x0A, 0x01, 0x04, 0x3C, 0x07, 0x08, 0x0A, 0x49, 0x04, 
37718
  0x01, 0x04, 0x05, 0x08, 0x08, 0x02, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 0x3A, 0x07, 
37719
  0x01, 0x04, 0x31, 0x07, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x49, 0x04, 
37720
  0x01, 0x04, 0x28, 0x09, 0x00, 0x00, 0x4A, 0x07, 0x09, 0x04, 0x1E, 0x07, 0x06, 0x00, 0x3A, 0x09, 
37721
  0x01, 0x04, 0x33, 0x08, 0x00, 0x09, 0x2C, 0x0B, 0x02, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1C, 0xF8, 
37722
  0xFF, 0xFF, 0x03, 0x08, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x87, 0x22, 
37723
  0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 
37724
  0x09, 0x00, 0x05, 0x02, 0x2C, 0x00, 0x27, 0x00, 0x27, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 
37725
  0x12, 0x00, 0x09, 0x01, 0x09, 0x01, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x16, 0x00, 0x0B, 0x01, 
37726
  0x12, 0x01, 0x0B, 0xBF, 0xFD, 0x09, 0xBF, 0xFD, 0x07, 0x09, 0x14, 0x00, 0x09, 0x00, 0x09, 0x00, 
37727
  0x09, 0x01, 0x21, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x1F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
37728
  0x0B, 0xBF, 0xFF, 0x09, 0xBF, 0xFE, 0x07, 0xBF, 0xF6, 0x03, 0x00, 0x03, 0xCE, 0x16, 0x63, 0x6F, 
37729
  0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x6D, 0x6F, 0x64, 
37730
  0x75, 0x6C, 0x65, 0x20, 0xCE, 0x06, 0x3A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x00, 0x4D, 0x00, 0xDA, 
37731
  0x81, 0x22, 0x00, 0x4D, 0x01, 0xCF, 0x0B, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 
37732
  0x6E, 0x64, 0x00, 0x4D, 0x02, 0xDA, 0x39, 0x06, 0x4D, 0x04, 0xCF, 0x02, 0x6D, 0x70, 0x06, 0x32, 
37733
  0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x76, 0x09, 0x32, 0x06, 0xCF, 0x07, 0x5F, 
37734
  0x30, 0x30, 0x30, 0x30, 0x35, 0x75, 0x0D, 0x32, 0x08, 0xDA, 0x15, 0x0F, 0x32, 0x09, 0xCF, 0x08, 
37735
  0x6D, 0x6F, 0x64, 0x2D, 0x6B, 0x69, 0x6E, 0x64, 0x11, 0x32, 0x0A, 0xCF, 0x07, 0x63, 0x68, 0x65, 
37736
  0x63, 0x6B, 0x65, 0x72, 0x1C, 0x21, 0x0C, 0xDA, 0x7E, 0x28, 0x30, 0x0B, 0xCF, 0x08, 0x66, 0x75, 
37737
  0x6C, 0x6C, 0x70, 0x61, 0x74, 0x68, 0x35, 0x4D, 0x06, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 
37738
  0x64, 0x65, 0x72, 0x3D, 0x4D, 0x05, 0xCF, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x42, 0x4D, 0x08, 
37739
  0xCF, 0x09, 0x73, 0x74, 0x72, 0x2D, 0x70, 0x61, 0x72, 0x74, 0x73, 0x28, 0x02, 0x00, 0x00, 0x2C, 
37740
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 
37741
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x04, 0x06, 0x1B, 
37742
  0x06, 0x05, 0x00, 0x1F, 0x06, 0x28, 0x00, 0x3A, 0x05, 0x04, 0x06, 0x3D, 0x07, 0x05, 0x00, 0x1B, 
37743
  0x08, 0x07, 0x00, 0x3D, 0x07, 0x05, 0x01, 0x1B, 0x09, 0x07, 0x00, 0x3D, 0x07, 0x05, 0x02, 0x1B, 
37744
  0x0A, 0x07, 0x00, 0x32, 0x0A, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x05, 0x07, 0x00, 0x1E, 
37745
  0x05, 0x1B, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x35, 0x07, 0x0B, 0x00, 0x1E, 
37746
  0x07, 0x09, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 0x0B, 0x08, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 
37747
  0x0B, 0x04, 0x00, 0x32, 0x0C, 0x09, 0x00, 0x45, 0x02, 0x00, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x1C, 
37748
  0x0F, 0x00, 0x00, 0x32, 0x00, 0x08, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x31, 
37749
  0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x06, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0B, 0x0C, 0x00, 0x31, 
37750
  0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1E, 0x0C, 0x04, 0x00, 0x32, 
37751
  0x0B, 0x09, 0x00, 0x45, 0x02, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x06, 0x04, 0x06, 0x1C, 
37752
  0xD9, 0xFF, 0xFF, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 0x1B, 
37753
  0x06, 0x05, 0x00, 0x32, 0x06, 0x04, 0x00, 0x2C, 0x07, 0x08, 0x00, 0x35, 0x05, 0x07, 0x00, 0x2C, 
37754
  0x07, 0x09, 0x00, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 
37755
  0x05, 0x07, 0x00, 0x2C, 0x07, 0x0B, 0x00, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x08, 0x0C, 0x00, 0x35, 
37756
  0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x07, 0x0D, 0x00, 0x2C, 0x09, 0x0E, 0x00, 0x33, 
37757
  0x07, 0x00, 0x09, 0x34, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x35, 0x07, 0x09, 0x00, 0x28, 
37758
  0x09, 0x00, 0x00, 0x32, 0x09, 0x07, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0xCD, 
37759
  0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x03, 0x14, 0x01, 0x0E, 0xCE, 0x08, 0x65, 0x78, 
37760
  0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
37761
  0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 
37762
  0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x81, 0xF3, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 
37763
  0x07, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
37764
  0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 
37765
  0x67, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0xDA, 0x81, 0xF0, 0xDA, 
37766
  0x81, 0xF7, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x25, 
37767
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x39, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x26, 0xBF, 0xFF, 0x00, 
37768
  0x04, 0xDA, 0x82, 0x27, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0x28, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
37769
  0x15, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x82, 0x29, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0x2A, 0xBF, 
37770
  0xFF, 0x00, 0x0C, 0xDA, 0x7E, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x82, 0x2B, 0x01, 0x14, 0x02, 0xCF, 
37771
  0x01, 0x74, 0x03, 0x14, 0x03, 0xDA, 0x81, 0x96, 0x04, 0x14, 0x04, 0xCF, 0x03, 0x63, 0x68, 0x6B, 
37772
  0x3D, 0x01, 0x00, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x3D, 0x01, 0x00, 0x01, 0x3D, 0x01, 0x00, 0x02, 
37773
  0x1B, 0x04, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 
37774
  0x1E, 0x00, 0x0B, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x32, 0x04, 0x01, 0x00, 0x2C, 0x05, 0x01, 0x00, 
37775
  0x35, 0x01, 0x05, 0x00, 0x1E, 0x01, 0x05, 0x00, 0x2D, 0x05, 0x00, 0x00, 0x32, 0x05, 0x02, 0x00, 
37776
  0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
37777
  0xBF, 0xFF, 0x8B, 0x8B, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x1C, 0x00, 
37778
  0x1C, 0x00, 0x1C, 0x00, 0x16, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x18, 0x01, 
37779
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0xBF, 0xFF, 0x18, 0xBF, 0xFF, 0x16, 0x8B, 0x7D, 0x03, 
37780
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
37781
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
37782
  0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
37783
  0x00, 0x07, 0x01, 0x18, 0x00, 0x18, 0x00, 0x09, 0x00, 0x09, 0x01, 0x14, 0x00, 0x14, 0x01, 0x0B, 
37784
  0xBF, 0xFD, 0x07, 0x05, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
37785
  0x0B, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x16, 0x00, 0x16, 0x01, 0x0D, 0xBF, 
37786
  0xF6, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x00, 0x03, 0x01, 0x14, 0x00, 0x05, 0x04, 0x22, 0x00, 0x22, 
37787
  0x00, 0x22, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFC, 0x05, 0x05, 0x15, 0x00, 
37788
  0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xFB, 0x05, 0x06, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
37789
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x00, 0x00, 0x00, 
37790
  0xDA, 0x81, 0xA0, 0xDA, 0x81, 0xB6, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0xA1, 0xD3, 0x00, 0xD0, 0x0E, 
37791
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0xD3, 0x04, 
37792
  0xDA, 0x81, 0xB8, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
37793
  0xFF, 0xFF, 0x04, 0x14, 0x00, 0x05, 0xCE, 0x0E, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 
37794
  0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x81, 0xA0, 0xDA, 0x81, 0xB6, 0xDA, 0x81, 
37795
  0x26, 0xDA, 0x1A, 0x00, 0x14, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x14, 0x01, 0xDA, 0x81, 0x4D, 0x00, 
37796
  0x14, 0x02, 0xCF, 0x0E, 0x70, 0x72, 0x65, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 
37797
  0x65, 0x72, 0x05, 0x14, 0x04, 0xCF, 0x02, 0x6D, 0x63, 0x07, 0x14, 0x06, 0xCF, 0x01, 0x6D, 0x2C, 
37798
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 
37799
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x3A, 0x05, 0x04, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1E, 
37800
  0x05, 0x0B, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1E, 
37801
  0x07, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x35, 0x08, 0x06, 0x00, 0x3C, 
37802
  0x04, 0x00, 0x08, 0x03, 0x08, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8C, 
37803
  0x2F, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x10, 0x01, 0x1D, 0x00, 0x10, 
37804
  0x00, 0x10, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 
37805
  0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x12, 0xBF, 0xFF, 0x10, 0xDA, 0x81, 0xBF, 0xD7, 0x00, 0xCD, 
37806
  0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x00, 0x02, 
37807
  0xCE, 0x0C, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0xDA, 0x04, 
37808
  0xDA, 0x81, 0x82, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x02, 0x04, 
37809
  0x00, 0x02, 0xCE, 0x0A, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x04, 
37810
  0xD3, 0x82, 0xB0, 0xDA, 0x01, 0xDA, 0x09, 0xDA, 0x16, 0xDA, 0x1A, 0xDA, 0x1F, 0xDA, 0x24, 0xDA, 
37811
  0x25, 0xDA, 0x29, 0xDA, 0x4A, 0xDA, 0x4F, 0xDA, 0x50, 0xDA, 0x54, 0xDA, 0x55, 0xDA, 0x5A, 0xDA, 
37812
  0x80, 0x8D, 0xDA, 0x80, 0x92, 0xDA, 0x80, 0x93, 0xDA, 0x80, 0x98, 0xDA, 0x80, 0x99, 0xDA, 0x80, 
37813
  0x9D, 0xDA, 0x80, 0x9F, 0xDA, 0x80, 0xA4, 0xDA, 0x80, 0xE9, 0xDA, 0x80, 0xED, 0xDA, 0x80, 0xA5, 
37814
  0xDA, 0x80, 0xA9, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 
37815
  0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 0xCF, 0x09, 0x6D, 
37816
  0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0x68, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 
37817
  0x6F, 0x73, 0x68, 0xCF, 0x04, 0x65, 0x61, 0x63, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
37818
  0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 0xCE, 0x04, 0x65, 0x61, 
37819
  0x63, 0x68, 0xDA, 0x04, 0xD0, 0x04, 0x65, 0x61, 0x63, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
37820
  0x00, 0x12, 0x04, 0x04, 0x04, 0x0D, 0x4D, 0x00, 0x08, 0xCE, 0x0D, 0x65, 0x61, 0x63, 0x68, 0x2D, 
37821
  0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xD7, 0x00, 0xCD, 0x00, 
37822
  0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x03, 0x08, 0x00, 0x02, 0xCE, 0x0B, 0x69, 0x64, 0x65, 
37823
  0x6D, 0x70, 0x6F, 0x74, 0x65, 0x6E, 0x74, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xD5, 0x06, 0xD0, 0x06, 
37824
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xCB, 0xD0, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xCB, 
37825
  0xDA, 0x68, 0xCB, 0xDA, 0x61, 0xCB, 0xDA, 0x70, 0xCB, 0xDA, 0x6A, 0xCB, 0xD8, 0x03, 0x6E, 0x6F, 
37826
  0x74, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xCF, 0x0B, 0x69, 0x64, 0x65, 0x6D, 0x70, 
37827
  0x6F, 0x74, 0x65, 0x6E, 0x74, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
37828
  0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x02, 
37829
  0x02, 0x00, 0x36, 0x02, 0x00, 0x00, 0x80, 0x86, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x08, 0x00, 
37830
  0x08, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x80, 0xAB, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 
37831
  0x1C, 0x02, 0x02, 0x01, 0x02, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x65, 0x78, 0x74, 0x49, 0x00, 0x00, 
37832
  0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x03, 0x76, 0x61, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 
37833
  0x19, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x04, 0x6E, 0x6F, 0x74, 
37834
  0x3D, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 
37835
  0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 
37836
  0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 
37837
  0xFF, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
37838
  0x00, 0xDA, 0x82, 0x49, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x06, 0x04, 0x03, 0x02, 0x03, 0x00, 
37839
  0x06, 0xCE, 0x02, 0x69, 0x6E, 0x3A, 0x00, 0x00, 0x01, 0x28, 0x03, 0x00, 0x00, 0x25, 0x03, 0x00, 
37840
  0x03, 0x1D, 0x03, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xD0, 0x04, 0x6B, 
37841
  0x65, 0x79, 0x73, 0xD0, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0xCF, 0x03, 0x73, 0x65, 0x74, 0xCF, 
37842
  0x05, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x80, 0xB3, 0x00, 0x4D, 0x00, 0xCF, 0x07, 0x62, 0x69, 
37843
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x00, 0x4D, 0x01, 0xCF, 0x03, 0x69, 0x6E, 0x78, 0x00, 0x4D, 0x02, 
37844
  0xCF, 0x04, 0x6B, 0x69, 0x6E, 0x64, 0x00, 0x4D, 0x03, 0xDA, 0x80, 0xC7, 0x00, 0x4D, 0x04, 0xCF, 
37845
  0x0D, 0x65, 0x61, 0x63, 0x68, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x02, 0x4D, 
37846
  0x06, 0xDA, 0x3A, 0x0C, 0x4D, 0x07, 0xCF, 0x02, 0x64, 0x73, 0x1F, 0x3A, 0x02, 0xCF, 0x07, 0x5F, 
37847
  0x30, 0x30, 0x30, 0x30, 0x30, 0x65, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 
37848
  0x05, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1E, 0x07, 
37849
  0x03, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 
37850
  0x09, 0x00, 0x1B, 0x05, 0x08, 0x00, 0x1B, 0x07, 0x05, 0x00, 0x25, 0x08, 0x07, 0x01, 0x1E, 0x08, 
37851
  0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x33, 0x0A, 
37852
  0x07, 0x01, 0x45, 0x09, 0x00, 0x00, 0x1B, 0x05, 0x09, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x28, 0x0A, 
37853
  0x00, 0x00, 0x33, 0x09, 0x07, 0x0A, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x33, 0x0A, 
37854
  0x06, 0x08, 0x45, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x33, 0x0A, 
37855
  0x0B, 0x06, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x25, 0x0B, 0x02, 0x0C, 0x1E, 0x0B, 
37856
  0x06, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x33, 0x0D, 0x07, 0x06, 0x45, 0x0C, 0x00, 0x00, 0x1B, 0x0A, 
37857
  0x0C, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x25, 0x0D, 0x02, 0x0E, 0x1E, 0x0D, 
37858
  0x03, 0x00, 0x1B, 0x0C, 0x06, 0x00, 0x1C, 0x0D, 0x00, 0x00, 0x2C, 0x10, 0x09, 0x00, 0x25, 0x0F, 
37859
  0x02, 0x10, 0x1E, 0x0F, 0x08, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x33, 0x11, 0x07, 0x06, 0x45, 0x10, 
37860
  0x00, 0x00, 0x32, 0x06, 0x10, 0x00, 0x46, 0x11, 0x00, 0x00, 0x1B, 0x0E, 0x11, 0x00, 0x1C, 0x02, 
37861
  0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x1B, 0x0C, 0x0E, 0x00, 0x1B, 0x0A, 0x0C, 0x00, 0x2C, 0x0C, 
37862
  0x02, 0x00, 0x33, 0x0C, 0x00, 0x0A, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x33, 0x0C, 
37863
  0x07, 0x06, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x33, 0x0D, 0x06, 0x0A, 0x45, 0x0C, 
37864
  0x00, 0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x33, 0x0D, 0x08, 0x0B, 0x34, 0x03, 0x00, 0x00, 0x31, 0x0C, 
37865
  0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x0C, 0x00, 0x33, 0x0B, 0x05, 0x09, 0x31, 0x0A, 
37866
  0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x81, 0xEE, 0x03, 0x00, 0x03, 0x00, 
37867
  0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x27, 0x00, 
37868
  0x27, 0x00, 0x0D, 0x00, 0x05, 0x02, 0x11, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x1C, 0x00, 
37869
  0x1C, 0x00, 0x1C, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37870
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x0D, 0x00, 0x0D, 
37871
  0x00, 0x0D, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
37872
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x03, 0x16, 0x00, 
37873
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFD, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
37874
  0x00, 0x0D, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37875
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
37876
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 
37877
  0x01, 0xDA, 0x82, 0x62, 0x00, 0x05, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x05, 0x03, 0xDA, 0x82, 0x46, 
37878
  0x2C, 0x04, 0x00, 0x00, 0x33, 0x00, 0x01, 0x04, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 
37879
  0x36, 0x04, 0x00, 0x00, 0x82, 0x50, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
37880
  0x05, 0x65, 0x76, 0x65, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
37881
  0x01, 0x01, 0x09, 0x00, 0x02, 0xCE, 0x05, 0x65, 0x76, 0x65, 0x6E, 0x3F, 0xDA, 0x04, 0xD7, 0x00, 
37882
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x01, 0x1B, 0x00, 0x07, 0xCE, 0x07, 0x63, 
37883
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0xDA, 0x04, 0xD0, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
37884
  0x65, 0x00, 0x1B, 0x00, 0xDA, 0x1E, 0x00, 0x1B, 0x01, 0xDA, 0x80, 0x87, 0x00, 0x1B, 0x02, 0xCF, 
37885
  0x07, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x02, 0x1B, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
37886
  0x30, 0x30, 0x30, 0x73, 0x09, 0x1B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x74, 
37887
  0x0E, 0x1B, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x75, 0x16, 0x1B, 0x07, 0xCF, 
37888
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x76, 0x2C, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 
37889
  0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x32, 0x00, 0x01, 0x00, 0x35, 0x05, 0x04, 0x00, 
37890
  0x1B, 0x03, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x1B, 0x05, 0x03, 0x00, 
37891
  0x1E, 0x05, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x3B, 0x03, 0x01, 0x06, 
37892
  0x1B, 0x06, 0x03, 0x00, 0x1E, 0x06, 0x06, 0x00, 0x32, 0x01, 0x00, 0x00, 0x35, 0x07, 0x06, 0x00, 
37893
  0x09, 0x08, 0x07, 0xFF, 0x1B, 0x03, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 
37894
  0x1B, 0x07, 0x03, 0x00, 0x1E, 0x07, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x27, 0x03, 0x00, 0x01, 
37895
  0x03, 0x03, 0x00, 0x00, 0x83, 0x69, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37896
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37897
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37898
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x09, 0x00, 0xDA, 0x1E, 
37899
  0x00, 0x09, 0x01, 0xDA, 0x82, 0x64, 0x2B, 0x03, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x03, 0x2B, 0x03, 
37900
  0x00, 0x00, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2B, 0x04, 
37901
  0x00, 0x00, 0x25, 0x02, 0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x93, 0x37, 0x00, 0x37, 0x00, 
37902
  0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0xCF, 0x11, 0x73, 
37903
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
37904
  0xD8, 0x11, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x70, 0x72, 
37905
  0x6F, 0x74, 0x6F, 0xCF, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 
37906
  0x61, 0x63, 0x65, 0xD8, 0x0E, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 
37907
  0x61, 0x63, 0x65, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x65, 0x65, 0x6B, 0xD8, 
37908
  0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x65, 0x65, 0x6B, 0xCF, 0x04, 0x66, 0x6F, 0x72, 
37909
  0x76, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
37910
  0x03, 0x08, 0x00, 0x05, 0xCE, 0x04, 0x66, 0x6F, 0x72, 0x76, 0xDA, 0x04, 0xDA, 0x80, 0xF4, 0xD7, 
37911
  0x00, 0xCD, 0x00, 0x09, 0x00, 0x09, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 
37912
  0xCE, 0x01, 0x2B, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 
37913
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 
37914
  0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x06, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 
37915
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x06, 0x03, 0x03, 0x04, 0x05, 
37916
  0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xD7, 
37917
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x07, 0x07, 0x07, 0x0B, 0x44, 0x00, 0x0C, 0xCE, 0x10, 
37918
  0x66, 0x6F, 0x72, 0x2D, 0x76, 0x61, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 
37919
  0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x82, 0x4C, 0xDA, 0x82, 0x5C, 0xDA, 0x82, 0x5D, 0xDA, 0x82, 0x55, 
37920
  0xDA, 0x80, 0xAB, 0xD2, 0x00, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 
37921
  0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x3F, 0xDA, 0x04, 
37922
  0xDA, 0x1C, 0xD0, 0x06, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 
37923
  0x06, 0x01, 0xCF, 0x07, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 
37924
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 
37925
  0x03, 0x00, 0x00, 0x65, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0xDA, 
37926
  0x80, 0xF8, 0xCF, 0x02, 0x69, 0x66, 0xDA, 0x80, 0xB3, 0x00, 0x44, 0x00, 0xDA, 0x43, 0x00, 0x44, 
37927
  0x01, 0xDA, 0x35, 0x00, 0x44, 0x02, 0xCF, 0x04, 0x73, 0x74, 0x6F, 0x70, 0x00, 0x44, 0x03, 0xCF, 
37928
  0x04, 0x73, 0x74, 0x65, 0x70, 0x00, 0x44, 0x04, 0xCF, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
37929
  0x69, 0x73, 0x6F, 0x6E, 0x00, 0x44, 0x05, 0xCF, 0x05, 0x64, 0x65, 0x6C, 0x74, 0x61, 0x00, 0x44, 
37930
  0x06, 0xDA, 0x80, 0xC7, 0x00, 0x44, 0x07, 0xCF, 0x10, 0x66, 0x6F, 0x72, 0x2D, 0x76, 0x61, 0x72, 
37931
  0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x02, 0x44, 0x09, 0xDA, 0x81, 0x2A, 0x0C, 
37932
  0x44, 0x0A, 0xCF, 0x02, 0x73, 0x74, 0x19, 0x44, 0x08, 0xCF, 0x09, 0x6C, 0x6F, 0x6F, 0x70, 0x2D, 
37933
  0x62, 0x6F, 0x64, 0x79, 0x2D, 0x33, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x62, 
37934
  0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x31, 0x03, 0x00, 0x00, 
37935
  0x2C, 0x0B, 0x01, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x08, 0x03, 0x00, 
37936
  0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x08, 0x0B, 0x00, 
37937
  0x1B, 0x0A, 0x08, 0x00, 0x33, 0x04, 0x00, 0x09, 0x45, 0x08, 0x00, 0x00, 0x33, 0x05, 0x00, 0x0A, 
37938
  0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x02, 0x00, 0x33, 0x0D, 0x00, 0x0B, 0x45, 0x0C, 0x00, 0x00, 
37939
  0x2C, 0x0D, 0x03, 0x00, 0x32, 0x0D, 0x08, 0x00, 0x34, 0x06, 0x00, 0x00, 0x31, 0x0C, 0x00, 0x00, 
37940
  0x45, 0x0B, 0x00, 0x00, 0x1B, 0x08, 0x0B, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x00, 0x01, 
37941
  0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x05, 0x00, 0x33, 0x0D, 0x09, 0x02, 0x45, 0x0C, 0x00, 0x00, 
37942
  0x25, 0x0E, 0x0A, 0x03, 0x1E, 0x0E, 0x03, 0x00, 0x2C, 0x0D, 0x06, 0x00, 0x1C, 0x07, 0x00, 0x00, 
37943
  0x2C, 0x10, 0x05, 0x00, 0x33, 0x10, 0x0A, 0x03, 0x45, 0x0F, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 
37944
  0x45, 0x0F, 0x00, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x11, 0x07, 0x00, 
37945
  0x35, 0x10, 0x11, 0x00, 0x1B, 0x11, 0x10, 0x00, 0x1E, 0x10, 0x04, 0x00, 0x22, 0x12, 0x0A, 0x00, 
37946
  0x1B, 0x0F, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 0x1E, 0x0F, 0x03, 0x00, 
37947
  0x1B, 0x0E, 0x08, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x2C, 0x11, 0x08, 0x00, 0x2B, 0x12, 0x00, 0x00, 
37948
  0x33, 0x11, 0x0A, 0x12, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x33, 0x12, 0x10, 0x08, 
37949
  0x45, 0x11, 0x00, 0x00, 0x1B, 0x0E, 0x11, 0x00, 0x2C, 0x10, 0x0A, 0x00, 0x33, 0x10, 0x0B, 0x0C, 
37950
  0x34, 0x0D, 0x00, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x03, 0x0F, 0x00, 0x00, 
37951
  0x81, 0xC8, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 
37952
  0x0D, 0x00, 0x0D, 0x00, 0x29, 0x00, 0x29, 0x00, 0x0D, 0x00, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 
37953
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
37954
  0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
37955
  0x00, 0x05, 0x03, 0x0E, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 
37956
  0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0A, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0D, 0x00, 0x0D, 
37957
  0x00, 0x1F, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0B, 
37958
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xBF, 
37959
  0xFC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x08, 0x00, 0xDA, 
37960
  0x43, 0x00, 0x08, 0x01, 0xDA, 0x35, 0x00, 0x08, 0x02, 0xDA, 0x82, 0x82, 0x00, 0x08, 0x03, 0xDA, 
37961
  0x80, 0xC7, 0x00, 0x08, 0x04, 0xDA, 0x82, 0x75, 0x33, 0x00, 0x01, 0x02, 0x2B, 0x05, 0x01, 0x00, 
37962
  0x2C, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x33, 0x05, 0x06, 0x07, 0x31, 0x03, 0x00, 0x00, 
37963
  0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x82, 0x31, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
37964
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x61, 
37965
  0x63, 0x63, 0x65, 0x70, 0x74, 0xD8, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 
37966
  0x74, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x67, 
37967
  0x69, 0x76, 0x65, 0xCF, 0x10, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x75, 0x6E, 
37968
  0x69, 0x66, 0x6F, 0x72, 0x6D, 0xD8, 0x10, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 
37969
  0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0xCF, 0x05, 0x6D, 0x61, 0x63, 0x65, 0x78, 0xD7, 0x00, 
37970
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x01, 0x02, 0x03, 0x16, 0x00, 0x06, 0xCE, 0x05, 0x6D, 
37971
  0x61, 0x63, 0x65, 0x78, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x1F, 0x02, 0x01, 
37972
  0x02, 0x17, 0x67, 0x00, 0x08, 0x0E, 0xCE, 0x06, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0xDA, 0x04, 
37973
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 
37974
  0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x82, 0x4F, 0x00, 
37975
  0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 
37976
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 
37977
  0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x68, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 
37978
  0x00, 0x2D, 0x00, 0x2D, 0xCF, 0x05, 0x71, 0x75, 0x6F, 0x74, 0x65, 0xDA, 0x82, 0x15, 0xDA, 0x80, 
37979
  0xB3, 0xCF, 0x05, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x55, 0xDA, 0x82, 
37980
  0x81, 0xCF, 0x07, 0x75, 0x70, 0x73, 0x63, 0x6F, 0x70, 0x65, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 0xAE, 
37981
  0xCF, 0x0A, 0x71, 0x75, 0x61, 0x73, 0x69, 0x71, 0x75, 0x6F, 0x74, 0x65, 0xDA, 0x82, 0x5D, 0xDA, 
37982
  0x1C, 0xDA, 0x70, 0xDA, 0x75, 0xD0, 0x08, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xDA, 
37983
  0x81, 0xF8, 0xDA, 0x77, 0xDA, 0x6A, 0xDA, 0x68, 0xDA, 0x69, 0xDA, 0x61, 0x00, 0x67, 0x00, 0xDA, 
37984
  0x1E, 0x00, 0x67, 0x01, 0xCF, 0x0A, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
37985
  0x00, 0x67, 0x02, 0xCF, 0x06, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0x09, 0x67, 0x04, 0xCF, 0x05, 
37986
  0x72, 0x65, 0x63, 0x75, 0x72, 0x0B, 0x67, 0x06, 0xCF, 0x07, 0x64, 0x6F, 0x74, 0x61, 0x62, 0x6C, 
37987
  0x65, 0x0D, 0x67, 0x08, 0xCF, 0x0F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x62, 0x69, 0x6E, 
37988
  0x64, 0x69, 0x6E, 0x67, 0x73, 0x0F, 0x67, 0x0A, 0xCF, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 
37989
  0x64, 0x65, 0x66, 0x11, 0x67, 0x0C, 0xCF, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x61, 0x6C, 
37990
  0x6C, 0x13, 0x67, 0x0E, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x66, 0x6E, 0x15, 0x67, 
37991
  0x10, 0xCF, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x71, 0x71, 0x2B, 0x67, 0x12, 0xCF, 0x05, 
37992
  0x73, 0x70, 0x65, 0x63, 0x73, 0x2D, 0x67, 0x14, 0xCF, 0x05, 0x64, 0x6F, 0x74, 0x75, 0x70, 0x31, 
37993
  0x65, 0x16, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x67, 0x65, 0x67, 0x16, 0xDA, 0x39, 
37994
  0x2E, 0x02, 0x00, 0x00, 0x1E, 0x01, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
37995
  0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 
37996
  0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 0x05, 0x01, 0x00, 0x1B, 0x06, 0x05, 0x00, 
37997
  0x30, 0x07, 0x02, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x30, 0x09, 0x03, 0x00, 0x1B, 0x0A, 0x09, 0x00, 
37998
  0x30, 0x0B, 0x04, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x30, 0x0D, 0x05, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 
37999
  0x30, 0x0F, 0x06, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2C, 0x11, 0x01, 0x00, 0x2C, 0x12, 0x02, 0x00, 
38000
  0x2C, 0x13, 0x03, 0x00, 0x33, 0x11, 0x12, 0x13, 0x2C, 0x11, 0x04, 0x00, 0x33, 0x0C, 0x11, 0x0C, 
38001
  0x2C, 0x11, 0x05, 0x00, 0x2C, 0x12, 0x06, 0x00, 0x33, 0x11, 0x0A, 0x12, 0x2C, 0x11, 0x07, 0x00, 
38002
  0x33, 0x0A, 0x11, 0x0C, 0x2C, 0x11, 0x08, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x33, 0x11, 0x0C, 0x12, 
38003
  0x2C, 0x11, 0x0A, 0x00, 0x33, 0x0A, 0x11, 0x0E, 0x2C, 0x11, 0x0B, 0x00, 0x2C, 0x12, 0x0C, 0x00, 
38004
  0x33, 0x11, 0x10, 0x12, 0x31, 0x0C, 0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 0x1B, 0x12, 0x11, 0x00, 
38005
  0x30, 0x13, 0x07, 0x00, 0x1B, 0x14, 0x13, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x16, 0x0D, 0x00, 
38006
  0x35, 0x15, 0x16, 0x00, 0x1B, 0x16, 0x15, 0x00, 0x2C, 0x18, 0x0E, 0x00, 0x25, 0x17, 0x16, 0x18, 
38007
  0x1E, 0x17, 0x14, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x1A, 0x0F, 0x00, 0x35, 0x19, 0x1A, 0x00, 
38008
  0x2C, 0x1B, 0x10, 0x00, 0x25, 0x1A, 0x19, 0x1B, 0x1E, 0x1A, 0x09, 0x00, 0x32, 0x04, 0x00, 0x00, 
38009
  0x2C, 0x1B, 0x11, 0x00, 0x35, 0x19, 0x1B, 0x00, 0x34, 0x19, 0x00, 0x00, 0x2C, 0x1C, 0x12, 0x00, 
38010
  0x35, 0x1B, 0x1C, 0x00, 0x1B, 0x18, 0x1B, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 
38011
  0x35, 0x19, 0x14, 0x00, 0x1B, 0x18, 0x19, 0x00, 0x1B, 0x15, 0x18, 0x00, 0x1C, 0x1E, 0x00, 0x00, 
38012
  0x2C, 0x1A, 0x13, 0x00, 0x25, 0x19, 0x16, 0x1A, 0x1E, 0x19, 0x06, 0x00, 0x32, 0x04, 0x00, 0x00, 
38013
  0x2C, 0x1B, 0x11, 0x00, 0x35, 0x1A, 0x1B, 0x00, 0x1B, 0x18, 0x1A, 0x00, 0x1C, 0x15, 0x00, 0x00, 
38014
  0x2C, 0x1C, 0x14, 0x00, 0x25, 0x1B, 0x16, 0x1C, 0x1E, 0x1B, 0x08, 0x00, 0x32, 0x00, 0x04, 0x00, 
38015
  0x35, 0x1C, 0x06, 0x00, 0x31, 0x1C, 0x00, 0x00, 0x2C, 0x1E, 0x15, 0x00, 0x35, 0x1D, 0x1E, 0x00, 
38016
  0x1B, 0x1A, 0x1D, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x2C, 0x1E, 0x16, 0x00, 0x25, 0x1D, 0x16, 0x1E, 
38017
  0x1E, 0x1D, 0x05, 0x00, 0x32, 0x00, 0x04, 0x00, 0x35, 0x1E, 0x06, 0x00, 0x1B, 0x1C, 0x1E, 0x00, 
38018
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x1C, 0x00, 0x00, 0x1B, 0x1A, 0x1C, 0x00, 0x1B, 0x18, 0x1A, 0x00, 
38019
  0x1B, 0x15, 0x18, 0x00, 0x1B, 0x16, 0x15, 0x00, 0x03, 0x16, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
38020
  0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 0x05, 0xCE, 0x05, 0x72, 0x65, 0x63, 0x75, 0x72, 
38021
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 
38022
  0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0x00, 0x04, 0x00, 0xDA, 0x80, 0x87, 0x00, 0x04, 0x01, 0xDA, 
38023
  0x82, 0x9F, 0x2D, 0x02, 0x00, 0x01, 0x32, 0x00, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x02, 0x36, 0x02, 
38024
  0x00, 0x00, 0xBF, 0xFF, 0x88, 0x5D, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xCD, 0x00, 0xDC, 
38025
  0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x00, 0x12, 0x01, 0x09, 0xCE, 0x07, 0x64, 0x6F, 0x74, 0x61, 
38026
  0x62, 0x6C, 0x65, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
38027
  0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 
38028
  0x00, 0x12, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x12, 0x01, 0xCF, 0x08, 0x6F, 0x6E, 0x2D, 0x76, 0x61, 
38029
  0x6C, 0x75, 0x65, 0x00, 0x12, 0x02, 0xDA, 0x82, 0xA0, 0x01, 0x12, 0x04, 0xCF, 0x04, 0x6E, 0x65, 
38030
  0x77, 0x74, 0x04, 0x12, 0x06, 0xCF, 0x03, 0x6B, 0x65, 0x79, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 
38031
  0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x28, 0x08, 
38032
  0x00, 0x00, 0x4A, 0x07, 0x08, 0x06, 0x1E, 0x07, 0x0A, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2D, 0x09, 
38033
  0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 0x3A, 0x09, 0x00, 0x06, 0x31, 0x09, 0x00, 0x00, 0x35, 0x0A, 
38034
  0x01, 0x00, 0x3C, 0x04, 0x08, 0x0A, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xF5, 0xFF, 0xFF, 0x03, 0x04, 
38035
  0x00, 0x00, 0xBF, 0xFF, 0x88, 0x60, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 
38036
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x27, 0x00, 0x1D, 0x00, 
38037
  0x1D, 0x00, 0x07, 0x01, 0x10, 0xBF, 0xFE, 0x05, 0xBF, 0xFD, 0x03, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38038
  0x09, 0x01, 0x01, 0x01, 0x08, 0x26, 0x01, 0x08, 0xCE, 0x0F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 
38039
  0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 
38040
  0x81, 0xF8, 0xDA, 0x70, 0xDA, 0x2C, 0xDA, 0x61, 0xDA, 0x68, 0xDA, 0x69, 0xBF, 0xFF, 0x00, 0x00, 
38041
  0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 
38042
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0x00, 0x26, 
38043
  0x00, 0xDA, 0x1E, 0x00, 0x26, 0x01, 0xDA, 0x82, 0xA1, 0x04, 0x26, 0x03, 0xCF, 0x07, 0x5F, 0x30, 
38044
  0x30, 0x30, 0x30, 0x34, 0x64, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
38045
  0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x02, 0x03, 
38046
  0x04, 0x1E, 0x02, 0x04, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 
38047
  0x00, 0x2C, 0x05, 0x03, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x07, 0x00, 0x32, 0x01, 0x00, 
38048
  0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 
38049
  0x00, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x04, 
38050
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2D, 0x06, 0x00, 0x06, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x06, 
38051
  0x00, 0x25, 0x06, 0x03, 0x07, 0x1E, 0x06, 0x07, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2D, 0x08, 0x00, 
38052
  0x06, 0x35, 0x07, 0x08, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x36, 0x08, 0x00, 
38053
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x04, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x88, 
38054
  0x67, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38055
  0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x1B, 0x00, 
38056
  0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 
38057
  0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x20, 0x00, 
38058
  0x20, 0x00, 0x20, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 
38059
  0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0x01, 0x02, 0x1E, 0x01, 0x0A, 0xCE, 0x09, 0x65, 0x78, 
38060
  0x70, 0x61, 0x6E, 0x64, 0x64, 0x65, 0x66, 0xDA, 0x04, 0xDA, 0x2C, 0xD8, 0x0C, 0x61, 0x72, 0x72, 
38061
  0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 
38062
  0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 
38063
  0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
38064
  0x82, 0xA1, 0x00, 0x1E, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x1E, 0x01, 0xDA, 0x82, 0xA2, 0x03, 0x1E, 
38065
  0x03, 0xCF, 0x04, 0x6C, 0x61, 0x73, 0x74, 0x06, 0x1E, 0x05, 0xCF, 0x05, 0x62, 0x6F, 0x75, 0x6E, 
38066
  0x64, 0x3F, 0x02, 0x00, 0x00, 0x07, 0x03, 0x02, 0x01, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 
38067
  0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x07, 0x00, 
38068
  0x00, 0x3A, 0x06, 0x00, 0x07, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x08, 0x35, 0x07, 0x08, 
38069
  0x00, 0x32, 0x06, 0x07, 0x00, 0x40, 0x06, 0x00, 0x00, 0x2B, 0x07, 0x02, 0x00, 0x2B, 0x08, 0xFE, 
38070
  0xFF, 0x33, 0x00, 0x07, 0x08, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 0x08, 0x00, 0x31, 0x03, 0x00, 
38071
  0x00, 0x2D, 0x09, 0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x40, 0x08, 0x00, 
38072
  0x00, 0x33, 0x06, 0x07, 0x08, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x31, 0x09, 0x00, 
38073
  0x00, 0x2C, 0x06, 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x88, 0x70, 0x18, 0x00, 0x15, 
38074
  0x00, 0x0F, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x05, 0x03, 0x0B, 0x00, 0x0B, 0x00, 0x14, 
38075
  0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x02, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
38076
  0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFD, 0x07, 0x00, 0x07, 0x00, 0x07, 
38077
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38078
  0x06, 0x01, 0x01, 0x01, 0x03, 0x0F, 0x01, 0x0A, 0xCE, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 
38079
  0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x2C, 0xDA, 0x81, 0xF8, 0xD8, 0x05, 0x74, 0x75, 0x70, 0x6C, 
38080
  0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 
38081
  0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 
38082
  0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 
38083
  0xA2, 0x00, 0x0F, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x0F, 0x01, 0xDA, 0x82, 0xA3, 0x08, 0x0F, 0x02, 
38084
  0xDA, 0x81, 0x4D, 0x2B, 0x02, 0x01, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 
38085
  0x02, 0x03, 0x00, 0x2D, 0x03, 0x00, 0x04, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 
38086
  0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x31, 
38087
  0x04, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 
38088
  0xFF, 0x88, 0x79, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
38089
  0x00, 0x0F, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38090
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x05, 0x25, 0x01, 0x0D, 0xCE, 0x08, 0x65, 
38091
  0x78, 0x70, 0x61, 0x6E, 0x64, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x82, 0x95, 0xDA, 0x2C, 0xDA, 0x81, 
38092
  0xF8, 0xDA, 0x80, 0xAE, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 
38093
  0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
38094
  0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0xA1, 
38095
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xA3, 0x00, 0x25, 
38096
  0x00, 0xDA, 0x82, 0x33, 0x00, 0x25, 0x01, 0xDA, 0x82, 0xA4, 0x02, 0x25, 0x03, 0xCF, 0x02, 0x74, 
38097
  0x31, 0x0F, 0x17, 0x05, 0xDA, 0x81, 0x4D, 0x1F, 0x25, 0x05, 0xDA, 0x81, 0x4D, 0x2B, 0x03, 0x01, 
38098
  0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 
38099
  0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x11, 0x00, 0x2B, 0x05, 0x03, 0x00, 0x32, 0x00, 0x05, 
38100
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x04, 0x32, 0x06, 0x05, 
38101
  0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x2B, 0x07, 0x02, 
38102
  0x00, 0x3A, 0x06, 0x00, 0x07, 0x2C, 0x07, 0x03, 0x00, 0x33, 0x07, 0x03, 0x06, 0x34, 0x05, 0x00, 
38103
  0x00, 0x2C, 0x07, 0x04, 0x00, 0x36, 0x07, 0x00, 0x00, 0x2B, 0x05, 0x02, 0x00, 0x32, 0x00, 0x05, 
38104
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x04, 0x32, 0x06, 0x05, 
38105
  0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x03, 
38106
  0x00, 0x32, 0x06, 0x03, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x36, 0x06, 0x00, 
38107
  0x00, 0xBF, 0xFF, 0x88, 0x7D, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
38108
  0x00, 0x05, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
38109
  0x00, 0x13, 0x00, 0x09, 0x01, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
38110
  0x00, 0x09, 0x02, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
38111
  0x00, 0x13, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xCD, 0x00, 
38112
  0xFC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x0B, 0x01, 0x01, 0x0C, 0xCE, 0x08, 0x65, 0x78, 
38113
  0x70, 0x61, 0x6E, 0x64, 0x71, 0x71, 0xDA, 0x04, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
38114
  0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 
38115
  0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 
38116
  0x08, 0xDA, 0x82, 0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
38117
  0x82, 0xA3, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0xA4, 0x00, 0x0B, 0x00, 0xDA, 0x82, 0x33, 0x00, 
38118
  0x0B, 0x01, 0xDA, 0x82, 0xA5, 0x01, 0x0B, 0x03, 0xCF, 0x02, 0x71, 0x71, 0x30, 0x02, 0x00, 0x00, 
38119
  0x1B, 0x03, 0x02, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x2B, 0x06, 0x01, 0x00, 
38120
  0x3A, 0x05, 0x00, 0x06, 0x31, 0x05, 0x00, 0x00, 0x35, 0x06, 0x03, 0x00, 0x32, 0x04, 0x06, 0x00, 
38121
  0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
38122
  0x01, 0x01, 0x01, 0x0E, 0x47, 0x01, 0x0D, 0xCE, 0x02, 0x71, 0x71, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 
38123
  0x70, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xDA, 0x81, 0xF8, 0xCF, 0x07, 0x75, 0x6E, 0x71, 0x75, 0x6F, 
38124
  0x74, 0x65, 0xDA, 0x82, 0xB5, 0xDA, 0x2C, 0xDA, 0x6A, 0xDA, 0x61, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
38125
  0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x01, 0x0E, 0x00, 0x06, 0xCE, 0x03, 0x6B, 0x76, 0x73, 0xDA, 
38126
  0x04, 0xDA, 0x30, 0x00, 0x0E, 0x00, 0xCF, 0x04, 0x64, 0x69, 0x63, 0x74, 0x00, 0x0E, 0x01, 0xCF, 
38127
  0x03, 0x6B, 0x76, 0x73, 0x01, 0x0E, 0x03, 0xDA, 0x39, 0x01, 0x0D, 0x00, 0xCF, 0x07, 0x5F, 0x30, 
38128
  0x30, 0x30, 0x30, 0x33, 0x78, 0x04, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
38129
  0x77, 0x06, 0x0D, 0x04, 0xDA, 0x3A, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 
38130
  0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x08, 0x00, 0x1B, 0x04, 
38131
  0x05, 0x00, 0x3A, 0x06, 0x00, 0x04, 0x33, 0x03, 0x04, 0x06, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 
38132
  0x08, 0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x87, 0x11, 
38133
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x2A, 0x00, 
38134
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xD8, 0x05, 0x74, 0x61, 
38135
  0x62, 0x6C, 0x65, 0xDA, 0x68, 0xDA, 0x81, 0xAD, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 
38136
  0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 
38137
  0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 
38138
  0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xA3, 0xBF, 
38139
  0xFF, 0x00, 0x0E, 0xDA, 0x82, 0xA4, 0x00, 0x47, 0x00, 0xDA, 0x1E, 0x00, 0x47, 0x01, 0xDA, 0x82, 
38140
  0xB9, 0x04, 0x47, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x65, 0x16, 0x28, 0x06, 
38141
  0xCF, 0x02, 0x78, 0x30, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
38142
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x02, 0x03, 0x04, 
38143
  0x1E, 0x02, 0x21, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 
38144
  0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x07, 0x00, 0x32, 0x01, 0x00, 0x00, 
38145
  0x2C, 0x06, 0x04, 0x00, 0x35, 0x04, 0x06, 0x00, 0x34, 0x04, 0x00, 0x00, 0x46, 0x06, 0x00, 0x00, 
38146
  0x03, 0x06, 0x00, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3B, 0x04, 0x00, 0x06, 0x1B, 0x06, 0x04, 0x00, 
38147
  0x2C, 0x07, 0x05, 0x00, 0x25, 0x04, 0x07, 0x06, 0x1E, 0x04, 0x09, 0x00, 0x2B, 0x08, 0x01, 0x00, 
38148
  0x3B, 0x07, 0x00, 0x08, 0x31, 0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 
38149
  0x32, 0x06, 0x08, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x36, 0x07, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 
38150
  0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 
38151
  0x36, 0x08, 0x00, 0x00, 0x2C, 0x05, 0x08, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x04, 0x00, 
38152
  0x32, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x36, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x09, 0x00, 
38153
  0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x0A, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x07, 0x0A, 0x00, 
38154
  0x35, 0x06, 0x07, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 
38155
  0x34, 0x07, 0x00, 0x00, 0x2C, 0x06, 0x0B, 0x00, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x0C, 0x00, 
38156
  0x25, 0x06, 0x03, 0x07, 0x1E, 0x06, 0x0A, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x0A, 0x00, 
38157
  0x35, 0x07, 0x08, 0x00, 0x32, 0x01, 0x07, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 
38158
  0x34, 0x08, 0x00, 0x00, 0x2C, 0x07, 0x0D, 0x00, 0x36, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 
38159
  0x00, 0x88, 0x87, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
38160
  0x00, 0x07, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x16, 
38161
  0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x02, 0x1C, 0x00, 0x1C, 0x00, 0x14, 
38162
  0x01, 0x18, 0x00, 0x18, 0x00, 0x14, 0x01, 0x27, 0x00, 0x27, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 
38163
  0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x16, 0x00, 0x16, 
38164
  0x00, 0x16, 0xBF, 0xF9, 0x07, 0x00, 0x07, 0x00, 0x07, 0x08, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 
38165
  0xF8, 0x07, 0x00, 0x07, 0x00, 0x07, 0x09, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x18, 0x00, 0x18, 
38166
  0x00, 0x18, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xF7, 0x07, 0x00, 0x07, 0x00, 0x07, 0x0A, 
38167
  0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x11, 0x00, 0x11, 0x00, 
38168
  0x11, 0xBF, 0xF6, 0x07, 0x88, 0x87, 0x05, 0x00, 0x05, 0x0D, 0x0C, 0x00, 0x0C, 0x00, 0x19, 0x00, 
38169
  0x19, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38170
  0x0E, 0x01, 0x01, 0x01, 0x0C, 0x3D, 0x01, 0x14, 0xCE, 0x05, 0x64, 0x6F, 0x74, 0x75, 0x70, 0xDA, 
38171
  0x04, 0xDA, 0x82, 0x7C, 0xDA, 0x81, 0x26, 0xD5, 0x00, 0xD0, 0x03, 0x72, 0x65, 0x66, 0xDA, 0x08, 
38172
  0xDA, 0x59, 0xDA, 0x73, 0xD0, 0x0A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 
38173
  0xD8, 0x06, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0xDA, 0x2C, 0xDA, 0x81, 0xF8, 0xDA, 0x71, 0xBF, 
38174
  0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x82, 0x9D, 0xBF, 0xFF, 0x00, 0x02, 
38175
  0xDA, 0x82, 0x9E, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x9F, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x82, 
38176
  0xA0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x82, 0xA1, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x82, 0xA2, 0xBF, 
38177
  0xFF, 0x00, 0x0C, 0xDA, 0x82, 0xA3, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0xA4, 0xBF, 0xFF, 0x00, 
38178
  0x10, 0xDA, 0x82, 0xA5, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xA6, 0x00, 0x3D, 0x00, 0xDA, 0x82, 
38179
  0x33, 0x00, 0x3D, 0x01, 0xDA, 0x82, 0xA7, 0x09, 0x3D, 0x03, 0xCF, 0x01, 0x68, 0x0C, 0x3D, 0x05, 
38180
  0xDA, 0x81, 0x2A, 0x10, 0x15, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x66, 0x15, 
38181
  0x3D, 0x07, 0xCF, 0x05, 0x65, 0x6E, 0x74, 0x72, 0x79, 0x18, 0x21, 0x09, 0xCF, 0x01, 0x72, 0x21, 
38182
  0x3D, 0x09, 0xDA, 0x82, 0x3C, 0x24, 0x3D, 0x0B, 0xCF, 0x02, 0x6D, 0x3F, 0x28, 0x03, 0x00, 0x00, 
38183
  0x49, 0x02, 0x00, 0x03, 0x28, 0x04, 0x00, 0x00, 0x25, 0x03, 0x04, 0x02, 0x1E, 0x03, 0x03, 0x00, 
38184
  0x2C, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x00, 0x03, 
38185
  0x1B, 0x03, 0x02, 0x00, 0x2D, 0x05, 0x00, 0x12, 0x3A, 0x04, 0x05, 0x03, 0x1B, 0x05, 0x04, 0x00, 
38186
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 
38187
  0x1E, 0x07, 0x03, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 
38188
  0x1B, 0x07, 0x06, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x3B, 0x08, 0x07, 0x09, 0x1B, 0x09, 0x08, 0x00, 
38189
  0x1E, 0x09, 0x05, 0x00, 0x2B, 0x0B, 0x00, 0x00, 0x3A, 0x0A, 0x09, 0x0B, 0x1B, 0x08, 0x0A, 0x00, 
38190
  0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x3B, 0x0A, 0x07, 0x0B, 0x1B, 0x08, 0x0A, 0x00, 
38191
  0x1B, 0x09, 0x08, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x3A, 0x0A, 0x07, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 
38192
  0x1E, 0x05, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 0x0C, 0x05, 0x00, 0x32, 0x00, 0x0C, 0x00, 
38193
  0x2C, 0x0D, 0x06, 0x00, 0x36, 0x0D, 0x00, 0x00, 0x1E, 0x0B, 0x0B, 0x00, 0x2C, 0x0C, 0x07, 0x00, 
38194
  0x32, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2B, 0x0C, 0x01, 0x00, 
38195
  0x32, 0x00, 0x0C, 0x00, 0x2C, 0x0D, 0x09, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x34, 0x0C, 0x00, 0x00, 
38196
  0x36, 0x09, 0x00, 0x00, 0x2D, 0x0C, 0x00, 0x04, 0x32, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 
38197
  0x35, 0x0C, 0x0D, 0x00, 0x32, 0x00, 0x0C, 0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x36, 0x0D, 0x00, 0x00, 
38198
  0xBF, 0xFF, 0x88, 0xA4, 0x10, 0x00, 0x10, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x1A, 0x00, 
38199
  0x1A, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 
38200
  0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 
38201
  0x17, 0x00, 0x17, 0x00, 0x10, 0x00, 0x29, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x29, 0x00, 0x29, 0x00, 
38202
  0x38, 0x00, 0x38, 0x00, 0x29, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x05, 0x01, 
38203
  0x18, 0x00, 0x18, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x02, 0x0E, 0x00, 0x0E, 
38204
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 
38205
  0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x88, 0x54, 
38206
  0x01, 0x05, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x02, 
38207
  0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x09, 
38208
  0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 0x03, 0x10, 0x03, 0x00, 0x03, 0x00, 
38209
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38210
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38211
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0D, 0x03, 0x00, 0x03, 0x0D, 0x0B, 0x00, 0x0B, 0x00, 
38212
  0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
38213
  0x12, 0x00, 0x12, 0x00, 0x0E, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x10, 0x00, 0x10, 0x00, 
38214
  0x10, 0xBF, 0xFF, 0x0E, 0x00, 0x0E, 0x02, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x0E, 0xBF, 0xFF, 0x05, 
38215
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFC, 
38216
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x20, 0x00, 0x20, 0x00, 0x0F, 0x00, 
38217
  0x0F, 0x00, 0x0F, 0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x06, 0x0E, 
38218
  0x00, 0x0E, 0xBF, 0xFA, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
38219
  0xFF, 0x03, 0xBF, 0xA5, 0x01, 0x56, 0x01, 0x04, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38220
  0x10, 0x02, 0x02, 0x02, 0x09, 0x67, 0x00, 0x14, 0xCE, 0x09, 0x64, 0x65, 0x65, 0x70, 0x2D, 0x6E, 
38221
  0x6F, 0x74, 0x3D, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 0xDA, 0x6A, 0xDA, 0x68, 0xDA, 0x61, 0xD8, 
38222
  0x0D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xD8, 0x0C, 
38223
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xDA, 0x82, 0x4E, 0xD8, 
38224
  0x06, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 0x70, 0x00, 0x67, 0x00, 0xDA, 0x1E, 0x00, 0x67, 0x01, 0xDA, 
38225
  0x80, 0x87, 0x00, 0x67, 0x02, 0xCF, 0x09, 0x64, 0x65, 0x65, 0x70, 0x2D, 0x6E, 0x6F, 0x74, 0x3D, 
38226
  0x04, 0x67, 0x04, 0xCF, 0x02, 0x74, 0x78, 0x09, 0x67, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38227
  0x30, 0x34, 0x4B, 0x0E, 0x15, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4C, 0x19, 
38228
  0x2E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4D, 0x1C, 0x2E, 0x08, 0xDA, 0x39, 
38229
  0x1D, 0x2D, 0x09, 0xDA, 0x43, 0x1F, 0x2D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
38230
  0x4E, 0x23, 0x2D, 0x0D, 0xCF, 0x02, 0x78, 0x78, 0x25, 0x2D, 0x0E, 0xCF, 0x02, 0x79, 0x79, 0x30, 
38231
  0x37, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4F, 0x3B, 0x57, 0x08, 0xCF, 0x07, 
38232
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x50, 0x44, 0x57, 0x0A, 0xCF, 0x06, 0x72, 0x61, 0x77, 0x67, 
38233
  0x65, 0x74, 0x45, 0x57, 0x09, 0xDA, 0x39, 0x45, 0x56, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38234
  0x30, 0x34, 0x52, 0x48, 0x56, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x51, 0x4B, 
38235
  0x56, 0x0D, 0xDA, 0x3A, 0x4C, 0x56, 0x0E, 0xDA, 0x46, 0x2E, 0x02, 0x00, 0x00, 0x31, 0x00, 0x00, 
38236
  0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 
38237
  0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x4A, 0x06, 0x04, 0x05, 0x1B, 0x05, 0x06, 
38238
  0x00, 0x1E, 0x05, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x25, 0x06, 0x04, 
38239
  0x07, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x04, 0x00, 
38240
  0x00, 0x2C, 0x09, 0x02, 0x00, 0x25, 0x08, 0x04, 0x09, 0x1B, 0x06, 0x08, 0x00, 0x1E, 0x06, 0x19, 
38241
  0x00, 0x3F, 0x07, 0x00, 0x00, 0x3F, 0x08, 0x01, 0x00, 0x4A, 0x09, 0x07, 0x08, 0x1B, 0x07, 0x09, 
38242
  0x00, 0x1E, 0x07, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x2A, 0x08, 0x00, 0x00, 0x2B, 0x09, 0x00, 
38243
  0x00, 0x3F, 0x0A, 0x00, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x23, 0x0A, 0x09, 0x0B, 0x1E, 0x0A, 0x0C, 
38244
  0x00, 0x3A, 0x0C, 0x00, 0x09, 0x1B, 0x0D, 0x0C, 0x00, 0x3A, 0x0C, 0x01, 0x09, 0x1B, 0x0E, 0x0C, 
38245
  0x00, 0x32, 0x0D, 0x0E, 0x00, 0x35, 0x0C, 0x02, 0x00, 0x1E, 0x0C, 0x03, 0x00, 0x29, 0x08, 0x00, 
38246
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x05, 0x09, 0x09, 0x01, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x08, 0x00, 
38247
  0x00, 0x2C, 0x08, 0x03, 0x00, 0x25, 0x07, 0x04, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1E, 0x08, 0x03, 
38248
  0x00, 0x1B, 0x07, 0x08, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x25, 0x09, 0x04, 
38249
  0x0A, 0x1B, 0x07, 0x09, 0x00, 0x1E, 0x07, 0x20, 0x00, 0x3F, 0x08, 0x00, 0x00, 0x3F, 0x09, 0x01, 
38250
  0x00, 0x4A, 0x0A, 0x08, 0x09, 0x1B, 0x08, 0x0A, 0x00, 0x1E, 0x08, 0x02, 0x00, 0x03, 0x08, 0x00, 
38251
  0x00, 0x2C, 0x0B, 0x03, 0x00, 0x25, 0x0A, 0x04, 0x0B, 0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x09, 0x05, 
38252
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2A, 0x09, 0x00, 
38253
  0x00, 0x28, 0x0C, 0x00, 0x00, 0x49, 0x0B, 0x00, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 0x0D, 
38254
  0x00, 0x3A, 0x0B, 0x00, 0x0C, 0x1B, 0x0D, 0x0C, 0x00, 0x1B, 0x0E, 0x0B, 0x00, 0x32, 0x01, 0x0D, 
38255
  0x00, 0x35, 0x0B, 0x0A, 0x00, 0x32, 0x0B, 0x0E, 0x00, 0x35, 0x0F, 0x02, 0x00, 0x1E, 0x0F, 0x03, 
38256
  0x00, 0x29, 0x09, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0C, 0x00, 0x0C, 0x1C, 0xF4, 0xFF, 
38257
  0xFF, 0x03, 0x09, 0x00, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x25, 0x08, 0x04, 0x09, 0x1E, 0x08, 0x0C, 
38258
  0x00, 0x3F, 0x09, 0x00, 0x00, 0x3F, 0x0A, 0x01, 0x00, 0x08, 0x0B, 0x09, 0x0A, 0x32, 0x00, 0x01, 
38259
  0x00, 0x2C, 0x0A, 0x08, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2B, 0x0C, 0x00, 0x00, 0x4A, 0x0A, 0x0C, 
38260
  0x0B, 0x1D, 0x0A, 0x02, 0x00, 0x4A, 0x0A, 0x0B, 0x09, 0x03, 0x0A, 0x00, 0x00, 0x4A, 0x09, 0x00, 
38261
  0x01, 0x03, 0x09, 0x00, 0x00, 0x89, 0x02, 0x01, 0x04, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 
38262
  0x02, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 
38263
  0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 
38264
  0x07, 0xBF, 0xFF, 0x05, 0x02, 0x11, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
38265
  0x02, 0x0D, 0x01, 0x0D, 0x00, 0x17, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x17, 0x00, 0x0F, 
38266
  0x01, 0x17, 0x00, 0x0F, 0x01, 0x13, 0x00, 0x13, 0x00, 0x0F, 0x01, 0x18, 0x00, 0x11, 0xBF, 0xFC, 
38267
  0x0D, 0x00, 0x0D, 0xBF, 0xFE, 0x0B, 0x08, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
38268
  0x00, 0x07, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x07, 0xBF, 0xF5, 0x05, 0x0C, 0x11, 0x00, 0x1C, 0x00, 
38269
  0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x19, 0x00, 0x19, 0x00, 
38270
  0x19, 0x00, 0x19, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
38271
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0F, 0x00, 
38272
  0x35, 0x00, 0x2E, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0xBF, 0xFD, 0x0B, 0x06, 0x07, 0x00, 0x07, 0xBF, 
38273
  0xED, 0x05, 0x13, 0x21, 0x00, 0x2C, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x16, 
38274
  0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x01, 0x07, 0x00, 0x07, 0xCE, 0x1A, 0x6D, 0x61, 
38275
  0x63, 0x72, 0x6F, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 
38276
  0x6F, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x00, 0x16, 0x00, 0xDA, 0x1E, 0x00, 0x16, 0x01, 
38277
  0xDA, 0x82, 0x9D, 0x00, 0x16, 0x02, 0xDA, 0x82, 0x90, 0x00, 0x16, 0x03, 0xCF, 0x08, 0x70, 0x72, 
38278
  0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x04, 0x16, 0x05, 0xCF, 0x07, 0x63, 0x75, 0x72, 0x72, 0x65, 
38279
  0x6E, 0x74, 0x05, 0x16, 0x06, 0xCF, 0x07, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x1B, 0x03, 
38280
  0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 
38281
  0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x32, 0x05, 0x03, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 
38282
  0x08, 0x00, 0x1E, 0x07, 0x0C, 0x00, 0x05, 0x06, 0x06, 0x01, 0x2B, 0x09, 0xC8, 0x00, 0x21, 0x08, 
38283
  0x06, 0x09, 0x1E, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x01, 0x09, 0x00, 0x00, 0x1B, 0x03, 
38284
  0x05, 0x00, 0x32, 0x05, 0x01, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x05, 0x08, 0x00, 0x1C, 0xF2, 
38285
  0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x89, 0x2C, 0x03, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
38286
  0x03, 0x01, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x09, 0x00, 
38287
  0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
38288
  0xFC, 0x03, 0xBF, 0xF6, 0x01, 0xCF, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 
38289
  0x64, 0x2D, 0x62, 0x69, 0x6E, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x04, 0x02, 0x04, 
38290
  0x08, 0x29, 0x01, 0x25, 0xCE, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 
38291
  0x2D, 0x62, 0x69, 0x6E, 0xDA, 0x04, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 
38292
  0x70, 0x6C, 0x69, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 
38293
  0x04, 0x00, 0x02, 0xCE, 0x04, 0x6C, 0x61, 0x73, 0x74, 0xDA, 0x04, 0x00, 0x04, 0x00, 0xDA, 0x81, 
38294
  0x5C, 0x00, 0x04, 0x01, 0xDA, 0x82, 0xB2, 0x3F, 0x02, 0x00, 0x00, 0x07, 0x03, 0x02, 0x01, 0x3B, 
38295
  0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x4C, 0x0E, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 
38296
  0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xCE, 0x03, 0x62, 0x69, 0x6E, 0xDA, 0x81, 0x28, 0xDA, 0x81, 
38297
  0x33, 0xD0, 0x0E, 0x68, 0x61, 0x73, 0x2D, 0x62, 0x69, 0x6E, 0x2D, 0x73, 0x63, 0x72, 0x69, 0x70, 
38298
  0x74, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 
38299
  0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 
38300
  0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
38301
  0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 
38302
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 
38303
  0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 
38304
  0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 
38305
  0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xCF, 0x1A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x75, 0x6E, 
38306
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2D, 0x75, 0x6E, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x65, 
38307
  0x64, 0xBF, 0xFF, 0x00, 0x12, 0xCF, 0x10, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x6E, 
38308
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x13, 0xCF, 0x0F, 0x62, 0x75, 0x6E, 
38309
  0x64, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x70, 0x6F, 0x6C, 0x69, 0x73, 0x74, 0xBF, 0xFF, 0x00, 0x14, 
38310
  0xCF, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x75, 0x6E, 0x65, 0xBF, 0xFF, 
38311
  0x00, 0x15, 0xCF, 0x11, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 
38312
  0x6C, 0x6C, 0x65, 0x64, 0x3F, 0xBF, 0xFF, 0x00, 0x16, 0xCF, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
38313
  0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x17, 0xCF, 0x0B, 0x62, 
38314
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0xBF, 0xFF, 0x00, 0x18, 0xCF, 0x0E, 
38315
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0xBF, 0xFF, 
38316
  0x00, 0x19, 0xCF, 0x10, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x69, 0x6E, 0x73, 
38317
  0x74, 0x61, 0x6C, 0x6C, 0xBF, 0xFF, 0x00, 0x1A, 0xCF, 0x14, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
38318
  0x2F, 0x61, 0x64, 0x64, 0x2D, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0xBF, 0xFF, 
38319
  0x00, 0x1B, 0xCF, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x77, 0x68, 0x6F, 0x69, 0x73, 
38320
  0xBF, 0xFF, 0x00, 0x1C, 0xCF, 0x0F, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 
38321
  0x2D, 0x66, 0x69, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x1D, 0xCF, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
38322
  0x65, 0x2F, 0x61, 0x64, 0x64, 0x00, 0x29, 0x00, 0xDA, 0x81, 0x39, 0x00, 0x29, 0x01, 0xCF, 0x03, 
38323
  0x73, 0x72, 0x63, 0x00, 0x29, 0x02, 0xDA, 0x81, 0x2D, 0x00, 0x29, 0x03, 0xCF, 0x0A, 0x63, 0x68, 
38324
  0x6D, 0x6F, 0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x00, 0x29, 0x04, 0xDA, 0x82, 0xE5, 0x02, 0x29, 
38325
  0x06, 0xDA, 0x81, 0x2A, 0x0D, 0x29, 0x08, 0xDA, 0x81, 0x2D, 0x12, 0x29, 0x0A, 0xDA, 0x82, 0xFB, 
38326
  0x2D, 0x06, 0x00, 0x02, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x20, 0x02, 0x09, 0x00, 
38327
  0x32, 0x06, 0x01, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 
38328
  0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x07, 0x09, 0x00, 0x1C, 0x02, 0x00, 0x00, 
38329
  0x1B, 0x07, 0x02, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x20, 0x03, 0x03, 0x00, 0x2B, 0x09, 0xED, 0x01, 
38330
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x09, 0x03, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x02, 0x00, 
38331
  0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x0C, 0x04, 0x00, 
38332
  0x33, 0x0B, 0x06, 0x0C, 0x2C, 0x0D, 0x05, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x31, 0x0C, 0x00, 0x00, 
38333
  0x2C, 0x0D, 0x06, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x29, 0x0D, 0x00, 0x00, 
38334
  0x3C, 0x00, 0x0C, 0x0D, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x06, 0x08, 0x2C, 0x0D, 0x05, 0x00, 
38335
  0x35, 0x0C, 0x0D, 0x00, 0x33, 0x00, 0x01, 0x0C, 0x31, 0x0A, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x1C, 
38336
  0x36, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0xAF, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x00, 
38337
  0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 
38338
  0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 0x00, 
38339
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 
38340
  0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 
38341
  0x23, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 
38342
  0x2F, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0xD8, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x6F, 0x63, 
38343
  0x6B, 0x65, 0x74, 0xCF, 0x02, 0x2F, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 
38344
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2F, 0x3D, 0xDA, 0x04, 
38345
  0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0C, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
38346
  0x13, 0xDA, 0x81, 0x1E, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 
38347
  0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 
38348
  0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0C, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 
38349
  0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x0C, 0x03, 0x03, 0x04, 
38350
  0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 
38351
  0xDA, 0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xCF, 0x02, 0x6E, 0x73, 0x00, 
38352
  0x08, 0x02, 0xDA, 0x82, 0xFE, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 
38353
  0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 
38354
  0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x90, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 
38355
  0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0xCF, 0x04, 0x6E, 0x65, 0x67, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 
38356
  0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x65, 0x67, 
38357
  0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x83, 
38358
  0x03, 0x2B, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 
38359
  0x00, 0x26, 0x03, 0x02, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x83, 0x91, 0x30, 0x00, 0x30, 0x00, 0x30, 
38360
  0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 0xDA, 0x80, 0xB4, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38361
  0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x02, 0xCE, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6C, 
38362
  0x6F, 0x73, 0x65, 0xDA, 0x04, 0xD8, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x00, 
38363
  0x03, 0x00, 0xCF, 0x06, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x00, 0x03, 0x01, 0xDA, 0x80, 0xB4, 
38364
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8E, 0xED, 0x34, 0x00, 
38365
  0x34, 0x00, 0x34, 0xCF, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 
38366
  0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xD8, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 
38367
  0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xCF, 0x03, 0x63, 0x6D, 0x70, 0xD7, 0x00, 
38368
  0xCD, 0x00, 0x08, 0x00, 0x1F, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x63, 0x6D, 0x70, 
38369
  0x27, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6E, 0x61, 
38370
  0x74, 0x69, 0x76, 0x65, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 
38371
  0xDA, 0x82, 0x97, 0xDA, 0x82, 0x95, 0xCF, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 
38372
  0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0xD8, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 
38373
  0x72, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0xCF, 0x08, 0x6D, 0x61, 
38374
  0x63, 0x6C, 0x69, 0x6E, 0x74, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x02, 0x02, 
38375
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x33, 0x00, 0x0B, 0xCE, 0x08, 0x6D, 0x61, 0x63, 0x6C, 0x69, 
38376
  0x6E, 0x74, 0x66, 0xDA, 0x04, 0xD0, 0x0B, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x6C, 0x69, 0x6E, 
38377
  0x74, 0x73, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0xC8, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
38378
  0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 0xDA, 
38379
  0x04, 0xDA, 0x1C, 0xDA, 0x70, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x74, 
38380
  0x75, 0x70, 0x6C, 0x65, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 
38381
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x70, 0x2E, 0x00, 
38382
  0x2E, 0x00, 0x2E, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0xDA, 0x78, 0xD2, 0x02, 0x00, 0xC9, 0xC9, 
38383
  0xDA, 0x81, 0x4B, 0xDA, 0x30, 0x00, 0x33, 0x00, 0xCF, 0x05, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x00, 
38384
  0x33, 0x01, 0xDA, 0x81, 0x4C, 0x00, 0x33, 0x02, 0xDA, 0x81, 0x4D, 0x00, 0x33, 0x03, 0xDA, 0x83, 
38385
  0x13, 0x04, 0x33, 0x05, 0xCF, 0x05, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x0A, 0x32, 0x07, 0xDA, 0x64, 
38386
  0x16, 0x32, 0x09, 0xDA, 0x80, 0xCE, 0x18, 0x32, 0x0A, 0xCF, 0x01, 0x63, 0x1F, 0x32, 0x08, 0xDA, 
38387
  0x80, 0xCE, 0x26, 0x32, 0x0B, 0xDA, 0x83, 0x1D, 0x2B, 0x32, 0x0C, 0xCF, 0x03, 0x6D, 0x73, 0x67, 
38388
  0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 
38389
  0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x2D, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x31, 0x06, 0x00, 0x00, 
38390
  0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 
38391
  0x2C, 0x09, 0x03, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1E, 0x08, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 
38392
  0x2C, 0x0A, 0x04, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x06, 0x09, 0x00, 0x1C, 0x02, 0x00, 0x00, 
38393
  0x2C, 0x06, 0x05, 0x00, 0x3D, 0x08, 0x06, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x3D, 0x08, 0x06, 0x01, 
38394
  0x1B, 0x0A, 0x08, 0x00, 0x2B, 0x0B, 0xFF, 0xFF, 0x4A, 0x08, 0x0B, 0x09, 0x1E, 0x08, 0x03, 0x00, 
38395
  0x1B, 0x06, 0x09, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x1B, 0x08, 0x06, 0x00, 
38396
  0x2B, 0x0C, 0xFF, 0xFF, 0x4A, 0x0B, 0x0C, 0x0A, 0x1E, 0x0B, 0x03, 0x00, 0x1B, 0x06, 0x0A, 0x00, 
38397
  0x1C, 0x02, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x1B, 0x0B, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 
38398
  0x34, 0x02, 0x00, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x06, 0x0C, 0x00, 0x1B, 0x0C, 0x06, 0x00, 
38399
  0x33, 0x00, 0x08, 0x0B, 0x31, 0x0C, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x32, 0x05, 0x06, 0x00, 
38400
  0x2C, 0x0E, 0x07, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x80, 0xC2, 0x0E, 0x00, 
38401
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x02, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
38402
  0x11, 0x00, 0x07, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x24, 0x00, 0x24, 0x00, 
38403
  0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
38404
  0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x12, 0x00, 
38405
  0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x10, 0x00, 0x10, 0x00, 
38406
  0x10, 0x00, 0x10, 0x00, 0x07, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 
38407
  0x07, 0xBF, 0xF4, 0x01, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x74, 0x69, 0x6D, 0x65, 0xD8, 0x07, 0x6F, 
38408
  0x73, 0x2F, 0x74, 0x69, 0x6D, 0x65, 0xCF, 0x05, 0x70, 0x61, 0x69, 0x72, 0x73, 0xD7, 0x00, 0xCD, 
38409
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x03, 0x27, 0x00, 0x0B, 0xCE, 0x05, 0x70, 0x61, 
38410
  0x69, 0x72, 0x73, 0xDA, 0x04, 0xDA, 0x40, 0xDA, 0x2F, 0xDA, 0x30, 0x00, 0x27, 0x00, 0xDA, 0x1E, 
38411
  0x00, 0x27, 0x01, 0xDA, 0x83, 0x21, 0x08, 0x17, 0x03, 0xDA, 0x42, 0x09, 0x17, 0x04, 0xDA, 0x43, 
38412
  0x09, 0x16, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x69, 0x0C, 0x16, 0x06, 0xCF, 
38413
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x68, 0x11, 0x16, 0x07, 0xDA, 0x15, 0x18, 0x27, 0x04, 
38414
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6A, 0x18, 0x26, 0x00, 0xCF, 0x07, 0x5F, 0x30, 
38415
  0x30, 0x30, 0x30, 0x33, 0x6C, 0x1B, 0x26, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
38416
  0x6B, 0x20, 0x26, 0x06, 0xDA, 0x15, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
38417
  0x03, 0x00, 0x1E, 0x02, 0x14, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 
38418
  0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 
38419
  0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x09, 0x00, 0x3A, 0x05, 
38420
  0x00, 0x06, 0x32, 0x06, 0x05, 0x00, 0x45, 0x05, 0x00, 0x00, 0x1B, 0x07, 0x05, 0x00, 0x3C, 0x03, 
38421
  0x04, 0x07, 0x05, 0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xF8, 0xFF, 0xFF, 0x03, 0x03, 
38422
  0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x03, 
38423
  0x00, 0x05, 0x1B, 0x05, 0x03, 0x00, 0x1F, 0x05, 0x0A, 0x00, 0x3A, 0x03, 0x00, 0x05, 0x32, 0x05, 
38424
  0x03, 0x00, 0x45, 0x03, 0x00, 0x00, 0x1B, 0x06, 0x03, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x07, 
38425
  0x02, 0x00, 0x35, 0x03, 0x07, 0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x04, 
38426
  0x00, 0x00, 0x86, 0xBE, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x22, 0x00, 0x10, 0x00, 
38427
  0x10, 0x00, 0x10, 0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
38428
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 
38429
  0xBF, 0xFD, 0x05, 0x07, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
38430
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
38431
  0x05, 0x00, 0x05, 0xCF, 0x04, 0x6F, 0x64, 0x64, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38432
  0x05, 0x01, 0x01, 0x01, 0x01, 0x09, 0x00, 0x02, 0xCE, 0x04, 0x6F, 0x64, 0x64, 0x3F, 0xDA, 0x04, 
38433
  0xDA, 0x82, 0x67, 0x00, 0x09, 0x00, 0xDA, 0x1E, 0x00, 0x09, 0x01, 0xDA, 0x83, 0x29, 0x2B, 0x03, 
38434
  0x02, 0x00, 0x0E, 0x02, 0x00, 0x03, 0x2B, 0x03, 0x01, 0x00, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 
38435
  0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x25, 0x02, 0x04, 0x03, 0x03, 0x02, 
38436
  0x00, 0x00, 0x83, 0x94, 0x35, 0x00, 0x35, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 
38437
  0x25, 0x00, 0x25, 0x00, 0x25, 0xCF, 0x07, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xD8, 0x07, 
38438
  0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xCF, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 0x63, 
38439
  0x61, 0x6C, 0x6E, 0x61, 0x6D, 0x65, 0xD8, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 
38440
  0x6C, 0x6E, 0x61, 0x6D, 0x65, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 0x6D, 0xD8, 
38441
  0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 0x6D, 0xCF, 0x0F, 0x2A, 0x70, 0x72, 0x65, 0x74, 
38442
  0x74, 0x79, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2A, 0xD0, 0x0D, 0x70, 0x72, 0x65, 0x74, 
38443
  0x74, 0x79, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xCF, 0x0C, 0x74, 0x61, 0x62, 0x6C, 0x65, 
38444
  0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xDA, 0x82, 0xD2, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 0x61, 
38445
  0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x0F, 0x65, 0x76, 0x2F, 
38446
  0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x0B, 0x64, 0x69, 
38447
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x3F, 0xD8, 0x0B, 0x64, 0x69, 0x63, 0x74, 0x69, 
38448
  0x6F, 0x6E, 0x61, 0x72, 0x79, 0x3F, 0xCF, 0x0B, 0x2A, 0x64, 0x6F, 0x63, 0x2D, 0x63, 0x6F, 0x6C, 
38449
  0x6F, 0x72, 0x2A, 0xD0, 0x09, 0x64, 0x6F, 0x63, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xCF, 0x04, 
38450
  0x62, 0x78, 0x6F, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0F, 0x06, 0x00, 0x00, 0xCD, 0x7F, 
38451
  0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x04, 0x62, 0x78, 0x6F, 0x72, 0x3F, 0x01, 0x00, 0x00, 0x26, 
38452
  0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 
38453
  0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x12, 
38454
  0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 
38455
  0x04, 0x00, 0x05, 0x12, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 
38456
  0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 
38457
  0x70, 0x6F, 0x74, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 0x74, 0xCF, 
38458
  0x06, 0x2A, 0x61, 0x72, 0x67, 0x73, 0x2A, 0xD0, 0x04, 0x61, 0x72, 0x67, 0x73, 0xCF, 0x06, 0x72, 
38459
  0x65, 0x73, 0x75, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x05, 0x02, 0x02, 0x01, 0x02, 
38460
  0x00, 0x02, 0xCE, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x37, 0x00, 0x00, 0x01, 0x03, 0x00, 
38461
  0x00, 0x00, 0xCF, 0x04, 0x65, 0x76, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 
38462
  0x02, 0x01, 0x02, 0x05, 0x10, 0x00, 0x04, 0xCE, 0x04, 0x65, 0x76, 0x61, 0x6C, 0xDA, 0x04, 0xD0, 
38463
  0x04, 0x65, 0x76, 0x61, 0x6C, 0xD8, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x1C, 
38464
  0xDA, 0x1D, 0xDA, 0x0E, 0x00, 0x10, 0x00, 0xDA, 0x64, 0x00, 0x10, 0x01, 0xCF, 0x03, 0x65, 0x6E, 
38465
  0x76, 0x00, 0x10, 0x02, 0xDA, 0x83, 0x45, 0x04, 0x10, 0x04, 0xDA, 0x7E, 0x2C, 0x03, 0x00, 0x00, 
38466
  0x33, 0x00, 0x01, 0x03, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 
38467
  0x31, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x03, 0x00, 
38468
  0x25, 0x06, 0x05, 0x07, 0x1E, 0x06, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 
38469
  0x3B, 0x05, 0x04, 0x07, 0x01, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0xC1, 0x0C, 0x00, 
38470
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x07, 0x00, 
38471
  0x07, 0x00, 0x03, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0C, 0x61, 
38472
  0x6C, 0x6C, 0x2D, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
38473
  0x00, 0x00, 0x04, 0x02, 0x00, 0x02, 0x02, 0x04, 0x00, 0x03, 0xCE, 0x0C, 0x61, 0x6C, 0x6C, 0x2D, 
38474
  0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
38475
  0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x08, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
38476
  0x72, 0x64, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xD0, 0x07, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
38477
  0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x08, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
38478
  0x64, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 
38479
  0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x69, 0x32, 0x00, 0x32, 0x00, 0x32, 
38480
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x03, 0x01, 
38481
  0x03, 0x06, 0x33, 0x00, 0x0E, 0xCE, 0x08, 0x65, 0x6E, 0x76, 0x2D, 0x77, 0x61, 0x6C, 0x6B, 0xDA, 
38482
  0x04, 0xD8, 0x0D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
38483
  0xD8, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 0x30, 
38484
  0xD8, 0x0E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
38485
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x03, 0x21, 0x00, 0x0B, 0xCE, 
38486
  0x04, 0x6B, 0x65, 0x79, 0x73, 0xDA, 0x04, 0xDA, 0x40, 0xDA, 0x2F, 0xDA, 0x30, 0x00, 0x21, 0x00, 
38487
  0xDA, 0x1E, 0x00, 0x21, 0x01, 0xCF, 0x04, 0x6B, 0x65, 0x79, 0x73, 0x08, 0x14, 0x03, 0xDA, 0x42, 
38488
  0x09, 0x14, 0x04, 0xDA, 0x43, 0x09, 0x13, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
38489
  0x38, 0x0C, 0x13, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x37, 0x0E, 0x13, 0x05, 
38490
  0xDA, 0x3A, 0x15, 0x21, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x39, 0x15, 0x20, 
38491
  0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x62, 0x18, 0x20, 0x05, 0xCF, 0x07, 0x5F, 
38492
  0x30, 0x30, 0x30, 0x30, 0x33, 0x61, 0x1A, 0x20, 0x03, 0xDA, 0x3A, 0x31, 0x00, 0x00, 0x00, 0x2C, 
38493
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x11, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x31, 
38494
  0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x2B, 
38495
  0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 
38496
  0x06, 0x06, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x3C, 0x03, 0x04, 0x05, 0x05, 0x04, 0x04, 0x01, 0x49, 
38497
  0x06, 0x00, 0x06, 0x1C, 0xFB, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x1B, 
38498
  0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x03, 0x00, 0x05, 0x1B, 0x05, 0x03, 0x00, 0x1F, 
38499
  0x05, 0x07, 0x00, 0x1B, 0x03, 0x05, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 
38500
  0x06, 0x07, 0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x86, 
38501
  0xA4, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x22, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
38502
  0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 
38503
  0x01, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x07, 0x05, 0x00, 0x05, 0x00, 0x05, 
38504
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38505
  0x00, 0x05, 0x00, 0x05, 0xDA, 0x80, 0xF2, 0x00, 0x33, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x33, 0x01, 
38506
  0xDA, 0x83, 0x4A, 0x00, 0x33, 0x02, 0xCF, 0x05, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x00, 0x33, 0x03, 
38507
  0xCF, 0x08, 0x65, 0x6E, 0x76, 0x2D, 0x77, 0x61, 0x6C, 0x6B, 0x09, 0x33, 0x05, 0xDA, 0x83, 0x4A, 
38508
  0x0B, 0x33, 0x07, 0xCF, 0x04, 0x65, 0x6E, 0x76, 0x73, 0x0C, 0x17, 0x08, 0xCF, 0x01, 0x65, 0x18, 
38509
  0x33, 0x09, 0xCF, 0x07, 0x72, 0x65, 0x74, 0x2D, 0x73, 0x65, 0x74, 0x18, 0x2D, 0x07, 0xCF, 0x07, 
38510
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x51, 0x1B, 0x2D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
38511
  0x30, 0x35, 0x50, 0x1E, 0x2D, 0x0C, 0xCF, 0x04, 0x65, 0x6E, 0x76, 0x69, 0x1E, 0x2B, 0x0C, 0xCF, 
38512
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4F, 0x21, 0x2B, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
38513
  0x30, 0x30, 0x35, 0x4E, 0x23, 0x2B, 0x0A, 0xDA, 0x3A, 0x20, 0x01, 0x08, 0x00, 0x2C, 0x06, 0x00, 
38514
  0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 
38515
  0x00, 0x1B, 0x04, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 
38516
  0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x1E, 0x08, 0x0A, 
38517
  0x00, 0x32, 0x07, 0x08, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x31, 0x08, 0x00, 
38518
  0x00, 0x2C, 0x09, 0x03, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x1C, 0x02, 0x00, 
38519
  0x00, 0x1C, 0xF7, 0xFF, 0xFF, 0x44, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x0B, 0x00, 
38520
  0x00, 0x49, 0x0A, 0x07, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 0x1F, 0x0B, 0x11, 0x00, 0x3A, 0x0A, 0x07, 
38521
  0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x49, 0x0A, 0x0C, 0x0D, 0x1B, 0x0D, 0x0A, 
38522
  0x00, 0x1F, 0x0D, 0x09, 0x00, 0x1B, 0x0A, 0x0D, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0E, 0x00, 
38523
  0x00, 0x1E, 0x0E, 0x03, 0x00, 0x29, 0x0F, 0x00, 0x00, 0x3C, 0x09, 0x0A, 0x0F, 0x49, 0x0D, 0x0C, 
38524
  0x0D, 0x1C, 0xF8, 0xFF, 0xFF, 0x49, 0x0B, 0x07, 0x0B, 0x1C, 0xF0, 0xFF, 0xFF, 0x31, 0x09, 0x00, 
38525
  0x00, 0x2C, 0x0B, 0x04, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x05, 
38526
  0x00, 0x36, 0x0B, 0x00, 0x00, 0x8C, 0x8E, 0x03, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 
38527
  0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 
38528
  0x00, 0x13, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x37, 0x00, 0x37, 0x00, 0x37, 0x00, 0x4B, 
38529
  0x00, 0x55, 0x00, 0x13, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
38530
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x10, 
38531
  0x00, 0x10, 0xBF, 0xFE, 0x03, 0x03, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 
38532
  0x00, 0x03, 0x04, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x04, 
38533
  0x00, 0xDA, 0x83, 0x4A, 0x00, 0x04, 0x01, 0xDA, 0x83, 0x5F, 0x00, 0x04, 0x02, 0xDA, 0x83, 0x4B, 
38534
  0x2C, 0x03, 0x00, 0x00, 0x33, 0x03, 0x00, 0x01, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 
38535
  0x8C, 0xA4, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x08, 0x62, 0x72, 0x75, 0x73, 0x68, 
38536
  0x69, 0x66, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x12, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
38537
  0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x08, 0x62, 0x72, 0x75, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3F, 0x01, 
38538
  0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 
38539
  0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 
38540
  0x00, 0x00, 0x18, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 
38541
  0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x18, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 
38542
  0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 
38543
  0x79, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x66, 0x69, 
38544
  0x6C, 0x6C, 0xCF, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 
38545
  0x00, 0xDD, 0x00, 0x00, 0x0F, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x24, 0x00, 0x0E, 
38546
  0xCE, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 0xDA, 0x04, 0xCE, 0x1D, 0x65, 
38547
  0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 
38548
  0x20, 0x31, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x6B, 0x73, 0xDA, 0x82, 0xC2, 0x00, 
38549
  0x24, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x24, 0x01, 0xCF, 0x02, 0x6B, 0x73, 0x00, 0x24, 0x02, 0xDA, 
38550
  0x31, 0x00, 0x24, 0x03, 0xDA, 0x81, 0x4D, 0x00, 0x24, 0x04, 0xDA, 0x83, 0x6E, 0x00, 0x24, 0x05, 
38551
  0xDA, 0x81, 0x15, 0x03, 0x24, 0x06, 0xCF, 0x05, 0x6C, 0x65, 0x6E, 0x2D, 0x31, 0x08, 0x1B, 0x08, 
38552
  0xDA, 0x43, 0x08, 0x1B, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x58, 0x0C, 0x1B, 
38553
  0x0B, 0xDA, 0x3A, 0x0E, 0x1B, 0x0C, 0xDA, 0x46, 0x14, 0x17, 0x0E, 0xCF, 0x04, 0x6E, 0x65, 0x77, 
38554
  0x76, 0x1C, 0x24, 0x09, 0xCF, 0x08, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x6B, 0x65, 0x79, 0x1E, 0x24, 
38555
  0x0B, 0xCF, 0x08, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x1B, 0x05, 0x00, 0x00, 0x3F, 
38556
  0x06, 0x01, 0x00, 0x07, 0x07, 0x06, 0x01, 0x1B, 0x06, 0x07, 0x00, 0x24, 0x08, 0x06, 0x00, 0x1E, 
38557
  0x08, 0x03, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x01, 0x09, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x23, 
38558
  0x09, 0x08, 0x06, 0x1E, 0x09, 0x11, 0x00, 0x3B, 0x0A, 0x01, 0x08, 0x1B, 0x0B, 0x0A, 0x00, 0x3B, 
38559
  0x0A, 0x05, 0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x25, 0x0A, 0x0D, 0x0C, 0x1E, 
38560
  0x0A, 0x07, 0x00, 0x2C, 0x0E, 0x01, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x3C, 
38561
  0x05, 0x0B, 0x0E, 0x1B, 0x05, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 0x0C, 0x00, 0x05, 
38562
  0x08, 0x08, 0x01, 0x1C, 0xEF, 0xFF, 0xFF, 0x3B, 0x08, 0x01, 0x06, 0x1B, 0x09, 0x08, 0x00, 0x3B, 
38563
  0x0A, 0x05, 0x09, 0x1B, 0x0B, 0x0A, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x34, 0x03, 0x00, 0x00, 0x35, 
38564
  0x0C, 0x02, 0x00, 0x3C, 0x05, 0x09, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x86, 0x60, 0x03, 0x01, 0x11, 
38565
  0x00, 0x0E, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 0x00, 0x13, 0x00, 0x13, 0x01, 0x03, 0x00, 0x03, 
38566
  0x00, 0x03, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 
38567
  0x01, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFD, 0x05, 0x04, 0x07, 0xBF, 
38568
  0xF9, 0x03, 0x00, 0x03, 0x08, 0x11, 0x00, 0x03, 0x01, 0x11, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 
38569
  0x00, 0x13, 0x00, 0x03, 0xBF, 0xED, 0x01, 0xCF, 0x0F, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 
38570
  0x6F, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xDA, 0x69, 0xCF, 0x0A, 0x65, 0x76, 0x2F, 0x74, 
38571
  0x6F, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xD8, 0x0A, 0x65, 0x76, 0x2F, 0x74, 0x6F, 0x2D, 0x66, 0x69, 
38572
  0x6C, 0x65, 0xCF, 0x0B, 0x65, 0x76, 0x61, 0x6C, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD7, 
38573
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00, 0x07, 0xCE, 0x0B, 
38574
  0x65, 0x76, 0x61, 0x6C, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 
38575
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x09, 0x2C, 0x00, 0x04, 0xCE, 0x09, 0x70, 0x61, 
38576
  0x72, 0x73, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x0B, 0xDA, 0x0C, 0xDA, 0x0D, 0xDA, 
38577
  0x0E, 0xDA, 0x0F, 0xDA, 0x10, 0xDA, 0x11, 0xDA, 0x12, 0xDA, 0x30, 0x00, 0x2C, 0x00, 0xDA, 0x14, 
38578
  0x00, 0x2C, 0x01, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x02, 0x2C, 
38579
  0x03, 0xDA, 0x15, 0x04, 0x2C, 0x04, 0xDA, 0x39, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
38580
  0x1B, 0x03, 0x02, 0x00, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x32, 0x03, 0x00, 0x00, 
38581
  0x2C, 0x05, 0x01, 0x00, 0x35, 0x02, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 
38582
  0x35, 0x02, 0x05, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x02, 0x1E, 0x05, 0x05, 0x00, 
38583
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x35, 0x02, 0x06, 0x00, 0x01, 0x02, 0x00, 0x00, 
38584
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x05, 0x00, 0x35, 0x02, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 
38585
  0x2C, 0x05, 0x06, 0x00, 0x35, 0x02, 0x05, 0x00, 0x1E, 0x02, 0x08, 0x00, 0x31, 0x03, 0x00, 0x00, 
38586
  0x2C, 0x06, 0x07, 0x00, 0x35, 0x05, 0x06, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x08, 0x00, 
38587
  0x35, 0x06, 0x07, 0x00, 0x1C, 0xF6, 0xFF, 0xFF, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 
38588
  0x35, 0x02, 0x05, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x25, 0x05, 0x06, 0x02, 0x1E, 0x05, 0x06, 0x00, 
38589
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x35, 0x02, 0x06, 0x00, 0x01, 0x02, 0x00, 0x00, 
38590
  0x04, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x8A, 0xD9, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 
38591
  0x03, 0x00, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
38592
  0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x05, 0x00, 
38593
  0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 
38594
  0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x13, 0x00, 0x13, 0x00, 0x13, 
38595
  0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 
38596
  0xBF, 0xFF, 0x05, 0xDA, 0x83, 0x46, 0x00, 0x11, 0x00, 0xDA, 0x14, 0x00, 0x11, 0x01, 0xDA, 0x83, 
38597
  0x4A, 0x00, 0x11, 0x02, 0xDA, 0x83, 0x7B, 0x00, 0x11, 0x03, 0xDA, 0x39, 0x04, 0x10, 0x05, 0xCF, 
38598
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6B, 0x07, 0x10, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
38599
  0x30, 0x30, 0x35, 0x6A, 0x0A, 0x10, 0x07, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x31, 0x00, 0x00, 
38600
  0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x28, 0x06, 0x00, 
38601
  0x00, 0x49, 0x04, 0x05, 0x06, 0x1B, 0x06, 0x04, 0x00, 0x1F, 0x06, 0x08, 0x00, 0x3A, 0x04, 0x05, 
38602
  0x06, 0x1B, 0x07, 0x04, 0x00, 0x32, 0x07, 0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 
38603
  0x00, 0x49, 0x06, 0x05, 0x06, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x8A, 0xE9, 0x03, 
38604
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
38605
  0x00, 0x03, 0x00, 0x03, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFB, 
38606
  0x01, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0xD8, 0x08, 0x6D, 0x61, 0x74, 
38607
  0x68, 0x2F, 0x74, 0x61, 0x6E, 0xCF, 0x06, 0x70, 0x75, 0x74, 0x2D, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 
38608
  0x00, 0xDC, 0x00, 0x00, 0x0E, 0x03, 0x03, 0x03, 0x02, 0x21, 0x00, 0x0D, 0xCE, 0x06, 0x70, 0x75, 
38609
  0x74, 0x2D, 0x69, 0x6E, 0xDA, 0x04, 0xDA, 0x83, 0x71, 0xDA, 0x82, 0xC2, 0x00, 0x21, 0x00, 0xDA, 
38610
  0x82, 0x62, 0x00, 0x21, 0x01, 0xDA, 0x83, 0x72, 0x00, 0x21, 0x02, 0xDA, 0x46, 0x00, 0x21, 0x03, 
38611
  0xDA, 0x83, 0x85, 0x00, 0x21, 0x04, 0xDA, 0x81, 0x15, 0x03, 0x21, 0x05, 0xDA, 0x83, 0x73, 0x08, 
38612
  0x1B, 0x07, 0xDA, 0x43, 0x08, 0x1B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x59, 
38613
  0x0C, 0x1B, 0x0A, 0xDA, 0x3A, 0x0E, 0x1B, 0x0B, 0xDA, 0x46, 0x14, 0x17, 0x0D, 0xDA, 0x83, 0x75, 
38614
  0x1C, 0x21, 0x08, 0xDA, 0x83, 0x76, 0x1E, 0x21, 0x0A, 0xDA, 0x83, 0x77, 0x1B, 0x04, 0x00, 0x00, 
38615
  0x3F, 0x05, 0x01, 0x00, 0x07, 0x06, 0x05, 0x01, 0x1B, 0x05, 0x06, 0x00, 0x24, 0x07, 0x05, 0x00, 
38616
  0x1E, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x2B, 0x07, 0x00, 0x00, 
38617
  0x23, 0x08, 0x07, 0x05, 0x1E, 0x08, 0x11, 0x00, 0x3B, 0x09, 0x01, 0x07, 0x1B, 0x0A, 0x09, 0x00, 
38618
  0x3B, 0x09, 0x04, 0x0A, 0x1B, 0x0B, 0x09, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x25, 0x09, 0x0C, 0x0B, 
38619
  0x1E, 0x09, 0x07, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 
38620
  0x3C, 0x04, 0x0A, 0x0D, 0x1B, 0x04, 0x0D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x0B, 0x00, 
38621
  0x05, 0x07, 0x07, 0x01, 0x1C, 0xEF, 0xFF, 0xFF, 0x3B, 0x07, 0x01, 0x05, 0x1B, 0x08, 0x07, 0x00, 
38622
  0x3B, 0x09, 0x04, 0x08, 0x1B, 0x0A, 0x09, 0x00, 0x3C, 0x04, 0x08, 0x02, 0x03, 0x00, 0x00, 0x00, 
38623
  0x86, 0x75, 0x03, 0x01, 0x11, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 0x00, 0x13, 0x00, 
38624
  0x13, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 
38625
  0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 
38626
  0xFD, 0x05, 0x04, 0x07, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x08, 0x11, 0x00, 0x03, 0x01, 0x11, 0x00, 
38627
  0x03, 0x01, 0x03, 0xBF, 0xEE, 0x01, 0xCF, 0x04, 0x64, 0x72, 0x6F, 0x70, 0xD7, 0x00, 0xCD, 0x00, 
38628
  0xDC, 0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x0A, 0x2C, 0x00, 0x05, 0xCE, 0x04, 0x64, 0x72, 0x6F, 
38629
  0x70, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 
38630
  0x03, 0x03, 0x00, 0x14, 0x00, 0x05, 0xCE, 0x0C, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6E, 0x2D, 0x73, 
38631
  0x6C, 0x69, 0x63, 0x65, 0xDA, 0x04, 0x00, 0x14, 0x00, 0xDA, 0x31, 0x00, 0x14, 0x01, 0xDA, 0x32, 
38632
  0x00, 0x14, 0x02, 0xDA, 0x33, 0x00, 0x14, 0x03, 0xCF, 0x0C, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6E, 
38633
  0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x01, 0x14, 0x05, 0xDA, 0x37, 0x3F, 0x04, 0x02, 0x00, 0x1B, 
38634
  0x05, 0x04, 0x00, 0x2B, 0x07, 0x00, 0x00, 0x48, 0x06, 0x07, 0x01, 0x1E, 0x06, 0x02, 0x00, 0x48, 
38635
  0x06, 0x01, 0x05, 0x1E, 0x06, 0x03, 0x00, 0x32, 0x02, 0x01, 0x00, 0x36, 0x00, 0x00, 0x00, 0x09, 
38636
  0x07, 0x05, 0xFF, 0x23, 0x08, 0x07, 0x01, 0x1E, 0x08, 0x02, 0x00, 0x24, 0x08, 0x01, 0x00, 0x1E, 
38637
  0x08, 0x05, 0x00, 0x06, 0x07, 0x05, 0x01, 0x2B, 0x09, 0x00, 0x00, 0x33, 0x02, 0x09, 0x07, 0x36, 
38638
  0x00, 0x00, 0x00, 0x32, 0x02, 0x05, 0x00, 0x36, 0x00, 0x00, 0x00, 0x84, 0xE2, 0x0C, 0x00, 0x03, 
38639
  0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x12, 0x00, 0x12, 0x01, 
38640
  0x08, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x1E, 0x00, 0x15, 0x00, 0x15, 
38641
  0x00, 0x15, 0x01, 0x05, 0x00, 0x05, 0xDA, 0x3C, 0xDA, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
38642
  0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x73, 0x74, 0x72, 0x75, 0x63, 
38643
  0x74, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x68, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 
38644
  0xCF, 0x07, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
38645
  0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 
38646
  0x00, 0x6E, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0xD8, 0x0F, 0x73, 
38647
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xD7, 0x00, 
38648
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 0x00, 0x13, 0x00, 0x0A, 0xCE, 0x0B, 0x64, 
38649
  0x72, 0x6F, 0x70, 0x2D, 0x6E, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 
38650
  0x31, 0x00, 0x13, 0x01, 0xDA, 0x32, 0x00, 0x13, 0x02, 0xDA, 0x33, 0x00, 0x13, 0x03, 0xCF, 0x0B, 
38651
  0x64, 0x72, 0x6F, 0x70, 0x2D, 0x6E, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x02, 0x13, 0x05, 0xDA, 0x7E, 
38652
  0x03, 0x13, 0x06, 0xDA, 0x81, 0x01, 0x03, 0x12, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
38653
  0x32, 0x63, 0x06, 0x12, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x62, 0x09, 0x12, 
38654
  0x09, 0xDA, 0x43, 0x0A, 0x12, 0x0A, 0xDA, 0x1E, 0x31, 0x02, 0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 
38655
  0x1B, 0x05, 0x04, 0x00, 0x1B, 0x06, 0x01, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x02, 0x08, 
38656
  0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 0x0B, 0x00, 0x3A, 0x07, 0x02, 0x08, 0x1B, 0x09, 0x08, 0x00, 
38657
  0x07, 0x06, 0x06, 0x01, 0x24, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 
38658
  0x28, 0x07, 0x00, 0x00, 0x3C, 0x05, 0x09, 0x07, 0x49, 0x08, 0x02, 0x08, 0x1C, 0xF6, 0xFF, 0xFF, 
38659
  0x03, 0x05, 0x00, 0x00, 0x84, 0xEA, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 
38660
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x25, 0x00, 0x22, 0x00, 0x03, 0x00, 
38661
  0x03, 0x00, 0x33, 0x00, 0x33, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xD7, 0x00, 0xCD, 0x00, 
38662
  0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x74, 0x61, 0x62, 
38663
  0x6C, 0x65, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x61, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 
38664
  0x01, 0xCF, 0x06, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
38665
  0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 
38666
  0x00, 0x6D, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0xD8, 0x0B, 0x74, 
38667
  0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x00, 0x2C, 0x00, 0xDA, 0x32, 0x00, 
38668
  0x2C, 0x01, 0xDA, 0x33, 0x00, 0x2C, 0x02, 0xDA, 0x83, 0x89, 0x20, 0x2C, 0x07, 0xDA, 0x82, 0xAD, 
38669
  0x21, 0x2B, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x64, 0x31, 0x01, 0x00, 0x00, 
38670
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 0x04, 0x01, 0x00, 
38671
  0x33, 0x04, 0x00, 0x01, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
38672
  0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 
38673
  0x33, 0x05, 0x00, 0x01, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
38674
  0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x05, 0x00, 0x2C, 0x06, 0x06, 0x00, 
38675
  0x33, 0x06, 0x00, 0x01, 0x2C, 0x06, 0x07, 0x00, 0x36, 0x06, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
38676
  0x2C, 0x07, 0x08, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x09, 0x00, 
38677
  0x33, 0x07, 0x00, 0x01, 0x2C, 0x07, 0x07, 0x00, 0x36, 0x07, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 
38678
  0x1B, 0x08, 0x00, 0x00, 0x22, 0x09, 0x08, 0x00, 0x1E, 0x09, 0x08, 0x00, 0x49, 0x07, 0x01, 0x07, 
38679
  0x28, 0x0B, 0x00, 0x00, 0x25, 0x0A, 0x0B, 0x07, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 
38680
  0x07, 0x08, 0x08, 0x01, 0x1C, 0xF8, 0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00, 0x84, 0xF4, 0x05, 0x00, 
38681
  0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 
38682
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 
38683
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x03, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
38684
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFC, 0x03, 0x04, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
38685
  0x12, 0x02, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
38686
  0x09, 0x00, 0x2E, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0xCF, 0x13, 0x74, 0x61, 0x62, 
38687
  0x6C, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 
38688
  0xD8, 0x13, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 
38689
  0x61, 0x74, 0x74, 0x65, 0x6E, 0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 
38690
  0x74, 0x6F, 0xD8, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 0x74, 0x6F, 0xCF, 
38691
  0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
38692
  0x00, 0x0C, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x07, 0x24, 0x00, 0x08, 0xCE, 0x09, 0x77, 
38693
  0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0xDA, 0x04, 0xCF, 0x06, 0x73, 0x65, 0x74, 0x64, 
38694
  0x79, 0x6E, 0xDA, 0x30, 0xDA, 0x80, 0xAE, 0xD0, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 
38695
  0x6E, 0x73, 0xDA, 0x80, 0xDC, 0xD0, 0x01, 0x70, 0xDA, 0x83, 0x43, 0x00, 0x24, 0x00, 0xCF, 0x08, 
38696
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x00, 0x24, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x24, 
38697
  0x02, 0xDA, 0x83, 0xA1, 0x01, 0x15, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x76, 
38698
  0x02, 0x15, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x77, 0x04, 0x15, 0x06, 0xCF, 
38699
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x78, 0x07, 0x15, 0x07, 0xDA, 0x43, 0x14, 0x24, 0x04, 
38700
  0xCF, 0x09, 0x64, 0x79, 0x6E, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x40, 0x03, 0x00, 0x00, 0x1B, 
38701
  0x04, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 
38702
  0x05, 0x03, 0x06, 0x1E, 0x05, 0x0F, 0x00, 0x1B, 0x07, 0x03, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 
38703
  0x08, 0x00, 0x00, 0x05, 0x09, 0x07, 0x01, 0x31, 0x09, 0x00, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x2C, 
38704
  0x0B, 0x00, 0x00, 0x33, 0x0B, 0x08, 0x0A, 0x45, 0x09, 0x00, 0x00, 0x32, 0x04, 0x09, 0x00, 0x2C, 
38705
  0x0A, 0x01, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x05, 0x03, 0x03, 0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x46, 
38706
  0x03, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x33, 0x06, 0x07, 0x03, 0x34, 
38707
  0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x2C, 
38708
  0x07, 0x05, 0x00, 0x33, 0x06, 0x05, 0x07, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x32, 
38709
  0x06, 0x03, 0x00, 0x45, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x85, 0xE9, 0x05, 0x00, 0x05, 
38710
  0x00, 0x05, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 
38711
  0x00, 0x29, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 
38712
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38713
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38714
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x62, 0x79, 0x74, 0x65, 0x73, 0x3F, 0xDA, 0x3C, 0xDA, 
38715
  0x81, 0x79, 0xDA, 0x81, 0x72, 0xCF, 0x06, 0x6D, 0x61, 0x78, 0x2D, 0x6F, 0x66, 0xD7, 0x00, 0xCD, 
38716
  0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0E, 0x00, 0x06, 0xCE, 0x06, 0x6D, 0x61, 
38717
  0x78, 0x2D, 0x6F, 0x66, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x0E, 0x01, 0xDA, 
38718
  0x83, 0xAD, 0x00, 0x0E, 0x00, 0xDA, 0x82, 0x62, 0x02, 0x0E, 0x03, 0xDA, 0x3A, 0x04, 0x0E, 0x04, 
38719
  0xDA, 0x39, 0x08, 0x0D, 0x05, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x49, 0x02, 0x00, 0x03, 0x1B, 
38720
  0x03, 0x02, 0x00, 0x3B, 0x02, 0x00, 0x03, 0x1B, 0x04, 0x02, 0x00, 0x49, 0x03, 0x00, 0x03, 0x1F, 
38721
  0x03, 0x07, 0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x05, 0x02, 0x00, 0x21, 0x02, 0x05, 0x04, 0x1E, 
38722
  0x02, 0x02, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 
38723
  0x3E, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
38724
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xCF, 0x0A, 0x6E, 0x65, 
38725
  0x74, 0x2F, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 
38726
  0x05, 0x02, 0x05, 0x05, 0x1A, 0x00, 0x01, 0x09, 0xCE, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 
38727
  0x72, 0x76, 0x65, 0x72, 0xDA, 0x04, 0xD0, 0x08, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 
38728
  0xDA, 0x82, 0x51, 0xCE, 0x2B, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x6E, 0x6F, 0x74, 
38729
  0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x3A, 
38730
  0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 
38731
  0xD8, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0xDA, 0x80, 0xB0, 0x00, 
38732
  0x1A, 0x00, 0xCF, 0x04, 0x68, 0x6F, 0x73, 0x74, 0x00, 0x1A, 0x01, 0xCF, 0x04, 0x70, 0x6F, 0x72, 
38733
  0x74, 0x00, 0x1A, 0x02, 0xCF, 0x07, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x1A, 0x03, 
38734
  0xCF, 0x04, 0x74, 0x79, 0x70, 0x65, 0x00, 0x1A, 0x04, 0xCF, 0x08, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 
38735
  0x75, 0x73, 0x65, 0x00, 0x1A, 0x05, 0xDA, 0x83, 0xB0, 0x02, 0x07, 0x08, 0xCF, 0x07, 0x5F, 0x30, 
38736
  0x30, 0x30, 0x30, 0x36, 0x53, 0x0A, 0x0F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
38737
  0x52, 0x13, 0x1A, 0x07, 0xDA, 0x81, 0x2A, 0x2C, 0x08, 0x00, 0x00, 0x25, 0x07, 0x03, 0x08, 0x1B, 
38738
  0x08, 0x07, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
38739
  0x06, 0x08, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 
38740
  0x06, 0x07, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x01, 
38741
  0x07, 0x00, 0x00, 0x33, 0x00, 0x01, 0x03, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 
38742
  0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x02, 0x05, 0x00, 0x30, 0x08, 0x00, 0x00, 0x31, 
38743
  0x08, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x03, 0x07, 0x00, 0x00, 0xCD, 
38744
  0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x05, 0x01, 0x09, 0xDA, 0x04, 0xD8, 0x0F, 
38745
  0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0xBF, 
38746
  0xFF, 0x00, 0x00, 0xDA, 0x83, 0xB6, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0xB7, 0xBF, 0xFF, 0x00, 
38747
  0x02, 0xDA, 0x83, 0xB8, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x83, 0xB9, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
38748
  0x83, 0xBA, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x83, 0xB0, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x83, 0xBB, 
38749
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x83, 0xBC, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x2A, 0x2D, 0x00, 
38750
  0x00, 0x07, 0x2D, 0x01, 0x00, 0x02, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x36, 0x00, 
38751
  0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x5F, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x8F, 
38752
  0x5B, 0x17, 0x00, 0x17, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0D, 
38753
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x0C, 
38754
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x01, 0x0E, 0x00, 0x07, 0x00, 0x07, 
38755
  0x00, 0x07, 0xBF, 0xF5, 0x03, 0x84, 0x00, 0x00, 0x00, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x63, 
38756
  0x61, 0x6C, 0x6C, 0xD8, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0xCF, 0x06, 0x6F, 
38757
  0x73, 0x2F, 0x64, 0x69, 0x72, 0xDA, 0x80, 0xF1, 0xCF, 0x06, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 
38758
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x03, 0x03, 0x00, 0x0C, 0x00, 0x08, 0xCE, 
38759
  0x06, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x04, 0x00, 0x0C, 0x00, 0xDA, 0x31, 0x00, 0x0C, 
38760
  0x01, 0xCF, 0x04, 0x69, 0x6E, 0x69, 0x74, 0x00, 0x0C, 0x02, 0xDA, 0x33, 0x00, 0x0C, 0x03, 0xDA, 
38761
  0x83, 0xC1, 0x00, 0x0C, 0x04, 0xCF, 0x05, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x00, 0x0B, 0x02, 0xCF, 
38762
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x58, 0x03, 0x0B, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
38763
  0x30, 0x30, 0x30, 0x57, 0x06, 0x0B, 0x07, 0xCF, 0x02, 0x65, 0x6C, 0x1B, 0x04, 0x01, 0x00, 0x28, 
38764
  0x06, 0x00, 0x00, 0x49, 0x05, 0x02, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x07, 0x00, 0x3A, 
38765
  0x05, 0x02, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x32, 0x04, 0x07, 0x00, 0x35, 0x04, 0x00, 0x00, 0x49, 
38766
  0x06, 0x02, 0x06, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 0xE5, 0x03, 0x01, 0x03, 
38767
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x03, 
38768
  0x00, 0x03, 0xBF, 0xF7, 0x01, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0xDA, 0x80, 
38769
  0xF0, 0xCF, 0x09, 0x64, 0x65, 0x66, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 
38770
  0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x03, 0x0B, 0x00, 0x04, 0xCE, 0x09, 0x64, 0x65, 0x66, 
38771
  0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xDA, 0x04, 0xD8, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
38772
  0xDA, 0x08, 0xDA, 0x82, 0xC9, 0x00, 0x0B, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x0B, 0x01, 0xCF, 0x05, 
38773
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x0B, 0x02, 0xDA, 0x83, 0xCA, 0x03, 0x0B, 0x04, 0xCF, 0x05, 
38774
  0x6E, 0x61, 0x6D, 0x65, 0x2A, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 
38775
  0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x32, 0x05, 0x01, 0x00, 0x44, 0x05, 0x00, 
38776
  0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x04, 0x00, 0x00, 
38777
  0x00, 0x58, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
38778
  0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 
38779
  0x62, 0x73, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x62, 0x73, 0xCF, 0x06, 0x6E, 0x61, 
38780
  0x74, 0x69, 0x76, 0x65, 0xD8, 0x06, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0xCF, 0x05, 0x74, 0x72, 
38781
  0x61, 0x63, 0x65, 0xD8, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0xCF, 0x0B, 0x64, 0x65, 0x62, 0x75, 
38782
  0x67, 0x2F, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD8, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x62, 
38783
  0x72, 0x65, 0x61, 0x6B, 0xCF, 0x0D, 0x2A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x6C, 0x69, 0x6E, 
38784
  0x74, 0x73, 0x2A, 0xDA, 0x83, 0x16, 0xCF, 0x09, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 
38785
  0x6C, 0xD8, 0x09, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0xCF, 0x09, 0x67, 0x63, 
38786
  0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0xD8, 0x09, 0x67, 0x63, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 
38787
  0x63, 0x74, 0xCF, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
38788
  0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x06, 0x2F, 0x00, 0x0B, 0xCE, 0x07, 0x72, 0x65, 0x76, 0x65, 
38789
  0x72, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x40, 0xDA, 0x3C, 0xDA, 0x83, 0x12, 0xDA, 0x2F, 0xDA, 0x30, 
38790
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x00, 0x0E, 0x00, 0x05, 0xCE, 
38791
  0x08, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x21, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x82, 
38792
  0x33, 0x00, 0x0E, 0x01, 0xCF, 0x08, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x21, 0x00, 0x0E, 
38793
  0x02, 0xDA, 0x43, 0x02, 0x0E, 0x04, 0xCF, 0x01, 0x6A, 0x07, 0x0D, 0x07, 0xCF, 0x02, 0x74, 0x69, 
38794
  0x2B, 0x02, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x07, 0x04, 0x04, 0x01, 
38795
  0x23, 0x05, 0x02, 0x04, 0x1E, 0x05, 0x08, 0x00, 0x3A, 0x06, 0x00, 0x02, 0x1B, 0x07, 0x06, 0x00, 
38796
  0x3A, 0x06, 0x00, 0x04, 0x3C, 0x00, 0x02, 0x06, 0x3C, 0x00, 0x04, 0x07, 0x05, 0x02, 0x02, 0x01, 
38797
  0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x86, 0x20, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 
38798
  0x0F, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x05, 0x01, 0x05, 0x01, 
38799
  0x05, 0xBF, 0xFC, 0x03, 0xBF, 0xFA, 0x01, 0x00, 0x2F, 0x00, 0xDA, 0x82, 0x33, 0x00, 0x2F, 0x01, 
38800
  0xDA, 0x83, 0xDD, 0x05, 0x1F, 0x04, 0xDA, 0x32, 0x13, 0x1F, 0x05, 0xDA, 0x39, 0x13, 0x1E, 0x00, 
38801
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x50, 0x16, 0x1E, 0x06, 0xCF, 0x07, 0x5F, 0x30, 
38802
  0x30, 0x30, 0x30, 0x32, 0x4F, 0x19, 0x1E, 0x07, 0xDA, 0x46, 0x20, 0x2C, 0x04, 0xCF, 0x07, 0x5F, 
38803
  0x30, 0x30, 0x30, 0x30, 0x32, 0x51, 0x20, 0x2C, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
38804
  0x32, 0x53, 0x23, 0x2C, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x52, 0x26, 0x2C, 
38805
  0x06, 0xDA, 0x46, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 
38806
  0x02, 0x1C, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 
38807
  0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 
38808
  0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x31, 
38809
  0x04, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x1B, 
38810
  0x05, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x03, 0x00, 0x06, 0x1B, 0x06, 0x03, 0x00, 0x1F, 
38811
  0x06, 0x07, 0x00, 0x3A, 0x03, 0x00, 0x06, 0x1B, 0x07, 0x03, 0x00, 0x07, 0x04, 0x04, 0x01, 0x3C, 
38812
  0x05, 0x04, 0x07, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x40, 
38813
  0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x03, 0x00, 0x05, 0x1B, 
38814
  0x05, 0x03, 0x00, 0x1F, 0x05, 0x08, 0x00, 0x3A, 0x03, 0x00, 0x05, 0x1B, 0x06, 0x03, 0x00, 0x32, 
38815
  0x04, 0x06, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x03, 0x07, 0x00, 0x49, 0x05, 0x00, 0x05, 0x1C, 
38816
  0xF9, 0xFF, 0xFF, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x03, 0x05, 0x00, 0x36, 0x03, 0x00, 0x00, 0x86, 
38817
  0x2D, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x02, 0x0E, 0x00, 0x07, 0x01, 0x14, 0x00, 0x14, 
38818
  0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 
38819
  0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x07, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 
38820
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0xBF, 
38821
  0xFB, 0x05, 0x08, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
38822
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 
38823
  0x00, 0x05, 0xCF, 0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD8, 0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 
38824
  0xCF, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 0x74, 
38825
  0x72, 0x69, 0x6E, 0x67, 0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 
38826
  0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xCF, 0x01, 0x2F, 0xDA, 0x83, 0x01, 0xCF, 0x04, 
38827
  0x6C, 0x6F, 0x6F, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 
38828
  0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x00, 0x03, 0xCE, 0x04, 0x6C, 0x6F, 0x6F, 0x70, 0xDA, 0x04, 0xD7, 
38829
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x15, 0x03, 0x03, 0x03, 0x29, 0x80, 0xD5, 0x00, 0x0C, 0xCE, 
38830
  0x05, 0x6C, 0x6F, 0x6F, 0x70, 0x31, 0xDA, 0x04, 0xDA, 0x80, 0xB3, 0xDA, 0x83, 0x4E, 0xD0, 0x05, 
38831
  0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x82, 0x99, 0xDA, 0x82, 0x81, 0xD0, 0x05, 0x77, 0x68, 0x69, 
38832
  0x6C, 0x65, 0xD0, 0x03, 0x6C, 0x65, 0x74, 0xCF, 0x03, 0x6C, 0x65, 0x74, 0xD0, 0x05, 0x61, 0x66, 
38833
  0x74, 0x65, 0x72, 0xD0, 0x06, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0xD0, 0x06, 0x72, 0x65, 0x70, 
38834
  0x65, 0x61, 0x74, 0xDA, 0x5C, 0xDA, 0x82, 0x55, 0xCF, 0x01, 0x3E, 0xCF, 0x02, 0x2D, 0x2D, 0xDA, 
38835
  0x82, 0x5D, 0xD0, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xCF, 0x04, 0x77, 0x68, 0x65, 0x6E, 0xD0, 0x06, 
38836
  0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0xCF, 0x06, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0xCE, 0x19, 
38837
  0x75, 0x6E, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 
38838
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0xDA, 0x81, 0x28, 0xD0, 0x05, 0x72, 0x61, 
38839
  0x6E, 0x67, 0x65, 0xDA, 0x82, 0x78, 0xDA, 0x80, 0xF4, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
38840
  0x14, 0x06, 0x06, 0x06, 0x04, 0x3B, 0x00, 0x0F, 0xCE, 0x0E, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 
38841
  0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
38842
  0x00, 0x05, 0x01, 0x01, 0x01, 0x03, 0x0B, 0x00, 0x02, 0xCE, 0x0D, 0x63, 0x68, 0x65, 0x63, 0x6B, 
38843
  0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0xDA, 0x04, 0xDA, 0x2B, 0xCE, 0x1E, 0x65, 0x78, 
38844
  0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 
38845
  0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 0xDA, 0x81, 0x28, 0x00, 
38846
  0x0B, 0x00, 0xDA, 0x1E, 0x00, 0x0B, 0x01, 0xCF, 0x0D, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 
38847
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
38848
  0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x03, 
38849
  0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 0x04, 0x00, 
38850
  0x00, 0x00, 0x81, 0xDD, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x02, 0x0C, 0x00, 
38851
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x84, 0x02, 0xD0, 0x04, 0x64, 0x6F, 
38852
  0x77, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x07, 0x07, 0x07, 0x03, 0x0E, 0x00, 
38853
  0x09, 0xCE, 0x0C, 0x66, 0x6F, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 
38854
  0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x7A, 0x00, 0x0E, 0x00, 0xDA, 0x82, 0x5E, 0x00, 
38855
  0x0E, 0x01, 0xDA, 0x35, 0x00, 0x0E, 0x02, 0xDA, 0x82, 0x82, 0x00, 0x0E, 0x03, 0xDA, 0x82, 0x83, 
38856
  0x00, 0x0E, 0x04, 0xDA, 0x82, 0x84, 0x00, 0x0E, 0x05, 0xDA, 0x82, 0x85, 0x00, 0x0E, 0x06, 0xDA, 
38857
  0x80, 0xC7, 0x00, 0x0E, 0x07, 0xCF, 0x0C, 0x66, 0x6F, 0x72, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 
38858
  0x61, 0x74, 0x65, 0x02, 0x0E, 0x09, 0xDA, 0x43, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x08, 0x09, 0x00, 
38859
  0x1B, 0x09, 0x08, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x33, 0x0B, 0x00, 0x09, 0x45, 0x0A, 0x00, 0x00, 
38860
  0x31, 0x0A, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x33, 0x09, 0x01, 0x02, 
38861
  0x33, 0x03, 0x04, 0x05, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x36, 0x0B, 0x00, 0x00, 
38862
  0x81, 0xD8, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x02, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x15, 0x00, 
38863
  0x15, 0x00, 0x15, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x3B, 
38864
  0x00, 0xDA, 0x82, 0x5E, 0x00, 0x3B, 0x01, 0xCF, 0x06, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 
38865
  0x3B, 0x02, 0xDA, 0x82, 0x60, 0x00, 0x3B, 0x03, 0xCF, 0x04, 0x72, 0x65, 0x73, 0x74, 0x00, 0x3B, 
38866
  0x04, 0xCF, 0x02, 0x6F, 0x70, 0x00, 0x3B, 0x05, 0xDA, 0x82, 0x84, 0x00, 0x3B, 0x06, 0xCF, 0x0E, 
38867
  0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x04, 0x3B, 
38868
  0x09, 0xDA, 0x80, 0xFA, 0x06, 0x3B, 0x0A, 0xDA, 0x81, 0x64, 0x08, 0x3B, 0x0B, 0xDA, 0x83, 0x1D, 
38869
  0x0A, 0x2E, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x63, 0x0C, 0x21, 0x02, 0xCF, 
38870
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x64, 0x2F, 0x3B, 0x0D, 0xDA, 0x35, 0x31, 0x3B, 0x0E, 
38871
  0xDA, 0x82, 0x82, 0x33, 0x3B, 0x0F, 0xDA, 0x82, 0x83, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x00, 
38872
  0x00, 0x35, 0x07, 0x08, 0x00, 0x3D, 0x08, 0x01, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x3D, 0x08, 0x01, 
38873
  0x01, 0x1B, 0x0A, 0x08, 0x00, 0x3D, 0x08, 0x01, 0x02, 0x1B, 0x0B, 0x08, 0x00, 0x3F, 0x08, 0x01, 
38874
  0x00, 0x1B, 0x0C, 0x08, 0x00, 0x26, 0x0D, 0x0C, 0x01, 0x1E, 0x0D, 0x17, 0x00, 0x2C, 0x10, 0x01, 
38875
  0x00, 0x25, 0x0F, 0x02, 0x10, 0x1E, 0x0F, 0x07, 0x00, 0x2B, 0x10, 0x00, 0x00, 0x2B, 0x11, 0x01, 
38876
  0x00, 0x33, 0x10, 0x09, 0x11, 0x45, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1C, 0x0C, 0x00, 
38877
  0x00, 0x2C, 0x12, 0x02, 0x00, 0x25, 0x11, 0x02, 0x12, 0x1E, 0x11, 0x07, 0x00, 0x2B, 0x12, 0x00, 
38878
  0x00, 0x2B, 0x13, 0x01, 0x00, 0x33, 0x09, 0x12, 0x13, 0x45, 0x12, 0x00, 0x00, 0x1B, 0x10, 0x12, 
38879
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1B, 0x08, 0x0E, 
38880
  0x00, 0x1C, 0x0C, 0x00, 0x00, 0x26, 0x0F, 0x0C, 0x02, 0x1E, 0x0F, 0x06, 0x00, 0x2B, 0x10, 0x01, 
38881
  0x00, 0x33, 0x09, 0x0A, 0x10, 0x45, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1C, 0x04, 0x00, 
38882
  0x00, 0x33, 0x09, 0x0A, 0x0B, 0x45, 0x10, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1B, 0x08, 0x0E, 
38883
  0x00, 0x3D, 0x0C, 0x08, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x3D, 0x0C, 0x08, 0x01, 0x1B, 0x0E, 0x0C, 
38884
  0x00, 0x3D, 0x0C, 0x08, 0x02, 0x1B, 0x0F, 0x0C, 0x00, 0x31, 0x03, 0x00, 0x00, 0x45, 0x0C, 0x00, 
38885
  0x00, 0x33, 0x00, 0x0D, 0x0E, 0x33, 0x0F, 0x05, 0x04, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x10, 0x03, 
38886
  0x00, 0x36, 0x10, 0x00, 0x00, 0x81, 0xE3, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
38887
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38888
  0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x09, 
38889
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 
38890
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
38891
  0x05, 0x02, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x03, 0x07, 0x00, 0x07, 
38892
  0xBF, 0xFD, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
38893
  0x00, 0x03, 0x05, 0x37, 0x00, 0x37, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
38894
  0xD0, 0x08, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 
38895
  0x17, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x02, 0x3C, 0x3D, 0x3F, 
38896
  0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 
38897
  0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x48, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 0x00, 0x05, 
38898
  0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 0xFF, 0x29, 
38899
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xDA, 
38900
  0x84, 0x09, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x0A, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
38901
  0xFF, 0x00, 0x13, 0xCE, 0x01, 0x2D, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 
38902
  0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 
38903
  0x05, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x08, 0x03, 0x03, 0x04, 0x03, 0x03, 
38904
  0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x08, 0x03, 
38905
  0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 
38906
  0x00, 0x00, 0xDA, 0x80, 0xF8, 0xD0, 0x07, 0x64, 0x6F, 0x77, 0x6E, 0x2D, 0x74, 0x6F, 0xD7, 0x00, 
38907
  0xCD, 0x00, 0x09, 0x00, 0x16, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 
38908
  0x02, 0x3E, 0x3D, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 
38909
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x47, 0x02, 0x03, 0x04, 0x1E, 
38910
  0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 
38911
  0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 
38912
  0x03, 0x00, 0x00, 0xDA, 0x82, 0x5A, 0xDA, 0x82, 0x4A, 0xDA, 0x82, 0x5B, 0xD0, 0x02, 0x69, 0x6E, 
38913
  0xDA, 0x82, 0x49, 0xD0, 0x07, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 
38914
  0xDC, 0x00, 0x00, 0x0A, 0x03, 0x03, 0x03, 0x06, 0x15, 0x00, 0x05, 0xCE, 0x10, 0x69, 0x74, 0x65, 
38915
  0x72, 0x61, 0x74, 0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xDA, 
38916
  0x5C, 0xDA, 0x82, 0x55, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x5D, 0xDA, 0x80, 0xB3, 
38917
  0x00, 0x15, 0x00, 0xDA, 0x82, 0x5E, 0x00, 0x15, 0x01, 0xCF, 0x04, 0x65, 0x78, 0x70, 0x72, 0x00, 
38918
  0x15, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x15, 0x03, 0xCF, 0x10, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 
38919
  0x65, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x02, 0x15, 0x05, 0xDA, 0x43, 0x2C, 
38920
  0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x28, 
38921
  0x07, 0x00, 0x00, 0x33, 0x06, 0x05, 0x07, 0x45, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x33, 
38922
  0x07, 0x05, 0x01, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 0x08, 0x00, 0x05, 0x45, 
38923
  0x07, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 0x06, 0x07, 0x31, 0x02, 0x00, 0x00, 0x45, 
38924
  0x08, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x07, 0x04, 0x08, 0x45, 0x06, 0x00, 0x00, 0x03, 
38925
  0x06, 0x00, 0x00, 0x81, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
38926
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
38927
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCE, 0x15, 
38928
  0x75, 0x6E, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 
38929
  0x76, 0x65, 0x72, 0x62, 0x20, 0x00, 0x80, 0xD5, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x80, 0xD5, 0x01, 
38930
  0xCF, 0x04, 0x68, 0x65, 0x61, 0x64, 0x00, 0x80, 0xD5, 0x02, 0xDA, 0x43, 0x00, 0x80, 0xD5, 0x03, 
38931
  0xCF, 0x05, 0x6C, 0x6F, 0x6F, 0x70, 0x31, 0x0A, 0x80, 0xD5, 0x05, 0xDA, 0x82, 0x5E, 0x0D, 0x80, 
38932
  0xD5, 0x07, 0xCF, 0x04, 0x76, 0x65, 0x72, 0x62, 0x15, 0x7C, 0x08, 0xDA, 0x84, 0x0E, 0x15, 0x7C, 
38933
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x66, 0x55, 0x68, 0x10, 0xCF, 0x04, 0x69, 
38934
  0x74, 0x65, 0x72, 0x7E, 0x80, 0xD5, 0x09, 0xDA, 0x84, 0x0D, 0x80, 0x82, 0x80, 0xD5, 0x04, 0xDA, 
38935
  0x84, 0x0E, 0x80, 0x82, 0x80, 0xD5, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x67, 
38936
  0x2E, 0x03, 0x00, 0x00, 0x3F, 0x04, 0x01, 0x00, 0x48, 0x05, 0x04, 0x02, 0x1E, 0x05, 0x06, 0x00, 
38937
  0x2C, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 
38938
  0x03, 0x04, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x02, 0x1B, 0x05, 0x04, 0x00, 0x05, 0x06, 0x02, 0x01, 
38939
  0x3A, 0x04, 0x01, 0x06, 0x1B, 0x07, 0x04, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 
38940
  0x35, 0x04, 0x08, 0x00, 0x1E, 0x04, 0x6B, 0x00, 0x05, 0x08, 0x02, 0x02, 0x33, 0x00, 0x01, 0x08, 
38941
  0x35, 0x09, 0x03, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x25, 0x09, 0x05, 0x0A, 
38942
  0x1E, 0x09, 0x0D, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 
38943
  0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x07, 0x0A, 0x28, 0x0C, 0x00, 0x00, 0x31, 0x0C, 0x00, 0x00, 
38944
  0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x33, 0x0C, 0x0B, 0x08, 0x45, 0x0A, 0x00, 0x00, 
38945
  0x03, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x25, 0x0A, 0x05, 0x0B, 0x1E, 0x0A, 0x0D, 0x00, 
38946
  0x2C, 0x0C, 0x03, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x04, 0x00, 
38947
  0x28, 0x0E, 0x00, 0x00, 0x33, 0x0D, 0x07, 0x0E, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x0C, 0x00, 0x00, 
38948
  0x2C, 0x0D, 0x00, 0x00, 0x33, 0x0D, 0x0C, 0x08, 0x45, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 
38949
  0x2C, 0x0C, 0x06, 0x00, 0x25, 0x0B, 0x05, 0x0C, 0x1E, 0x0B, 0x08, 0x00, 0x2C, 0x0D, 0x00, 0x00, 
38950
  0x32, 0x0D, 0x08, 0x00, 0x45, 0x0C, 0x00, 0x00, 0x2C, 0x0E, 0x07, 0x00, 0x33, 0x0E, 0x07, 0x0C, 
38951
  0x45, 0x0D, 0x00, 0x00, 0x03, 0x0D, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x25, 0x0C, 0x05, 0x0D, 
38952
  0x1E, 0x0C, 0x07, 0x00, 0x2C, 0x0E, 0x00, 0x00, 0x33, 0x0E, 0x08, 0x07, 0x28, 0x0E, 0x00, 0x00, 
38953
  0x31, 0x0E, 0x00, 0x00, 0x45, 0x0D, 0x00, 0x00, 0x03, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 0x09, 0x00, 
38954
  0x25, 0x0D, 0x05, 0x0E, 0x1E, 0x0D, 0x07, 0x00, 0x2C, 0x0F, 0x00, 0x00, 0x33, 0x0F, 0x07, 0x08, 
38955
  0x28, 0x0F, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x45, 0x0E, 0x00, 0x00, 0x03, 0x0E, 0x00, 0x00, 
38956
  0x2C, 0x0F, 0x0A, 0x00, 0x25, 0x0E, 0x05, 0x0F, 0x1E, 0x0E, 0x16, 0x00, 0x2C, 0x10, 0x0B, 0x00, 
38957
  0x35, 0x0F, 0x10, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2C, 0x11, 0x0C, 0x00, 0x33, 0x11, 0x10, 0x07, 
38958
  0x45, 0x0F, 0x00, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x2B, 0x13, 0x00, 0x00, 0x33, 0x12, 0x10, 0x13, 
38959
  0x45, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x0E, 0x00, 0x32, 0x13, 0x10, 0x00, 0x45, 0x12, 0x00, 0x00, 
38960
  0x2C, 0x14, 0x0F, 0x00, 0x33, 0x14, 0x11, 0x08, 0x31, 0x12, 0x00, 0x00, 0x45, 0x13, 0x00, 0x00, 
38961
  0x2C, 0x12, 0x00, 0x00, 0x33, 0x12, 0x0F, 0x13, 0x45, 0x11, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 
38962
  0x2C, 0x10, 0x10, 0x00, 0x25, 0x0F, 0x05, 0x10, 0x1E, 0x0F, 0x05, 0x00, 0x2C, 0x11, 0x11, 0x00, 
38963
  0x33, 0x11, 0x07, 0x08, 0x45, 0x10, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x12, 0x00, 
38964
  0x25, 0x10, 0x05, 0x11, 0x1E, 0x10, 0x05, 0x00, 0x2C, 0x12, 0x13, 0x00, 0x33, 0x12, 0x07, 0x08, 
38965
  0x45, 0x11, 0x00, 0x00, 0x03, 0x11, 0x00, 0x00, 0x2C, 0x11, 0x14, 0x00, 0x32, 0x11, 0x05, 0x00, 
38966
  0x2C, 0x12, 0x15, 0x00, 0x35, 0x11, 0x12, 0x00, 0x01, 0x11, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
38967
  0x05, 0x08, 0x02, 0x02, 0x3A, 0x04, 0x01, 0x08, 0x1B, 0x09, 0x04, 0x00, 0x05, 0x04, 0x02, 0x03, 
38968
  0x33, 0x00, 0x01, 0x04, 0x35, 0x0A, 0x03, 0x00, 0x1B, 0x04, 0x0A, 0x00, 0x2C, 0x0B, 0x16, 0x00, 
38969
  0x25, 0x0A, 0x07, 0x0B, 0x1E, 0x0A, 0x08, 0x00, 0x2C, 0x0B, 0x16, 0x00, 0x33, 0x05, 0x09, 0x0B, 
38970
  0x2C, 0x0B, 0x17, 0x00, 0x2C, 0x0C, 0x18, 0x00, 0x33, 0x04, 0x0B, 0x0C, 0x2C, 0x0B, 0x19, 0x00, 
38971
  0x36, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x1A, 0x00, 0x25, 0x0B, 0x07, 0x0C, 0x1E, 0x0B, 0x08, 0x00, 
38972
  0x2C, 0x0C, 0x16, 0x00, 0x33, 0x05, 0x09, 0x0C, 0x2C, 0x0C, 0x17, 0x00, 0x2C, 0x0D, 0x1B, 0x00, 
38973
  0x33, 0x04, 0x0C, 0x0D, 0x2C, 0x0C, 0x19, 0x00, 0x36, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x1C, 0x00, 
38974
  0x25, 0x0C, 0x07, 0x0D, 0x1E, 0x0C, 0x08, 0x00, 0x2C, 0x0D, 0x1C, 0x00, 0x33, 0x05, 0x09, 0x0D, 
38975
  0x2C, 0x0D, 0x1D, 0x00, 0x2C, 0x0E, 0x1E, 0x00, 0x33, 0x04, 0x0D, 0x0E, 0x2C, 0x0D, 0x19, 0x00, 
38976
  0x36, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 0x1F, 0x00, 0x25, 0x0D, 0x07, 0x0E, 0x1E, 0x0D, 0x08, 0x00, 
38977
  0x2C, 0x0E, 0x1C, 0x00, 0x33, 0x05, 0x09, 0x0E, 0x2C, 0x0E, 0x1D, 0x00, 0x2C, 0x0F, 0x20, 0x00, 
38978
  0x33, 0x04, 0x0E, 0x0F, 0x2C, 0x0E, 0x19, 0x00, 0x36, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x21, 0x00, 
38979
  0x25, 0x0E, 0x07, 0x0F, 0x1E, 0x0E, 0x08, 0x00, 0x31, 0x04, 0x00, 0x00, 0x45, 0x0F, 0x00, 0x00, 
38980
  0x2C, 0x10, 0x21, 0x00, 0x33, 0x05, 0x09, 0x10, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x22, 0x00, 
38981
  0x36, 0x10, 0x00, 0x00, 0x2C, 0x10, 0x23, 0x00, 0x25, 0x0F, 0x07, 0x10, 0x1E, 0x0F, 0x08, 0x00, 
38982
  0x31, 0x04, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x23, 0x00, 0x33, 0x05, 0x09, 0x11, 
38983
  0x31, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x22, 0x00, 0x36, 0x11, 0x00, 0x00, 0x2C, 0x11, 0x24, 0x00, 
38984
  0x25, 0x10, 0x07, 0x11, 0x1E, 0x10, 0x08, 0x00, 0x31, 0x04, 0x00, 0x00, 0x45, 0x11, 0x00, 0x00, 
38985
  0x2C, 0x12, 0x25, 0x00, 0x33, 0x05, 0x09, 0x12, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x22, 0x00, 
38986
  0x36, 0x12, 0x00, 0x00, 0x2C, 0x12, 0x26, 0x00, 0x25, 0x11, 0x07, 0x12, 0x1E, 0x11, 0x04, 0x00, 
38987
  0x33, 0x05, 0x09, 0x04, 0x2C, 0x12, 0x27, 0x00, 0x36, 0x12, 0x00, 0x00, 0x2C, 0x12, 0x28, 0x00, 
38988
  0x32, 0x12, 0x07, 0x00, 0x2C, 0x13, 0x15, 0x00, 0x35, 0x12, 0x13, 0x00, 0x01, 0x12, 0x00, 0x00, 
38989
  0x04, 0x00, 0x00, 0x00, 0x82, 0x05, 0x01, 0x04, 0x0D, 0x00, 0x09, 0x00, 0x03, 0x01, 0x0C, 0x00, 
38990
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x02, 0x03, 0x00, 0x03, 0x01, 0x09, 0xBF, 0xFF, 0x03, 
38991
  0x00, 0x03, 0x04, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x02, 0x23, 0x00, 0x12, 0x00, 0x12, 
38992
  0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
38993
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
38994
  0xBF, 0xFF, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
38995
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
38996
  0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
38997
  0x00, 0x10, 0x00, 0x10, 0xBF, 0xFD, 0x09, 0x00, 0x09, 0x00, 0x09, 0x04, 0x12, 0x00, 0x12, 0x00, 
38998
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFC, 0x09, 0x00, 0x09, 0x00, 0x09, 0x05, 0x13, 
38999
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 0xFB, 0x09, 0x00, 0x09, 0x00, 
39000
  0x09, 0x06, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
39001
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
39002
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0xBF, 0xF9, 0x09, 0x00, 0x09, 
39003
  0x00, 0x09, 0x08, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xF8, 0x09, 0x00, 0x09, 0x00, 
39004
  0x09, 0x09, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
39005
  0x12, 0x00, 0x0B, 0x00, 0x0B, 0x03, 0x09, 0x00, 0x03, 0x00, 0x03, 0x01, 0x1F, 0x00, 0x0E, 0x00, 
39006
  0x0E, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
39007
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x11, 
39008
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFE, 0x05, 0x00, 
39009
  0x05, 0x00, 0x05, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39010
  0x0D, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
39011
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFC, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x31, 0x00, 
39012
  0x31, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x05, 0x00, 0x05, 
39013
  0x00, 0x05, 0x06, 0x33, 0x00, 0x33, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
39014
  0xBF, 0xFA, 0x05, 0x00, 0x05, 0x00, 0x05, 0x07, 0x2F, 0x00, 0x2F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
39015
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xF9, 0x05, 0x00, 0x05, 0x00, 0x05, 0x08, 0x10, 0x00, 0x10, 
39016
  0x00, 0x10, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x04, 
39017
  0x00, 0xDA, 0x84, 0x22, 0x00, 0x04, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x04, 0x02, 0xDA, 0x83, 0xEF, 
39018
  0x2B, 0x03, 0x00, 0x00, 0x33, 0x01, 0x00, 0x03, 0x2C, 0x03, 0x00, 0x00, 0x36, 0x03, 0x00, 0x00, 
39019
  0x82, 0x9E, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0xF6, 0xD7, 0x01, 0xCD, 0x00, 
39020
  0xDC, 0x00, 0x00, 0x0F, 0x03, 0x02, 0x03, 0x0B, 0x28, 0x01, 0x21, 0xCE, 0x14, 0x62, 0x75, 0x6E, 
39021
  0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 
39022
  0x79, 0xDA, 0x04, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x33, 0xCE, 
39023
  0x29, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x74, 0x20, 0x25, 0x73, 
39024
  0x2C, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 0x72, 0x65, 
39025
  0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0xDA, 0x81, 0x49, 0xDA, 0x81, 0x21, 
39026
  0xDA, 0x30, 0xDA, 0x81, 0x5F, 0xCE, 0x04, 0x61, 0x64, 0x64, 0x20, 0xDA, 0x81, 0x90, 0xBF, 0xFF, 
39027
  0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 
39028
  0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 
39029
  0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 
39030
  0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 
39031
  0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
39032
  0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 
39033
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 
39034
  0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 
39035
  0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 
39036
  0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 
39037
  0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0x00, 0x28, 0x00, 
39038
  0xDA, 0x81, 0x39, 0x00, 0x28, 0x01, 0xCF, 0x04, 0x64, 0x65, 0x73, 0x74, 0x00, 0x28, 0x02, 0xDA, 
39039
  0x82, 0xFB, 0x00, 0x28, 0x03, 0xDA, 0x82, 0xF6, 0x03, 0x28, 0x05, 0xDA, 0x81, 0x3A, 0x06, 0x28, 
39040
  0x07, 0xDA, 0x81, 0x2A, 0x0E, 0x28, 0x08, 0xCF, 0x07, 0x61, 0x62, 0x73, 0x64, 0x65, 0x73, 0x74, 
39041
  0x1B, 0x28, 0x0B, 0xDA, 0x84, 0x2D, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x08, 0x35, 0x04, 
39042
  0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x02, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 
39043
  0x06, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x35, 0x08, 
39044
  0x09, 0x00, 0x33, 0x08, 0x07, 0x01, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 
39045
  0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 
39046
  0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x32, 0x0B, 0x08, 0x00, 0x2C, 0x0C, 
39047
  0x05, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x35, 0x0A, 
39048
  0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x32, 0x05, 0x0B, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0C, 
39049
  0x0D, 0x00, 0x1E, 0x02, 0x04, 0x00, 0x32, 0x0B, 0x02, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x35, 0x0D, 
39050
  0x0E, 0x00, 0x2C, 0x0D, 0x09, 0x00, 0x32, 0x0D, 0x0B, 0x00, 0x2C, 0x0E, 0x0A, 0x00, 0x35, 0x0D, 
39051
  0x0E, 0x00, 0x03, 0x0B, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0x70, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
39052
  0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
39053
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 
39054
  0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
39055
  0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
39056
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF4, 0x03, 0xDB, 0x01, 0xCF, 0x0D, 0x2A, 0x66, 
39057
  0x66, 0x69, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x2A, 0xD0, 0x0B, 0x66, 0x66, 0x69, 
39058
  0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xCF, 0x12, 0x66, 0x66, 0x69, 0x2F, 0x70, 0x6F, 
39059
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xD8, 0x12, 0x66, 0x66, 
39060
  0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
39061
  0xCF, 0x08, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 
39062
  0x00, 0x10, 0x02, 0x01, 0x02, 0x14, 0x3C, 0x00, 0x01, 0x06, 0xCE, 0x08, 0x64, 0x65, 0x62, 0x75, 
39063
  0x67, 0x67, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x83, 0x55, 0xDA, 0x81, 0x9A, 0xD0, 0x05, 0x66, 0x69, 
39064
  0x62, 0x65, 0x72, 0xD0, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 
39065
  0xDA, 0x80, 0xE5, 0xD0, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xD3, 0x13, 0xCF, 0x06, 0x2E, 
39066
  0x73, 0x6C, 0x6F, 0x74, 0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x37, 
39067
  0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x20, 0x26, 0x6F, 0x70, 
39068
  0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 
39069
  0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 
39070
  0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xD7, 
39071
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 
39072
  0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 
39073
  0x01, 0x00, 0x01, 0x02, 0x0C, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x66, 0x72, 0x61, 0x6D, 0x65, 0xDA, 
39074
  0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x01, 
39075
  0xCE, 0x06, 0x2E, 0x66, 0x69, 0x62, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x84, 0x35, 0xDA, 0x81, 0x26, 
39076
  0x00, 0x04, 0x00, 0xCF, 0x06, 0x2E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x01, 0x00, 0x00, 0x31, 
39077
  0x01, 0x00, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x36, 0x01, 0x00, 0x00, 0x8E, 0x19, 0x03, 0x00, 0x03, 
39078
  0x00, 0x03, 0x00, 0x03, 0xD8, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 
39079
  0x6B, 0x00, 0x0C, 0x00, 0xDA, 0x32, 0x00, 0x0C, 0x01, 0xCF, 0x06, 0x2E, 0x66, 0x72, 0x61, 0x6D, 
39080
  0x65, 0x05, 0x0C, 0x02, 0xCF, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x05, 0x0A, 0x00, 0xCF, 0x07, 
39081
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x73, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 
39082
  0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 
39083
  0x00, 0x03, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3A, 
39084
  0x05, 0x02, 0x04, 0x03, 0x05, 0x00, 0x00, 0x8E, 0x2A, 0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x0E, 
39085
  0x00, 0x0E, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 
39086
  0xD0, 0x05, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x00, 0x06, 0x00, 0xDA, 0x32, 0x00, 0x06, 0x01, 0xDA, 
39087
  0x84, 0x39, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 
39088
  0x01, 0x00, 0x3A, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x8E, 0x3A, 0x07, 0x00, 0x07, 0x00, 
39089
  0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x2E, 0x70, 0x70, 0x61, 0x73, 0x6D, 0xD3, 
39090
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x50, 0x03, 0xDA, 0x06, 0xCE, 0x45, 0x28, 
39091
  0x2E, 0x70, 0x70, 0x61, 0x73, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 
39092
  0x50, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 
39093
  0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
39094
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
39095
  0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xFC, 0x00, 0x00, 0x20, 0x01, 0x00, 
39096
  0x01, 0x2B, 0x80, 0xAD, 0x00, 0x01, 0x17, 0xCE, 0x06, 0x2E, 0x70, 0x70, 0x61, 0x73, 0x6D, 0xDA, 
39097
  0x04, 0xDA, 0x84, 0x3F, 0xDA, 0x1D, 0xD8, 0x06, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xD0, 0x08, 
39098
  0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xD0, 0x02, 0x70, 0x63, 0xD0, 0x09, 0x73, 0x6F, 
39099
  0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0xD2, 0x02, 0x00, 0xBF, 0xFE, 0xBF, 0xFE, 0xD7, 0x00, 
39100
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x04, 0x00, 0x01, 0xCE, 0x07, 0x2E, 
39101
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xDA, 0x04, 0xDA, 0x84, 0x37, 0xDA, 0x81, 0x26, 0x00, 0x04, 
39102
  0x00, 0xCF, 0x07, 0x2E, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x2C, 0x01, 0x00, 0x00, 0x31, 0x01, 
39103
  0x00, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x36, 0x01, 0x00, 0x00, 0x8E, 0x1E, 0x03, 0x00, 0x03, 0x00, 
39104
  0x03, 0x00, 0x03, 0xCE, 0x0F, 0x0A, 0x20, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x3A, 0x20, 
39105
  0x20, 0x20, 0x20, 0x20, 0xD8, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x84, 0x41, 0xDA, 
39106
  0x80, 0xDE, 0xCE, 0x0E, 0x20, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x3A, 0x20, 0x20, 0x20, 
39107
  0x20, 0x20, 0xDA, 0x81, 0x6D, 0xCE, 0x0B, 0x3C, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 
39108
  0x73, 0x3E, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0x6E, 0xDA, 0x82, 0x58, 0xCE, 0x0E, 0x20, 0x20, 0x66, 
39109
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3A, 0x20, 0x20, 0x20, 0xCE, 0x02, 0x20, 0x5B, 0xCE, 
39110
  0x01, 0x5D, 0xD0, 0x09, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0xCE, 0x12, 0x20, 
39111
  0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0x3A, 0x20, 0x20, 0x25, 0x2E, 0x34, 
39112
  0x71, 0xD8, 0x07, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xDA, 0x84, 0x48, 0xCE, 0x13, 0x20, 
39113
  0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x25, 0x2E, 0x34, 
39114
  0x71, 0x0A, 0xDA, 0x81, 0x7E, 0xDA, 0x81, 0x82, 0xCE, 0x01, 0x20, 0xD8, 0x0D, 0x73, 0x74, 0x72, 
39115
  0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xCE, 
39116
  0x01, 0x2A, 0xD8, 0x05, 0x65, 0x70, 0x72, 0x69, 0x6E, 0xCE, 0x02, 0x3E, 0x20, 0xCE, 0x02, 0x20, 
39117
  0x20, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0xF8, 0xD8, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
39118
  0x6A, 0x6F, 0x69, 0x6E, 0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 0x73, 0xD8, 0x06, 0x65, 0x70, 0x72, 
39119
  0x69, 0x6E, 0x66, 0xCE, 0x08, 0x20, 0x23, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0xCE, 0x09, 0x2C, 
39120
  0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x00, 0x80, 0xAD, 0x00, 0xDA, 0x32, 0x00, 0x80, 
39121
  0xAD, 0x01, 0xDA, 0x84, 0x49, 0x03, 0x80, 0xAD, 0x03, 0xCF, 0x05, 0x66, 0x72, 0x61, 0x6D, 0x65, 
39122
  0x07, 0x80, 0xAD, 0x05, 0xCF, 0x04, 0x66, 0x75, 0x6E, 0x63, 0x0B, 0x80, 0xAD, 0x07, 0xCF, 0x04, 
39123
  0x64, 0x61, 0x73, 0x6D, 0x0E, 0x80, 0xAD, 0x09, 0xCF, 0x08, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 
39124
  0x64, 0x65, 0x12, 0x80, 0xAD, 0x0B, 0xCF, 0x02, 0x70, 0x63, 0x15, 0x80, 0xAD, 0x0D, 0xCF, 0x09, 
39125
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x16, 0x80, 0xAD, 0x0E, 0xCF, 0x08, 0x6C, 
39126
  0x61, 0x73, 0x74, 0x2D, 0x6C, 0x6F, 0x63, 0x39, 0x3F, 0x12, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 0x73, 
39127
  0x74, 0x61, 0x6E, 0x74, 0x73, 0x48, 0x62, 0x14, 0xCF, 0x08, 0x73, 0x72, 0x63, 0x2D, 0x70, 0x61, 
39128
  0x74, 0x68, 0x4D, 0x52, 0x17, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x75, 0x54, 0x62, 
39129
  0x17, 0xCF, 0x04, 0x64, 0x75, 0x6D, 0x70, 0x58, 0x62, 0x19, 0xCF, 0x02, 0x73, 0x6C, 0x5A, 0x62, 
39130
  0x1A, 0xDA, 0x81, 0x96, 0x67, 0x80, 0xAD, 0x14, 0xCF, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 
39131
  0x67, 0x68, 0x80, 0xAB, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x78, 0x6A, 0x80, 
39132
  0xAB, 0x17, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x79, 0x6D, 0x80, 0xAB, 0x18, 0xDA, 
39133
  0x43, 0x70, 0x80, 0xA9, 0x1A, 0xCF, 0x05, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x80, 0x98, 0x80, 0xA7, 
39134
  0x1C, 0xDA, 0x84, 0x78, 0x80, 0x9A, 0x80, 0xA7, 0x1D, 0xCF, 0x02, 0x73, 0x63, 0x80, 0x9D, 0x80, 
39135
  0xA7, 0x1B, 0xCF, 0x03, 0x6C, 0x6F, 0x63, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 
39136
  0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 
39137
  0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 
39138
  0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x3A, 0x08, 0x07, 0x09, 0x1B, 
39139
  0x09, 0x08, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0A, 0x03, 0x00, 0x1B, 
39140
  0x0B, 0x0A, 0x00, 0x2C, 0x0D, 0x05, 0x00, 0x3A, 0x0C, 0x07, 0x0D, 0x1B, 0x0D, 0x0C, 0x00, 0x2C, 
39141
  0x0E, 0x06, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x10, 0x08, 0x00, 0x32, 
39142
  0x10, 0x0F, 0x00, 0x2C, 0x11, 0x09, 0x00, 0x35, 0x10, 0x11, 0x00, 0x2C, 0x11, 0x0A, 0x00, 0x35, 
39143
  0x0F, 0x11, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x12, 0x0B, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 
39144
  0x0F, 0x0C, 0x00, 0x32, 0x0F, 0x11, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x35, 0x0F, 0x12, 0x00, 0x2C, 
39145
  0x12, 0x0D, 0x00, 0x3B, 0x11, 0x07, 0x12, 0x20, 0x11, 0x02, 0x00, 0x2C, 0x11, 0x0E, 0x00, 0x2C, 
39146
  0x12, 0x0F, 0x00, 0x2C, 0x13, 0x10, 0x00, 0x33, 0x07, 0x12, 0x13, 0x2C, 0x13, 0x11, 0x00, 0x35, 
39147
  0x12, 0x13, 0x00, 0x2C, 0x13, 0x12, 0x00, 0x2C, 0x14, 0x13, 0x00, 0x33, 0x13, 0x11, 0x14, 0x2C, 
39148
  0x13, 0x14, 0x00, 0x32, 0x12, 0x13, 0x00, 0x2C, 0x14, 0x09, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2C, 
39149
  0x11, 0x15, 0x00, 0x31, 0x11, 0x00, 0x00, 0x35, 0x11, 0x07, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x1E, 
39150
  0x11, 0x05, 0x00, 0x2C, 0x14, 0x16, 0x00, 0x32, 0x14, 0x12, 0x00, 0x2C, 0x15, 0x17, 0x00, 0x35, 
39151
  0x14, 0x15, 0x00, 0x2C, 0x11, 0x18, 0x00, 0x31, 0x11, 0x00, 0x00, 0x35, 0x11, 0x03, 0x00, 0x2C, 
39152
  0x12, 0x19, 0x00, 0x32, 0x12, 0x11, 0x00, 0x2C, 0x14, 0x17, 0x00, 0x35, 0x12, 0x14, 0x00, 0x2C, 
39153
  0x14, 0x0F, 0x00, 0x3A, 0x11, 0x07, 0x14, 0x1B, 0x14, 0x11, 0x00, 0x1E, 0x11, 0x19, 0x00, 0x31, 
39154
  0x14, 0x00, 0x00, 0x2C, 0x17, 0x1A, 0x00, 0x35, 0x16, 0x17, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x1E, 
39155
  0x16, 0x03, 0x00, 0x1B, 0x15, 0x0D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x15, 0x17, 0x00, 0x1E, 
39156
  0x15, 0x10, 0x00, 0x30, 0x16, 0x00, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x35, 
39157
  0x16, 0x0D, 0x00, 0x3D, 0x18, 0x16, 0x00, 0x1B, 0x19, 0x18, 0x00, 0x3D, 0x18, 0x16, 0x01, 0x1B, 
39158
  0x1A, 0x18, 0x00, 0x31, 0x14, 0x00, 0x00, 0x2C, 0x18, 0x1B, 0x00, 0x35, 0x16, 0x18, 0x00, 0x32, 
39159
  0x16, 0x19, 0x00, 0x35, 0x18, 0x17, 0x00, 0x2C, 0x18, 0x09, 0x00, 0x35, 0x16, 0x18, 0x00, 0x2C, 
39160
  0x11, 0x1C, 0x00, 0x2B, 0x14, 0x14, 0x00, 0x32, 0x11, 0x14, 0x00, 0x2C, 0x14, 0x1D, 0x00, 0x35, 
39161
  0x11, 0x14, 0x00, 0x1B, 0x14, 0x11, 0x00, 0x2B, 0x15, 0x00, 0x00, 0x3F, 0x16, 0x09, 0x00, 0x1B, 
39162
  0x17, 0x16, 0x00, 0x23, 0x16, 0x15, 0x17, 0x1E, 0x16, 0x3F, 0x00, 0x1B, 0x18, 0x15, 0x00, 0x31, 
39163
  0x18, 0x00, 0x00, 0x35, 0x19, 0x09, 0x00, 0x1B, 0x1A, 0x19, 0x00, 0x31, 0x1A, 0x00, 0x00, 0x2C, 
39164
  0x1C, 0x1E, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x2C, 0x1D, 0x1F, 0x00, 0x25, 0x1C, 0x1B, 0x1D, 0x1E, 
39165
  0x1C, 0x03, 0x00, 0x2C, 0x19, 0x20, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x19, 0x1C, 0x00, 0x31, 
39166
  0x19, 0x00, 0x00, 0x2C, 0x1C, 0x21, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x25, 0x1B, 0x18, 0x0B, 0x1E, 
39167
  0x1B, 0x03, 0x00, 0x2C, 0x19, 0x22, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x19, 0x23, 0x00, 0x31, 
39168
  0x19, 0x00, 0x00, 0x2C, 0x1C, 0x21, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x2C, 0x19, 0x24, 0x00, 0x32, 
39169
  0x19, 0x1A, 0x00, 0x2C, 0x1B, 0x25, 0x00, 0x35, 0x19, 0x1B, 0x00, 0x2C, 0x1B, 0x1C, 0x00, 0x32, 
39170
  0x19, 0x1B, 0x00, 0x2C, 0x1C, 0x26, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x32, 0x1B, 0x14, 0x00, 0x2C, 
39171
  0x1C, 0x24, 0x00, 0x35, 0x19, 0x1C, 0x00, 0x2C, 0x1B, 0x27, 0x00, 0x32, 0x1B, 0x19, 0x00, 0x2C, 
39172
  0x1C, 0x28, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x1E, 0x0D, 0x13, 0x00, 0x31, 0x18, 0x00, 0x00, 0x35, 
39173
  0x19, 0x0D, 0x00, 0x3D, 0x1B, 0x19, 0x00, 0x1B, 0x1C, 0x1B, 0x00, 0x3D, 0x1B, 0x19, 0x01, 0x1B, 
39174
  0x1D, 0x1B, 0x00, 0x32, 0x1C, 0x1D, 0x00, 0x45, 0x19, 0x00, 0x00, 0x1B, 0x1B, 0x19, 0x00, 0x4A, 
39175
  0x19, 0x1B, 0x0E, 0x1E, 0x19, 0x08, 0x00, 0x1B, 0x0E, 0x1B, 0x00, 0x2C, 0x1E, 0x29, 0x00, 0x2C, 
39176
  0x1F, 0x2A, 0x00, 0x33, 0x1E, 0x1C, 0x1F, 0x31, 0x1D, 0x00, 0x00, 0x2C, 0x1F, 0x21, 0x00, 0x35, 
39177
  0x1E, 0x1F, 0x00, 0x2C, 0x1B, 0x09, 0x00, 0x35, 0x19, 0x1B, 0x00, 0x05, 0x15, 0x15, 0x01, 0x1C, 
39178
  0xC1, 0xFF, 0xFF, 0x2C, 0x15, 0x09, 0x00, 0x36, 0x15, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
39179
  0x14, 0x02, 0x02, 0x02, 0x11, 0x3F, 0x00, 0x0C, 0xCE, 0x04, 0x64, 0x75, 0x6D, 0x70, 0xDA, 0x04, 
39180
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
39181
  0x0E, 0x00, 0x06, 0xCE, 0x03, 0x6D, 0x61, 0x78, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 
39182
  0x00, 0x0E, 0x01, 0xCF, 0x03, 0x6D, 0x61, 0x78, 0x00, 0x0E, 0x00, 0xDA, 0x82, 0x62, 0x02, 0x0E, 
39183
  0x03, 0xDA, 0x3A, 0x04, 0x0E, 0x04, 0xDA, 0x39, 0x08, 0x0D, 0x05, 0xDA, 0x1E, 0x28, 0x03, 0x00, 
39184
  0x00, 0x49, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x3B, 0x02, 0x00, 0x03, 0x1B, 0x04, 0x02, 
39185
  0x00, 0x49, 0x03, 0x00, 0x03, 0x1F, 0x03, 0x07, 0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x05, 0x02, 
39186
  0x00, 0x21, 0x02, 0x05, 0x04, 0x1E, 0x02, 0x02, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0xF9, 0xFF, 
39187
  0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 0x36, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39188
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39189
  0x00, 0x0C, 0xDA, 0x81, 0x6E, 0xCE, 0x01, 0x0A, 0xDA, 0x82, 0xE8, 0xDA, 0x82, 0xB1, 0xD7, 0x00, 
39190
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 
39191
  0x06, 0xCE, 0x03, 0x6D, 0x69, 0x6E, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x0E, 
39192
  0x01, 0xCF, 0x03, 0x6D, 0x69, 0x6E, 0x00, 0x0E, 0x00, 0xDA, 0x82, 0x62, 0x02, 0x0E, 0x03, 0xDA, 
39193
  0x3A, 0x04, 0x0E, 0x04, 0xDA, 0x39, 0x08, 0x0D, 0x05, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x49, 
39194
  0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x3B, 0x02, 0x00, 0x03, 0x1B, 0x04, 0x02, 0x00, 0x49, 
39195
  0x03, 0x00, 0x03, 0x1F, 0x03, 0x07, 0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x05, 0x02, 0x00, 0x23, 
39196
  0x02, 0x05, 0x04, 0x1E, 0x02, 0x02, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 
39197
  0x04, 0x00, 0x00, 0x83, 0x3A, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39198
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39199
  0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0xD8, 0x0A, 0x6D, 0x61, 
39200
  0x74, 0x68, 0x2F, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 
39201
  0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x69, 0x6E, 0x63, 0xDA, 0x04, 0x00, 0x02, 
39202
  0x00, 0xDA, 0x1E, 0x00, 0x02, 0x01, 0xCF, 0x03, 0x69, 0x6E, 0x63, 0x05, 0x02, 0x00, 0x01, 0x03, 
39203
  0x02, 0x00, 0x00, 0x80, 0x89, 0x20, 0x00, 0x20, 0xCE, 0x01, 0x25, 0xCE, 0x05, 0x64, 0x3A, 0x20, 
39204
  0x25, 0x73, 0xDA, 0x81, 0x28, 0xDA, 0x84, 0x62, 0xDA, 0x84, 0x65, 0xDA, 0x84, 0x66, 0xDA, 0x84, 
39205
  0x67, 0xDA, 0x84, 0x60, 0x00, 0x3F, 0x00, 0xDA, 0x82, 0xFA, 0x00, 0x3F, 0x01, 0xCF, 0x03, 0x63, 
39206
  0x75, 0x72, 0x00, 0x3F, 0x02, 0xDA, 0x84, 0x77, 0x00, 0x3F, 0x03, 0xCF, 0x06, 0x6F, 0x66, 0x66, 
39207
  0x73, 0x65, 0x74, 0x06, 0x3F, 0x04, 0xCF, 0x03, 0x62, 0x65, 0x67, 0x11, 0x3F, 0x06, 0xCF, 0x05, 
39208
  0x6C, 0x69, 0x6E, 0x65, 0x73, 0x17, 0x3F, 0x07, 0xDA, 0x36, 0x21, 0x3F, 0x0B, 0xCF, 0x06, 0x64, 
39209
  0x69, 0x67, 0x69, 0x74, 0x73, 0x27, 0x3F, 0x0D, 0xCF, 0x07, 0x66, 0x6D, 0x74, 0x2D, 0x73, 0x74, 
39210
  0x72, 0x28, 0x3F, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x76, 0x28, 0x3F, 0x07, 
39211
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x77, 0x2B, 0x3E, 0x10, 0xDA, 0x43, 0x2B, 0x03, 
39212
  0x05, 0x00, 0x08, 0x04, 0x01, 0x03, 0x2B, 0x05, 0x01, 0x00, 0x32, 0x05, 0x04, 0x00, 0x2C, 0x06, 
39213
  0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x31, 0x06, 
39214
  0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x32, 0x07, 0x00, 0x00, 0x2C, 0x08, 
39215
  0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x06, 0x07, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 
39216
  0x09, 0x00, 0x1B, 0x06, 0x08, 0x00, 0x06, 0x07, 0x01, 0x03, 0x3F, 0x09, 0x06, 0x00, 0x32, 0x07, 
39217
  0x09, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x31, 0x07, 
39218
  0x00, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x35, 0x09, 0x0B, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0C, 
39219
  0x07, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x08, 0x00, 0x35, 0x09, 
39220
  0x0C, 0x00, 0x1B, 0x0B, 0x09, 0x00, 0x2C, 0x0C, 0x09, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x33, 0x0C, 
39221
  0x0B, 0x0D, 0x2C, 0x0D, 0x0B, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x1B, 0x0E, 
39222
  0x04, 0x00, 0x23, 0x0F, 0x0E, 0x07, 0x1E, 0x0F, 0x14, 0x00, 0x1B, 0x10, 0x0E, 0x00, 0x2C, 0x11, 
39223
  0x0C, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x35, 0x11, 0x12, 0x00, 0x25, 0x12, 
39224
  0x10, 0x01, 0x1E, 0x12, 0x03, 0x00, 0x2C, 0x11, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x11, 
39225
  0x0F, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x0D, 0x00, 0x35, 0x12, 0x13, 0x00, 0x3B, 0x11, 
39226
  0x06, 0x10, 0x33, 0x0D, 0x10, 0x11, 0x2C, 0x13, 0x10, 0x00, 0x35, 0x12, 0x13, 0x00, 0x05, 0x0E, 
39227
  0x0E, 0x01, 0x1C, 0xEC, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x8E, 0x65, 0x0B, 0x01, 0x1B, 0x00, 
39228
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
39229
  0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0B, 0x01, 
39230
  0x19, 0x00, 0x28, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x28, 0x00, 0x28, 0x00, 
39231
  0x28, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0B, 0x01, 
39232
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 
39233
  0x0B, 0x00, 0x0B, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x18, 0x00, 0x14, 0x00, 
39234
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x20, 0x00, 0x0D, 0x00, 
39235
  0x0D, 0x00, 0x0D, 0xBF, 0xFD, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x8E, 0x53, 0x10, 0x00, 0x10, 0x00, 
39236
  0x10, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 
39237
  0x0F, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39238
  0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x05, 0x01, 0x20, 0x00, 0x20, 0x00, 0x05, 0x00, 
39239
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x2C, 0x00, 0x2C, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
39240
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
39241
  0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39242
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x05, 0x00, 
39243
  0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
39244
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x05, 0x01, 
39245
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39246
  0x07, 0x02, 0x09, 0x00, 0x09, 0x0C, 0x16, 0x00, 0x16, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
39247
  0x09, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x01, 
39248
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x05, 0x00, 0x18, 0x00, 
39249
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0xBF, 0xFF, 0x05, 0x02, 0x15, 
39250
  0x00, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
39251
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
39252
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x1F, 
39253
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 
39254
  0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
39255
  0x00, 0x09, 0x01, 0x13, 0x00, 0x13, 0xBF, 0xFF, 0x09, 0x02, 0x11, 0x00, 0x0B, 0x01, 0x0D, 0x01, 
39256
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x07, 0x00, 0x07, 0xBF, 
39257
  0xF5, 0x05, 0x00, 0x05, 0x0C, 0x05, 0x00, 0x05, 0xCF, 0x09, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 
39258
  0x61, 0x6C, 0x6C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x8A, 0x03, 0xDA, 
39259
  0x06, 0xCE, 0x42, 0x28, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x61, 0x6C, 0x6C, 0x20, 0x26, 0x6F, 
39260
  0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x61, 0x6C, 0x6C, 
39261
  0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x6E, 0x20, 
39262
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 
39263
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 
39264
  0x00, 0x01, 0x05, 0x19, 0x01, 0x0A, 0xCE, 0x09, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x61, 0x6C, 
39265
  0x6C, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x06, 
39266
  0x00, 0x02, 0xCE, 0x03, 0x2E, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x84, 0x3F, 0xDA, 0x1D, 0x00, 0x06, 
39267
  0x00, 0xDA, 0x32, 0x00, 0x06, 0x01, 0xCF, 0x03, 0x2E, 0x66, 0x6E, 0x31, 0x00, 0x00, 0x00, 0x2C, 
39268
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x3A, 0x03, 0x02, 0x04, 0x03, 
39269
  0x03, 0x00, 0x00, 0x8E, 0x35, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39270
  0xD8, 0x0E, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 
39271
  0xCE, 0x08, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0xCE, 0x10, 0x20, 0x62, 0x72, 0x65, 
39272
  0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0xDA, 0x84, 0x58, 0xBF, 
39273
  0xFF, 0x00, 0x01, 0xCF, 0x07, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xBF, 0xFF, 0x00, 0x02, 
39274
  0xCF, 0x09, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
39275
  0x84, 0x49, 0xBF, 0xFF, 0x00, 0x04, 0xCF, 0x09, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 
39276
  0x6C, 0x00, 0x19, 0x00, 0xDA, 0x32, 0x00, 0x19, 0x01, 0xDA, 0x84, 0x96, 0x03, 0x19, 0x03, 0xCF, 
39277
  0x03, 0x66, 0x75, 0x6E, 0x07, 0x19, 0x05, 0xDA, 0x84, 0x70, 0x08, 0x12, 0x06, 0xDA, 0x43, 0x0A, 
39278
  0x12, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x41, 0x31, 0x00, 0x00, 0x00, 0x2C, 
39279
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 
39280
  0x05, 0x00, 0x02, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3F, 
39281
  0x07, 0x05, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x23, 0x07, 0x06, 0x08, 0x1E, 0x07, 0x06, 0x00, 0x32, 
39282
  0x03, 0x06, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x05, 0x06, 0x06, 0x01, 0x1C, 
39283
  0xFA, 0xFF, 0xFF, 0x3F, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 
39284
  0x07, 0x06, 0x08, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x36, 0x07, 0x00, 0x00, 0xBF, 
39285
  0xFF, 0x8E, 0x8D, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 
39286
  0x00, 0x05, 0x01, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
39287
  0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x18, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39288
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x07, 0xC9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 
39289
  0x01, 0x00, 0x01, 0x03, 0x0B, 0x00, 0x04, 0xCE, 0x07, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 
39290
  0xDA, 0x04, 0xDA, 0x84, 0x3F, 0xDA, 0x1D, 0xDA, 0x84, 0x4F, 0x00, 0x0B, 0x00, 0xDA, 0x32, 0x00, 
39291
  0x0B, 0x01, 0xDA, 0x84, 0xA2, 0x03, 0x0B, 0x03, 0xDA, 0x84, 0x6D, 0x07, 0x0B, 0x05, 0xDA, 0x84, 
39292
  0x6E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 
39293
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 
39294
  0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x36, 0x06, 0x00, 0x00, 0x8E, 0x47, 0x10, 
39295
  0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x05, 
39296
  0x00, 0x05, 0x00, 0x05, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x01, 
39297
  0x06, 0x01, 0x03, 0xCE, 0x09, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0xDA, 0x04, 
39298
  0xDA, 0x84, 0x50, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x84, 0xA2, 0x00, 0x06, 0x00, 0xDA, 0x32, 0x00, 
39299
  0x06, 0x01, 0xDA, 0x84, 0xA3, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x35, 0x02, 0x03, 
39300
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 
39301
  0x4E, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x02, 0xC9, 0xC9, 
39302
  0xC9, 0xC9, 0xDA, 0x84, 0xA2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x44, 
39303
  0x03, 0xDA, 0x06, 0xCE, 0x3D, 0x28, 0x2E, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x20, 0x26, 0x6F, 
39304
  0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
39305
  0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 
39306
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
39307
  0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0xA7, 0xCF, 0x07, 0x2E, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
39308
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x47, 
39309
  0x28, 0x2E, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 
39310
  0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 
39311
  0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
39312
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 
39313
  0x62, 0x75, 0x67, 0x67, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
39314
  0x0A, 0x01, 0x00, 0x01, 0x05, 0x11, 0x00, 0x05, 0xCE, 0x07, 0x2E, 0x73, 0x6F, 0x75, 0x72, 0x63, 
39315
  0x65, 0xDA, 0x04, 0xDA, 0x84, 0x3F, 0xDA, 0x81, 0xC5, 0xDA, 0x81, 0x82, 0xDA, 0x84, 0x83, 0xDA, 
39316
  0x84, 0x58, 0x00, 0x11, 0x00, 0xDA, 0x32, 0x00, 0x11, 0x01, 0xDA, 0x84, 0xAE, 0x03, 0x11, 0x03, 
39317
  0xDA, 0x84, 0x6D, 0x07, 0x11, 0x05, 0xDA, 0x81, 0x2A, 0x0B, 0x11, 0x07, 0xCF, 0x0A, 0x61, 0x6C, 
39318
  0x6C, 0x2D, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
39319
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 
39320
  0x35, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 
39321
  0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x03, 0x00, 
39322
  0x33, 0x08, 0x07, 0x09, 0x2C, 0x08, 0x04, 0x00, 0x36, 0x08, 0x00, 0x00, 0x8E, 0x96, 0x0E, 0x00, 
39323
  0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x13, 0x00, 
39324
  0x13, 0x00, 0x13, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
39325
  0x84, 0xA4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x81, 0x03, 0xDA, 0x06, 
39326
  0xCE, 0x50, 0x28, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 0x6C, 0x20, 0x26, 0x6F, 0x70, 
39327
  0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 
39328
  0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 
39329
  0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
39330
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
39331
  0x6E, 0x2E, 0xDA, 0x08, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x01, 0x05, 
39332
  0x19, 0x01, 0x09, 0xCE, 0x09, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 
39333
  0xDA, 0x84, 0x9C, 0xD8, 0x0C, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 
39334
  0x6B, 0xCE, 0x04, 0x73, 0x65, 0x74, 0x20, 0xDA, 0x84, 0xA1, 0xDA, 0x84, 0x58, 0xBF, 0xFF, 0x00, 
39335
  0x01, 0xDA, 0x84, 0xA2, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0xA3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
39336
  0x84, 0x49, 0x00, 0x19, 0x00, 0xDA, 0x32, 0x00, 0x19, 0x01, 0xDA, 0x84, 0xA4, 0x03, 0x19, 0x03, 
39337
  0xDA, 0x84, 0xA5, 0x07, 0x19, 0x05, 0xDA, 0x84, 0x70, 0x08, 0x12, 0x06, 0xDA, 0x43, 0x0A, 0x12, 
39338
  0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x7A, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 
39339
  0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 
39340
  0x00, 0x02, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3F, 0x07, 
39341
  0x05, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x23, 0x07, 0x06, 0x08, 0x1E, 0x07, 0x06, 0x00, 0x32, 0x03, 
39342
  0x06, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x05, 0x06, 0x06, 0x01, 0x1C, 0xFA, 
39343
  0xFF, 0xFF, 0x3F, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 0x07, 
39344
  0x06, 0x08, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 
39345
  0x8E, 0x84, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
39346
  0x05, 0x01, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 
39347
  0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x14, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
39348
  0x00, 0x05, 0x00, 0x05, 0xDB, 0x02, 0xDA, 0x84, 0xA3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
39349
  0xDA, 0x04, 0x8E, 0x4B, 0x03, 0xDA, 0x06, 0xCE, 0x3E, 0x28, 0x2E, 0x62, 0x79, 0x74, 0x65, 0x63, 
39350
  0x6F, 0x64, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
39351
  0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6F, 
39352
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 
39353
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0xA9, 0xCF, 0x05, 0x2E, 0x73, 
39354
  0x6C, 0x6F, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x3C, 0x01, 0xDA, 
39355
  0x06, 0xCE, 0x3A, 0x28, 0x2E, 0x73, 0x6C, 0x6F, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 
39356
  0x74, 0x68, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2D, 0x69, 0x64, 0x78, 0x29, 0x0A, 0x0A, 0x47, 
39357
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 
39358
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x74, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x2E, 0xDA, 0x08, 0xD7, 
39359
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x00, 0x02, 0x01, 0x09, 0x00, 0x04, 0xCE, 0x05, 
39360
  0x2E, 0x73, 0x6C, 0x6F, 0x74, 0xDA, 0x04, 0xDA, 0x84, 0x3D, 0x00, 0x09, 0x00, 0xCF, 0x03, 0x6E, 
39361
  0x74, 0x68, 0x00, 0x09, 0x01, 0xCF, 0x09, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x2D, 0x69, 0x64, 0x78, 
39362
  0x00, 0x09, 0x02, 0xDA, 0x84, 0xC0, 0x02, 0x07, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39363
  0x36, 0x74, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x00, 
39364
  0x03, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3A, 0x05, 
39365
  0x03, 0x04, 0x03, 0x05, 0x00, 0x00, 0x8E, 0x3F, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1A, 0x00, 
39366
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x2E, 0x63, 0x6C, 0x65, 0x61, 
39367
  0x72, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xA4, 0x01, 0xDA, 0x06, 0xCE, 
39368
  0x27, 0x28, 0x2E, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 
39369
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x72, 0x65, 
39370
  0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
39371
  0x00, 0x0A, 0x00, 0x00, 0x00, 0x07, 0x14, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x63, 0x6C, 0x65, 0x61, 
39372
  0x72, 0xDA, 0x04, 0xDA, 0x84, 0x3F, 0xDA, 0x1D, 0xDA, 0x84, 0x51, 0xDA, 0x84, 0x9F, 0xCE, 0x16, 
39373
  0x63, 0x6C, 0x65, 0x61, 0x72, 0x65, 0x64, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 
39374
  0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0xCE, 0x07, 0x20, 0x61, 0x74, 0x20, 0x70, 0x63, 0x3D, 0xDA, 
39375
  0x84, 0x58, 0x00, 0x14, 0x00, 0xDA, 0x84, 0xC9, 0x02, 0x14, 0x02, 0xDA, 0x84, 0x6D, 0x06, 0x14, 
39376
  0x04, 0xDA, 0x84, 0xA5, 0x0A, 0x14, 0x06, 0xDA, 0x84, 0x71, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 
39377
  0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x35, 0x03, 
39378
  0x02, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x31, 0x05, 0x00, 0x00, 0x35, 0x05, 
39379
  0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 
39380
  0x08, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x08, 0x04, 0x09, 0x31, 0x06, 
39381
  0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x36, 0x08, 0x00, 0x00, 0x8E, 0xA7, 0x0E, 0x00, 0x0E, 0x00, 
39382
  0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
39383
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39384
  0x03, 0x00, 0x03, 0xDA, 0x84, 0x45, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 
39385
  0x27, 0x01, 0xDA, 0x06, 0xCE, 0x23, 0x28, 0x2E, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x6F, 
39386
  0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x73, 0x74, 
39387
  0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0xDA, 0x08, 0xDA, 0x84, 0x3F, 0xCF, 0x05, 
39388
  0x2E, 0x6E, 0x65, 0x78, 0x74, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xAD, 
39389
  0x01, 0xDA, 0x06, 0xCE, 0x2A, 0x28, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 
39390
  0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x6F, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
39391
  0x65, 0x78, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 
39392
  0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x01, 0x10, 0x00, 0x06, 
39393
  0xCE, 0x05, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x04, 0xDA, 0x84, 0x41, 0x00, 0x10, 0x00, 0xDA, 
39394
  0x32, 0x00, 0x10, 0x01, 0xDA, 0x84, 0xD4, 0x00, 0x10, 0x02, 0xDA, 0x7E, 0x01, 0x0F, 0x03, 0xDA, 
39395
  0x43, 0x01, 0x06, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x43, 0x06, 0x0F, 0x05, 
39396
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x42, 0x28, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 
39397
  0x00, 0x1E, 0x00, 0x03, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x01, 
39398
  0x00, 0x1B, 0x05, 0x04, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x07, 0x00, 0x2C, 0x07, 0x00, 
39399
  0x00, 0x35, 0x06, 0x07, 0x00, 0x28, 0x07, 0x00, 0x00, 0x37, 0x02, 0x06, 0x07, 0x05, 0x03, 0x03, 
39400
  0x01, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x8E, 0xB0, 0x03, 0x01, 0x03, 0x00, 0x0D, 
39401
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 
39402
  0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x06, 0x2E, 0x73, 
39403
  0x74, 0x61, 0x63, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x20, 0x01, 
39404
  0xDA, 0x06, 0xCE, 0x28, 0x28, 0x2E, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x50, 0x72, 
39405
  0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
39406
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 
39407
  0xCD, 0x00, 0xFC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x01, 0x01, 0xCE, 0x06, 
39408
  0x2E, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x81, 0x90, 0xDA, 0x83, 0xA6, 0xDA, 0x80, 
39409
  0xDC, 0x00, 0x0B, 0x00, 0xDA, 0x84, 0xDC, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x30, 
39410
  0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 
39411
  0x03, 0x04, 0x00, 0x28, 0x04, 0x00, 0x00, 0x37, 0x02, 0x03, 0x04, 0x2C, 0x03, 0x00, 0x00, 0x36, 
39412
  0x03, 0x00, 0x00, 0xCD, 0x00, 0xD8, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x06, 0x0D, 0x00, 0xDA, 
39413
  0x83, 0xA3, 0xDA, 0x04, 0xD0, 0x09, 0x65, 0x72, 0x72, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xDA, 
39414
  0x82, 0xC9, 0xDA, 0x84, 0x41, 0xDA, 0x84, 0x54, 0xDA, 0x81, 0x6E, 0xD8, 0x10, 0x64, 0x65, 0x62, 
39415
  0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2C, 0x00, 0x00, 
39416
  0x00, 0x2A, 0x01, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 
39417
  0x00, 0x2C, 0x02, 0x02, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x35, 0x02, 0x03, 
39418
  0x00, 0x2C, 0x03, 0x04, 0x00, 0x33, 0x01, 0x02, 0x03, 0x2C, 0x03, 0x05, 0x00, 0x36, 0x03, 0x00, 
39419
  0x00, 0x8E, 0x24, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x34, 0x00, 0x34, 
39420
  0x00, 0x3D, 0x00, 0x3D, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x8E, 0x23, 0x03, 0x00, 
39421
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
39422
  0x03, 0x00, 0x03, 0xCF, 0x06, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
39423
  0x03, 0x00, 0xDA, 0x04, 0x8E, 0x9B, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x2E, 0x62, 0x72, 0x65, 
39424
  0x61, 0x6B, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 
39425
  0x69, 0x6E, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
39426
  0x6E, 0x74, 0x20, 0x70, 0x63, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
39427
  0x00, 0x00, 0x00, 0x07, 0x14, 0x00, 0x04, 0xCE, 0x06, 0x2E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 
39428
  0x04, 0xDA, 0x84, 0x3F, 0xDA, 0x1D, 0xDA, 0x84, 0x51, 0xDA, 0x84, 0xBA, 0xCE, 0x12, 0x73, 0x65, 
39429
  0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 
39430
  0xDA, 0x84, 0xD0, 0xDA, 0x84, 0x58, 0x00, 0x14, 0x00, 0xDA, 0x84, 0xE4, 0x02, 0x14, 0x02, 0xDA, 
39431
  0x84, 0x6D, 0x06, 0x14, 0x04, 0xDA, 0x84, 0xA5, 0x0A, 0x14, 0x06, 0xDA, 0x84, 0x71, 0x2C, 0x02, 
39432
  0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x31, 0x03, 
39433
  0x00, 0x00, 0x35, 0x03, 0x02, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x31, 0x05, 
39434
  0x00, 0x00, 0x35, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 
39435
  0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x08, 
39436
  0x04, 0x09, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x36, 0x08, 0x00, 0x00, 0x8E, 0x9E, 
39437
  0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0B, 0x00, 
39438
  0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
39439
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 
39440
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x2D, 0x01, 0xDA, 0x06, 0xCE, 0x25, 
39441
  0x28, 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 
39442
  0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x62, 0x69, 0x6E, 
39443
  0x64, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
39444
  0x00, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x2E, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0xDA, 
39445
  0x04, 0xDA, 0x84, 0x3F, 0xD0, 0x06, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x73, 0x00, 0x06, 0x00, 0xDA, 
39446
  0x32, 0x00, 0x06, 0x01, 0xDA, 0x84, 0xEB, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 
39447
  0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x3B, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x8E, 
39448
  0x30, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x84, 0x43, 0xD3, 
39449
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x16, 0x01, 0xDA, 0x06, 0xCE, 0x2F, 0x28, 
39450
  0x2E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
39451
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x62, 
39452
  0x65, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x64, 0x2E, 0xDA, 0x08, 
39453
  0xDA, 0x84, 0x41, 0xCF, 0x06, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x63, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
39454
  0x03, 0x00, 0xDA, 0x04, 0x8E, 0xB5, 0x01, 0xDA, 0x06, 0xCE, 0x4C, 0x28, 0x2E, 0x6E, 0x65, 0x78, 
39455
  0x74, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x6F, 0x20, 0x74, 
39456
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 
39457
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2C, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 
39458
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x72, 0x65, 0x61, 
39459
  0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
39460
  0x04, 0x01, 0x00, 0x01, 0x02, 0x05, 0x00, 0x02, 0xCE, 0x06, 0x2E, 0x6E, 0x65, 0x78, 0x74, 0x63, 
39461
  0xDA, 0x04, 0xDA, 0x84, 0xCD, 0xDA, 0x84, 0xD8, 0x00, 0x05, 0x00, 0xDA, 0x32, 0x00, 0x05, 0x01, 
39462
  0xDA, 0x84, 0xF5, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 
39463
  0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0x8E, 0xB8, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
39464
  0x00, 0x03, 0xCF, 0x05, 0x2E, 0x73, 0x74, 0x65, 0x70, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
39465
  0xDA, 0x04, 0x8E, 0xBB, 0x01, 0xDA, 0x06, 0xCE, 0x30, 0x28, 0x2E, 0x73, 0x74, 0x65, 0x70, 0x20, 
39466
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 
39467
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 
39468
  0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0xDA, 0x08, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
39469
  0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x02, 0x11, 0x00, 0x06, 0xCE, 0x05, 0x2E, 0x73, 0x74, 0x65, 
39470
  0x70, 0xDA, 0x04, 0xDA, 0x84, 0x41, 0xD8, 0x0A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 
39471
  0x65, 0x70, 0x00, 0x11, 0x00, 0xDA, 0x32, 0x00, 0x11, 0x01, 0xDA, 0x84, 0xFB, 0x00, 0x11, 0x02, 
39472
  0xDA, 0x7E, 0x01, 0x10, 0x03, 0xDA, 0x43, 0x01, 0x06, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
39473
  0x30, 0x36, 0x45, 0x06, 0x10, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x44, 0x28, 
39474
  0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x1B, 0x04, 0x00, 0x00, 0x1C, 
39475
  0x02, 0x00, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x23, 0x04, 0x03, 0x05, 0x1E, 
39476
  0x04, 0x08, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 
39477
  0x07, 0x01, 0x00, 0x35, 0x02, 0x07, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xF8, 0xFF, 0xFF, 0x03, 
39478
  0x02, 0x00, 0x00, 0x8E, 0xBE, 0x03, 0x01, 0x03, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
39479
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
39480
  0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xDA, 0x84, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
39481
  0x03, 0x00, 0xDA, 0x04, 0x8E, 0x32, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x2E, 0x66, 0x6E, 0x20, 
39482
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
39483
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
39484
  0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x9C, 0xDA, 0x84, 0x56, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
39485
  0x00, 0xDA, 0x04, 0x8E, 0x1B, 0x01, 0xDA, 0x06, 0xCE, 0x31, 0x28, 0x2E, 0x73, 0x69, 0x67, 0x6E, 
39486
  0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
39487
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x62, 0x65, 0x69, 0x6E, 
39488
  0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x54, 
39489
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
39490
  0x12, 0x00, 0x09, 0xCE, 0x0A, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 0xDA, 
39491
  0x04, 0x00, 0x12, 0x00, 0xCF, 0x03, 0x74, 0x61, 0x62, 0x00, 0x12, 0x01, 0xCF, 0x05, 0x63, 0x6F, 
39492
  0x6C, 0x6C, 0x73, 0x00, 0x12, 0x02, 0xCF, 0x0A, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 0x6E, 
39493
  0x74, 0x6F, 0x00, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x32, 0x02, 0x11, 
39494
  0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x31, 0x05, 0x11, 0x05, 0xDA, 0x83, 0x1D, 
39495
  0x05, 0x0F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x30, 0x08, 0x0F, 0x06, 0xCF, 
39496
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x5A, 0x0A, 0x0F, 0x03, 0xDA, 0x82, 0xAD, 0x28, 0x04, 
39497
  0x00, 0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x0E, 0x00, 0x3A, 0x03, 
39498
  0x01, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x03, 0x05, 0x06, 0x1B, 0x06, 
39499
  0x03, 0x00, 0x1F, 0x06, 0x06, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x3A, 0x07, 0x05, 0x03, 0x3C, 0x00, 
39500
  0x03, 0x07, 0x49, 0x06, 0x05, 0x06, 0x1C, 0xFB, 0xFF, 0xFF, 0x49, 0x04, 0x01, 0x04, 0x1C, 0xF3, 
39501
  0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x86, 0x91, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39502
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x12, 0x00, 
39503
  0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCE, 0x0F, 0x65, 
39504
  0x6E, 0x74, 0x65, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5B, 0xCE, 0x12, 
39505
  0x5D, 0x20, 0x2D, 0x20, 0x28, 0x71, 0x75, 0x69, 0x74, 0x29, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 
39506
  0x69, 0x74, 0xDA, 0x84, 0x58, 0xDA, 0x83, 0xEB, 0xD1, 0x01, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 
39507
  0x00, 0x07, 0x03, 0x01, 0x03, 0x00, 0x07, 0x00, 0x01, 0x05, 0xCE, 0x12, 0x64, 0x65, 0x62, 0x75, 
39508
  0x67, 0x67, 0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 0x04, 
39509
  0x00, 0x07, 0x00, 0xDA, 0x83, 0x4A, 0x00, 0x07, 0x01, 0xDA, 0x83, 0x1B, 0x00, 0x07, 0x02, 0xCF, 
39510
  0x07, 0x69, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x00, 0x07, 0x03, 0xCF, 0x12, 0x64, 0x65, 0x62, 
39511
  0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x04, 
39512
  0x07, 0x05, 0xDA, 0x83, 0x1B, 0x20, 0x01, 0x03, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x1C, 0x02, 0x00, 
39513
  0x00, 0x1B, 0x04, 0x01, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x30, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 
39514
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x11, 0x3D, 0x01, 0x01, 0x0A, 0xDA, 
39515
  0x84, 0x34, 0xDA, 0x04, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xDA, 0x08, 0xDA, 0x81, 0x96, 0xDA, 
39516
  0x83, 0x33, 0xCE, 0x02, 0x25, 0x71, 0xDA, 0x81, 0x8D, 0xDA, 0x80, 0xDC, 0xDA, 0x0E, 0xCE, 0x18, 
39517
  0x62, 0x61, 0x64, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
39518
  0x74, 0x20, 0x25, 0x76, 0x3A, 0x20, 0x25, 0x76, 0xDA, 0x84, 0x60, 0xD8, 0x06, 0x65, 0x66, 0x6C, 
39519
  0x75, 0x73, 0x68, 0xDA, 0x83, 0xEB, 0xDA, 0x81, 0x6E, 0xDA, 0x84, 0xE3, 0xD0, 0x05, 0x64, 0x65, 
39520
  0x62, 0x75, 0x67, 0xDA, 0x84, 0x33, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 
39521
  0x01, 0xDA, 0x83, 0x1B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x85, 0x18, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
39522
  0x85, 0x19, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x83, 0x1B, 0x00, 0x3D, 0x00, 0xDA, 0x31, 0x00, 0x3D, 
39523
  0x01, 0xDA, 0x1E, 0x03, 0x3D, 0x03, 0xCF, 0x02, 0x66, 0x73, 0x1A, 0x2B, 0x05, 0xCF, 0x07, 0x5F, 
39524
  0x30, 0x30, 0x30, 0x30, 0x35, 0x78, 0x1D, 0x2B, 0x08, 0xDA, 0x83, 0x62, 0x31, 0x00, 0x00, 0x00, 
39525
  0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x01, 0x00, 
39526
  0x25, 0x04, 0x05, 0x03, 0x1E, 0x04, 0x28, 0x00, 0x2D, 0x05, 0x00, 0x02, 0x1E, 0x05, 0x25, 0x00, 
39527
  0x2C, 0x05, 0x02, 0x00, 0x32, 0x05, 0x01, 0x00, 0x44, 0x05, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x00, 
39528
  0x2C, 0x07, 0x03, 0x00, 0x3C, 0x06, 0x07, 0x05, 0x2D, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 
39529
  0x3B, 0x05, 0x06, 0x07, 0x20, 0x05, 0x02, 0x00, 0x2C, 0x05, 0x05, 0x00, 0x1B, 0x06, 0x05, 0x00, 
39530
  0x30, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x05, 0x07, 0x00, 0x2C, 0x08, 0x07, 0x00, 
39531
  0x35, 0x07, 0x08, 0x00, 0x1B, 0x05, 0x07, 0x00, 0x28, 0x08, 0x00, 0x00, 0x37, 0x07, 0x05, 0x08, 
39532
  0x1B, 0x08, 0x07, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x35, 0x07, 0x09, 0x00, 
39533
  0x2C, 0x0A, 0x08, 0x00, 0x25, 0x09, 0x07, 0x0A, 0x1E, 0x09, 0x08, 0x00, 0x2C, 0x07, 0x09, 0x00, 
39534
  0x33, 0x07, 0x06, 0x08, 0x2C, 0x0A, 0x0A, 0x00, 0x35, 0x07, 0x0A, 0x00, 0x2C, 0x0A, 0x0B, 0x00, 
39535
  0x35, 0x07, 0x0A, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x0C, 0x00, 0x36, 0x05, 0x00, 0x00, 
39536
  0x04, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x0D, 0x00, 0x33, 0x00, 0x01, 0x05, 0x2C, 0x07, 0x0E, 0x00, 
39537
  0x35, 0x05, 0x07, 0x00, 0x2C, 0x07, 0x0B, 0x00, 0x35, 0x05, 0x07, 0x00, 0x2D, 0x07, 0x00, 0x00, 
39538
  0x2C, 0x08, 0x0F, 0x00, 0x3B, 0x05, 0x07, 0x08, 0x1E, 0x05, 0x05, 0x00, 0x2D, 0x07, 0x00, 0x05, 
39539
  0x32, 0x00, 0x07, 0x00, 0x2C, 0x07, 0x10, 0x00, 0x36, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
39540
  0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0xDA, 
39541
  0x81, 0x99, 0xDA, 0x04, 0xD8, 0x06, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xBF, 0xFF, 0x00, 0x06, 
39542
  0xCF, 0x02, 0x70, 0x66, 0x2D, 0x00, 0x00, 0x06, 0x2D, 0x01, 0x00, 0x01, 0x32, 0x00, 0x01, 0x00, 
39543
  0x2C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0xD5, 0x0B, 0x00, 0x0B, 0x00, 
39544
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x8B, 0xCF, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x09, 
39545
  0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
39546
  0x00, 0x09, 0x00, 0x09, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 
39547
  0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
39548
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x0D, 
39549
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0xBF, 0xFC, 0x09, 0x05, 0x09, 0x00, 
39550
  0x09, 0xBF, 0xF8, 0x07, 0x0A, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 
39551
  0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 
39552
  0x00, 0x09, 0x42, 0x00, 0x00, 0x00, 0x8B, 0xCD, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39553
  0x03, 0x01, 0x03, 0x00, 0x03, 0x25, 0x00, 0x00, 0x00, 0xD0, 0x03, 0x65, 0x6E, 0x76, 0xD0, 0x06, 
39554
  0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0xD0, 0x09, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 
39555
  0x73, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x42, 0x01, 0x01, 0x01, 0x25, 0x81, 0x19, 0x00, 
39556
  0x05, 0x2E, 0xCE, 0x0B, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xDA, 
39557
  0x04, 0xD0, 0x12, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x77, 0x61, 
39558
  0x72, 0x6E, 0x69, 0x6E, 0x67, 0xDA, 0x85, 0x23, 0xD0, 0x0B, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 
39559
  0x66, 0x6C, 0x61, 0x67, 0x73, 0xD0, 0x08, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0xD0, 
39560
  0x04, 0x72, 0x65, 0x61, 0x64, 0xD0, 0x09, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 
39561
  0xDA, 0x85, 0x22, 0xD0, 0x06, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0xDA, 0x81, 0xC5, 0xD0, 0x0E, 
39562
  0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD0, 0x10, 
39563
  0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 
39564
  0xDA, 0x85, 0x24, 0xDA, 0x83, 0x54, 0xDA, 0x83, 0x55, 0xDA, 0x84, 0xE3, 0xD7, 0x00, 0xCD, 0x00, 
39565
  0xDC, 0x00, 0x00, 0x0C, 0x05, 0x03, 0x05, 0x0B, 0x20, 0x00, 0x07, 0xCE, 0x0B, 0x62, 0x61, 0x64, 
39566
  0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0xE2, 0xDA, 0x81, 0x26, 
39567
  0xCE, 0x05, 0x1B, 0x5B, 0x33, 0x31, 0x6D, 0xDA, 0x81, 0x6E, 0xCE, 0x01, 0x3A, 0xCE, 0x11, 0x3A, 
39568
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 
39569
  0xDA, 0x84, 0x65, 0xDA, 0x84, 0xE3, 0xCE, 0x04, 0x1B, 0x5B, 0x30, 0x6D, 0xDA, 0x84, 0x58, 0xDA, 
39570
  0x85, 0x1C, 0x00, 0x20, 0x00, 0xDA, 0x83, 0x1E, 0x00, 0x20, 0x01, 0xCF, 0x06, 0x6D, 0x61, 0x63, 
39571
  0x72, 0x6F, 0x66, 0x00, 0x20, 0x02, 0xCF, 0x05, 0x77, 0x68, 0x65, 0x72, 0x65, 0x00, 0x20, 0x03, 
39572
  0xCF, 0x04, 0x6C, 0x69, 0x6E, 0x65, 0x00, 0x20, 0x04, 0xCF, 0x03, 0x63, 0x6F, 0x6C, 0x00, 0x20, 
39573
  0x05, 0xCF, 0x0B, 0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x04, 0x20, 
39574
  0x07, 0xCF, 0x02, 0x65, 0x63, 0x2C, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 
39575
  0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x02, 
39576
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x08, 0x02, 
39577
  0x09, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x03, 0x09, 0x04, 0x2C, 0x09, 0x05, 0x00, 0x31, 0x09, 0x00, 
39578
  0x00, 0x2C, 0x0A, 0x06, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x01, 0x06, 0x00, 0x2C, 0x08, 0x03, 
39579
  0x00, 0x33, 0x01, 0x00, 0x08, 0x2C, 0x0A, 0x07, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x1C, 0x08, 0x00, 
39580
  0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x08, 0x00, 
39581
  0x00, 0x32, 0x00, 0x08, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x08, 0x0A, 
39582
  0x00, 0x36, 0x08, 0x00, 0x00, 0x89, 0xEA, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 
39583
  0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39584
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 
39585
  0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x02, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 
39586
  0x00, 0x05, 0x00, 0x05, 0x01, 0x03, 0x00, 0x03, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 
39587
  0x05, 0x03, 0x05, 0x0B, 0x1B, 0x00, 0x07, 0xCE, 0x0C, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 
39588
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0xE2, 0xDA, 0x81, 0x26, 0xCE, 0x05, 0x1B, 
39589
  0x5B, 0x33, 0x33, 0x6D, 0xDA, 0x81, 0x6E, 0xDA, 0x85, 0x32, 0xCE, 0x13, 0x3A, 0x20, 0x63, 0x6F, 
39590
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x28, 0xCE, 
39591
  0x03, 0x29, 0x3A, 0x20, 0xDA, 0x84, 0x65, 0xDA, 0x85, 0x34, 0xDA, 0x84, 0x58, 0xDA, 0x85, 0x1C, 
39592
  0x00, 0x1B, 0x00, 0xDA, 0x83, 0x1E, 0x00, 0x1B, 0x01, 0xDA, 0x83, 0x1B, 0x00, 0x1B, 0x02, 0xDA, 
39593
  0x85, 0x36, 0x00, 0x1B, 0x03, 0xDA, 0x85, 0x37, 0x00, 0x1B, 0x04, 0xDA, 0x85, 0x38, 0x00, 0x1B, 
39594
  0x05, 0xCF, 0x0C, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x04, 
39595
  0x1B, 0x07, 0xDA, 0x85, 0x3A, 0x2C, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 
39596
  0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x02, 
39597
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x08, 0x02, 
39598
  0x09, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x03, 0x09, 0x04, 0x2C, 0x09, 0x05, 0x00, 0x2C, 0x0A, 0x06, 
39599
  0x00, 0x33, 0x09, 0x01, 0x0A, 0x2C, 0x0A, 0x07, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x07, 0x03, 
39600
  0x00, 0x2C, 0x08, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x32, 0x00, 0x08, 
39601
  0x00, 0x2C, 0x0B, 0x09, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x36, 0x08, 0x00, 
39602
  0x00, 0x89, 0xDB, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 0x05, 0x00, 0x05, 
39603
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39604
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x08, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
39605
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
39606
  0x0D, 0x02, 0x02, 0x02, 0x0B, 0x21, 0x00, 0x06, 0xCE, 0x09, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 
39607
  0x72, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x84, 0xE2, 0xDA, 0x81, 0x26, 0xD0, 0x05, 0x77, 0x68, 0x65, 
39608
  0x72, 0x65, 0xDA, 0x85, 0x31, 0xDA, 0x81, 0x6E, 0xDA, 0x0E, 0xDA, 0x85, 0x34, 0xDA, 0x85, 0x32, 
39609
  0xCE, 0x0F, 0x3A, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x3A, 
39610
  0x20, 0xDA, 0x84, 0x58, 0xDA, 0x85, 0x1C, 0x00, 0x21, 0x00, 0xDA, 0x15, 0x00, 0x21, 0x01, 0xDA, 
39611
  0x85, 0x36, 0x00, 0x21, 0x02, 0xCF, 0x09, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 
39612
  0x04, 0x21, 0x04, 0xDA, 0x85, 0x3A, 0x09, 0x21, 0x07, 0xDA, 0x85, 0x37, 0x0B, 0x21, 0x08, 0xDA, 
39613
  0x85, 0x38, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 
39614
  0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 
39615
  0x06, 0x00, 0x3D, 0x06, 0x05, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x3D, 0x06, 0x05, 0x01, 0x1B, 0x08, 
39616
  0x06, 0x00, 0x1E, 0x04, 0x03, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x06, 
39617
  0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x04, 
39618
  0x03, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 
39619
  0x07, 0x00, 0x33, 0x06, 0x01, 0x0B, 0x2C, 0x0B, 0x07, 0x00, 0x33, 0x07, 0x0B, 0x08, 0x2C, 0x0B, 
39620
  0x08, 0x00, 0x33, 0x0B, 0x09, 0x0A, 0x2C, 0x0C, 0x09, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x06, 
39621
  0x0A, 0x00, 0x36, 0x06, 0x00, 0x00, 0x89, 0xCA, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
39622
  0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 
39623
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x07, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
39624
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF7, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39625
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 0x03, 0xD0, 0x0B, 0x3C, 0x61, 0x6E, 0x6F, 
39626
  0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x3E, 0xD0, 0x03, 0x79, 0x64, 0x74, 0xDA, 0x82, 0x30, 0xD0, 
39627
  0x0C, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xD0, 0x04, 0x65, 
39628
  0x78, 0x69, 0x74, 0xD0, 0x0A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 
39629
  0x82, 0x58, 0xDA, 0x0B, 0xD0, 0x07, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0xD0, 0x07, 0x70, 
39630
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xD0, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xD0, 0x08, 
39631
  0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xDA, 0x81, 0x6E, 0xDA, 0x81, 0x61, 0xD0, 0x06, 
39632
  0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0xD0, 0x05, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xDA, 0x2B, 0xD0, 
39633
  0x03, 0x65, 0x6F, 0x66, 0xDA, 0x0E, 0x00, 0x81, 0x19, 0x00, 0xCF, 0x04, 0x6F, 0x70, 0x74, 0x73, 
39634
  0x00, 0x81, 0x19, 0x01, 0xCF, 0x0B, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 
39635
  0x74, 0x02, 0x81, 0x19, 0x03, 0xCF, 0x12, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
39636
  0x65, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x05, 0x81, 0x19, 0x04, 0xCF, 0x06, 0x63, 
39637
  0x68, 0x75, 0x6E, 0x6B, 0x73, 0x08, 0x81, 0x19, 0x05, 0xCF, 0x05, 0x67, 0x75, 0x61, 0x72, 0x64, 
39638
  0x0B, 0x81, 0x19, 0x06, 0xCF, 0x06, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x0E, 0x81, 0x19, 0x07, 
39639
  0xCF, 0x04, 0x72, 0x65, 0x61, 0x64, 0x11, 0x81, 0x19, 0x08, 0xCF, 0x09, 0x65, 0x76, 0x61, 0x6C, 
39640
  0x75, 0x61, 0x74, 0x6F, 0x72, 0x14, 0x81, 0x19, 0x09, 0xDA, 0x83, 0x4A, 0x17, 0x81, 0x19, 0x0A, 
39641
  0xCF, 0x06, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x1A, 0x81, 0x19, 0x0B, 0xCF, 0x0D, 0x64, 0x65, 
39642
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 0x77, 0x68, 0x65, 0x72, 0x65, 0x1D, 0x81, 0x19, 0x0C, 0xCF, 
39643
  0x0E, 0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
39644
  0x81, 0x19, 0x0D, 0xCF, 0x10, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 
39645
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x23, 0x81, 0x19, 0x0E, 0xCF, 0x08, 0x6F, 0x6E, 0x73, 0x74, 0x61, 
39646
  0x74, 0x75, 0x73, 0x2A, 0x30, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x31, 0x33, 
39647
  0x81, 0x19, 0x0F, 0xDA, 0x83, 0x4A, 0x39, 0x81, 0x19, 0x11, 0xDA, 0x85, 0x55, 0x3E, 0x81, 0x19, 
39648
  0x13, 0xDA, 0x85, 0x5E, 0x43, 0x81, 0x19, 0x15, 0xDA, 0x85, 0x5D, 0x48, 0x81, 0x19, 0x17, 0xDA, 
39649
  0x85, 0x54, 0x4D, 0x81, 0x19, 0x19, 0xDA, 0x85, 0x5C, 0x53, 0x81, 0x19, 0x1B, 0xDA, 0x85, 0x59, 
39650
  0x58, 0x81, 0x19, 0x1D, 0xDA, 0x85, 0x5B, 0x5D, 0x81, 0x19, 0x1F, 0xDA, 0x85, 0x56, 0x5E, 0x81, 
39651
  0x19, 0x20, 0xDA, 0x85, 0x36, 0x66, 0x81, 0x19, 0x22, 0xDA, 0x83, 0x1C, 0x68, 0x81, 0x19, 0x24, 
39652
  0xCF, 0x05, 0x65, 0x76, 0x61, 0x6C, 0x31, 0x76, 0x7D, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
39653
  0x30, 0x35, 0x63, 0x7D, 0x81, 0x19, 0x26, 0xDA, 0x15, 0x80, 0x81, 0x81, 0x19, 0x28, 0xCF, 0x09, 
39654
  0x70, 0x2D, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0x80, 0x85, 0x81, 0x19, 0x2A, 0xCF, 0x09, 
39655
  0x70, 0x2D, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x80, 0x89, 0x81, 0x19, 0x2C, 0xCF, 0x08, 
39656
  0x70, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x80, 0x8D, 0x81, 0x19, 0x2E, 0xCF, 0x0A, 0x70, 
39657
  0x2D, 0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0x80, 0x8F, 0x81, 0x19, 0x30, 0xCF, 0x09, 
39658
  0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x80, 0x91, 0x81, 0x19, 0x32, 0xCF, 0x07, 
39659
  0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x80, 0x95, 0x81, 0x19, 0x34, 0xCF, 0x03, 0x62, 0x75, 
39660
  0x66, 0x80, 0x96, 0x81, 0x19, 0x35, 0xCF, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2D, 0x6E, 
39661
  0x6F, 0x74, 0x2D, 0x64, 0x6F, 0x6E, 0x65, 0x80, 0xA2, 0x80, 0xF9, 0x37, 0xCF, 0x07, 0x5F, 0x30, 
39662
  0x30, 0x30, 0x30, 0x35, 0x64, 0x80, 0xB5, 0x80, 0xF9, 0x39, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
39663
  0x30, 0x35, 0x65, 0x80, 0xB8, 0x80, 0xF9, 0x3A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
39664
  0x66, 0x80, 0xBB, 0x80, 0xF9, 0x3B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x67, 0x80, 
39665
  0xBB, 0x80, 0xC9, 0x39, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x69, 0x80, 0xBF, 0x80, 
39666
  0xC6, 0x3E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x68, 0x80, 0xC9, 0x80, 0xD1, 0x3B, 
39667
  0xCF, 0x09, 0x6E, 0x65, 0x77, 0x2D, 0x77, 0x68, 0x65, 0x72, 0x65, 0x80, 0xD2, 0x80, 0xF9, 0x3C, 
39668
  0xCF, 0x06, 0x70, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x80, 0xD4, 0x80, 0xF9, 0x3E, 0xDA, 0x37, 0x2C, 
39669
  0x03, 0x00, 0x00, 0x3A, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x3A, 
39670
  0x02, 0x00, 0x04, 0x1B, 0x04, 0x02, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x3A, 0x02, 0x00, 0x05, 0x1B, 
39671
  0x05, 0x02, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x3A, 0x02, 0x00, 0x06, 0x1B, 0x06, 0x02, 0x00, 0x2C, 
39672
  0x07, 0x04, 0x00, 0x3A, 0x02, 0x00, 0x07, 0x1B, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x3A, 
39673
  0x02, 0x00, 0x08, 0x1B, 0x08, 0x02, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x3A, 0x02, 0x00, 0x09, 0x1B, 
39674
  0x09, 0x02, 0x00, 0x2C, 0x0A, 0x07, 0x00, 0x3A, 0x02, 0x00, 0x0A, 0x1B, 0x0A, 0x02, 0x00, 0x2C, 
39675
  0x0B, 0x08, 0x00, 0x3A, 0x02, 0x00, 0x0B, 0x1B, 0x0B, 0x02, 0x00, 0x2C, 0x0C, 0x09, 0x00, 0x3A, 
39676
  0x02, 0x00, 0x0C, 0x1B, 0x0C, 0x02, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x3A, 0x02, 0x00, 0x0D, 0x1B, 
39677
  0x0D, 0x02, 0x00, 0x2C, 0x0E, 0x0B, 0x00, 0x3A, 0x02, 0x00, 0x0E, 0x1B, 0x0E, 0x02, 0x00, 0x20, 
39678
  0x09, 0x0E, 0x00, 0x2C, 0x10, 0x0C, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 
39679
  0x11, 0x0D, 0x00, 0x35, 0x10, 0x11, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1E, 0x0F, 0x03, 0x00, 0x1B, 
39680
  0x10, 0x0F, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x44, 0x11, 0x00, 0x00, 0x1B, 0x10, 0x11, 0x00, 0x1B, 
39681
  0x02, 0x10, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x02, 0x09, 0x00, 0x1B, 0x0F, 0x02, 0x00, 0x20, 
39682
  0x04, 0x04, 0x00, 0x30, 0x11, 0x00, 0x00, 0x1B, 0x10, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
39683
  0x10, 0x04, 0x00, 0x1B, 0x11, 0x10, 0x00, 0x20, 0x0E, 0x03, 0x00, 0x2C, 0x12, 0x0E, 0x00, 0x1C, 
39684
  0x02, 0x00, 0x00, 0x1B, 0x12, 0x0E, 0x00, 0x1B, 0x13, 0x12, 0x00, 0x20, 0x0D, 0x03, 0x00, 0x2C, 
39685
  0x14, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x14, 0x0D, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x20, 
39686
  0x03, 0x03, 0x00, 0x2C, 0x16, 0x10, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x16, 0x03, 0x00, 0x1B, 
39687
  0x17, 0x16, 0x00, 0x20, 0x0C, 0x03, 0x00, 0x2C, 0x18, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
39688
  0x18, 0x0C, 0x00, 0x1B, 0x19, 0x18, 0x00, 0x20, 0x08, 0x04, 0x00, 0x30, 0x1B, 0x01, 0x00, 0x1B, 
39689
  0x1A, 0x1B, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x1A, 0x08, 0x00, 0x1B, 0x1B, 0x1A, 0x00, 0x20, 
39690
  0x0B, 0x03, 0x00, 0x2C, 0x1C, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x1C, 0x0B, 0x00, 0x1B, 
39691
  0x1D, 0x1C, 0x00, 0x20, 0x05, 0x03, 0x00, 0x2C, 0x1E, 0x13, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
39692
  0x1E, 0x05, 0x00, 0x1B, 0x1F, 0x1E, 0x00, 0x1B, 0x20, 0x1D, 0x00, 0x31, 0x20, 0x00, 0x00, 0x2C, 
39693
  0x22, 0x14, 0x00, 0x35, 0x21, 0x22, 0x00, 0x1E, 0x21, 0x03, 0x00, 0x2C, 0x22, 0x15, 0x00, 0x3C, 
39694
  0x0F, 0x22, 0x20, 0x40, 0x21, 0x00, 0x00, 0x1B, 0x22, 0x21, 0x00, 0x30, 0x23, 0x02, 0x00, 0x1B, 
39695
  0x24, 0x23, 0x00, 0x1E, 0x07, 0x0E, 0x00, 0x2C, 0x26, 0x16, 0x00, 0x3A, 0x25, 0x0F, 0x26, 0x1E, 
39696
  0x25, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x32, 0x0F, 0x20, 0x00, 0x35, 0x25, 0x07, 0x00, 0x31, 
39697
  0x25, 0x00, 0x00, 0x35, 0x26, 0x24, 0x00, 0x1C, 0xF8, 0xFF, 0xFF, 0x2C, 0x25, 0x17, 0x00, 0x33, 
39698
  0x0F, 0x25, 0x0F, 0x2C, 0x25, 0x18, 0x00, 0x36, 0x25, 0x00, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 
39699
  0x25, 0x0A, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x27, 0x19, 0x00, 0x35, 0x26, 0x27, 0x00, 0x1B, 
39700
  0x25, 0x26, 0x00, 0x1B, 0x26, 0x25, 0x00, 0x2C, 0x27, 0x1A, 0x00, 0x31, 0x27, 0x00, 0x00, 0x35, 
39701
  0x27, 0x26, 0x00, 0x1B, 0x28, 0x27, 0x00, 0x2C, 0x29, 0x1B, 0x00, 0x31, 0x29, 0x00, 0x00, 0x35, 
39702
  0x29, 0x26, 0x00, 0x1B, 0x2A, 0x29, 0x00, 0x2C, 0x2B, 0x1C, 0x00, 0x31, 0x2B, 0x00, 0x00, 0x35, 
39703
  0x2B, 0x26, 0x00, 0x1B, 0x2C, 0x2B, 0x00, 0x2C, 0x2D, 0x1D, 0x00, 0x31, 0x2D, 0x00, 0x00, 0x35, 
39704
  0x2D, 0x26, 0x00, 0x1B, 0x2E, 0x2D, 0x00, 0x30, 0x2F, 0x03, 0x00, 0x1B, 0x30, 0x2F, 0x00, 0x30, 
39705
  0x31, 0x04, 0x00, 0x1B, 0x32, 0x31, 0x00, 0x2C, 0x33, 0x1E, 0x00, 0x31, 0x33, 0x00, 0x00, 0x41, 
39706
  0x33, 0x00, 0x00, 0x1B, 0x34, 0x33, 0x00, 0x29, 0x35, 0x00, 0x00, 0x1E, 0x35, 0x63, 0x00, 0x2C, 
39707
  0x36, 0x16, 0x00, 0x31, 0x36, 0x00, 0x00, 0x35, 0x36, 0x0F, 0x00, 0x1E, 0x36, 0x02, 0x00, 0x1C, 
39708
  0x5E, 0x00, 0x00, 0x31, 0x34, 0x00, 0x00, 0x2C, 0x37, 0x1F, 0x00, 0x35, 0x36, 0x37, 0x00, 0x32, 
39709
  0x34, 0x26, 0x00, 0x35, 0x36, 0x11, 0x00, 0x1B, 0x37, 0x36, 0x00, 0x2C, 0x38, 0x20, 0x00, 0x25, 
39710
  0x36, 0x37, 0x38, 0x1E, 0x36, 0x08, 0x00, 0x31, 0x26, 0x00, 0x00, 0x2C, 0x39, 0x21, 0x00, 0x35, 
39711
  0x38, 0x39, 0x00, 0x31, 0x34, 0x00, 0x00, 0x2C, 0x39, 0x1F, 0x00, 0x35, 0x38, 0x39, 0x00, 0x1C, 
39712
  0x4D, 0x00, 0x00, 0x31, 0x37, 0x00, 0x00, 0x2C, 0x3A, 0x22, 0x00, 0x35, 0x39, 0x3A, 0x00, 0x1E, 
39713
  0x39, 0x04, 0x00, 0x3F, 0x3A, 0x37, 0x00, 0x1B, 0x38, 0x3A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 
39714
  0x38, 0x00, 0x00, 0x1B, 0x39, 0x38, 0x00, 0x2B, 0x3A, 0x00, 0x00, 0x3B, 0x38, 0x37, 0x3A, 0x1B, 
39715
  0x3A, 0x38, 0x00, 0x2B, 0x3B, 0x01, 0x00, 0x3B, 0x38, 0x37, 0x3B, 0x1B, 0x3B, 0x38, 0x00, 0x1E, 
39716
  0x39, 0x0C, 0x00, 0x2B, 0x3E, 0x02, 0x00, 0x48, 0x3D, 0x3E, 0x39, 0x1B, 0x3E, 0x3D, 0x00, 0x1E, 
39717
  0x3D, 0x05, 0x00, 0x2C, 0x40, 0x08, 0x00, 0x25, 0x3F, 0x3A, 0x40, 0x1B, 0x3C, 0x3F, 0x00, 0x1C, 
39718
  0x02, 0x00, 0x00, 0x1B, 0x3C, 0x3E, 0x00, 0x1B, 0x38, 0x3C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
39719
  0x38, 0x39, 0x00, 0x1E, 0x38, 0x09, 0x00, 0x1B, 0x20, 0x3B, 0x00, 0x31, 0x3B, 0x00, 0x00, 0x2C, 
39720
  0x3D, 0x14, 0x00, 0x35, 0x3C, 0x3D, 0x00, 0x1E, 0x3C, 0x03, 0x00, 0x2C, 0x3D, 0x15, 0x00, 0x3C, 
39721
  0x0F, 0x3D, 0x3B, 0x1C, 0x28, 0x00, 0x00, 0x2B, 0x3C, 0x00, 0x00, 0x3F, 0x3D, 0x34, 0x00, 0x1B, 
39722
  0x3E, 0x3D, 0x00, 0x26, 0x3D, 0x3E, 0x00, 0x1E, 0x3D, 0x05, 0x00, 0x31, 0x26, 0x00, 0x00, 0x2C, 
39723
  0x40, 0x23, 0x00, 0x35, 0x3F, 0x40, 0x00, 0x2A, 0x35, 0x00, 0x00, 0x21, 0x3D, 0x3E, 0x3C, 0x1E, 
39724
  0x3D, 0x1D, 0x00, 0x33, 0x26, 0x34, 0x3C, 0x35, 0x3F, 0x28, 0x00, 0x06, 0x3C, 0x3C, 0x3F, 0x31, 
39725
  0x26, 0x00, 0x00, 0x35, 0x3F, 0x2E, 0x00, 0x1E, 0x3F, 0x0A, 0x00, 0x35, 0x40, 0x32, 0x00, 0x34, 
39726
  0x40, 0x00, 0x00, 0x35, 0x41, 0x24, 0x00, 0x2C, 0x40, 0x16, 0x00, 0x31, 0x40, 0x00, 0x00, 0x35, 
39727
  0x40, 0x0F, 0x00, 0x1E, 0x40, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF5, 0xFF, 0xFF, 0x31, 
39728
  0x26, 0x00, 0x00, 0x35, 0x3F, 0x2C, 0x00, 0x2C, 0x41, 0x24, 0x00, 0x25, 0x40, 0x3F, 0x41, 0x1E, 
39729
  0x40, 0x08, 0x00, 0x32, 0x26, 0x20, 0x00, 0x35, 0x3F, 0x30, 0x00, 0x2C, 0x3F, 0x16, 0x00, 0x31, 
39730
  0x3F, 0x00, 0x00, 0x35, 0x3F, 0x0F, 0x00, 0x1E, 0x3F, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 
39731
  0xE3, 0xFF, 0xFF, 0x1C, 0x9E, 0xFF, 0xFF, 0x2C, 0x36, 0x16, 0x00, 0x31, 0x36, 0x00, 0x00, 0x35, 
39732
  0x36, 0x0F, 0x00, 0x1E, 0x36, 0x02, 0x00, 0x1C, 0x14, 0x00, 0x00, 0x31, 0x26, 0x00, 0x00, 0x35, 
39733
  0x37, 0x2E, 0x00, 0x1E, 0x37, 0x0A, 0x00, 0x35, 0x38, 0x32, 0x00, 0x34, 0x38, 0x00, 0x00, 0x35, 
39734
  0x39, 0x24, 0x00, 0x2C, 0x38, 0x16, 0x00, 0x31, 0x38, 0x00, 0x00, 0x35, 0x38, 0x0F, 0x00, 0x1E, 
39735
  0x38, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF5, 0xFF, 0xFF, 0x31, 0x26, 0x00, 0x00, 0x35, 
39736
  0x37, 0x2C, 0x00, 0x2C, 0x39, 0x24, 0x00, 0x25, 0x38, 0x37, 0x39, 0x1E, 0x38, 0x03, 0x00, 0x32, 
39737
  0x26, 0x20, 0x00, 0x35, 0x37, 0x30, 0x00, 0x2C, 0x36, 0x16, 0x00, 0x28, 0x37, 0x00, 0x00, 0x3C, 
39738
  0x0F, 0x36, 0x37, 0x2C, 0x36, 0x17, 0x00, 0x33, 0x0F, 0x36, 0x0F, 0x2C, 0x36, 0x18, 0x00, 0x36, 
39739
  0x36, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x05, 0x01, 0x13, 
39740
  0xCE, 0x06, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0xDA, 0x04, 0xDA, 0x81, 0x6E, 0xD8, 0x07, 0x67, 
39741
  0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 
39742
  0x01, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
39743
  0x85, 0x55, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x85, 0x57, 
39744
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 
39745
  0x00, 0x09, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0B, 
39746
  0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 
39747
  0x5D, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x5F, 0xBF, 
39748
  0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x4A, 0x00, 0x05, 0x00, 0xDA, 0x85, 0x68, 0x00, 0x05, 0x01, 0xDA, 
39749
  0x15, 0x00, 0x05, 0x02, 0xDA, 0x85, 0x55, 0x2C, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x0F, 0x33, 
39750
  0x03, 0x00, 0x04, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x3A, 0x26, 
39751
  0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x01, 0x01, 
39752
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x02, 0xCE, 0x08, 0x65, 0x76, 0x61, 0x6C, 0x75, 
39753
  0x61, 0x74, 0x65, 0xDA, 0x04, 0x00, 0x01, 0x00, 0xDA, 0x1E, 0x00, 0x01, 0x01, 0xCF, 0x08, 0x65, 
39754
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x36, 0x00, 0x00, 0x00, 0x8A, 0x3F, 0x29, 0xCD, 0x02, 
39755
  0xFE, 0x00, 0x00, 0x0D, 0x03, 0x01, 0x03, 0x02, 0x1E, 0x01, 0x01, 0x23, 0xCE, 0x05, 0x65, 0x76, 
39756
  0x61, 0x6C, 0x31, 0xDA, 0x04, 0xDA, 0x80, 0xDC, 0xD8, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 
39757
  0x63, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x3F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
39758
  0x85, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x54, 
39759
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 
39760
  0x00, 0x06, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x08, 
39761
  0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 
39762
  0x5A, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5C, 0xBF, 
39763
  0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 
39764
  0x0F, 0xDA, 0x85, 0x5F, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
39765
  0x85, 0x55, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x85, 0x5D, 
39766
  0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 
39767
  0x00, 0x1B, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x1F, 
39768
  0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x36, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x83, 
39769
  0x1C, 0x00, 0x1E, 0x00, 0xCF, 0x06, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x00, 0x1E, 0x01, 0xDA, 
39770
  0x80, 0xCE, 0x00, 0x1E, 0x02, 0xDA, 0x83, 0x1D, 0x00, 0x1E, 0x03, 0xDA, 0x85, 0x60, 0x08, 0x1E, 
39771
  0x05, 0xDA, 0x85, 0x78, 0x09, 0x1E, 0x06, 0xCF, 0x04, 0x67, 0x6F, 0x6F, 0x64, 0x0A, 0x1E, 0x07, 
39772
  0xCF, 0x09, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x76, 0x61, 0x6C, 0x11, 0x1E, 0x08, 0xDA, 0x31, 
39773
  0x17, 0x1D, 0x0C, 0xDA, 0x7E, 0x2D, 0x05, 0x00, 0x06, 0x1E, 0x05, 0x06, 0x00, 0x31, 0x00, 0x00, 
39774
  0x00, 0x2D, 0x06, 0x00, 0x06, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x02, 0x00, 
39775
  0x00, 0x1B, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x29, 0x06, 0x00, 0x00, 0x28, 0x07, 0x00, 
39776
  0x00, 0x30, 0x08, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x1F, 0x2D, 0x0A, 0x00, 0x0F, 0x33, 0x08, 0x09, 
39777
  0x0A, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 
39778
  0x00, 0x2C, 0x0B, 0x01, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x08, 0x00, 0x37, 0x0B, 0x08, 
39779
  0x07, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x06, 0x04, 0x00, 0x32, 0x08, 0x0C, 0x00, 0x2D, 0x0B, 0x00, 
39780
  0x13, 0x35, 0x07, 0x0B, 0x00, 0x1C, 0xF6, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 
39781
  0x00, 0xD4, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0D, 0x80, 0x95, 0x02, 0x3A, 0xDA, 0x04, 0xD8, 
39782
  0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x83, 0x49, 0xDA, 
39783
  0x81, 0x5A, 0xD0, 0x0B, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0xD5, 
39784
  0x05, 0xD0, 0x04, 0x6E, 0x6F, 0x6E, 0x65, 0x00, 0xDA, 0x81, 0x84, 0xC8, 0x00, 0x00, 0x00, 0x00, 
39785
  0x00, 0x00, 0xF0, 0x7F, 0xD0, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x03, 0xD0, 0x07, 0x72, 
39786
  0x65, 0x6C, 0x61, 0x78, 0x65, 0x64, 0x01, 0xD0, 0x06, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x02, 
39787
  0xD0, 0x0A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xD0, 0x09, 0x6C, 0x69, 
39788
  0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0xDA, 0x1C, 0xDA, 0x1D, 0xDA, 0x0E, 0xD0, 0x06, 0x63, 
39789
  0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0xDA, 0x84, 0x35, 0xD0, 0x04, 0x6C, 0x69, 0x6E, 0x65, 0xBF, 0xFF, 
39790
  0x00, 0x00, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x03, 
39791
  0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 
39792
  0x56, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x58, 0xBF, 
39793
  0xFF, 0x00, 0x08, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 
39794
  0x0A, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
39795
  0x85, 0x5C, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x5E, 
39796
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x5F, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 
39797
  0x00, 0x11, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x15, 
39798
  0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 
39799
  0x5C, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x5B, 0xBF, 
39800
  0xFF, 0x00, 0x1F, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x36, 0xBF, 0xFF, 0x00, 
39801
  0x22, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x85, 0x78, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 
39802
  0x80, 0xCE, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x85, 0x60, 
39803
  0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x85, 0x78, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x85, 0x79, 0xBF, 0xFF, 
39804
  0x01, 0x07, 0xDA, 0x85, 0x7A, 0x0C, 0x80, 0x95, 0x02, 0xDA, 0x7E, 0x18, 0x6A, 0x05, 0xCF, 0x06, 
39805
  0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0x1C, 0x6A, 0x06, 0xCF, 0x0A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 
39806
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6A, 0x07, 0xCF, 0x0C, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 
39807
  0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x24, 0x29, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39808
  0x35, 0x32, 0x29, 0x6A, 0x08, 0xDA, 0x85, 0x88, 0x2D, 0x32, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
39809
  0x30, 0x30, 0x35, 0x33, 0x32, 0x6A, 0x09, 0xDA, 0x85, 0x89, 0x33, 0x6A, 0x04, 0xCF, 0x07, 0x5F, 
39810
  0x30, 0x30, 0x30, 0x30, 0x35, 0x35, 0x36, 0x6A, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39811
  0x35, 0x34, 0x3A, 0x6A, 0x0D, 0xDA, 0x83, 0x1B, 0x3C, 0x6A, 0x0E, 0xDA, 0x85, 0x37, 0x3E, 0x6A, 
39812
  0x0F, 0xDA, 0x85, 0x38, 0x40, 0x6A, 0x10, 0xDA, 0x83, 0x1E, 0x45, 0x6A, 0x0C, 0xCF, 0x03, 0x6C, 
39813
  0x76, 0x6C, 0x49, 0x4E, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x36, 0x4D, 0x52, 
39814
  0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x37, 0x5A, 0x5F, 0x0E, 0xCF, 0x07, 0x5F, 
39815
  0x30, 0x30, 0x30, 0x30, 0x35, 0x38, 0x5E, 0x63, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
39816
  0x35, 0x39, 0x7D, 0x80, 0x94, 0x05, 0xCF, 0x03, 0x65, 0x72, 0x72, 0x80, 0x80, 0x80, 0x94, 0x06, 
39817
  0xCF, 0x06, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x80, 0x83, 0x80, 0x94, 0x07, 0xCF, 0x04, 0x65, 
39818
  0x72, 0x72, 0x66, 0x80, 0x86, 0x80, 0x94, 0x08, 0xDA, 0x85, 0x37, 0x80, 0x86, 0x80, 0x8B, 0x08, 
39819
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x61, 0x80, 0x8A, 0x80, 0x8F, 0x06, 0xCF, 0x07, 
39820
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x62, 0x2D, 0x00, 0x00, 0x22, 0x31, 0x00, 0x00, 0x00, 0x2C, 
39821
  0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x01, 0x05, 0x2D, 0x02, 0x00, 0x0F, 0x2D, 
39822
  0x03, 0x00, 0x20, 0x33, 0x01, 0x02, 0x03, 0x2D, 0x01, 0x00, 0x22, 0x31, 0x01, 0x00, 0x00, 0x2C, 
39823
  0x02, 0x01, 0x00, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2D, 0x03, 0x00, 0x22, 0x31, 
39824
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 
39825
  0x58, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x0F, 0x2C, 0x06, 0x03, 0x00, 0x3B, 0x04, 0x05, 0x06, 0x20, 
39826
  0x04, 0x02, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2D, 0x06, 0x00, 0x0F, 0x2C, 
39827
  0x07, 0x05, 0x00, 0x3B, 0x04, 0x06, 0x07, 0x1B, 0x06, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x0F, 0x2C, 
39828
  0x08, 0x06, 0x00, 0x3B, 0x04, 0x07, 0x08, 0x1B, 0x07, 0x04, 0x00, 0x3B, 0x04, 0x05, 0x06, 0x20, 
39829
  0x04, 0x02, 0x00, 0x1B, 0x04, 0x06, 0x00, 0x1B, 0x08, 0x04, 0x00, 0x1E, 0x08, 0x03, 0x00, 0x1B, 
39830
  0x04, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x1B, 0x08, 0x04, 0x00, 0x3B, 
39831
  0x04, 0x05, 0x07, 0x20, 0x04, 0x02, 0x00, 0x1B, 0x04, 0x07, 0x00, 0x1B, 0x09, 0x04, 0x00, 0x1E, 
39832
  0x09, 0x03, 0x00, 0x1B, 0x04, 0x09, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x02, 0x00, 0x1B, 
39833
  0x09, 0x04, 0x00, 0x2D, 0x04, 0x00, 0x22, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x0A, 0x04, 0x0B, 0x1B, 
39834
  0x0B, 0x0A, 0x00, 0x1F, 0x0B, 0x33, 0x00, 0x3A, 0x0A, 0x04, 0x0B, 0x3D, 0x0C, 0x0A, 0x00, 0x1B, 
39835
  0x0D, 0x0C, 0x00, 0x3D, 0x0C, 0x0A, 0x01, 0x1B, 0x0E, 0x0C, 0x00, 0x3D, 0x0C, 0x0A, 0x02, 0x1B, 
39836
  0x0F, 0x0C, 0x00, 0x3D, 0x0C, 0x0A, 0x03, 0x1B, 0x10, 0x0C, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x3B, 
39837
  0x0A, 0x0C, 0x0D, 0x20, 0x0A, 0x02, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x48, 
39838
  0x0A, 0x0C, 0x08, 0x1E, 0x0A, 0x12, 0x00, 0x2A, 0x11, 0x00, 0x00, 0x2F, 0x11, 0x01, 0x06, 0x1E, 
39839
  0x0E, 0x03, 0x00, 0x1B, 0x11, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x11, 0x01, 0x01, 0x1E, 
39840
  0x0F, 0x03, 0x00, 0x1B, 0x12, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x12, 0x01, 0x02, 0x28, 
39841
  0x13, 0x00, 0x00, 0x2D, 0x14, 0x00, 0x20, 0x33, 0x10, 0x13, 0x14, 0x32, 0x11, 0x12, 0x00, 0x2D, 
39842
  0x14, 0x00, 0x15, 0x35, 0x13, 0x14, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x48, 0x11, 0x0C, 0x09, 0x1E, 
39843
  0x11, 0x0E, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x12, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 
39844
  0x12, 0x01, 0x01, 0x1E, 0x0F, 0x03, 0x00, 0x1B, 0x13, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 
39845
  0x13, 0x01, 0x02, 0x2D, 0x14, 0x00, 0x20, 0x33, 0x10, 0x0D, 0x14, 0x32, 0x12, 0x13, 0x00, 0x2D, 
39846
  0x15, 0x00, 0x17, 0x35, 0x14, 0x15, 0x00, 0x49, 0x0B, 0x04, 0x0B, 0x1C, 0xCE, 0xFF, 0xFF, 0x2D, 
39847
  0x03, 0x01, 0x06, 0x1E, 0x03, 0x29, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x35, 
39848
  0x03, 0x04, 0x00, 0x2C, 0x05, 0x08, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x08, 0x00, 0x2D, 
39849
  0x03, 0x01, 0x05, 0x2D, 0x05, 0x00, 0x0F, 0x33, 0x02, 0x03, 0x05, 0x2D, 0x03, 0x00, 0x20, 0x31, 
39850
  0x03, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x1B, 0x36, 0x03, 0x00, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 
39851
  0x03, 0x01, 0x06, 0x2C, 0x05, 0x09, 0x00, 0x3A, 0x03, 0x02, 0x05, 0x1B, 0x05, 0x03, 0x00, 0x2C, 
39852
  0x06, 0x0A, 0x00, 0x3A, 0x03, 0x02, 0x06, 0x1B, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x0B, 0x00, 0x3A, 
39853
  0x03, 0x02, 0x07, 0x1B, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x0C, 0x00, 0x3A, 0x03, 0x02, 0x08, 0x1B, 
39854
  0x08, 0x03, 0x00, 0x1E, 0x08, 0x03, 0x00, 0x1B, 0x03, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 
39855
  0x03, 0x01, 0x01, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x09, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 
39856
  0x09, 0x01, 0x02, 0x2D, 0x0A, 0x00, 0x20, 0x33, 0x05, 0x07, 0x0A, 0x32, 0x03, 0x09, 0x00, 0x2D, 
39857
  0x0A, 0x00, 0x15, 0x36, 0x0A, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x51, 
39858
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
39859
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0B, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 
39860
  0x13, 0x00, 0x0B, 0x00, 0x0B, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
39861
  0x0D, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0D, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
39862
  0x0D, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
39863
  0x1D, 0x00, 0x0D, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
39864
  0x1F, 0x00, 0x1F, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39865
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
39866
  0x0D, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x02, 0x11, 0xBF, 0xFF, 0x0F, 
39867
  0x02, 0x27, 0x00, 0x27, 0x01, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0x00, 0x53, 0x00, 0x53, 
39868
  0x00, 0x53, 0x00, 0x53, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 
39869
  0xBF, 0xFD, 0x0F, 0x04, 0x11, 0xBF, 0xFC, 0x0F, 0x04, 0x4B, 0x00, 0x4B, 0x00, 0x4B, 0x00, 0x4B, 
39870
  0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x27, 
39871
  0x00, 0x27, 0xBF, 0xFA, 0x0D, 0x00, 0x0D, 0x07, 0x0B, 0x00, 0x0B, 0x01, 0x14, 0x00, 0x14, 0x00, 
39872
  0x14, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
39873
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 0x11, 0x00, 0x11, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
39874
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
39875
  0x11, 0x01, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 
39876
  0x3E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFA, 0x0B, 0x8A, 0x4B, 
39877
  0x11, 0x00, 0x11, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
39878
  0x05, 0x01, 0x05, 0x01, 0x05, 0x03, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
39879
  0x00, 0x07, 0xBF, 0xFF, 0x05, 0x1C, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x10, 0x00, 
39880
  0x07, 0x01, 0x07, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x66, 0x00, 
39881
  0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x03, 0x0D, 0x01, 0x01, 0x25, 
39882
  0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x65, 0x72, 0x72, 0xDA, 0x04, 0xD0, 0x02, 0x79, 
39883
  0x69, 0xDA, 0x80, 0xDC, 0xD8, 0x0C, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 
39884
  0x6E, 0x76, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x53, 
39885
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 
39886
  0x00, 0x05, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x07, 
39887
  0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 
39888
  0x4A, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x5B, 0xBF, 
39889
  0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 
39890
  0x0E, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x5F, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
39891
  0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x5E, 
39892
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 
39893
  0x00, 0x19, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x1D, 
39894
  0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 
39895
  0x36, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x24, 0xDA, 0x85, 0x60, 0xBF, 
39896
  0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x61, 0xBF, 0xFF, 0x00, 0x26, 0xDA, 0x15, 0xBF, 0xFF, 0x00, 0x28, 
39897
  0xDA, 0x85, 0x62, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x85, 0x63, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x85, 
39898
  0x64, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x85, 0x65, 0x00, 0x0D, 0x00, 0xDA, 0x15, 0x00, 0x0D, 0x01, 
39899
  0xDA, 0x85, 0x36, 0x00, 0x0D, 0x02, 0xDA, 0x85, 0x66, 0x05, 0x0D, 0x03, 0xDA, 0x31, 0x30, 0x03, 
39900
  0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 
39901
  0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x2D, 0x05, 0x00, 0x0F, 0x32, 0x03, 0x05, 0x00, 0x2C, 0x06, 
39902
  0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x28, 0x07, 0x00, 0x00, 0x37, 0x06, 0x03, 0x07, 0x03, 0x06, 
39903
  0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02, 
39904
  0x24, 0xCE, 0x04, 0x63, 0x6F, 0x72, 0x6F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x52, 
39905
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 
39906
  0x00, 0x04, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x06, 
39907
  0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 
39908
  0x59, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x5A, 0xBF, 
39909
  0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 0x00, 
39910
  0x0D, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
39911
  0x85, 0x5F, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x85, 0x55, 
39912
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 
39913
  0x00, 0x17, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 0x5C, 0xBF, 0xFF, 0x00, 0x1B, 
39914
  0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x85, 
39915
  0x56, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x36, 0xBF, 0xFF, 0x00, 0x22, 0xDA, 0x83, 0x1C, 0xBF, 
39916
  0xFF, 0x00, 0x24, 0xDA, 0x85, 0x60, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x85, 0x61, 0xBF, 0xFF, 0x00, 
39917
  0x26, 0xDA, 0x15, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x85, 0x62, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x85, 
39918
  0x63, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x85, 0x64, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x85, 0x65, 0xBF, 
39919
  0xFF, 0x01, 0x00, 0xDA, 0x15, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x85, 0x36, 0xBF, 0xFF, 0x01, 0x02, 
39920
  0xDA, 0x85, 0x66, 0x2D, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x01, 0x01, 0x32, 0x00, 0x01, 0x00, 0x2D, 
39921
  0x00, 0x00, 0x19, 0x36, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x7F, 0x12, 0x00, 0x12, 0x00, 
39922
  0x12, 0x00, 0x12, 0x00, 0x12, 0x8A, 0x7F, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 
39923
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
39924
  0x03, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x01, 
39925
  0x24, 0xCE, 0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x04, 0xDA, 0x78, 0xBF, 0xFF, 
39926
  0x00, 0x00, 0xDA, 0x85, 0x52, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0x53, 0xBF, 0xFF, 0x00, 0x03, 
39927
  0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x85, 
39928
  0x56, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x85, 0x57, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x85, 0x58, 0xBF, 
39929
  0xFF, 0x00, 0x08, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 
39930
  0x0A, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x85, 0x5B, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
39931
  0x85, 0x5C, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x85, 0x5E, 
39932
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x5F, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 
39933
  0x00, 0x11, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x85, 0x5E, 0xBF, 0xFF, 0x00, 0x15, 
39934
  0xDA, 0x85, 0x5D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x85, 0x54, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x85, 
39935
  0x5C, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x85, 0x5B, 0xBF, 
39936
  0xFF, 0x00, 0x1F, 0xDA, 0x85, 0x56, 0xBF, 0xFF, 0x00, 0x20, 0xDA, 0x85, 0x36, 0xBF, 0xFF, 0x00, 
39937
  0x22, 0xDA, 0x83, 0x1C, 0xBF, 0xFF, 0x00, 0x24, 0xDA, 0x85, 0x60, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
39938
  0x85, 0x61, 0xBF, 0xFF, 0x00, 0x26, 0xDA, 0x15, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x85, 0x62, 0xBF, 
39939
  0xFF, 0x00, 0x2A, 0xDA, 0x85, 0x63, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x85, 0x64, 0xBF, 0xFF, 0x00, 
39940
  0x2E, 0xDA, 0x85, 0x65, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x85, 0x66, 0x00, 0x0F, 0x00, 0xDA, 0x85, 
39941
  0x67, 0x05, 0x0F, 0x02, 0xCF, 0x03, 0x74, 0x75, 0x70, 0x2D, 0x01, 0x00, 0x26, 0x29, 0x02, 0x00, 
39942
  0x00, 0x32, 0x01, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x2A, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 
39943
  0x00, 0x2B, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x02, 0x04, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x00, 
39944
  0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x34, 0x04, 0x00, 0x00, 0x45, 0x03, 0x00, 
39945
  0x00, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8A, 0x84, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
39946
  0x00, 0x0E, 0x00, 0x05, 0x01, 0x06, 0x00, 0x06, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 
39947
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x8A, 0x2D, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39948
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39949
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39950
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39951
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x0C, 
39952
  0x03, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 
39953
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
39954
  0x03, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
39955
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
39956
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39957
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x16, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
39958
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
39959
  0x03, 0x00, 0x03, 0x02, 0x03, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x00, 
39960
  0x05, 0x03, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x25, 0x03, 0x02, 0x0B, 0x00, 0x0B, 0x00, 
39961
  0x07, 0x00, 0x1A, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x0C, 
39962
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x03, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x15, 0x00, 0x15, 
39963
  0x00, 0x0A, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 
39964
  0x00, 0x12, 0x00, 0x03, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 
39965
  0x00, 0x13, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x05, 0x03, 0x00, 0x03, 
39966
  0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 
39967
  0x00, 0x15, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 
39968
  0x00, 0x05, 0x00, 0x05, 0x04, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
39969
  0xBF, 0xFB, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39970
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39971
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
39972
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x09, 0x09, 0x01, 
39973
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0xBF, 0xF5, 0x05, 0x0E, 0x09, 
39974
  0x01, 0x12, 0x00, 0x09, 0x01, 0x0F, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 
39975
  0x01, 0x10, 0x00, 0x09, 0x01, 0x16, 0x00, 0x16, 0x00, 0x0B, 0x01, 0x12, 0x00, 0x12, 0x00, 0x0B, 
39976
  0x01, 0x15, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x1D, 
39977
  0xBF, 0xFE, 0x0B, 0x03, 0x14, 0x00, 0x14, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x0D, 0x00, 
39978
  0x0D, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x1D, 0xBF, 0xF9, 0x09, 0xBF, 0xEA, 
39979
  0x03, 0x20, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 
39980
  0x05, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 
39981
  0x17, 0xBF, 0xFE, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 
39982
  0x00, 0x07, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
39983
  0x40, 0x80, 0xA8, 0x8A, 0x45, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x0E, 0x65, 0x78, 
39984
  0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x5B, 0xDA, 0x84, 0x5D, 0xD0, 
39985
  0x0C, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x00, 0x3C, 0x00, 
39986
  0xDA, 0x80, 0xE8, 0x00, 0x3C, 0x01, 0xDA, 0x83, 0x1B, 0x00, 0x3C, 0x02, 0xDA, 0x84, 0x32, 0x04, 
39987
  0x3C, 0x04, 0xDA, 0x83, 0x1B, 0x0B, 0x3C, 0x05, 0xCF, 0x07, 0x6E, 0x65, 0x78, 0x74, 0x65, 0x6E, 
39988
  0x76, 0x1A, 0x3C, 0x09, 0xCF, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x63, 
39989
  0x68, 0x75, 0x6E, 0x6B, 0x73, 0x20, 0x01, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x1C, 0x02, 0x00, 
39990
  0x00, 0x1B, 0x03, 0x01, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x00, 
39991
  0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 
39992
  0x00, 0x1B, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x3C, 0x05, 0x07, 0x00, 0x2C, 0x07, 0x03, 
39993
  0x00, 0x3C, 0x05, 0x07, 0x04, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 
39994
  0x00, 0x2C, 0x08, 0x05, 0x00, 0x3C, 0x05, 0x08, 0x07, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x05, 0x07, 
39995
  0x00, 0x2C, 0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 
39996
  0x00, 0x2C, 0x0A, 0x08, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x33, 0x0A, 0x04, 0x0B, 0x2C, 0x0B, 0x0A, 
39997
  0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 0x0B, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2B, 0x0D, 0x01, 
39998
  0x00, 0x06, 0x0C, 0x0D, 0x04, 0x29, 0x0D, 0x00, 0x00, 0x33, 0x05, 0x0C, 0x0D, 0x2C, 0x0E, 0x0C, 
39999
  0x00, 0x3D, 0x0E, 0x0E, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0C, 0x0D, 0x00, 0x2C, 0x0E, 0x0E, 
40000
  0x00, 0x33, 0x0C, 0x05, 0x0E, 0x2C, 0x0C, 0x0F, 0x00, 0x33, 0x09, 0x0C, 0x0D, 0x43, 0x0C, 0x00, 
40001
  0x00, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x0E, 0x10, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0C, 0x11, 
40002
  0x00, 0x2C, 0x0E, 0x12, 0x00, 0x33, 0x0C, 0x04, 0x0E, 0x2C, 0x0E, 0x0A, 0x00, 0x35, 0x0C, 0x0E, 
40003
  0x00, 0x2C, 0x0F, 0x0B, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x2C, 0x0F, 0x13, 0x00, 0x31, 0x0F, 0x00, 
40004
  0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x09, 0x1B, 
40005
  0x01, 0x0B, 0xCE, 0x0F, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x63, 0x68, 0x75, 
40006
  0x6E, 0x6B, 0x73, 0xDA, 0x04, 0xD0, 0x0A, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 
40007
  0x73, 0xD0, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0xDA, 0x85, 0x43, 0xCE, 0x06, 0x64, 0x65, 0x62, 
40008
  0x75, 0x67, 0x5B, 0xCE, 0x02, 0x5D, 0x3A, 0xDA, 0x85, 0x32, 0xDA, 0x84, 0x66, 0xDA, 0x81, 0x28, 
40009
  0xDA, 0x85, 0x73, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0xE8, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 
40010
  0x1B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x84, 0x32, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x83, 0x1B, 0xBF, 
40011
  0xFF, 0x00, 0x05, 0xDA, 0x85, 0xA0, 0x00, 0x1B, 0x00, 0xDA, 0x85, 0x68, 0x00, 0x1B, 0x01, 0xDA, 
40012
  0x15, 0x00, 0x1B, 0x02, 0xDA, 0x85, 0xA1, 0x04, 0x1B, 0x04, 0xCF, 0x06, 0x73, 0x74, 0x61, 0x74, 
40013
  0x75, 0x73, 0x0B, 0x1B, 0x05, 0xDA, 0x83, 0x1D, 0x16, 0x1B, 0x08, 0xCF, 0x04, 0x70, 0x72, 0x70, 
40014
  0x74, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x01, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 
40015
  0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 
40016
  0x00, 0x2B, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x05, 0x00, 0x1B, 0x05, 0x06, 
40017
  0x00, 0x2C, 0x07, 0x03, 0x00, 0x2D, 0x08, 0x00, 0x04, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x07, 0x08, 
40018
  0x09, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x05, 0x07, 0x04, 0x2C, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 
40019
  0x00, 0x2C, 0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2D, 0x09, 0x00, 
40020
  0x05, 0x33, 0x08, 0x00, 0x09, 0x2C, 0x09, 0x08, 0x00, 0x36, 0x09, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 
40021
  0xB9, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
40022
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
40023
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x05, 
40024
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x8B, 0xB1, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40025
  0x03, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 0x01, 
40026
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 
40027
  0x03, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x05, 0x03, 0x00, 
40028
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x31, 0x00, 0x31, 0x00, 
40029
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 
40030
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 
40031
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
40032
  0x30, 0x00, 0x00, 0x00, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xD8, 0x08, 
40033
  0x65, 0x76, 0x2F, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xCF, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 
40034
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
40035
  0x08, 0x00, 0x06, 0xCE, 0x06, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0xDA, 0x04, 0x00, 0x08, 0x00, 
40036
  0xDA, 0x82, 0x62, 0x00, 0x08, 0x01, 0xDA, 0x82, 0xAD, 0x00, 0x08, 0x02, 0xDA, 0x84, 0x6E, 0x00, 
40037
  0x08, 0x03, 0xDA, 0x81, 0x4D, 0x00, 0x08, 0x04, 0xDA, 0x85, 0xAB, 0x01, 0x08, 0x06, 0xCF, 0x03, 
40038
  0x6F, 0x6C, 0x64, 0x3B, 0x05, 0x00, 0x01, 0x1B, 0x06, 0x05, 0x00, 0x31, 0x06, 0x00, 0x00, 0x34, 
40039
  0x03, 0x00, 0x00, 0x35, 0x07, 0x02, 0x00, 0x1B, 0x08, 0x00, 0x00, 0x3C, 0x08, 0x01, 0x07, 0x03, 
40040
  0x08, 0x00, 0x00, 0x86, 0x8A, 0x0C, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 
40041
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 
40042
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 
40043
  0x0A, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 
40044
  0x02, 0xFE, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x01, 0x02, 0xCE, 0x0A, 0x63, 
40045
  0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 0x31, 
40046
  0x00, 0x02, 0x01, 0xCF, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x30, 
40047
  0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 
40048
  0x01, 0x06, 0x01, 0x03, 0xDA, 0x85, 0xB3, 0xDA, 0x04, 0xDA, 0x82, 0x51, 0xBF, 0xFF, 0x00, 0x00, 
40049
  0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x85, 0xB4, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x31, 0x00, 
40050
  0x00, 0x00, 0x2D, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 
40051
  0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x21, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 
40052
  0x17, 0x00, 0x17, 0x00, 0x17, 0x83, 0x21, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xD7, 0x00, 
40053
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x02, 0x02, 0x02, 0x07, 0x37, 0x00, 0x0C, 0xCE, 0x0A, 0x74, 
40054
  0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x2C, 0xD7, 
40055
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 0x02, 0x11, 0x00, 0x07, 0xCE, 0x10, 
40056
  0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 
40057
  0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x02, 0x03, 0x00, 0x10, 0x00, 
40058
  0x07, 0xCE, 0x0A, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0xDA, 0x04, 0x00, 
40059
  0x10, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x10, 0x01, 0xDA, 0x33, 0x00, 0x10, 0x02, 0xCF, 0x04, 0x64, 
40060
  0x66, 0x6C, 0x74, 0x00, 0x10, 0x03, 0xCF, 0x0A, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x69, 0x6E, 0x64, 
40061
  0x65, 0x78, 0x00, 0x10, 0x04, 0xDA, 0x3A, 0x01, 0x10, 0x05, 0xDA, 0x39, 0x08, 0x0F, 0x07, 0xDA, 
40062
  0x82, 0x1E, 0x28, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x07, 
40063
  0x00, 0x00, 0x25, 0x06, 0x04, 0x07, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 0x06, 
40064
  0x01, 0x04, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 
40065
  0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x05, 
40066
  0x00, 0x00, 0x84, 0x8A, 0x03, 0x01, 0x03, 0x02, 0x0C, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 
40067
  0x13, 0x01, 0x0F, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x07, 0xBF, 
40068
  0xFA, 0x03, 0xBF, 0xFB, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 
40069
  0x00, 0x03, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x69, 0x6C, 0x3F, 0xDA, 0x04, 0x00, 0x03, 0x00, 0xDA, 
40070
  0x1E, 0x00, 0x03, 0x01, 0xCF, 0x04, 0x6E, 0x69, 0x6C, 0x3F, 0x28, 0x03, 0x00, 0x00, 0x25, 0x02, 
40071
  0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x75, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x11, 0x00, 0xDA, 
40072
  0x31, 0x00, 0x11, 0x01, 0xDA, 0x82, 0x1A, 0x00, 0x11, 0x02, 0xDA, 0x33, 0x00, 0x11, 0x03, 0xCF, 
40073
  0x10, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 
40074
  0x65, 0x01, 0x11, 0x05, 0xDA, 0x37, 0x05, 0x11, 0x07, 0xDA, 0x43, 0x0D, 0x11, 0x09, 0xDA, 0x36, 
40075
  0x3F, 0x04, 0x02, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x07, 0x00, 0x00, 
40076
  0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 
40077
  0x35, 0x09, 0x0A, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 
40078
  0x1B, 0x08, 0x07, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x33, 0x02, 0x0A, 0x09, 
40079
  0x36, 0x00, 0x00, 0x00, 0x84, 0xCC, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
40080
  0x03, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
40081
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x3C, 0xDA, 0x3D, 0xDA, 0x83, 0x38, 0xDA, 0x30, 
40082
  0x00, 0x37, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x37, 0x01, 0xDA, 0x33, 0x00, 0x37, 0x02, 0xCF, 0x0A, 
40083
  0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x15, 0x25, 0x07, 0xCF, 0x07, 0x5F, 
40084
  0x30, 0x30, 0x30, 0x30, 0x32, 0x35, 0x15, 0x24, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40085
  0x32, 0x37, 0x18, 0x24, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x36, 0x1B, 0x24, 
40086
  0x09, 0xDA, 0x43, 0x1C, 0x24, 0x0A, 0xDA, 0x1E, 0x26, 0x37, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40087
  0x30, 0x30, 0x32, 0x38, 0x26, 0x36, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x61, 
40088
  0x29, 0x36, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x39, 0x2C, 0x36, 0x09, 0xDA, 
40089
  0x1E, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 
40090
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 
40091
  0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 
40092
  0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 0x00, 0x01, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 
40093
  0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x12, 
40094
  0x00, 0x44, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x06, 0x01, 
40095
  0x08, 0x1B, 0x08, 0x06, 0x00, 0x1F, 0x08, 0x0B, 0x00, 0x3A, 0x06, 0x01, 0x08, 0x1B, 0x09, 0x08, 
40096
  0x00, 0x1B, 0x0A, 0x06, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x02, 
40097
  0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x07, 0x09, 0x0A, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xF6, 0xFF, 
40098
  0xFF, 0x03, 0x07, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x08, 0x00, 
40099
  0x00, 0x49, 0x06, 0x01, 0x08, 0x1B, 0x08, 0x06, 0x00, 0x1F, 0x08, 0x0C, 0x00, 0x3A, 0x06, 0x01, 
40100
  0x08, 0x1B, 0x09, 0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x02, 
40101
  0x00, 0x1C, 0x06, 0x00, 0x00, 0x32, 0x07, 0x09, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x35, 0x06, 0x0A, 
40102
  0x00, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xF5, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 0x84, 0xD5, 0x05, 
40103
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 
40104
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
40105
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x03, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 
40106
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x38, 0x00, 0x38, 0x00, 
40107
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x01, 0x05, 0x00, 0x05, 0x00, 
40108
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x1C, 0x00, 0x1C, 0x00, 
40109
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40110
  0x06, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x06, 0x01, 0xDA, 0x33, 0x00, 0x06, 0x02, 0xDA, 0x85, 0xAF, 
40111
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x32, 0x03, 0x01, 0x00, 
40112
  0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x84, 0xDE, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
40113
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0xD7, 0x00, 0xCD, 
40114
  0x00, 0xFD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x1D, 0x00, 0x01, 
40115
  0x06, 0xCE, 0x06, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0xDA, 0x04, 0xDA, 0x82, 0x65, 0xCE, 0x20, 
40116
  0x61, 0x72, 0x67, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x68, 0x61, 0x76, 0x65, 
40117
  0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x3A, 0x20, 0x25, 0x6E, 
40118
  0xDA, 0x81, 0x49, 0xDA, 0x29, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x17, 0x02, 0x02, 0xCD, 
40119
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x80, 0xA9, 0x00, 0x2A, 0xCE, 0x06, 0x6D, 0x61, 0x70, 0x63, 0x61, 
40120
  0x74, 0xDA, 0x04, 0xDA, 0x82, 0xB1, 0xDA, 0x2F, 0x00, 0x80, 0xA9, 0x00, 0xDA, 0x31, 0x00, 0x80, 
40121
  0xA9, 0x01, 0xDA, 0x33, 0x00, 0x80, 0xA9, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xA9, 0x03, 0xCF, 
40122
  0x06, 0x6D, 0x61, 0x70, 0x63, 0x61, 0x74, 0x01, 0x80, 0xA9, 0x05, 0xDA, 0x7E, 0x03, 0x80, 0xA8, 
40123
  0x07, 0xDA, 0x81, 0xFC, 0x03, 0x80, 0xA8, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 
40124
  0x70, 0x05, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x72, 0x08, 0x13, 0x09, 
40125
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x71, 0x0B, 0x13, 0x0A, 0xDA, 0x1E, 0x17, 0x2C, 
40126
  0x0A, 0xDA, 0x82, 0x00, 0x18, 0x2C, 0x09, 0xDA, 0x82, 0x01, 0x18, 0x2C, 0x01, 0xCF, 0x07, 0x5F, 
40127
  0x30, 0x30, 0x30, 0x30, 0x31, 0x74, 0x1B, 0x2C, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40128
  0x31, 0x73, 0x1E, 0x2C, 0x0D, 0xDA, 0x1E, 0x30, 0x4E, 0x0B, 0xDA, 0x82, 0x00, 0x32, 0x4E, 0x0C, 
40129
  0xDA, 0x82, 0x04, 0x33, 0x4E, 0x0A, 0xDA, 0x82, 0x01, 0x34, 0x4E, 0x0D, 0xDA, 0x82, 0x05, 0x34, 
40130
  0x4E, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x76, 0x37, 0x4E, 0x0F, 0xCF, 0x07, 
40131
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x75, 0x3A, 0x4E, 0x10, 0xDA, 0x1E, 0x52, 0x7A, 0x0C, 0xDA, 
40132
  0x82, 0x00, 0x54, 0x7A, 0x0D, 0xDA, 0x82, 0x04, 0x56, 0x7A, 0x0E, 0xDA, 0x82, 0x08, 0x57, 0x7A, 
40133
  0x0B, 0xDA, 0x82, 0x01, 0x58, 0x7A, 0x0F, 0xDA, 0x82, 0x05, 0x59, 0x7A, 0x10, 0xDA, 0x82, 0x09, 
40134
  0x59, 0x7A, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x78, 0x5C, 0x7A, 0x12, 0xCF, 
40135
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x77, 0x5F, 0x7A, 0x13, 0xDA, 0x1E, 0x7E, 0x80, 0xA8, 
40136
  0x0C, 0xDA, 0x82, 0x0C, 0x80, 0x82, 0x80, 0xA8, 0x0D, 0xDA, 0x82, 0x0D, 0x80, 0x83, 0x80, 0xA8, 
40137
  0x0B, 0xDA, 0x82, 0x0E, 0x80, 0x83, 0x80, 0xA8, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40138
  0x31, 0x7A, 0x80, 0x86, 0x80, 0xA8, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x79, 
40139
  0x80, 0x89, 0x80, 0xA8, 0x10, 0xDA, 0x1E, 0x80, 0x8A, 0x80, 0x9E, 0x0E, 0xDA, 0x43, 0x80, 0x8A, 
40140
  0x80, 0x9E, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x41, 0x80, 0x8E, 0x80, 0x9C, 
40141
  0x13, 0xDA, 0x82, 0x12, 0x80, 0x90, 0x80, 0x9C, 0x14, 0xDA, 0x82, 0x13, 0x80, 0x92, 0x80, 0x9C, 
40142
  0x15, 0xDA, 0x82, 0x14, 0x40, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3F, 0x06, 0x02, 0x00, 
40143
  0x1B, 0x07, 0x06, 0x00, 0x26, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x0F, 0x00, 0x28, 0x09, 0x00, 0x00, 
40144
  0x49, 0x08, 0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x1F, 0x09, 0x0A, 0x00, 0x3A, 0x08, 0x01, 0x09, 
40145
  0x1B, 0x0A, 0x08, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x08, 0x00, 0x00, 0x32, 0x05, 0x08, 0x00, 
40146
  0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x49, 0x09, 0x01, 0x09, 0x1C, 0xF7, 0xFF, 0xFF, 
40147
  0x1C, 0x95, 0x00, 0x00, 0x26, 0x08, 0x07, 0x01, 0x1E, 0x08, 0x18, 0x00, 0x3D, 0x09, 0x02, 0x00, 
40148
  0x1B, 0x0A, 0x09, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x49, 0x0B, 0x01, 0x0C, 
40149
  0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 0x10, 0x00, 0x3A, 0x0B, 0x01, 0x0C, 0x1B, 0x0D, 0x0B, 0x00, 
40150
  0x49, 0x09, 0x0A, 0x09, 0x28, 0x0E, 0x00, 0x00, 0x25, 0x0B, 0x0E, 0x09, 0x1E, 0x0B, 0x02, 0x00, 
40151
  0x1C, 0x09, 0x00, 0x00, 0x3A, 0x0B, 0x0A, 0x09, 0x32, 0x0D, 0x0B, 0x00, 0x35, 0x0E, 0x00, 0x00, 
40152
  0x32, 0x05, 0x0E, 0x00, 0x2C, 0x0F, 0x00, 0x00, 0x35, 0x0B, 0x0F, 0x00, 0x49, 0x0C, 0x01, 0x0C, 
40153
  0x1C, 0xF1, 0xFF, 0xFF, 0x1C, 0x7C, 0x00, 0x00, 0x26, 0x09, 0x07, 0x02, 0x1E, 0x09, 0x21, 0x00, 
40154
  0x3D, 0x0A, 0x02, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 
40155
  0x28, 0x0A, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0F, 
40156
  0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x16, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 0x00, 
40157
  0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 0x0A, 0x1E, 0x0E, 0x02, 0x00, 
40158
  0x1C, 0x0F, 0x00, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 0x0D, 
40159
  0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x3A, 0x0E, 0x0B, 0x0A, 0x3A, 0x11, 0x0C, 0x0D, 
40160
  0x33, 0x10, 0x0E, 0x11, 0x35, 0x12, 0x00, 0x00, 0x32, 0x05, 0x12, 0x00, 0x2C, 0x11, 0x00, 0x00, 
40161
  0x35, 0x0E, 0x11, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xEB, 0xFF, 0xFF, 0x1C, 0x5A, 0x00, 0x00, 
40162
  0x26, 0x0A, 0x07, 0x03, 0x1E, 0x0A, 0x2B, 0x00, 0x3D, 0x0B, 0x02, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 
40163
  0x3D, 0x0B, 0x02, 0x01, 0x1B, 0x0D, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 0x02, 0x1B, 0x0E, 0x0B, 0x00, 
40164
  0x28, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x28, 0x12, 0x00, 0x00, 
40165
  0x49, 0x11, 0x01, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1F, 0x12, 0x1D, 0x00, 0x3A, 0x11, 0x01, 0x12, 
40166
  0x1B, 0x13, 0x11, 0x00, 0x49, 0x0B, 0x0C, 0x0B, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x0B, 
40167
  0x1E, 0x11, 0x02, 0x00, 0x1C, 0x16, 0x00, 0x00, 0x49, 0x0F, 0x0D, 0x0F, 0x28, 0x14, 0x00, 0x00, 
40168
  0x25, 0x11, 0x14, 0x0F, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x49, 0x10, 0x0E, 0x10, 
40169
  0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x10, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x0C, 0x00, 0x00, 
40170
  0x3A, 0x11, 0x0C, 0x0B, 0x3A, 0x14, 0x0D, 0x0F, 0x3A, 0x15, 0x0E, 0x10, 0x33, 0x13, 0x11, 0x14, 
40171
  0x31, 0x15, 0x00, 0x00, 0x35, 0x16, 0x00, 0x00, 0x32, 0x05, 0x16, 0x00, 0x2C, 0x14, 0x00, 0x00, 
40172
  0x35, 0x11, 0x14, 0x00, 0x49, 0x12, 0x01, 0x12, 0x1C, 0xE4, 0xFF, 0xFF, 0x1C, 0x2E, 0x00, 0x00, 
40173
  0x31, 0x07, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 
40174
  0x31, 0x07, 0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 
40175
  0x2A, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 
40176
  0x1F, 0x0F, 0x21, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 0x00, 0x2B, 0x0E, 0x00, 0x00, 
40177
  0x23, 0x11, 0x0E, 0x07, 0x1E, 0x11, 0x12, 0x00, 0x3A, 0x12, 0x0C, 0x0E, 0x1B, 0x13, 0x12, 0x00, 
40178
  0x3A, 0x12, 0x02, 0x0E, 0x1B, 0x14, 0x12, 0x00, 0x49, 0x12, 0x14, 0x13, 0x1B, 0x15, 0x12, 0x00, 
40179
  0x28, 0x16, 0x00, 0x00, 0x25, 0x12, 0x16, 0x15, 0x1E, 0x12, 0x04, 0x00, 0x29, 0x0B, 0x00, 0x00, 
40180
  0x1C, 0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0C, 0x0E, 0x15, 0x3A, 0x16, 0x14, 0x15, 
40181
  0x3C, 0x0D, 0x0E, 0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 0x1E, 0x0B, 0x02, 0x00, 
40182
  0x1C, 0x09, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x34, 0x0D, 0x00, 0x00, 0x35, 0x0E, 0x00, 0x00, 
40183
  0x32, 0x05, 0x0E, 0x00, 0x2C, 0x12, 0x00, 0x00, 0x35, 0x11, 0x12, 0x00, 0x49, 0x0F, 0x01, 0x0F, 
40184
  0x1C, 0xE0, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 0x5B, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
40185
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40186
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40187
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40188
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40189
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40190
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40191
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40192
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40193
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40194
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40195
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40196
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40197
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40198
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40199
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40200
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40201
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40202
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40203
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40204
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40205
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF4, 0x01, 0xDA, 0x81, 0x28, 0xD7, 
40206
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x13, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0C, 0x38, 
40207
  0x00, 0x0E, 0xCE, 0x07, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 
40208
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x00, 0x01, 0x03, 0x14, 0x00, 0x04, 0xCE, 0x06, 0x63, 0x75, 
40209
  0x72, 0x65, 0x6E, 0x76, 0xDA, 0x04, 0xDA, 0x83, 0x54, 0xDA, 0x83, 0x55, 0xDA, 0x83, 0x56, 0x00, 
40210
  0x14, 0x00, 0xDA, 0x32, 0x00, 0x14, 0x01, 0xCF, 0x06, 0x63, 0x75, 0x72, 0x65, 0x6E, 0x76, 0x05, 
40211
  0x14, 0x02, 0xDA, 0x83, 0x62, 0x07, 0x13, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
40212
  0x30, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 
40213
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 0x00, 0x0D, 0x00, 0x1B, 0x04, 0x00, 
40214
  0x00, 0x22, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x0A, 0x00, 0x28, 0x07, 0x00, 0x00, 0x25, 0x06, 0x07, 
40215
  0x02, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x02, 
40216
  0x00, 0x35, 0x02, 0x06, 0x00, 0x07, 0x04, 0x04, 0x01, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 0x02, 0x00, 
40217
  0x00, 0x89, 0xFC, 0x18, 0x00, 0x18, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 
40218
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x17, 0x00, 0x17, 0x00, 0x13, 0x00, 0x21, 0x00, 0x31, 
40219
  0x00, 0x31, 0x00, 0x31, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFB, 0x01, 0xDA, 0x82, 0xC2, 0xD0, 0x04, 
40220
  0x6F, 0x6E, 0x6C, 0x79, 0xD0, 0x02, 0x61, 0x73, 0xD0, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 
40221
  0xD0, 0x06, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0xDA, 0x81, 0xAE, 0xDA, 0x81, 0x1E, 0xDA, 0x81, 
40222
  0x28, 0xDA, 0x82, 0xE8, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x11, 0x05, 
40223
  0x02, 0x05, 0x06, 0x35, 0x00, 0x0D, 0xCE, 0x0C, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x6D, 0x6F, 
40224
  0x64, 0x75, 0x6C, 0x65, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 
40225
  0x01, 0x00, 0x0C, 0x00, 0x06, 0xCE, 0x06, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 0xDA, 0x04, 0x00, 
40226
  0x0C, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x0C, 0x01, 0xCF, 0x06, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 
40227
  0x01, 0x0C, 0x03, 0xDA, 0x39, 0x01, 0x0B, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 
40228
  0x55, 0x04, 0x0B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x54, 0x06, 0x0B, 0x04, 
40229
  0xDA, 0x3A, 0x44, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 
40230
  0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x3A, 0x06, 
40231
  0x00, 0x04, 0x3C, 0x03, 0x06, 0x04, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xFB, 0xFF, 0xFF, 0x03, 0x03, 
40232
  0x00, 0x00, 0x86, 0x3E, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40233
  0x03, 0x01, 0x0E, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xF9, 0x01, 0xDA, 0x82, 0x95, 
40234
  0xD0, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0xDA, 0x82, 0x51, 0xDA, 0x81, 0x9C, 0xDA, 
40235
  0x83, 0xCD, 0x00, 0x35, 0x00, 0xCF, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x00, 0x35, 0x01, 
40236
  0xDA, 0x85, 0x78, 0x00, 0x35, 0x02, 0xCF, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x00, 0x35, 
40237
  0x03, 0xCF, 0x06, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x00, 0x35, 0x04, 0xCF, 0x04, 0x6F, 0x6E, 
40238
  0x6C, 0x79, 0x00, 0x35, 0x05, 0xCF, 0x0C, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 
40239
  0x75, 0x6C, 0x65, 0x07, 0x35, 0x07, 0xCF, 0x08, 0x6F, 0x6E, 0x6C, 0x79, 0x2D, 0x73, 0x65, 0x74, 
40240
  0x07, 0x34, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x45, 0x0A, 0x34, 0x09, 0xCF, 
40241
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x44, 0x0D, 0x34, 0x0A, 0xDA, 0x3A, 0x0E, 0x34, 0x0B, 
40242
  0xDA, 0x46, 0x1D, 0x23, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x46, 0x2D, 0x32, 
40243
  0x0E, 0xDA, 0x83, 0x75, 0x1E, 0x04, 0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x08, 0x00, 0x00, 
40244
  0x35, 0x07, 0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 
40245
  0x1B, 0x07, 0x06, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 
40246
  0x1F, 0x09, 0x29, 0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 0x09, 0x00, 0x1B, 0x0B, 0x08, 0x00, 
40247
  0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x08, 0x0C, 0x00, 0x1E, 0x08, 0x20, 0x00, 
40248
  0x2C, 0x0C, 0x02, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x35, 0x0C, 0x0B, 0x00, 0x31, 0x0C, 0x00, 0x00, 
40249
  0x2C, 0x0E, 0x03, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1E, 0x0D, 0x19, 0x00, 0x31, 0x04, 0x00, 0x00, 
40250
  0x2C, 0x0E, 0x03, 0x00, 0x35, 0x0C, 0x0E, 0x00, 0x1B, 0x0E, 0x0C, 0x00, 0x1E, 0x0E, 0x03, 0x00, 
40251
  0x1B, 0x0C, 0x0E, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x3A, 0x0F, 0x07, 0x0A, 0x1B, 0x0C, 0x0F, 0x00, 
40252
  0x1E, 0x0C, 0x0F, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x0F, 0x03, 0x00, 0x35, 0x0E, 0x0F, 0x00, 
40253
  0x2C, 0x0F, 0x02, 0x00, 0x32, 0x0F, 0x0E, 0x00, 0x44, 0x0E, 0x00, 0x00, 0x32, 0x0E, 0x0B, 0x00, 
40254
  0x2C, 0x10, 0x04, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x0E, 0x0F, 0x00, 0x32, 0x02, 0x0A, 0x00, 
40255
  0x2C, 0x10, 0x05, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x3C, 0x00, 0x0F, 0x0E, 0x49, 0x09, 0x01, 0x09, 
40256
  0x1C, 0xD8, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x8C, 0x55, 0x11, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
40257
  0x1A, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40258
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x03, 0x00, 
40259
  0x3B, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x03, 0x00, 0x53, 0x00, 
40260
  0x53, 0x00, 0x53, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x5E, 0x00, 0x4F, 0x00, 
40261
  0x03, 0x01, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
40262
  0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0xBF, 0xFE, 0x03, 
40263
  0x00, 0x03, 0xBF, 0xF9, 0x01, 0x00, 0x38, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x38, 0x01, 0xDA, 0x81, 
40264
  0x4D, 0x00, 0x38, 0x02, 0xCF, 0x07, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0x02, 0x38, 0x04, 
40265
  0xDA, 0x83, 0x4A, 0x06, 0x38, 0x06, 0xCF, 0x05, 0x6B, 0x61, 0x72, 0x67, 0x73, 0x09, 0x38, 0x08, 
40266
  0xDA, 0x85, 0xF0, 0x0C, 0x38, 0x09, 0xDA, 0x80, 0x84, 0x0F, 0x38, 0x0A, 0xDA, 0x85, 0xEE, 0x12, 
40267
  0x38, 0x0B, 0xCF, 0x02, 0x65, 0x70, 0x16, 0x38, 0x0C, 0xDA, 0x81, 0x9F, 0x16, 0x1F, 0x09, 0xCF, 
40268
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x49, 0x1F, 0x33, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40269
  0x30, 0x30, 0x35, 0x48, 0x22, 0x32, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x47, 
40270
  0x33, 0x38, 0x0E, 0xDA, 0x85, 0xEE, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 
40271
  0x03, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 
40272
  0x05, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x3A, 0x07, 0x06, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 
40273
  0x03, 0x00, 0x3A, 0x07, 0x06, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x3A, 0x07, 
40274
  0x06, 0x0A, 0x1B, 0x0A, 0x07, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x3A, 0x07, 0x06, 0x0B, 0x1B, 0x0B, 
40275
  0x07, 0x00, 0x33, 0x00, 0x01, 0x06, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x07, 0x0C, 0x00, 0x1B, 0x0C, 
40276
  0x07, 0x00, 0x1E, 0x09, 0x07, 0x00, 0x2C, 0x0E, 0x07, 0x00, 0x32, 0x09, 0x0E, 0x00, 0x2C, 0x0F, 
40277
  0x08, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0D, 
40278
  0x09, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x11, 
40279
  0x00, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x0F, 0x0A, 0x00, 0x1C, 0x0D, 0x00, 0x00, 0x2C, 0x10, 
40280
  0x07, 0x00, 0x32, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x09, 0x00, 0x35, 0x10, 0x11, 0x00, 0x31, 0x10, 
40281
  0x00, 0x00, 0x2C, 0x12, 0x0A, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x32, 0x11, 
40282
  0x10, 0x00, 0x2C, 0x12, 0x08, 0x00, 0x35, 0x10, 0x12, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1B, 0x0D, 
40283
  0x0F, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x33, 0x04, 0x0C, 0x0E, 0x32, 0x0B, 0x08, 0x00, 0x2C, 0x0F, 
40284
  0x0B, 0x00, 0x36, 0x0F, 0x00, 0x00, 0x8C, 0x5F, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x0E, 0x00, 
40285
  0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40286
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x0F, 0x00, 
40287
  0x0F, 0x00, 0x0F, 0x00, 0x03, 0x02, 0x11, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
40288
  0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFF, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
40289
  0x00, 0x0F, 0x00, 0x0F, 0x03, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x19, 0x00, 0x19, 
40290
  0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xBF, 0xFD, 0x0F, 0x00, 0x0F, 0x00, 
40291
  0x03, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0xB5, 0x00, 0x1D, 0x00, 0xDA, 
40292
  0x81, 0x22, 0x00, 0x1D, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x1D, 0x02, 0xDA, 0x85, 0xC8, 0x04, 0x0B, 
40293
  0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x4A, 0x0F, 0x1D, 0x04, 0xCF, 0x02, 0x70, 
40294
  0x73, 0x14, 0x1D, 0x05, 0xCF, 0x04, 0x61, 0x72, 0x67, 0x6D, 0x3F, 0x03, 0x01, 0x00, 0x31, 0x03, 
40295
  0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x03, 
40296
  0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x04, 0x01, 0x00, 0x2C, 0x05, 
40297
  0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2B, 0x03, 0x02, 0x00, 0x32, 0x03, 0x01, 0x00, 0x2C, 0x04, 
40298
  0x03, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 0x05, 0x00, 0x00, 0x32, 0x05, 
40299
  0x04, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x31, 0x00, 
40300
  0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x32, 0x08, 
40301
  0x07, 0x00, 0x34, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x36, 0x08, 0x00, 0x00, 0xCD, 0x00, 
40302
  0xD4, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x08, 0x26, 0x00, 0x04, 0xDA, 0x04, 0xDA, 0x83, 0x4E, 
40303
  0xDA, 0x1C, 0xCE, 0x1C, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x6B, 0x65, 0x79, 
40304
  0x77, 0x6F, 0x72, 0x64, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 0x25, 0x73, 0x3A, 0x20, 0x25, 0x6E, 
40305
  0xDA, 0x81, 0x49, 0xDA, 0x85, 0xE2, 0xDA, 0x81, 0x28, 0xDA, 0x85, 0xE1, 0xDA, 0x82, 0x98, 0x01, 
40306
  0x26, 0x02, 0xDA, 0x3A, 0x03, 0x26, 0x03, 0xDA, 0x46, 0x07, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
40307
  0x30, 0x30, 0x30, 0x35, 0x4B, 0x10, 0x23, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
40308
  0x4C, 0x3D, 0x01, 0x00, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x3D, 0x01, 0x00, 0x01, 0x1B, 0x03, 0x01, 
40309
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 
40310
  0x00, 0x1E, 0x01, 0x02, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 
40311
  0x00, 0x35, 0x00, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 0x04, 0x00, 0x02, 0x2C, 0x05, 0x03, 
40312
  0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x25, 0x01, 0x02, 0x04, 0x1E, 0x01, 0x06, 
40313
  0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x05, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x00, 0x04, 
40314
  0x00, 0x1C, 0x0B, 0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x25, 0x05, 0x02, 0x06, 0x1E, 0x05, 0x06, 
40315
  0x00, 0x2C, 0x07, 0x07, 0x00, 0x32, 0x07, 0x03, 0x00, 0x45, 0x06, 0x00, 0x00, 0x1B, 0x04, 0x06, 
40316
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1B, 0x00, 0x04, 0x00, 0x32, 0x02, 0x00, 
40317
  0x00, 0x45, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8C, 0x7A, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
40318
  0x00, 0x0D, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x44, 
40319
  0x00, 0x44, 0x00, 0x44, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x12, 0x00, 0x12, 
40320
  0x00, 0x12, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
40321
  0x00, 0x12, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
40322
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x8C, 0x77, 0x13, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
40323
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0B, 0x00, 
40324
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 0x0D, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
40325
  0xFF, 0x03, 0x05, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40326
  0x00, 0x03, 0xCF, 0x0D, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
40327
  0x74, 0xDA, 0x83, 0x54, 0xDA, 0x82, 0xD4, 0xDA, 0x82, 0xCF, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 
40328
  0x2F, 0x65, 0x78, 0x70, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0xCF, 0x0C, 
40329
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 0x80, 0xDE, 0xCF, 
40330
  0x06, 0x74, 0x61, 0x62, 0x73, 0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x02, 
40331
  0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x17, 0x00, 0x05, 0xCE, 0x06, 0x74, 0x61, 0x62, 0x73, 
40332
  0x65, 0x71, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0xB1, 0xDA, 
40333
  0x83, 0xEF, 0x00, 0x17, 0x00, 0xDA, 0x84, 0x22, 0x00, 0x17, 0x01, 0xCF, 0x08, 0x6B, 0x65, 0x79, 
40334
  0x2D, 0x62, 0x6F, 0x64, 0x79, 0x00, 0x17, 0x02, 0xCF, 0x0A, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2D, 
40335
  0x62, 0x6F, 0x64, 0x79, 0x00, 0x17, 0x03, 0xDA, 0x86, 0x06, 0x02, 0x17, 0x05, 0xCF, 0x06, 0x24, 
40336
  0x61, 0x63, 0x63, 0x75, 0x6D, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 
40337
  0x00, 0x44, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x33, 0x08, 0x05, 0x06, 0x45, 0x07, 0x00, 
40338
  0x00, 0x2C, 0x08, 0x02, 0x00, 0x31, 0x08, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x45, 0x06, 0x00, 
40339
  0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 0x05, 0x01, 0x31, 0x06, 0x00, 0x00, 0x45, 0x08, 0x00, 
40340
  0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 0x00, 0x08, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x09, 0x02, 
40341
  0x00, 0x33, 0x09, 0x07, 0x06, 0x31, 0x05, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 
40342
  0x00, 0x82, 0xB4, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40343
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40344
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40345
  0xCF, 0x0A, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 
40346
  0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 0x01, 0x11, 0x00, 0x09, 0xCE, 0x0A, 0x61, 0x63, 0x63, 
40347
  0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x11, 0x00, 0xDA, 0x31, 
40348
  0x00, 0x11, 0x01, 0xDA, 0x83, 0xC4, 0x00, 0x11, 0x02, 0xDA, 0x33, 0x00, 0x11, 0x03, 0xDA, 0x86, 
40349
  0x0C, 0x00, 0x11, 0x04, 0xDA, 0x7E, 0x02, 0x11, 0x06, 0xDA, 0x39, 0x02, 0x10, 0x02, 0xCF, 0x07, 
40350
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x05, 0x10, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40351
  0x30, 0x30, 0x59, 0x08, 0x10, 0x09, 0xDA, 0x1E, 0x1B, 0x04, 0x01, 0x00, 0x40, 0x05, 0x00, 0x00, 
40352
  0x1B, 0x06, 0x05, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x02, 0x08, 0x1B, 0x08, 0x07, 0x00, 
40353
  0x1F, 0x08, 0x0A, 0x00, 0x3A, 0x07, 0x02, 0x08, 0x1B, 0x09, 0x07, 0x00, 0x32, 0x04, 0x09, 0x00, 
40354
  0x35, 0x04, 0x00, 0x00, 0x32, 0x06, 0x04, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x07, 0x0A, 0x00, 
40355
  0x49, 0x08, 0x02, 0x08, 0x1C, 0xF7, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x83, 0xFD, 0x03, 0x01, 
40356
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40357
  0x28, 0x00, 0x28, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF7, 0x01, 
40358
  0xDA, 0x83, 0x91, 0xDA, 0x83, 0x8F, 0xCF, 0x05, 0x6D, 0x65, 0x72, 0x67, 0x65, 0xD7, 0x00, 0xCD, 
40359
  0x00, 0xDD, 0x00, 0x00, 0x09, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x14, 0x00, 0x09, 
40360
  0xCE, 0x05, 0x6D, 0x65, 0x72, 0x67, 0x65, 0xDA, 0x04, 0x00, 0x14, 0x00, 0xDA, 0x85, 0x0D, 0x00, 
40361
  0x14, 0x01, 0xDA, 0x86, 0x11, 0x01, 0x14, 0x03, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 
40362
  0x6E, 0x65, 0x72, 0x01, 0x13, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x36, 0x04, 
40363
  0x13, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x35, 0x07, 0x13, 0x06, 0xDA, 0x83, 
40364
  0x1D, 0x07, 0x11, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x34, 0x0A, 0x11, 0x07, 
40365
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x33, 0x0C, 0x11, 0x04, 0xDA, 0x82, 0xAD, 0x44, 
40366
  0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 0x1B, 
40367
  0x05, 0x04, 0x00, 0x1F, 0x05, 0x0E, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x28, 
40368
  0x07, 0x00, 0x00, 0x49, 0x04, 0x06, 0x07, 0x1B, 0x07, 0x04, 0x00, 0x1F, 0x07, 0x06, 0x00, 0x1B, 
40369
  0x04, 0x07, 0x00, 0x3A, 0x08, 0x06, 0x04, 0x3C, 0x03, 0x04, 0x08, 0x49, 0x07, 0x06, 0x07, 0x1C, 
40370
  0xFB, 0xFF, 0xFF, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF3, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 
40371
  0x9B, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40372
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x18, 0x00, 0x05, 0xBF, 0xFE, 
40373
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xCF, 0x03, 0x6D, 0x6F, 0x64, 0xD7, 
40374
  0x00, 0xCD, 0x00, 0x09, 0x00, 0x1D, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 
40375
  0xCE, 0x03, 0x6D, 0x6F, 0x64, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 
40376
  0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 
40377
  0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0E, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 
40378
  0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x0E, 0x03, 0x03, 
40379
  0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 
40380
  0x00, 0xCF, 0x0A, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0xD8, 0x0A, 0x6F, 
40381
  0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
40382
  0x6C, 0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xD8, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
40383
  0x6C, 0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xCF, 0x08, 0x66, 0x6C, 0x79, 0x63, 0x68, 
40384
  0x65, 0x63, 0x6B, 0xD7, 0x00, 0xCD, 0x03, 0xFF, 0x00, 0x00, 0x0C, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
40385
  0xFF, 0xFF, 0x0C, 0x28, 0x00, 0x02, 0x07, 0xCE, 0x08, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 
40386
  0x6B, 0xDA, 0x04, 0xDA, 0x85, 0x22, 0xDA, 0x81, 0x9A, 0xD0, 0x0B, 0x66, 0x6C, 0x79, 0x63, 0x68, 
40387
  0x65, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0xDA, 0x81, 0xA0, 0xDA, 0x81, 0xA1, 0xDA, 0x81, 0xA2, 0xDA, 
40388
  0x81, 0x8D, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x0E, 0xDA, 0x81, 0x6E, 0xDA, 0x84, 0xE3, 
40389
  0x00, 0x28, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x28, 0x01, 0xCF, 0x06, 0x6B, 0x77, 0x61, 0x72, 0x67, 
40390
  0x73, 0x00, 0x28, 0x02, 0xDA, 0x86, 0x20, 0x01, 0x28, 0x04, 0xDA, 0x82, 0x3B, 0x06, 0x28, 0x05, 
40391
  0xDA, 0x81, 0xA5, 0x18, 0x27, 0x07, 0xDA, 0x31, 0x1B, 0x27, 0x09, 0xDA, 0x83, 0x62, 0x44, 0x03, 
40392
  0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x3B, 0x05, 0x01, 0x06, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 
40393
  0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x29, 0x08, 
40394
  0x00, 0x00, 0x3C, 0x05, 0x07, 0x08, 0x44, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x3C, 0x05, 
40395
  0x08, 0x07, 0x44, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x3C, 0x05, 0x08, 0x07, 0x30, 0x07, 
40396
  0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x3C, 0x05, 0x08, 0x07, 0x30, 0x07, 0x01, 0x00, 0x2C, 0x08, 
40397
  0x06, 0x00, 0x32, 0x07, 0x08, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 
40398
  0x08, 0x00, 0x28, 0x09, 0x00, 0x00, 0x37, 0x08, 0x07, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x31, 0x07, 
40399
  0x00, 0x00, 0x2C, 0x0A, 0x08, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x25, 0x0A, 
40400
  0x08, 0x0B, 0x1E, 0x0A, 0x06, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x33, 0x07, 0x09, 0x08, 0x2C, 0x0B, 
40401
  0x0B, 0x00, 0x35, 0x08, 0x0B, 0x00, 0x1C, 0x01, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 
40402
  0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x01, 0x05, 0xCE, 
40403
  0x11, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 
40404
  0x6E, 0x76, 0xDA, 0x04, 0xDA, 0x81, 0x9A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 
40405
  0x00, 0x01, 0xDA, 0x86, 0x24, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0x20, 0xBF, 0xFF, 0x00, 0x04, 
40406
  0xDA, 0x82, 0x3B, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0xA5, 0x2D, 0x00, 0x00, 0x05, 0x31, 0x00, 
40407
  0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0xDC, 0x3D, 0x00, 
40408
  0x3D, 0x00, 0x3D, 0x00, 0x3D, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x0E, 
40409
  0x01, 0x05, 0xDA, 0x81, 0x99, 0xDA, 0x04, 0xDA, 0x82, 0xBC, 0xDA, 0x85, 0x2B, 0xD7, 0x00, 0xCD, 
40410
  0x00, 0xDC, 0x00, 0x00, 0x0B, 0x04, 0x04, 0x04, 0x07, 0x28, 0x00, 0x09, 0xCE, 0x12, 0x66, 0x6C, 
40411
  0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 
40412
  0xDA, 0x04, 0xDA, 0x83, 0x17, 0xDA, 0x75, 0xDA, 0x76, 0xDA, 0x82, 0xC6, 0xD0, 0x08, 0x66, 0x6C, 
40413
  0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0xD3, 0x02, 0xDA, 0x82, 0x55, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
40414
  0x00, 0x00, 0x08, 0x04, 0x04, 0x04, 0x02, 0x09, 0x00, 0x05, 0xCE, 0x0B, 0x69, 0x73, 0x2D, 0x73, 
40415
  0x61, 0x66, 0x65, 0x2D, 0x64, 0x65, 0x66, 0xDA, 0x04, 0xDA, 0x82, 0xE9, 0xD7, 0x00, 0xCD, 0x00, 
40416
  0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x08, 0x2B, 0x00, 0x03, 0xCE, 0x0F, 0x6E, 0x6F, 0x2D, 
40417
  0x73, 0x69, 0x64, 0x65, 0x2D, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0xDA, 0x04, 0xDA, 0x83, 
40418
  0x17, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x16, 0x02, 0x02, 
40419
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xB2, 0x00, 0x2F, 0xCE, 0x03, 0x61, 0x6C, 0x6C, 0xDA, 
40420
  0x04, 0xDA, 0x2F, 0x00, 0x80, 0xB2, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xB2, 0x01, 0xDA, 0x33, 
40421
  0x00, 0x80, 0xB2, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xB2, 0x03, 0xCF, 0x03, 0x61, 0x6C, 0x6C, 
40422
  0x00, 0x80, 0xB2, 0x04, 0xDA, 0x7E, 0x02, 0x80, 0xB1, 0x06, 0xDA, 0x81, 0xFC, 0x02, 0x80, 0xB1, 
40423
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x68, 0x04, 0x14, 0x01, 0xCF, 0x07, 0x5F, 
40424
  0x30, 0x30, 0x30, 0x30, 0x34, 0x6A, 0x07, 0x14, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
40425
  0x34, 0x69, 0x0A, 0x14, 0x09, 0xDA, 0x1E, 0x0D, 0x12, 0x0A, 0xDA, 0x80, 0x87, 0x18, 0x2F, 0x09, 
40426
  0xDA, 0x82, 0x00, 0x19, 0x2F, 0x08, 0xDA, 0x82, 0x01, 0x19, 0x2F, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
40427
  0x30, 0x30, 0x30, 0x34, 0x6C, 0x1C, 0x2F, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
40428
  0x6B, 0x1F, 0x2F, 0x0C, 0xDA, 0x1E, 0x28, 0x2D, 0x0A, 0xDA, 0x80, 0x87, 0x33, 0x53, 0x0A, 0xDA, 
40429
  0x82, 0x00, 0x35, 0x53, 0x0B, 0xDA, 0x82, 0x04, 0x36, 0x53, 0x09, 0xDA, 0x82, 0x01, 0x37, 0x53, 
40430
  0x0C, 0xDA, 0x82, 0x05, 0x37, 0x53, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6E, 
40431
  0x3A, 0x53, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6D, 0x3D, 0x53, 0x0F, 0xDA, 
40432
  0x1E, 0x4C, 0x51, 0x0D, 0xDA, 0x80, 0x87, 0x57, 0x80, 0x81, 0x0B, 0xDA, 0x82, 0x00, 0x59, 0x80, 
40433
  0x81, 0x0C, 0xDA, 0x82, 0x04, 0x5B, 0x80, 0x81, 0x0D, 0xDA, 0x82, 0x08, 0x5C, 0x80, 0x81, 0x0A, 
40434
  0xDA, 0x82, 0x01, 0x5D, 0x80, 0x81, 0x0E, 0xDA, 0x82, 0x05, 0x5E, 0x80, 0x81, 0x0F, 0xDA, 0x82, 
40435
  0x09, 0x5E, 0x80, 0x81, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x70, 0x61, 0x80, 
40436
  0x81, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x6F, 0x64, 0x80, 0x81, 0x12, 0xDA, 
40437
  0x1E, 0x7A, 0x7F, 0x10, 0xDA, 0x80, 0x87, 0x80, 0x85, 0x80, 0xB1, 0x0B, 0xDA, 0x82, 0x0C, 0x80, 
40438
  0x89, 0x80, 0xB1, 0x0C, 0xDA, 0x82, 0x0D, 0x80, 0x8A, 0x80, 0xB1, 0x0A, 0xDA, 0x82, 0x0E, 0x80, 
40439
  0x8A, 0x80, 0xB1, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x72, 0x80, 0x8D, 0x80, 
40440
  0xB1, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x71, 0x80, 0x90, 0x80, 0xB1, 0x0F, 
40441
  0xDA, 0x1E, 0x80, 0x91, 0x80, 0xA5, 0x0D, 0xDA, 0x43, 0x80, 0x91, 0x80, 0xA5, 0x06, 0xCF, 0x07, 
40442
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x73, 0x80, 0x95, 0x80, 0xA3, 0x12, 0xDA, 0x82, 0x12, 0x80, 
40443
  0x97, 0x80, 0xA3, 0x13, 0xDA, 0x82, 0x13, 0x80, 0x99, 0x80, 0xA3, 0x14, 0xDA, 0x82, 0x14, 0x80, 
40444
  0xAA, 0x80, 0xAF, 0x10, 0xDA, 0x80, 0x87, 0x29, 0x04, 0x00, 0x00, 0x3F, 0x05, 0x02, 0x00, 0x1B, 
40445
  0x06, 0x05, 0x00, 0x26, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x11, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 
40446
  0x07, 0x01, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 0x0C, 0x00, 0x3A, 0x07, 0x01, 0x08, 0x1B, 
40447
  0x09, 0x07, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 
40448
  0x07, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 
40449
  0x08, 0x01, 0x08, 0x1C, 0xF5, 0xFF, 0xFF, 0x1C, 0x9D, 0x00, 0x00, 0x26, 0x07, 0x06, 0x01, 0x1E, 
40450
  0x07, 0x1A, 0x00, 0x3D, 0x08, 0x02, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x08, 0x00, 0x00, 0x28, 
40451
  0x0B, 0x00, 0x00, 0x49, 0x0A, 0x01, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 0x1F, 0x0B, 0x12, 0x00, 0x3A, 
40452
  0x0A, 0x01, 0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x49, 0x08, 0x09, 0x08, 0x28, 0x0D, 0x00, 0x00, 0x25, 
40453
  0x0A, 0x0D, 0x08, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x0B, 0x00, 0x00, 0x3A, 0x0A, 0x09, 0x08, 0x32, 
40454
  0x0C, 0x0A, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 0x0A, 0x0D, 0x00, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 
40455
  0x03, 0x00, 0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0B, 0x01, 0x0B, 0x1C, 
40456
  0xEF, 0xFF, 0xFF, 0x1C, 0x82, 0x00, 0x00, 0x26, 0x08, 0x06, 0x02, 0x1E, 0x08, 0x23, 0x00, 0x3D, 
40457
  0x09, 0x02, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 0x09, 0x02, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x28, 
40458
  0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 
40459
  0x0E, 0x0D, 0x00, 0x1F, 0x0E, 0x18, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x49, 
40460
  0x09, 0x0A, 0x09, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x09, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 
40461
  0x11, 0x00, 0x00, 0x49, 0x0C, 0x0B, 0x0C, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x0C, 0x1E, 
40462
  0x0D, 0x02, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x3A, 0x0D, 0x0A, 0x09, 0x3A, 0x10, 0x0B, 0x0C, 0x33, 
40463
  0x0F, 0x0D, 0x10, 0x35, 0x11, 0x00, 0x00, 0x1B, 0x0D, 0x11, 0x00, 0x1E, 0x11, 0x02, 0x00, 0x1C, 
40464
  0x03, 0x00, 0x00, 0x1B, 0x04, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 
40465
  0xE9, 0xFF, 0xFF, 0x1C, 0x5E, 0x00, 0x00, 0x26, 0x09, 0x06, 0x03, 0x1E, 0x09, 0x2D, 0x00, 0x3D, 
40466
  0x0A, 0x02, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x3D, 
40467
  0x0A, 0x02, 0x02, 0x1B, 0x0D, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x28, 
40468
  0x0F, 0x00, 0x00, 0x28, 0x11, 0x00, 0x00, 0x49, 0x10, 0x01, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1F, 
40469
  0x11, 0x1F, 0x00, 0x3A, 0x10, 0x01, 0x11, 0x1B, 0x12, 0x10, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 
40470
  0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0A, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x18, 0x00, 0x00, 0x49, 
40471
  0x0E, 0x0C, 0x0E, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0E, 0x1E, 0x10, 0x02, 0x00, 0x1C, 
40472
  0x13, 0x00, 0x00, 0x49, 0x0F, 0x0D, 0x0F, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0F, 0x1E, 
40473
  0x10, 0x02, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x3A, 0x10, 0x0B, 0x0A, 0x3A, 0x13, 0x0C, 0x0E, 0x3A, 
40474
  0x14, 0x0D, 0x0F, 0x33, 0x12, 0x10, 0x13, 0x31, 0x14, 0x00, 0x00, 0x35, 0x15, 0x00, 0x00, 0x1B, 
40475
  0x10, 0x15, 0x00, 0x1E, 0x15, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x10, 0x00, 0x1C, 
40476
  0x03, 0x00, 0x00, 0x49, 0x11, 0x01, 0x11, 0x1C, 0xE2, 0xFF, 0xFF, 0x1C, 0x30, 0x00, 0x00, 0x31, 
40477
  0x06, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x31, 
40478
  0x06, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0A, 0x0C, 0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x2A, 
40479
  0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 
40480
  0x0E, 0x23, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x2B, 0x0D, 0x00, 0x00, 0x23, 
40481
  0x10, 0x0D, 0x06, 0x1E, 0x10, 0x12, 0x00, 0x3A, 0x11, 0x0B, 0x0D, 0x1B, 0x12, 0x11, 0x00, 0x3A, 
40482
  0x11, 0x02, 0x0D, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x11, 0x13, 0x12, 0x1B, 0x14, 0x11, 0x00, 0x28, 
40483
  0x15, 0x00, 0x00, 0x25, 0x11, 0x15, 0x14, 0x1E, 0x11, 0x04, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x1C, 
40484
  0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0B, 0x0D, 0x14, 0x3A, 0x15, 0x13, 0x14, 0x3C, 
40485
  0x0C, 0x0D, 0x15, 0x05, 0x0D, 0x0D, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 
40486
  0x0B, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 
40487
  0x10, 0x0D, 0x00, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x10, 0x00, 0x1C, 
40488
  0x03, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xDE, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x88, 
40489
  0xC6, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40490
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40491
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40492
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40493
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40494
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40495
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40496
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40497
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40498
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40499
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40500
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40501
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40502
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40503
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40504
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40505
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40506
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40507
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40508
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40509
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40510
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40511
  0x00, 0x03, 0xBF, 0xF3, 0x01, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 
40512
  0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 
40513
  0xDA, 0x6A, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x61, 0x72, 0x72, 0x61, 
40514
  0x79, 0x3F, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 
40515
  0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6F, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 
40516
  0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0xDA, 0x83, 0x38, 0xDA, 0x83, 0x57, 0xDA, 0x3E, 0x00, 0x2B, 
40517
  0x00, 0xDA, 0x82, 0xFA, 0x00, 0x2B, 0x01, 0xCF, 0x0F, 0x6E, 0x6F, 0x2D, 0x73, 0x69, 0x64, 0x65, 
40518
  0x2D, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x20, 0x29, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40519
  0x30, 0x30, 0x37, 0x32, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
40520
  0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x0B, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 
40521
  0x35, 0x03, 0x04, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x04, 0x00, 
40522
  0x32, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x36, 0x03, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 
40523
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x04, 0x00, 
40524
  0x32, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 
40525
  0x2C, 0x05, 0x05, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x10, 0x00, 0x31, 0x00, 0x00, 0x00, 
40526
  0x2C, 0x06, 0x06, 0x00, 0x35, 0x05, 0x06, 0x00, 0x32, 0x01, 0x05, 0x00, 0x2C, 0x07, 0x03, 0x00, 
40527
  0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1E, 0x06, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 
40528
  0x2C, 0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x01, 0x07, 0x00, 0x2C, 0x08, 0x03, 0x00, 
40529
  0x36, 0x08, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x29, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 
40530
  0x8F, 0xE3, 0x01, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x02, 0x0C, 0x00, 0x0C, 
40531
  0x00, 0x0C, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 
40532
  0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFC, 0x03, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 
40533
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFA, 0x03, 0x07, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
40534
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
40535
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xBF, 0xFF, 0x05, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x00, 0x09, 0x00, 
40536
  0xCF, 0x05, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x00, 0x09, 0x01, 0xDA, 0x85, 0x78, 0x00, 0x09, 0x02, 
40537
  0xDA, 0x83, 0x4A, 0x00, 0x09, 0x03, 0xDA, 0x85, 0x36, 0x00, 0x09, 0x04, 0xCF, 0x0B, 0x69, 0x73, 
40538
  0x2D, 0x73, 0x61, 0x66, 0x65, 0x2D, 0x64, 0x65, 0x66, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x00, 
40539
  0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 
40540
  0x00, 0x1E, 0x06, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8F, 0xF3, 0x18, 
40541
  0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0xBF, 0xFF, 
40542
  0x03, 0xDA, 0x80, 0xAB, 0xDA, 0x86, 0x2A, 0xDA, 0x1A, 0x00, 0x28, 0x00, 0xDA, 0x86, 0x42, 0x00, 
40543
  0x28, 0x01, 0xDA, 0x85, 0x78, 0x00, 0x28, 0x02, 0xDA, 0x83, 0x4A, 0x00, 0x28, 0x03, 0xDA, 0x85, 
40544
  0x36, 0x00, 0x28, 0x04, 0xCF, 0x12, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 
40545
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x03, 0x0D, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
40546
  0x30, 0x30, 0x37, 0x31, 0x11, 0x27, 0x07, 0xDA, 0x84, 0x22, 0x15, 0x27, 0x08, 0xDA, 0x82, 0xCC, 
40547
  0x1C, 0x27, 0x06, 0xCF, 0x02, 0x66, 0x63, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 
40548
  0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x06, 0x08, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 
40549
  0x09, 0x01, 0x00, 0x35, 0x08, 0x09, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x25, 0x09, 0x08, 0x0A, 0x1B, 
40550
  0x05, 0x09, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 0x07, 0x00, 0x1E, 0x05, 0x1A, 0x00, 0x2B, 
40551
  0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x01, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x3B, 
40552
  0x06, 0x02, 0x07, 0x20, 0x06, 0x02, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x2C, 
40553
  0x09, 0x04, 0x00, 0x3B, 0x06, 0x08, 0x09, 0x2C, 0x0A, 0x05, 0x00, 0x3B, 0x09, 0x0A, 0x07, 0x20, 
40554
  0x09, 0x02, 0x00, 0x1B, 0x09, 0x06, 0x00, 0x1B, 0x06, 0x09, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 
40555
  0x0A, 0x06, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1E, 0x09, 0x04, 0x00, 0x33, 0x00, 0x01, 0x02, 0x31, 
40556
  0x03, 0x00, 0x00, 0x36, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x36, 0x00, 0x00, 0x00, 0x04, 
40557
  0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8F, 0xC0, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x09, 
40558
  0x00, 0x09, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x09, 0x00, 0x09, 
40559
  0x00, 0x09, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 
40560
  0x00, 0x10, 0x00, 0x05, 0x01, 0x29, 0x00, 0x29, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
40561
  0x00, 0x05, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x03, 0x07, 0x00, 0x07, 0x00, 
40562
  0x07, 0xBF, 0xFD, 0x05, 0x06, 0x07, 0xBF, 0xFA, 0x05, 0xBF, 0xFC, 0x03, 0xDA, 0x85, 0x22, 0xD7, 
40563
  0x00, 0xCD, 0x03, 0xFF, 0x00, 0x00, 0x24, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x18, 0x7F, 
40564
  0x00, 0x04, 0x16, 0xCE, 0x06, 0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x85, 0x49, 
40565
  0xDA, 0x85, 0x22, 0xDA, 0x85, 0x2C, 0xDA, 0x81, 0xC5, 0xDA, 0x85, 0x29, 0xDA, 0x85, 0x2B, 0xDA, 
40566
  0x85, 0x2A, 0xDA, 0x1C, 0xD0, 0x09, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0xD0, 
40567
  0x0B, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0xDA, 0x81, 0x45, 0xDA, 
40568
  0x81, 0x46, 0xDA, 0x81, 0xA2, 0xDA, 0x81, 0x9A, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0x28, 0xCE, 0x14, 
40569
  0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x66, 
40570
  0x69, 0x6C, 0x65, 0x20, 0xDA, 0x85, 0x46, 0xDA, 0x85, 0x23, 0xDA, 0x85, 0x2D, 0xDA, 0x85, 0x2E, 
40571
  0xDA, 0x85, 0x24, 0xDA, 0x85, 0x25, 0xDA, 0x81, 0x47, 0x00, 0x7F, 0x00, 0xDA, 0x81, 0x22, 0x02, 
40572
  0x7F, 0x0A, 0xCF, 0x04, 0x65, 0x78, 0x69, 0x74, 0x05, 0x7F, 0x0B, 0xDA, 0x83, 0x4A, 0x08, 0x7F, 
40573
  0x0C, 0xDA, 0x85, 0x5A, 0x0B, 0x7F, 0x0D, 0xDA, 0x85, 0x78, 0x0E, 0x7F, 0x0E, 0xDA, 0x82, 0x2C, 
40574
  0x11, 0x7F, 0x0F, 0xDA, 0x85, 0x59, 0x14, 0x7F, 0x10, 0xDA, 0x85, 0x58, 0x15, 0x7F, 0x01, 0xCF, 
40575
  0x06, 0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x19, 0x2A, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40576
  0x30, 0x35, 0x79, 0x2A, 0x7F, 0x11, 0xDA, 0x31, 0x2C, 0x7F, 0x13, 0xCF, 0x0C, 0x70, 0x61, 0x74, 
40577
  0x68, 0x2D, 0x69, 0x73, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x37, 0x7F, 0x15, 0xDA, 0x83, 0x4A, 0x3B, 
40578
  0x7F, 0x17, 0xCF, 0x05, 0x73, 0x70, 0x61, 0x74, 0x68, 0x3B, 0x44, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 
40579
  0x30, 0x30, 0x30, 0x35, 0x7A, 0x46, 0x7F, 0x18, 0xCF, 0x0A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x65, 
40580
  0x72, 0x72, 0x6F, 0x72, 0x47, 0x7F, 0x19, 0xCF, 0x0A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x66, 0x69, 
40581
  0x62, 0x65, 0x72, 0x49, 0x7F, 0x1B, 0xDA, 0x85, 0x55, 0x4B, 0x7F, 0x1D, 0xCF, 0x02, 0x62, 0x70, 
40582
  0x4D, 0x7F, 0x1F, 0xCF, 0x02, 0x62, 0x63, 0x54, 0x5D, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40583
  0x30, 0x35, 0x41, 0x73, 0x7F, 0x20, 0xCF, 0x04, 0x6E, 0x65, 0x6E, 0x76, 0x2C, 0x0A, 0x00, 0x00, 
40584
  0x3A, 0x09, 0x01, 0x0A, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x3A, 0x09, 0x01, 0x0B, 
40585
  0x1B, 0x0B, 0x09, 0x00, 0x2C, 0x0C, 0x02, 0x00, 0x3A, 0x09, 0x01, 0x0C, 0x1B, 0x0C, 0x09, 0x00, 
40586
  0x2C, 0x0D, 0x03, 0x00, 0x3A, 0x09, 0x01, 0x0D, 0x1B, 0x0D, 0x09, 0x00, 0x2C, 0x0E, 0x04, 0x00, 
40587
  0x3A, 0x09, 0x01, 0x0E, 0x1B, 0x0E, 0x09, 0x00, 0x2C, 0x0F, 0x05, 0x00, 0x3A, 0x09, 0x01, 0x0F, 
40588
  0x1B, 0x0F, 0x09, 0x00, 0x2C, 0x10, 0x06, 0x00, 0x3A, 0x09, 0x01, 0x10, 0x1B, 0x10, 0x09, 0x00, 
40589
  0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x35, 0x09, 0x11, 0x00, 
40590
  0x1B, 0x11, 0x09, 0x00, 0x2C, 0x13, 0x08, 0x00, 0x25, 0x12, 0x11, 0x13, 0x1E, 0x12, 0x03, 0x00, 
40591
  0x1B, 0x09, 0x00, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x2C, 0x15, 0x09, 0x00, 0x25, 0x14, 0x11, 0x15, 
40592
  0x1E, 0x14, 0x03, 0x00, 0x1B, 0x13, 0x00, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x15, 0x0A, 0x00, 
40593
  0x32, 0x00, 0x15, 0x00, 0x2C, 0x16, 0x0B, 0x00, 0x35, 0x15, 0x16, 0x00, 0x1B, 0x13, 0x15, 0x00, 
40594
  0x1B, 0x09, 0x13, 0x00, 0x1B, 0x11, 0x09, 0x00, 0x25, 0x12, 0x11, 0x00, 0x1B, 0x13, 0x12, 0x00, 
40595
  0x20, 0x0B, 0x09, 0x00, 0x2C, 0x15, 0x0C, 0x00, 0x2C, 0x16, 0x0D, 0x00, 0x32, 0x15, 0x16, 0x00, 
40596
  0x2C, 0x16, 0x0E, 0x00, 0x35, 0x15, 0x16, 0x00, 0x35, 0x16, 0x15, 0x00, 0x1B, 0x14, 0x16, 0x00, 
40597
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x14, 0x0B, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x31, 0x00, 0x00, 0x00, 
40598
  0x2C, 0x17, 0x0F, 0x00, 0x35, 0x16, 0x17, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x1E, 0x0D, 0x03, 0x00, 
40599
  0x1B, 0x18, 0x0D, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x1E, 0x13, 0x03, 0x00, 0x1B, 0x19, 0x00, 0x00, 
40600
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x19, 0x17, 0x00, 0x1B, 0x18, 0x19, 0x00, 0x2C, 0x19, 0x03, 0x00, 
40601
  0x3C, 0x15, 0x19, 0x18, 0x28, 0x18, 0x00, 0x00, 0x28, 0x19, 0x00, 0x00, 0x30, 0x1A, 0x00, 0x00, 
40602
  0x1B, 0x1B, 0x1A, 0x00, 0x30, 0x1C, 0x01, 0x00, 0x1B, 0x1D, 0x1C, 0x00, 0x30, 0x1E, 0x02, 0x00, 
40603
  0x1B, 0x1F, 0x1E, 0x00, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x20, 0x10, 0x00, 
40604
  0x32, 0x20, 0x00, 0x00, 0x2C, 0x21, 0x0F, 0x00, 0x35, 0x20, 0x21, 0x00, 0x01, 0x20, 0x00, 0x00, 
40605
  0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x20, 0x0D, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x1E, 0x13, 0x03, 0x00, 
40606
  0x2C, 0x21, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x21, 0x17, 0x00, 0x1B, 0x20, 0x21, 0x00, 
40607
  0x30, 0x21, 0x03, 0x00, 0x2C, 0x22, 0x12, 0x00, 0x2C, 0x23, 0x04, 0x00, 0x33, 0x22, 0x1B, 0x23, 
40608
  0x2C, 0x22, 0x06, 0x00, 0x33, 0x0E, 0x22, 0x10, 0x2C, 0x22, 0x05, 0x00, 0x2C, 0x23, 0x01, 0x00, 
40609
  0x33, 0x22, 0x0F, 0x23, 0x2C, 0x22, 0x02, 0x00, 0x33, 0x15, 0x22, 0x0C, 0x2C, 0x22, 0x03, 0x00, 
40610
  0x2C, 0x23, 0x13, 0x00, 0x33, 0x22, 0x20, 0x23, 0x2C, 0x22, 0x14, 0x00, 0x33, 0x1D, 0x22, 0x1F, 
40611
  0x2C, 0x22, 0x15, 0x00, 0x32, 0x22, 0x21, 0x00, 0x43, 0x20, 0x00, 0x00, 0x31, 0x20, 0x00, 0x00, 
40612
  0x2C, 0x22, 0x16, 0x00, 0x35, 0x21, 0x22, 0x00, 0x1B, 0x20, 0x21, 0x00, 0x1E, 0x13, 0x02, 0x00, 
40613
  0x1C, 0x04, 0x00, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x23, 0x17, 0x00, 0x35, 0x22, 0x23, 0x00, 
40614
  0x1E, 0x18, 0x05, 0x00, 0x1E, 0x19, 0x03, 0x00, 0x39, 0x22, 0x18, 0x19, 0x1C, 0x02, 0x00, 0x00, 
40615
  0x01, 0x18, 0x00, 0x00, 0x03, 0x20, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 
40616
  0x02, 0x01, 0x05, 0x01, 0x14, 0xDA, 0x85, 0x72, 0xDA, 0x04, 0xDA, 0x85, 0x2A, 0xBF, 0xFF, 0x00, 
40617
  0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x86, 0x4C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 
40618
  0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x78, 
40619
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 
40620
  0x00, 0x10, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x4D, 0xBF, 0xFF, 0x00, 0x11, 
40621
  0xDA, 0x86, 0x4E, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x86, 0x4F, 
40622
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x86, 0x50, 0xBF, 0xFF, 
40623
  0x00, 0x0D, 0xDA, 0x86, 0x51, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x86, 0x52, 0xBF, 0xFF, 0x00, 0x19, 
40624
  0xDA, 0x86, 0x53, 0x00, 0x05, 0x00, 0xDA, 0x85, 0x68, 0x00, 0x05, 0x01, 0xDA, 0x81, 0x96, 0x00, 
40625
  0x05, 0x02, 0xDA, 0x85, 0x55, 0x2D, 0x03, 0x00, 0x11, 0x2B, 0x04, 0x00, 0x10, 0x33, 0x03, 0x04, 
40626
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0xF1, 0x18, 0x00, 0x18, 
40627
  0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x08, 0x02, 0x00, 0x02, 0x07, 
40628
  0x20, 0x01, 0x01, 0x16, 0xCE, 0x02, 0x62, 0x70, 0xDA, 0x04, 0xDA, 0x85, 0x41, 0xD8, 0x07, 0x6F, 
40629
  0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0xDA, 0x85, 0x49, 0xDA, 0x81, 0x6E, 0xDA, 0x83, 0xA6, 0xDA, 
40630
  0x80, 0xDC, 0xDA, 0x3D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
40631
  0x86, 0x4C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5A, 
40632
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x78, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 
40633
  0x00, 0x0F, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x01, 
40634
  0xDA, 0x86, 0x4D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x86, 0x4E, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x31, 
40635
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x86, 0x4F, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 
40636
  0x00, 0x17, 0xDA, 0x86, 0x50, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 0x51, 0xBF, 0xFF, 0x00, 0x18, 
40637
  0xDA, 0x86, 0x52, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x86, 0x53, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 
40638
  0x55, 0x00, 0x20, 0x00, 0xDA, 0x1E, 0x00, 0x20, 0x01, 0xDA, 0x80, 0x87, 0x00, 0x20, 0x02, 0xDA, 
40639
  0x86, 0x54, 0x10, 0x20, 0x04, 0xDA, 0x85, 0x68, 0x2D, 0x03, 0x00, 0x0A, 0x1E, 0x03, 0x08, 0x00, 
40640
  0x32, 0x00, 0x01, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2B, 0x03, 0x01, 0x00, 
40641
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2D, 0x03, 0x00, 0x15, 
40642
  0x2C, 0x04, 0x02, 0x00, 0x29, 0x05, 0x00, 0x00, 0x3C, 0x03, 0x04, 0x05, 0x2C, 0x03, 0x03, 0x00, 
40643
  0x31, 0x03, 0x00, 0x00, 0x41, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 0x05, 0x00, 0x00, 
40644
  0x2C, 0x06, 0x04, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x35, 0x06, 0x07, 0x00, 
40645
  0x28, 0x07, 0x00, 0x00, 0x37, 0x05, 0x06, 0x07, 0x2B, 0x06, 0x00, 0x00, 0x2B, 0x07, 0xFE, 0xFF, 
40646
  0x33, 0x04, 0x06, 0x07, 0x2C, 0x07, 0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2F, 0x06, 0x00, 0x18, 
40647
  0x2D, 0x07, 0x00, 0x18, 0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 
40648
  0x00, 0x00, 0x00, 0x04, 0x0F, 0x01, 0x04, 0xDA, 0x83, 0xA3, 0xDA, 0x04, 0xD0, 0x03, 0x65, 0x72, 
40649
  0x72, 0xDA, 0x82, 0xC9, 0xDA, 0x84, 0xE2, 0xDA, 0x85, 0x41, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 
40650
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0x87, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0x54, 0xBF, 0xFF, 
40651
  0x00, 0x04, 0xDA, 0x85, 0x68, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x04, 0x32, 0x00, 0x01, 
40652
  0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x2A, 0x02, 0x00, 
40653
  0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2D, 0x02, 0x00, 
40654
  0x00, 0x2D, 0x03, 0x00, 0x01, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x03, 0x00, 0x36, 0x02, 0x00, 
40655
  0x00, 0xBF, 0xFF, 0x8B, 0xF8, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40656
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
40657
  0x00, 0x07, 0x8B, 0xF3, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 
40658
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
40659
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40660
  0x05, 0x00, 0x05, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
40661
  0x05, 0x00, 0x05, 0x13, 0x00, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 0x05, 0x00, 0x05, 
40662
  0x07, 0x22, 0x01, 0x01, 0x1A, 0xCE, 0x02, 0x62, 0x63, 0xDA, 0x04, 0xDA, 0x85, 0x2F, 0xDA, 0x86, 
40663
  0x59, 0xDA, 0x85, 0x49, 0xDA, 0x81, 0x6E, 0xDA, 0x83, 0xA6, 0xDA, 0x80, 0xDC, 0xDA, 0x3D, 0xBF, 
40664
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x86, 0x4C, 0xBF, 0xFF, 0x00, 
40665
  0x0B, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 
40666
  0x85, 0x78, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x59, 
40667
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x4D, 0xBF, 0xFF, 
40668
  0x00, 0x11, 0xDA, 0x86, 0x4E, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
40669
  0x86, 0x4F, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x86, 0x50, 
40670
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 0x51, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x86, 0x52, 0xBF, 0xFF, 
40671
  0x00, 0x19, 0xDA, 0x86, 0x53, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x1D, 
40672
  0xDA, 0x86, 0x54, 0x00, 0x22, 0x00, 0xDA, 0x1E, 0x00, 0x22, 0x01, 0xDA, 0x80, 0x87, 0x00, 0x22, 
40673
  0x02, 0xDA, 0x80, 0xFF, 0x00, 0x22, 0x03, 0xDA, 0x80, 0xFA, 0x00, 0x22, 0x04, 0xDA, 0x81, 0x64, 
40674
  0x00, 0x22, 0x05, 0xDA, 0x86, 0x55, 0x11, 0x22, 0x07, 0xDA, 0x85, 0x68, 0x2D, 0x06, 0x00, 0x0A, 
40675
  0x1E, 0x06, 0x09, 0x00, 0x33, 0x00, 0x01, 0x02, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x07, 0x00, 0x00, 
40676
  0x35, 0x06, 0x07, 0x00, 0x2B, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 
40677
  0x35, 0x06, 0x07, 0x00, 0x2D, 0x06, 0x00, 0x15, 0x2C, 0x07, 0x02, 0x00, 0x29, 0x08, 0x00, 0x00, 
40678
  0x3C, 0x06, 0x07, 0x08, 0x2C, 0x06, 0x03, 0x00, 0x31, 0x06, 0x00, 0x00, 0x41, 0x06, 0x00, 0x00, 
40679
  0x1B, 0x07, 0x06, 0x00, 0x30, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x32, 0x08, 0x09, 0x00, 
40680
  0x2C, 0x0A, 0x05, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x37, 0x08, 0x09, 0x0A, 
40681
  0x2B, 0x09, 0x00, 0x00, 0x2B, 0x0A, 0xFE, 0xFF, 0x33, 0x07, 0x09, 0x0A, 0x2C, 0x0A, 0x06, 0x00, 
40682
  0x35, 0x09, 0x0A, 0x00, 0x2F, 0x09, 0x00, 0x18, 0x2F, 0x01, 0x00, 0x19, 0x2D, 0x0A, 0x00, 0x19, 
40683
  0x03, 0x0A, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 
40684
  0x13, 0x01, 0x07, 0xDA, 0x83, 0xA3, 0xDA, 0x04, 0xDA, 0x86, 0x5A, 0xDA, 0x82, 0xC9, 0xDA, 0x84, 
40685
  0xE2, 0xDA, 0x85, 0x2F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 
40686
  0x87, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xFF, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xFA, 0xBF, 
40687
  0xFF, 0x00, 0x04, 0xDA, 0x81, 0x64, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x86, 0x55, 0xBF, 0xFF, 0x00, 
40688
  0x07, 0xDA, 0x85, 0x68, 0x2C, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x07, 0x32, 0x00, 0x01, 0x00, 
40689
  0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x2A, 0x02, 0x00, 0x00, 
40690
  0x32, 0x01, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x00, 
40691
  0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x02, 0x33, 0x02, 0x03, 0x04, 0x2D, 0x02, 0x00, 0x03, 
40692
  0x2D, 0x03, 0x00, 0x04, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x03, 0x00, 0x36, 0x02, 0x00, 0x00, 
40693
  0xBF, 0xFF, 0x8C, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40694
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
40695
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8B, 0xFC, 0x05, 0x00, 0x05, 0x01, 0x07, 
40696
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 
40697
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
40698
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x15, 0x00, 0x15, 
40699
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x9D, 0x00, 
40700
  0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x07, 0x02, 0x02, 0x02, 0x09, 0x25, 0x01, 0x17, 0xDA, 
40701
  0x04, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xDA, 0x81, 0x6E, 0xDA, 0x84, 0xE3, 0xDA, 0x85, 0x1C, 
40702
  0xDA, 0x86, 0x59, 0xDA, 0x85, 0x1D, 0xDA, 0x85, 0x16, 0xDA, 0x85, 0x49, 0xBF, 0xFF, 0x00, 0x00, 
40703
  0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x86, 0x4C, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x83, 
40704
  0x4A, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x85, 0x78, 0xBF, 
40705
  0xFF, 0x00, 0x0E, 0xDA, 0x82, 0x2C, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x85, 0x59, 0xBF, 0xFF, 0x00, 
40706
  0x10, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x4D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
40707
  0x86, 0x4E, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x86, 0x4F, 0xBF, 
40708
  0xFF, 0x00, 0x15, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x86, 0x50, 0xBF, 0xFF, 0x00, 
40709
  0x0D, 0xDA, 0x86, 0x51, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x86, 0x52, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 
40710
  0x86, 0x53, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x85, 0x55, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x86, 0x54, 
40711
  0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x86, 0x55, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x86, 0x56, 0x00, 0x25, 
40712
  0x00, 0xDA, 0x31, 0x00, 0x25, 0x01, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 
40713
  0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x4A, 0x03, 0x02, 0x04, 0x1E, 0x03, 0x1F, 0x00, 
40714
  0x2D, 0x02, 0x00, 0x0A, 0x1E, 0x02, 0x0B, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x33, 0x00, 0x01, 0x02, 
40715
  0x2C, 0x04, 0x03, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x35, 0x02, 0x04, 0x00, 
40716
  0x2B, 0x02, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x05, 0x00, 0x35, 0x02, 0x04, 0x00, 
40717
  0x2D, 0x04, 0x00, 0x15, 0x2C, 0x05, 0x06, 0x00, 0x3B, 0x02, 0x04, 0x05, 0x1E, 0x02, 0x07, 0x00, 
40718
  0x2D, 0x04, 0x00, 0x15, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x07, 0x00, 0x35, 0x04, 0x05, 0x00, 
40719
  0x32, 0x00, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x15, 0x2C, 0x05, 0x08, 0x00, 
40720
  0x29, 0x06, 0x00, 0x00, 0x3C, 0x04, 0x05, 0x06, 0x2F, 0x01, 0x00, 0x18, 0x2F, 0x00, 0x00, 0x19, 
40721
  0x2D, 0x04, 0x00, 0x19, 0x03, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0x0D, 
40722
  0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x26, 0x00, 0x26, 0x00, 0x20, 0x01, 0x22, 0x00, 0x22, 0x01, 
40723
  0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x01, 0x24, 0x00, 0x24, 0x01, 0x24, 0x00, 0x24, 0x00, 
40724
  0x24, 0x00, 0x24, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x22, 0x01, 0x25, 0x00, 0x25, 0x00, 
40725
  0x25, 0x00, 0x25, 0x00, 0x24, 0x00, 0x24, 0x02, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x01, 
40726
  0x26, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0xBF, 0xF6, 0x20, 0x8B, 0xE1, 0x01, 0x00, 0x01, 0x00, 
40727
  0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 
40728
  0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 
40729
  0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x06, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0A, 0x00, 
40730
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
40731
  0x0A, 0x00, 0x0A, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 0x0A, 0x00, 0x0A, 
40732
  0x00, 0x03, 0x04, 0x15, 0x00, 0x03, 0x01, 0x03, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
40733
  0x00, 0x11, 0x00, 0x10, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 
40734
  0x00, 0x0E, 0x00, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 
40735
  0x00, 0x1F, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 
40736
  0x01, 0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 0x03, 0x0A, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 
40737
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x16, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x26, 0x00, 0x26, 
40738
  0x00, 0x26, 0x00, 0x26, 0x00, 0x1B, 0xBF, 0xF0, 0x1E, 0xBF, 0xFC, 0x05, 0x00, 0x05, 0x00, 0x05, 
40739
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40740
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40741
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x16, 0x03, 0x00, 0x03, 0x00, 0x18, 0x00, 0x18, 0x00, 
40742
  0x18, 0x01, 0x03, 0x01, 0x05, 0x01, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0xBF, 0xC0, 0x01, 0x00, 
40743
  0x04, 0x22, 0x03, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 
40744
  0x00, 0x01, 0xDA, 0x86, 0x24, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0x20, 0xBF, 0xFF, 0x00, 0x04, 
40745
  0xDA, 0x82, 0x3B, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0xA5, 0x2D, 0x00, 0x00, 0x01, 0x31, 0x00, 
40746
  0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x00, 0x00, 0x2C, 0x02, 
40747
  0x01, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x33, 0x01, 0x02, 0x03, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x01, 
40748
  0x03, 0x00, 0x2D, 0x02, 0x00, 0x05, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x01, 0x04, 0x00, 0x36, 0x01, 
40749
  0x00, 0x00, 0xBF, 0xFF, 0x8F, 0xDE, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x05, 0x00, 
40750
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40751
  0x05, 0x8F, 0xD7, 0x03, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 
40752
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 
40753
  0x00, 0x03, 0x01, 0x22, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40754
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40755
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFD, 
40756
  0x03, 0xBF, 0xEF, 0x01, 0x23, 0x00, 0x00, 0x00, 0xCF, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
40757
  0xD8, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 
40758
  0x62, 0x72, 0x74, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x62, 0x72, 0x74, 0xCF, 0x06, 
40759
  0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x01, 0x01, 
40760
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x09, 0x32, 0x00, 0x08, 0xCE, 0x06, 0x64, 0x65, 0x66, 0x64, 0x79, 
40761
  0x6E, 0xDA, 0x04, 0xDA, 0x82, 0x95, 0xCE, 0x16, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x6D, 0x75, 
40762
  0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xCE, 0x32, 
40763
  0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6C, 
40764
  0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 
40765
  0x69, 0x6E, 0x67, 0x20, 0x27, 0x2A, 0x27, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 
40766
  0x72, 0x73, 0xD0, 0x0D, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 
40767
  0x78, 0xDA, 0x81, 0x26, 0xD8, 0x05, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x07, 0x6B, 0x65, 0x79, 
40768
  0x77, 0x6F, 0x72, 0x64, 0xDA, 0x80, 0xAB, 0xD0, 0x03, 0x64, 0x79, 0x6E, 0x00, 0x32, 0x00, 0xCF, 
40769
  0x05, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x00, 0x32, 0x01, 0xCF, 0x04, 0x6D, 0x6F, 0x72, 0x65, 0x00, 
40770
  0x32, 0x02, 0xDA, 0x86, 0x60, 0x03, 0x08, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
40771
  0x30, 0x0A, 0x0F, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x18, 0x1D, 0x03, 
40772
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x21, 0x32, 0x04, 0xDA, 0x85, 0xEE, 0x2A, 
40773
  0x32, 0x05, 0xCF, 0x02, 0x6B, 0x77, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 
40774
  0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2C, 0x03, 
40775
  0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x22, 0x04, 0x03, 0x02, 0x1B, 0x03, 
40776
  0x04, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x01, 0x04, 
40777
  0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x3F, 0x04, 0x00, 0x00, 0x07, 0x05, 
40778
  0x04, 0x01, 0x3B, 0x04, 0x00, 0x05, 0x2B, 0x06, 0x2A, 0x00, 0x25, 0x05, 0x06, 0x03, 0x1E, 0x05, 
40779
  0x02, 0x00, 0x25, 0x05, 0x03, 0x04, 0x1B, 0x03, 0x05, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1C, 0x03, 
40780
  0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x01, 0x04, 0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x31, 0x03, 
40781
  0x00, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x05, 
40782
  0x01, 0x00, 0x2B, 0x06, 0xFE, 0xFF, 0x33, 0x00, 0x05, 0x06, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 
40783
  0x06, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 
40784
  0x06, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x33, 0x08, 0x00, 0x09, 0x34, 0x01, 
40785
  0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x80, 0xA4, 
40786
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
40787
  0x0E, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x11, 0x00, 
40788
  0x11, 0x00, 0x2D, 0x00, 0x2A, 0x00, 0x1F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
40789
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
40790
  0x0F, 0x00, 0x03, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0B, 0x00, 
40791
  0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40792
  0x03, 0x00, 0x03, 0xCF, 0x03, 0x67, 0x65, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1B, 0x04, 
40793
  0x03, 0x02, 0x03, 0x00, 0x06, 0xCE, 0x03, 0x67, 0x65, 0x74, 0x3B, 0x00, 0x00, 0x01, 0x28, 0x03, 
40794
  0x00, 0x00, 0x25, 0x03, 0x00, 0x03, 0x1D, 0x03, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x02, 
40795
  0x00, 0x00, 0xCF, 0x05, 0x64, 0x65, 0x66, 0x6E, 0x2D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
40796
  0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x03, 0xCE, 0x05, 0x64, 0x65, 
40797
  0x66, 0x6E, 0x2D, 0xDA, 0x04, 0xDA, 0x85, 0xEC, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x18, 
40798
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x11, 0x45, 0x00, 0x01, 0x0C, 0xCE, 0x04, 0x64, 0x65, 
40799
  0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x81, 0x6E, 0xCE, 0x01, 0x28, 0xDA, 0x86, 0x5D, 0xDA, 0x84, 0x62, 
40800
  0xDA, 0x83, 0xED, 0xDA, 0x81, 0x6F, 0xDA, 0x81, 0x70, 0xCE, 0x03, 0x29, 0x0A, 0x0A, 0xDA, 0x81, 
40801
  0x28, 0xDA, 0x30, 0xDA, 0x85, 0x1D, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0xC8, 0xD0, 0x0B, 0x73, 0x6F, 
40802
  0x75, 0x72, 0x63, 0x65, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0xDA, 0x2C, 0xDA, 0x80, 0xAE, 0xDA, 0x80, 
40803
  0xAB, 0x00, 0x45, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x45, 0x01, 0xDA, 0x86, 0x6A, 0x00, 0x45, 0x02, 
40804
  0xCF, 0x04, 0x64, 0x65, 0x66, 0x6E, 0x01, 0x45, 0x04, 0xDA, 0x37, 0x03, 0x45, 0x06, 0xCF, 0x09, 
40805
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x04, 0x45, 0x07, 0xCF, 0x06, 0x64, 0x6F, 
40806
  0x63, 0x73, 0x74, 0x72, 0x06, 0x45, 0x09, 0xCF, 0x06, 0x66, 0x73, 0x74, 0x61, 0x72, 0x74, 0x0A, 
40807
  0x45, 0x0B, 0xDA, 0x35, 0x0C, 0x45, 0x0D, 0xDA, 0x81, 0x4D, 0x0D, 0x45, 0x0E, 0xCF, 0x05, 0x69, 
40808
  0x6E, 0x64, 0x65, 0x78, 0x0F, 0x45, 0x10, 0xCF, 0x06, 0x61, 0x72, 0x67, 0x6C, 0x65, 0x6E, 0x14, 
40809
  0x45, 0x12, 0xDA, 0x85, 0x68, 0x3F, 0x03, 0x01, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x40, 0x05, 0x00, 
40810
  0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 
40811
  0x00, 0x2B, 0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x0B, 0x0A, 
40812
  0x00, 0x3A, 0x0C, 0x01, 0x0B, 0x1B, 0x0D, 0x0C, 0x00, 0x2B, 0x0E, 0x00, 0x00, 0x3F, 0x0F, 0x0D, 
40813
  0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2C, 0x11, 0x01, 0x00, 0x32, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x02, 
40814
  0x00, 0x35, 0x11, 0x12, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x23, 0x13, 0x0E, 0x10, 0x1E, 0x13, 0x0C, 
40815
  0x00, 0x2C, 0x14, 0x03, 0x00, 0x32, 0x12, 0x14, 0x00, 0x2C, 0x15, 0x04, 0x00, 0x35, 0x14, 0x15, 
40816
  0x00, 0x3A, 0x14, 0x0D, 0x0E, 0x2C, 0x15, 0x05, 0x00, 0x33, 0x12, 0x15, 0x14, 0x2C, 0x16, 0x06, 
40817
  0x00, 0x35, 0x15, 0x16, 0x00, 0x05, 0x0E, 0x0E, 0x01, 0x1C, 0xF4, 0xFF, 0xFF, 0x2C, 0x13, 0x07, 
40818
  0x00, 0x33, 0x12, 0x13, 0x07, 0x2C, 0x14, 0x08, 0x00, 0x35, 0x13, 0x14, 0x00, 0x32, 0x06, 0x13, 
40819
  0x00, 0x2C, 0x15, 0x09, 0x00, 0x35, 0x14, 0x15, 0x00, 0x2C, 0x13, 0x0A, 0x00, 0x31, 0x13, 0x00, 
40820
  0x00, 0x2C, 0x15, 0x0B, 0x00, 0x35, 0x13, 0x15, 0x00, 0x1E, 0x13, 0x0B, 0x00, 0x2C, 0x15, 0x0C, 
40821
  0x00, 0x31, 0x15, 0x00, 0x00, 0x2C, 0x16, 0x0B, 0x00, 0x35, 0x15, 0x16, 0x00, 0x2C, 0x16, 0x0D, 
40822
  0x00, 0x32, 0x16, 0x15, 0x00, 0x43, 0x15, 0x00, 0x00, 0x32, 0x06, 0x15, 0x00, 0x2C, 0x17, 0x09, 
40823
  0x00, 0x35, 0x16, 0x17, 0x00, 0x32, 0x01, 0x0B, 0x00, 0x2C, 0x15, 0x0E, 0x00, 0x35, 0x13, 0x15, 
40824
  0x00, 0x2C, 0x16, 0x0F, 0x00, 0x32, 0x16, 0x00, 0x00, 0x34, 0x13, 0x00, 0x00, 0x45, 0x15, 0x00, 
40825
  0x00, 0x2C, 0x16, 0x10, 0x00, 0x32, 0x16, 0x00, 0x00, 0x34, 0x06, 0x00, 0x00, 0x31, 0x15, 0x00, 
40826
  0x00, 0x45, 0x13, 0x00, 0x00, 0x03, 0x13, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 
40827
  0x01, 0x01, 0x04, 0x1C, 0x01, 0x0A, 0xDA, 0x82, 0xA9, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 0xDA, 
40828
  0x81, 0xF3, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
40829
  0x86, 0x6A, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0x7A, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x37, 0xBF, 
40830
  0xFF, 0x00, 0x06, 0xDA, 0x86, 0x7B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x86, 0x7C, 0x00, 0x1C, 0x00, 
40831
  0xDA, 0x43, 0x00, 0x1C, 0x01, 0xDA, 0x82, 0x9F, 0x03, 0x1C, 0x03, 0xCF, 0x03, 0x69, 0x74, 0x68, 
40832
  0x07, 0x1C, 0x04, 0xDA, 0x82, 0x33, 0x2E, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x3A, 0x02, 
40833
  0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 
40834
  0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x04, 0x06, 0x1E, 0x05, 
40835
  0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x25, 0x06, 0x04, 0x07, 0x1E, 0x06, 
40836
  0x03, 0x00, 0x2F, 0x03, 0x00, 0x07, 0x1C, 0x05, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x06, 0x32, 0x07, 
40837
  0x03, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2D, 0x07, 0x00, 0x04, 0x23, 0x06, 
40838
  0x00, 0x07, 0x1E, 0x06, 0x04, 0x00, 0x05, 0x07, 0x00, 0x01, 0x31, 0x07, 0x00, 0x00, 0x36, 0x01, 
40839
  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x15, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 
40840
  0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x09, 
40841
  0x03, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x01, 0x0F, 0xBF, 0xFF, 0x0D, 0x02, 0x0F, 0x00, 0x0F, 0x00, 
40842
  0x0F, 0x00, 0x0F, 0x01, 0x11, 0x00, 0x11, 0x00, 0x0D, 0x00, 0x22, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
40843
  0x0D, 0x11, 0x0E, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x02, 0x07, 0xBF, 0xFF, 0x05, 
40844
  0x0B, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x05, 0x02, 0x05, 0x01, 0x11, 
40845
  0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x05, 
40846
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
40847
  0x00, 0x07, 0x01, 0x12, 0xBF, 0xFD, 0x05, 0x04, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
40848
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 
40849
  0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
40850
  0x16, 0x00, 0x16, 0x02, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
40851
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xD2, 0x00, 0x00, 
40852
  0x00, 0x00, 0x05, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x05, 0x01, 0xDA, 0x86, 0x6A, 0x00, 0x05, 0x02, 
40853
  0xDA, 0x86, 0x72, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x00, 0x03, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 
40854
  0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0x44, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
40855
  0x03, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0x63, 0xD8, 0x09, 0x6D, 0x61, 
40856
  0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0x63, 0xCF, 0x07, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x3F, 
40857
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xCE, 
40858
  0x07, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x3F, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 
40859
  0x05, 0x01, 0xDA, 0x86, 0x83, 0x1E, 0x00, 0x03, 0x00, 0x29, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 
40860
  0x00, 0x2A, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x72, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 
40861
  0x2B, 0x00, 0x2B, 0xCF, 0x0B, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x32, 
40862
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 0x02, 0x02, 0x02, 0x01, 0x1B, 0x00, 0x06, 0xCE, 
40863
  0x0B, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x32, 0xDA, 0x04, 0xDA, 0x30, 
40864
  0x00, 0x1B, 0x00, 0xDA, 0x31, 0x00, 0x1B, 0x01, 0xDA, 0x33, 0x00, 0x1B, 0x02, 0xDA, 0x86, 0x86, 
40865
  0x02, 0x1B, 0x04, 0xDA, 0x3A, 0x04, 0x1B, 0x06, 0xDA, 0x39, 0x0A, 0x1B, 0x08, 0xDA, 0x7E, 0x28, 
40866
  0x04, 0x00, 0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 
40867
  0x06, 0x05, 0x00, 0x28, 0x08, 0x00, 0x00, 0x25, 0x07, 0x08, 0x04, 0x1E, 0x07, 0x02, 0x00, 0x03, 
40868
  0x06, 0x00, 0x00, 0x3A, 0x07, 0x01, 0x04, 0x1B, 0x08, 0x07, 0x00, 0x32, 0x06, 0x08, 0x00, 0x2C, 
40869
  0x0A, 0x00, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x0B, 0x00, 0x00, 0x4A, 
40870
  0x0A, 0x0B, 0x04, 0x1E, 0x0A, 0x09, 0x00, 0x3A, 0x0B, 0x01, 0x04, 0x32, 0x08, 0x0B, 0x00, 0x35, 
40871
  0x08, 0x00, 0x00, 0x32, 0x06, 0x08, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x49, 
40872
  0x04, 0x01, 0x04, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x84, 0x07, 0x0A, 0x00, 0x0A, 
40873
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x11, 0x01, 0x0C, 
40874
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 
40875
  0x01, 0x15, 0x00, 0x0E, 0x00, 0x0E, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0C, 0xBF, 0xFD, 
40876
  0x03, 0xBF, 0xF5, 0x01, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 
40877
  0x65, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 0xCF, 0x09, 
40878
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
40879
  0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x33, 0x00, 0x0B, 0xCE, 0x09, 0x63, 0x6F, 
40880
  0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x33, 0x00, 0xDA, 
40881
  0x81, 0x5C, 0x00, 0x33, 0x01, 0xDA, 0x86, 0x8B, 0x00, 0x33, 0x02, 0xDA, 0x7E, 0x03, 0x33, 0x04, 
40882
  0xDA, 0x1E, 0x04, 0x32, 0x03, 0xDA, 0x43, 0x06, 0x32, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
40883
  0x30, 0x30, 0x47, 0x0A, 0x30, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 
40884
  0x30, 0x30, 0x30, 0x30, 0x48, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
40885
  0x49, 0x1A, 0x28, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4A, 0x22, 0x28, 0x0D, 
40886
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4B, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 
40887
  0x00, 0x3B, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 0x00, 
40888
  0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x2A, 0x00, 0x3A, 0x07, 0x00, 
40889
  0x03, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 0x07, 
40890
  0x00, 0x1E, 0x09, 0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 0x0A, 
40891
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 0x03, 
40892
  0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 0x08, 
40893
  0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 0x0C, 
40894
  0x00, 0x09, 0x0E, 0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 
40895
  0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 0x00, 
40896
  0x00, 0x27, 0x0E, 0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x2B, 0x0A, 0x00, 
40897
  0x00, 0x48, 0x09, 0x07, 0x0A, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 
40898
  0x00, 0x2A, 0x02, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD6, 0xFF, 
40899
  0xFF, 0x03, 0x02, 0x00, 0x00, 0x83, 0x83, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40900
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40901
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40902
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40903
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40904
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40905
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0B, 0x66, 0x66, 
40906
  0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xD7, 0x01, 0xCD, 0x03, 0xFF, 0x00, 0x00, 
40907
  0x0E, 0x01, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x07, 0x29, 0x01, 0x01, 0x09, 0xCE, 0x0B, 0x66, 
40908
  0x66, 0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0xDA, 0x04, 0xD0, 0x0B, 0x6D, 0x61, 
40909
  0x70, 0x2D, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0xD0, 0x04, 0x6C, 0x61, 0x7A, 0x79, 0xDA, 
40910
  0x83, 0x10, 0xD0, 0x0B, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x6C, 0x61, 0x7A, 0x79, 0xD0, 
40911
  0x0B, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0xDA, 0x81, 0xCA, 0xDA, 
40912
  0x82, 0xC9, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x84, 0x2E, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x0E, 0x64, 
40913
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 0x6D, 0x61, 0x6E, 0x67, 0x6C, 0x65, 0x00, 0x29, 0x00, 
40914
  0xCF, 0x0B, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x02, 0x29, 0x05, 
40915
  0xCF, 0x0B, 0x6D, 0x61, 0x70, 0x2D, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x05, 0x29, 0x06, 
40916
  0xCF, 0x04, 0x6C, 0x61, 0x7A, 0x79, 0x06, 0x29, 0x01, 0xDA, 0x86, 0x93, 0x0B, 0x29, 0x07, 0xDA, 
40917
  0x86, 0x9C, 0x13, 0x29, 0x09, 0xCF, 0x03, 0x6C, 0x69, 0x62, 0x1A, 0x29, 0x0B, 0xCF, 0x08, 0x6C, 
40918
  0x61, 0x7A, 0x79, 0x2D, 0x6C, 0x69, 0x62, 0x2C, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x05, 0x1B, 
40919
  0x05, 0x04, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x3A, 0x04, 0x01, 0x06, 0x1B, 0x06, 0x04, 0x00, 0x2E, 
40920
  0x01, 0x00, 0x00, 0x20, 0x05, 0x03, 0x00, 0x2D, 0x04, 0x00, 0x02, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
40921
  0x04, 0x05, 0x00, 0x1B, 0x07, 0x04, 0x00, 0x1E, 0x06, 0x03, 0x00, 0x28, 0x08, 0x00, 0x00, 0x1C, 
40922
  0x05, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 
40923
  0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x1E, 0x06, 0x05, 0x00, 0x30, 0x0B, 0x00, 0x00, 0x35, 
40924
  0x0C, 0x0B, 0x00, 0x1B, 0x0A, 0x0C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x1B, 
40925
  0x0B, 0x0A, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x2C, 0x0D, 0x04, 0x00, 0x33, 0x0C, 0x0B, 0x0D, 0x2C, 
40926
  0x0C, 0x05, 0x00, 0x33, 0x00, 0x0C, 0x09, 0x2C, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x33, 
40927
  0x0C, 0x07, 0x0D, 0x31, 0x06, 0x00, 0x00, 0x44, 0x0C, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x00, 0x32, 
40928
  0x0D, 0x0C, 0x00, 0x2C, 0x0D, 0x06, 0x00, 0x36, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x02, 0xFE, 
40929
  0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x01, 0x08, 0xCE, 0x05, 0x64, 0x65, 0x6C, 
40930
  0x61, 0x79, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x86, 0x9B, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
40931
  0x86, 0x9C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x86, 0x9D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x93, 
40932
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x86, 0x9C, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x86, 0x9E, 0x00, 0x04, 
40933
  0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x54, 0x01, 0x04, 0x01, 0xCF, 0x07, 0x5F, 
40934
  0x30, 0x30, 0x30, 0x30, 0x36, 0x55, 0x28, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x30, 0x02, 
40935
  0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 
40936
  0x00, 0x01, 0x0D, 0x02, 0x08, 0xDA, 0x04, 0xDA, 0x83, 0x10, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x86, 
40937
  0x9B, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x86, 0x9C, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x86, 0x9D, 0xBF, 
40938
  0xFF, 0x01, 0x01, 0xDA, 0x86, 0x93, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x86, 0x9C, 0xBF, 0xFF, 0x01, 
40939
  0x09, 0xDA, 0x86, 0x9E, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x86, 0xA1, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
40940
  0x86, 0xA2, 0x2D, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x03, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 
40941
  0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x01, 0x2D, 0x00, 0x01, 0x00, 0x31, 0x00, 
40942
  0x00, 0x00, 0x2C, 0x01, 0x00, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 0x00, 
40943
  0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0x87, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
40944
  0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 
40945
  0x00, 0x1C, 0x00, 0x1C, 0x8F, 0x87, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x03, 0x00, 0x00, 
40946
  0x00, 0x8F, 0x81, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40947
  0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
40948
  0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x13, 0x00, 0x1C, 0x00, 0x1C, 
40949
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40950
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
40951
  0x00, 0x05, 0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0xDA, 0x84, 0x2F, 0xC9, 0xD7, 0x00, 
40952
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x05, 0x00, 
40953
  0x02, 0xCE, 0x0E, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 0x6D, 0x61, 0x6E, 0x67, 0x6C, 
40954
  0x65, 0xDA, 0x04, 0xDA, 0x84, 0x17, 0xCE, 0x01, 0x5F, 0xD8, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 
40955
  0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x00, 0x05, 0x00, 
40956
  0xDA, 0x81, 0x86, 0x00, 0x05, 0x01, 0xDA, 0x86, 0x9A, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 
40957
  0x00, 0x33, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8F, 0x7F, 0x05, 
40958
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xC9, 0xC9, 0xC9, 0xC9, 0xCF, 0x05, 0x70, 0x72, 
40959
  0x69, 0x6E, 0x66, 0xD8, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xCF, 0x0C, 0x66, 0x69, 0x62, 0x65, 
40960
  0x72, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 0x85, 0x9A, 0xDA, 0x82, 0x52, 0xDA, 0x82, 
40961
  0x4C, 0xDA, 0x84, 0x86, 0xDA, 0x84, 0x84, 0xCF, 0x02, 0x25, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
40962
  0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 
40963
  0x25, 0x3D, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x1E, 0x06, 0x00, 0x00, 0xCD, 0x7F, 
40964
  0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x8C, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 
40965
  0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 
40966
  0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0F, 0x03, 0x03, 0x04, 
40967
  0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 
40968
  0x0F, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 
40969
  0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 
40970
  0x83, 0x02, 0x00, 0x08, 0x02, 0xDA, 0x86, 0xAA, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 
40971
  0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 
40972
  0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0x91, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 
40973
  0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0xCF, 0x0D, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
40974
  0x72, 0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x0D, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
40975
  0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xCF, 0x01, 0x2B, 0xDA, 0x82, 0x78, 0xCF, 0x08, 0x67, 
40976
  0x72, 0x6F, 0x75, 0x70, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x02, 
40977
  0x02, 0x02, 0x01, 0x18, 0x00, 0x09, 0xCE, 0x08, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x2D, 0x62, 0x79, 
40978
  0xDA, 0x04, 0xDA, 0x30, 0x00, 0x18, 0x00, 0xDA, 0x31, 0x00, 0x18, 0x01, 0xDA, 0x33, 0x00, 0x18, 
40979
  0x02, 0xDA, 0x86, 0xB1, 0x01, 0x18, 0x04, 0xDA, 0x39, 0x01, 0x17, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
40980
  0x30, 0x30, 0x30, 0x33, 0x70, 0x04, 0x17, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
40981
  0x6F, 0x07, 0x17, 0x07, 0xDA, 0x1E, 0x0A, 0x17, 0x08, 0xDA, 0x80, 0x87, 0x0C, 0x15, 0x09, 0xDA, 
40982
  0x42, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 
40983
  0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x12, 0x00, 0x3A, 0x05, 0x01, 0x06, 0x1B, 0x07, 0x05, 
40984
  0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x3B, 0x05, 0x04, 
40985
  0x08, 0x1B, 0x09, 0x05, 0x00, 0x1E, 0x05, 0x05, 0x00, 0x32, 0x09, 0x07, 0x00, 0x2C, 0x0B, 0x00, 
40986
  0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x40, 0x0A, 0x00, 
40987
  0x00, 0x3C, 0x04, 0x08, 0x0A, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xEF, 0xFF, 0xFF, 0x03, 0x04, 0x00, 
40988
  0x00, 0x86, 0xD7, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
40989
  0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x12, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 
40990
  0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFC, 0x03, 
40991
  0x00, 0x03, 0xBF, 0xF9, 0x01, 0xCF, 0x0F, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 
40992
  0x63, 0x68, 0x72, 0x6F, 0x6F, 0x74, 0xD8, 0x0F, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 
40993
  0x2D, 0x63, 0x68, 0x72, 0x6F, 0x6F, 0x74, 0xDA, 0x82, 0x1B, 0xDA, 0x82, 0x18, 0xCF, 0x06, 0x67, 
40994
  0x65, 0x74, 0x2D, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x02, 0x03, 
40995
  0x02, 0x18, 0x00, 0x08, 0xCE, 0x06, 0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0xDA, 0x04, 0xDA, 0x85, 
40996
  0xBD, 0xDA, 0x82, 0x51, 0x00, 0x18, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x18, 0x01, 0xDA, 0x83, 0x72, 
40997
  0x00, 0x18, 0x02, 0xDA, 0x85, 0xBB, 0x00, 0x18, 0x03, 0xDA, 0x86, 0xB8, 0x00, 0x18, 0x04, 0xDA, 
40998
  0x81, 0x15, 0x00, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x57, 0x03, 0x13, 
40999
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x56, 0x06, 0x13, 0x07, 0xDA, 0x3A, 0x1B, 
41000
  0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x01, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 
41001
  0x06, 0x0F, 0x00, 0x3A, 0x05, 0x01, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 
41002
  0x08, 0x00, 0x00, 0x35, 0x05, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x35, 
41003
  0x08, 0x09, 0x00, 0x1E, 0x08, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3B, 
41004
  0x04, 0x04, 0x07, 0x49, 0x06, 0x01, 0x06, 0x1C, 0xF2, 0xFF, 0xFF, 0x28, 0x06, 0x00, 0x00, 0x25, 
41005
  0x05, 0x06, 0x04, 0x1E, 0x05, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x86, 
41006
  0x56, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x1F, 
41007
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41008
  0x00, 0x31, 0x00, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
41009
  0xCF, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xDA, 0x83, 0x9B, 
41010
  0xCF, 0x0E, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2A, 
41011
  0xDA, 0x81, 0xB2, 0xCF, 0x0C, 0x2A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 
41012
  0x2A, 0xDA, 0x85, 0x83, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 
41013
  0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xCF, 0x10, 0x62, 0x75, 
41014
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xD8, 0x10, 
41015
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 
41016
  0xCF, 0x0E, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2A, 
41017
  0xDA, 0x81, 0xA0, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xDA, 
41018
  0x81, 0x60, 0xCF, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6E, 0x65, 
41019
  0x77, 0xD8, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6E, 0x65, 0x77, 
41020
  0xCF, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x83, 0x08, 0xCF, 0x01, 0x2D, 
41021
  0xDA, 0x84, 0x16, 0xDA, 0x85, 0xF1, 0xDA, 0x85, 0xE5, 0xCF, 0x07, 0x67, 0x65, 0x6F, 0x6D, 0x65, 
41022
  0x61, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x03, 0x29, 0x00, 
41023
  0x0B, 0xCE, 0x07, 0x67, 0x65, 0x6F, 0x6D, 0x65, 0x61, 0x6E, 0xDA, 0x04, 0xDA, 0x40, 0xD8, 0x08, 
41024
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0xDA, 0x86, 0x04, 0x00, 0x29, 0x00, 0xDA, 0x81, 
41025
  0x5C, 0x00, 0x29, 0x01, 0xDA, 0x86, 0xCA, 0x04, 0x16, 0x03, 0xDA, 0x83, 0xC5, 0x04, 0x11, 0x00, 
41026
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x6D, 0x07, 0x11, 0x05, 0xCF, 0x07, 0x5F, 0x30, 
41027
  0x30, 0x30, 0x30, 0x30, 0x6C, 0x0A, 0x11, 0x06, 0xDA, 0x1E, 0x16, 0x29, 0x03, 0xDA, 0x83, 0xC5, 
41028
  0x17, 0x29, 0x04, 0xCF, 0x05, 0x74, 0x6F, 0x74, 0x61, 0x6C, 0x17, 0x25, 0x00, 0xCF, 0x07, 0x5F, 
41029
  0x30, 0x30, 0x30, 0x30, 0x30, 0x6F, 0x1A, 0x25, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41030
  0x30, 0x6E, 0x1D, 0x25, 0x07, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 
41031
  0x02, 0x03, 0x00, 0x1E, 0x02, 0x13, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 
41032
  0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x09, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x1B, 
41033
  0x06, 0x04, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x04, 0x07, 0x00, 0x06, 
41034
  0x03, 0x03, 0x04, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF8, 0xFF, 0xFF, 0x3F, 0x04, 0x00, 0x00, 0x0C, 
41035
  0x05, 0x03, 0x04, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2B, 
41036
  0x03, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 
41037
  0x06, 0x05, 0x00, 0x1F, 0x06, 0x0A, 0x00, 0x3A, 0x05, 0x00, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x31, 
41038
  0x07, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x05, 0x08, 0x00, 0x06, 0x03, 0x03, 0x05, 0x05, 
41039
  0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xF7, 0xFF, 0xFF, 0x0C, 0x05, 0x03, 0x04, 0x31, 
41040
  0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x36, 0x06, 0x00, 0x00, 0x82, 0xDC, 0x07, 0x00, 0x07, 
41041
  0x00, 0x07, 0x00, 0x03, 0x02, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41042
  0x00, 0x07, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1A, 
41043
  0x00, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 
41044
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x12, 
41045
  0x00, 0x2A, 0x00, 0x07, 0x00, 0x07, 0x01, 0x11, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCF, 0x10, 
41046
  0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 
41047
  0xD8, 0x10, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6C, 0x69, 0x73, 0x74, 
41048
  0x65, 0x6E, 0xCF, 0x04, 0x62, 0x6E, 0x6F, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x13, 0x01, 
41049
  0x01, 0x01, 0x01, 0x00, 0x02, 0xCE, 0x04, 0x62, 0x6E, 0x6F, 0x74, 0x13, 0x00, 0x00, 0x00, 0x03, 
41050
  0x00, 0x00, 0x00, 0xCF, 0x07, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0xDA, 0x81, 0xAB, 0xCF, 
41051
  0x08, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x64, 0x69, 0x72, 0xDA, 0x81, 0x33, 0xCF, 0x0A, 0x66, 0x66, 
41052
  0x69, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x74, 
41053
  0x72, 0x75, 0x63, 0x74, 0xDA, 0x82, 0xF9, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x04, 
41054
  0x02, 0x04, 0x09, 0x3C, 0x01, 0x29, 0xCE, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 
41055
  0x64, 0x64, 0xDA, 0x04, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xCE, 0x16, 0x66, 0x69, 0x6C, 0x65, 
41056
  0x20, 0x25, 0x73, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 0x69, 
41057
  0x73, 0x74, 0xDA, 0x81, 0x49, 0xDA, 0x81, 0x3E, 0xDA, 0x80, 0xF1, 0xDA, 0x81, 0x28, 0xDA, 0x81, 
41058
  0x67, 0xCE, 0x1A, 0x62, 0x61, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x25, 0x73, 0x20, 0x2D, 
41059
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x25, 0x73, 0xBF, 0xFF, 0x00, 
41060
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
41061
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 
41062
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 
41063
  0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 
41064
  0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 
41065
  0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 
41066
  0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 
41067
  0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
41068
  0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 
41069
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 
41070
  0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x1A, 
41071
  0xDA, 0x82, 0xF6, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0xF7, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x82, 
41072
  0xF8, 0x00, 0x3C, 0x00, 0xDA, 0x81, 0x39, 0x00, 0x3C, 0x01, 0xDA, 0x82, 0xFA, 0x00, 0x3C, 0x02, 
41073
  0xDA, 0x84, 0x2C, 0x00, 0x3C, 0x03, 0xDA, 0x82, 0xFB, 0x00, 0x3C, 0x04, 0xDA, 0x82, 0xF9, 0x05, 
41074
  0x3C, 0x06, 0xDA, 0x84, 0x2C, 0x08, 0x3C, 0x08, 0xDA, 0x81, 0x2A, 0x0D, 0x3C, 0x0A, 0xDA, 0x81, 
41075
  0x78, 0x13, 0x3C, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x66, 0x1A, 0x31, 0x0D, 
41076
  0xDA, 0x84, 0x2D, 0x1E, 0x30, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x68, 0x21, 
41077
  0x30, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x67, 0x24, 0x30, 0x10, 0xDA, 0x81, 
41078
  0x15, 0x2E, 0x04, 0x00, 0x00, 0x20, 0x02, 0x03, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x1C, 0x02, 0x00, 
41079
  0x00, 0x1B, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2D, 0x08, 0x00, 0x02, 0x35, 0x07, 0x08, 
41080
  0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x32, 0x01, 0x09, 0x00, 0x2C, 0x0A, 0x01, 
41081
  0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x05, 0x00, 
41082
  0x00, 0x2C, 0x0B, 0x02, 0x00, 0x32, 0x0B, 0x01, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 
41083
  0x00, 0x2C, 0x0C, 0x04, 0x00, 0x25, 0x0B, 0x0A, 0x0C, 0x1E, 0x0B, 0x1B, 0x00, 0x33, 0x00, 0x06, 
41084
  0x03, 0x2D, 0x0D, 0x00, 0x1A, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x31, 0x01, 0x00, 
41085
  0x00, 0x2C, 0x0E, 0x05, 0x00, 0x35, 0x0C, 0x0E, 0x00, 0x1B, 0x0E, 0x0C, 0x00, 0x28, 0x0F, 0x00, 
41086
  0x00, 0x49, 0x0C, 0x0E, 0x0F, 0x1B, 0x0F, 0x0C, 0x00, 0x1F, 0x0F, 0x0E, 0x00, 0x3A, 0x0C, 0x0E, 
41087
  0x0F, 0x1B, 0x10, 0x0C, 0x00, 0x33, 0x01, 0x08, 0x10, 0x2C, 0x11, 0x06, 0x00, 0x35, 0x0C, 0x11, 
41088
  0x00, 0x33, 0x06, 0x08, 0x10, 0x2C, 0x12, 0x06, 0x00, 0x35, 0x11, 0x12, 0x00, 0x33, 0x00, 0x0C, 
41089
  0x11, 0x31, 0x03, 0x00, 0x00, 0x35, 0x12, 0x04, 0x00, 0x49, 0x0F, 0x0E, 0x0F, 0x1C, 0xF3, 0xFF, 
41090
  0xFF, 0x03, 0x0D, 0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x25, 0x0C, 0x0A, 0x0D, 0x1E, 0x0C, 0x05, 
41091
  0x00, 0x33, 0x00, 0x01, 0x06, 0x31, 0x03, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x1C, 0x36, 0x0D, 0x00, 
41092
  0x00, 0x2C, 0x0D, 0x08, 0x00, 0x33, 0x0D, 0x01, 0x0A, 0x2C, 0x0D, 0x03, 0x00, 0x36, 0x0D, 0x00, 
41093
  0x00, 0xBF, 0xFF, 0x91, 0x9A, 0x03, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
41094
  0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 
41095
  0x01, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 0x05, 0x00, 0x05, 
41096
  0x00, 0x05, 0x02, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x07, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 
41097
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x33, 
41098
  0x00, 0x33, 0x00, 0x33, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 
41099
  0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0x05, 0x0D, 
41100
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xDB, 0x01, 
41101
  0xCF, 0x0B, 0x2A, 0x65, 0x72, 0x72, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x2A, 0xDA, 0x84, 0xE2, 
41102
  0xCF, 0x05, 0x78, 0x70, 0x72, 0x69, 0x6E, 0xD8, 0x05, 0x78, 0x70, 0x72, 0x69, 0x6E, 0xCF, 0x06, 
41103
  0x64, 0x6F, 0x63, 0x2D, 0x6F, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x01, 0x01, 
41104
  0x01, 0x07, 0x32, 0x00, 0x0E, 0xCE, 0x06, 0x64, 0x6F, 0x63, 0x2D, 0x6F, 0x66, 0xDA, 0x04, 0xD2, 
41105
  0x02, 0x00, 0xD2, 0x01, 0x00, 0xDA, 0x00, 0xDA, 0x81, 0xB6, 0xDA, 0x82, 0xC7, 0xDA, 0x08, 0xD7, 
41106
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x15, 0x7E, 0x00, 0x0A, 0xCE, 0x12, 
41107
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x74, 
41108
  0x72, 0x79, 0xDA, 0x04, 0xD0, 0x05, 0x72, 0x65, 0x64, 0x65, 0x66, 0xDA, 0x82, 0xC7, 0xDA, 0x1C, 
41109
  0xD0, 0x03, 0x76, 0x61, 0x72, 0xCE, 0x02, 0x20, 0x28, 0xCE, 0x01, 0x29, 0xDA, 0x81, 0x28, 0xDA, 
41110
  0x59, 0xD0, 0x06, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0xD0, 0x04, 0x6B, 0x69, 0x6E, 0x64, 0xDA, 
41111
  0x08, 0xCE, 0x04, 0x20, 0x20, 0x20, 0x20, 0xDA, 0x84, 0x83, 0xDA, 0x03, 0xDA, 0x06, 0xCE, 0x09, 
41112
  0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0xDA, 0x84, 0x6C, 0xD7, 0x00, 0xCD, 0x02, 
41113
  0xFE, 0x00, 0x00, 0x49, 0x04, 0x01, 0x04, 0x0A, 0x80, 0x8A, 0x00, 0x18, 0x2D, 0xCE, 0x0A, 0x64, 
41114
  0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xDA, 0x04, 0xD0, 0x09, 0x64, 0x6F, 0x63, 
41115
  0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0xDA, 0x81, 0x26, 0xDA, 0x83, 0x3A, 0xD5, 0x03, 0xD0, 0x04, 
41116
  0x63, 0x6F, 0x64, 0x65, 0xD2, 0x02, 0x00, 0xCE, 0x05, 0x1B, 0x5B, 0x39, 0x37, 0x6D, 0xCE, 0x05, 
41117
  0x1B, 0x5B, 0x33, 0x39, 0x6D, 0xD0, 0x04, 0x62, 0x6F, 0x6C, 0x64, 0xD2, 0x02, 0x00, 0xCE, 0x04, 
41118
  0x1B, 0x5B, 0x31, 0x6D, 0xCE, 0x05, 0x1B, 0x5B, 0x32, 0x32, 0x6D, 0xD0, 0x07, 0x69, 0x74, 0x61, 
41119
  0x6C, 0x69, 0x63, 0x73, 0xD2, 0x02, 0x00, 0xCE, 0x04, 0x1B, 0x5B, 0x34, 0x6D, 0xCE, 0x05, 0x1B, 
41120
  0x5B, 0x32, 0x34, 0x6D, 0xD5, 0x03, 0xDA, 0x86, 0xF8, 0xD2, 0x02, 0x00, 0xCE, 0x01, 0x60, 0xDA, 
41121
  0x87, 0x05, 0xDA, 0x86, 0xFC, 0xD2, 0x02, 0x00, 0xCE, 0x02, 0x2A, 0x2A, 0xDA, 0x87, 0x07, 0xDA, 
41122
  0x87, 0x00, 0xD2, 0x02, 0x00, 0xDA, 0x84, 0x64, 0xDA, 0x84, 0x64, 0xDA, 0x3D, 0xDA, 0x86, 0xF9, 
41123
  0xDA, 0x81, 0x6E, 0xDA, 0x86, 0xFA, 0xDA, 0x81, 0x28, 0x00, 0x80, 0x8A, 0x00, 0xDA, 0x14, 0x00, 
41124
  0x80, 0x8A, 0x01, 0xCF, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, 0x00, 0x80, 0x8A, 0x02, 0xCF, 0x06, 
41125
  0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x00, 0x80, 0x8A, 0x03, 0xCF, 0x08, 0x63, 0x6F, 0x6C, 0x6F, 
41126
  0x72, 0x69, 0x7A, 0x65, 0x00, 0x80, 0x8A, 0x04, 0xCF, 0x0A, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 
41127
  0x72, 0x6D, 0x61, 0x74, 0x04, 0x80, 0x8A, 0x06, 0xDA, 0x87, 0x0C, 0x04, 0x0E, 0x01, 0xCF, 0x07, 
41128
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x52, 0x0F, 0x80, 0x8A, 0x07, 0xCF, 0x09, 0x6D, 0x61, 0x78, 
41129
  0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x1A, 0x80, 0x8A, 0x0A, 0xCF, 0x09, 0x68, 0x61, 0x73, 0x2D, 
41130
  0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x1F, 0x80, 0x8A, 0x0C, 0xCF, 0x0A, 0x64, 0x65, 0x6C, 0x69, 0x6D, 
41131
  0x69, 0x74, 0x65, 0x72, 0x73, 0x21, 0x80, 0x8A, 0x0E, 0xCF, 0x05, 0x6D, 0x6F, 0x64, 0x65, 0x73, 
41132
  0x23, 0x80, 0x8A, 0x10, 0xCF, 0x0B, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 
41133
  0x65, 0x24, 0x80, 0x8A, 0x11, 0xCF, 0x06, 0x63, 0x75, 0x72, 0x73, 0x6F, 0x72, 0x26, 0x80, 0x8A, 
41134
  0x13, 0xDA, 0x84, 0x46, 0x28, 0x80, 0x8A, 0x15, 0xDA, 0x83, 0x1D, 0x2A, 0x80, 0x8A, 0x17, 0xCF, 
41135
  0x02, 0x63, 0x6E, 0x2C, 0x80, 0x8A, 0x19, 0xCF, 0x03, 0x63, 0x2B, 0x2B, 0x2E, 0x80, 0x8A, 0x1B, 
41136
  0xCF, 0x04, 0x63, 0x2B, 0x3D, 0x6E, 0x30, 0x80, 0x8A, 0x1D, 0xCF, 0x09, 0x73, 0x6B, 0x69, 0x70, 
41137
  0x77, 0x68, 0x69, 0x74, 0x65, 0x32, 0x80, 0x8A, 0x1F, 0xCF, 0x08, 0x73, 0x6B, 0x69, 0x70, 0x6C, 
41138
  0x69, 0x6E, 0x65, 0x34, 0x80, 0x8A, 0x21, 0xCF, 0x03, 0x75, 0x6C, 0x3F, 0x36, 0x80, 0x8A, 0x23, 
41139
  0xCF, 0x03, 0x6F, 0x6C, 0x3F, 0x38, 0x80, 0x8A, 0x25, 0xCF, 0x04, 0x66, 0x63, 0x62, 0x3F, 0x3A, 
41140
  0x80, 0x8A, 0x27, 0xCF, 0x03, 0x6E, 0x6C, 0x3F, 0x3B, 0x80, 0x8A, 0x28, 0xCF, 0x0C, 0x70, 0x61, 
41141
  0x72, 0x73, 0x65, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x3D, 0x80, 0x8A, 0x2A, 0xCF, 0x08, 
41142
  0x67, 0x65, 0x74, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x3F, 0x80, 0x8A, 0x2C, 0xCF, 0x04, 0x70, 0x75, 
41143
  0x73, 0x68, 0x41, 0x80, 0x8A, 0x2E, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x69, 
41144
  0x73, 0x74, 0x43, 0x80, 0x8A, 0x30, 0xCF, 0x0D, 0x61, 0x64, 0x64, 0x2D, 0x63, 0x6F, 0x64, 0x65, 
41145
  0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x45, 0x80, 0x8A, 0x32, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 
41146
  0x2D, 0x66, 0x63, 0x62, 0x47, 0x80, 0x8A, 0x34, 0xCF, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 
41147
  0x69, 0x63, 0x62, 0x49, 0x80, 0x8A, 0x36, 0xCF, 0x0D, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x69, 0x7A, 
41148
  0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x56, 0x6B, 0x37, 0xCF, 0x0A, 0x66, 0x69, 0x72, 0x73, 0x74, 
41149
  0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x5B, 0x6B, 0x3A, 0xCF, 0x07, 0x66, 0x6C, 0x2D, 0x6F, 0x70, 0x65, 
41150
  0x6E, 0x60, 0x6B, 0x3B, 0xCF, 0x08, 0x66, 0x6C, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x71, 0x80, 
41151
  0x8A, 0x39, 0xDA, 0x85, 0x68, 0x72, 0x80, 0x8A, 0x3A, 0xCF, 0x0E, 0x63, 0x75, 0x72, 0x72, 0x65, 
41152
  0x6E, 0x74, 0x2D, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x74, 0x80, 0x8A, 0x3C, 0xCF, 0x0B, 0x65, 
41153
  0x6D, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x76, 0x80, 0x8A, 0x3E, 0xCF, 0x07, 
41154
  0x65, 0x6D, 0x69, 0x74, 0x2D, 0x6E, 0x6C, 0x78, 0x80, 0x8A, 0x40, 0xCF, 0x09, 0x65, 0x6D, 0x69, 
41155
  0x74, 0x2D, 0x77, 0x6F, 0x72, 0x64, 0x7A, 0x80, 0x8A, 0x42, 0xCF, 0x09, 0x65, 0x6D, 0x69, 0x74, 
41156
  0x2D, 0x63, 0x6F, 0x64, 0x65, 0x7C, 0x80, 0x8A, 0x44, 0xCF, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 
41157
  0x6E, 0x6F, 0x64, 0x65, 0x7D, 0x80, 0x89, 0x45, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
41158
  0x69, 0x80, 0x80, 0x80, 0x89, 0x47, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x68, 0x80, 
41159
  0x83, 0x80, 0x89, 0x48, 0xDA, 0x83, 0xC8, 0x20, 0x02, 0x03, 0x00, 0x2B, 0x05, 0x04, 0x00, 0x1C, 
41160
  0x02, 0x00, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x01, 0x03, 0x00, 0x1B, 
41161
  0x07, 0x01, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x2B, 0x09, 0x50, 0x00, 0x32, 
41162
  0x08, 0x09, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x07, 
41163
  0x08, 0x07, 0x08, 0x1B, 0x07, 0x08, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x4A, 0x0A, 0x0B, 0x03, 0x1E, 
41164
  0x0A, 0x03, 0x00, 0x1B, 0x09, 0x03, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x31, 
41165
  0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1B, 
41166
  0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 
41167
  0x0B, 0x04, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x44, 0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x30, 
41168
  0x0F, 0x00, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2B, 0x11, 0x00, 0x00, 0x40, 0x12, 0x00, 0x00, 0x1B, 
41169
  0x13, 0x12, 0x00, 0x30, 0x14, 0x01, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x30, 0x16, 0x02, 0x00, 0x1B, 
41170
  0x17, 0x16, 0x00, 0x30, 0x18, 0x03, 0x00, 0x1B, 0x19, 0x18, 0x00, 0x30, 0x1A, 0x04, 0x00, 0x1B, 
41171
  0x1B, 0x1A, 0x00, 0x30, 0x1C, 0x05, 0x00, 0x1B, 0x1D, 0x1C, 0x00, 0x30, 0x1E, 0x06, 0x00, 0x1B, 
41172
  0x1F, 0x1E, 0x00, 0x30, 0x20, 0x07, 0x00, 0x1B, 0x21, 0x20, 0x00, 0x30, 0x22, 0x08, 0x00, 0x1B, 
41173
  0x23, 0x22, 0x00, 0x30, 0x24, 0x09, 0x00, 0x1B, 0x25, 0x24, 0x00, 0x30, 0x26, 0x0A, 0x00, 0x1B, 
41174
  0x27, 0x26, 0x00, 0x28, 0x28, 0x00, 0x00, 0x30, 0x29, 0x0B, 0x00, 0x1B, 0x2A, 0x29, 0x00, 0x30, 
41175
  0x2B, 0x0C, 0x00, 0x1B, 0x2C, 0x2B, 0x00, 0x30, 0x2D, 0x0D, 0x00, 0x1B, 0x2E, 0x2D, 0x00, 0x30, 
41176
  0x2F, 0x0E, 0x00, 0x1B, 0x30, 0x2F, 0x00, 0x30, 0x31, 0x0F, 0x00, 0x1B, 0x32, 0x31, 0x00, 0x30, 
41177
  0x33, 0x10, 0x00, 0x1B, 0x34, 0x33, 0x00, 0x30, 0x35, 0x11, 0x00, 0x1B, 0x36, 0x35, 0x00, 0x30, 
41178
  0x28, 0x12, 0x00, 0x2B, 0x38, 0x00, 0x00, 0x3A, 0x37, 0x00, 0x38, 0x2B, 0x39, 0x28, 0x00, 0x25, 
41179
  0x38, 0x39, 0x37, 0x1E, 0x38, 0x1C, 0x00, 0x35, 0x37, 0x1F, 0x00, 0x07, 0x37, 0x11, 0x01, 0x2B, 
41180
  0x39, 0x00, 0x00, 0x33, 0x00, 0x39, 0x37, 0x2C, 0x3A, 0x05, 0x00, 0x35, 0x39, 0x3A, 0x00, 0x1B, 
41181
  0x37, 0x39, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x39, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 
41182
  0x39, 0x07, 0x00, 0x1B, 0x3A, 0x39, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x39, 0x08, 0x00, 0x1C, 
41183
  0x02, 0x00, 0x00, 0x2C, 0x39, 0x07, 0x00, 0x1B, 0x3B, 0x39, 0x00, 0x33, 0x3A, 0x37, 0x3B, 0x2C, 
41184
  0x3C, 0x09, 0x00, 0x35, 0x39, 0x3C, 0x00, 0x3F, 0x3C, 0x37, 0x00, 0x32, 0x39, 0x3C, 0x00, 0x45, 
41185
  0x39, 0x00, 0x00, 0x31, 0x39, 0x00, 0x00, 0x45, 0x39, 0x00, 0x00, 0x31, 0x39, 0x00, 0x00, 0x35, 
41186
  0x3C, 0x2C, 0x00, 0x2B, 0x37, 0x00, 0x00, 0x31, 0x37, 0x00, 0x00, 0x35, 0x37, 0x28, 0x00, 0x2C, 
41187
  0x38, 0x07, 0x00, 0x31, 0x38, 0x00, 0x00, 0x41, 0x38, 0x00, 0x00, 0x1B, 0x39, 0x38, 0x00, 0x2B, 
41188
  0x3A, 0x00, 0x00, 0x30, 0x3B, 0x13, 0x00, 0x1B, 0x3C, 0x3B, 0x00, 0x30, 0x3D, 0x14, 0x00, 0x1B, 
41189
  0x3E, 0x3D, 0x00, 0x30, 0x3F, 0x15, 0x00, 0x1B, 0x40, 0x3F, 0x00, 0x30, 0x41, 0x16, 0x00, 0x1B, 
41190
  0x42, 0x41, 0x00, 0x30, 0x43, 0x17, 0x00, 0x1B, 0x44, 0x43, 0x00, 0x1B, 0x45, 0x13, 0x00, 0x28, 
41191
  0x47, 0x00, 0x00, 0x49, 0x46, 0x45, 0x47, 0x1B, 0x47, 0x46, 0x00, 0x1F, 0x47, 0x08, 0x00, 0x3A, 
41192
  0x46, 0x45, 0x47, 0x1B, 0x48, 0x46, 0x00, 0x35, 0x46, 0x3E, 0x00, 0x32, 0x48, 0x06, 0x00, 0x35, 
41193
  0x46, 0x44, 0x00, 0x49, 0x47, 0x45, 0x47, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x39, 0x00, 0x00, 0xCD, 
41194
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x0F, 0xCE, 0x0B, 0x74, 0x6F, 
41195
  0x67, 0x67, 0x6C, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0xDA, 0x04, 0xDA, 0x82, 0x51, 0xBF, 0xFF, 
41196
  0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
41197
  0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 
41198
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 
41199
  0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 
41200
  0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0x00, 0x11, 0x00, 0xDA, 0x81, 0x78, 
41201
  0x00, 0x11, 0x01, 0xDA, 0x87, 0x14, 0x02, 0x11, 0x03, 0xCF, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 
41202
  0x65, 0x05, 0x11, 0x05, 0xCF, 0x06, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x73, 0x2D, 0x03, 0x00, 0x0E, 
41203
  0x3B, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2D, 0x05, 0x00, 0x0C, 0x3B, 0x04, 0x05, 0x00, 
41204
  0x1B, 0x05, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 
41205
  0x2D, 0x07, 0x00, 0x0E, 0x3C, 0x07, 0x00, 0x06, 0x1E, 0x03, 0x03, 0x00, 0x2B, 0x06, 0x01, 0x00, 
41206
  0x1C, 0x02, 0x00, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 
41207
  0xBF, 0xFF, 0x8C, 0xC4, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x05, 0x01, 
41208
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
41209
  0x0D, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x04, 
41210
  0x01, 0x0F, 0xCE, 0x01, 0x63, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 
41211
  0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
41212
  0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 
41213
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 
41214
  0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 
41215
  0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 
41216
  0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x1D, 0x2D, 0x02, 
41217
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x11, 0x3B, 0x01, 0x02, 0x03, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 
41218
  0x8C, 0xCE, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
41219
  0x01, 0x01, 0x00, 0x05, 0x01, 0x11, 0xCE, 0x02, 0x63, 0x6E, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 
41220
  0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 
41221
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 
41222
  0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 
41223
  0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 
41224
  0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 
41225
  0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 
41226
  0x15, 0xDA, 0x83, 0x1D, 0x00, 0x05, 0x00, 0xDA, 0x32, 0x00, 0x05, 0x01, 0xDA, 0x87, 0x16, 0x2D, 
41227
  0x03, 0x00, 0x11, 0x06, 0x02, 0x00, 0x03, 0x2D, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x04, 0x02, 0x03, 
41228
  0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xCF, 0x19, 0x00, 0x19, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
41229
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x12, 0xCE, 0x03, 0x63, 
41230
  0x2B, 0x2B, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41231
  0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 
41232
  0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 
41233
  0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
41234
  0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 
41235
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 
41236
  0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 
41237
  0xDA, 0x87, 0x16, 0x00, 0x08, 0x00, 0xDA, 0x87, 0x17, 0x03, 0x08, 0x02, 0xDA, 0x39, 0x2D, 0x02, 
41238
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x11, 0x3B, 0x01, 0x02, 0x03, 0x1B, 0x02, 0x01, 0x00, 0x2D, 0x03, 
41239
  0x00, 0x11, 0x05, 0x01, 0x03, 0x01, 0x2F, 0x01, 0x00, 0x11, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 
41240
  0x8C, 0xD0, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 
41241
  0x10, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x08, 0x01, 0x14, 0xCE, 0x04, 
41242
  0x63, 0x2B, 0x3D, 0x6E, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 
41243
  0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 
41244
  0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 
41245
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 
41246
  0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
41247
  0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 
41248
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 
41249
  0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0x00, 0x08, 0x00, 0xDA, 
41250
  0x32, 0x00, 0x08, 0x01, 0xDA, 0x87, 0x18, 0x03, 0x08, 0x03, 0xDA, 0x39, 0x2D, 0x03, 0x00, 0x00, 
41251
  0x2D, 0x04, 0x00, 0x11, 0x3B, 0x02, 0x03, 0x04, 0x1B, 0x03, 0x02, 0x00, 0x2D, 0x04, 0x00, 0x11, 
41252
  0x06, 0x02, 0x04, 0x00, 0x2F, 0x02, 0x00, 0x11, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xD1, 
41253
  0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x12, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x12, 0xCD, 
41254
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x01, 0x14, 0xCE, 0x09, 0x73, 0x6B, 
41255
  0x69, 0x70, 0x77, 0x68, 0x69, 0x74, 0x65, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 
41256
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 
41257
  0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
41258
  0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 
41259
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 
41260
  0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 
41261
  0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 
41262
  0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 
41263
  0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0x00, 0x0C, 0x00, 0xDA, 0x87, 0x19, 0x00, 0x0C, 0x01, 0xDA, 
41264
  0x1E, 0x2D, 0x01, 0x00, 0x11, 0x2D, 0x03, 0x00, 0x15, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 
41265
  0x20, 0x1E, 0x03, 0x05, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x05, 0x02, 0x04, 0x01, 0x2F, 0x02, 0x00, 
41266
  0x11, 0x1C, 0xF9, 0xFF, 0xFF, 0x2D, 0x03, 0x00, 0x11, 0x08, 0x02, 0x03, 0x01, 0x03, 0x02, 0x00, 
41267
  0x00, 0xBF, 0xFF, 0x8C, 0xD4, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x1E, 
41268
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 
41269
  0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x13, 0x01, 0x17, 0xCE, 0x08, 0x73, 0x6B, 0x69, 0x70, 0x6C, 
41270
  0x69, 0x6E, 0x65, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41271
  0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 
41272
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 
41273
  0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 
41274
  0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 
41275
  0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 
41276
  0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 
41277
  0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 
41278
  0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0x00, 0x13, 0x00, 0xDA, 0x87, 0x1A, 0x00, 
41279
  0x13, 0x01, 0xDA, 0x1E, 0x03, 0x09, 0x03, 0xDA, 0x80, 0x87, 0x03, 0x09, 0x03, 0xCF, 0x07, 0x5F, 
41280
  0x30, 0x30, 0x30, 0x30, 0x35, 0x53, 0x2D, 0x01, 0x00, 0x11, 0x2D, 0x03, 0x00, 0x15, 0x35, 0x02, 
41281
  0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x04, 0x00, 0x4B, 0x04, 0x03, 0x0A, 0x1B, 0x02, 
41282
  0x04, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x05, 0x00, 0x2D, 0x04, 
41283
  0x00, 0x11, 0x05, 0x03, 0x04, 0x01, 0x2F, 0x03, 0x00, 0x11, 0x1C, 0xF4, 0xFF, 0xFF, 0x2D, 0x03, 
41284
  0x00, 0x19, 0x35, 0x02, 0x03, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x08, 0x03, 0x04, 0x01, 0x03, 0x03, 
41285
  0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xD8, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x0C, 0x00, 0x19, 0x00, 
41286
  0x20, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x05, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 
41287
  0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
41288
  0x08, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0x1A, 0xCE, 0x03, 0x75, 0x6C, 0x3F, 0xDA, 0x04, 0xBF, 
41289
  0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 
41290
  0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 
41291
  0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 
41292
  0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 
41293
  0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
41294
  0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 
41295
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 
41296
  0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 
41297
  0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0x00, 0x18, 0x00, 0xDA, 0x87, 0x1B, 
41298
  0x02, 0x18, 0x02, 0xDA, 0x1E, 0x07, 0x18, 0x03, 0xCF, 0x02, 0x78, 0x31, 0x09, 0x18, 0x04, 0xCF, 
41299
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x55, 0x0C, 0x12, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41300
  0x30, 0x30, 0x35, 0x56, 0x12, 0x17, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x54, 
41301
  0x2D, 0x02, 0x00, 0x15, 0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x2B, 0x01, 0x01, 0x00, 
41302
  0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x17, 0x35, 0x01, 0x03, 0x00, 0x1B, 0x03, 0x01, 0x00, 
41303
  0x26, 0x01, 0x03, 0x20, 0x1B, 0x04, 0x01, 0x00, 0x1E, 0x01, 0x0D, 0x00, 0x26, 0x05, 0x02, 0x2A, 
41304
  0x1B, 0x06, 0x05, 0x00, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 0x03, 0x00, 0x00, 
41305
  0x26, 0x07, 0x02, 0x2D, 0x1B, 0x05, 0x07, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x05, 0x03, 0x00, 
41306
  0x2B, 0x07, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 
41307
  0xBF, 0xFF, 0x8C, 0xDF, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
41308
  0x14, 0x00, 0x05, 0x02, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x02, 0x0D, 0x00, 0x09, 0x00, 0x09, 
41309
  0x00, 0x09, 0x00, 0x09, 0x00, 0x1D, 0x00, 0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
41310
  0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x29, 
41311
  0x01, 0x1C, 0xCE, 0x03, 0x6F, 0x6C, 0x3F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 
41312
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 
41313
  0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
41314
  0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 
41315
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 
41316
  0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 
41317
  0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 
41318
  0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 
41319
  0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 
41320
  0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0x00, 0x29, 0x00, 0xDA, 0x87, 
41321
  0x1C, 0x00, 0x29, 0x01, 0xDA, 0x85, 0xAE, 0x05, 0x0E, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41322
  0x30, 0x35, 0x57, 0x14, 0x29, 0x03, 0xCF, 0x02, 0x63, 0x31, 0x19, 0x29, 0x04, 0xCF, 0x02, 0x63, 
41323
  0x32, 0x1A, 0x29, 0x02, 0xCF, 0x02, 0x63, 0x2A, 0x1D, 0x23, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41324
  0x30, 0x30, 0x35, 0x58, 0x2D, 0x01, 0x00, 0x11, 0x2D, 0x04, 0x00, 0x15, 0x35, 0x03, 0x04, 0x00, 
41325
  0x2B, 0x05, 0x30, 0x00, 0x47, 0x04, 0x03, 0x05, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x04, 0x07, 0x00, 
41326
  0x2D, 0x06, 0x00, 0x15, 0x35, 0x05, 0x06, 0x00, 0x2B, 0x07, 0x39, 0x00, 0x48, 0x06, 0x05, 0x07, 
41327
  0x1B, 0x02, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x04, 0x00, 
41328
  0x2D, 0x04, 0x00, 0x19, 0x35, 0x03, 0x04, 0x00, 0x1C, 0xF0, 0xFF, 0xFF, 0x2D, 0x03, 0x00, 0x15, 
41329
  0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2B, 0x02, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 
41330
  0x2D, 0x04, 0x00, 0x17, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x11, 
41331
  0x2F, 0x01, 0x00, 0x11, 0x26, 0x06, 0x03, 0x2E, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x06, 0x04, 0x00, 
41332
  0x26, 0x08, 0x04, 0x20, 0x1B, 0x05, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 0x07, 0x00, 
41333
  0x1E, 0x05, 0x05, 0x00, 0x2D, 0x07, 0x00, 0x11, 0x08, 0x06, 0x02, 0x07, 0x07, 0x06, 0x06, 0xFE, 
41334
  0x03, 0x06, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xE5, 0x05, 0x01, 0x15, 0x00, 
41335
  0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x28, 0x00, 0x28, 0x00, 0x24, 0x00, 
41336
  0x24, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x38, 0x00, 0x38, 0x00, 0x05, 0x01, 
41337
  0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x00, 
41338
  0x05, 0x01, 0x07, 0x01, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x21, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
41339
  0x0B, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0xCD, 0x00, 
41340
  0xDC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x14, 0x01, 0x17, 0xCE, 0x04, 0x66, 0x63, 0x62, 
41341
  0x3F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 
41342
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 
41343
  0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 
41344
  0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 
41345
  0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 
41346
  0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 
41347
  0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 
41348
  0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 
41349
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 
41350
  0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0x00, 0x14, 0x00, 0xDA, 
41351
  0x87, 0x1D, 0x2D, 0x02, 0x00, 0x15, 0x35, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x01, 0x00, 0x31, 0x02, 
41352
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x17, 0x35, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x02, 0x00, 0x31, 0x03, 
41353
  0x00, 0x00, 0x2D, 0x04, 0x00, 0x17, 0x35, 0x03, 0x04, 0x00, 0x2B, 0x05, 0x60, 0x00, 0x25, 0x04, 
41354
  0x05, 0x01, 0x1E, 0x04, 0x04, 0x00, 0x25, 0x04, 0x01, 0x02, 0x1E, 0x04, 0x02, 0x00, 0x25, 0x04, 
41355
  0x02, 0x03, 0x1E, 0x04, 0x03, 0x00, 0x2B, 0x01, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x04, 0x00, 
41356
  0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xEB, 0x22, 0x00, 0x22, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 
41357
  0x26, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
41358
  0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0xCD, 0x00, 0xDC, 
41359
  0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0x18, 0xCE, 0x03, 0x6E, 0x6C, 0x3F, 0xDA, 
41360
  0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 
41361
  0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 
41362
  0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41363
  0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 
41364
  0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 
41365
  0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
41366
  0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 
41367
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 
41368
  0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 
41369
  0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 
41370
  0x1D, 0x00, 0x05, 0x00, 0xDA, 0x87, 0x1E, 0x2D, 0x02, 0x00, 0x15, 0x35, 0x01, 0x02, 0x00, 0x2B, 
41371
  0x03, 0x0A, 0x00, 0x25, 0x02, 0x03, 0x01, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xEC, 0x1E, 
41372
  0x00, 0x1E, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 
41373
  0x02, 0x02, 0x0A, 0x01, 0x1D, 0xCE, 0x08, 0x67, 0x65, 0x74, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 
41374
  0x04, 0xDA, 0x84, 0x84, 0xDA, 0x3D, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 
41375
  0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 
41376
  0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 
41377
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 
41378
  0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
41379
  0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 
41380
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 
41381
  0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 
41382
  0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 
41383
  0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 
41384
  0xFF, 0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 
41385
  0x28, 0xDA, 0x87, 0x1F, 0x00, 0x0A, 0x00, 0xDA, 0x81, 0x4F, 0x00, 0x0A, 0x01, 0xDA, 0x81, 0x50, 
41386
  0x00, 0x0A, 0x02, 0xDA, 0x87, 0x20, 0x05, 0x0A, 0x03, 0xDA, 0x81, 0x50, 0x2D, 0x04, 0x00, 0x00, 
41387
  0x3F, 0x03, 0x04, 0x00, 0x32, 0x01, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 
41388
  0x1B, 0x03, 0x04, 0x00, 0x2D, 0x05, 0x00, 0x00, 0x33, 0x05, 0x00, 0x03, 0x2C, 0x05, 0x01, 0x00, 
41389
  0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xF4, 0x15, 0x00, 0x15, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
41390
  0x0D, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
41391
  0x03, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x1C, 0xCE, 0x04, 0x70, 0x75, 0x73, 0x68, 0xDA, 0x04, 
41392
  0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 
41393
  0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 
41394
  0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41395
  0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 
41396
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 
41397
  0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 
41398
  0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 
41399
  0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 
41400
  0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 
41401
  0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 
41402
  0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 
41403
  0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x00, 0x04, 0x01, 0xDA, 
41404
  0x87, 0x21, 0x2D, 0x02, 0x00, 0x13, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 
41405
  0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xF6, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xCD, 0x00, 0xDC, 
41406
  0x00, 0x00, 0x0E, 0x03, 0x03, 0x03, 0x00, 0x32, 0x01, 0x26, 0xCE, 0x0A, 0x70, 0x61, 0x72, 0x73, 
41407
  0x65, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 
41408
  0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 
41409
  0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 
41410
  0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 
41411
  0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 
41412
  0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 
41413
  0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 
41414
  0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 
41415
  0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 
41416
  0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 
41417
  0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 
41418
  0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 
41419
  0x2C, 0xDA, 0x87, 0x21, 0x00, 0x32, 0x00, 0xCF, 0x0C, 0x62, 0x75, 0x6C, 0x6C, 0x65, 0x74, 0x2D, 
41420
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x00, 0x32, 0x01, 0xCF, 0x07, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 
41421
  0x6C, 0x00, 0x32, 0x02, 0xDA, 0x87, 0x0C, 0x00, 0x32, 0x03, 0xDA, 0x87, 0x22, 0x02, 0x32, 0x05, 
41422
  0xCF, 0x0A, 0x74, 0x65, 0x6D, 0x70, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x03, 0x32, 0x06, 0xCF, 
41423
  0x09, 0x6F, 0x6C, 0x64, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x05, 0x32, 0x07, 0xCF, 0x0E, 0x63, 
41424
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x08, 0x0E, 0x0A, 
41425
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x59, 0x10, 0x1C, 0x0B, 0xDA, 0x1E, 0x1C, 0x2D, 
41426
  0x0A, 0xCF, 0x0B, 0x69, 0x74, 0x65, 0x6D, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x23, 0x2D, 
41427
  0x0B, 0xCF, 0x0A, 0x69, 0x74, 0x65, 0x6D, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x31, 0x01, 0x00, 
41428
  0x00, 0x40, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2D, 0x06, 0x00, 0x13, 0x2F, 0x05, 0x00, 
41429
  0x13, 0x1B, 0x07, 0x02, 0x00, 0x2D, 0x0A, 0x00, 0x15, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 
41430
  0x00, 0x1E, 0x09, 0x04, 0x00, 0x47, 0x0B, 0x07, 0x02, 0x1B, 0x08, 0x0B, 0x00, 0x1C, 0x02, 0x00, 
41431
  0x00, 0x1B, 0x08, 0x0A, 0x00, 0x1E, 0x08, 0x1F, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x1B, 0x0B, 0x0A, 
41432
  0x00, 0x1E, 0x0A, 0x0A, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x1B, 0x35, 0x0C, 0x0D, 
41433
  0x00, 0x2D, 0x0D, 0x00, 0x1D, 0x35, 0x0C, 0x0D, 0x00, 0x06, 0x0D, 0x02, 0x0C, 0x06, 0x0D, 0x0D, 
41434
  0x0B, 0x1B, 0x09, 0x0D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x1B, 0x0A, 0x09, 
41435
  0x00, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x1D, 0x35, 0x07, 0x09, 
41436
  0x00, 0x1C, 0x0C, 0x00, 0x00, 0x40, 0x09, 0x00, 0x00, 0x1B, 0x0B, 0x09, 0x00, 0x2F, 0x0B, 0x00, 
41437
  0x13, 0x31, 0x0A, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x28, 0x35, 0x07, 0x09, 0x00, 0x2F, 0x05, 0x00, 
41438
  0x13, 0x31, 0x0B, 0x00, 0x00, 0x2D, 0x0C, 0x00, 0x2C, 0x35, 0x09, 0x0C, 0x00, 0x1C, 0xDA, 0xFF, 
41439
  0xFF, 0x2F, 0x06, 0x00, 0x13, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x2C, 0x35, 0x08, 0x09, 
41440
  0x00, 0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x8C, 0xF9, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
41441
  0x01, 0x05, 0x01, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x15, 0x00, 0x0C, 
41442
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x02, 0x16, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 
41443
  0x00, 0x0B, 0x01, 0x15, 0x00, 0x15, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 
41444
  0x09, 0xBF, 0xFF, 0x07, 0x04, 0x07, 0x00, 0x07, 0x01, 0x1D, 0x00, 0x1D, 0x01, 0x09, 0x01, 0x07, 
41445
  0x00, 0x07, 0x01, 0x07, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 
41446
  0x00, 0x07, 0xBF, 0xF4, 0x05, 0x0D, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xED, 0x03, 
41447
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x03, 0x03, 0x03, 0x06, 0x1A, 0x01, 0x21, 0xCE, 0x0D, 0x61, 
41448
  0x64, 0x64, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x84, 
41449
  0x62, 0xDA, 0x84, 0x63, 0xDA, 0x84, 0x83, 0xDA, 0x81, 0x28, 0xDA, 0x86, 0xA6, 0xD0, 0x02, 0x63, 
41450
  0x62, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 
41451
  0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 
41452
  0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41453
  0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 
41454
  0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 
41455
  0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
41456
  0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 
41457
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 
41458
  0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 
41459
  0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 
41460
  0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 
41461
  0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 
41462
  0x2E, 0xDA, 0x87, 0x22, 0x00, 0x1A, 0x00, 0xDA, 0x87, 0x0C, 0x00, 0x1A, 0x01, 0xDA, 0x35, 0x00, 
41463
  0x1A, 0x02, 0xDA, 0x36, 0x00, 0x1A, 0x03, 0xDA, 0x87, 0x23, 0x08, 0x1A, 0x04, 0xCF, 0x0D, 0x72, 
41464
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x2C, 0x04, 0x00, 0x00, 
41465
  0x32, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x02, 0x00, 
41466
  0x32, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 
41467
  0x32, 0x01, 0x02, 0x00, 0x2D, 0x07, 0x00, 0x2A, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x07, 0x02, 0x00, 
41468
  0x33, 0x04, 0x07, 0x06, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x06, 0x05, 0x00, 
41469
  0x32, 0x06, 0x07, 0x00, 0x40, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x2C, 
41470
  0x35, 0x07, 0x08, 0x00, 0x2D, 0x08, 0x00, 0x1F, 0x35, 0x06, 0x08, 0x00, 0x2D, 0x08, 0x00, 0x1D, 
41471
  0x36, 0x08, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x0F, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
41472
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 
41473
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
41474
  0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
41475
  0x0A, 0x01, 0x01, 0x01, 0x00, 0x1B, 0x01, 0x21, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 
41476
  0x66, 0x63, 0x62, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41477
  0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 
41478
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 
41479
  0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 
41480
  0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 
41481
  0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 
41482
  0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 
41483
  0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 
41484
  0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 
41485
  0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 
41486
  0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 
41487
  0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 
41488
  0x21, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 0x00, 
41489
  0x1B, 0x00, 0xDA, 0x87, 0x0C, 0x00, 0x1B, 0x01, 0xDA, 0x87, 0x24, 0x09, 0x1B, 0x05, 0xDA, 0x35, 
41490
  0x0A, 0x1B, 0x06, 0xDA, 0x36, 0x2B, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 
41491
  0x1B, 0x35, 0x02, 0x03, 0x00, 0x2D, 0x04, 0x00, 0x1F, 0x35, 0x03, 0x04, 0x00, 0x31, 0x00, 0x00, 
41492
  0x00, 0x2D, 0x05, 0x00, 0x1B, 0x35, 0x04, 0x05, 0x00, 0x2D, 0x05, 0x00, 0x11, 0x2D, 0x06, 0x00, 
41493
  0x11, 0x2D, 0x08, 0x00, 0x15, 0x35, 0x07, 0x08, 0x00, 0x1E, 0x07, 0x0B, 0x00, 0x2D, 0x09, 0x00, 
41494
  0x25, 0x35, 0x08, 0x09, 0x00, 0x1E, 0x08, 0x02, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 
41495
  0x1F, 0x35, 0x08, 0x09, 0x00, 0x2D, 0x06, 0x00, 0x11, 0x2D, 0x09, 0x00, 0x1D, 0x35, 0x08, 0x09, 
41496
  0x00, 0x1C, 0xF4, 0xFF, 0xFF, 0x33, 0x00, 0x05, 0x06, 0x2D, 0x07, 0x00, 0x30, 0x36, 0x07, 0x00, 
41497
  0x00, 0xBF, 0xFF, 0x8D, 0x15, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 
41498
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 
41499
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x12, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 
41500
  0x00, 0x07, 0xBF, 0xFC, 0x05, 0x05, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
41501
  0x08, 0x01, 0x01, 0x01, 0x00, 0x12, 0x01, 0x23, 0xCE, 0x09, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 
41502
  0x69, 0x63, 0x62, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41503
  0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 
41504
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 
41505
  0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 
41506
  0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 
41507
  0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 
41508
  0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 
41509
  0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 
41510
  0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 
41511
  0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 
41512
  0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 
41513
  0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 
41514
  0x21, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 0xBF, 
41515
  0xFF, 0x00, 0x32, 0xDA, 0x87, 0x24, 0x00, 0x12, 0x00, 0xDA, 0x87, 0x0C, 0x00, 0x12, 0x01, 0xDA, 
41516
  0x87, 0x25, 0x00, 0x12, 0x02, 0xDA, 0x87, 0x50, 0x01, 0x12, 0x03, 0xDA, 0x35, 0x02, 0x12, 0x04, 
41517
  0xDA, 0x36, 0x1B, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x11, 0x2D, 0x04, 0x00, 0x11, 0x2D, 0x06, 
41518
  0x00, 0x15, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x0A, 0x00, 0x2D, 0x07, 0x00, 0x1F, 0x35, 0x06, 
41519
  0x07, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x2D, 0x06, 0x00, 0x1D, 0x35, 0x02, 0x06, 0x00, 0x23, 0x06, 
41520
  0x02, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF5, 0xFF, 0xFF, 0x33, 0x00, 
41521
  0x03, 0x04, 0x2D, 0x05, 0x00, 0x30, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x22, 0x05, 0x01, 
41522
  0x05, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 
41523
  0x1B, 0x00, 0x1B, 0x01, 0x0B, 0x00, 0x07, 0x00, 0x25, 0xBF, 0xFC, 0x05, 0x05, 0x05, 0x00, 0x05, 
41524
  0x00, 0x05, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x17, 0x01, 0x01, 0x01, 0x07, 0x52, 0x01, 0x02, 0x2A, 
41525
  0xCE, 0x0D, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x69, 0x7A, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 
41526
  0x04, 0xDA, 0x81, 0x6E, 0xDA, 0x86, 0xF8, 0xDA, 0x82, 0x51, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 
41527
  0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0xDA, 0x86, 0xFC, 0xDA, 0x87, 0x00, 0xDA, 0x2C, 0xBF, 
41528
  0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 
41529
  0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 
41530
  0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 
41531
  0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 
41532
  0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
41533
  0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 
41534
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 
41535
  0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 
41536
  0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 
41537
  0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 
41538
  0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 
41539
  0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 
41540
  0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x24, 
41541
  0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x25, 0x00, 0x52, 0x00, 0xDA, 0x85, 0x37, 0x00, 0x52, 0x01, 
41542
  0xDA, 0x87, 0x26, 0x01, 0x52, 0x03, 0xCF, 0x06, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x73, 0x05, 0x52, 
41543
  0x05, 0xCF, 0x05, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0x06, 0x52, 0x06, 0xCF, 0x0C, 0x74, 0x6F, 0x6B, 
41544
  0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x08, 0x52, 0x08, 0xCF, 0x05, 0x64, 0x65, 
41545
  0x6C, 0x69, 0x6D, 0x0A, 0x52, 0x0A, 0xCF, 0x08, 0x65, 0x6E, 0x64, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 
41546
  0x0B, 0x4E, 0x0B, 0xDA, 0x43, 0x0D, 0x4E, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 
41547
  0x5A, 0x11, 0x4E, 0x0F, 0xDA, 0x81, 0x64, 0x13, 0x19, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41548
  0x30, 0x36, 0x30, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x31, 
41549
  0x04, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x30, 
41550
  0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x30, 0x09, 0x01, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2B, 
41551
  0x0B, 0x00, 0x00, 0x3F, 0x0C, 0x00, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x23, 0x0C, 0x0B, 0x0D, 0x1E, 
41552
  0x0C, 0x3F, 0x00, 0x3B, 0x0E, 0x00, 0x0B, 0x1B, 0x0F, 0x0E, 0x00, 0x26, 0x0E, 0x0F, 0x0A, 0x1B, 
41553
  0x10, 0x0E, 0x00, 0x1E, 0x10, 0x03, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x26, 
41554
  0x11, 0x0F, 0x20, 0x1B, 0x0E, 0x11, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x35, 0x10, 0x0A, 0x00, 0x1C, 
41555
  0x31, 0x00, 0x00, 0x26, 0x10, 0x0F, 0x60, 0x1E, 0x10, 0x05, 0x00, 0x2C, 0x11, 0x01, 0x00, 0x31, 
41556
  0x11, 0x00, 0x00, 0x35, 0x11, 0x08, 0x00, 0x1C, 0x2B, 0x00, 0x00, 0x2C, 0x11, 0x01, 0x00, 0x31, 
41557
  0x11, 0x00, 0x00, 0x2D, 0x12, 0x00, 0x0E, 0x35, 0x11, 0x12, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 
41558
  0x13, 0x02, 0x00, 0x35, 0x12, 0x13, 0x00, 0x1E, 0x12, 0x1F, 0x00, 0x26, 0x11, 0x0F, 0x5C, 0x1E, 
41559
  0x11, 0x08, 0x00, 0x05, 0x06, 0x06, 0x01, 0x05, 0x0B, 0x0B, 0x01, 0x3B, 0x13, 0x00, 0x0B, 0x32, 
41560
  0x05, 0x13, 0x00, 0x2C, 0x15, 0x03, 0x00, 0x35, 0x14, 0x15, 0x00, 0x1C, 0x15, 0x00, 0x00, 0x26, 
41561
  0x13, 0x0F, 0x2A, 0x1E, 0x13, 0x0F, 0x00, 0x05, 0x14, 0x0B, 0x01, 0x3B, 0x15, 0x00, 0x14, 0x2B, 
41562
  0x16, 0x2A, 0x00, 0x25, 0x14, 0x16, 0x15, 0x1E, 0x14, 0x06, 0x00, 0x05, 0x0B, 0x0B, 0x01, 0x2C, 
41563
  0x15, 0x04, 0x00, 0x31, 0x15, 0x00, 0x00, 0x35, 0x15, 0x08, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 
41564
  0x15, 0x05, 0x00, 0x31, 0x15, 0x00, 0x00, 0x35, 0x15, 0x08, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x05, 
41565
  0x06, 0x06, 0x01, 0x32, 0x05, 0x0F, 0x00, 0x2C, 0x15, 0x03, 0x00, 0x35, 0x14, 0x15, 0x00, 0x1C, 
41566
  0x05, 0x00, 0x00, 0x05, 0x06, 0x06, 0x01, 0x32, 0x05, 0x0F, 0x00, 0x2C, 0x13, 0x03, 0x00, 0x35, 
41567
  0x11, 0x13, 0x00, 0x05, 0x0B, 0x0B, 0x01, 0x1C, 0xC1, 0xFF, 0xFF, 0x35, 0x0B, 0x0A, 0x00, 0x31, 
41568
  0x03, 0x00, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x36, 0x0C, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 
41569
  0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x02, 0x27, 0xCE, 0x05, 0x64, 0x65, 0x6C, 0x69, 
41570
  0x6D, 0xDA, 0x04, 0xDA, 0x87, 0x5A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 
41571
  0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 
41572
  0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 
41573
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 
41574
  0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
41575
  0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 
41576
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 
41577
  0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 
41578
  0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 
41579
  0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 
41580
  0xFF, 0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 
41581
  0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 
41582
  0x87, 0x21, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 
41583
  0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 
41584
  0x01, 0x00, 0xDA, 0x85, 0x37, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x01, 0x03, 
41585
  0xDA, 0x87, 0x5B, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x87, 0x5C, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x87, 
41586
  0x5D, 0x00, 0x0F, 0x00, 0xDA, 0x81, 0x78, 0x00, 0x0F, 0x01, 0xDA, 0x87, 0x5E, 0x03, 0x0F, 0x03, 
41587
  0xDA, 0x81, 0x15, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x10, 0x35, 0x02, 0x03, 0x00, 0x1B, 
41588
  0x03, 0x02, 0x00, 0x2D, 0x04, 0x00, 0x0A, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x3F, 
41589
  0x04, 0x03, 0x00, 0x2D, 0x06, 0x01, 0x06, 0x06, 0x05, 0x06, 0x04, 0x2F, 0x05, 0x01, 0x06, 0x2D, 
41590
  0x04, 0x01, 0x05, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0x00, 
41591
  0xBF, 0xFF, 0x8D, 0x31, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 
41592
  0x07, 0x00, 0x2A, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
41593
  0x07, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x04, 0x18, 0x01, 0x07, 0xCE, 0x08, 
41594
  0x65, 0x6E, 0x64, 0x74, 0x6F, 0x6B, 0x65, 0x6E, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
41595
  0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x03, 0x00, 0x02, 0xCE, 0x05, 0x66, 0x69, 0x72, 0x73, 0x74, 
41596
  0xDA, 0x04, 0x00, 0x03, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x03, 0x01, 0xCF, 0x05, 0x66, 0x69, 0x72, 
41597
  0x73, 0x74, 0x2B, 0x03, 0x00, 0x00, 0x3B, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x83, 0x47, 
41598
  0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x81, 0x28, 0xDA, 0x30, 0xDA, 0x81, 0x61, 0xBF, 0xFF, 0x00, 
41599
  0x00, 0xDA, 0x85, 0x37, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
41600
  0x87, 0x5B, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x87, 0x5C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x5D, 
41601
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x87, 0x5E, 0x00, 0x18, 0x00, 0xDA, 0x87, 0x5F, 0x2D, 0x01, 0x00, 
41602
  0x05, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x1E, 0x01, 0x0C, 
41603
  0x00, 0x2D, 0x02, 0x00, 0x05, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 
41604
  0x00, 0x2D, 0x03, 0x00, 0x06, 0x32, 0x02, 0x03, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 
41605
  0x03, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x2D, 0x01, 0x00, 
41606
  0x05, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x03, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x00, 
41607
  0x00, 0x2F, 0x02, 0x00, 0x06, 0x2D, 0x02, 0x00, 0x06, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 
41608
  0x35, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 
41609
  0x00, 0x2D, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 
41610
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
41611
  0x8D, 0x2D, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x01, 
41612
  0x05, 0x00, 0x05, 0x04, 0x05, 0x00, 0x05, 0x04, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 
41613
  0x05, 0x01, 0x0E, 0x00, 0x07, 0x02, 0x0D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
41614
  0x1E, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x01, 0x2F, 0xBF, 0xFF, 0x07, 0x02, 0x09, 0xBF, 0xFE, 0x07, 
41615
  0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0xBF, 0xFE, 0x07, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
41616
  0x0E, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFD, 0x07, 0x05, 0x0B, 0xBF, 0xFF, 0x09, 0x02, 
41617
  0x1D, 0x01, 0x3A, 0x00, 0x30, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0xBF, 0xFD, 0x09, 0x04, 0x0B, 
41618
  0xBF, 0xFC, 0x09, 0x05, 0x26, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0B, 0x01, 0x11, 0x01, 
41619
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFE, 0x0B, 0x03, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xF8, 
41620
  0x09, 0x09, 0x0F, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0xBF, 0xF3, 0x07, 0x0E, 0x0D, 0x00, 0x1F, 
41621
  0x00, 0x1F, 0x00, 0x1F, 0xBF, 0xF0, 0x05, 0x00, 0x05, 0x11, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
41622
  0x05, 0x68, 0x00, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x02, 0x42, 
41623
  0x01, 0x02, 0x28, 0xCE, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
41624
  0x73, 0xDA, 0x04, 0xD0, 0x02, 0x75, 0x6C, 0xD0, 0x02, 0x6F, 0x6C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
41625
  0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 
41626
  0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 
41627
  0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
41628
  0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 
41629
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 
41630
  0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 
41631
  0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 
41632
  0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 
41633
  0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 
41634
  0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 
41635
  0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 
41636
  0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 
41637
  0x00, 0x30, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x34, 
41638
  0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 0x26, 0x00, 0x42, 0x00, 0xDA, 0x87, 0x0C, 
41639
  0x00, 0x42, 0x01, 0xDA, 0x87, 0x1F, 0x00, 0x42, 0x02, 0xCF, 0x0A, 0x6E, 0x65, 0x77, 0x2D, 0x69, 
41640
  0x6E, 0x64, 0x65, 0x6E, 0x74, 0x01, 0x42, 0x03, 0xCF, 0x07, 0x70, 0x2D, 0x73, 0x74, 0x61, 0x72, 
41641
  0x74, 0x02, 0x42, 0x04, 0xCF, 0x05, 0x70, 0x2D, 0x65, 0x6E, 0x64, 0x04, 0x42, 0x06, 0xCF, 0x06, 
41642
  0x70, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x06, 0x42, 0x08, 0xCF, 0x08, 0x66, 0x69, 0x6E, 0x69, 0x73, 
41643
  0x68, 0x2D, 0x70, 0x09, 0x0F, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x32, 0x1B, 
41644
  0x02, 0x00, 0x00, 0x28, 0x03, 0x00, 0x00, 0x28, 0x04, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 0x1B, 
41645
  0x06, 0x05, 0x00, 0x30, 0x07, 0x01, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2D, 0x0B, 0x00, 0x15, 0x35, 
41646
  0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x1E, 0x0A, 0x04, 0x00, 0x47, 0x0C, 0x02, 0x00, 0x1B, 
41647
  0x09, 0x0C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1E, 0x09, 0x31, 0x00, 0x2D, 
41648
  0x0B, 0x00, 0x27, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x07, 0x00, 0x35, 0x0B, 0x08, 0x00, 0x2D, 
41649
  0x0C, 0x00, 0x19, 0x35, 0x0B, 0x0C, 0x00, 0x2D, 0x0B, 0x00, 0x1D, 0x35, 0x02, 0x0B, 0x00, 0x1C, 
41650
  0x27, 0x00, 0x00, 0x2D, 0x0C, 0x00, 0x21, 0x35, 0x0B, 0x0C, 0x00, 0x1E, 0x0B, 0x08, 0x00, 0x35, 
41651
  0x0C, 0x08, 0x00, 0x2D, 0x0C, 0x00, 0x21, 0x2C, 0x0D, 0x00, 0x00, 0x33, 0x0C, 0x0D, 0x02, 0x2D, 
41652
  0x0C, 0x00, 0x2E, 0x35, 0x02, 0x0C, 0x00, 0x1C, 0x1D, 0x00, 0x00, 0x2D, 0x0D, 0x00, 0x23, 0x35, 
41653
  0x0C, 0x0D, 0x00, 0x1E, 0x0C, 0x08, 0x00, 0x35, 0x0D, 0x08, 0x00, 0x2D, 0x0D, 0x00, 0x23, 0x2C, 
41654
  0x0E, 0x01, 0x00, 0x33, 0x0D, 0x0E, 0x02, 0x2D, 0x0D, 0x00, 0x2E, 0x35, 0x02, 0x0D, 0x00, 0x1C, 
41655
  0x13, 0x00, 0x00, 0x2D, 0x0E, 0x00, 0x25, 0x35, 0x0D, 0x0E, 0x00, 0x1E, 0x0D, 0x06, 0x00, 0x35, 
41656
  0x0E, 0x08, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x0E, 0x00, 0x32, 0x35, 0x02, 0x0E, 0x00, 0x1C, 
41657
  0x0B, 0x00, 0x00, 0x2B, 0x0F, 0x04, 0x00, 0x06, 0x0E, 0x0F, 0x00, 0x47, 0x0F, 0x02, 0x0E, 0x1E, 
41658
  0x0F, 0x06, 0x00, 0x35, 0x0E, 0x08, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x0E, 0x00, 0x34, 0x35, 
41659
  0x02, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x35, 0x0E, 0x06, 0x00, 0x1C, 0xC8, 0xFF, 0xFF, 0x35, 
41660
  0x09, 0x08, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 
41661
  0x00, 0x00, 0x00, 0x0E, 0x02, 0x26, 0xCE, 0x06, 0x70, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x04, 
41662
  0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x01, 
41663
  0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 
41664
  0x87, 0x0E, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0x0F, 
41665
  0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 
41666
  0x01, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x01, 0x10, 
41667
  0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x84, 
41668
  0x46, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x87, 0x16, 0xBF, 
41669
  0xFF, 0x01, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x01, 
41670
  0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x01, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x01, 0x21, 0xDA, 
41671
  0x87, 0x1B, 0xBF, 0xFF, 0x01, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x01, 0x25, 0xDA, 0x87, 0x1D, 
41672
  0xBF, 0xFF, 0x01, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x01, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 
41673
  0x01, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x01, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x01, 0x2E, 
41674
  0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x01, 0x30, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x01, 0x32, 0xDA, 0x87, 
41675
  0x24, 0xBF, 0xFF, 0x01, 0x34, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x01, 0x36, 0xDA, 0x87, 0x26, 0xBF, 
41676
  0xFF, 0x00, 0x00, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 
41677
  0x02, 0xDA, 0x87, 0x6A, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x6B, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
41678
  0x87, 0x6C, 0x00, 0x0E, 0x00, 0xDA, 0x87, 0x6D, 0x2D, 0x01, 0x00, 0x03, 0x1E, 0x01, 0x02, 0x00, 
41679
  0x1C, 0x03, 0x00, 0x00, 0x2D, 0x01, 0x01, 0x11, 0x2F, 0x01, 0x00, 0x03, 0x2D, 0x02, 0x01, 0x1F, 
41680
  0x35, 0x01, 0x02, 0x00, 0x2D, 0x02, 0x01, 0x11, 0x2F, 0x02, 0x00, 0x04, 0x2D, 0x03, 0x01, 0x1D, 
41681
  0x35, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x02, 0x2D, 0x03, 0x00, 0x02, 0x03, 0x03, 0x00, 0x00, 
41682
  0xBF, 0xFF, 0x00, 0x8D, 0x53, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x01, 0x09, 
41683
  0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x09, 0x00, 0x09, 
41684
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x02, 0x28, 0xCE, 0x08, 0x66, 
41685
  0x69, 0x6E, 0x69, 0x73, 0x68, 0x2D, 0x70, 0xDA, 0x04, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x14, 0xBF, 
41686
  0xFF, 0x01, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x01, 
41687
  0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 
41688
  0x87, 0x0C, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x87, 0x10, 
41689
  0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 
41690
  0x01, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x01, 0x11, 
41691
  0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x83, 
41692
  0x1D, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 0x87, 0x17, 0xBF, 
41693
  0xFF, 0x01, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x01, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x01, 
41694
  0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x01, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x01, 0x23, 0xDA, 
41695
  0x87, 0x1C, 0xBF, 0xFF, 0x01, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x01, 0x27, 0xDA, 0x87, 0x1E, 
41696
  0xBF, 0xFF, 0x01, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x01, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 
41697
  0x01, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x01, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x01, 0x30, 
41698
  0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x01, 0x32, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x01, 0x34, 0xDA, 0x87, 
41699
  0x25, 0xBF, 0xFF, 0x01, 0x36, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x87, 0x0C, 0xBF, 
41700
  0xFF, 0x00, 0x01, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x6A, 0xBF, 0xFF, 0x00, 
41701
  0x03, 0xDA, 0x87, 0x6B, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x6C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
41702
  0x87, 0x6D, 0x00, 0x1A, 0x00, 0xDA, 0x87, 0x6E, 0x00, 0x09, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
41703
  0x30, 0x30, 0x36, 0x31, 0x2D, 0x02, 0x00, 0x03, 0x2D, 0x03, 0x00, 0x03, 0x1E, 0x03, 0x06, 0x00, 
41704
  0x2D, 0x04, 0x00, 0x04, 0x2D, 0x05, 0x00, 0x03, 0x21, 0x03, 0x04, 0x05, 0x1B, 0x01, 0x03, 0x00, 
41705
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x01, 0x02, 0x00, 0x1E, 0x01, 0x10, 0x00, 0x2D, 0x02, 0x00, 0x03, 
41706
  0x2D, 0x03, 0x00, 0x04, 0x32, 0x02, 0x03, 0x00, 0x2D, 0x03, 0x01, 0x2A, 0x35, 0x02, 0x03, 0x00, 
41707
  0x31, 0x02, 0x00, 0x00, 0x2D, 0x04, 0x01, 0x36, 0x35, 0x03, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 
41708
  0x2D, 0x04, 0x01, 0x2C, 0x35, 0x02, 0x04, 0x00, 0x28, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x03, 
41709
  0x2D, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8D, 
41710
  0x59, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x0F, 
41711
  0x00, 0x0F, 0x00, 0x09, 0x01, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x11, 
41712
  0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
41713
  0x00, 0x0B, 0xBF, 0xFE, 0x09, 0x8D, 0x4F, 0x07, 0x01, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 
41714
  0x06, 0x07, 0x00, 0x07, 0x04, 0x13, 0x00, 0x13, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x17, 0x00, 0x0E, 
41715
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x02, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x01, 0x15, 0x00, 
41716
  0x20, 0x00, 0x20, 0x00, 0x36, 0x00, 0x36, 0xBF, 0xFF, 0x09, 0x02, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 
41717
  0x09, 0x02, 0x15, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0xBF, 0xFE, 0x09, 
41718
  0x03, 0x0B, 0x00, 0x0B, 0xBF, 0xFD, 0x09, 0x03, 0x15, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 
41719
  0x30, 0x00, 0x30, 0xBF, 0xFD, 0x09, 0x04, 0x0B, 0x00, 0x0B, 0xBF, 0xFC, 0x09, 0x04, 0x16, 0x00, 
41720
  0x31, 0x00, 0x31, 0x00, 0x31, 0xBF, 0xFC, 0x09, 0x05, 0x1A, 0x00, 0x1A, 0x00, 0x0B, 0xBF, 0xFB, 
41721
  0x09, 0x05, 0x2C, 0x00, 0x47, 0x00, 0x47, 0x00, 0x47, 0xBF, 0xFB, 0x09, 0x06, 0x0B, 0xBF, 0xF9, 
41722
  0x07, 0x08, 0x07, 0xBF, 0xEA, 0x05, 0x1C, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 
41723
  0x01, 0x01, 0x01, 0x03, 0x12, 0x01, 0x28, 0xCE, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x69, 0x6E, 
41724
  0x64, 0x65, 0x6E, 0x74, 0xDA, 0x04, 0xDA, 0x84, 0x62, 0xDA, 0x84, 0x63, 0xDA, 0x87, 0x5A, 0xBF, 
41725
  0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 
41726
  0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 
41727
  0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 
41728
  0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 
41729
  0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
41730
  0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 
41731
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 
41732
  0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 
41733
  0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 
41734
  0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 
41735
  0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 
41736
  0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 
41737
  0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x24, 
41738
  0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 
41739
  0x00, 0x37, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x00, 0x3B, 
41740
  0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x68, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 
41741
  0x2A, 0x00, 0x12, 0x00, 0xDA, 0x87, 0x0C, 0x00, 0x12, 0x01, 0xDA, 0x87, 0x2B, 0x02, 0x12, 0x03, 
41742
  0xDA, 0x82, 0x85, 0x2D, 0x03, 0x00, 0x3A, 0x08, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 0x2B, 
41743
  0x05, 0x00, 0x00, 0x23, 0x04, 0x05, 0x03, 0x1E, 0x04, 0x0C, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x32, 
41744
  0x05, 0x03, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x39, 0x32, 
41745
  0x06, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2F, 0x00, 0x00, 0x3A, 0x2D, 
41746
  0x05, 0x00, 0x3A, 0x03, 0x05, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x77, 0x10, 
41747
  0x00, 0x10, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 
41748
  0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
41749
  0xBF, 0xFE, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x00, 0x01, 0x02, 0x09, 0x01, 0x28, 
41750
  0xCE, 0x07, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x6E, 0x6C, 0xDA, 0x04, 0xDA, 0x84, 0x83, 0xDA, 0x87, 
41751
  0x5A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 
41752
  0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 
41753
  0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 
41754
  0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 
41755
  0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 
41756
  0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
41757
  0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 
41758
  0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 
41759
  0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 
41760
  0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 
41761
  0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 
41762
  0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 
41763
  0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 
41764
  0x87, 0x24, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 0x26, 
41765
  0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 
41766
  0x00, 0x3B, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x68, 0xBF, 0xFF, 0x00, 0x3A, 
41767
  0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x87, 0x2B, 0x00, 0x09, 0x00, 0xDA, 0x87, 0x0C, 
41768
  0x00, 0x09, 0x01, 0xDA, 0x87, 0x2C, 0x2D, 0x02, 0x00, 0x39, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x02, 
41769
  0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x2F, 0x03, 
41770
  0x00, 0x3A, 0x2D, 0x03, 0x00, 0x3A, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x7D, 0x05, 0x00, 
41771
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 
41772
  0x00, 0xDC, 0x00, 0x00, 0x0C, 0x03, 0x02, 0x03, 0x03, 0x38, 0x01, 0x30, 0xCE, 0x09, 0x65, 0x6D, 
41773
  0x69, 0x74, 0x2D, 0x77, 0x6F, 0x72, 0x64, 0xDA, 0x04, 0xDA, 0x82, 0xE9, 0xDA, 0x84, 0x62, 0xDA, 
41774
  0x87, 0x5A, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 0xBF, 
41775
  0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 
41776
  0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
41777
  0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 0x11, 
41778
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 0xFF, 
41779
  0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 0x13, 
41780
  0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x87, 
41781
  0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 0xBF, 
41782
  0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 0x00, 
41783
  0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 0xDA, 
41784
  0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 0x1F, 
41785
  0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 0xFF, 
41786
  0x00, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 0x32, 
41787
  0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 0x87, 
41788
  0x26, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x28, 0xBF, 
41789
  0xFF, 0x00, 0x3B, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x68, 0xBF, 0xFF, 0x00, 
41790
  0x3A, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x87, 0x2B, 0xBF, 0xFF, 0x00, 0x3E, 0xDA, 
41791
  0x87, 0x2C, 0x00, 0x38, 0x00, 0xCF, 0x04, 0x77, 0x6F, 0x72, 0x64, 0x00, 0x38, 0x01, 0xDA, 0x87, 
41792
  0x0C, 0x00, 0x38, 0x02, 0xDA, 0x37, 0x00, 0x38, 0x03, 0xDA, 0x87, 0x2D, 0x04, 0x38, 0x05, 0xCF, 
41793
  0x09, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x04, 0x10, 0x05, 0xCF, 0x07, 0x5F, 
41794
  0x30, 0x30, 0x30, 0x30, 0x36, 0x34, 0x07, 0x0D, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41795
  0x36, 0x33, 0x1E, 0x38, 0x07, 0xDA, 0x37, 0x1E, 0x29, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41796
  0x30, 0x36, 0x35, 0x2D, 0x04, 0x00, 0x39, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 
41797
  0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x0A, 0x00, 0x4B, 0x08, 0x05, 0x0A, 0x1B, 
41798
  0x09, 0x08, 0x00, 0x1E, 0x08, 0x04, 0x00, 0x4B, 0x0A, 0x05, 0x20, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 
41799
  0x02, 0x00, 0x00, 0x1B, 0x07, 0x09, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
41800
  0x06, 0x05, 0x00, 0x1E, 0x06, 0x09, 0x00, 0x2D, 0x07, 0x00, 0x39, 0x2C, 0x08, 0x01, 0x00, 0x32, 
41801
  0x07, 0x08, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2D, 0x08, 0x00, 0x3A, 0x05, 
41802
  0x07, 0x08, 0x01, 0x2F, 0x07, 0x00, 0x3A, 0x20, 0x02, 0x04, 0x00, 0x3F, 0x07, 0x00, 0x00, 0x1B, 
41803
  0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 
41804
  0x01, 0x09, 0x00, 0x2B, 0x0A, 0x01, 0x00, 0x2D, 0x0B, 0x00, 0x3A, 0x06, 0x09, 0x0A, 0x0B, 0x06, 
41805
  0x09, 0x09, 0x07, 0x2D, 0x0B, 0x00, 0x07, 0x21, 0x0A, 0x09, 0x0B, 0x1B, 0x08, 0x0A, 0x00, 0x1C, 
41806
  0x02, 0x00, 0x00, 0x1B, 0x08, 0x01, 0x00, 0x1E, 0x08, 0x06, 0x00, 0x2D, 0x0A, 0x00, 0x3E, 0x35, 
41807
  0x09, 0x0A, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x0A, 0x00, 0x3C, 0x35, 0x09, 0x0A, 0x00, 0x2D, 
41808
  0x08, 0x00, 0x39, 0x32, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x35, 0x08, 0x09, 0x00, 0x2D, 
41809
  0x0A, 0x00, 0x3A, 0x06, 0x09, 0x0A, 0x07, 0x2F, 0x09, 0x00, 0x3A, 0x2D, 0x0A, 0x00, 0x3A, 0x03, 
41810
  0x0A, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x81, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 
41811
  0x01, 0x0B, 0x02, 0x0D, 0xBF, 0xFE, 0x0B, 0x00, 0x0B, 0x03, 0x0D, 0xBF, 0xFD, 0x0B, 0x00, 0x0B, 
41812
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x04, 0x07, 0x00, 0x07, 0x00, 0x07, 
41813
  0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x12, 0x00, 0x05, 
41814
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 
41815
  0x00, 0x17, 0x00, 0x17, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
41816
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
41817
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 
41818
  0x02, 0x07, 0x24, 0x01, 0x2C, 0xCE, 0x09, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x63, 0x6F, 0x64, 0x65, 
41819
  0xDA, 0x04, 0xDA, 0x84, 0x62, 0xDA, 0x84, 0x63, 0xDA, 0x84, 0x83, 0xDA, 0x81, 0x28, 0xDA, 0x86, 
41820
  0xA6, 0xDA, 0x87, 0x5A, 0xDA, 0x82, 0xE9, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 
41821
  0x01, 0xDA, 0x87, 0x0B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
41822
  0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 
41823
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 
41824
  0x00, 0x0A, 0xDA, 0x87, 0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 
41825
  0xDA, 0x87, 0x13, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 
41826
  0x15, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 
41827
  0xFF, 0x00, 0x17, 0xDA, 0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 
41828
  0x1B, 0xDA, 0x87, 0x18, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 
41829
  0x87, 0x1A, 0xBF, 0xFF, 0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 
41830
  0xBF, 0xFF, 0x00, 0x25, 0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 
41831
  0x00, 0x28, 0xDA, 0x87, 0x1F, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 
41832
  0xDA, 0x87, 0x21, 0xBF, 0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 
41833
  0x23, 0xBF, 0xFF, 0x00, 0x32, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x25, 0xBF, 
41834
  0xFF, 0x00, 0x36, 0xDA, 0x87, 0x26, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 
41835
  0x3A, 0xDA, 0x87, 0x28, 0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 
41836
  0x85, 0x68, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x87, 0x2B, 
41837
  0xBF, 0xFF, 0x00, 0x3E, 0xDA, 0x87, 0x2C, 0xBF, 0xFF, 0x00, 0x40, 0xDA, 0x87, 0x2D, 0x00, 0x24, 
41838
  0x00, 0xCF, 0x04, 0x63, 0x6F, 0x64, 0x65, 0x00, 0x24, 0x01, 0xDA, 0x87, 0x0C, 0x00, 0x24, 0x02, 
41839
  0xDA, 0x87, 0x2E, 0x0A, 0x24, 0x04, 0xCF, 0x0B, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 
41840
  0x65, 0x6E, 0x74, 0x2B, 0x04, 0x04, 0x00, 0x06, 0x03, 0x04, 0x01, 0x2C, 0x04, 0x00, 0x00, 0x32, 
41841
  0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 
41842
  0x03, 0x04, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 
41843
  0x06, 0x04, 0x00, 0x06, 0x05, 0x06, 0x01, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x3C, 0x35, 
41844
  0x06, 0x07, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x05, 0x04, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 
41845
  0x05, 0x07, 0x00, 0x2D, 0x07, 0x00, 0x39, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 
41846
  0x07, 0x08, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x35, 0x05, 0x08, 0x00, 0x2B, 
41847
  0x09, 0x0A, 0x00, 0x25, 0x08, 0x09, 0x05, 0x1E, 0x08, 0x05, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x2F, 
41848
  0x05, 0x00, 0x3A, 0x2D, 0x05, 0x00, 0x3A, 0x03, 0x05, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x3E, 0x36, 
41849
  0x05, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x91, 0x36, 0x00, 0x36, 0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 
41850
  0x00, 0x23, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 
41851
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 
41852
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x09, 0x00, 0x09, 
41853
  0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0xCD, 0x00, 
41854
  0xDC, 0x00, 0x00, 0x12, 0x02, 0x02, 0x02, 0x0D, 0x7E, 0x01, 0x3F, 0xCE, 0x09, 0x65, 0x6D, 0x69, 
41855
  0x74, 0x2D, 0x6E, 0x6F, 0x64, 0x65, 0xDA, 0x04, 0xDA, 0x83, 0x17, 0xDA, 0x84, 0x62, 0xDA, 0x84, 
41856
  0x63, 0xDA, 0x84, 0x83, 0xDA, 0x81, 0x28, 0xDA, 0x86, 0xA6, 0xDA, 0x87, 0x64, 0xDA, 0x87, 0x68, 
41857
  0xCE, 0x02, 0x2A, 0x20, 0xDA, 0x87, 0x69, 0xCE, 0x04, 0x25, 0x64, 0x2E, 0x20, 0xDA, 0x81, 0x4B, 
41858
  0xDA, 0x87, 0x55, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x14, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x87, 0x0B, 
41859
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 
41860
  0x00, 0x04, 0xDA, 0x87, 0x0E, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x87, 0x0C, 0xBF, 0xFF, 0x00, 0x01, 
41861
  0xDA, 0x87, 0x0F, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x87, 0x10, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x87, 
41862
  0x11, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x87, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x87, 0x13, 0xBF, 
41863
  0xFF, 0x00, 0x10, 0xDA, 0x87, 0x14, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x87, 0x15, 0xBF, 0xFF, 0x00, 
41864
  0x13, 0xDA, 0x84, 0x46, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x83, 0x1D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 
41865
  0x87, 0x16, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x87, 0x17, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x87, 0x18, 
41866
  0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x87, 0x19, 0xBF, 0xFF, 0x00, 0x1F, 0xDA, 0x87, 0x1A, 0xBF, 0xFF, 
41867
  0x00, 0x21, 0xDA, 0x87, 0x1B, 0xBF, 0xFF, 0x00, 0x23, 0xDA, 0x87, 0x1C, 0xBF, 0xFF, 0x00, 0x25, 
41868
  0xDA, 0x87, 0x1D, 0xBF, 0xFF, 0x00, 0x27, 0xDA, 0x87, 0x1E, 0xBF, 0xFF, 0x00, 0x28, 0xDA, 0x87, 
41869
  0x1F, 0xBF, 0xFF, 0x00, 0x2A, 0xDA, 0x87, 0x20, 0xBF, 0xFF, 0x00, 0x2C, 0xDA, 0x87, 0x21, 0xBF, 
41870
  0xFF, 0x00, 0x2E, 0xDA, 0x87, 0x22, 0xBF, 0xFF, 0x00, 0x30, 0xDA, 0x87, 0x23, 0xBF, 0xFF, 0x00, 
41871
  0x32, 0xDA, 0x87, 0x24, 0xBF, 0xFF, 0x00, 0x34, 0xDA, 0x87, 0x25, 0xBF, 0xFF, 0x00, 0x36, 0xDA, 
41872
  0x87, 0x26, 0xBF, 0xFF, 0x00, 0x37, 0xDA, 0x87, 0x27, 0xBF, 0xFF, 0x00, 0x3A, 0xDA, 0x87, 0x28, 
41873
  0xBF, 0xFF, 0x00, 0x3B, 0xDA, 0x87, 0x29, 0xBF, 0xFF, 0x00, 0x39, 0xDA, 0x85, 0x68, 0xBF, 0xFF, 
41874
  0x00, 0x3A, 0xDA, 0x87, 0x2A, 0xBF, 0xFF, 0x00, 0x3C, 0xDA, 0x87, 0x2B, 0xBF, 0xFF, 0x00, 0x3E, 
41875
  0xDA, 0x87, 0x2C, 0xBF, 0xFF, 0x00, 0x40, 0xDA, 0x87, 0x2D, 0xBF, 0xFF, 0x00, 0x42, 0xDA, 0x87, 
41876
  0x2E, 0x00, 0x7E, 0x00, 0xDA, 0x83, 0xC8, 0x00, 0x7E, 0x01, 0xDA, 0x87, 0x0C, 0x00, 0x7E, 0x02, 
41877
  0xDA, 0x87, 0x2F, 0x10, 0x25, 0x05, 0xCF, 0x03, 0x72, 0x65, 0x70, 0x10, 0x23, 0x00, 0xCF, 0x07, 
41878
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x37, 0x13, 0x23, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41879
  0x30, 0x36, 0x36, 0x17, 0x23, 0x09, 0xDA, 0x87, 0x76, 0x19, 0x23, 0x0A, 0xDA, 0x37, 0x28, 0x7E, 
41880
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x38, 0x2C, 0x4D, 0x07, 0xCF, 0x07, 0x5F, 
41881
  0x30, 0x30, 0x30, 0x30, 0x36, 0x39, 0x2E, 0x4D, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
41882
  0x36, 0x61, 0x31, 0x4C, 0x0A, 0xDA, 0x43, 0x3D, 0x4A, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
41883
  0x30, 0x36, 0x63, 0x40, 0x4A, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x62, 0x43, 
41884
  0x4A, 0x0E, 0xCF, 0x05, 0x73, 0x75, 0x62, 0x65, 0x6C, 0x50, 0x75, 0x08, 0xCF, 0x07, 0x5F, 0x30, 
41885
  0x30, 0x30, 0x30, 0x36, 0x64, 0x52, 0x75, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 
41886
  0x65, 0x55, 0x74, 0x0B, 0xDA, 0x43, 0x5F, 0x74, 0x0D, 0xCF, 0x03, 0x6C, 0x61, 0x62, 0x65, 0x72, 
41887
  0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x67, 0x68, 0x72, 0x0F, 0xCF, 0x07, 0x5F, 
41888
  0x30, 0x30, 0x30, 0x30, 0x36, 0x66, 0x6B, 0x72, 0x10, 0xDA, 0x87, 0x89, 0x2E, 0x02, 0x00, 0x00, 
41889
  0x31, 0x01, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x3C, 0x35, 0x03, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 
41890
  0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x1E, 0x00, 0x2C, 0x05, 0x01, 0x00, 
41891
  0x32, 0x05, 0x01, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x03, 0x00, 
41892
  0x32, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 
41893
  0x28, 0x07, 0x00, 0x00, 0x49, 0x06, 0x00, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x0F, 0x00, 
41894
  0x3A, 0x06, 0x00, 0x07, 0x3D, 0x08, 0x06, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x3D, 0x08, 0x06, 0x01, 
41895
  0x1B, 0x0A, 0x08, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x33, 0x06, 0x05, 0x09, 0x2C, 0x08, 0x05, 0x00, 
41896
  0x35, 0x06, 0x08, 0x00, 0x33, 0x06, 0x01, 0x0A, 0x2D, 0x0B, 0x00, 0x40, 0x35, 0x08, 0x0B, 0x00, 
41897
  0x49, 0x07, 0x00, 0x07, 0x1C, 0xF2, 0xFF, 0xFF, 0x2D, 0x06, 0x00, 0x3E, 0x36, 0x06, 0x00, 0x00, 
41898
  0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x06, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 
41899
  0x2C, 0x07, 0x07, 0x00, 0x25, 0x05, 0x06, 0x07, 0x1E, 0x05, 0x22, 0x00, 0x2B, 0x07, 0x01, 0x00, 
41900
  0x3F, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x23, 0x08, 0x07, 0x09, 0x1E, 0x08, 0x1C, 0x00, 
41901
  0x1B, 0x0A, 0x07, 0x00, 0x22, 0x0B, 0x0A, 0x01, 0x1E, 0x0B, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 
41902
  0x2D, 0x0D, 0x00, 0x3C, 0x35, 0x0C, 0x0D, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x28, 0x0C, 0x00, 0x00, 
41903
  0x32, 0x0B, 0x0C, 0x00, 0x2D, 0x0C, 0x00, 0x40, 0x35, 0x0B, 0x0C, 0x00, 0x3B, 0x0B, 0x00, 0x0A, 
41904
  0x1B, 0x0C, 0x0B, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x49, 0x0B, 0x0C, 0x0D, 0x1B, 0x0D, 0x0B, 0x00, 
41905
  0x1F, 0x0D, 0x09, 0x00, 0x3A, 0x0B, 0x0C, 0x0D, 0x1B, 0x0E, 0x0B, 0x00, 0x2B, 0x0F, 0x02, 0x00, 
41906
  0x06, 0x0B, 0x0F, 0x01, 0x32, 0x0E, 0x0B, 0x00, 0x35, 0x0F, 0x02, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 
41907
  0x1C, 0xF8, 0xFF, 0xFF, 0x05, 0x07, 0x07, 0x01, 0x1C, 0xE4, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 
41908
  0x2C, 0x08, 0x09, 0x00, 0x25, 0x07, 0x06, 0x08, 0x1E, 0x07, 0x26, 0x00, 0x2B, 0x08, 0x01, 0x00, 
41909
  0x3F, 0x09, 0x00, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x23, 0x09, 0x08, 0x0A, 0x1E, 0x09, 0x20, 0x00, 
41910
  0x1B, 0x0B, 0x08, 0x00, 0x22, 0x0C, 0x0B, 0x01, 0x1E, 0x0C, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 
41911
  0x2D, 0x0E, 0x00, 0x3C, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0C, 0x0A, 0x00, 0x32, 0x0C, 0x0B, 0x00, 
41912
  0x2C, 0x0D, 0x0B, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x28, 0x0C, 0x00, 0x00, 
41913
  0x32, 0x0D, 0x0C, 0x00, 0x2D, 0x0E, 0x00, 0x40, 0x35, 0x0C, 0x0E, 0x00, 0x3B, 0x0C, 0x00, 0x0B, 
41914
  0x1B, 0x0E, 0x0C, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0C, 0x0E, 0x0F, 0x1B, 0x0F, 0x0C, 0x00, 
41915
  0x1F, 0x0F, 0x09, 0x00, 0x3A, 0x0C, 0x0E, 0x0F, 0x1B, 0x10, 0x0C, 0x00, 0x3F, 0x0C, 0x0D, 0x00, 
41916
  0x06, 0x11, 0x0C, 0x01, 0x32, 0x10, 0x11, 0x00, 0x35, 0x0C, 0x02, 0x00, 0x49, 0x0F, 0x0E, 0x0F, 
41917
  0x1C, 0xF8, 0xFF, 0xFF, 0x05, 0x08, 0x08, 0x01, 0x1C, 0xE0, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 
41918
  0x2C, 0x09, 0x0C, 0x00, 0x25, 0x08, 0x06, 0x09, 0x1E, 0x08, 0x06, 0x00, 0x2B, 0x0A, 0x01, 0x00, 
41919
  0x3B, 0x09, 0x00, 0x0A, 0x32, 0x09, 0x01, 0x00, 0x2D, 0x0A, 0x00, 0x42, 0x36, 0x0A, 0x00, 0x00, 
41920
  0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0x98, 0x03, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
41921
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
41922
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
41923
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0D, 0x00, 0x0D, 0x00, 
41924
  0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0x05, 
41925
  0x09, 0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
41926
  0x07, 0x01, 0x0D, 0x00, 0x16, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x13, 0x00, 
41927
  0x0F, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
41928
  0x0F, 0x01, 0x1B, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
41929
  0x0F, 0x00, 0x37, 0x00, 0x37, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x0D, 
41930
  0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x05, 0x0D, 0x00, 0x16, 0x00, 
41931
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x13, 0x00, 0x0F, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
41932
  0x1B, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 
41933
  0x0F, 0x00, 0x0F, 0x01, 0x1B, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
41934
  0x0F, 0x00, 0x0F, 0x00, 0x3A, 0x00, 0x37, 0x00, 0x26, 0x00, 0x26, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
41935
  0xFC, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x07, 0x00, 0x07, 0x00, 0x07, 0x0A, 0x18, 0x00, 
41936
  0x18, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xF6, 0x07, 0x8C, 0xB3, 0x03, 0x00, 0x03, 0x00, 
41937
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
41938
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x15, 0x00, 0x12, 0x00, 0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 
41939
  0x12, 0x00, 0x12, 0x00, 0x12, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFE, 0x12, 
41940
  0x00, 0x03, 0x06, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x08, 0x03, 0x00, 
41941
  0x03, 0x01, 0x03, 0x00, 0x03, 0x07, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x01, 
41942
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x04, 
41943
  0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x01, 
41944
  0x03, 0x00, 0x03, 0x06, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 
41945
  0x03, 0x16, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x0D, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x00, 
41946
  0x03, 0x22, 0x05, 0x1A, 0x16, 0x00, 0x16, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x01, 0x05, 0x01, 
41947
  0x29, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 
41948
  0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 
41949
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x32, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
41950
  0x05, 0x00, 0x05, 0x02, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
41951
  0x03, 0x01, 0x03, 0x03, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x04, 0x03, 0x00, 0x03, 0x0F, 
41952
  0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 0x03, 0x17, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
41953
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x01, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x00, 0x03, 
41954
  0xBE, 0xFE, 0x01, 0x81, 0x54, 0xAB, 0xAA, 0xAA, 0x55, 0x55, 0x56, 0x05, 0x00, 0x00, 0x00, 0xCE, 
41955
  0x1D, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x6E, 0x6F, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 
41956
  0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x0A, 0xCE, 0x02, 
41957
  0x0A, 0x0A, 0xDA, 0x81, 0x90, 0x00, 0x7E, 0x00, 0xDA, 0x1E, 0x00, 0x7E, 0x01, 0xCF, 0x12, 0x70, 
41958
  0x72, 0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x74, 0x72, 
41959
  0x79, 0x48, 0x7E, 0x02, 0xCF, 0x09, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x4C, 
41960
  0x7E, 0x05, 0xCF, 0x02, 0x73, 0x6D, 0x50, 0x7E, 0x07, 0xDA, 0x81, 0x15, 0x50, 0x6D, 0x05, 0xCF, 
41961
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6A, 0x53, 0x6A, 0x0A, 0xDA, 0x81, 0x22, 0x55, 0x6A, 
41962
  0x0B, 0xDA, 0x85, 0x37, 0x57, 0x6A, 0x0C, 0xDA, 0x85, 0x38, 0x57, 0x5C, 0x0B, 0xCF, 0x07, 0x5F, 
41963
  0x30, 0x30, 0x30, 0x30, 0x36, 0x6B, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x35, 0x03, 
41964
  0x00, 0x00, 0x1E, 0x03, 0x0B, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x35, 0x04, 
41965
  0x00, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 0x05, 0x04, 0x06, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 
41966
  0x02, 0x00, 0x35, 0x04, 0x06, 0x00, 0x1B, 0x02, 0x04, 0x00, 0x1C, 0x36, 0x00, 0x00, 0x2C, 0x05, 
41967
  0x01, 0x00, 0x31, 0x05, 0x00, 0x00, 0x35, 0x05, 0x00, 0x00, 0x1E, 0x05, 0x12, 0x00, 0x2C, 0x06, 
41968
  0x01, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x3A, 0x07, 
41969
  0x06, 0x08, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x06, 0x08, 0x00, 0x2C, 0x07, 
41970
  0x03, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x33, 0x07, 0x08, 0x06, 0x2C, 0x07, 0x05, 0x00, 0x31, 0x07, 
41971
  0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x04, 0x07, 0x00, 0x1C, 0x20, 
41972
  0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x1E, 0x07, 
41973
  0x03, 0x00, 0x2C, 0x06, 0x07, 0x00, 0x1C, 0x19, 0x00, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x31, 0x09, 
41974
  0x00, 0x00, 0x35, 0x09, 0x00, 0x00, 0x1E, 0x09, 0x0D, 0x00, 0x2C, 0x0A, 0x09, 0x00, 0x31, 0x0A, 
41975
  0x00, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0B, 
41976
  0x0C, 0x0A, 0x2C, 0x0B, 0x05, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 
41977
  0x0C, 0x00, 0x1B, 0x08, 0x0B, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x2C, 0x0A, 0x0A, 0x00, 0x31, 0x0A, 
41978
  0x00, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x02, 0x00, 0x35, 0x0B, 
41979
  0x0C, 0x00, 0x1B, 0x08, 0x0B, 0x00, 0x1B, 0x06, 0x08, 0x00, 0x1B, 0x04, 0x06, 0x00, 0x1B, 0x02, 
41980
  0x04, 0x00, 0x2C, 0x03, 0x0B, 0x00, 0x2C, 0x04, 0x0C, 0x00, 0x33, 0x03, 0x02, 0x04, 0x2C, 0x04, 
41981
  0x06, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x0D, 0x00, 0x31, 0x04, 
41982
  0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x06, 0x0E, 0x00, 0x31, 0x06, 
41983
  0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x05, 0x1B, 0x00, 0x3D, 0x09, 
41984
  0x05, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 0x09, 0x05, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x3D, 0x09, 
41985
  0x05, 0x02, 0x1B, 0x0C, 0x09, 0x00, 0x1E, 0x0B, 0x03, 0x00, 0x1B, 0x0D, 0x0C, 0x00, 0x1C, 0x02, 
41986
  0x00, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 0x09, 0x00, 0x2C, 0x0E, 0x0F, 0x00, 0x2C, 0x0F, 
41987
  0x10, 0x00, 0x33, 0x0E, 0x0B, 0x0F, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x35, 0x0E, 
41988
  0x0F, 0x00, 0x1B, 0x09, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x2C, 0x0D, 
41989
  0x0B, 0x00, 0x33, 0x0D, 0x0A, 0x09, 0x2C, 0x0E, 0x06, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x08, 
41990
  0x0D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x08, 0x00, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x2C, 0x09, 
41991
  0x0C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x1E, 0x07, 0x06, 0x00, 0x31, 0x07, 
41992
  0x00, 0x00, 0x2C, 0x0C, 0x11, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x1C, 0x02, 
41993
  0x00, 0x00, 0x2C, 0x0A, 0x12, 0x00, 0x2C, 0x0B, 0x13, 0x00, 0x33, 0x0B, 0x02, 0x08, 0x2C, 0x0B, 
41994
  0x0C, 0x00, 0x33, 0x09, 0x0A, 0x0B, 0x2C, 0x0B, 0x14, 0x00, 0x36, 0x0B, 0x00, 0x00, 0x8D, 0xC5, 
41995
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFF, 0x0D, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x20, 
41996
  0x00, 0x20, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0xBF, 0xFF, 0x0D, 0x00, 0x0D, 0x02, 0x0F, 0x00, 
41997
  0x0F, 0x00, 0x0F, 0xBF, 0xFE, 0x0D, 0x02, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x30, 0x00, 0x30, 
41998
  0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 
41999
  0x00, 0x18, 0x00, 0x18, 0xBF, 0xFE, 0x0D, 0x00, 0x0D, 0x03, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 
42000
  0xFD, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x04, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFC, 0x0D, 0x04, 
42001
  0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 
42002
  0x1B, 0x00, 0x1B, 0xBF, 0xFC, 0x0D, 0x00, 0x0D, 0x05, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0F, 
42003
  0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFB, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x05, 
42004
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x09, 0x0B, 0x00, 0x0B, 0x00, 
42005
  0x0B, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x03, 0x0A, 0x00, 0x0A, 0x00, 
42006
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x01, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 
42007
  0x26, 0x00, 0x20, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 
42008
  0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x0A, 
42009
  0x00, 0x0A, 0x00, 0x0A, 0x02, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x01, 0x0A, 0x00, 0x10, 
42010
  0x00, 0x10, 0x00, 0x10, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xBF, 0xFB, 0x03, 0x00, 0x03, 0x00, 
42011
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCE, 0x18, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 
42012
  0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
42013
  0x20, 0xCE, 0x0B, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x81, 
42014
  0x90, 0x00, 0x32, 0x00, 0xDA, 0x1E, 0x00, 0x32, 0x01, 0xDA, 0x86, 0xE6, 0x00, 0x32, 0x02, 0xCF, 
42015
  0x05, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x01, 0x2B, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42016
  0x36, 0x71, 0x04, 0x2B, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x70, 0x07, 0x2B, 
42017
  0x06, 0xCF, 0x0A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x73, 0x65, 0x74, 0x07, 0x29, 0x06, 
42018
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6F, 0x0A, 0x29, 0x07, 0xCF, 0x07, 0x5F, 0x30, 
42019
  0x30, 0x30, 0x30, 0x36, 0x6E, 0x0D, 0x29, 0x08, 0xCF, 0x06, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
42020
  0x0D, 0x27, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6D, 0x10, 0x27, 0x09, 0xCF, 
42021
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x6C, 0x13, 0x27, 0x0A, 0xDA, 0x83, 0xCE, 0x16, 0x1D, 
42022
  0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x72, 0x1D, 0x25, 0x0B, 0xCF, 0x05, 0x63, 
42023
  0x68, 0x65, 0x63, 0x6B, 0x2A, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 
42024
  0x49, 0x04, 0x03, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x26, 0x00, 0x3A, 0x04, 0x03, 0x05, 
42025
  0x1B, 0x06, 0x04, 0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 0x04, 0x06, 0x07, 0x1B, 0x07, 0x04, 0x00, 
42026
  0x1F, 0x07, 0x1E, 0x00, 0x3A, 0x04, 0x06, 0x07, 0x1B, 0x08, 0x04, 0x00, 0x28, 0x09, 0x00, 0x00, 
42027
  0x49, 0x04, 0x08, 0x09, 0x1B, 0x09, 0x04, 0x00, 0x1F, 0x09, 0x16, 0x00, 0x3A, 0x04, 0x08, 0x09, 
42028
  0x1B, 0x0A, 0x04, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x3B, 0x04, 0x0A, 0x0B, 0x1B, 0x0B, 0x04, 0x00, 
42029
  0x1E, 0x0B, 0x03, 0x00, 0x1B, 0x04, 0x0B, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0D, 0x02, 0x00, 
42030
  0x3B, 0x0C, 0x0A, 0x0D, 0x1B, 0x04, 0x0C, 0x00, 0x1B, 0x0B, 0x04, 0x00, 0x25, 0x04, 0x0B, 0x00, 
42031
  0x1E, 0x04, 0x06, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x35, 0x0C, 0x0D, 0x00, 
42032
  0x29, 0x02, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x09, 0x08, 0x09, 0x1C, 0xEB, 0xFF, 0xFF, 
42033
  0x49, 0x07, 0x06, 0x07, 0x1C, 0xE3, 0xFF, 0xFF, 0x49, 0x05, 0x03, 0x05, 0x1C, 0xDB, 0xFF, 0xFF, 
42034
  0x1E, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x05, 0x00, 
42035
  0x33, 0x03, 0x00, 0x04, 0x2C, 0x03, 0x06, 0x00, 0x36, 0x03, 0x00, 0x00, 0x8E, 0x04, 0x03, 0x01, 
42036
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42037
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42038
  0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x15, 0x00, 0x15, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
42039
  0x11, 0x00, 0x26, 0x00, 0x26, 0x00, 0x11, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x07, 0x01, 0x09, 0x00, 
42040
  0x09, 0x00, 0x09, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42041
  0x00, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42042
  0x00, 0x05, 0xCF, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
42043
  0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x03, 0x0C, 0x00, 0x03, 0xCE, 0x07, 0x64, 0x65, 0x66, 0x61, 
42044
  0x75, 0x6C, 0x74, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x18, 0x06, 0x00, 0x00, 0xCD, 
42045
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x10, 0xCE, 0x01, 0x3D, 0x3F, 0x01, 0x00, 0x00, 0x24, 0x02, 0x01, 
42046
  0x02, 0x1D, 0x02, 0x0A, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 
42047
  0x05, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x07, 0x00, 0x05, 0x05, 0x05, 0x01, 0x1B, 0x03, 0x04, 
42048
  0x00, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFA, 0xFF, 0x29, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
42049
  0x00, 0x2A, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xAB, 0x00, 
42050
  0x0C, 0x00, 0xDA, 0x80, 0x8B, 0x00, 0x0C, 0x01, 0xCF, 0x03, 0x76, 0x61, 0x6C, 0x00, 0x0C, 0x02, 
42051
  0xDA, 0x87, 0xA3, 0x2C, 0x04, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x33, 0x04, 0x05, 0x00, 0x45, 
42052
  0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x03, 0x01, 0x31, 0x00, 0x00, 0x00, 0x45, 
42053
  0x04, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x05, 0x00, 0x04, 0x45, 0x03, 0x00, 0x00, 0x03, 
42054
  0x03, 0x00, 0x00, 0x80, 0xE0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42055
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x70, 0x72, 
42056
  0x69, 0x6E, 0x74, 0x66, 0xDA, 0x85, 0x20, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 
42057
  0x66, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0xCF, 0x05, 0x2A, 0x65, 0x72, 
42058
  0x72, 0x2A, 0xDA, 0x86, 0x5A, 0xCF, 0x0F, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 
42059
  0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xD3, 0x00, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 
42060
  0x69, 0x74, 0x65, 0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xCF, 0x08, 
42061
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x3F, 0xDA, 0x2B, 0xCF, 0x04, 0x76, 0x61, 0x72, 0x2D, 
42062
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
42063
  0x06, 0x00, 0x03, 0xCE, 0x04, 0x76, 0x61, 0x72, 0x2D, 0xDA, 0x04, 0xDA, 0x82, 0x55, 0xDA, 0x85, 
42064
  0xEC, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x06, 0x01, 0xDA, 0x86, 0x6A, 0x00, 0x06, 0x02, 
42065
  0xDA, 0x87, 0xB2, 0x2C, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x04, 0x00, 0x05, 0x34, 
42066
  0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x4E, 0x03, 0x00, 0x03, 0x00, 
42067
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0x25, 0xDA, 0x81, 0xB0, 0xCF, 0x0E, 0x74, 
42068
  0x61, 0x62, 0x6C, 0x65, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x83, 0x56, 
42069
  0xCF, 0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x63, 0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0xD8, 
42070
  0x0D, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x63, 0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0xCF, 0x02, 
42071
  0x70, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x05, 0x0A, 0x00, 
42072
  0x02, 0xCE, 0x02, 0x70, 0x70, 0xDA, 0x04, 0xDA, 0x83, 0x33, 0xDA, 0x85, 0x1A, 0xDA, 0x81, 0x26, 
42073
  0xDA, 0x85, 0x20, 0xDA, 0x83, 0xEB, 0x00, 0x0A, 0x00, 0xDA, 0x1E, 0x00, 0x0A, 0x01, 0xDA, 0x87, 
42074
  0xB8, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 
42075
  0x00, 0x35, 0x02, 0x03, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x35, 0x03, 0x04, 
42076
  0x00, 0x2C, 0x02, 0x04, 0x00, 0x36, 0x02, 0x00, 0x00, 0x87, 0x6D, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
42077
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xCF, 0x04, 
42078
  0x6F, 0x6E, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 
42079
  0x06, 0x00, 0x02, 0xCE, 0x04, 0x6F, 0x6E, 0x65, 0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x06, 
42080
  0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x87, 0xBB, 0x2B, 0x02, 0x01, 0x00, 0x32, 0x00, 0x02, 
42081
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 
42082
  0x00, 0x83, 0x92, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2C, 0x00, 0x2C, 0xDA, 0x80, 
42083
  0x80, 0xDA, 0x5F, 0xCF, 0x05, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
42084
  0x00, 0x07, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0x00, 0x03, 0xCE, 0x05, 0x6C, 
42085
  0x61, 0x62, 0x65, 0x6C, 0xDA, 0x04, 0xDA, 0x80, 0xAB, 0xD6, 0x00, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
42086
  0x00, 0x00, 0x0E, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0B, 0x39, 0x00, 0x07, 0xCE, 0x06, 
42087
  0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0xAE, 
42088
  0xD0, 0x06, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x80, 0xDC, 0xD0, 0x02, 0x69, 0x30, 0xDA, 
42089
  0x80, 0xAB, 0xDA, 0x83, 0x43, 0xDA, 0x87, 0xA6, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x1A, 0x02, 
42090
  0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x09, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 
42091
  0x39, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xDA, 0x82, 0x81, 0x00, 0x39, 0x00, 0xCF, 0x03, 
42092
  0x74, 0x61, 0x67, 0x00, 0x39, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x39, 0x02, 0xCF, 0x06, 0x70, 0x72, 
42093
  0x6F, 0x6D, 0x70, 0x74, 0x02, 0x39, 0x04, 0xDA, 0x7E, 0x05, 0x39, 0x05, 0xDA, 0x85, 0xED, 0x08, 
42094
  0x39, 0x06, 0xCF, 0x07, 0x70, 0x61, 0x79, 0x6C, 0x6F, 0x61, 0x64, 0x0B, 0x39, 0x07, 0xCF, 0x03, 
42095
  0x66, 0x69, 0x62, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 
42096
  0x05, 0x00, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 0x05, 0x03, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 
42097
  0x03, 0x06, 0x00, 0x1B, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x03, 0x07, 0x00, 0x1B, 
42098
  0x07, 0x03, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x31, 0x09, 0x00, 0x00, 0x34, 
42099
  0x01, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x32, 0x00, 0x08, 0x00, 0x46, 0x09, 0x00, 0x00, 0x2C, 
42100
  0x0A, 0x02, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x33, 0x0A, 0x0B, 0x03, 0x31, 0x09, 0x00, 0x00, 0x45, 
42101
  0x08, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x33, 0x09, 0x08, 0x0A, 0x45, 
42102
  0x03, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x33, 0x09, 0x07, 0x03, 0x45, 0x08, 0x00, 0x00, 0x2C, 
42103
  0x09, 0x07, 0x00, 0x32, 0x09, 0x07, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x33, 
42104
  0x0A, 0x04, 0x03, 0x45, 0x09, 0x00, 0x00, 0x32, 0x05, 0x06, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 
42105
  0x0B, 0x06, 0x00, 0x33, 0x0B, 0x03, 0x04, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x33, 
42106
  0x0B, 0x00, 0x05, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x0C, 0x09, 0x00, 0x33, 0x0C, 0x04, 0x07, 0x45, 
42107
  0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x33, 0x0D, 0x03, 0x06, 0x31, 0x0B, 0x00, 0x00, 0x45, 
42108
  0x0C, 0x00, 0x00, 0x2C, 0x0B, 0x01, 0x00, 0x33, 0x0B, 0x08, 0x09, 0x32, 0x0A, 0x0C, 0x00, 0x45, 
42109
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x81, 0x8F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42110
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42111
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42112
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42113
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42114
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42115
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42116
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x80, 0xB3, 0x00, 0x0C, 0x00, 
42117
  0xDA, 0x81, 0x86, 0x00, 0x0C, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x0C, 0x02, 0xDA, 0x87, 0xBE, 0x2C, 
42118
  0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x04, 0x00, 0x05, 0x45, 0x03, 0x00, 0x00, 0x31, 
42119
  0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 
42120
  0x06, 0x03, 0x00, 0x33, 0x06, 0x03, 0x04, 0x45, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x81, 
42121
  0xA3, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42122
  0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 
42123
  0x72, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD8, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 
42124
  0x66, 0x6C, 0x75, 0x73, 0x68, 0xCF, 0x0C, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 
42125
  0x6D, 0x61, 0x70, 0xDA, 0x79, 0xCF, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 
42126
  0x74, 0x2D, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xD8, 0x11, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
42127
  0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xCF, 0x10, 0x65, 0x76, 0x2F, 
42128
  0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x10, 0x65, 
42129
  0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 
42130
  0x06, 0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 
42131
  0x01, 0x01, 0x00, 0x0E, 0x00, 0x06, 0xCE, 0x06, 0x65, 0x76, 0x65, 0x72, 0x79, 0x3F, 0xDA, 0x04, 
42132
  0x00, 0x0E, 0x00, 0xDA, 0x33, 0x00, 0x0E, 0x01, 0xDA, 0x87, 0xD3, 0x00, 0x0E, 0x02, 0xDA, 0x7E, 
42133
  0x00, 0x0D, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4C, 0x03, 0x0D, 0x04, 0xCF, 
42134
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4B, 0x06, 0x0D, 0x05, 0xDA, 0x1E, 0x29, 0x02, 0x00, 
42135
  0x00, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x09, 
42136
  0x00, 0x3A, 0x03, 0x00, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x1C, 0x02, 0x00, 
42137
  0x00, 0x1C, 0x04, 0x00, 0x00, 0x1B, 0x02, 0x05, 0x00, 0x49, 0x04, 0x00, 0x04, 0x1C, 0xF8, 0xFF, 
42138
  0xFF, 0x03, 0x02, 0x00, 0x00, 0x86, 0x0E, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42139
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 
42140
  0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x61, 0x6E, 0x2D, 
42141
  0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x3F, 0xDA, 0x85, 0x77, 0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x73, 
42142
  0x69, 0x67, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x73, 0x69, 0x67, 
42143
  0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0xCF, 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0xD7, 0x00, 0xCD, 
42144
  0x00, 0x08, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, 0x02, 0xCE, 0x05, 0x64, 0x65, 0x62, 0x75, 
42145
  0x67, 0x38, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0xDA, 0x83, 0xE2, 0xDA, 0x83, 0xE0, 0xCF, 
42146
  0x09, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
42147
  0x00, 0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x33, 0x00, 0x0B, 0xCE, 0x09, 0x63, 
42148
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x33, 0x00, 
42149
  0xDA, 0x81, 0x5C, 0x00, 0x33, 0x01, 0xDA, 0x87, 0xDE, 0x00, 0x33, 0x02, 0xDA, 0x7E, 0x03, 0x33, 
42150
  0x04, 0xDA, 0x1E, 0x04, 0x32, 0x03, 0xDA, 0x43, 0x06, 0x32, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42151
  0x30, 0x30, 0x30, 0x51, 0x0A, 0x30, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 
42152
  0x30, 0x30, 0x30, 0x30, 0x30, 0x52, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42153
  0x30, 0x53, 0x1A, 0x28, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x54, 0x22, 0x28, 
42154
  0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x55, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 
42155
  0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 
42156
  0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x2A, 0x00, 0x3A, 0x07, 
42157
  0x00, 0x03, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 
42158
  0x07, 0x00, 0x1E, 0x09, 0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 
42159
  0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 
42160
  0x03, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 
42161
  0x08, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 
42162
  0x0C, 0x00, 0x09, 0x0E, 0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 
42163
  0x00, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 
42164
  0x00, 0x00, 0x27, 0x0E, 0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x2B, 0x0A, 
42165
  0x00, 0x00, 0x47, 0x09, 0x07, 0x0A, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 
42166
  0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD6, 
42167
  0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x83, 0x8D, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42168
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42169
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42170
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42171
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42172
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42173
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x73, 
42174
  0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0xD8, 0x07, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0xCF, 
42175
  0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0xD8, 0x0A, 0x61, 0x72, 0x72, 
42176
  0x61, 0x79, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0xCF, 0x03, 0x64, 0x65, 0x63, 0xD7, 0x00, 0xCD, 0x00, 
42177
  0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x02, 0x00, 0x02, 0xCE, 0x03, 0x64, 0x65, 0x63, 
42178
  0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 0x1E, 0x00, 0x02, 0x01, 0xDA, 0x87, 0xEA, 0x07, 0x02, 0x00, 
42179
  0x01, 0x03, 0x02, 0x00, 0x00, 0x80, 0x8A, 0x20, 0x00, 0x20, 0xCF, 0x0B, 0x65, 0x76, 0x2F, 0x63, 
42180
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0xD8, 0x0B, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x70, 0x61, 
42181
  0x63, 0x69, 0x74, 0x79, 0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x6C, 0x6F, 0x63, 0x61, 
42182
  0x6C, 0x65, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 
42183
  0xCF, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xD8, 0x0C, 
42184
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x80, 0xAD, 0xDA, 
42185
  0x80, 0xB1, 0xCF, 0x05, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xDA, 0x82, 0xC2, 0xCF, 0x0D, 0x73, 0x74, 
42186
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x84, 0x63, 0xCF, 0x0B, 
42187
  0x6F, 0x73, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 
42188
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0xCF, 0x0D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
42189
  0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0xDA, 0x0D, 0xDA, 0x80, 0xB5, 0xD7, 0x00, 0xCD, 0x02, 
42190
  0xFF, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x04, 0x00, 0x01, 0x03, 
42191
  0xCE, 0x07, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x80, 0xB0, 0x00, 0x04, 
42192
  0x00, 0xDA, 0x31, 0x00, 0x04, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x04, 0x02, 0xDA, 0x80, 0xB5, 0x30, 
42193
  0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0xCD, 
42194
  0x00, 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x03, 
42195
  0xCE, 0x04, 0x63, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 
42196
  0x00, 0x01, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xB5, 0x2D, 0x00, 0x00, 0x01, 
42197
  0x34, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0xF5, 
42198
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x8E, 0xF5, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42199
  0x03, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x70, 0x69, 0x70, 0x65, 0xD8, 0x07, 0x6F, 
42200
  0x73, 0x2F, 0x70, 0x69, 0x70, 0x65, 0xCF, 0x11, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 
42201
  0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xD7, 0x01, 0xCD, 0x01, 0xDD, 0x00, 0x00, 
42202
  0x08, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x13, 0x01, 0x24, 0xCE, 0x11, 0x62, 0x75, 
42203
  0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 
42204
  0x04, 0xDA, 0x82, 0xBC, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
42205
  0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 
42206
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
42207
  0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 
42208
  0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 
42209
  0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 
42210
  0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 
42211
  0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
42212
  0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 
42213
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 
42214
  0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 
42215
  0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x82, 0xF6, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 
42216
  0xF7, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x82, 0xF8, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x82, 0xF9, 0xBF, 
42217
  0xFF, 0x00, 0x1E, 0xDA, 0x82, 0xE5, 0xBF, 0xFF, 0x00, 0x1F, 0xCF, 0x12, 0x62, 0x75, 0x6E, 0x64, 
42218
  0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x6D, 0x61, 0x6E, 0x70, 0x61, 0x67, 0x65, 0x00, 0x13, 
42219
  0x00, 0xCF, 0x07, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x73, 0x00, 0x13, 0x01, 0xDA, 0x87, 0xFD, 
42220
  0x02, 0x13, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x6A, 0x05, 0x13, 0x04, 0xCF, 
42221
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x69, 0x08, 0x12, 0x05, 0xCF, 0x06, 0x62, 0x75, 0x6E, 
42222
  0x64, 0x6C, 0x65, 0x2D, 0x03, 0x00, 0x13, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 
42223
  0x04, 0x00, 0x00, 0x49, 0x02, 0x03, 0x04, 0x1B, 0x04, 0x02, 0x00, 0x1F, 0x04, 0x0C, 0x00, 0x3A, 
42224
  0x02, 0x03, 0x04, 0x1B, 0x05, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 
42225
  0x02, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x19, 0x35, 
42226
  0x06, 0x07, 0x00, 0x49, 0x04, 0x03, 0x04, 0x1C, 0xF5, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xBF, 
42227
  0xFF, 0x91, 0xC5, 0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42228
  0x00, 0x05, 0x00, 0x05, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42229
  0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xCF, 0x0E, 0x73, 0x74, 0x72, 
42230
  0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0xD8, 0x0E, 0x73, 0x74, 0x72, 
42231
  0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0xCF, 0x06, 0x73, 0x74, 0x72, 
42232
  0x75, 0x63, 0x74, 0xDA, 0x81, 0xAD, 0xCF, 0x0C, 0x65, 0x76, 0x2F, 0x61, 0x6C, 0x6C, 0x2D, 0x74, 
42233
  0x61, 0x73, 0x6B, 0x73, 0xD8, 0x0C, 0x65, 0x76, 0x2F, 0x61, 0x6C, 0x6C, 0x2D, 0x74, 0x61, 0x73, 
42234
  0x6B, 0x73, 0xCF, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0xD7, 
42235
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x06, 
42236
  0x00, 0x04, 0xCE, 0x0B, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0xDA, 
42237
  0x04, 0xCF, 0x11, 0x66, 0x66, 0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x61, 
42238
  0x6C, 0x69, 0x61, 0x73, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x06, 0x01, 0xCF, 0x08, 0x72, 
42239
  0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x00, 0x06, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x06, 0x03, 
42240
  0xDA, 0x88, 0x0A, 0x2C, 0x05, 0x00, 0x00, 0x33, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x34, 
42241
  0x02, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x8F, 0xAE, 0x05, 0x00, 0x05, 
42242
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x0A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 
42243
  0x73, 0x74, 0x65, 0x70, 0xDA, 0x85, 0x01, 0xCF, 0x0E, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x62, 
42244
  0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0xDA, 0x77, 0xCF, 0x09, 0x70, 0x65, 0x67, 0x2F, 0x6D, 
42245
  0x61, 0x74, 0x63, 0x68, 0xD8, 0x09, 0x70, 0x65, 0x67, 0x2F, 0x6D, 0x61, 0x74, 0x63, 0x68, 0xCF, 
42246
  0x14, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 
42247
  0x61, 0x74, 0x74, 0x65, 0x6E, 0xD8, 0x14, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x70, 0x72, 
42248
  0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xCF, 0x09, 0x77, 0x68, 0x65, 
42249
  0x6E, 0x2D, 0x77, 0x69, 0x74, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 
42250
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x17, 0x00, 0x06, 0xCE, 0x09, 0x77, 0x68, 0x65, 0x6E, 0x2D, 
42251
  0x77, 0x69, 0x74, 0x68, 0xDA, 0x04, 0xDA, 0x81, 0x47, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
42252
  0x0B, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0D, 0x2C, 0x00, 0x05, 0xDA, 0x80, 0xE2, 0xDA, 
42253
  0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAE, 0xD0, 0x05, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x80, 0xDC, 
42254
  0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xAB, 0xDA, 0x83, 0x43, 0xDA, 0x80, 0xDE, 0xCF, 0x01, 0x3D, 0xDA, 
42255
  0x80, 0xDF, 0xDA, 0x87, 0xC6, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xB3, 0x00, 0x2C, 0x00, 0xDA, 0x64, 
42256
  0x00, 0x2C, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x2C, 0x02, 0xDA, 0x80, 0xCA, 0x02, 0x2C, 0x04, 0xDA, 
42257
  0x31, 0x05, 0x2C, 0x05, 0xDA, 0x82, 0xCD, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 
42258
  0x04, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 0x05, 0x03, 0x00, 0x46, 
42259
  0x03, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x03, 0x34, 
42260
  0x01, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x33, 
42261
  0x07, 0x06, 0x08, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x07, 0x04, 0x03, 0x45, 
42262
  0x06, 0x00, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 
42263
  0x08, 0x05, 0x00, 0x33, 0x08, 0x05, 0x03, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x32, 
42264
  0x08, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x2C, 0x0A, 0x09, 0x00, 0x33, 
42265
  0x09, 0x03, 0x0A, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x0A, 0x00, 0x33, 0x09, 0x05, 0x04, 0x45, 
42266
  0x03, 0x00, 0x00, 0x2C, 0x0A, 0x0B, 0x00, 0x33, 0x0A, 0x08, 0x05, 0x31, 0x03, 0x00, 0x00, 0x45, 
42267
  0x09, 0x00, 0x00, 0x2C, 0x08, 0x0C, 0x00, 0x33, 0x08, 0x06, 0x07, 0x32, 0x00, 0x09, 0x00, 0x45, 
42268
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x81, 0x76, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42269
  0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42270
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42271
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42272
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42273
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42274
  0xDA, 0x80, 0x83, 0x00, 0x17, 0x01, 0xDA, 0x80, 0xC7, 0x01, 0x17, 0x03, 0xDA, 0x82, 0x5E, 0x03, 
42275
  0x17, 0x04, 0xCF, 0x04, 0x63, 0x74, 0x6F, 0x72, 0x05, 0x17, 0x05, 0xCF, 0x04, 0x64, 0x74, 0x6F, 
42276
  0x72, 0x06, 0x17, 0x00, 0xDA, 0x88, 0x15, 0x08, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42277
  0x30, 0x30, 0x39, 0x3D, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x01, 0x1B, 
42278
  0x04, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x02, 0x1B, 0x05, 0x02, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x32, 
42279
  0x03, 0x04, 0x00, 0x46, 0x02, 0x00, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1C, 
42280
  0x02, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x32, 0x06, 0x03, 0x00, 0x45, 0x06, 0x00, 0x00, 0x31, 
42281
  0x06, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 
42282
  0x08, 0x02, 0x00, 0x33, 0x08, 0x02, 0x07, 0x45, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x81, 
42283
  0xB6, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0x03, 
42284
  0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 
42285
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
42286
  0x80, 0xBA, 0xD7, 0x01, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
42287
  0xFF, 0x02, 0x06, 0x01, 0x09, 0xCE, 0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x72, 
42288
  0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x04, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 
42289
  0x72, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x87, 0xD2, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
42290
  0x80, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xB6, 
42291
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 
42292
  0x00, 0x06, 0xDA, 0x80, 0xB9, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xCD, 0x00, 0x06, 0x01, 0xDA, 0x80, 
42293
  0xC7, 0x00, 0x06, 0x02, 0xDA, 0x80, 0xBA, 0x2C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 
42294
  0x03, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x05, 0x36, 0x03, 0x00, 0x00, 0xBF, 
42295
  0xFF, 0x8F, 0x13, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x00, 
42296
  0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xD8, 0x0C, 
42297
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0xCF, 0x05, 0x63, 0x6F, 
42298
  0x75, 0x6E, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x16, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 
42299
  0xFF, 0xFF, 0x01, 0x80, 0xA3, 0x00, 0x2A, 0xCE, 0x05, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xDA, 0x04, 
42300
  0xDA, 0x2F, 0x00, 0x80, 0xA3, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xA3, 0x01, 0xDA, 0x33, 0x00, 
42301
  0x80, 0xA3, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xA3, 0x03, 0xDA, 0x88, 0x23, 0x00, 0x80, 0xA3, 
42302
  0x04, 0xDA, 0x7E, 0x02, 0x80, 0xA2, 0x06, 0xDA, 0x81, 0xFC, 0x02, 0x80, 0xA2, 0x06, 0xCF, 0x07, 
42303
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x44, 0x04, 0x11, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42304
  0x30, 0x31, 0x46, 0x07, 0x11, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x45, 0x0A, 
42305
  0x11, 0x09, 0xDA, 0x1E, 0x15, 0x29, 0x09, 0xDA, 0x82, 0x00, 0x16, 0x29, 0x08, 0xDA, 0x82, 0x01, 
42306
  0x16, 0x29, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x48, 0x19, 0x29, 0x0B, 0xCF, 
42307
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x47, 0x1C, 0x29, 0x0C, 0xDA, 0x1E, 0x2D, 0x4A, 0x0A, 
42308
  0xDA, 0x82, 0x00, 0x2F, 0x4A, 0x0B, 0xDA, 0x82, 0x04, 0x30, 0x4A, 0x09, 0xDA, 0x82, 0x01, 0x31, 
42309
  0x4A, 0x0C, 0xDA, 0x82, 0x05, 0x31, 0x4A, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 
42310
  0x4A, 0x34, 0x4A, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x49, 0x37, 0x4A, 0x0F, 
42311
  0xDA, 0x1E, 0x4E, 0x75, 0x0B, 0xDA, 0x82, 0x00, 0x50, 0x75, 0x0C, 0xDA, 0x82, 0x04, 0x52, 0x75, 
42312
  0x0D, 0xDA, 0x82, 0x08, 0x53, 0x75, 0x0A, 0xDA, 0x82, 0x01, 0x54, 0x75, 0x0E, 0xDA, 0x82, 0x05, 
42313
  0x55, 0x75, 0x0F, 0xDA, 0x82, 0x09, 0x55, 0x75, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42314
  0x31, 0x4C, 0x58, 0x75, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x4B, 0x5B, 0x75, 
42315
  0x12, 0xDA, 0x1E, 0x79, 0x80, 0xA2, 0x0B, 0xDA, 0x82, 0x0C, 0x7D, 0x80, 0xA2, 0x0C, 0xDA, 0x82, 
42316
  0x0D, 0x7E, 0x80, 0xA2, 0x0A, 0xDA, 0x82, 0x0E, 0x7E, 0x80, 0xA2, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
42317
  0x30, 0x30, 0x30, 0x31, 0x4E, 0x80, 0x81, 0x80, 0xA2, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42318
  0x30, 0x31, 0x4D, 0x80, 0x84, 0x80, 0xA2, 0x0F, 0xDA, 0x1E, 0x80, 0x85, 0x80, 0x99, 0x0D, 0xDA, 
42319
  0x43, 0x80, 0x85, 0x80, 0x99, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x4F, 0x80, 
42320
  0x89, 0x80, 0x97, 0x12, 0xDA, 0x82, 0x12, 0x80, 0x8B, 0x80, 0x97, 0x13, 0xDA, 0x82, 0x13, 0x80, 
42321
  0x8D, 0x80, 0x97, 0x14, 0xDA, 0x82, 0x14, 0x2B, 0x04, 0x00, 0x00, 0x3F, 0x05, 0x02, 0x00, 0x1B, 
42322
  0x06, 0x05, 0x00, 0x26, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x0E, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 
42323
  0x07, 0x01, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 0x09, 0x00, 0x3A, 0x07, 0x01, 0x08, 0x1B, 
42324
  0x09, 0x07, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x07, 0x00, 0x00, 0x1E, 0x07, 0x02, 0x00, 0x05, 
42325
  0x04, 0x04, 0x01, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xF8, 0xFF, 0xFF, 0x1C, 0x91, 0x00, 0x00, 0x26, 
42326
  0x07, 0x06, 0x01, 0x1E, 0x07, 0x17, 0x00, 0x3D, 0x08, 0x02, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 
42327
  0x08, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x0A, 0x01, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 0x1F, 
42328
  0x0B, 0x0F, 0x00, 0x3A, 0x0A, 0x01, 0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x49, 0x08, 0x09, 0x08, 0x28, 
42329
  0x0D, 0x00, 0x00, 0x25, 0x0A, 0x0D, 0x08, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x08, 0x00, 0x00, 0x3A, 
42330
  0x0A, 0x09, 0x08, 0x32, 0x0C, 0x0A, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1E, 0x0D, 0x02, 0x00, 0x05, 
42331
  0x04, 0x04, 0x01, 0x49, 0x0B, 0x01, 0x0B, 0x1C, 0xF2, 0xFF, 0xFF, 0x1C, 0x79, 0x00, 0x00, 0x26, 
42332
  0x08, 0x06, 0x02, 0x1E, 0x08, 0x20, 0x00, 0x3D, 0x09, 0x02, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 
42333
  0x09, 0x02, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 
42334
  0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 0x0E, 0x15, 0x00, 0x3A, 
42335
  0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x49, 0x09, 0x0A, 0x09, 0x28, 0x10, 0x00, 0x00, 0x25, 
42336
  0x0D, 0x10, 0x09, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x49, 0x0C, 0x0B, 0x0C, 0x28, 
42337
  0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x0C, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 
42338
  0x0D, 0x0A, 0x09, 0x3A, 0x10, 0x0B, 0x0C, 0x33, 0x0F, 0x0D, 0x10, 0x35, 0x11, 0x00, 0x00, 0x1E, 
42339
  0x11, 0x02, 0x00, 0x05, 0x04, 0x04, 0x01, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xEC, 0xFF, 0xFF, 0x1C, 
42340
  0x58, 0x00, 0x00, 0x26, 0x09, 0x06, 0x03, 0x1E, 0x09, 0x2A, 0x00, 0x3D, 0x0A, 0x02, 0x00, 0x1B, 
42341
  0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x02, 0x1B, 
42342
  0x0D, 0x0A, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 
42343
  0x11, 0x00, 0x00, 0x49, 0x10, 0x01, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1F, 0x11, 0x1C, 0x00, 0x3A, 
42344
  0x10, 0x01, 0x11, 0x1B, 0x12, 0x10, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x13, 0x00, 0x00, 0x25, 
42345
  0x10, 0x13, 0x0A, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x15, 0x00, 0x00, 0x49, 0x0E, 0x0C, 0x0E, 0x28, 
42346
  0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0E, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x10, 0x00, 0x00, 0x49, 
42347
  0x0F, 0x0D, 0x0F, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0F, 0x1E, 0x10, 0x02, 0x00, 0x1C, 
42348
  0x0B, 0x00, 0x00, 0x3A, 0x10, 0x0B, 0x0A, 0x3A, 0x13, 0x0C, 0x0E, 0x3A, 0x14, 0x0D, 0x0F, 0x33, 
42349
  0x12, 0x10, 0x13, 0x31, 0x14, 0x00, 0x00, 0x35, 0x15, 0x00, 0x00, 0x1E, 0x15, 0x02, 0x00, 0x05, 
42350
  0x04, 0x04, 0x01, 0x49, 0x11, 0x01, 0x11, 0x1C, 0xE5, 0xFF, 0xFF, 0x1C, 0x2D, 0x00, 0x00, 0x31, 
42351
  0x06, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x31, 
42352
  0x06, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0A, 0x0C, 0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x2A, 
42353
  0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 
42354
  0x0E, 0x20, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x2B, 0x0D, 0x00, 0x00, 0x23, 
42355
  0x10, 0x0D, 0x06, 0x1E, 0x10, 0x12, 0x00, 0x3A, 0x11, 0x0B, 0x0D, 0x1B, 0x12, 0x11, 0x00, 0x3A, 
42356
  0x11, 0x02, 0x0D, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x11, 0x13, 0x12, 0x1B, 0x14, 0x11, 0x00, 0x28, 
42357
  0x15, 0x00, 0x00, 0x25, 0x11, 0x15, 0x14, 0x1E, 0x11, 0x04, 0x00, 0x29, 0x0A, 0x00, 0x00, 0x1C, 
42358
  0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0B, 0x0D, 0x14, 0x3A, 0x15, 0x13, 0x14, 0x3C, 
42359
  0x0C, 0x0D, 0x15, 0x05, 0x0D, 0x0D, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 
42360
  0x08, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1E, 
42361
  0x0D, 0x02, 0x00, 0x05, 0x04, 0x04, 0x01, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xE1, 0xFF, 0xFF, 0x03, 
42362
  0x04, 0x00, 0x00, 0x84, 0x74, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42363
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42364
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42365
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42366
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42367
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42368
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42369
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42370
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42371
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42372
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42373
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42374
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42375
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42376
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42377
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42378
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42379
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42380
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42381
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42382
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF4, 0x01, 0xCF, 0x0F, 0x6C, 0x6F, 0x61, 
42383
  0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x82, 0x41, 0xCF, 
42384
  0x10, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 
42385
  0x2A, 0xDA, 0x82, 0x36, 0xDA, 0x82, 0xF5, 0xD7, 0x01, 0xCD, 0x01, 0xDD, 0x00, 0x00, 0x0A, 0x01, 
42386
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x0F, 0x01, 0x1D, 0xCE, 0x10, 0x62, 0x75, 0x6E, 0x64, 
42387
  0x6C, 0x65, 0x2F, 0x72, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x81, 
42388
  0x8B, 0xDA, 0x82, 0xBC, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
42389
  0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 
42390
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
42391
  0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 
42392
  0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 
42393
  0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 
42394
  0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 
42395
  0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
42396
  0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 
42397
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 
42398
  0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0x00, 0x0F, 0x00, 0xDA, 
42399
  0x81, 0x29, 0x00, 0x0F, 0x01, 0xCF, 0x0A, 0x6E, 0x65, 0x77, 0x2D, 0x63, 0x6F, 0x6E, 0x66, 0x69, 
42400
  0x67, 0x00, 0x0F, 0x02, 0xDA, 0x82, 0xF5, 0x03, 0x0F, 0x04, 0xDA, 0x81, 0x39, 0x06, 0x0F, 0x06, 
42401
  0xDA, 0x81, 0x22, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x0D, 0x35, 0x03, 0x04, 0x00, 0x1B, 
42402
  0x04, 0x03, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x3B, 0x05, 0x04, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x31, 
42403
  0x01, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x00, 0x06, 0x00, 0x34, 
42404
  0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x18, 0x35, 0x08, 0x09, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 
42405
  0xFF, 0x91, 0x68, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x05, 
42406
  0x01, 0x27, 0x00, 0x27, 0x00, 0x27, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFB, 
42407
  0x03, 0xDB, 0x01, 0xCF, 0x0F, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 
42408
  0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x0F, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 
42409
  0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6C, 0x6C, 
42410
  0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6C, 0x6C, 0xCF, 0x07, 0x62, 0x75, 0x66, 
42411
  0x66, 0x65, 0x72, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 
42412
  0x06, 0x00, 0x02, 0xCE, 0x07, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 
42413
  0xDA, 0x82, 0x4E, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x88, 0x3B, 0x31, 0x00, 
42414
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 
42415
  0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x6A, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x2D, 0x00, 0x2D, 
42416
  0x00, 0x2D, 0xDA, 0x80, 0x82, 0xDA, 0x5D, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 
42417
  0x6E, 0x68, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x68, 0xDA, 0x84, 0x8B, 
42418
  0xDA, 0x84, 0x89, 0xDA, 0x83, 0xF7, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x01, 0x01, 
42419
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x25, 0x00, 0x08, 0xCE, 0x03, 0x6C, 0x65, 0x74, 0xDA, 0x04, 
42420
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x00, 0x05, 0x00, 0x02, 0xDA, 
42421
  0x83, 0x2B, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x83, 0x29, 0x2B, 
42422
  0x03, 0x02, 0x00, 0x0E, 0x02, 0x00, 0x03, 0x2B, 0x04, 0x01, 0x00, 0x25, 0x03, 0x04, 0x02, 0x03, 
42423
  0x03, 0x00, 0x00, 0x79, 0x15, 0x00, 0x15, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xCE, 0x27, 0x65, 
42424
  0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x6E, 0x75, 0x6D, 
42425
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
42426
  0x74, 0x6F, 0x20, 0x6C, 0x65, 0x74, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0xB5, 0xDA, 
42427
  0x30, 0xDA, 0x82, 0xB1, 0xDA, 0x2C, 0x00, 0x25, 0x00, 0xDA, 0x83, 0xA7, 0x00, 0x25, 0x01, 0xDA, 
42428
  0x80, 0xC7, 0x00, 0x25, 0x02, 0xDA, 0x83, 0xF7, 0x08, 0x25, 0x04, 0xDA, 0x37, 0x09, 0x25, 0x05, 
42429
  0xDA, 0x43, 0x0D, 0x25, 0x07, 0xDA, 0x83, 0xC5, 0x11, 0x1E, 0x0A, 0xDA, 0x3A, 0x14, 0x1E, 0x0C, 
42430
  0xDA, 0x46, 0x3F, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 
42431
  0x05, 0x00, 0x1E, 0x04, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x01, 0x03, 0x00, 0x00, 0x3F, 0x03, 
42432
  0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x31, 0x06, 
42433
  0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x23, 0x08, 0x05, 0x04, 0x1E, 0x08, 
42434
  0x0F, 0x00, 0x3A, 0x09, 0x00, 0x05, 0x1B, 0x0A, 0x09, 0x00, 0x05, 0x0B, 0x05, 0x01, 0x3A, 0x09, 
42435
  0x00, 0x0B, 0x1B, 0x0C, 0x09, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 0x0A, 0x0C, 0x2C, 0x0D, 
42436
  0x04, 0x00, 0x35, 0x09, 0x0D, 0x00, 0x32, 0x07, 0x09, 0x00, 0x2C, 0x0E, 0x05, 0x00, 0x35, 0x0D, 
42437
  0x0E, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x32, 0x07, 0x01, 0x00, 0x2C, 0x09, 
42438
  0x06, 0x00, 0x35, 0x08, 0x09, 0x00, 0x2B, 0x09, 0x00, 0x00, 0x32, 0x07, 0x09, 0x00, 0x2C, 0x09, 
42439
  0x07, 0x00, 0x36, 0x09, 0x00, 0x00, 0x81, 0x1D, 0x0D, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
42440
  0x03, 0x00, 0x20, 0x00, 0x20, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
42441
  0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x0F, 0x00, 0x05, 0x00, 
42442
  0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
42443
  0x05, 0xBF, 0xFD, 0x03, 0x04, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
42444
  0x00, 0x03, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0xD8, 0x08, 0x66, 0x66, 
42445
  0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0xCF, 0x0C, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 
42446
  0x69, 0x6E, 0x74, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 0x02, 
42447
  0x14, 0x00, 0x06, 0xCE, 0x0C, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 0x69, 0x6E, 0x74, 
42448
  0x6F, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x30, 0x00, 0x14, 0x00, 0xCF, 0x04, 0x69, 0x6E, 0x74, 0x6F, 
42449
  0x00, 0x14, 0x01, 0xDA, 0x81, 0x5C, 0x00, 0x14, 0x02, 0xDA, 0x88, 0x46, 0x00, 0x13, 0x01, 0xCF, 
42450
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x76, 0x03, 0x13, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42451
  0x30, 0x30, 0x33, 0x75, 0x06, 0x13, 0x05, 0xDA, 0x1E, 0x2E, 0x02, 0x00, 0x00, 0x28, 0x04, 0x00, 
42452
  0x00, 0x49, 0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x0F, 0x00, 0x3A, 0x03, 0x01, 
42453
  0x04, 0x1B, 0x05, 0x03, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x03, 0x06, 
42454
  0x00, 0x1E, 0x03, 0x04, 0x00, 0x32, 0x00, 0x05, 0x00, 0x35, 0x06, 0x02, 0x00, 0x1C, 0x04, 0x00, 
42455
  0x00, 0x32, 0x00, 0x05, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x49, 0x04, 0x01, 
42456
  0x04, 0x1C, 0xF2, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x86, 0xFD, 0x01, 0x04, 0x03, 0x00, 0x03, 
42457
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 
42458
  0x01, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x03, 
42459
  0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x84, 0x58, 
42460
  0xDA, 0x83, 0xA4, 0xDA, 0x82, 0xC9, 0xCF, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 
42461
  0x6F, 0x69, 0x6E, 0xDA, 0x84, 0x68, 0xCF, 0x05, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0xDA, 0x80, 0xB0, 
42462
  0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x63, 0x64, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 
42463
  0x2F, 0x67, 0x63, 0x64, 0xCF, 0x02, 0x2B, 0x2B, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
42464
  0x01, 0x01, 0x01, 0x02, 0x08, 0x00, 0x02, 0xCE, 0x02, 0x2B, 0x2B, 0xDA, 0x04, 0xDA, 0x82, 0x78, 
42465
  0xDA, 0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x88, 0x51, 0x2C, 0x03, 
42466
  0x00, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x33, 0x03, 0x00, 0x04, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x04, 
42467
  0x01, 0x00, 0x33, 0x04, 0x00, 0x02, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 0x8B, 
42468
  0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xCF, 
42469
  0x03, 0x73, 0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0A, 0x01, 0x01, 0xCD, 0x7F, 
42470
  0xFF, 0xFF, 0xFF, 0x06, 0x19, 0x00, 0x04, 0xCE, 0x03, 0x73, 0x65, 0x71, 0xDA, 0x04, 0xDA, 0x5C, 
42471
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x03, 0x09, 0x00, 0x02, 0xCE, 
42472
  0x10, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2D, 0x62, 0x6F, 0x64, 
42473
  0x79, 0xDA, 0x04, 0xDA, 0x85, 0x81, 0xCE, 0x0F, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x6C, 0x6F, 
42474
  0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0xDA, 0x83, 0x14, 0x00, 0x09, 0x00, 0xDA, 0x80, 0xC7, 
42475
  0x00, 0x09, 0x01, 0xCF, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x65, 0x6D, 0x70, 0x74, 0x79, 
42476
  0x2D, 0x62, 0x6F, 0x64, 0x79, 0x3F, 0x02, 0x00, 0x00, 0x26, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x06, 
42477
  0x00, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x02, 0x04, 0x00, 0x2C, 0x02, 0x02, 
42478
  0x00, 0x36, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x82, 0x54, 0x0A, 0x00, 0x07, 0x00, 0x03, 
42479
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0xDA, 0x80, 0xAB, 
42480
  0xDA, 0x80, 0xB3, 0xDA, 0x30, 0xDA, 0x83, 0xEF, 0x00, 0x19, 0x00, 0xDA, 0x84, 0x22, 0x00, 0x19, 
42481
  0x01, 0xDA, 0x80, 0xC7, 0x00, 0x19, 0x02, 0xDA, 0x88, 0x54, 0x02, 0x19, 0x04, 0xDA, 0x86, 0x0B, 
42482
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 
42483
  0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x40, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 
42484
  0x33, 0x08, 0x04, 0x06, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x31, 0x08, 0x00, 0x00, 
42485
  0x34, 0x01, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 0x04, 0x06, 
42486
  0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x09, 0x00, 0x08, 0x45, 0x06, 0x00, 0x00, 
42487
  0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 0x07, 0x06, 0x31, 0x04, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 
42488
  0x03, 0x08, 0x00, 0x00, 0x82, 0xA4, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 
42489
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42490
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
42491
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 
42492
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0B, 0x00, 0x06, 0xCE, 
42493
  0x07, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x0B, 0x00, 0xDA, 0x81, 0x5C, 
42494
  0x00, 0x0B, 0x01, 0xDA, 0x88, 0x5B, 0x00, 0x0B, 0x02, 0xDA, 0x83, 0xC5, 0x00, 0x0A, 0x00, 0xCF, 
42495
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x71, 0x03, 0x0A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42496
  0x30, 0x30, 0x30, 0x70, 0x06, 0x0A, 0x05, 0xDA, 0x1E, 0x2B, 0x02, 0x01, 0x00, 0x28, 0x04, 0x00, 
42497
  0x00, 0x49, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x06, 0x00, 0x3A, 0x03, 0x00, 
42498
  0x04, 0x1B, 0x05, 0x03, 0x00, 0x0A, 0x02, 0x02, 0x05, 0x49, 0x04, 0x00, 0x04, 0x1C, 0xFB, 0xFF, 
42499
  0xFF, 0x03, 0x02, 0x00, 0x00, 0x82, 0xE9, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42500
  0x00, 0x03, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x08, 0x6F, 
42501
  0x73, 0x2F, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x68, 0x65, 0x6C, 
42502
  0x6C, 0xCF, 0x06, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0xDA, 0x83, 0xCD, 0xCF, 0x07, 0x2A, 0x64, 
42503
  0x65, 0x62, 0x75, 0x67, 0x2A, 0xDA, 0x85, 0x1D, 0xCF, 0x03, 0x2D, 0x3E, 0x3E, 0xD7, 0x00, 0xCD, 
42504
  0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 
42505
  0x04, 0xCE, 0x03, 0x2D, 0x3E, 0x3E, 0xDA, 0x04, 0xDA, 0x83, 0xC2, 0x00, 0x05, 0x00, 0xDA, 0x1E, 
42506
  0x00, 0x05, 0x01, 0xDA, 0x80, 0x85, 0x00, 0x05, 0x02, 0xDA, 0x88, 0x64, 0x01, 0x05, 0x04, 0xCF, 
42507
  0x03, 0x66, 0x6F, 0x70, 0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x33, 0x04, 0x00, 0x01, 
42508
  0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 
42509
  0x02, 0x06, 0x25, 0x00, 0x06, 0xCE, 0x03, 0x66, 0x6F, 0x70, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 
42510
  0xD8, 0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x82, 0xB5, 
42511
  0xDA, 0x82, 0xB1, 0xDA, 0x71, 0x00, 0x25, 0x00, 0xDA, 0x82, 0xB2, 0x00, 0x25, 0x01, 0xDA, 0x32, 
42512
  0x00, 0x25, 0x02, 0xDA, 0x88, 0x67, 0x17, 0x25, 0x05, 0xDA, 0x82, 0xCA, 0x19, 0x25, 0x06, 0xDA, 
42513
  0x82, 0x33, 0x21, 0x25, 0x04, 0xDA, 0x38, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 
42514
  0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x0C, 0x00, 0x2B, 
42515
  0x06, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x06, 0x2B, 0x06, 0x01, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 
42516
  0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 
42517
  0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 
42518
  0x01, 0x04, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x3D, 
42519
  0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 0x01, 0x1B, 0x06, 0x04, 0x00, 0x31, 
42520
  0x05, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x33, 
42521
  0x04, 0x06, 0x07, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x32, 
42522
  0x01, 0x04, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x36, 0x07, 0x00, 0x00, 0x85, 0x7F, 0x1E, 0x00, 0x1E, 
42523
  0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 
42524
  0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 
42525
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
42526
  0x00, 0x05, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
42527
  0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x7E, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 
42528
  0x03, 0x00, 0x03, 0xCF, 0x0B, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 
42529
  0xDA, 0x84, 0x44, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x07, 0x65, 0x76, 
42530
  0x2F, 0x72, 0x65, 0x61, 0x64, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 
42531
  0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 0xDA, 0x82, 0xEF, 0xD7, 0x01, 
42532
  0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0x01, 0x1B, 0xCE, 0x0F, 
42533
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x70, 0x6F, 0x6C, 0x69, 0x73, 0x74, 0xDA, 
42534
  0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 
42535
  0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 
42536
  0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
42537
  0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 
42538
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 
42539
  0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 
42540
  0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 
42541
  0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0x00, 
42542
  0x18, 0x00, 0xDA, 0x82, 0xEF, 0x01, 0x18, 0x02, 0xCF, 0x07, 0x76, 0x69, 0x73, 0x69, 0x74, 0x65, 
42543
  0x64, 0x03, 0x18, 0x04, 0xCF, 0x0C, 0x63, 0x79, 0x63, 0x6C, 0x65, 0x2D, 0x64, 0x65, 0x74, 0x65, 
42544
  0x63, 0x74, 0x05, 0x18, 0x06, 0xCF, 0x05, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x07, 0x18, 0x08, 0xDA, 
42545
  0x84, 0x46, 0x09, 0x18, 0x0A, 0xCF, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 0x0C, 0x17, 0x0C, 0xCF, 
42546
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x45, 0x0F, 0x17, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42547
  0x30, 0x30, 0x37, 0x44, 0x12, 0x17, 0x0E, 0xDA, 0x81, 0x64, 0x44, 0x01, 0x00, 0x00, 0x1B, 0x02, 
42548
  0x01, 0x00, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x06, 
42549
  0x05, 0x00, 0x40, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x30, 0x09, 0x00, 0x00, 0x1B, 0x0A, 
42550
  0x09, 0x00, 0x2D, 0x0C, 0x00, 0x10, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x28, 0x0D, 
42551
  0x00, 0x00, 0x49, 0x0B, 0x0C, 0x0D, 0x1B, 0x0D, 0x0B, 0x00, 0x1F, 0x0D, 0x07, 0x00, 0x3A, 0x0B, 
42552
  0x0C, 0x0D, 0x1B, 0x0E, 0x0B, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x35, 0x0B, 0x0A, 0x00, 0x49, 0x0D, 
42553
  0x0C, 0x0D, 0x1C, 0xFA, 0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 
42554
  0x00, 0x07, 0x01, 0x01, 0x01, 0x08, 0x38, 0x02, 0x1C, 0xCE, 0x05, 0x76, 0x69, 0x73, 0x69, 0x74, 
42555
  0xDA, 0x04, 0xDA, 0x30, 0xCE, 0x04, 0x20, 0x2D, 0x3E, 0x20, 0xDA, 0x84, 0x68, 0xCE, 0x29, 0x63, 
42556
  0x79, 0x63, 0x6C, 0x65, 0x20, 0x64, 0x65, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 
42557
  0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 
42558
  0x63, 0x69, 0x65, 0x73, 0x3A, 0x20, 0x25, 0x73, 0xDA, 0x81, 0x49, 0xD0, 0x0C, 0x64, 0x65, 0x70, 
42559
  0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0xDA, 0x82, 0x7C, 0xD8, 0x09, 0x61, 0x72, 
42560
  0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 
42561
  0x01, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x01, 0x04, 
42562
  0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x81, 
42563
  0x0B, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 
42564
  0xFF, 0x01, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 
42565
  0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 
42566
  0x81, 0x12, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x01, 0x0F, 0xDA, 0x81, 0x14, 
42567
  0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 
42568
  0x01, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x02, 
42569
  0xDA, 0x88, 0x71, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 0x72, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x88, 
42570
  0x73, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x84, 0x46, 0x00, 0x38, 0x00, 0xDA, 0x81, 0x64, 0x00, 0x38, 
42571
  0x01, 0xDA, 0x88, 0x74, 0x1F, 0x2A, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x43, 
42572
  0x22, 0x2A, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x42, 0x25, 0x2A, 0x06, 0xDA, 
42573
  0x81, 0x15, 0x2E, 0x01, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x08, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 
42574
  0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2D, 0x04, 0x00, 0x02, 0x3B, 0x03, 0x04, 0x00, 0x1E, 0x03, 
42575
  0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x04, 0x3B, 0x03, 0x04, 0x00, 0x1E, 0x03, 
42576
  0x0A, 0x00, 0x2D, 0x04, 0x00, 0x08, 0x2C, 0x05, 0x01, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x05, 
42577
  0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x32, 0x05, 0x04, 0x00, 0x2C, 0x06, 
42578
  0x04, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x03, 0x00, 0x04, 0x29, 0x04, 0x00, 0x00, 0x3C, 0x03, 
42579
  0x00, 0x04, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x01, 0x0D, 0x35, 0x03, 0x04, 0x00, 0x2C, 0x05, 
42580
  0x05, 0x00, 0x3B, 0x04, 0x03, 0x05, 0x20, 0x04, 0x02, 0x00, 0x2C, 0x04, 0x06, 0x00, 0x1B, 0x03, 
42581
  0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x03, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 
42582
  0x07, 0x00, 0x3A, 0x04, 0x03, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x04, 
42583
  0x01, 0x00, 0x49, 0x05, 0x03, 0x05, 0x1C, 0xFA, 0xFF, 0xFF, 0x2D, 0x03, 0x00, 0x04, 0x28, 0x04, 
42584
  0x00, 0x00, 0x3C, 0x03, 0x00, 0x04, 0x2D, 0x03, 0x00, 0x02, 0x29, 0x04, 0x00, 0x00, 0x3C, 0x03, 
42585
  0x00, 0x04, 0x2D, 0x03, 0x00, 0x08, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x07, 0x00, 0x35, 0x03, 
42586
  0x04, 0x00, 0x2D, 0x04, 0x00, 0x06, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 
42587
  0x00, 0x00, 0xBF, 0xFF, 0x00, 0x90, 0xBA, 0x05, 0x02, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42588
  0x01, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x1B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x54, 
42589
  0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x54, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 
42590
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0F, 0x00, 0x0F, 
42591
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
42592
  0x00, 0x07, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
42593
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 
42594
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x90, 0xB6, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 
42595
  0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x0B, 0x0D, 0x00, 0x0D, 0x00, 
42596
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x1B, 0x00, 
42597
  0x1B, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xEE, 0x03, 0x54, 0x01, 0x00, 0x00, 0xDB, 0x01, 0xCF, 0x09, 
42598
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 0x09, 0x74, 0x61, 0x62, 0x6C, 0x65, 
42599
  0x2F, 0x6E, 0x65, 0x77, 0xCF, 0x04, 0x69, 0x6E, 0x74, 0x3F, 0xD8, 0x04, 0x69, 0x6E, 0x74, 0x3F, 
42600
  0xCF, 0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x85, 0x7B, 
42601
  0xCF, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0xD8, 0x06, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 
42602
  0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0xD8, 0x0C, 
42603
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0xCF, 0x0D, 0x62, 0x75, 
42604
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0xDA, 0x81, 0x70, 0xDA, 0x82, 
42605
  0xEE, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x01, 0x01, 0x01, 0x06, 0x36, 0x01, 0x1D, 
42606
  0xCE, 0x10, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 
42607
  0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x88, 0x7A, 0xDA, 0x82, 0x7C, 0xDA, 0x83, 0x57, 0xD7, 0x00, 0xCD, 
42608
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x01, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x06, 0x73, 0x6F, 
42609
  0x72, 0x74, 0x65, 0x64, 0xDA, 0x04, 0xDA, 0x88, 0x69, 0xDA, 0x80, 0xF2, 0x00, 0x06, 0x00, 0xDA, 
42610
  0x33, 0x00, 0x06, 0x01, 0xDA, 0x80, 0xFD, 0x00, 0x06, 0x02, 0xCF, 0x06, 0x73, 0x6F, 0x72, 0x74, 
42611
  0x65, 0x64, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x32, 0x03, 
42612
  0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x83, 0xD5, 0x09, 0x00, 0x09, 0x00, 
42613
  0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCE, 0x30, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 
42614
  0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x25, 0x73, 0x2C, 0x20, 0x62, 0x72, 
42615
  0x65, 0x61, 0x6B, 0x73, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x20, 0x62, 
42616
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x25, 0x6E, 0xDA, 0x81, 0x49, 0xBF, 0xFF, 0x00, 0x00, 
42617
  0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 
42618
  0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 
42619
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 
42620
  0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
42621
  0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 
42622
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 
42623
  0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 
42624
  0xDA, 0x82, 0xED, 0x00, 0x36, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x36, 0x01, 0xDA, 0x82, 0xEE, 0x01, 
42625
  0x36, 0x03, 0xCF, 0x08, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x61, 0x67, 0x65, 0x04, 0x25, 0x05, 0xCF, 
42626
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x79, 0x07, 0x25, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42627
  0x30, 0x30, 0x37, 0x78, 0x0A, 0x25, 0x07, 0xDA, 0x81, 0x64, 0x11, 0x23, 0x09, 0xDA, 0x82, 0x3C, 
42628
  0x16, 0x23, 0x0A, 0xCF, 0x04, 0x64, 0x65, 0x70, 0x73, 0x16, 0x23, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 
42629
  0x30, 0x30, 0x30, 0x37, 0x41, 0x19, 0x23, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
42630
  0x7A, 0x1C, 0x23, 0x0C, 0xDA, 0x81, 0x15, 0x2E, 0x33, 0x05, 0xCF, 0x0D, 0x62, 0x72, 0x65, 0x61, 
42631
  0x6B, 0x61, 0x67, 0x65, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0x44, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 
42632
  0x00, 0x2D, 0x05, 0x00, 0x10, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x28, 0x06, 0x00, 
42633
  0x00, 0x49, 0x04, 0x05, 0x06, 0x1B, 0x06, 0x04, 0x00, 0x1F, 0x06, 0x1D, 0x00, 0x3A, 0x04, 0x05, 
42634
  0x06, 0x1B, 0x07, 0x04, 0x00, 0x25, 0x04, 0x07, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x16, 0x00, 
42635
  0x00, 0x31, 0x07, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x0D, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 
42636
  0x00, 0x2C, 0x0A, 0x00, 0x00, 0x3B, 0x08, 0x09, 0x0A, 0x20, 0x08, 0x02, 0x00, 0x2C, 0x08, 0x01, 
42637
  0x00, 0x1B, 0x0A, 0x08, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x08, 0x0A, 0x0B, 0x1B, 0x0B, 0x08, 
42638
  0x00, 0x1F, 0x0B, 0x09, 0x00, 0x3A, 0x08, 0x0A, 0x0B, 0x1B, 0x0C, 0x08, 0x00, 0x25, 0x08, 0x0C, 
42639
  0x00, 0x1E, 0x08, 0x03, 0x00, 0x29, 0x0D, 0x00, 0x00, 0x3C, 0x03, 0x07, 0x0D, 0x49, 0x0B, 0x0A, 
42640
  0x0B, 0x1C, 0xF8, 0xFF, 0xFF, 0x49, 0x06, 0x05, 0x06, 0x1C, 0xE4, 0xFF, 0xFF, 0x28, 0x05, 0x00, 
42641
  0x00, 0x49, 0x04, 0x03, 0x05, 0x1E, 0x04, 0x0C, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x06, 0x02, 
42642
  0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 
42643
  0x00, 0x1B, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x33, 0x06, 0x00, 0x05, 0x2C, 0x07, 0x05, 
42644
  0x00, 0x35, 0x06, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x11, 0x36, 0x04, 0x00, 
42645
  0x00, 0xBF, 0xFF, 0x90, 0xA7, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 
42646
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x07, 0x00, 0x07, 
42647
  0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x09, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
42648
  0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x0F, 
42649
  0x00, 0x0B, 0x00, 0x21, 0x00, 0x21, 0xBF, 0xFF, 0x09, 0x00, 0x09, 0xBF, 0xFC, 0x05, 0x00, 0x05, 
42650
  0x06, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1A, 0x00, 0x1A, 
42651
  0x00, 0x1A, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 
42652
  0x00, 0x05, 0xDB, 0x01, 0xCF, 0x0A, 0x65, 0x6E, 0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 
42653
  0xD8, 0x0A, 0x65, 0x6E, 0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xCF, 0x0A, 0x6F, 0x73, 
42654
  0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0xD8, 0x0A, 0x6F, 0x73, 0x2F, 0x73, 0x79, 0x6D, 
42655
  0x6C, 0x69, 0x6E, 0x6B, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0xD8, 
42656
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0xDA, 0x81, 0x05, 0xDA, 0x80, 0xF2, 
42657
  0xCF, 0x07, 0x62, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x11, 
42658
  0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x07, 0x62, 0x72, 0x73, 0x68, 
42659
  0x69, 0x66, 0x74, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 
42660
  0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 
42661
  0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x16, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 
42662
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x16, 0x03, 0x03, 0x04, 0x05, 
42663
  0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 
42664
  0x08, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 
42665
  0x65, 0x65, 0x70, 0xCF, 0x05, 0x6F, 0x73, 0x2F, 0x63, 0x64, 0xDA, 0x81, 0x91, 0xCF, 0x09, 0x65, 
42666
  0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 
42667
  0x65, 0x61, 0x64, 0xCF, 0x0E, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 
42668
  0x65, 0x61, 0x6B, 0xDA, 0x84, 0x9F, 0xCF, 0x06, 0x67, 0x65, 0x6E, 0x73, 0x79, 0x6D, 0xDA, 0x5C, 
42669
  0xCF, 0x05, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xDA, 0x81, 0x90, 0xCF, 0x13, 0x62, 0x75, 0x66, 0x66, 
42670
  0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x33, 0x32, 0xD8, 
42671
  0x13, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 
42672
  0x61, 0x74, 0x33, 0x32, 0xCF, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
42673
  0x65, 0xD8, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xCF, 0x0A, 
42674
  0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x82, 0x3F, 0xCF, 0x09, 0x2A, 
42675
  0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x2A, 0xD0, 0x07, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 
42676
  0x64, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x74, 0x6F, 0x75, 0x63, 0x68, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 
42677
  0x74, 0x6F, 0x75, 0x63, 0x68, 0xCF, 0x08, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0xD7, 
42678
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 0x02, 0x03, 0x00, 0x0F, 0x00, 0x06, 0xCE, 0x08, 
42679
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0xDA, 0x04, 0x00, 0x0F, 0x00, 0xDA, 0x1E, 0x00, 
42680
  0x0F, 0x01, 0xDA, 0x33, 0x00, 0x0F, 0x02, 0xDA, 0x85, 0xBB, 0x00, 0x0F, 0x03, 0xDA, 0x88, 0xAF, 
42681
  0x02, 0x0F, 0x05, 0xDA, 0x3A, 0x03, 0x0F, 0x06, 0xDA, 0x39, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 
42682
  0x01, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x28, 0x08, 0x00, 0x00, 0x4A, 0x07, 
42683
  0x08, 0x05, 0x1E, 0x07, 0x08, 0x00, 0x3A, 0x08, 0x01, 0x05, 0x25, 0x09, 0x08, 0x00, 0x1E, 0x09, 
42684
  0x03, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x05, 0x01, 0x05, 0x1C, 0xF7, 
42685
  0xFF, 0xFF, 0x03, 0x06, 0x00, 0x00, 0x84, 0xA9, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x01, 
42686
  0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x1C, 0x00, 0x28, 0x01, 
42687
  0x0C, 0xBF, 0xFE, 0x03, 0xBF, 0xF9, 0x01, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 
42688
  0x77, 0x68, 0x65, 0x72, 0x65, 0xD8, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x77, 0x68, 
42689
  0x65, 0x72, 0x65, 0xCF, 0x06, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xDA, 0x84, 0x6A, 0xCF, 0x0E, 
42690
  0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0xDA, 0x12, 
42691
  0xCF, 0x04, 0x73, 0x6F, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x16, 0x02, 0x02, 
42692
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0xAD, 0x00, 0x2F, 0xCE, 0x04, 0x73, 0x6F, 0x6D, 0x65, 
42693
  0xDA, 0x04, 0xDA, 0x2F, 0x00, 0x80, 0xAD, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xAD, 0x01, 0xDA, 
42694
  0x33, 0x00, 0x80, 0xAD, 0x02, 0xDA, 0x81, 0xFA, 0x00, 0x80, 0xAD, 0x03, 0xDA, 0x88, 0xB6, 0x00, 
42695
  0x80, 0xAD, 0x04, 0xDA, 0x7E, 0x02, 0x80, 0xAC, 0x06, 0xDA, 0x81, 0xFC, 0x02, 0x80, 0xAC, 0x06, 
42696
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x74, 0x04, 0x13, 0x01, 0xCF, 0x07, 0x5F, 0x30, 
42697
  0x30, 0x30, 0x30, 0x34, 0x76, 0x07, 0x13, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
42698
  0x75, 0x0A, 0x13, 0x09, 0xDA, 0x1E, 0x0D, 0x11, 0x0A, 0xDA, 0x80, 0x87, 0x17, 0x2D, 0x09, 0xDA, 
42699
  0x82, 0x00, 0x18, 0x2D, 0x08, 0xDA, 0x82, 0x01, 0x18, 0x2D, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
42700
  0x30, 0x30, 0x34, 0x78, 0x1B, 0x2D, 0x0B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x77, 
42701
  0x1E, 0x2D, 0x0C, 0xDA, 0x1E, 0x27, 0x2B, 0x0A, 0xDA, 0x80, 0x87, 0x31, 0x50, 0x0A, 0xDA, 0x82, 
42702
  0x00, 0x33, 0x50, 0x0B, 0xDA, 0x82, 0x04, 0x34, 0x50, 0x09, 0xDA, 0x82, 0x01, 0x35, 0x50, 0x0C, 
42703
  0xDA, 0x82, 0x05, 0x35, 0x50, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x7A, 0x38, 
42704
  0x50, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x79, 0x3B, 0x50, 0x0F, 0xDA, 0x1E, 
42705
  0x4A, 0x4E, 0x0D, 0xDA, 0x80, 0x87, 0x54, 0x7D, 0x0B, 0xDA, 0x82, 0x00, 0x56, 0x7D, 0x0C, 0xDA, 
42706
  0x82, 0x04, 0x58, 0x7D, 0x0D, 0xDA, 0x82, 0x08, 0x59, 0x7D, 0x0A, 0xDA, 0x82, 0x01, 0x5A, 0x7D, 
42707
  0x0E, 0xDA, 0x82, 0x05, 0x5B, 0x7D, 0x0F, 0xDA, 0x82, 0x09, 0x5B, 0x7D, 0x01, 0xCF, 0x07, 0x5F, 
42708
  0x30, 0x30, 0x30, 0x30, 0x34, 0x42, 0x5E, 0x7D, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
42709
  0x34, 0x41, 0x61, 0x7D, 0x12, 0xDA, 0x1E, 0x77, 0x7B, 0x10, 0xDA, 0x80, 0x87, 0x80, 0x81, 0x80, 
42710
  0xAC, 0x0B, 0xDA, 0x82, 0x0C, 0x80, 0x85, 0x80, 0xAC, 0x0C, 0xDA, 0x82, 0x0D, 0x80, 0x86, 0x80, 
42711
  0xAC, 0x0A, 0xDA, 0x82, 0x0E, 0x80, 0x86, 0x80, 0xAC, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42712
  0x30, 0x34, 0x44, 0x80, 0x89, 0x80, 0xAC, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
42713
  0x43, 0x80, 0x8C, 0x80, 0xAC, 0x0F, 0xDA, 0x1E, 0x80, 0x8D, 0x80, 0xA1, 0x0D, 0xDA, 0x43, 0x80, 
42714
  0x8D, 0x80, 0xA1, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x45, 0x80, 0x91, 0x80, 
42715
  0x9F, 0x12, 0xDA, 0x82, 0x12, 0x80, 0x93, 0x80, 0x9F, 0x13, 0xDA, 0x82, 0x13, 0x80, 0x95, 0x80, 
42716
  0x9F, 0x14, 0xDA, 0x82, 0x14, 0x80, 0xA6, 0x80, 0xAA, 0x10, 0xDA, 0x80, 0x87, 0x28, 0x04, 0x00, 
42717
  0x00, 0x3F, 0x05, 0x02, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x26, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x10, 
42718
  0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x01, 0x08, 0x1B, 0x08, 0x07, 0x00, 0x1F, 0x08, 0x0B, 
42719
  0x00, 0x3A, 0x07, 0x01, 0x08, 0x1B, 0x09, 0x07, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x07, 0x00, 
42720
  0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 
42721
  0x00, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xF6, 0xFF, 0xFF, 0x1C, 0x99, 0x00, 0x00, 0x26, 0x07, 0x06, 
42722
  0x01, 0x1E, 0x07, 0x19, 0x00, 0x3D, 0x08, 0x02, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x08, 0x00, 
42723
  0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x0A, 0x01, 0x0B, 0x1B, 0x0B, 0x0A, 0x00, 0x1F, 0x0B, 0x11, 
42724
  0x00, 0x3A, 0x0A, 0x01, 0x0B, 0x1B, 0x0C, 0x0A, 0x00, 0x49, 0x08, 0x09, 0x08, 0x28, 0x0D, 0x00, 
42725
  0x00, 0x25, 0x0A, 0x0D, 0x08, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x3A, 0x0A, 0x09, 
42726
  0x08, 0x32, 0x0C, 0x0A, 0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 0x0A, 0x0D, 0x00, 0x1E, 0x0D, 0x03, 
42727
  0x00, 0x1B, 0x04, 0x0A, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0B, 0x01, 0x0B, 0x1C, 0xF0, 0xFF, 
42728
  0xFF, 0x1C, 0x7F, 0x00, 0x00, 0x26, 0x08, 0x06, 0x02, 0x1E, 0x08, 0x22, 0x00, 0x3D, 0x09, 0x02, 
42729
  0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 0x09, 0x02, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x28, 0x09, 0x00, 
42730
  0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 0x0E, 0x1B, 0x0E, 0x0D, 
42731
  0x00, 0x1F, 0x0E, 0x17, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 0x00, 0x49, 0x09, 0x0A, 
42732
  0x09, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x09, 0x1E, 0x0D, 0x02, 0x00, 0x1C, 0x10, 0x00, 
42733
  0x00, 0x49, 0x0C, 0x0B, 0x0C, 0x28, 0x10, 0x00, 0x00, 0x25, 0x0D, 0x10, 0x0C, 0x1E, 0x0D, 0x02, 
42734
  0x00, 0x1C, 0x0B, 0x00, 0x00, 0x3A, 0x0D, 0x0A, 0x09, 0x3A, 0x10, 0x0B, 0x0C, 0x33, 0x0F, 0x0D, 
42735
  0x10, 0x35, 0x11, 0x00, 0x00, 0x1B, 0x0D, 0x11, 0x00, 0x1E, 0x11, 0x03, 0x00, 0x1B, 0x04, 0x0D, 
42736
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xEA, 0xFF, 0xFF, 0x1C, 0x5C, 0x00, 
42737
  0x00, 0x26, 0x09, 0x06, 0x03, 0x1E, 0x09, 0x2C, 0x00, 0x3D, 0x0A, 0x02, 0x00, 0x1B, 0x0B, 0x0A, 
42738
  0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x02, 0x1B, 0x0D, 0x0A, 
42739
  0x00, 0x28, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 0x11, 0x00, 
42740
  0x00, 0x49, 0x10, 0x01, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1F, 0x11, 0x1E, 0x00, 0x3A, 0x10, 0x01, 
42741
  0x11, 0x1B, 0x12, 0x10, 0x00, 0x49, 0x0A, 0x0B, 0x0A, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 
42742
  0x0A, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x17, 0x00, 0x00, 0x49, 0x0E, 0x0C, 0x0E, 0x28, 0x13, 0x00, 
42743
  0x00, 0x25, 0x10, 0x13, 0x0E, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x49, 0x0F, 0x0D, 
42744
  0x0F, 0x28, 0x13, 0x00, 0x00, 0x25, 0x10, 0x13, 0x0F, 0x1E, 0x10, 0x02, 0x00, 0x1C, 0x0D, 0x00, 
42745
  0x00, 0x3A, 0x10, 0x0B, 0x0A, 0x3A, 0x13, 0x0C, 0x0E, 0x3A, 0x14, 0x0D, 0x0F, 0x33, 0x12, 0x10, 
42746
  0x13, 0x31, 0x14, 0x00, 0x00, 0x35, 0x15, 0x00, 0x00, 0x1B, 0x10, 0x15, 0x00, 0x1E, 0x15, 0x03, 
42747
  0x00, 0x1B, 0x04, 0x10, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x11, 0x01, 0x11, 0x1C, 0xE3, 0xFF, 
42748
  0xFF, 0x1C, 0x2F, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 0x0A, 0x0B, 
42749
  0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x0A, 0x0C, 
42750
  0x00, 0x1B, 0x0C, 0x0A, 0x00, 0x2A, 0x0A, 0x00, 0x00, 0x28, 0x0E, 0x00, 0x00, 0x49, 0x0D, 0x01, 
42751
  0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1F, 0x0E, 0x22, 0x00, 0x3A, 0x0D, 0x01, 0x0E, 0x1B, 0x0F, 0x0D, 
42752
  0x00, 0x2B, 0x0D, 0x00, 0x00, 0x23, 0x10, 0x0D, 0x06, 0x1E, 0x10, 0x12, 0x00, 0x3A, 0x11, 0x0B, 
42753
  0x0D, 0x1B, 0x12, 0x11, 0x00, 0x3A, 0x11, 0x02, 0x0D, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x11, 0x13, 
42754
  0x12, 0x1B, 0x14, 0x11, 0x00, 0x28, 0x15, 0x00, 0x00, 0x25, 0x11, 0x15, 0x14, 0x1E, 0x11, 0x04, 
42755
  0x00, 0x29, 0x0A, 0x00, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0B, 0x0D, 
42756
  0x14, 0x3A, 0x15, 0x13, 0x14, 0x3C, 0x0C, 0x0D, 0x15, 0x05, 0x0D, 0x0D, 0x01, 0x1C, 0xEE, 0xFF, 
42757
  0xFF, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x0C, 0x00, 
42758
  0x00, 0x35, 0x0D, 0x00, 0x00, 0x1B, 0x10, 0x0D, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x04, 0x10, 
42759
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0E, 0x1C, 0xDF, 0xFF, 0xFF, 0x03, 0x04, 0x00, 
42760
  0x00, 0x88, 0xD6, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42761
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42762
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42763
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42764
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42765
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42766
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42767
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42768
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42769
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42770
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42771
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42772
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42773
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42774
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42775
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42776
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42777
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42778
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42779
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42780
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42781
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF3, 0x01, 0xCF, 0x0F, 0x6D, 
42782
  0x61, 0x74, 0x68, 0x2F, 0x73, 0x65, 0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xD8, 0x0F, 
42783
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x65, 0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xDA, 
42784
  0x87, 0x0E, 0xDA, 0x86, 0xF5, 0xCF, 0x03, 0x61, 0x73, 0x6D, 0xD8, 0x03, 0x61, 0x73, 0x6D, 0xDA, 
42785
  0x85, 0xB4, 0xDA, 0x85, 0xB2, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x72, 0x65, 0x78, 
42786
  0x70, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x72, 0x65, 0x78, 0x70, 0xCF, 0x09, 0x65, 
42787
  0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0xDA, 0x80, 0xD1, 0xCF, 0x04, 0x74, 0x68, 0x61, 
42788
  0x77, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x0B, 0x2A, 0x00, 0x03, 
42789
  0xCE, 0x04, 0x74, 0x68, 0x61, 0x77, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x6B, 0xDA, 0x70, 
42790
  0xDA, 0x61, 0xDA, 0x83, 0x9E, 0xDA, 0x62, 0xDA, 0x68, 0xDA, 0x88, 0x14, 0xDA, 0x81, 0xF3, 0xDA, 
42791
  0x86, 0x5D, 0x00, 0x2A, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x2A, 0x01, 0xDA, 0x88, 0xCC, 0x04, 0x2A, 
42792
  0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x4A, 0x2E, 0x01, 0x00, 0x00, 0x31, 0x00, 
42793
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 
42794
  0x01, 0x00, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 0x04, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x04, 
42795
  0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1E, 0x04, 
42796
  0x04, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x2C, 0x06, 
42797
  0x04, 0x00, 0x25, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x07, 
42798
  0x05, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x36, 0x07, 
42799
  0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x25, 0x06, 0x03, 0x07, 0x1E, 0x06, 0x07, 0x00, 0x31, 0x00, 
42800
  0x00, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x01, 0x07, 0x00, 0x2C, 0x08, 
42801
  0x06, 0x00, 0x36, 0x08, 0x00, 0x00, 0x2C, 0x08, 0x09, 0x00, 0x25, 0x07, 0x03, 0x08, 0x1E, 0x07, 
42802
  0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x0A, 0x00, 0x36, 0x08, 0x00, 0x00, 0x03, 0x00, 
42803
  0x00, 0x00, 0x88, 0xF5, 0x01, 0x05, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 
42804
  0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 
42805
  0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x03, 0x1C, 0x00, 
42806
  0x1C, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x00, 0x03, 
42807
  0x04, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFC, 0x03, 0x00, 
42808
  0x03, 0x00, 0x03, 0x05, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0xBF, 0xFB, 0x03, 0xDA, 0x82, 0x9E, 0xDA, 
42809
  0x82, 0x93, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xDA, 0x81, 0x46, 
42810
  0xCF, 0x0D, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xD8, 
42811
  0x0D, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xCF, 0x08, 
42812
  0x63, 0x6C, 0x69, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x2D, 
42813
  0x01, 0x01, 0x01, 0x52, 0x81, 0x6E, 0x00, 0x1F, 0x24, 0xCE, 0x08, 0x63, 0x6C, 0x69, 0x2D, 0x6D, 
42814
  0x61, 0x69, 0x6E, 0xDA, 0x04, 0xDA, 0x83, 0x41, 0xDA, 0x82, 0xC9, 0xCE, 0x0A, 0x4A, 0x41, 0x4E, 
42815
  0x45, 0x54, 0x5F, 0x50, 0x41, 0x54, 0x48, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x02, 
42816
  0x01, 0x02, 0x02, 0x09, 0x00, 0x04, 0xCE, 0x0C, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x2D, 0x61, 
42817
  0x6C, 0x69, 0x61, 0x73, 0xDA, 0x04, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 
42818
  0x76, 0xDA, 0x81, 0x6E, 0x00, 0x09, 0x00, 0xCF, 0x07, 0x65, 0x6E, 0x76, 0x2D, 0x76, 0x61, 0x72, 
42819
  0x00, 0x09, 0x01, 0xDA, 0x85, 0xBB, 0x00, 0x09, 0x02, 0xCF, 0x0C, 0x67, 0x65, 0x74, 0x65, 0x6E, 
42820
  0x76, 0x2D, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x03, 0x09, 0x04, 0xDA, 0x1E, 0x32, 0x00, 0x01, 0x00, 
42821
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x06, 0x01, 0x00, 
42822
  0x25, 0x05, 0x04, 0x06, 0x1E, 0x05, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 
42823
  0x91, 0xD1, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 
42824
  0x03, 0x00, 0x03, 0xDA, 0x81, 0x1D, 0xD2, 0x02, 0x00, 0xDA, 0x81, 0x16, 0xDA, 0x81, 0x19, 0xDA, 
42825
  0x88, 0xB0, 0xCE, 0x01, 0x3B, 0xDA, 0x85, 0x32, 0xDA, 0x82, 0xE8, 0xDA, 0x83, 0xE0, 0xD7, 0x00, 
42826
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x0C, 0x39, 0x00, 0x0B, 0xCE, 0x12, 0x6D, 
42827
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 
42828
  0x68, 0xDA, 0x04, 0xDA, 0x81, 0xB2, 0xDA, 0x81, 0xB3, 0xDA, 0x81, 0x26, 0xDA, 0x87, 0x64, 0xDA, 
42829
  0x82, 0x30, 0xCE, 0x06, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0xDA, 0x81, 0xBB, 0xCE, 0x05, 0x3A, 
42830
  0x73, 0x79, 0x73, 0x3A, 0xDA, 0x82, 0x72, 0xDA, 0x83, 0x8A, 0xDA, 0x30, 0xD8, 0x0C, 0x61, 0x72, 
42831
  0x72, 0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x00, 0x39, 0x00, 0xDA, 0x81, 0x22, 
42832
  0x00, 0x39, 0x01, 0xCF, 0x12, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 
42833
  0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x01, 0x39, 0x03, 0xCF, 0x06, 0x63, 0x6F, 0x70, 0x69, 
42834
  0x65, 0x73, 0x02, 0x39, 0x04, 0xCF, 0x0A, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 
42835
  0x78, 0x08, 0x39, 0x06, 0xDA, 0x82, 0x26, 0x08, 0x32, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42836
  0x30, 0x35, 0x72, 0x0B, 0x32, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x71, 0x0E, 
42837
  0x32, 0x09, 0xDA, 0x86, 0x7E, 0x0F, 0x32, 0x0A, 0xDA, 0x82, 0xCC, 0x13, 0x32, 0x0B, 0xCF, 0x07, 
42838
  0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x17, 0x20, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42839
  0x30, 0x35, 0x73, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x2C, 
42840
  0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 
42841
  0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x07, 0x06, 0x08, 0x1B, 
42842
  0x08, 0x07, 0x00, 0x1F, 0x08, 0x26, 0x00, 0x3A, 0x07, 0x06, 0x08, 0x1B, 0x09, 0x08, 0x00, 0x1B, 
42843
  0x0A, 0x07, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x07, 0x0B, 0x00, 0x1B, 
42844
  0x0B, 0x07, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x04, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 
42845
  0x0D, 0x0C, 0x00, 0x1E, 0x0C, 0x07, 0x00, 0x2C, 0x0E, 0x05, 0x00, 0x32, 0x0E, 0x0B, 0x00, 0x2C, 
42846
  0x0F, 0x06, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1B, 0x07, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
42847
  0x07, 0x0D, 0x00, 0x1E, 0x07, 0x10, 0x00, 0x1B, 0x04, 0x09, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x33, 
42848
  0x0C, 0x00, 0x0B, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2B, 0x0D, 0x01, 0x00, 0x32, 
42849
  0x0D, 0x0A, 0x00, 0x2C, 0x0E, 0x09, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x34, 
42850
  0x0D, 0x00, 0x00, 0x45, 0x0C, 0x00, 0x00, 0x32, 0x03, 0x0C, 0x00, 0x2C, 0x0E, 0x0A, 0x00, 0x35, 
42851
  0x0D, 0x0E, 0x00, 0x49, 0x08, 0x06, 0x08, 0x1C, 0xDB, 0xFF, 0xFF, 0x2B, 0x08, 0x01, 0x00, 0x06, 
42852
  0x07, 0x08, 0x04, 0x32, 0x06, 0x07, 0x00, 0x34, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x0B, 0x00, 0x35, 
42853
  0x08, 0x09, 0x00, 0x03, 0x06, 0x00, 0x00, 0x8B, 0x51, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0B, 
42854
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
42855
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 
42856
  0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 
42857
  0x00, 0x22, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x1B, 0x00, 0x1B, 
42858
  0x00, 0x1B, 0x00, 0x1B, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x42, 0x00, 0x1A, 0x00, 0x1A, 
42859
  0x00, 0x1A, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x05, 0x14, 0x00, 
42860
  0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xF2, 0x01, 0xDA, 0x87, 0x64, 0xDA, 
42861
  0x81, 0x25, 0xCE, 0x0D, 0x4A, 0x41, 0x4E, 0x45, 0x54, 0x5F, 0x50, 0x52, 0x4F, 0x46, 0x49, 0x4C, 
42862
  0x45, 0xD0, 0x0B, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x70, 0x61, 0x74, 0x68, 0xCE, 0x08, 
42863
  0x4E, 0x4F, 0x5F, 0x43, 0x4F, 0x4C, 0x4F, 0x52, 0xDA, 0x82, 0x51, 0xD8, 0x06, 0x73, 0x74, 0x64, 
42864
  0x6F, 0x75, 0x74, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 0xDA, 0x87, 
42865
  0x35, 0xCE, 0x01, 0x52, 0xCE, 0x01, 0x78, 0xCE, 0x01, 0x4E, 0xCE, 0x01, 0x6C, 0xCE, 0x01, 0x45, 
42866
  0xCE, 0x01, 0x70, 0xCE, 0x01, 0x73, 0xCE, 0x01, 0x64, 0xCE, 0x01, 0x42, 0xCE, 0x01, 0x77, 0xCE, 
42867
  0x01, 0x68, 0xCE, 0x01, 0x6B, 0xCE, 0x01, 0x55, 0xCE, 0x01, 0x76, 0xCE, 0x01, 0x65, 0xCE, 0x01, 
42868
  0x50, 0xCE, 0x01, 0x69, 0xCE, 0x01, 0x4C, 0xCE, 0x01, 0x6E, 0xCE, 0x01, 0x72, 0xCE, 0x01, 0x62, 
42869
  0xCE, 0x01, 0x75, 0xDA, 0x84, 0x17, 0xCE, 0x01, 0x6D, 0xCE, 0x01, 0x71, 0xDA, 0x3D, 0xDA, 0x88, 
42870
  0x69, 0xDA, 0x81, 0x82, 0xDA, 0x82, 0x3F, 0xDA, 0x85, 0x83, 0xDA, 0x85, 0x84, 0xDA, 0x85, 0x1D, 
42871
  0xDA, 0x86, 0xED, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x10, 0x03, 0x03, 0x03, 0x0B, 0x33, 
42872
  0x00, 0x01, 0x0A, 0xCE, 0x08, 0x72, 0x75, 0x6E, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0xDA, 0x04, 0xCF, 
42873
  0x04, 0x6D, 0x61, 0x69, 0x6E, 0xDA, 0x08, 0xDA, 0x82, 0xC7, 0xDA, 0x85, 0x1D, 0xDA, 0x85, 0x47, 
42874
  0xD0, 0x01, 0x79, 0xDA, 0x80, 0xDC, 0xDA, 0x85, 0x77, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xDA, 
42875
  0x85, 0x16, 0x00, 0x33, 0x00, 0xDA, 0x83, 0x4A, 0x00, 0x33, 0x01, 0xCF, 0x07, 0x73, 0x75, 0x62, 
42876
  0x61, 0x72, 0x67, 0x73, 0x00, 0x33, 0x02, 0xCF, 0x03, 0x61, 0x72, 0x67, 0x00, 0x33, 0x03, 0xCF, 
42877
  0x08, 0x72, 0x75, 0x6E, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x02, 0x33, 0x05, 0xDA, 0x82, 0xCC, 0x06, 
42878
  0x0F, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x6B, 0x17, 0x31, 0x09, 0xDA, 0x85, 
42879
  0x56, 0x19, 0x31, 0x0A, 0xCF, 0x09, 0x77, 0x72, 0x61, 0x70, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x1D, 
42880
  0x31, 0x0B, 0xDA, 0x31, 0x1E, 0x31, 0x08, 0xDA, 0x7E, 0x2C, 0x05, 0x00, 0x00, 0x3A, 0x04, 0x00, 
42881
  0x05, 0x1B, 0x05, 0x04, 0x00, 0x1E, 0x04, 0x2F, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x3B, 0x06, 0x05, 
42882
  0x07, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x07, 0x03, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x06, 0x00, 
42883
  0x00, 0x2C, 0x09, 0x02, 0x00, 0x3B, 0x08, 0x05, 0x09, 0x2B, 0x0A, 0x00, 0x00, 0x3A, 0x09, 0x08, 
42884
  0x0A, 0x1B, 0x06, 0x09, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x06, 0x21, 0x00, 0x2C, 0x0A, 0x03, 
42885
  0x00, 0x3B, 0x09, 0x00, 0x0A, 0x1E, 0x09, 0x03, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x1C, 0x02, 0x00, 
42886
  0x00, 0x2C, 0x08, 0x05, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x0A, 0x08, 
42887
  0x00, 0x33, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x35, 0x08, 0x0B, 0x00, 0x1B, 0x0B, 0x08, 
42888
  0x00, 0x28, 0x08, 0x00, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0C, 0x0D, 
42889
  0x00, 0x1E, 0x0C, 0x0E, 0x00, 0x37, 0x08, 0x0B, 0x08, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0E, 0x08, 
42890
  0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0F, 0x09, 0x00, 0x4A, 0x0E, 0x0F, 0x0D, 0x1E, 0x0E, 0x06, 
42891
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x0F, 0x0A, 0x00, 0x35, 0x0D, 0x0F, 0x00, 0x32, 0x0B, 0x08, 
42892
  0x00, 0x35, 0x0F, 0x0D, 0x00, 0x1C, 0xF0, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
42893
  0x00, 0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
42894
  0xFF, 0xFF, 0x00, 0x04, 0x01, 0x03, 0xCE, 0x09, 0x77, 0x72, 0x61, 0x70, 0x2D, 0x6D, 0x61, 0x69, 
42895
  0x6E, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x0E, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 
42896
  0x09, 0x00, 0x04, 0x00, 0xDA, 0x89, 0x0F, 0x2D, 0x01, 0x00, 0x01, 0x34, 0x01, 0x00, 0x00, 0x2D, 
42897
  0x01, 0x00, 0x07, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0xDA, 0x07, 0x00, 0x07, 0x00, 0x07, 
42898
  0x00, 0x07, 0x91, 0xD6, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x01, 0x17, 0x00, 0x17, 0x00, 
42899
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2A, 0x00, 0x2A, 0x00, 
42900
  0x13, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x02, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
42901
  0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x02, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 
42902
  0x01, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x10, 0x01, 0x19, 0x00, 0x19, 
42903
  0x00, 0x19, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x09, 
42904
  0x00, 0x09, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0xBF, 0xF9, 0x03, 0x00, 0x03, 0x82, 0x00, 0x00, 0x00, 
42905
  0xDA, 0x81, 0x9A, 0xDA, 0x85, 0x49, 0xDA, 0x85, 0x22, 0xDA, 0x86, 0x21, 0xDA, 0x86, 0x47, 0xD8, 
42906
  0x05, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 0x81, 0xC5, 0xD0, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6E, 
42907
  0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0xDA, 0x87, 0xF6, 0xCE, 0x06, 0x4A, 0x61, 
42908
  0x6E, 0x65, 0x74, 0x20, 0xCE, 0x06, 0x31, 0x2E, 0x34, 0x30, 0x2E, 0x30, 0xCE, 0x08, 0x64, 0x62, 
42909
  0x37, 0x66, 0x37, 0x34, 0x31, 0x64, 0xDA, 0x84, 0x62, 0xDA, 0x81, 0x1E, 0xCE, 0x13, 0x20, 0x2D, 
42910
  0x20, 0x27, 0x28, 0x64, 0x6F, 0x63, 0x29, 0x27, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x68, 0x65, 0x6C, 
42911
  0x70, 0xDA, 0x81, 0x90, 0xDA, 0x83, 0xEB, 0xDA, 0x85, 0x73, 0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 
42912
  0x51, 0xCE, 0x05, 0x25, 0x2E, 0x32, 0x30, 0x71, 0xDA, 0x83, 0x33, 0xDA, 0x84, 0xE2, 0xDA, 0x83, 
42913
  0x3A, 0xDA, 0x81, 0x26, 0xDA, 0x85, 0x48, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0D, 0x05, 
42914
  0x00, 0x05, 0x0A, 0x25, 0x00, 0x01, 0x09, 0xCE, 0x04, 0x72, 0x65, 0x70, 0x6C, 0xDA, 0x04, 0xDA, 
42915
  0x81, 0x9A, 0xDA, 0x85, 0x16, 0xDA, 0x85, 0x22, 0xDA, 0x85, 0x2C, 0xDA, 0x81, 0xC5, 0xD0, 0x04, 
42916
  0x72, 0x65, 0x70, 0x6C, 0xDA, 0x85, 0x23, 0xDA, 0x85, 0x2A, 0xDA, 0x85, 0x24, 0xDA, 0x85, 0x25, 
42917
  0x00, 0x25, 0x00, 0xDA, 0x85, 0x55, 0x00, 0x25, 0x01, 0xCF, 0x08, 0x6F, 0x6E, 0x73, 0x69, 0x67, 
42918
  0x6E, 0x61, 0x6C, 0x00, 0x25, 0x02, 0xDA, 0x83, 0x4A, 0x00, 0x25, 0x03, 0xDA, 0x85, 0x5A, 0x00, 
42919
  0x25, 0x04, 0xDA, 0x85, 0x58, 0x00, 0x25, 0x05, 0xCF, 0x04, 0x72, 0x65, 0x70, 0x6C, 0x06, 0x25, 
42920
  0x07, 0xDA, 0x83, 0x4A, 0x0C, 0x25, 0x09, 0xDA, 0x85, 0x55, 0x0C, 0x16, 0x01, 0xCF, 0x07, 0x5F, 
42921
  0x30, 0x30, 0x30, 0x30, 0x36, 0x48, 0x20, 0x02, 0x05, 0x00, 0x2C, 0x08, 0x00, 0x00, 0x35, 0x07, 
42922
  0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x1B, 0x07, 
42923
  0x06, 0x00, 0x20, 0x00, 0x04, 0x00, 0x30, 0x09, 0x00, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x1C, 0x02, 
42924
  0x00, 0x00, 0x1B, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x1E, 0x01, 0x03, 0x00, 0x1B, 0x0A, 
42925
  0x01, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x2B, 0x0B, 0x01, 0x00, 0x29, 0x0C, 0x00, 0x00, 0x33, 0x07, 
42926
  0x0B, 0x0C, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x2C, 0x0B, 
42927
  0x02, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x33, 0x0B, 0x07, 0x0C, 0x2C, 0x0B, 0x04, 0x00, 0x2C, 0x0C, 
42928
  0x05, 0x00, 0x33, 0x03, 0x0B, 0x0C, 0x2C, 0x0B, 0x06, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x33, 0x0B, 
42929
  0x09, 0x0C, 0x2C, 0x0B, 0x08, 0x00, 0x33, 0x04, 0x0B, 0x0A, 0x43, 0x0A, 0x00, 0x00, 0x31, 0x0A, 
42930
  0x00, 0x00, 0x2C, 0x0B, 0x09, 0x00, 0x36, 0x0B, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 
42931
  0x02, 0x02, 0x02, 0x08, 0x15, 0x01, 0x09, 0xDA, 0x85, 0x72, 0xDA, 0x04, 0xDA, 0x85, 0x43, 0xDA, 
42932
  0x85, 0xA3, 0xDA, 0x85, 0xA4, 0xCE, 0x05, 0x72, 0x65, 0x70, 0x6C, 0x3A, 0xDA, 0x85, 0x32, 0xDA, 
42933
  0x84, 0x66, 0xDA, 0x81, 0x28, 0xDA, 0x85, 0x73, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x85, 0x55, 0xBF, 
42934
  0xFF, 0x00, 0x01, 0xDA, 0x89, 0x1D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 
42935
  0x03, 0xDA, 0x85, 0x5A, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x85, 0x58, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
42936
  0x89, 0x1E, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x83, 0x4A, 0x00, 0x15, 0x00, 0xDA, 0x85, 0x68, 0x00, 
42937
  0x15, 0x01, 0xDA, 0x15, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
42938
  0x2B, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x35, 0x03, 0x02, 0x00, 0x2C, 0x02, 0x01, 0x00, 
42939
  0x32, 0x01, 0x02, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2C, 0x04, 0x03, 0x00, 
42940
  0x2C, 0x05, 0x04, 0x00, 0x33, 0x04, 0x03, 0x05, 0x2C, 0x04, 0x05, 0x00, 0x32, 0x02, 0x04, 0x00, 
42941
  0x2C, 0x05, 0x06, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2D, 0x02, 0x00, 0x07, 0x33, 0x04, 0x00, 0x02, 
42942
  0x2C, 0x02, 0x07, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x8E, 0xDA, 0x0C, 0x00, 0x0C, 0x00, 
42943
  0x0C, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 
42944
  0xFC, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 
42945
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x8E, 0xD4, 0x03, 0x00, 0x10, 0x00, 0x10, 0x00, 0x03, 
42946
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 
42947
  0x03, 0x00, 0x03, 0x0B, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 
42948
  0x29, 0x00, 0x29, 0x00, 0x1C, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42949
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
42950
  0x00, 0x03, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x81, 0x6E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 
42951
  0x81, 0x6E, 0x01, 0xDA, 0x88, 0xD3, 0x04, 0x81, 0x6E, 0x03, 0xCF, 0x0B, 0x73, 0x68, 0x6F, 0x75, 
42952
  0x6C, 0x64, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x05, 0x81, 0x6E, 0x04, 0xCF, 0x07, 0x6E, 0x6F, 0x2D, 
42953
  0x66, 0x69, 0x6C, 0x65, 0x06, 0x81, 0x6E, 0x05, 0xCF, 0x05, 0x71, 0x75, 0x69, 0x65, 0x74, 0x07, 
42954
  0x81, 0x6E, 0x06, 0xCF, 0x09, 0x72, 0x61, 0x77, 0x2D, 0x73, 0x74, 0x64, 0x69, 0x6E, 0x08, 0x81, 
42955
  0x6E, 0x07, 0xCF, 0x0A, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x6F, 0x70, 0x74, 0x73, 0x09, 0x81, 
42956
  0x6E, 0x08, 0xCF, 0x0D, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x6F, 0x6E, 0x2D, 0x65, 0x72, 0x72, 0x6F, 
42957
  0x72, 0x0A, 0x81, 0x6E, 0x09, 0xDA, 0x87, 0x0D, 0x0B, 0x81, 0x6E, 0x0A, 0xCF, 0x0A, 0x64, 0x65, 
42958
  0x62, 0x75, 0x67, 0x2D, 0x66, 0x6C, 0x61, 0x67, 0x0C, 0x81, 0x6E, 0x0B, 0xCF, 0x0C, 0x63, 0x6F, 
42959
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x6F, 0x6E, 0x6C, 0x79, 0x0D, 0x81, 0x6E, 0x0C, 0xCF, 0x0A, 
42960
  0x77, 0x61, 0x72, 0x6E, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x0E, 0x81, 0x6E, 0x0D, 0xCF, 0x0B, 
42961
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x0F, 0x81, 0x6E, 0x0E, 0xCF, 
42962
  0x0C, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x14, 0x3B, 0x10, 
42963
  0xCF, 0x02, 0x6A, 0x70, 0x20, 0x3B, 0x12, 0xCF, 0x08, 0x70, 0x61, 0x74, 0x68, 0x2D, 0x73, 0x65, 
42964
  0x70, 0x27, 0x3B, 0x11, 0xDA, 0x82, 0x2D, 0x28, 0x34, 0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
42965
  0x30, 0x38, 0x6C, 0x2A, 0x34, 0x15, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x6D, 0x2D, 
42966
  0x34, 0x16, 0xDA, 0x43, 0x3F, 0x45, 0x10, 0xCF, 0x08, 0x6A, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 
42967
  0x65, 0x4C, 0x54, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x6E, 0x55, 0x81, 0x6E, 
42968
  0x10, 0xCF, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 
42969
  0x6C, 0x80, 0x9D, 0x81, 0x6E, 0x12, 0xCF, 0x08, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x73, 
42970
  0x80, 0x9F, 0x81, 0x6E, 0x14, 0xCF, 0x09, 0x64, 0x6F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 
42971
  0x80, 0xA0, 0x81, 0x6E, 0x15, 0xDA, 0x43, 0x80, 0xA2, 0x81, 0x6E, 0x17, 0xCF, 0x07, 0x6C, 0x65, 
42972
  0x6E, 0x61, 0x72, 0x67, 0x73, 0x80, 0xA6, 0x80, 0xFD, 0x1A, 0xDA, 0x89, 0x0C, 0x80, 0xA7, 0x80, 
42973
  0xB3, 0x1B, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x72, 0x80, 0xBF, 0x80, 0xFC, 0x1C, 
42974
  0xDA, 0x89, 0x0B, 0x80, 0xC8, 0x80, 0xD9, 0x1B, 0xDA, 0x83, 0x4A, 0x80, 0xDC, 0x80, 0xFB, 0x1D, 
42975
  0xDA, 0x83, 0x4A, 0x80, 0xFD, 0x81, 0x02, 0x18, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 
42976
  0x73, 0x81, 0x2A, 0x81, 0x6D, 0x1C, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x73, 0x74, 0x64, 0x69, 0x6E, 
42977
  0x81, 0x38, 0x81, 0x6D, 0x1E, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x81, 
42978
  0x5D, 0x81, 0x69, 0x1F, 0xCF, 0x0D, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x6A, 0x61, 
42979
  0x6E, 0x65, 0x74, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 
42980
  0x02, 0x03, 0x00, 0x28, 0x03, 0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x2A, 0x05, 0x00, 0x00, 0x2A, 
42981
  0x06, 0x00, 0x00, 0x29, 0x07, 0x00, 0x00, 0x29, 0x08, 0x00, 0x00, 0x29, 0x09, 0x00, 0x00, 0x2A, 
42982
  0x0A, 0x00, 0x00, 0x2A, 0x0B, 0x00, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x2A, 
42983
  0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x02, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x03, 0x00, 0x35, 
42984
  0x0F, 0x10, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x1E, 0x0F, 0x26, 0x00, 0x2C, 0x13, 0x04, 0x00, 0x35, 
42985
  0x12, 0x13, 0x00, 0x2C, 0x13, 0x05, 0x00, 0x32, 0x12, 0x13, 0x00, 0x2C, 0x14, 0x06, 0x00, 0x35, 
42986
  0x13, 0x14, 0x00, 0x1E, 0x13, 0x03, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 
42987
  0x11, 0x08, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x32, 0x12, 0x10, 0x00, 0x2C, 0x13, 0x09, 0x00, 0x35, 
42988
  0x11, 0x13, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x14, 0x0A, 0x00, 0x35, 0x13, 0x14, 0x00, 0x1B, 
42989
  0x11, 0x13, 0x00, 0x2B, 0x13, 0x01, 0x00, 0x3F, 0x14, 0x11, 0x00, 0x1B, 0x15, 0x14, 0x00, 0x23, 
42990
  0x14, 0x13, 0x15, 0x1E, 0x14, 0x08, 0x00, 0x1B, 0x16, 0x13, 0x00, 0x3B, 0x17, 0x11, 0x16, 0x31, 
42991
  0x17, 0x00, 0x00, 0x2C, 0x19, 0x0B, 0x00, 0x35, 0x18, 0x19, 0x00, 0x05, 0x13, 0x13, 0x01, 0x1C, 
42992
  0xF8, 0xFF, 0xFF, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x14, 0x0C, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2C, 
42993
  0x14, 0x0D, 0x00, 0x32, 0x14, 0x13, 0x00, 0x2C, 0x15, 0x01, 0x00, 0x35, 0x14, 0x15, 0x00, 0x2C, 
42994
  0x0F, 0x0E, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x03, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 
42995
  0x10, 0x0F, 0x00, 0x1E, 0x0F, 0x05, 0x00, 0x2C, 0x11, 0x0F, 0x00, 0x32, 0x11, 0x10, 0x00, 0x2C, 
42996
  0x12, 0x01, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x0F, 0x10, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 
42997
  0x10, 0x03, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x11, 0x11, 0x00, 0x35, 
42998
  0x10, 0x11, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1E, 0x10, 0x06, 0x00, 0x2C, 0x11, 0x12, 0x00, 0x31, 
42999
  0x11, 0x00, 0x00, 0x2C, 0x11, 0x13, 0x00, 0x35, 0x09, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 
43000
  0x09, 0x0F, 0x00, 0x30, 0x0F, 0x00, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x30, 0x11, 0x01, 0x00, 0x30, 
43001
  0x12, 0x02, 0x00, 0x30, 0x13, 0x03, 0x00, 0x30, 0x14, 0x04, 0x00, 0x30, 0x15, 0x05, 0x00, 0x30, 
43002
  0x16, 0x06, 0x00, 0x30, 0x17, 0x07, 0x00, 0x30, 0x18, 0x08, 0x00, 0x30, 0x19, 0x09, 0x00, 0x30, 
43003
  0x1A, 0x0A, 0x00, 0x30, 0x1B, 0x0B, 0x00, 0x30, 0x1C, 0x0C, 0x00, 0x30, 0x1D, 0x0D, 0x00, 0x30, 
43004
  0x1E, 0x0E, 0x00, 0x30, 0x1F, 0x0F, 0x00, 0x30, 0x20, 0x10, 0x00, 0x30, 0x21, 0x11, 0x00, 0x30, 
43005
  0x22, 0x12, 0x00, 0x30, 0x23, 0x13, 0x00, 0x30, 0x24, 0x14, 0x00, 0x30, 0x25, 0x15, 0x00, 0x30, 
43006
  0x26, 0x16, 0x00, 0x30, 0x27, 0x17, 0x00, 0x30, 0x28, 0x18, 0x00, 0x30, 0x29, 0x19, 0x00, 0x30, 
43007
  0x2A, 0x1A, 0x00, 0x2C, 0x2B, 0x14, 0x00, 0x2C, 0x2C, 0x15, 0x00, 0x33, 0x2B, 0x11, 0x2C, 0x2C, 
43008
  0x2B, 0x16, 0x00, 0x33, 0x12, 0x2B, 0x13, 0x2C, 0x2B, 0x17, 0x00, 0x2C, 0x2C, 0x18, 0x00, 0x33, 
43009
  0x2B, 0x14, 0x2C, 0x2C, 0x2B, 0x19, 0x00, 0x33, 0x15, 0x2B, 0x16, 0x2C, 0x2B, 0x1A, 0x00, 0x2C, 
43010
  0x2C, 0x1B, 0x00, 0x33, 0x2B, 0x17, 0x2C, 0x2C, 0x2B, 0x1C, 0x00, 0x33, 0x18, 0x2B, 0x19, 0x2C, 
43011
  0x2B, 0x1D, 0x00, 0x2C, 0x2C, 0x1E, 0x00, 0x33, 0x2B, 0x1A, 0x2C, 0x2C, 0x2B, 0x1F, 0x00, 0x33, 
43012
  0x1B, 0x2B, 0x1C, 0x2C, 0x2B, 0x20, 0x00, 0x2C, 0x2C, 0x21, 0x00, 0x33, 0x2B, 0x1D, 0x2C, 0x2C, 
43013
  0x2B, 0x22, 0x00, 0x33, 0x1E, 0x2B, 0x1F, 0x2C, 0x2B, 0x23, 0x00, 0x2C, 0x2C, 0x24, 0x00, 0x33, 
43014
  0x2B, 0x20, 0x2C, 0x2C, 0x2B, 0x25, 0x00, 0x33, 0x21, 0x2B, 0x22, 0x2C, 0x2B, 0x26, 0x00, 0x2C, 
43015
  0x2C, 0x27, 0x00, 0x33, 0x2B, 0x23, 0x2C, 0x2C, 0x2B, 0x28, 0x00, 0x33, 0x24, 0x2B, 0x25, 0x2C, 
43016
  0x2B, 0x29, 0x00, 0x2C, 0x2C, 0x2A, 0x00, 0x33, 0x2B, 0x26, 0x2C, 0x2C, 0x2B, 0x2B, 0x00, 0x33, 
43017
  0x27, 0x2B, 0x28, 0x2C, 0x2B, 0x2C, 0x00, 0x2C, 0x2C, 0x2D, 0x00, 0x33, 0x2B, 0x29, 0x2C, 0x31, 
43018
  0x2A, 0x00, 0x00, 0x43, 0x11, 0x00, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x30, 0x13, 0x1B, 0x00, 0x1B, 
43019
  0x14, 0x13, 0x00, 0x2B, 0x15, 0x00, 0x00, 0x3F, 0x16, 0x00, 0x00, 0x1B, 0x17, 0x16, 0x00, 0x23, 
43020
  0x18, 0x15, 0x17, 0x1E, 0x18, 0x59, 0x00, 0x3A, 0x19, 0x00, 0x15, 0x1B, 0x1A, 0x19, 0x00, 0x1B, 
43021
  0x1B, 0x07, 0x00, 0x1E, 0x07, 0x0A, 0x00, 0x2B, 0x1C, 0x00, 0x00, 0x2B, 0x1D, 0x01, 0x00, 0x33, 
43022
  0x1A, 0x1C, 0x1D, 0x2C, 0x1D, 0x2E, 0x00, 0x35, 0x1C, 0x1D, 0x00, 0x2C, 0x1E, 0x2B, 0x00, 0x25, 
43023
  0x1D, 0x1E, 0x1C, 0x1B, 0x19, 0x1D, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x19, 0x1B, 0x00, 0x1E, 
43024
  0x19, 0x09, 0x00, 0x2B, 0x1B, 0x01, 0x00, 0x32, 0x1A, 0x1B, 0x00, 0x2C, 0x1C, 0x2E, 0x00, 0x35, 
43025
  0x1B, 0x1C, 0x00, 0x32, 0x1B, 0x15, 0x00, 0x35, 0x1C, 0x14, 0x00, 0x06, 0x15, 0x15, 0x1C, 0x1C, 
43026
  0x41, 0x00, 0x00, 0x32, 0x00, 0x15, 0x00, 0x2C, 0x1C, 0x2F, 0x00, 0x35, 0x1B, 0x1C, 0x00, 0x1B, 
43027
  0x1C, 0x1B, 0x00, 0x2A, 0x04, 0x00, 0x00, 0x1E, 0x0E, 0x19, 0x00, 0x31, 0x1A, 0x00, 0x00, 0x2C, 
43028
  0x1D, 0x30, 0x00, 0x35, 0x1B, 0x1D, 0x00, 0x31, 0x1B, 0x00, 0x00, 0x2C, 0x1E, 0x31, 0x00, 0x35, 
43029
  0x1D, 0x1E, 0x00, 0x1B, 0x1B, 0x1D, 0x00, 0x2C, 0x1D, 0x00, 0x00, 0x3C, 0x1B, 0x1D, 0x1C, 0x2C, 
43030
  0x1D, 0x32, 0x00, 0x3C, 0x1B, 0x1D, 0x0D, 0x2C, 0x1D, 0x33, 0x00, 0x3C, 0x1B, 0x1D, 0x0C, 0x1E, 
43031
  0x0A, 0x07, 0x00, 0x2C, 0x1D, 0x34, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1B, 0x1D, 0x1E, 0x2C, 
43032
  0x1D, 0x35, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1B, 0x1D, 0x1E, 0x33, 0x1B, 0x1C, 0x1A, 0x2C, 
43033
  0x1E, 0x36, 0x00, 0x35, 0x1D, 0x1E, 0x00, 0x1C, 0x22, 0x00, 0x00, 0x2C, 0x1D, 0x37, 0x00, 0x35, 
43034
  0x1B, 0x1D, 0x00, 0x1B, 0x1D, 0x1B, 0x00, 0x2C, 0x1B, 0x00, 0x00, 0x3C, 0x1D, 0x1B, 0x1C, 0x2C, 
43035
  0x1B, 0x32, 0x00, 0x3C, 0x1D, 0x1B, 0x0D, 0x2C, 0x1B, 0x33, 0x00, 0x3C, 0x1D, 0x1B, 0x0C, 0x1E, 
43036
  0x0A, 0x07, 0x00, 0x2C, 0x1B, 0x34, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1D, 0x1B, 0x1E, 0x2C, 
43037
  0x1B, 0x35, 0x00, 0x29, 0x1E, 0x00, 0x00, 0x3C, 0x1D, 0x1B, 0x1E, 0x1E, 0x0B, 0x08, 0x00, 0x2C, 
43038
  0x1B, 0x38, 0x00, 0x33, 0x1A, 0x1B, 0x08, 0x2C, 0x1B, 0x39, 0x00, 0x32, 0x1B, 0x1D, 0x00, 0x2C, 
43039
  0x1E, 0x3A, 0x00, 0x35, 0x1B, 0x1E, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x2C, 0x1B, 0x38, 0x00, 0x33, 
43040
  0x1A, 0x1B, 0x08, 0x2C, 0x1B, 0x39, 0x00, 0x32, 0x1B, 0x1D, 0x00, 0x2C, 0x1E, 0x3B, 0x00, 0x35, 
43041
  0x1B, 0x1E, 0x00, 0x33, 0x1D, 0x1C, 0x1A, 0x2C, 0x1E, 0x36, 0x00, 0x35, 0x1B, 0x1E, 0x00, 0x1B, 
43042
  0x15, 0x17, 0x00, 0x1C, 0xA7, 0xFF, 0xFF, 0x1B, 0x18, 0x03, 0x00, 0x1E, 0x18, 0x03, 0x00, 0x1B, 
43043
  0x19, 0x18, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x19, 0x04, 0x00, 0x1E, 0x19, 0x6B, 0x00, 0x1E, 
43044
  0x0B, 0x09, 0x00, 0x2C, 0x18, 0x3C, 0x00, 0x2C, 0x1A, 0x3D, 0x00, 0x2C, 0x1B, 0x3E, 0x00, 0x33, 
43045
  0x18, 0x1A, 0x1B, 0x2C, 0x18, 0x38, 0x00, 0x32, 0x18, 0x08, 0x00, 0x2C, 0x18, 0x3A, 0x00, 0x36, 
43046
  0x18, 0x00, 0x00, 0x1E, 0x05, 0x02, 0x00, 0x1C, 0x15, 0x00, 0x00, 0x2C, 0x1A, 0x04, 0x00, 0x35, 
43047
  0x18, 0x1A, 0x00, 0x2C, 0x1B, 0x3F, 0x00, 0x35, 0x1A, 0x1B, 0x00, 0x2C, 0x1C, 0x40, 0x00, 0x35, 
43048
  0x1B, 0x1C, 0x00, 0x2C, 0x1C, 0x41, 0x00, 0x2C, 0x1D, 0x42, 0x00, 0x2C, 0x1E, 0x2B, 0x00, 0x33, 
43049
  0x1C, 0x1D, 0x1E, 0x2C, 0x1C, 0x43, 0x00, 0x2C, 0x1D, 0x44, 0x00, 0x33, 0x1C, 0x1D, 0x18, 0x2C, 
43050
  0x1C, 0x45, 0x00, 0x2C, 0x1D, 0x45, 0x00, 0x33, 0x1C, 0x1A, 0x1D, 0x2C, 0x1C, 0x46, 0x00, 0x32, 
43051
  0x1B, 0x1C, 0x00, 0x2C, 0x1D, 0x47, 0x00, 0x35, 0x1C, 0x1D, 0x00, 0x2C, 0x1A, 0x48, 0x00, 0x35, 
43052
  0x18, 0x1A, 0x00, 0x2C, 0x1A, 0x37, 0x00, 0x35, 0x18, 0x1A, 0x00, 0x1B, 0x1A, 0x18, 0x00, 0x30, 
43053
  0x18, 0x1C, 0x00, 0x1B, 0x1B, 0x18, 0x00, 0x30, 0x18, 0x1D, 0x00, 0x1B, 0x1C, 0x18, 0x00, 0x1E, 
43054
  0x0A, 0x07, 0x00, 0x2C, 0x18, 0x34, 0x00, 0x29, 0x1D, 0x00, 0x00, 0x3C, 0x1A, 0x18, 0x1D, 0x2C, 
43055
  0x18, 0x35, 0x00, 0x29, 0x1D, 0x00, 0x00, 0x3C, 0x1A, 0x18, 0x1D, 0x1E, 0x06, 0x03, 0x00, 0x1B, 
43056
  0x18, 0x1C, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x18, 0x49, 0x00, 0x1B, 0x1D, 0x18, 0x00, 0x30, 
43057
  0x18, 0x1E, 0x00, 0x1B, 0x1E, 0x18, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x2C, 0x18, 0x4A, 0x00, 0x1C, 
43058
  0x02, 0x00, 0x00, 0x2C, 0x18, 0x4B, 0x00, 0x2C, 0x1F, 0x4C, 0x00, 0x32, 0x1F, 0x18, 0x00, 0x2C, 
43059
  0x20, 0x01, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x29, 0x18, 0x00, 0x00, 0x1C, 
43060
  0x02, 0x00, 0x00, 0x28, 0x18, 0x00, 0x00, 0x2C, 0x1F, 0x4D, 0x00, 0x32, 0x1F, 0x18, 0x00, 0x2C, 
43061
  0x20, 0x01, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x29, 0x18, 0x00, 0x00, 0x1C, 
43062
  0x02, 0x00, 0x00, 0x28, 0x18, 0x00, 0x00, 0x2C, 0x1F, 0x4E, 0x00, 0x32, 0x1F, 0x18, 0x00, 0x2C, 
43063
  0x20, 0x01, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x2C, 0x18, 0x32, 0x00, 0x32, 0x18, 0x0D, 0x00, 0x2C, 
43064
  0x1F, 0x01, 0x00, 0x35, 0x18, 0x1F, 0x00, 0x2C, 0x18, 0x33, 0x00, 0x32, 0x18, 0x0D, 0x00, 0x2C, 
43065
  0x1F, 0x01, 0x00, 0x35, 0x18, 0x1F, 0x00, 0x2C, 0x18, 0x0F, 0x00, 0x31, 0x18, 0x00, 0x00, 0x2C, 
43066
  0x1F, 0x4F, 0x00, 0x35, 0x18, 0x1F, 0x00, 0x1B, 0x1F, 0x18, 0x00, 0x1E, 0x18, 0x0B, 0x00, 0x2C, 
43067
  0x20, 0x38, 0x00, 0x29, 0x21, 0x00, 0x00, 0x33, 0x1F, 0x20, 0x21, 0x2C, 0x20, 0x39, 0x00, 0x32, 
43068
  0x20, 0x1A, 0x00, 0x2C, 0x21, 0x3B, 0x00, 0x35, 0x20, 0x21, 0x00, 0x2C, 0x20, 0x50, 0x00, 0x28, 
43069
  0x21, 0x00, 0x00, 0x3C, 0x1A, 0x20, 0x21, 0x28, 0x18, 0x00, 0x00, 0x33, 0x1E, 0x18, 0x1A, 0x2C, 
43070
  0x18, 0x51, 0x00, 0x36, 0x18, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
43071
  0x06, 0x01, 0x01, 0x01, 0x02, 0x0D, 0x01, 0x1A, 0xCE, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x69, 
43072
  0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0xDA, 0x04, 0xD8, 0x0B, 0x73, 0x63, 0x61, 0x6E, 
43073
  0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0xDA, 0x86, 0x67, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 
43074
  0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 
43075
  0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 
43076
  0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
43077
  0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 
43078
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 
43079
  0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 
43080
  0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 
43081
  0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 
43082
  0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 
43083
  0xDA, 0x89, 0x31, 0x00, 0x0D, 0x00, 0xDA, 0x43, 0x00, 0x0D, 0x01, 0xDA, 0x89, 0x32, 0x03, 0x0D, 
43084
  0x02, 0xDA, 0x1E, 0x07, 0x0D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x6F, 0x05, 
43085
  0x02, 0x00, 0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x1B, 0x02, 0x03, 0x00, 0x31, 
43086
  0x02, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1E, 
43087
  0x05, 0x02, 0x00, 0x03, 0x05, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 
43088
  0x04, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x2C, 0x15, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x09, 
43089
  0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 
43090
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x2F, 0x01, 
43091
  0x1C, 0xCE, 0x08, 0x63, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 0x86, 0x47, 
43092
  0xCE, 0x06, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0xF4, 0xDA, 0x3D, 0xCE, 0x07, 0x2E, 
43093
  0x6A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0xDA, 0x81, 0x28, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
43094
  0x03, 0x01, 0x01, 0x01, 0x02, 0x04, 0x00, 0x02, 0xCE, 0x0A, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 
43095
  0x6D, 0x61, 0x67, 0x65, 0xDA, 0x04, 0xDA, 0x87, 0xAE, 0xD8, 0x07, 0x6D, 0x61, 0x72, 0x73, 0x68, 
43096
  0x61, 0x6C, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x4A, 0x00, 0x04, 0x01, 0xCF, 0x0A, 0x6D, 0x61, 0x6B, 
43097
  0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 
43098
  0x02, 0x01, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8B, 0x0D, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
43099
  0xDA, 0x81, 0x72, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 
43100
  0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 
43101
  0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 
43102
  0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
43103
  0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 
43104
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 
43105
  0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 
43106
  0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 
43107
  0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 
43108
  0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 
43109
  0xDA, 0x89, 0x32, 0x00, 0x2F, 0x00, 0xDA, 0x43, 0x00, 0x2F, 0x01, 0xCF, 0x08, 0x63, 0x2D, 0x73, 
43110
  0x77, 0x69, 0x74, 0x63, 0x68, 0x03, 0x2F, 0x02, 0xDA, 0x81, 0x22, 0x07, 0x2F, 0x05, 0xDA, 0x83, 
43111
  0x62, 0x24, 0x2F, 0x07, 0xCF, 0x0B, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2D, 0x70, 0x61, 0x74, 
43112
  0x68, 0x05, 0x02, 0x00, 0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x1B, 0x02, 0x03, 
43113
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 
43114
  0x00, 0x05, 0x07, 0x00, 0x02, 0x2D, 0x09, 0x00, 0x00, 0x3F, 0x08, 0x09, 0x00, 0x23, 0x09, 0x07, 
43115
  0x08, 0x1E, 0x09, 0x06, 0x00, 0x05, 0x07, 0x00, 0x02, 0x2D, 0x0A, 0x00, 0x00, 0x3A, 0x08, 0x0A, 
43116
  0x07, 0x1B, 0x06, 0x08, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x32, 0x08, 0x02, 
43117
  0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x1E, 0x08, 0x08, 0x00, 0x2B, 0x0A, 0x00, 
43118
  0x00, 0x2B, 0x0B, 0xF9, 0xFF, 0x33, 0x02, 0x0A, 0x0B, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x0A, 0x0B, 
43119
  0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x07, 0x02, 0x00, 0x2C, 0x08, 0x04, 
43120
  0x00, 0x32, 0x07, 0x08, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x35, 0x08, 0x0A, 0x00, 0x1B, 0x06, 0x08, 
43121
  0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x35, 0x08, 0x09, 
43122
  0x00, 0x32, 0x07, 0x08, 0x00, 0x2C, 0x0A, 0x07, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2A, 0x08, 0x00, 
43123
  0x00, 0x2F, 0x08, 0x00, 0x04, 0x2B, 0x08, 0x03, 0x00, 0x03, 0x08, 0x00, 0x00, 0xBF, 0xFF, 0x92, 
43124
  0x5E, 0x1F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0C, 
43125
  0x02, 0x15, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x12, 0x00, 0x0E, 0x01, 0x19, 0x00, 0x10, 0x00, 0x10, 
43126
  0xBF, 0xFF, 0x0E, 0x00, 0x0E, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 
43127
  0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
43128
  0xFF, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x0E, 0xBF, 0xFF, 0x0C, 0x06, 0x1E, 
43129
  0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 0x00, 0x0C, 0xBF, 0xF6, 
43130
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43131
  0x02, 0x07, 0x00, 0xDA, 0x04, 0xDA, 0x88, 0xEB, 0xDA, 0x82, 0xC9, 0x2C, 0x00, 0x00, 0x00, 0x28, 
43132
  0x01, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2B, 
43133
  0x01, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00, 0x92, 0x96, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
43134
  0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0xCD, 0x7F, 
43135
  0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x18, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 
43136
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 
43137
  0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 
43138
  0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 
43139
  0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 
43140
  0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 
43141
  0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43142
  0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 
43143
  0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 
43144
  0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
43145
  0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 0x06, 0x00, 0xDA, 0x43, 0x31, 0x00, 
43146
  0x00, 0x00, 0x2D, 0x02, 0x00, 0x10, 0x35, 0x01, 0x02, 0x00, 0x2F, 0x01, 0x00, 0x0D, 0x2B, 0x02, 
43147
  0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x95, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
43148
  0x25, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
43149
  0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 
43150
  0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 
43151
  0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
43152
  0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 
43153
  0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 
43154
  0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 
43155
  0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43156
  0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 
43157
  0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 
43158
  0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 
43159
  0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x09, 
43160
  0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x5B, 0x12, 0x00, 0x12, 0x00, 
43161
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43162
  0x04, 0x0D, 0x01, 0x19, 0xCE, 0x08, 0x6C, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 
43163
  0xDA, 0x85, 0xE3, 0xDA, 0x81, 0x6E, 0xDA, 0x85, 0x49, 0xDA, 0x85, 0xDB, 0xBF, 0xFF, 0x00, 0x00, 
43164
  0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 
43165
  0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 
43166
  0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 
43167
  0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
43168
  0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 
43169
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 
43170
  0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 
43171
  0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 
43172
  0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 
43173
  0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 0x0D, 0x00, 0xDA, 
43174
  0x43, 0x00, 0x0D, 0x01, 0xCF, 0x08, 0x6C, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x05, 0x02, 
43175
  0x00, 0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 0x04, 0x02, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x04, 
43176
  0x01, 0x00, 0x33, 0x03, 0x02, 0x04, 0x2C, 0x02, 0x02, 0x00, 0x2D, 0x04, 0x00, 0x08, 0x32, 0x02, 
43177
  0x04, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2B, 0x03, 0x02, 0x00, 0x03, 0x03, 
43178
  0x00, 0x00, 0xBF, 0xFF, 0x92, 0x6B, 0x1E, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
43179
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFF, 0x0A, 0x00, 0x0A, 
43180
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x24, 0x01, 
43181
  0x1C, 0xCE, 0x08, 0x45, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 0x88, 0x69, 
43182
  0xDA, 0x09, 0xCF, 0x08, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0xCF, 0x0C, 0x45, 0x2D, 
43183
  0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0xDA, 0x83, 0x49, 0xDA, 0x1A, 0xDA, 
43184
  0x0E, 0xDA, 0x85, 0x7E, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
43185
  0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 
43186
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 
43187
  0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 
43188
  0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 
43189
  0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 
43190
  0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 
43191
  0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
43192
  0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 
43193
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 
43194
  0x10, 0xDA, 0x89, 0x32, 0x00, 0x24, 0x00, 0xDA, 0x43, 0x00, 0x24, 0x01, 0xCF, 0x08, 0x45, 0x2D, 
43195
  0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x07, 0x24, 0x02, 0xDA, 0x89, 0x0B, 0x12, 0x24, 0x04, 0xDA, 
43196
  0x82, 0xFA, 0x16, 0x24, 0x07, 0xDA, 0x86, 0x42, 0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 
43197
  0x05, 0x02, 0x00, 0x02, 0x2D, 0x03, 0x00, 0x00, 0x32, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 0x00, 
43198
  0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x05, 0x04, 0x00, 0x01, 0x2D, 0x06, 0x00, 0x00, 
43199
  0x3A, 0x05, 0x06, 0x04, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x04, 0x06, 0x00, 
43200
  0x2C, 0x06, 0x02, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x33, 0x06, 0x04, 0x07, 0x45, 0x05, 0x00, 0x00, 
43201
  0x1B, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 
43202
  0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x35, 0x08, 0x09, 0x00, 
43203
  0x1E, 0x08, 0x05, 0x00, 0x35, 0x09, 0x07, 0x00, 0x34, 0x02, 0x00, 0x00, 0x35, 0x0A, 0x09, 0x00, 
43204
  0x1C, 0x04, 0x00, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x3B, 0x09, 0x07, 0x0A, 0x01, 0x09, 0x00, 0x00, 
43205
  0x2C, 0x08, 0x07, 0x00, 0x03, 0x08, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x73, 0x0C, 0x00, 0x0C, 0x01, 
43206
  0x2B, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x01, 0x31, 0x00, 0x28, 0x00, 
43207
  0x28, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 
43208
  0x0C, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0C, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
43209
  0x0C, 0x01, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0xBF, 0xFF, 0x0C, 0x02, 0x15, 0x00, 0x15, 0x00, 0x0E, 
43210
  0xBF, 0xF9, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
43211
  0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 
43212
  0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 
43213
  0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
43214
  0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 
43215
  0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 
43216
  0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 
43217
  0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43218
  0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 
43219
  0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 
43220
  0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 
43221
  0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x2A, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x08, 
43222
  0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x56, 0x12, 0x00, 0x12, 0x00, 
43223
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43224
  0x00, 0x06, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 
43225
  0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
43226
  0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 
43227
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 
43228
  0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 
43229
  0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 
43230
  0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 
43231
  0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 
43232
  0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 
43233
  0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 
43234
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x06, 0x29, 0x00, 
43235
  0x00, 0x00, 0x2F, 0x00, 0x00, 0x03, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
43236
  0x92, 0x54, 0x12, 0x00, 0x12, 0x00, 0x27, 0x00, 0x27, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 
43237
  0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 
43238
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 
43239
  0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 
43240
  0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 
43241
  0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 
43242
  0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 
43243
  0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
43244
  0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 
43245
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 
43246
  0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43247
  0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 
43248
  0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x0A, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 
43249
  0xBF, 0xFF, 0x92, 0x93, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 
43250
  0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x10, 0x01, 0x18, 0xDA, 0x04, 0xDA, 0x88, 
43251
  0x34, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 
43252
  0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 
43253
  0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
43254
  0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 
43255
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 
43256
  0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 
43257
  0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 
43258
  0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 
43259
  0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 
43260
  0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43261
  0x32, 0x00, 0x10, 0x00, 0xDA, 0x43, 0x05, 0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 
43262
  0x03, 0x01, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2A, 0x02, 
43263
  0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 0x02, 
43264
  0x03, 0x04, 0x1E, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 0x02, 
43265
  0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x81, 0x2D, 0x00, 0x24, 0x00, 0x24, 0x00, 
43266
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x37, 0x00, 0x37, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 
43267
  0x4B, 0x00, 0x63, 0x00, 0x63, 0x00, 0x08, 0x00, 0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 
43268
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x18, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 
43269
  0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 
43270
  0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 
43271
  0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 
43272
  0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
43273
  0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 
43274
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 
43275
  0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 
43276
  0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 
43277
  0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 
43278
  0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 0x06, 0x00, 0xDA, 
43279
  0x43, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x10, 0x35, 0x01, 0x02, 0x00, 0x2F, 0x01, 0x00, 
43280
  0x0C, 0x2B, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x94, 0x24, 0x00, 0x24, 
43281
  0x00, 0x24, 0x00, 0x24, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x04, 0x00, 0x00, 
43282
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x14, 0x00, 0xDA, 0x04, 0xD0, 0x0A, 0x65, 0x78, 0x65, 0x63, 
43283
  0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0xCE, 0x05, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0x26, 
43284
  0xCE, 0x07, 0x75, 0x73, 0x61, 0x67, 0x65, 0x3A, 0x20, 0xCE, 0x19, 0x20, 0x5B, 0x6F, 0x70, 0x74, 
43285
  0x69, 0x6F, 0x6E, 0x73, 0x5D, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61, 0x72, 0x67, 
43286
  0x73, 0x2E, 0x2E, 0x2E, 0xDA, 0x81, 0x90, 0xCE, 0x86, 0xEB, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
43287
  0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0x20, 
43288
  0x28, 0x2D, 0x68, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43289
  0x20, 0x3A, 0x20, 0x53, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x68, 0x65, 0x6C, 
43290
  0x70, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x2D, 
43291
  0x76, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x50, 0x72, 
43292
  0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 
43293
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x73, 0x74, 0x64, 0x69, 0x6E, 
43294
  0x20, 0x28, 0x2D, 0x73, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43295
  0x20, 0x3A, 0x20, 0x55, 0x73, 0x65, 0x20, 0x72, 0x61, 0x77, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6E, 
43296
  0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x67, 0x65, 0x74, 0x6C, 
43297
  0x69, 0x6E, 0x65, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
43298
  0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x65, 0x76, 0x61, 0x6C, 0x20, 
43299
  0x28, 0x2D, 0x65, 0x29, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43300
  0x20, 0x3A, 0x20, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 
43301
  0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x0A, 0x20, 0x20, 0x2D, 
43302
  0x2D, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x2D, 0x45, 0x29, 
43303
  0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 
43304
  0x2E, 0x2E, 0x20, 0x3A, 0x20, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 
43305
  0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x73, 0x20, 0x61, 
43306
  0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
43307
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x64, 0x65, 0x62, 
43308
  0x75, 0x67, 0x20, 0x28, 0x2D, 0x64, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43309
  0x20, 0x20, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x62, 
43310
  0x75, 0x67, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 
43311
  0x45, 0x50, 0x4C, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x28, 0x2D, 0x72, 
43312
  0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 
43313
  0x45, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 0x50, 0x4C, 0x20, 0x61, 
43314
  0x66, 0x74, 0x65, 0x72, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 
43315
  0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x6E, 0x6F, 0x70, 
43316
  0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x2D, 0x52, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 
43317
  0x20, 0x20, 0x20, 0x3A, 0x20, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x6C, 0x6F, 
43318
  0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x6A, 0x61, 
43319
  0x6E, 0x65, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x4A, 0x41, 0x4E, 0x45, 0x54, 0x5F, 0x50, 
43320
  0x52, 0x4F, 0x46, 0x49, 0x4C, 0x45, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 
43321
  0x74, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x74, 
43322
  0x20, 0x28, 0x2D, 0x70, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x4B, 0x65, 
43323
  0x65, 0x70, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6E, 0x67, 0x20, 
43324
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x6F, 
43325
  0x70, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 0x70, 
43326
  0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x74, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x71, 
43327
  0x75, 0x69, 0x65, 0x74, 0x20, 0x28, 0x2D, 0x71, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43328
  0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x48, 0x69, 0x64, 0x65, 0x20, 0x6C, 0x6F, 0x67, 0x6F, 
43329
  0x20, 0x28, 0x71, 0x75, 0x69, 0x65, 0x74, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x66, 0x6C, 0x79, 
43330
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x28, 0x2D, 0x6B, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43331
  0x20, 0x20, 0x20, 0x3A, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x63, 0x72, 
43332
  0x69, 0x70, 0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
43333
  0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x28, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 
43334
  0x6B, 0x29, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x20, 0x28, 
43335
  0x2D, 0x6D, 0x29, 0x20, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x20, 0x20, 0x3A, 0x20, 0x53, 
43336
  0x65, 0x74, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 
43337
  0x6F, 0x72, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 
43338
  0x6C, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x63, 0x6F, 
43339
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x2D, 0x63, 0x29, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 
43340
  0x65, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x3A, 0x20, 0x43, 0x6F, 0x6D, 0x70, 0x69, 
43341
  0x6C, 0x65, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
43342
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 
43343
  0x67, 0x65, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x28, 0x2D, 0x69, 
43344
  0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x4C, 
43345
  0x6F, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x61, 
43346
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 
43347
  0x61, 0x67, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
43348
  0x20, 0x6F, 0x66, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x0A, 
43349
  0x20, 0x20, 0x2D, 0x2D, 0x6E, 0x6F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x28, 0x2D, 0x6E, 0x29, 
43350
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x44, 0x69, 0x73, 0x61, 
43351
  0x62, 0x6C, 0x65, 0x20, 0x41, 0x4E, 0x53, 0x49, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x6F, 
43352
  0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 0x50, 
43353
  0x4C, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 0x28, 0x2D, 0x4E, 0x29, 
43354
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x45, 0x6E, 
43355
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x41, 0x4E, 0x53, 0x49, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x20, 
43356
  0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x45, 
43357
  0x50, 0x4C, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x28, 
43358
  0x2D, 0x6C, 0x29, 0x20, 0x6C, 0x69, 0x62, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x55, 
43359
  0x73, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 
43360
  0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x6F, 
43361
  0x72, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x0A, 0x20, 0x20, 0x2D, 
43362
  0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x20, 0x28, 0x2D, 0x77, 0x29, 0x20, 
43363
  0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
43364
  0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x65, 
43365
  0x76, 0x65, 0x6C, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 
43366
  0x20, 0x22, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x22, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x6C, 0x69, 
43367
  0x6E, 0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 0x2D, 0x78, 0x29, 0x20, 0x6C, 0x65, 
43368
  0x76, 0x65, 0x6C, 0x20, 0x3A, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 
43369
  0x6E, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x2D, 
43370
  0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x22, 0x6E, 0x6F, 0x6E, 
43371
  0x65, 0x22, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x28, 
43372
  0x2D, 0x62, 0x29, 0x20, 0x64, 0x69, 0x72, 0x70, 0x61, 0x74, 0x68, 0x20, 0x20, 0x3A, 0x20, 0x49, 
43373
  0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 
43374
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
43375
  0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x72, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x28, 
43376
  0x2D, 0x42, 0x29, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x52, 0x65, 0x69, 
43377
  0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 
43378
  0x62, 0x79, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x0A, 0x20, 
43379
  0x20, 0x2D, 0x2D, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x2D, 0x75, 
43380
  0x29, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x55, 0x6E, 0x69, 0x6E, 0x73, 
43381
  0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x62, 0x79, 
43382
  0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x0A, 0x20, 0x20, 0x2D, 
43383
  0x2D, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x2D, 0x55, 0x29, 
43384
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 
43385
  0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 
43386
  0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x70, 0x72, 0x75, 
43387
  0x6E, 0x65, 0x20, 0x28, 0x2D, 0x50, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43388
  0x20, 0x20, 0x20, 0x3A, 0x20, 0x55, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 
43389
  0x6C, 0x6C, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
43390
  0x61, 0x72, 0x65, 0x20, 0x6F, 0x72, 0x70, 0x68, 0x61, 0x6E, 0x65, 0x64, 0x0A, 0x20, 0x20, 0x2D, 
43391
  0x2D, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x28, 0x2D, 0x4C, 0x29, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43392
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 0x4C, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6C, 
43393
  0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x62, 0x75, 0x6E, 0x64, 
43394
  0x6C, 0x65, 0x73, 0x0A, 0x20, 0x20, 0x2D, 0x2D, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 
43395
  0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x20, 
43396
  0x53, 0x74, 0x6F, 0x70, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x70, 
43397
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 0x86, 0x59, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x01, 0x00, 
43398
  0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x03, 0x00, 
43399
  0x2C, 0x02, 0x04, 0x00, 0x33, 0x01, 0x00, 0x02, 0x2C, 0x02, 0x05, 0x00, 0x35, 0x01, 0x02, 0x00, 
43400
  0x2C, 0x00, 0x06, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x05, 0x00, 0x35, 0x00, 0x02, 0x00, 
43401
  0x2B, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x07, 0x00, 0x35, 0x02, 0x03, 0x00, 
43402
  0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x92, 0x32, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 
43403
  0x1D, 0x00, 0x1D, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 0x00, 
43404
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x1E, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xE0, 0x0A, 
43405
  0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
43406
  0x06, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 
43407
  0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 
43408
  0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 
43409
  0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 
43410
  0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 
43411
  0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 
43412
  0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 
43413
  0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 
43414
  0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 
43415
  0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 
43416
  0x00, 0x10, 0xDA, 0x89, 0x32, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x0B, 0x2A, 0x00, 0x00, 
43417
  0x00, 0x2F, 0x00, 0x00, 0x08, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 
43418
  0x59, 0x12, 0x00, 0x12, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 
43419
  0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x0C, 0x01, 0x18, 0xDA, 0x04, 0xDA, 
43420
  0x87, 0xFE, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 
43421
  0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 
43422
  0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 
43423
  0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 
43424
  0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 
43425
  0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 
43426
  0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
43427
  0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 
43428
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 
43429
  0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43430
  0x89, 0x32, 0x00, 0x0C, 0x00, 0xDA, 0x43, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2A, 
43431
  0x02, 0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 
43432
  0x02, 0x03, 0x04, 0x1E, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 
43433
  0x02, 0x01, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x8D, 0x12, 0x00, 0x12, 0x00, 0x26, 
43434
  0x00, 0x26, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3A, 0x00, 0x52, 0x00, 0x52, 0x00, 0x08, 
43435
  0x00, 0x08, 0xCD, 0x00, 0xD0, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 
43436
  0x0C, 0x00, 0xDA, 0x04, 0xDA, 0x89, 0x15, 0xDA, 0x84, 0x17, 0xDA, 0x89, 0x16, 0xDA, 0x81, 0x90, 
43437
  0xDA, 0x86, 0x59, 0x2C, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x33, 
43438
  0x00, 0x01, 0x02, 0x2C, 0x01, 0x03, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2B, 0x01, 0x00, 0x00, 0x31, 
43439
  0x01, 0x00, 0x00, 0x2C, 0x02, 0x04, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2B, 0x02, 0x01, 0x00, 0x03, 
43440
  0x02, 0x00, 0x00, 0x92, 0x53, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
43441
  0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 
43442
  0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x0A, 0x01, 0x19, 0xCE, 0x08, 0x65, 
43443
  0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 0x83, 0x7C, 0xBF, 0xFF, 0x00, 0x00, 
43444
  0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 
43445
  0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 
43446
  0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 
43447
  0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
43448
  0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 
43449
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 
43450
  0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 
43451
  0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 
43452
  0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 
43453
  0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 0x0A, 0x00, 0xDA, 
43454
  0x43, 0x00, 0x0A, 0x01, 0xCF, 0x08, 0x65, 0x2D, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x2A, 0x02, 
43455
  0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x05, 0x02, 0x00, 0x01, 0x2D, 0x04, 0x00, 0x00, 0x3A, 0x03, 
43456
  0x04, 0x02, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x2B, 0x03, 
43457
  0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x6F, 0x0C, 0x00, 0x0C, 0x01, 0x22, 0x00, 
43458
  0x19, 0x00, 0x19, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 
43459
  0xD4, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x0C, 0x01, 0x18, 0xDA, 
43460
  0x04, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0B, 0x5A, 0x01, 0x26, 
43461
  0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x72, 0x75, 0x6E, 0x65, 0xDA, 0x04, 
43462
  0xDA, 0x83, 0xDE, 0xD0, 0x0B, 0x61, 0x75, 0x74, 0x6F, 0x2D, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 
43463
  0xDA, 0x82, 0x51, 0xDA, 0x88, 0x7A, 0xDA, 0x82, 0x7C, 0xDA, 0x30, 0xCE, 0x08, 0x70, 0x72, 0x75, 
43464
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0xCE, 0x08, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0xDA, 
43465
  0x81, 0x90, 0xCE, 0x0A, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0xCE, 0x0D, 
43466
  0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0xBF, 0xFF, 0x00, 
43467
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
43468
  0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 
43469
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 
43470
  0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 
43471
  0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 
43472
  0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 
43473
  0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 
43474
  0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
43475
  0x82, 0xEF, 0x00, 0x5A, 0x00, 0xDA, 0x82, 0xF0, 0x02, 0x5A, 0x02, 0xCF, 0x04, 0x74, 0x6F, 0x70, 
43476
  0x6F, 0x06, 0x5A, 0x04, 0xCF, 0x05, 0x72, 0x74, 0x6F, 0x70, 0x6F, 0x08, 0x5A, 0x06, 0xCF, 0x06, 
43477
  0x65, 0x78, 0x65, 0x6D, 0x70, 0x74, 0x0A, 0x5A, 0x08, 0xCF, 0x07, 0x74, 0x6F, 0x2D, 0x64, 0x72, 
43478
  0x6F, 0x70, 0x0A, 0x38, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x47, 0x0D, 0x38, 
43479
  0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x46, 0x10, 0x38, 0x0B, 0xDA, 0x81, 0x64, 
43480
  0x14, 0x38, 0x0C, 0xDA, 0x82, 0x3C, 0x16, 0x20, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
43481
  0x37, 0x48, 0x27, 0x32, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4A, 0x2A, 0x32, 
43482
  0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x49, 0x2D, 0x32, 0x10, 0xDA, 0x81, 0x15, 
43483
  0x3D, 0x4A, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4C, 0x40, 0x4A, 0x0B, 0xCF, 
43484
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4B, 0x43, 0x4A, 0x0C, 0xDA, 0x81, 0x64, 0x49, 0x5A, 
43485
  0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4E, 0x4C, 0x5A, 0x0B, 0xCF, 0x07, 0x5F, 
43486
  0x30, 0x30, 0x30, 0x30, 0x37, 0x4D, 0x4F, 0x59, 0x0C, 0xDA, 0x81, 0x64, 0x2D, 0x02, 0x00, 0x13, 
43487
  0x35, 0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
43488
  0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x44, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 
43489
  0x40, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x49, 0x09, 0x04, 0x0A, 
43490
  0x1B, 0x0A, 0x09, 0x00, 0x1F, 0x0A, 0x2A, 0x00, 0x3A, 0x09, 0x04, 0x0A, 0x1B, 0x0B, 0x09, 0x00, 
43491
  0x31, 0x0B, 0x00, 0x00, 0x2D, 0x0C, 0x00, 0x0D, 0x35, 0x09, 0x0C, 0x00, 0x1B, 0x0C, 0x09, 0x00, 
43492
  0x3B, 0x09, 0x06, 0x0B, 0x1B, 0x0D, 0x09, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x09, 0x0D, 0x00, 
43493
  0x1C, 0x07, 0x00, 0x00, 0x2C, 0x0F, 0x01, 0x00, 0x3B, 0x0E, 0x0C, 0x0F, 0x31, 0x0E, 0x00, 0x00, 
43494
  0x2C, 0x10, 0x02, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x09, 0x0F, 0x00, 0x1E, 0x09, 0x13, 0x00, 
43495
  0x29, 0x0D, 0x00, 0x00, 0x3C, 0x06, 0x0B, 0x0D, 0x2C, 0x0E, 0x03, 0x00, 0x3B, 0x0D, 0x0C, 0x0E, 
43496
  0x20, 0x0D, 0x02, 0x00, 0x2C, 0x0D, 0x04, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x28, 0x0F, 0x00, 0x00, 
43497
  0x49, 0x0D, 0x0E, 0x0F, 0x1B, 0x0F, 0x0D, 0x00, 0x1F, 0x0F, 0x07, 0x00, 0x3A, 0x0D, 0x0E, 0x0F, 
43498
  0x1B, 0x10, 0x0D, 0x00, 0x29, 0x0D, 0x00, 0x00, 0x3C, 0x06, 0x10, 0x0D, 0x49, 0x0F, 0x0E, 0x0F, 
43499
  0x1C, 0xFA, 0xFF, 0xFF, 0x1C, 0x04, 0x00, 0x00, 0x32, 0x08, 0x0B, 0x00, 0x2C, 0x0E, 0x05, 0x00, 
43500
  0x35, 0x0D, 0x0E, 0x00, 0x49, 0x0A, 0x04, 0x0A, 0x1C, 0xD7, 0xFF, 0xFF, 0x3F, 0x09, 0x08, 0x00, 
43501
  0x2C, 0x0A, 0x06, 0x00, 0x2C, 0x0B, 0x07, 0x00, 0x33, 0x0A, 0x09, 0x0B, 0x2C, 0x0B, 0x08, 0x00, 
43502
  0x35, 0x0A, 0x0B, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x09, 0x08, 0x0B, 0x1B, 0x0B, 0x09, 0x00, 
43503
  0x1F, 0x0B, 0x09, 0x00, 0x3A, 0x09, 0x08, 0x0B, 0x1B, 0x0C, 0x09, 0x00, 0x2C, 0x09, 0x09, 0x00, 
43504
  0x32, 0x09, 0x0C, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x09, 0x0D, 0x00, 0x49, 0x0B, 0x08, 0x0B, 
43505
  0x1C, 0xF8, 0xFF, 0xFF, 0x28, 0x0B, 0x00, 0x00, 0x49, 0x09, 0x08, 0x0B, 0x1B, 0x0B, 0x09, 0x00, 
43506
  0x1F, 0x0B, 0x0C, 0x00, 0x3A, 0x09, 0x08, 0x0B, 0x1B, 0x0C, 0x09, 0x00, 0x2C, 0x09, 0x0A, 0x00, 
43507
  0x32, 0x09, 0x0C, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x09, 0x0D, 0x00, 0x31, 0x0C, 0x00, 0x00, 
43508
  0x2D, 0x0D, 0x00, 0x11, 0x35, 0x09, 0x0D, 0x00, 0x49, 0x0B, 0x08, 0x0B, 0x1C, 0xF5, 0xFF, 0xFF, 
43509
  0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0xCC, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x10, 0x00, 
43510
  0x10, 0x00, 0x10, 0x00, 0x05, 0x04, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
43511
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
43512
  0x07, 0x01, 0x0F, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x23, 0x00, 0x23, 0x00, 
43513
  0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0B, 0x00, 0x07, 0x02, 0x0B, 0x00, 0x0B, 0x01, 0x13, 0x00, 
43514
  0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
43515
  0x0B, 0x00, 0x0B, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFD, 0x07, 0x04, 0x09, 
43516
  0x00, 0x09, 0x00, 0x09, 0xBF, 0xFA, 0x05, 0x00, 0x05, 0x07, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 
43517
  0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
43518
  0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x05, 
43519
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
43520
  0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 
43521
  0x01, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 
43522
  0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 
43523
  0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
43524
  0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 
43525
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 
43526
  0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 
43527
  0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 
43528
  0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 
43529
  0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 
43530
  0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43531
  0x32, 0x00, 0x0C, 0x00, 0xDA, 0x43, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 0x00, 0x2A, 0x02, 
43532
  0x00, 0x00, 0x2F, 0x02, 0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 0x02, 
43533
  0x03, 0x04, 0x1E, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 0x02, 
43534
  0x01, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x89, 0x12, 0x00, 0x12, 0x00, 0x21, 0x00, 
43535
  0x21, 0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x35, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x08, 0x00, 
43536
  0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 
43537
  0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
43538
  0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 
43539
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 
43540
  0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 
43541
  0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 
43542
  0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 
43543
  0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 
43544
  0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 
43545
  0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 
43546
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 
43547
  0x10, 0xDA, 0x89, 0x32, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x0E, 0x2B, 0x00, 0x01, 0x00, 
43548
  0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x58, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 
43549
  0x00, 0xD4, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x18, 0x01, 0x1B, 
43550
  0xDA, 0x04, 0xDA, 0x80, 0xED, 0xDA, 0x81, 0x90, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 
43551
  0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 
43552
  0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
43553
  0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 
43554
  0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 
43555
  0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 
43556
  0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43557
  0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 
43558
  0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 
43559
  0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 
43560
  0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 0x18, 0x00, 0xDA, 0x43, 0x02, 0x0E, 0x02, 
43561
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x71, 0x05, 0x0E, 0x03, 0xCF, 0x07, 0x5F, 0x30, 
43562
  0x30, 0x30, 0x30, 0x38, 0x70, 0x08, 0x0E, 0x04, 0xDA, 0x80, 0xCE, 0x2C, 0x02, 0x00, 0x00, 0x35, 
43563
  0x01, 0x02, 0x00, 0x1B, 0x02, 0x01, 0x00, 0x28, 0x03, 0x00, 0x00, 0x49, 0x01, 0x02, 0x03, 0x1B, 
43564
  0x03, 0x01, 0x00, 0x1F, 0x03, 0x08, 0x00, 0x3A, 0x01, 0x02, 0x03, 0x1B, 0x04, 0x01, 0x00, 0x31, 
43565
  0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x01, 0x05, 0x00, 0x49, 0x03, 0x02, 0x03, 0x1C, 
43566
  0xF9, 0xFF, 0xFF, 0x2A, 0x01, 0x00, 0x00, 0x2F, 0x01, 0x00, 0x04, 0x28, 0x02, 0x00, 0x00, 0x2D, 
43567
  0x03, 0x00, 0x03, 0x25, 0x01, 0x02, 0x03, 0x1E, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x2F, 
43568
  0x02, 0x00, 0x03, 0x2B, 0x01, 0x01, 0x00, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x91, 0x1A, 
43569
  0x00, 0x1A, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
43570
  0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x12, 0x00, 0x12, 0x00, 0x33, 0x00, 0x33, 0x00, 0x4B, 
43571
  0x00, 0x4B, 0x00, 0x4B, 0x00, 0x47, 0x00, 0x5F, 0x00, 0x5F, 0x00, 0x08, 0x00, 0x08, 0xCD, 0x00, 
43572
  0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 
43573
  0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 
43574
  0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 
43575
  0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 
43576
  0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 
43577
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 
43578
  0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 
43579
  0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 
43580
  0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 
43581
  0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 
43582
  0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43583
  0x32, 0x2A, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x09, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 
43584
  0x00, 0xBF, 0xFF, 0x92, 0x5A, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 
43585
  0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 
43586
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 
43587
  0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
43588
  0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 
43589
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 
43590
  0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 
43591
  0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 
43592
  0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 
43593
  0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 
43594
  0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43595
  0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x29, 
43596
  0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x03, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 
43597
  0xFF, 0x92, 0x55, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x05, 
43598
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x10, 0x01, 0x18, 0xDA, 0x04, 0xD7, 0x01, 0xCD, 
43599
  0x03, 0xFF, 0x00, 0x00, 0x24, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x28, 0x80, 0xE3, 0x01, 
43600
  0x01, 0x2E, 0xCE, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 
43601
  0x6C, 0x6C, 0xDA, 0x04, 0xDA, 0x81, 0x27, 0xCE, 0x08, 0x69, 0x6E, 0x66, 0x6F, 0x2E, 0x6A, 0x64, 
43602
  0x6E, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x7E, 0xDA, 0x81, 0x82, 0xDA, 0x09, 0xDA, 0x81, 0x6D, 0xCE, 
43603
  0x36, 0x75, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x66, 0x65, 0x72, 
43604
  0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x6F, 0x72, 
43605
  0x20, 0x25, 0x76, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 
43606
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0xDA, 0x81, 0x49, 0xCE, 0x02, 0x5C, 0x2F, 0xD8, 0x10, 
43607
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x65, 0x74, 
43608
  0xDA, 0x82, 0x51, 0xCE, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
43609
  0x20, 0x25, 0x76, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 
43610
  0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 
43611
  0x72, 0x73, 0xCE, 0x1C, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x65, 
43612
  0x6D, 0x70, 0x74, 0x79, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 
43613
  0xCE, 0x1E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x25, 0x76, 0x20, 0x69, 0x73, 0x20, 0x61, 
43614
  0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 
43615
  0xDA, 0x81, 0x33, 0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 
43616
  0x74, 0xCE, 0x0A, 0x69, 0x6E, 0x69, 0x74, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x80, 0xEF, 
43617
  0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x3E, 0xDA, 0x81, 0x8B, 0xDA, 0x81, 0x38, 0xDA, 0x85, 0x0A, 0xDA, 
43618
  0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0xCE, 0x20, 0x69, 0x6E, 0x73, 
43619
  0x74, 0x61, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2C, 
43620
  0x20, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0xDA, 0x81, 0x90, 
43621
  0xCE, 0x0A, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0xDA, 0x82, 0xEC, 0xDA, 
43622
  0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0xEB, 0xCE, 0x2A, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 
43623
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 
43624
  0x62, 0x65, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x74, 
43625
  0x6F, 0x20, 0x25, 0x73, 0xDA, 0x84, 0x60, 0xD0, 0x07, 0x68, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x6E, 
43626
  0xCE, 0x03, 0x6D, 0x61, 0x6E, 0xCE, 0x23, 0x6D, 0x61, 0x6E, 0x20, 0x70, 0x61, 0x67, 0x65, 0x73, 
43627
  0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 
43628
  0x6C, 0x6C, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x25, 0x73, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 
43629
  0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 
43630
  0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 
43631
  0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 
43632
  0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 
43633
  0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 
43634
  0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 
43635
  0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 
43636
  0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 
43637
  0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0x00, 0x80, 0xE3, 
43638
  0x00, 0xDA, 0x81, 0x22, 0x00, 0x80, 0xE3, 0x01, 0xCF, 0x06, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 
43639
  0x00, 0x80, 0xE3, 0x02, 0xDA, 0x82, 0xF2, 0x03, 0x80, 0xE3, 0x04, 0xDA, 0x81, 0x22, 0x06, 0x80, 
43640
  0xE3, 0x06, 0xDA, 0x81, 0x2A, 0x0D, 0x80, 0xE3, 0x08, 0xCF, 0x0D, 0x69, 0x6E, 0x66, 0x6F, 0x66, 
43641
  0x69, 0x6C, 0x65, 0x2D, 0x73, 0x72, 0x63, 0x31, 0x12, 0x80, 0xE3, 0x0A, 0xCF, 0x0D, 0x69, 0x6E, 
43642
  0x66, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x72, 0x63, 0x32, 0x21, 0x80, 0xE3, 0x0C, 0xCF, 
43643
  0x0C, 0x69, 0x6E, 0x66, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x72, 0x63, 0x21, 0x29, 0x0C, 
43644
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x4F, 0x29, 0x31, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 
43645
  0x30, 0x30, 0x30, 0x37, 0x50, 0x31, 0x80, 0xE3, 0x0E, 0xCF, 0x04, 0x69, 0x6E, 0x66, 0x6F, 0x38, 
43646
  0x80, 0xE3, 0x0F, 0xDA, 0x81, 0x29, 0x38, 0x3F, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
43647
  0x37, 0x51, 0x46, 0x4D, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x52, 0x4F, 0x54, 
43648
  0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x53, 0x5D, 0x64, 0x12, 0xCF, 0x07, 0x5F, 
43649
  0x30, 0x30, 0x30, 0x30, 0x37, 0x54, 0x70, 0x80, 0xE3, 0x14, 0xCF, 0x0D, 0x69, 0x6E, 0x66, 0x6F, 
43650
  0x66, 0x69, 0x6C, 0x65, 0x2D, 0x64, 0x65, 0x73, 0x74, 0x79, 0x80, 0xE3, 0x16, 0xCF, 0x0E, 0x69, 
43651
  0x6E, 0x69, 0x74, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x7E, 0x80, 0xE3, 
43652
  0x18, 0xCF, 0x0D, 0x69, 0x6E, 0x69, 0x74, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x64, 0x65, 0x73, 0x74, 
43653
  0x80, 0x8A, 0x80, 0xE3, 0x1A, 0xCF, 0x10, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x2D, 
43654
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x80, 0x9F, 0x80, 0xE3, 0x1C, 0xCF, 0x03, 0x6D, 0x61, 
43655
  0x6E, 0x80, 0xAB, 0x80, 0xBE, 0x1F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x55, 0x80, 
43656
  0xAE, 0x80, 0xBE, 0x21, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x56, 0x80, 0xCD, 0x80, 
43657
  0xD2, 0x21, 0xCF, 0x07, 0x62, 0x69, 0x6E, 0x70, 0x61, 0x74, 0x68, 0x80, 0xDD, 0x80, 0xE2, 0x21, 
43658
  0xCF, 0x07, 0x6D, 0x61, 0x6E, 0x70, 0x61, 0x74, 0x68, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 
43659
  0x03, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2D, 0x06, 0x00, 0x02, 0x35, 0x05, 0x06, 
43660
  0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x33, 0x04, 0x06, 0x07, 0x2C, 0x07, 0x01, 
43661
  0x00, 0x32, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 
43662
  0x00, 0x2C, 0x09, 0x01, 0x00, 0x33, 0x04, 0x06, 0x09, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 
43663
  0x00, 0x1B, 0x0A, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x35, 0x0C, 0x0D, 
43664
  0x00, 0x1E, 0x0C, 0x03, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x31, 0x0A, 0x00, 
43665
  0x00, 0x2C, 0x0F, 0x03, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0A, 
43666
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1B, 0x0C, 0x0B, 
43667
  0x00, 0x1E, 0x0C, 0x06, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x35, 0x0E, 0x0F, 
43668
  0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 
43669
  0x00, 0x1E, 0x0E, 0x06, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x2C, 0x10, 0x05, 0x00, 0x35, 0x0F, 0x10, 
43670
  0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 
43671
  0x00, 0x2C, 0x10, 0x06, 0x00, 0x3B, 0x0F, 0x0E, 0x10, 0x2C, 0x11, 0x06, 0x00, 0x3B, 0x10, 0x01, 
43672
  0x11, 0x20, 0x10, 0x02, 0x00, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x1E, 0x0F, 0x02, 
43673
  0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x11, 0x07, 0x00, 0x32, 0x11, 0x04, 0x00, 0x2C, 0x12, 0x08, 
43674
  0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x11, 0x09, 0x00, 0x32, 0x11, 0x0F, 0x00, 0x2C, 0x12, 0x0A, 
43675
  0x00, 0x35, 0x11, 0x12, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x0B, 0x00, 0x35, 0x12, 0x13, 
43676
  0x00, 0x1B, 0x11, 0x12, 0x00, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x12, 0x0C, 
43677
  0x00, 0x32, 0x12, 0x0F, 0x00, 0x2C, 0x13, 0x08, 0x00, 0x35, 0x12, 0x13, 0x00, 0x28, 0x12, 0x00, 
43678
  0x00, 0x49, 0x11, 0x0F, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1E, 0x12, 0x02, 0x00, 0x1C, 0x03, 0x00, 
43679
  0x00, 0x2C, 0x11, 0x0D, 0x00, 0x01, 0x11, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 0x12, 0x00, 
43680
  0x06, 0x35, 0x11, 0x12, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x03, 0x00, 0x35, 0x12, 0x13, 
43681
  0x00, 0x31, 0x12, 0x00, 0x00, 0x2C, 0x13, 0x0B, 0x00, 0x35, 0x11, 0x13, 0x00, 0x1B, 0x12, 0x11, 
43682
  0x00, 0x1E, 0x12, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x11, 0x0E, 0x00, 0x32, 0x11, 0x0F, 
43683
  0x00, 0x2C, 0x13, 0x08, 0x00, 0x35, 0x11, 0x13, 0x00, 0x2D, 0x12, 0x00, 0x07, 0x35, 0x11, 0x12, 
43684
  0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 0x13, 0x00, 0x04, 0x35, 0x12, 0x13, 0x00, 0x31, 0x12, 0x00, 
43685
  0x00, 0x2C, 0x14, 0x0F, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2C, 0x12, 0x01, 0x00, 0x32, 0x0F, 0x12, 
43686
  0x00, 0x2D, 0x14, 0x00, 0x05, 0x35, 0x12, 0x14, 0x00, 0x1B, 0x14, 0x12, 0x00, 0x1E, 0x0C, 0x04, 
43687
  0x00, 0x32, 0x0C, 0x14, 0x00, 0x2D, 0x16, 0x00, 0x0A, 0x35, 0x15, 0x16, 0x00, 0x2C, 0x15, 0x10, 
43688
  0x00, 0x33, 0x04, 0x06, 0x15, 0x2C, 0x16, 0x02, 0x00, 0x35, 0x15, 0x16, 0x00, 0x1B, 0x16, 0x15, 
43689
  0x00, 0x2C, 0x17, 0x11, 0x00, 0x32, 0x0F, 0x17, 0x00, 0x2D, 0x18, 0x00, 0x05, 0x35, 0x17, 0x18, 
43690
  0x00, 0x1B, 0x18, 0x17, 0x00, 0x31, 0x16, 0x00, 0x00, 0x2C, 0x1A, 0x03, 0x00, 0x35, 0x19, 0x1A, 
43691
  0x00, 0x1E, 0x19, 0x04, 0x00, 0x32, 0x16, 0x18, 0x00, 0x2D, 0x1B, 0x00, 0x0A, 0x35, 0x1A, 0x1B, 
43692
  0x00, 0x2C, 0x19, 0x00, 0x00, 0x33, 0x04, 0x06, 0x19, 0x2C, 0x1A, 0x02, 0x00, 0x35, 0x19, 0x1A, 
43693
  0x00, 0x1B, 0x1A, 0x19, 0x00, 0x2C, 0x1B, 0x12, 0x00, 0x32, 0x1A, 0x1B, 0x00, 0x2C, 0x1C, 0x13, 
43694
  0x00, 0x35, 0x1B, 0x1C, 0x00, 0x2C, 0x1D, 0x14, 0x00, 0x25, 0x1C, 0x1D, 0x1B, 0x1E, 0x1C, 0x07, 
43695
  0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 0x1D, 0x00, 0x04, 0x35, 0x1B, 0x1D, 0x00, 0x32, 0x1A, 0x1B, 
43696
  0x00, 0x2D, 0x1E, 0x00, 0x0B, 0x35, 0x1D, 0x1E, 0x00, 0x40, 0x1B, 0x00, 0x00, 0x2C, 0x1C, 0x15, 
43697
  0x00, 0x2C, 0x1D, 0x06, 0x00, 0x33, 0x1C, 0x04, 0x1D, 0x2C, 0x1C, 0x16, 0x00, 0x33, 0x0F, 0x1C, 
43698
  0x1B, 0x44, 0x1B, 0x00, 0x00, 0x1B, 0x1C, 0x1B, 0x00, 0x32, 0x1C, 0x01, 0x00, 0x2C, 0x1E, 0x17, 
43699
  0x00, 0x35, 0x1D, 0x1E, 0x00, 0x31, 0x1C, 0x00, 0x00, 0x2D, 0x1F, 0x00, 0x0C, 0x35, 0x1E, 0x1F, 
43700
  0x00, 0x30, 0x1F, 0x00, 0x00, 0x2C, 0x20, 0x18, 0x00, 0x32, 0x1F, 0x20, 0x00, 0x2C, 0x21, 0x19, 
43701
  0x00, 0x35, 0x20, 0x21, 0x00, 0x1B, 0x1F, 0x20, 0x00, 0x28, 0x21, 0x00, 0x00, 0x37, 0x20, 0x1F, 
43702
  0x21, 0x1B, 0x21, 0x20, 0x00, 0x31, 0x1F, 0x00, 0x00, 0x2C, 0x22, 0x1A, 0x00, 0x35, 0x20, 0x22, 
43703
  0x00, 0x2C, 0x23, 0x1B, 0x00, 0x25, 0x22, 0x20, 0x23, 0x1E, 0x22, 0x02, 0x00, 0x1C, 0x09, 0x00, 
43704
  0x00, 0x2C, 0x20, 0x1C, 0x00, 0x31, 0x20, 0x00, 0x00, 0x2C, 0x23, 0x1D, 0x00, 0x35, 0x20, 0x23, 
43705
  0x00, 0x31, 0x0F, 0x00, 0x00, 0x2D, 0x23, 0x00, 0x12, 0x35, 0x20, 0x23, 0x00, 0x39, 0x20, 0x21, 
43706
  0x1F, 0x2C, 0x1F, 0x1E, 0x00, 0x32, 0x1F, 0x0F, 0x00, 0x2C, 0x20, 0x1D, 0x00, 0x35, 0x1F, 0x20, 
43707
  0x00, 0x2C, 0x21, 0x1F, 0x00, 0x3B, 0x20, 0x1C, 0x21, 0x1E, 0x20, 0x0E, 0x00, 0x2C, 0x21, 0x20, 
43708
  0x00, 0x31, 0x21, 0x00, 0x00, 0x2C, 0x22, 0x21, 0x00, 0x35, 0x21, 0x22, 0x00, 0x2C, 0x22, 0x22, 
43709
  0x00, 0x33, 0x21, 0x06, 0x22, 0x2C, 0x23, 0x02, 0x00, 0x35, 0x22, 0x23, 0x00, 0x1B, 0x21, 0x22, 
43710
  0x00, 0x2C, 0x22, 0x23, 0x00, 0x32, 0x22, 0x21, 0x00, 0x2C, 0x23, 0x24, 0x00, 0x35, 0x22, 0x23, 
43711
  0x00, 0x2C, 0x21, 0x25, 0x00, 0x3B, 0x20, 0x1C, 0x21, 0x1E, 0x20, 0x0E, 0x00, 0x2C, 0x21, 0x20, 
43712
  0x00, 0x31, 0x21, 0x00, 0x00, 0x2C, 0x22, 0x21, 0x00, 0x35, 0x21, 0x22, 0x00, 0x2C, 0x22, 0x26, 
43713
  0x00, 0x33, 0x21, 0x06, 0x22, 0x2C, 0x23, 0x02, 0x00, 0x35, 0x22, 0x23, 0x00, 0x1B, 0x21, 0x22, 
43714
  0x00, 0x2C, 0x22, 0x27, 0x00, 0x32, 0x22, 0x21, 0x00, 0x2C, 0x23, 0x24, 0x00, 0x35, 0x22, 0x23, 
43715
  0x00, 0x03, 0x0F, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 
43716
  0x1C, 0x80, 0xAC, 0x02, 0x3A, 0xCE, 0x06, 0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x04, 0xDA, 
43717
  0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x82, 0xDA, 0x09, 0xDA, 0x88, 0x7A, 0xDA, 0x83, 0x38, 
43718
  0xDA, 0x81, 0x6D, 0xDA, 0x81, 0x28, 0xDA, 0x30, 0xDA, 0x85, 0xB2, 0xDA, 0x82, 0x18, 0xCE, 0x02, 
43719
  0x2C, 0x20, 0xDA, 0x84, 0x68, 0xCE, 0x15, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x64, 
43720
  0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x20, 0xD0, 0x04, 0x69, 0x6E, 
43721
  0x66, 0x6F, 0xD0, 0x05, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0xD0, 0x05, 0x63, 0x68, 0x65, 0x63, 0x6B, 
43722
  0xDA, 0x82, 0x95, 0xDA, 0x85, 0xEC, 0xDA, 0x86, 0x67, 0xD0, 0x05, 0x68, 0x6F, 0x6F, 0x6B, 0x73, 
43723
  0xD0, 0x08, 0x70, 0x6F, 0x73, 0x74, 0x64, 0x65, 0x70, 0x73, 0xD0, 0x05, 0x62, 0x75, 0x69, 0x6C, 
43724
  0x64, 0xD0, 0x07, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 0x81, 0x38, 0xDA, 0x81, 0x5A, 
43725
  0xCE, 0x2B, 0x6E, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 
43726
  0x6C, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x61, 0x20, 
43727
  0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x3F, 0xDA, 0x81, 0x90, 
43728
  0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 
43729
  0x01, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x01, 0x05, 
43730
  0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x81, 
43731
  0x0C, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 
43732
  0xFF, 0x01, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x01, 
43733
  0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 
43734
  0x81, 0x13, 0xBF, 0xFF, 0x01, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x01, 0x10, 0xDA, 0x80, 0xE9, 
43735
  0xBF, 0xFF, 0x01, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x01, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 
43736
  0x01, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x01, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x01, 0x15, 
43737
  0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x89, 
43738
  0x7B, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x22, 0xBF, 
43739
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x2A, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x7C, 0xBF, 0xFF, 0x00, 
43740
  0x0A, 0xDA, 0x89, 0x7D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x7E, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 
43741
  0x89, 0x7F, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x80, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x81, 
43742
  0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x82, 0xBF, 0xFF, 
43743
  0x00, 0x11, 0xDA, 0x89, 0x83, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x84, 0xBF, 0xFF, 0x00, 0x12, 
43744
  0xDA, 0x89, 0x85, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x89, 0x86, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x89, 
43745
  0x87, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x89, 0x88, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x89, 0x89, 0xBF, 
43746
  0xFF, 0x00, 0x1C, 0xDA, 0x89, 0x8A, 0x0D, 0x47, 0x01, 0xDA, 0x89, 0x81, 0x0F, 0x2D, 0x03, 0xCF, 
43747
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x57, 0x15, 0x2D, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
43748
  0x30, 0x30, 0x37, 0x59, 0x18, 0x2D, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x58, 
43749
  0x1B, 0x2D, 0x06, 0xDA, 0x81, 0x15, 0x2C, 0x47, 0x03, 0xDA, 0x88, 0x91, 0x34, 0x47, 0x02, 0xCF, 
43750
  0x07, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x4B, 0x80, 0xAC, 0x01, 0xDA, 0x87, 0x9E, 0x4F, 
43751
  0x80, 0xAC, 0x03, 0xCF, 0x05, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0x53, 0x80, 0xAC, 0x05, 0xDA, 0x87, 
43752
  0xA2, 0x55, 0x6D, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x5A, 0x55, 0x6D, 0x01, 
43753
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x31, 0x58, 0x6D, 0x08, 0xCF, 0x07, 0x5F, 0x30, 
43754
  0x30, 0x30, 0x30, 0x38, 0x30, 0x5B, 0x6D, 0x09, 0xDA, 0x3A, 0x5C, 0x6D, 0x0A, 0xDA, 0x46, 0x6C, 
43755
  0x80, 0xAC, 0x07, 0xCF, 0x09, 0x61, 0x6C, 0x6C, 0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0x73, 0x2D, 0x00, 
43756
  0x00, 0x14, 0x2C, 0x01, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 
43757
  0x01, 0x00, 0x1E, 0x00, 0x42, 0x00, 0x2D, 0x01, 0x00, 0x14, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 
43758
  0x02, 0x00, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x35, 0x02, 
43759
  0x03, 0x00, 0x1B, 0x01, 0x02, 0x00, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x40, 0x02, 
43760
  0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x3B, 0x04, 0x01, 0x05, 0x20, 0x04, 0x02, 0x00, 0x1B, 0x04, 
43761
  0x02, 0x00, 0x1B, 0x02, 0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x02, 0x05, 0x1B, 0x05, 
43762
  0x04, 0x00, 0x1F, 0x05, 0x14, 0x00, 0x3A, 0x04, 0x02, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x31, 0x06, 
43763
  0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1E, 0x07, 0x05, 0x00, 0x2C, 0x09, 
43764
  0x06, 0x00, 0x3B, 0x08, 0x06, 0x09, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x04, 
43765
  0x06, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x32, 0x03, 
43766
  0x07, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x35, 0x04, 0x08, 0x00, 0x49, 0x05, 0x02, 0x05, 0x1C, 0xED, 
43767
  0xFF, 0xFF, 0x2D, 0x02, 0x01, 0x15, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x09, 0x00, 0x35, 0x02, 
43768
  0x04, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x05, 0x0A, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x02, 
43769
  0x04, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x02, 0x05, 0x1E, 0x04, 0x0A, 0x00, 0x2C, 0x05, 
43770
  0x0B, 0x00, 0x32, 0x02, 0x05, 0x00, 0x2C, 0x06, 0x0C, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 
43771
  0x0D, 0x00, 0x32, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x35, 0x06, 0x07, 0x00, 0x01, 0x06, 
43772
  0x00, 0x00, 0x2D, 0x04, 0x00, 0x1C, 0x2C, 0x05, 0x04, 0x00, 0x3C, 0x04, 0x05, 0x03, 0x2D, 0x04, 
43773
  0x00, 0x1C, 0x2C, 0x05, 0x0E, 0x00, 0x3C, 0x04, 0x05, 0x01, 0x2D, 0x00, 0x00, 0x0F, 0x31, 0x00, 
43774
  0x00, 0x00, 0x2D, 0x01, 0x01, 0x0E, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x2D, 0x03, 
43775
  0x00, 0x01, 0x2C, 0x04, 0x0F, 0x00, 0x3B, 0x02, 0x03, 0x04, 0x1B, 0x03, 0x02, 0x00, 0x2D, 0x05, 
43776
  0x00, 0x01, 0x2C, 0x06, 0x10, 0x00, 0x3B, 0x04, 0x05, 0x06, 0x1B, 0x05, 0x04, 0x00, 0x40, 0x06, 
43777
  0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x06, 0x01, 0x08, 0x1B, 0x08, 
43778
  0x06, 0x00, 0x1F, 0x08, 0x14, 0x00, 0x3A, 0x06, 0x01, 0x08, 0x1B, 0x09, 0x08, 0x00, 0x1B, 0x0A, 
43779
  0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x11, 0x00, 0x35, 0x06, 0x0B, 0x00, 0x1E, 0x06, 
43780
  0x0B, 0x00, 0x2C, 0x0C, 0x12, 0x00, 0x3B, 0x0B, 0x0A, 0x0C, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x07, 
43781
  0x00, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0D, 0x13, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x32, 0x07, 
43782
  0x0C, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x49, 0x08, 0x01, 0x08, 0x1C, 0xED, 
43783
  0xFF, 0xFF, 0x2D, 0x06, 0x00, 0x1C, 0x2C, 0x08, 0x14, 0x00, 0x3C, 0x06, 0x08, 0x07, 0x2D, 0x06, 
43784
  0x00, 0x0F, 0x2C, 0x08, 0x04, 0x00, 0x33, 0x01, 0x06, 0x08, 0x2D, 0x06, 0x00, 0x1C, 0x31, 0x06, 
43785
  0x00, 0x00, 0x2D, 0x08, 0x01, 0x0F, 0x35, 0x06, 0x08, 0x00, 0x2D, 0x08, 0x00, 0x0F, 0x2C, 0x09, 
43786
  0x15, 0x00, 0x33, 0x01, 0x08, 0x09, 0x2D, 0x08, 0x00, 0x1C, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x09, 
43787
  0x01, 0x0F, 0x35, 0x08, 0x09, 0x00, 0x1E, 0x03, 0x08, 0x00, 0x2D, 0x09, 0x00, 0x0F, 0x2C, 0x0A, 
43788
  0x0F, 0x00, 0x33, 0x01, 0x09, 0x0A, 0x2D, 0x09, 0x00, 0x1C, 0x31, 0x09, 0x00, 0x00, 0x2D, 0x0A, 
43789
  0x01, 0x0F, 0x35, 0x09, 0x0A, 0x00, 0x2D, 0x09, 0x00, 0x0F, 0x2C, 0x0A, 0x16, 0x00, 0x33, 0x01, 
43790
  0x09, 0x0A, 0x2D, 0x09, 0x00, 0x1C, 0x31, 0x09, 0x00, 0x00, 0x2D, 0x0A, 0x01, 0x0F, 0x35, 0x09, 
43791
  0x0A, 0x00, 0x2D, 0x0A, 0x00, 0x0F, 0x2C, 0x0B, 0x17, 0x00, 0x33, 0x01, 0x0A, 0x0B, 0x2D, 0x0A, 
43792
  0x00, 0x1C, 0x31, 0x0A, 0x00, 0x00, 0x2D, 0x0B, 0x01, 0x0F, 0x35, 0x0A, 0x0B, 0x00, 0x2D, 0x0C, 
43793
  0x00, 0x1C, 0x2C, 0x0D, 0x18, 0x00, 0x3B, 0x0B, 0x0C, 0x0D, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0D, 
43794
  0x19, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1E, 0x0C, 0x05, 0x00, 0x2C, 0x0B, 0x1A, 0x00, 0x31, 0x0B, 
43795
  0x00, 0x00, 0x2C, 0x0D, 0x1B, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2D, 0x0B, 0x00, 0x1C, 0x31, 0x0B, 
43796
  0x00, 0x00, 0x2D, 0x0C, 0x01, 0x0C, 0x35, 0x0B, 0x0C, 0x00, 0x1E, 0x05, 0x08, 0x00, 0x2D, 0x0C, 
43797
  0x00, 0x0F, 0x2C, 0x0D, 0x10, 0x00, 0x33, 0x01, 0x0C, 0x0D, 0x2D, 0x0C, 0x00, 0x1C, 0x31, 0x0C, 
43798
  0x00, 0x00, 0x2D, 0x0C, 0x01, 0x0F, 0x36, 0x0C, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
43799
  0x00, 0x91, 0x0E, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x01, 0x13, 
43800
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x09, 0x01, 0x13, 
43801
  0x00, 0x13, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x13, 0x00, 0x13, 
43802
  0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x21, 0x00, 0x21, 0x00, 0x21, 
43803
  0x00, 0x1D, 0x00, 0x31, 0x00, 0x31, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x15, 0x00, 0x15, 
43804
  0x00, 0x15, 0xBF, 0xFF, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x02, 0x1E, 0x00, 
43805
  0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x01, 0x0F, 0x00, 
43806
  0x0F, 0x00, 0x09, 0x01, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x12, 0x00, 0x12, 0x00, 
43807
  0x12, 0x00, 0x12, 0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 
43808
  0x09, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x07, 0x01, 0x12, 0x00, 0x12, 0x00, 
43809
  0x12, 0x00, 0x07, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x07, 0x01, 0x16, 0x00, 0x16, 0x00, 
43810
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x36, 0x00, 
43811
  0x36, 0x00, 0x36, 0x00, 0x16, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x16, 0x00, 0x16, 0x00, 0x5C, 0x00, 
43812
  0x5C, 0x00, 0x5C, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x01, 0x07, 0x00, 
43813
  0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
43814
  0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
43815
  0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 
43816
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 
43817
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x13, 0x00, 0x13, 0x00, 
43818
  0x13, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
43819
  0x25, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 
43820
  0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x90, 0xED, 0x0F, 0x00, 
43821
  0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x02, 0x18, 0x00, 0x18, 0x00, 
43822
  0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
43823
  0x18, 0x00, 0x05, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x01, 
43824
  0x19, 0x00, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 
43825
  0x00, 0x05, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
43826
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
43827
  0x00, 0x05, 0x01, 0x28, 0x00, 0x28, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 
43828
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x13, 0x00, 0x13, 
43829
  0x00, 0x13, 0x00, 0x13, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43830
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0x00, 0x05, 
43831
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x13, 0x00, 0x13, 
43832
  0x00, 0x13, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43833
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x05, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
43834
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 
43835
  0x01, 0x05, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 
43836
  0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 
43837
  0x00, 0x0B, 0x00, 0x05, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x02, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 
43838
  0x00, 0x1B, 0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x0B, 0x00, 0x0B, 
43839
  0x00, 0x05, 0x01, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 
43840
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 
43841
  0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
43842
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
43843
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
43844
  0x00, 0x11, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x05, 0x19, 0x05, 0x00, 0x05, 0x00, 0x05, 
43845
  0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
43846
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
43847
  0x00, 0x07, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
43848
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 
43849
  0x00, 0x07, 0xBF, 0xBA, 0x03, 0x02, 0x80, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x01, 0xBF, 
43850
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 
43851
  0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
43852
  0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 
43853
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 
43854
  0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 
43855
  0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 
43856
  0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 
43857
  0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 
43858
  0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43859
  0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 
43860
  0x10, 0x00, 0xDA, 0x43, 0x05, 0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x03, 0x01, 
43861
  0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x00, 0x00, 
43862
  0x2F, 0x02, 0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 0x02, 0x03, 0x04, 
43863
  0x1E, 0x02, 0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 0x02, 0x02, 0x00, 
43864
  0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x7D, 0x2B, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 
43865
  0x12, 0x00, 0x12, 0x00, 0x35, 0x00, 0x35, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x4D, 0x00, 0x49, 0x00, 
43866
  0x61, 0x00, 0x61, 0x00, 0x08, 0x00, 0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 
43867
  0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x10, 0x01, 0x18, 0xDA, 0x04, 0xDA, 0x88, 0x88, 0xBF, 0xFF, 0x00, 
43868
  0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
43869
  0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 
43870
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 
43871
  0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 
43872
  0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 
43873
  0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 
43874
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 
43875
  0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
43876
  0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 
43877
  0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 0x10, 0x00, 
43878
  0xDA, 0x43, 0x05, 0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x03, 0x01, 0x31, 0x02, 
43879
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x2F, 0x02, 
43880
  0x00, 0x04, 0x28, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x25, 0x02, 0x03, 0x04, 0x1E, 0x02, 
43881
  0x03, 0x00, 0x2A, 0x03, 0x00, 0x00, 0x2F, 0x03, 0x00, 0x03, 0x2B, 0x02, 0x02, 0x00, 0x03, 0x02, 
43882
  0x00, 0x00, 0xBF, 0xFF, 0x92, 0x85, 0x2D, 0x00, 0x24, 0x00, 0x24, 0x00, 0x12, 0x00, 0x12, 0x00, 
43883
  0x12, 0x00, 0x37, 0x00, 0x37, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4F, 0x00, 0x4B, 0x00, 0x63, 0x00, 
43884
  0x63, 0x00, 0x08, 0x00, 0x08, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 
43885
  0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 
43886
  0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 
43887
  0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
43888
  0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 
43889
  0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 
43890
  0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 
43891
  0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 
43892
  0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 
43893
  0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 
43894
  0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 
43895
  0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x2A, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x07, 
43896
  0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x69, 0x12, 0x00, 0x12, 0x00, 
43897
  0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
43898
  0x02, 0x09, 0x01, 0x18, 0xDA, 0x04, 0xDA, 0x81, 0x25, 0xDA, 0x82, 0xC9, 0xBF, 0xFF, 0x00, 0x00, 
43899
  0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x89, 
43900
  0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 0xBF, 
43901
  0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 0x00, 
43902
  0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
43903
  0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 0x29, 
43904
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 0xFF, 
43905
  0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 0x11, 
43906
  0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x89, 
43907
  0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 0xFF, 
43908
  0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x00, 0x09, 0x00, 0xDA, 
43909
  0x43, 0x05, 0x01, 0x00, 0x01, 0x2D, 0x03, 0x00, 0x00, 0x3A, 0x02, 0x03, 0x01, 0x2C, 0x01, 0x00, 
43910
  0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x01, 0x03, 0x00, 0x2B, 0x02, 0x02, 
43911
  0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x5C, 0x2F, 0x00, 0x26, 0x00, 0x26, 0x00, 0x14, 
43912
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x01, 
43913
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x04, 0x01, 0x17, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 
43914
  0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
43915
  0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x89, 0x23, 
43916
  0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 0x25, 0xBF, 0xFF, 
43917
  0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 0xFF, 0x00, 0x0A, 
43918
  0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x89, 
43919
  0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x89, 0x2B, 0xBF, 
43920
  0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 0xBF, 0xFF, 0x00, 
43921
  0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
43922
  0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x30, 0xBF, 
43923
  0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 0x29, 0x00, 0x00, 
43924
  0x00, 0x2F, 0x00, 0x00, 0x05, 0x2B, 0x00, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x92, 
43925
  0x57, 0x12, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x0A, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 
43926
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x13, 0x01, 0x1C, 0xCE, 0x09, 0x64, 0x6F, 0x68, 0x61, 0x6E, 
43927
  0x64, 0x6C, 0x65, 0x72, 0xDA, 0x04, 0xD5, 0x19, 0xCE, 0x0A, 0x2D, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 
43928
  0x77, 0x61, 0x72, 0x6E, 0xDA, 0x88, 0xF8, 0xCE, 0x06, 0x2D, 0x64, 0x65, 0x62, 0x75, 0x67, 0xDA, 
43929
  0x88, 0xF6, 0xCE, 0x06, 0x2D, 0x70, 0x72, 0x75, 0x6E, 0x65, 0xDA, 0x88, 0xFE, 0xCE, 0x0A, 0x2D, 
43930
  0x6E, 0x6F, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x88, 0xEF, 0xCE, 0x08, 0x2D, 0x63, 
43931
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0xDA, 0x87, 0x35, 0xCE, 0x0B, 0x2D, 0x65, 0x78, 0x70, 0x72, 
43932
  0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0xDA, 0x88, 0xF3, 0xCE, 0x06, 0x2D, 0x69, 0x6D, 0x61, 0x67, 
43933
  0x65, 0xDA, 0x88, 0xFF, 0xCE, 0x05, 0x2D, 0x68, 0x65, 0x6C, 0x70, 0xDA, 0x88, 0xF9, 0xCE, 0x08, 
43934
  0x2D, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0xDA, 0x88, 0xF2, 0xCE, 0x08, 0x2D, 0x76, 0x65, 
43935
  0x72, 0x73, 0x69, 0x6F, 0x6E, 0xDA, 0x88, 0xFC, 0xCE, 0x06, 0x2D, 0x71, 0x75, 0x69, 0x65, 0x74, 
43936
  0xDA, 0x89, 0x06, 0xCE, 0x0B, 0x2D, 0x70, 0x65, 0x72, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x74, 
43937
  0xDA, 0x88, 0xF4, 0xCE, 0x05, 0x2D, 0x6C, 0x69, 0x73, 0x74, 0xDA, 0x89, 0x00, 0xCE, 0x0B, 0x2D, 
43938
  0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x88, 0xFB, 0xCE, 0x09, 0x2D, 
43939
  0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0xDA, 0x88, 0xFA, 0xCE, 0x0A, 0x2D, 0x72, 0x65, 
43940
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 0x88, 0xF7, 0xCE, 0x06, 0x2D, 0x63, 0x6F, 0x6C, 
43941
  0x6F, 0x72, 0xDA, 0x88, 0xF1, 0xCE, 0x06, 0x2D, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 0x88, 0xF5, 
43942
  0xCE, 0x05, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0xDA, 0x89, 0x02, 0xCE, 0x0B, 0x2D, 0x6C, 0x69, 0x6E, 
43943
  0x74, 0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x88, 0xF0, 0xCE, 0x08, 0x2D, 0x73, 0x79, 0x73, 
43944
  0x70, 0x61, 0x74, 0x68, 0xDA, 0x89, 0x05, 0xCE, 0x08, 0x2D, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 
43945
  0x6C, 0xDA, 0x89, 0x03, 0xCE, 0x0A, 0x2D, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 
43946
  0xDA, 0x89, 0x04, 0xCE, 0x05, 0x2D, 0x65, 0x76, 0x61, 0x6C, 0xDA, 0x88, 0xFD, 0xCE, 0x08, 0x2D, 
43947
  0x6E, 0x6F, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0xDA, 0x89, 0x01, 0xCE, 0x0E, 0x75, 0x6E, 0x6B, 0x6E, 
43948
  0x6F, 0x77, 0x6E, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x2D, 0xDA, 0x81, 0x90, 0xDA, 0x88, 0xF9, 
43949
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x88, 0xD3, 0xBF, 0xFF, 
43950
  0x00, 0x03, 0xDA, 0x89, 0x21, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x89, 0x22, 0xBF, 0xFF, 0x00, 0x05, 
43951
  0xDA, 0x89, 0x23, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x89, 0x24, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x89, 
43952
  0x25, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x89, 0x26, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x87, 0x0D, 0xBF, 
43953
  0xFF, 0x00, 0x0A, 0xDA, 0x89, 0x27, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x89, 0x28, 0xBF, 0xFF, 0x00, 
43954
  0x0C, 0xDA, 0x89, 0x29, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x89, 0x2A, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
43955
  0x89, 0x2B, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x2C, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x2D, 
43956
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0x2D, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x89, 0x2E, 0xBF, 0xFF, 
43957
  0x00, 0x15, 0xDA, 0x89, 0x2F, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x43, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
43958
  0x89, 0x30, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x89, 0x31, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x89, 0x32, 
43959
  0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x89, 0x33, 0x00, 0x13, 0x00, 0xDA, 0x32, 0x00, 0x13, 0x01, 0xDA, 
43960
  0x43, 0x00, 0x13, 0x02, 0xDA, 0x89, 0x34, 0x06, 0x13, 0x03, 0xDA, 0x82, 0xCA, 0x2C, 0x04, 0x00, 
43961
  0x00, 0x3B, 0x03, 0x04, 0x00, 0x20, 0x03, 0x02, 0x00, 0x1B, 0x03, 0x00, 0x00, 0x2D, 0x05, 0x00, 
43962
  0x12, 0x3A, 0x04, 0x05, 0x03, 0x1B, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x04, 0x00, 0x2D, 0x05, 0x00, 
43963
  0x12, 0x32, 0x01, 0x05, 0x00, 0x36, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x32, 0x05, 0x00, 
43964
  0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2D, 0x06, 0x00, 0x12, 0x2C, 0x07, 0x03, 
43965
  0x00, 0x3A, 0x05, 0x06, 0x07, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0x99, 0x19, 0x00, 0x19, 
43966
  0x00, 0x19, 0x00, 0x19, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x00, 0x0B, 0x00, 0x0B, 
43967
  0x00, 0x0B, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 
43968
  0x00, 0x39, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x08, 0x17, 0x01, 0x05, 0xCE, 
43969
  0x09, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x04, 0xD0, 0x0B, 0x72, 0x65, 
43970
  0x70, 0x6C, 0x2D, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0xDA, 0x88, 0xB3, 0xDA, 0x85, 0xA3, 0xD8, 
43971
  0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x65, 0xDA, 0x89, 0x20, 
43972
  0xDA, 0x85, 0x32, 0xDA, 0x84, 0x66, 0xDA, 0x81, 0x28, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x83, 0x4A, 
43973
  0x00, 0x17, 0x00, 0xDA, 0x15, 0x00, 0x17, 0x01, 0xCF, 0x09, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 
43974
  0x6D, 0x70, 0x74, 0x03, 0x07, 0x03, 0xCF, 0x0D, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x2D, 0x70, 
43975
  0x72, 0x6F, 0x6D, 0x70, 0x74, 0x0B, 0x17, 0x04, 0xDA, 0x85, 0x37, 0x2D, 0x03, 0x00, 0x1A, 0x2C, 
43976
  0x04, 0x00, 0x00, 0x3B, 0x02, 0x03, 0x04, 0x1B, 0x03, 0x02, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x31, 
43977
  0x00, 0x00, 0x00, 0x36, 0x03, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 
43978
  0x02, 0x03, 0x00, 0x3D, 0x03, 0x02, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 
43979
  0x00, 0x03, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x03, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x2C, 
43980
  0x06, 0x05, 0x00, 0x33, 0x05, 0x04, 0x06, 0x2C, 0x05, 0x06, 0x00, 0x32, 0x03, 0x05, 0x00, 0x2C, 
43981
  0x05, 0x07, 0x00, 0x36, 0x05, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0xC8, 0x24, 0x00, 0x24, 0x00, 0x24, 
43982
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x44, 0x00, 0x44, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0B, 
43983
  0x00, 0x0B, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
43984
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x03, 
43985
  0x03, 0x06, 0x0D, 0x00, 0x04, 0xCE, 0x08, 0x67, 0x65, 0x74, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 
43986
  0x04, 0xDA, 0x88, 0xED, 0xDA, 0x81, 0x60, 0xD8, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x66, 0x6C, 
43987
  0x75, 0x73, 0x68, 0xDA, 0x89, 0x11, 0xDA, 0x85, 0x86, 0xDA, 0x81, 0x59, 0x00, 0x0D, 0x00, 0xDA, 
43988
  0x87, 0xC9, 0x00, 0x0D, 0x01, 0xDA, 0x85, 0x68, 0x00, 0x0D, 0x02, 0xDA, 0x81, 0x96, 0x00, 0x0D, 
43989
  0x03, 0xDA, 0x89, 0x38, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 
43990
  0x35, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 
43991
  0x35, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x33, 0x06, 0x07, 0x01, 
43992
  0x2C, 0x06, 0x05, 0x00, 0x36, 0x06, 0x00, 0x00, 0x92, 0xCC, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
43993
  0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
43994
  0x0B, 0x00, 0x0B, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x00, 0x07, 0x01, 0x07, 
43995
  0xCE, 0x08, 0x67, 0x65, 0x74, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x1A, 
43996
  0xDA, 0x83, 0x4A, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x89, 0xC2, 0xBF, 0xFF, 0x00, 0x1C, 0xDA, 0x89, 
43997
  0x38, 0xBF, 0xFF, 0x00, 0x1D, 0xCF, 0x06, 0x67, 0x65, 0x74, 0x74, 0x65, 0x72, 0x00, 0x07, 0x00, 
43998
  0xDA, 0x85, 0x68, 0x00, 0x07, 0x01, 0xDA, 0x15, 0x00, 0x07, 0x02, 0xDA, 0x89, 0x39, 0x31, 0x01, 
43999
  0x00, 0x00, 0x2D, 0x04, 0x00, 0x1B, 0x35, 0x03, 0x04, 0x00, 0x2D, 0x04, 0x00, 0x1A, 0x33, 0x03, 
44000
  0x00, 0x04, 0x2D, 0x04, 0x00, 0x1D, 0x36, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x92, 0xD4, 0x13, 0x00, 
44001
  0x13, 0x00, 0x13, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x92, 0x10, 0x03, 0x00, 0x03, 
44002
  0x00, 0x03, 0x00, 0x03, 0x02, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 
44003
  0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x02, 0x11, 0x00, 0x11, 
44004
  0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x00, 0x03, 0x01, 0x21, 0x00, 0x21, 0x00, 0x17, 0x00, 0x17, 
44005
  0x00, 0x17, 0x00, 0x17, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x1A, 
44006
  0x00, 0x1A, 0x00, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x0E, 
44007
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44008
  0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 
44009
  0x05, 0x00, 0x05, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x03, 0x00, 0x03, 0x00, 
44010
  0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x02, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
44011
  0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 0xFF, 0x11, 0x00, 0x11, 0x02, 0x13, 0x00, 0x13, 0x00, 0x13, 
44012
  0x00, 0x13, 0xBF, 0xFE, 0x11, 0x00, 0x11, 0x04, 0x03, 0x00, 0x03, 0x33, 0x0A, 0x39, 0x0A, 0xBF, 
44013
  0xFF, 0x0A, 0xBF, 0xC6, 0x0A, 0x0F, 0x0A, 0x08, 0x0A, 0xBF, 0xE4, 0x0A, 0xBF, 0xFE, 0x0A, 0x3F, 
44014
  0x0A, 0xBF, 0xEE, 0x08, 0x13, 0x0A, 0xBF, 0x9D, 0x0A, 0x28, 0x0A, 0x34, 0x08, 0xBF, 0xC6, 0x0A, 
44015
  0x1B, 0x0A, 0x1B, 0x08, 0xBF, 0xCF, 0x0A, 0x39, 0x08, 0xBF, 0xC9, 0x0A, 0xBF, 0xFB, 0x0A, 0x28, 
44016
  0x08, 0x08, 0x08, 0xBF, 0xE4, 0x0A, 0xBF, 0xF3, 0x0A, 0xBF, 0xFB, 0x0A, 0xBF, 0xD9, 0x03, 0x00, 
44017
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44018
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44019
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44020
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44021
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44022
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x68, 0x03, 0x00, 0x03, 0x05, 0x03, 0x01, 
44023
  0x10, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 
44024
  0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x19, 0x00, 0x19, 0x00, 0x09, 0x00, 
44025
  0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0D, 0x00, 
44026
  0x0D, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x01, 0x09, 
44027
  0x01, 0x09, 0x02, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0D, 
44028
  0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0F, 
44029
  0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 
44030
  0xBF, 0xF7, 0x09, 0x0B, 0x16, 0x00, 0x16, 0x00, 0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x00, 
44031
  0x0D, 0x01, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 
44032
  0x0F, 0x00, 0x0F, 0x01, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
44033
  0x0F, 0xBF, 0xFF, 0x0D, 0x03, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
44034
  0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x01, 0x09, 0xBF, 0xE2, 0x03, 0x20, 0x07, 0x00, 0x07, 0x00, 
44035
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
44036
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x02, 0x09, 0x00, 0x09, 0x01, 0x3D, 0x00, 
44037
  0x3D, 0x00, 0x4C, 0x00, 0x4C, 0x00, 0x5A, 0x00, 0x5A, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
44038
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
44039
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x09, 0x01, 
44040
  0x09, 0x00, 0x09, 0x04, 0x09, 0x00, 0x09, 0x04, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 
44041
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0x01, 
44042
  0x09, 0x00, 0x09, 0x02, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x09, 0x00, 0x09, 0x00, 
44043
  0x09, 0x00, 0x09, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x09, 0x00, 0x09, 0x00, 
44044
  0x09, 0x00, 0x09, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x09, 0x00, 0x09, 0x00, 
44045
  0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 
44046
  0x09, 0x00, 0x09, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x09, 0x00, 0x09, 0x01, 
44047
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 
44048
  0x0B, 0x00, 0x0B, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xE2, 0x03, 0xF9, 0x7F, 
44049
  0x05, 0x2C, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x06, 0x65, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xDA, 0x85, 
44050
  0x1C, 0xCF, 0x06, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0xDA, 0x88, 0xED, 0xCF, 0x0A, 0x63, 0x66, 
44051
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
44052
  0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x0A, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
44053
  0x6F, 0x6E, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xD0, 0x09, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
44054
  0x6F, 0x6E, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x89, 0xCA, 0x31, 0x00, 0x00, 
44055
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 0x02, 
44056
  0x04, 0x03, 0x03, 0x00, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 0x00, 
44057
  0x30, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0xD8, 0x09, 0x6D, 0x61, 
44058
  0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0xCF, 0x04, 0x6D, 0x65, 0x61, 0x6E, 0xD7, 0x00, 0xCD, 
44059
  0x00, 0xDC, 0x00, 0x00, 0x08, 0x01, 0x01, 0x01, 0x02, 0x18, 0x00, 0x07, 0xCE, 0x04, 0x6D, 0x65, 
44060
  0x61, 0x6E, 0xDA, 0x04, 0xDA, 0x40, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 
44061
  0x01, 0x00, 0x0B, 0x00, 0x06, 0xCE, 0x03, 0x73, 0x75, 0x6D, 0xDA, 0x04, 0x00, 0x0B, 0x00, 0xDA, 
44062
  0x81, 0x5C, 0x00, 0x0B, 0x01, 0xCF, 0x03, 0x73, 0x75, 0x6D, 0x00, 0x0B, 0x02, 0xDA, 0x83, 0xC5, 
44063
  0x00, 0x0A, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x69, 0x03, 0x0A, 0x04, 0xCF, 
44064
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x68, 0x06, 0x0A, 0x05, 0xDA, 0x1E, 0x2B, 0x02, 0x00, 
44065
  0x00, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x1F, 0x04, 0x06, 
44066
  0x00, 0x3A, 0x03, 0x00, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x06, 0x02, 0x02, 0x05, 0x49, 0x04, 0x00, 
44067
  0x04, 0x1C, 0xFB, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x82, 0xCB, 0x03, 0x01, 0x03, 0x00, 0x03, 
44068
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 
44069
  0x01, 0x00, 0x18, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x18, 0x01, 0xDA, 0x89, 0xD0, 0x0A, 0x18, 0x03, 
44070
  0xDA, 0x83, 0xC5, 0x0B, 0x18, 0x04, 0xDA, 0x86, 0xD0, 0x0B, 0x16, 0x00, 0xCF, 0x07, 0x5F, 0x30, 
44071
  0x30, 0x30, 0x30, 0x30, 0x6B, 0x0E, 0x16, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 
44072
  0x6A, 0x11, 0x16, 0x07, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
44073
  0x03, 0x00, 0x1E, 0x02, 0x07, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 
44074
  0x04, 0x00, 0x3F, 0x04, 0x00, 0x00, 0x0C, 0x05, 0x03, 0x04, 0x03, 0x05, 0x00, 0x00, 0x2B, 0x03, 
44075
  0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x06, 0x1B, 0x06, 
44076
  0x05, 0x00, 0x1F, 0x06, 0x07, 0x00, 0x3A, 0x05, 0x00, 0x06, 0x1B, 0x07, 0x05, 0x00, 0x06, 0x03, 
44077
  0x03, 0x07, 0x05, 0x04, 0x04, 0x01, 0x49, 0x06, 0x00, 0x06, 0x1C, 0xFA, 0xFF, 0xFF, 0x0C, 0x05, 
44078
  0x03, 0x04, 0x03, 0x05, 0x00, 0x00, 0x82, 0xD2, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 
44079
  0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x11, 0x00, 0x05, 0x00, 0x05, 0x02, 0x07, 0x00, 0x07, 0x01, 
44080
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x12, 0x00, 0x1F, 0x00, 
44081
  0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0xCF, 0x09, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 
44082
  0x65, 0x77, 0xDA, 0x80, 0xDC, 0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0xD7, 
44083
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 
44084
  0x00, 0x0B, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0xDA, 0x04, 0xDA, 0x82, 
44085
  0x69, 0x00, 0x32, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x32, 0x01, 0xDA, 0x89, 0xDB, 0x00, 0x32, 0x02, 
44086
  0xDA, 0x7E, 0x03, 0x32, 0x04, 0xDA, 0x1E, 0x04, 0x31, 0x03, 0xDA, 0x43, 0x06, 0x31, 0x06, 0xCF, 
44087
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x42, 0x0A, 0x2F, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 
44088
  0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x43, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 
44089
  0x30, 0x30, 0x30, 0x30, 0x30, 0x44, 0x1A, 0x28, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44090
  0x30, 0x45, 0x22, 0x28, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x46, 0x29, 0x02, 
44091
  0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x3B, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 
44092
  0x01, 0x00, 0x3F, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 
44093
  0x29, 0x00, 0x3A, 0x07, 0x00, 0x03, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 
44094
  0x04, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x1E, 0x09, 0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 
44095
  0x09, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 
44096
  0x07, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 
44097
  0x00, 0x00, 0x3B, 0x0B, 0x08, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 
44098
  0x04, 0x00, 0x35, 0x0D, 0x0C, 0x00, 0x09, 0x0E, 0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 
44099
  0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 
44100
  0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x27, 0x0E, 0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 
44101
  0x0B, 0x00, 0x24, 0x09, 0x07, 0x00, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 
44102
  0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD7, 
44103
  0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 0x83, 0x7E, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44104
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44105
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44106
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44107
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44108
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44109
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 0x6D, 0x61, 0x74, 
44110
  0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x69, 0x6E, 0x74, 0xD8, 0x0C, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
44111
  0x72, 0x6E, 0x67, 0x2D, 0x69, 0x6E, 0x74, 0xCF, 0x04, 0x74, 0x61, 0x6B, 0x65, 0xD7, 0x00, 0xCD, 
44112
  0x00, 0xDC, 0x00, 0x00, 0x0D, 0x02, 0x02, 0x02, 0x07, 0x38, 0x00, 0x0C, 0xCE, 0x04, 0x74, 0x61, 
44113
  0x6B, 0x65, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x2C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0D, 
44114
  0x03, 0x03, 0x03, 0x00, 0x18, 0x00, 0x08, 0xCE, 0x0C, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x6E, 0x2D, 
44115
  0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x04, 0x00, 0x18, 0x00, 0xDA, 0x31, 0x00, 0x18, 0x01, 0xDA, 
44116
  0x32, 0x00, 0x18, 0x02, 0xDA, 0x33, 0x00, 0x18, 0x03, 0xCF, 0x0C, 0x74, 0x61, 0x6B, 0x65, 0x2D, 
44117
  0x6E, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x01, 0x18, 0x05, 0xDA, 0x37, 0x03, 0x18, 0x07, 0xDA, 
44118
  0x82, 0x3C, 0x0C, 0x18, 0x09, 0xDA, 0x35, 0x15, 0x18, 0x0B, 0xDA, 0x36, 0x3F, 0x04, 0x02, 0x00, 
44119
  0x1B, 0x05, 0x04, 0x00, 0x06, 0x06, 0x05, 0x01, 0x1B, 0x07, 0x06, 0x00, 0x24, 0x09, 0x01, 0x00, 
44120
  0x1E, 0x09, 0x03, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x23, 0x09, 0x0A, 0x07, 0x1E, 0x09, 0x03, 0x00, 
44121
  0x1B, 0x08, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 
44122
  0x2B, 0x0C, 0x00, 0x00, 0x48, 0x0B, 0x0C, 0x01, 0x1E, 0x0B, 0x02, 0x00, 0x48, 0x0B, 0x01, 0x05, 
44123
  0x1E, 0x0B, 0x03, 0x00, 0x1B, 0x0A, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0A, 0x05, 0x00, 
44124
  0x1B, 0x0B, 0x0A, 0x00, 0x33, 0x02, 0x09, 0x0B, 0x36, 0x00, 0x00, 0x00, 0x84, 0xB2, 0x0C, 0x00, 
44125
  0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 
44126
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
44127
  0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xDA, 0x3C, 0xDA, 
44128
  0x3D, 0xDA, 0x83, 0x38, 0xDA, 0x30, 0x00, 0x38, 0x00, 0xDA, 0x32, 0x00, 0x38, 0x01, 0xDA, 0x33, 
44129
  0x00, 0x38, 0x02, 0xDA, 0x89, 0xE5, 0x14, 0x26, 0x06, 0xDA, 0x81, 0x01, 0x16, 0x26, 0x08, 0xCF, 
44130
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x31, 0x16, 0x25, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44131
  0x30, 0x30, 0x32, 0x33, 0x19, 0x25, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x32, 
44132
  0x1C, 0x25, 0x0A, 0xDA, 0x43, 0x1D, 0x25, 0x0B, 0xDA, 0x1E, 0x27, 0x38, 0x07, 0xDA, 0x7E, 0x28, 
44133
  0x38, 0x06, 0xDA, 0x82, 0xAD, 0x29, 0x37, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 
44134
  0x34, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 
44135
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 
44136
  0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 
44137
  0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 0x00, 0x01, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 
44138
  0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x13, 
44139
  0x00, 0x1B, 0x06, 0x00, 0x00, 0x44, 0x07, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x28, 0x09, 0x00, 
44140
  0x00, 0x49, 0x07, 0x01, 0x09, 0x1B, 0x09, 0x07, 0x00, 0x1F, 0x09, 0x0B, 0x00, 0x3A, 0x07, 0x01, 
44141
  0x09, 0x1B, 0x0A, 0x09, 0x00, 0x1B, 0x0B, 0x07, 0x00, 0x07, 0x06, 0x06, 0x01, 0x24, 0x07, 0x06, 
44142
  0x00, 0x1E, 0x07, 0x02, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x08, 0x0A, 0x0B, 0x49, 0x09, 0x01, 
44143
  0x09, 0x1C, 0xF6, 0xFF, 0xFF, 0x03, 0x08, 0x00, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 
44144
  0x00, 0x28, 0x06, 0x00, 0x00, 0x1B, 0x08, 0x00, 0x00, 0x22, 0x09, 0x08, 0x00, 0x1E, 0x09, 0x0C, 
44145
  0x00, 0x49, 0x06, 0x01, 0x06, 0x28, 0x0B, 0x00, 0x00, 0x25, 0x0A, 0x0B, 0x06, 0x1E, 0x0A, 0x02, 
44146
  0x00, 0x1C, 0x07, 0x00, 0x00, 0x3A, 0x0A, 0x01, 0x06, 0x32, 0x07, 0x0A, 0x00, 0x2C, 0x0C, 0x06, 
44147
  0x00, 0x35, 0x0B, 0x0C, 0x00, 0x07, 0x08, 0x08, 0x01, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x07, 0x00, 
44148
  0x00, 0x84, 0xBD, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 
44149
  0x14, 0x00, 0x14, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 
44150
  0x00, 0x12, 0x00, 0x12, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x04, 0x19, 0x01, 
44151
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
44152
  0x19, 0x00, 0x3D, 0x00, 0x3A, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 
44153
  0x19, 0x02, 0x07, 0x00, 0x07, 0x01, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x1D, 0x00, 
44154
  0x0D, 0x00, 0x0D, 0x00, 0x09, 0x00, 0x2E, 0x01, 0x19, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 
44155
  0xFE, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x6F, 
44156
  0x77, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x6F, 0x77, 0xCF, 0x12, 0x73, 0x74, 0x72, 
44157
  0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 0x70, 0x65, 0x72, 0xD8, 
44158
  0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 
44159
  0x70, 0x65, 0x72, 0xCF, 0x0B, 0x2A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x77, 0x61, 0x72, 0x6E, 0x2A, 
44160
  0xDA, 0x85, 0x84, 0xDA, 0x88, 0x8C, 0xDA, 0x88, 0x8A, 0xCF, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 
44161
  0x6C, 0x65, 0x61, 0x76, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 
44162
  0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x02, 0xCE, 0x0A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6C, 
44163
  0x65, 0x61, 0x76, 0x65, 0xDA, 0x04, 0xDA, 0x82, 0xB5, 0xDA, 0x85, 0xCC, 0x00, 0x05, 0x00, 0xCF, 
44164
  0x04, 0x63, 0x6F, 0x6C, 0x73, 0x00, 0x05, 0x01, 0xDA, 0x89, 0xF4, 0x2C, 0x02, 0x00, 0x00, 0x31, 
44165
  0x02, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x01, 0x00, 0x36, 0x02, 0x00, 0x00, 0x86, 
44166
  0xF3, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0D, 0x73, 0x74, 0x72, 0x75, 
44167
  0x63, 0x74, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0xDA, 0x82, 0xD1, 0xCF, 0x0E, 0x6D, 0x6F, 
44168
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0xDA, 0x82, 0x35, 0xCF, 
44169
  0x08, 0x6F, 0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 0xDA, 0x81, 0x3D, 0xCF, 0x09, 0x70, 0x72, 
44170
  0x6F, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0xDA, 0x87, 0xC6, 0xCF, 0x0F, 0x74, 0x61, 0x62, 0x6C, 
44171
  0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x6B, 0x65, 0x79, 0x73, 0xD8, 0x0F, 0x74, 0x61, 0x62, 
44172
  0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x6B, 0x65, 0x79, 0x73, 0xCF, 0x03, 0x64, 0x79, 
44173
  0x6E, 0xDA, 0x81, 0x26, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0xD8, 0x08, 
44174
  0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 
44175
  0x6B, 0xD8, 0x07, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x04, 0x63, 0x6F, 0x6E, 0x64, 
44176
  0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x05, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
44177
  0x05, 0x00, 0x01, 0x03, 0xCE, 0x04, 0x63, 0x6F, 0x6E, 0x64, 0xDA, 0x04, 0x00, 0x05, 0x00, 0xDA, 
44178
  0x83, 0x21, 0x00, 0x05, 0x01, 0xDA, 0x8A, 0x03, 0x01, 0x05, 0x03, 0xCF, 0x03, 0x61, 0x75, 0x78, 
44179
  0x30, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 
44180
  0x36, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x02, 0x1A, 0x01, 
44181
  0x05, 0xCE, 0x03, 0x61, 0x75, 0x78, 0xDA, 0x04, 0xDA, 0x82, 0x81, 0xDA, 0x82, 0xB5, 0xBF, 0xFF, 
44182
  0x00, 0x00, 0xDA, 0x83, 0x21, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8A, 0x03, 0x00, 0x1A, 0x00, 0xDA, 
44183
  0x43, 0x00, 0x1A, 0x01, 0xDA, 0x8A, 0x06, 0x04, 0x1A, 0x02, 0xCF, 0x07, 0x72, 0x65, 0x73, 0x74, 
44184
  0x6C, 0x65, 0x6E, 0x2E, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x3F, 0x02, 0x03, 0x00, 0x08, 
44185
  0x03, 0x02, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x26, 0x04, 0x02, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x04, 
44186
  0x00, 0x00, 0x00, 0x26, 0x05, 0x02, 0x01, 0x1E, 0x05, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x00, 0x3A, 
44187
  0x06, 0x07, 0x00, 0x03, 0x06, 0x00, 0x00, 0x2D, 0x07, 0x00, 0x00, 0x3A, 0x06, 0x07, 0x00, 0x05, 
44188
  0x07, 0x00, 0x01, 0x2D, 0x09, 0x00, 0x00, 0x3A, 0x08, 0x09, 0x07, 0x05, 0x07, 0x00, 0x02, 0x31, 
44189
  0x07, 0x00, 0x00, 0x35, 0x09, 0x01, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x33, 0x07, 0x06, 0x08, 0x31, 
44190
  0x09, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x36, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x80, 0xFB, 0x03, 
44191
  0x01, 0x15, 0x00, 0x15, 0x00, 0x12, 0x00, 0x05, 0x01, 0x09, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0B, 
44192
  0x00, 0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x01, 0x14, 0x00, 0x14, 0x01, 0x1A, 0x00, 0x10, 
44193
  0x00, 0x10, 0x01, 0x15, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
44194
  0x09, 0x00, 0x09, 0x80, 0xFB, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 
44195
  0x00, 0x00, 0xCF, 0x0A, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xD7, 0x00, 
44196
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x0A, 0x64, 
44197
  0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0xDA, 0x04, 0xDA, 0x85, 0xB2, 0xD7, 0x00, 
44198
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x0B, 0x24, 0x00, 0x03, 0xCE, 0x0A, 0x64, 
44199
  0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0xDA, 0x04, 0xDA, 0x2B, 0xDA, 0x2C, 0xD7, 
44200
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x03, 0x03, 0x02, 0x10, 0x00, 0x07, 0xCE, 0x10, 
44201
  0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 
44202
  0xDA, 0x04, 0xDA, 0x85, 0xB9, 0xDA, 0x85, 0xBD, 0x00, 0x10, 0x00, 0xDA, 0x31, 0x00, 0x10, 0x01, 
44203
  0xDA, 0x82, 0x1A, 0x00, 0x10, 0x02, 0xDA, 0x33, 0x00, 0x10, 0x03, 0xCF, 0x10, 0x64, 0x72, 0x6F, 
44204
  0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x01, 0x10, 0x05, 
44205
  0xDA, 0x37, 0x05, 0x10, 0x07, 0xDA, 0x43, 0x0D, 0x10, 0x09, 0xDA, 0x35, 0x3F, 0x04, 0x02, 0x00, 
44206
  0x1B, 0x05, 0x04, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x35, 0x06, 0x07, 0x00, 
44207
  0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 
44208
  0x1E, 0x09, 0x03, 0x00, 0x1B, 0x08, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x08, 0x07, 0x00, 
44209
  0x1B, 0x09, 0x08, 0x00, 0x32, 0x02, 0x09, 0x00, 0x36, 0x00, 0x00, 0x00, 0x85, 0x00, 0x0C, 0x00, 
44210
  0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
44211
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0xDA, 0x3C, 0xDA, 
44212
  0x3D, 0xDA, 0x83, 0x8F, 0xDA, 0x83, 0x92, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x03, 
44213
  0x03, 0x03, 0x00, 0x13, 0x00, 0x09, 0xCE, 0x0F, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 
44214
  0x69, 0x6C, 0x2D, 0x64, 0x69, 0x63, 0x74, 0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 0x31, 0x00, 0x13, 
44215
  0x01, 0xDA, 0x82, 0x1A, 0x00, 0x13, 0x02, 0xDA, 0x33, 0x00, 0x13, 0x03, 0xCF, 0x0F, 0x64, 0x72, 
44216
  0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x02, 0x13, 0x05, 
44217
  0xDA, 0x7E, 0x02, 0x12, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x66, 0x05, 0x12, 
44218
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x65, 0x08, 0x12, 0x08, 0xDA, 0x43, 0x09, 
44219
  0x12, 0x09, 0xDA, 0x1E, 0x31, 0x02, 0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 
44220
  0x28, 0x07, 0x00, 0x00, 0x49, 0x06, 0x02, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x0C, 0x00, 
44221
  0x3A, 0x06, 0x02, 0x07, 0x1B, 0x08, 0x07, 0x00, 0x1B, 0x09, 0x06, 0x00, 0x31, 0x09, 0x00, 0x00, 
44222
  0x35, 0x06, 0x01, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x05, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 
44223
  0x3C, 0x05, 0x08, 0x06, 0x49, 0x07, 0x02, 0x07, 0x1C, 0xF5, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 
44224
  0x85, 0x07, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44225
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x22, 0x00, 0x22, 0x00, 0x03, 0x00, 0x03, 0x00, 0x2C, 0x00, 
44226
  0x2C, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFD, 0x01, 0xDA, 0x83, 0x98, 0xDA, 0x83, 0x9B, 0xD7, 0x00, 
44227
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x03, 0x02, 0x03, 0x00, 0x10, 0x00, 0x07, 0xCE, 0x04, 0x66, 
44228
  0x69, 0x6E, 0x64, 0xDA, 0x04, 0x00, 0x10, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x10, 0x01, 0xDA, 0x33, 
44229
  0x00, 0x10, 0x02, 0xDA, 0x85, 0xBB, 0x00, 0x10, 0x03, 0xCF, 0x04, 0x66, 0x69, 0x6E, 0x64, 0x00, 
44230
  0x10, 0x04, 0xDA, 0x3A, 0x01, 0x10, 0x05, 0xDA, 0x39, 0x08, 0x0F, 0x07, 0xDA, 0x82, 0x1E, 0x28, 
44231
  0x04, 0x00, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x49, 0x04, 0x01, 0x04, 0x28, 0x07, 0x00, 0x00, 0x25, 
44232
  0x06, 0x04, 0x07, 0x1E, 0x06, 0x02, 0x00, 0x1C, 0x09, 0x00, 0x00, 0x3A, 0x06, 0x01, 0x04, 0x1B, 
44233
  0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x06, 0x00, 0x00, 0x1E, 0x06, 0x03, 0x00, 0x1B, 
44234
  0x05, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1C, 0xF4, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 
44235
  0x99, 0x03, 0x01, 0x03, 0x02, 0x0C, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x13, 0x01, 0x0F, 
44236
  0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x01, 0x07, 0xBF, 0xFA, 0x03, 0xBF, 
44237
  0xFA, 0x01, 0x00, 0x24, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x24, 0x01, 0xDA, 0x33, 0x00, 0x24, 0x02, 
44238
  0xCF, 0x0A, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x31, 0x01, 0x00, 0x00, 
44239
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x05, 0x00, 0x2C, 0x04, 0x01, 0x00, 
44240
  0x33, 0x04, 0x00, 0x01, 0x2C, 0x04, 0x02, 0x00, 0x36, 0x04, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
44241
  0x2C, 0x05, 0x03, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x05, 0x00, 0x2C, 0x05, 0x04, 0x00, 
44242
  0x33, 0x05, 0x00, 0x01, 0x2C, 0x05, 0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
44243
  0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x05, 0x00, 0x2C, 0x06, 0x06, 0x00, 
44244
  0x33, 0x06, 0x00, 0x01, 0x2C, 0x06, 0x07, 0x00, 0x36, 0x06, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 
44245
  0x2C, 0x07, 0x08, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x09, 0x00, 
44246
  0x33, 0x07, 0x00, 0x01, 0x2C, 0x07, 0x07, 0x00, 0x36, 0x07, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 
44247
  0x2C, 0x08, 0x0A, 0x00, 0x35, 0x07, 0x08, 0x00, 0x03, 0x01, 0x00, 0x00, 0x85, 0x0F, 0x05, 0x00, 
44248
  0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x01, 0x05, 
44249
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x01, 
44250
  0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFD, 0x03, 0x03, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
44251
  0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFC, 0x03, 0x04, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
44252
  0x12, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x06, 0x00, 0xDA, 0x82, 0x1A, 0x00, 
44253
  0x06, 0x01, 0xDA, 0x33, 0x00, 0x06, 0x02, 0xDA, 0x8A, 0x09, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 
44254
  0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x32, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 
44255
  0x00, 0x00, 0x85, 0x19, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
44256
  0x0E, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0xD8, 
44257
  0x0E, 0x65, 0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0xCF, 
44258
  0x04, 0x77, 0x69, 0x74, 0x68, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 
44259
  0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x18, 0x00, 0x06, 0xCE, 0x04, 0x77, 0x69, 0x74, 0x68, 0xDA, 0x04, 
44260
  0xDA, 0x80, 0xAB, 0xDA, 0x81, 0x47, 0xDA, 0x88, 0x18, 0xDA, 0x80, 0xB3, 0x00, 0x18, 0x01, 0xDA, 
44261
  0x80, 0xC7, 0x01, 0x18, 0x03, 0xDA, 0x82, 0x5E, 0x03, 0x18, 0x04, 0xDA, 0x88, 0x1B, 0x05, 0x18, 
44262
  0x05, 0xDA, 0x88, 0x1C, 0x06, 0x18, 0x00, 0xDA, 0x8A, 0x1C, 0x09, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 
44263
  0x30, 0x30, 0x30, 0x30, 0x30, 0x38, 0x3D, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x3D, 0x02, 
44264
  0x00, 0x01, 0x1B, 0x04, 0x02, 0x00, 0x3D, 0x02, 0x00, 0x02, 0x1B, 0x05, 0x02, 0x00, 0x2E, 0x00, 
44265
  0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x33, 0x06, 0x03, 0x04, 0x45, 0x02, 0x00, 0x00, 0x1E, 0x05, 
44266
  0x03, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x06, 
44267
  0x03, 0x00, 0x45, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x08, 
44268
  0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x33, 0x08, 0x02, 0x07, 0x45, 0x06, 
44269
  0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x81, 0xAC, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 
44270
  0x01, 0x00, 0x01, 0x00, 0x01, 0x06, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x15, 0x00, 0x15, 0x00, 
44271
  0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
44272
  0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x88, 0x1A, 0xDA, 0x87, 0xA6, 0xCF, 0x0C, 
44273
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x70, 0x6C, 0x69, 0x74, 0xDA, 0x82, 0xE8, 0xDA, 
44274
  0x80, 0xBD, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
44275
  0xFF, 0x05, 0x16, 0x00, 0x04, 0xCE, 0x10, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 
44276
  0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x04, 0xDA, 0x5C, 0xCF, 0x04, 0x63, 0x6F, 0x72, 
44277
  0x6F, 0xD8, 0x0B, 0x65, 0x76, 0x2F, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x83, 
44278
  0x43, 0xDA, 0x83, 0xF7, 0x00, 0x16, 0x00, 0xCF, 0x03, 0x73, 0x65, 0x63, 0x00, 0x16, 0x01, 0xDA, 
44279
  0x80, 0xC7, 0x00, 0x16, 0x02, 0xDA, 0x80, 0xBD, 0x02, 0x16, 0x04, 0xDA, 0x31, 0x2C, 0x04, 0x00, 
44280
  0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 
44281
  0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x46, 0x05, 0x00, 
44282
  0x00, 0x2C, 0x06, 0x02, 0x00, 0x28, 0x07, 0x00, 0x00, 0x33, 0x06, 0x00, 0x07, 0x31, 0x04, 0x00, 
44283
  0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x06, 0x00, 
44284
  0x00, 0x2C, 0x08, 0x04, 0x00, 0x33, 0x08, 0x05, 0x03, 0x31, 0x06, 0x00, 0x00, 0x45, 0x07, 0x00, 
44285
  0x00, 0x03, 0x07, 0x00, 0x00, 0x8F, 0x2B, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 
44286
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44287
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44288
  0x00, 0x07, 0xDA, 0x85, 0x0E, 0xDA, 0x85, 0x0A, 0xCF, 0x0E, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
44289
  0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0xDA, 0x82, 0x37, 0xCF, 0x0D, 0x70, 0x61, 0x72, 
44290
  0x73, 0x65, 0x72, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0xD8, 0x0D, 0x70, 0x61, 0x72, 0x73, 
44291
  0x65, 0x72, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0xCF, 0x0D, 0x65, 0x76, 0x2F, 0x63, 0x68, 
44292
  0x61, 0x6E, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xD8, 0x0D, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 
44293
  0x6E, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x7F, 0xDA, 0x71, 0xDA, 0x83, 0xFB, 0xDA, 0x80, 
44294
  0xF8, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 0xD8, 0x09, 0x6D, 0x61, 
44295
  0x74, 0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x83, 0x51, 0xDA, 0x83, 0x4E, 0xDA, 0x8A, 0x18, 
44296
  0xDA, 0x8A, 0x16, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 0xDA, 0x89, 0x13, 0xCF, 
44297
  0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 
44298
  0x6B, 0xDA, 0x88, 0x20, 0xDA, 0x82, 0xF7, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 
44299
  0x01, 0x01, 0x03, 0x20, 0x01, 0x23, 0xCE, 0x0C, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x77, 
44300
  0x68, 0x6F, 0x69, 0x73, 0xDA, 0x04, 0xDA, 0x81, 0x38, 0xDA, 0x82, 0x7C, 0xDA, 0x88, 0xB0, 0xBF, 
44301
  0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 
44302
  0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 
44303
  0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 
44304
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 
44305
  0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 
44306
  0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 
44307
  0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 
44308
  0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 
44309
  0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 
44310
  0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 
44311
  0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 
44312
  0x00, 0x1A, 0xDA, 0x82, 0xF6, 0x00, 0x20, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x20, 0x01, 0xDA, 0x82, 
44313
  0xF7, 0x00, 0x20, 0x02, 0xDA, 0x39, 0x04, 0x20, 0x04, 0xCF, 0x05, 0x72, 0x70, 0x61, 0x74, 0x68, 
44314
  0x07, 0x1F, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x65, 0x0A, 0x1F, 0x07, 0xCF, 
44315
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x64, 0x0D, 0x1F, 0x08, 0xDA, 0x81, 0x29, 0x15, 0x1F, 
44316
  0x05, 0xDA, 0x81, 0x3A, 0x19, 0x1F, 0x0A, 0xCF, 0x08, 0x68, 0x61, 0x73, 0x2D, 0x66, 0x69, 0x6C, 
44317
  0x65, 0x28, 0x02, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x03, 0x35, 0x03, 0x04, 
44318
  0x00, 0x1B, 0x04, 0x03, 0x00, 0x2D, 0x06, 0x00, 0x10, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 
44319
  0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 0x05, 0x06, 0x07, 0x1B, 0x07, 0x05, 0x00, 0x1F, 0x07, 0x14, 
44320
  0x00, 0x3A, 0x05, 0x06, 0x07, 0x1B, 0x08, 0x05, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x09, 0x00, 
44321
  0x0D, 0x35, 0x05, 0x09, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x3B, 0x09, 0x05, 0x0A, 0x20, 0x09, 0x02, 
44322
  0x00, 0x2C, 0x09, 0x01, 0x00, 0x1B, 0x05, 0x09, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x0A, 0x02, 
44323
  0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x02, 0x08, 
44324
  0x00, 0x1C, 0x03, 0x00, 0x00, 0x49, 0x07, 0x06, 0x07, 0x1C, 0xED, 0xFF, 0xFF, 0x03, 0x02, 0x00, 
44325
  0x00, 0xBF, 0xFF, 0x91, 0x7F, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x17, 
44326
  0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44327
  0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x07, 
44328
  0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x07, 0x01, 0x07, 0x01, 0x09, 0x01, 0x09, 0xBF, 0xFB, 
44329
  0x05, 0x00, 0x05, 0xBF, 0xFB, 0x03, 0xDB, 0x01, 0xCF, 0x07, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
44330
  0x65, 0xDA, 0x83, 0x49, 0xDA, 0x82, 0xF1, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
44331
  0x01, 0x01, 0x03, 0x0D, 0x01, 0x16, 0xCE, 0x11, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x69, 
44332
  0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x3F, 0xDA, 0x04, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 
44333
  0xF0, 0xDA, 0x82, 0x51, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 
44334
  0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 
44335
  0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 
44336
  0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 
44337
  0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 
44338
  0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 
44339
  0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 
44340
  0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
44341
  0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 
44342
  0x00, 0x0D, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x0D, 0x01, 0xDA, 0x82, 0xF1, 0x31, 0x00, 0x00, 0x00, 
44343
  0x2D, 0x03, 0x00, 0x04, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 
44344
  0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 
44345
  0x35, 0x02, 0x04, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x36, 0x03, 0x00, 0x00, 
44346
  0xBF, 0xFF, 0x90, 0xE4, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
44347
  0x0F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xCF, 
44348
  0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
44349
  0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x00, 0x0B, 0xCE, 0x08, 0x63, 0x6F, 
44350
  0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x32, 0x00, 0xDA, 0x81, 
44351
  0x5C, 0x00, 0x32, 0x01, 0xDA, 0x8A, 0x38, 0x00, 0x32, 0x02, 0xDA, 0x7E, 0x03, 0x32, 0x04, 0xDA, 
44352
  0x1E, 0x04, 0x31, 0x03, 0xDA, 0x43, 0x06, 0x31, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44353
  0x30, 0x77, 0x0A, 0x2F, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44354
  0x30, 0x30, 0x30, 0x78, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x79, 
44355
  0x1A, 0x28, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7A, 0x22, 0x28, 0x0D, 0xCF, 
44356
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x41, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 
44357
  0x3B, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 0x00, 0x00, 
44358
  0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x29, 0x00, 0x3A, 0x07, 0x00, 0x03, 
44359
  0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 0x07, 0x00, 
44360
  0x1E, 0x09, 0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 0x0A, 0x00, 
44361
  0x1C, 0x02, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 0x03, 0x00, 
44362
  0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 0x08, 0x0C, 
44363
  0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 0x0C, 0x00, 
44364
  0x09, 0x0E, 0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 
44365
  0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 
44366
  0x27, 0x0E, 0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x26, 0x09, 0x07, 0x00, 
44367
  0x1E, 0x09, 0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 
44368
  0x1C, 0x03, 0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD7, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 
44369
  0x83, 0x79, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44370
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44371
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44372
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44373
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44374
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44375
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0B, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x62, 0x75, 0x69, 
44376
  0x6C, 0x64, 0xDA, 0x89, 0x16, 0xCF, 0x01, 0x3C, 0xDA, 0x80, 0xF4, 0xDA, 0x85, 0x39, 0xDA, 0x85, 
44377
  0x2F, 0xCF, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 0xDA, 0x88, 0x7B, 0xCF, 
44378
  0x08, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
44379
  0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x32, 0x00, 0x0B, 0xCE, 0x08, 0x63, 0x6F, 
44380
  0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0xDA, 0x04, 0xDA, 0x82, 0x69, 0x00, 0x32, 0x00, 0xDA, 0x81, 
44381
  0x5C, 0x00, 0x32, 0x01, 0xDA, 0x8A, 0x43, 0x00, 0x32, 0x02, 0xDA, 0x7E, 0x03, 0x32, 0x04, 0xDA, 
44382
  0x1E, 0x04, 0x31, 0x03, 0xDA, 0x43, 0x06, 0x31, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44383
  0x30, 0x4C, 0x0A, 0x2F, 0x08, 0xDA, 0x80, 0x87, 0x0D, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44384
  0x30, 0x30, 0x30, 0x4D, 0x14, 0x29, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4E, 
44385
  0x1A, 0x28, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x4F, 0x22, 0x28, 0x0D, 0xCF, 
44386
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x50, 0x29, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 
44387
  0x3B, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3F, 0x05, 0x00, 0x00, 
44388
  0x1B, 0x06, 0x05, 0x00, 0x23, 0x05, 0x03, 0x06, 0x1E, 0x05, 0x29, 0x00, 0x3A, 0x07, 0x00, 0x03, 
44389
  0x1B, 0x08, 0x07, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x07, 0x04, 0x09, 0x1B, 0x09, 0x07, 0x00, 
44390
  0x1E, 0x09, 0x05, 0x00, 0x32, 0x04, 0x08, 0x00, 0x35, 0x0A, 0x09, 0x00, 0x1B, 0x07, 0x0A, 0x00, 
44391
  0x1C, 0x02, 0x00, 0x00, 0x28, 0x07, 0x00, 0x00, 0x1B, 0x0A, 0x07, 0x00, 0x1E, 0x0A, 0x03, 0x00, 
44392
  0x1B, 0x07, 0x0A, 0x00, 0x1C, 0x12, 0x00, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x3B, 0x0B, 0x08, 0x0C, 
44393
  0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x06, 0x00, 0x32, 0x08, 0x04, 0x00, 0x35, 0x0D, 0x0C, 0x00, 
44394
  0x09, 0x0E, 0x0D, 0xFF, 0x1B, 0x0B, 0x0E, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 
44395
  0x1B, 0x0D, 0x0B, 0x00, 0x1E, 0x0D, 0x03, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1C, 0x03, 0x00, 0x00, 
44396
  0x27, 0x0E, 0x04, 0x08, 0x1B, 0x0B, 0x0E, 0x00, 0x1B, 0x07, 0x0B, 0x00, 0x22, 0x09, 0x07, 0x00, 
44397
  0x1E, 0x09, 0x03, 0x00, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x00, 
44398
  0x1C, 0x03, 0x00, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xD7, 0xFF, 0xFF, 0x03, 0x02, 0x00, 0x00, 
44399
  0x83, 0x88, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44400
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44401
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44402
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44403
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44404
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44405
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0B, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x61, 0x62, 0x6C, 
44406
  0x65, 0x3F, 0xDA, 0x40, 0xCF, 0x0B, 0x73, 0x63, 0x61, 0x6E, 0x2D, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
44407
  0x72, 0xDA, 0x89, 0x3C, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xD8, 
44408
  0x09, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xCF, 0x08, 0x66, 0x66, 0x69, 0x2F, 
44409
  0x66, 0x72, 0x65, 0x65, 0xD8, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0xCF, 0x08, 
44410
  0x63, 0x6F, 0x6D, 0x70, 0x74, 0x69, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 
44411
  0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x02, 0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x74, 0x69, 0x6D, 
44412
  0x65, 0xDA, 0x04, 0xDA, 0x83, 0x46, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8A, 
44413
  0x51, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8A, 0xFA, 0x03, 
44414
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 
44415
  0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x10, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 
44416
  0x73, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x83, 0x19, 0xDA, 0x83, 0x17, 0xCF, 0x0D, 
44417
  0x67, 0x63, 0x73, 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xD8, 0x0D, 0x67, 
44418
  0x63, 0x73, 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0xCF, 0x0D, 0x6F, 0x73, 
44419
  0x2F, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 
44420
  0x63, 0x72, 0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 
44421
  0x2F, 0x61, 0x74, 0x61, 0x6E, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 
44422
  0xCF, 0x08, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x08, 0x6E, 0x65, 0x74, 0x2F, 
44423
  0x72, 0x65, 0x61, 0x64, 0xDA, 0x85, 0xBC, 0xDA, 0x85, 0xB9, 0xDA, 0x88, 0x00, 0xD7, 0x01, 0xCD, 
44424
  0x00, 0xDC, 0x00, 0x00, 0x0E, 0x03, 0x02, 0x03, 0x09, 0x31, 0x01, 0x25, 0xCE, 0x12, 0x62, 0x75, 
44425
  0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x6D, 0x61, 0x6E, 0x70, 0x61, 0x67, 0x65, 
44426
  0xDA, 0x04, 0xCE, 0x04, 0x6D, 0x61, 0x6E, 0x31, 0xDA, 0x82, 0xE8, 0xDA, 0x82, 0xE9, 0xDA, 0x81, 
44427
  0x25, 0xDA, 0x81, 0x26, 0xDA, 0x89, 0x79, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0x33, 0xDA, 0x89, 0x78, 
44428
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 
44429
  0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 
44430
  0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 
44431
  0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 
44432
  0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 
44433
  0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
44434
  0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 
44435
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 
44436
  0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 
44437
  0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 
44438
  0xF3, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 
44439
  0xFF, 0x00, 0x1A, 0xDA, 0x82, 0xF6, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x82, 0xF7, 0xBF, 0xFF, 0x00, 
44440
  0x1C, 0xDA, 0x82, 0xF8, 0xBF, 0xFF, 0x00, 0x1D, 0xDA, 0x82, 0xF9, 0xBF, 0xFF, 0x00, 0x1E, 0xDA, 
44441
  0x82, 0xE5, 0x00, 0x31, 0x00, 0xDA, 0x81, 0x39, 0x00, 0x31, 0x01, 0xDA, 0x82, 0xFA, 0x00, 0x31, 
44442
  0x02, 0xCF, 0x06, 0x6D, 0x61, 0x6E, 0x73, 0x65, 0x63, 0x00, 0x31, 0x03, 0xDA, 0x88, 0x00, 0x02, 
44443
  0x31, 0x05, 0xDA, 0x81, 0x2A, 0x07, 0x31, 0x07, 0xDA, 0x8A, 0x61, 0x0E, 0x31, 0x08, 0xDA, 0x81, 
44444
  0x2D, 0x2D, 0x05, 0x00, 0x02, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x20, 0x02, 0x03, 
44445
  0x00, 0x2C, 0x06, 0x00, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 
44446
  0x00, 0x32, 0x05, 0x01, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x35, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 
44447
  0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x2C, 0x0A, 0x03, 
44448
  0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x0B, 0x05, 
44449
  0x00, 0x33, 0x0A, 0x05, 0x0B, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x31, 0x0B, 0x00, 
44450
  0x00, 0x2C, 0x0C, 0x07, 0x00, 0x35, 0x0A, 0x0C, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x31, 0x0B, 0x00, 
44451
  0x00, 0x2C, 0x0C, 0x04, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x33, 0x0B, 0x05, 
44452
  0x0C, 0x32, 0x05, 0x07, 0x00, 0x2C, 0x0D, 0x06, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x31, 0x0C, 0x00, 
44453
  0x00, 0x2C, 0x0D, 0x07, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0C, 0x08, 0x00, 0x29, 0x0D, 0x00, 
44454
  0x00, 0x3C, 0x00, 0x0C, 0x0D, 0x2C, 0x0C, 0x05, 0x00, 0x33, 0x0C, 0x05, 0x07, 0x32, 0x05, 0x08, 
44455
  0x00, 0x2C, 0x0D, 0x06, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x33, 0x00, 0x01, 0x0C, 0x2D, 0x0D, 0x00, 
44456
  0x1C, 0x36, 0x0D, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0xBA, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 
44457
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x13, 
44458
  0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0F, 
44459
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 
44460
  0x00, 0x17, 0x00, 0x17, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 
44461
  0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x23, 0x00, 0x23, 0x00, 0x23, 
44462
  0x00, 0x23, 0x00, 0x23, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x01, 0xCF, 0x06, 0x73, 0x74, 
44463
  0x64, 0x65, 0x72, 0x72, 0xD8, 0x06, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0xCF, 0x10, 0x2A, 0x6D, 
44464
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x2A, 0xDA, 0x81, 
44465
  0xA1, 0xDA, 0x80, 0x83, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0B, 0x03, 0x02, 0x03, 0x04, 
44466
  0x1D, 0x00, 0x01, 0x07, 0xCE, 0x06, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 0xDA, 0x04, 0xCE, 0x1B, 
44467
  0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x6C, 0x65, 0x61, 0x73, 
44468
  0x74, 0x20, 0x31, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0xDA, 0x88, 0x42, 0xCE, 0x23, 
44469
  0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 
44470
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
44471
  0x6E, 0x67, 0x73, 0xD1, 0x01, 0xDA, 0x82, 0x91, 0x00, 0x1D, 0x00, 0xDA, 0x83, 0xA7, 0x00, 0x1D, 
44472
  0x01, 0xCF, 0x03, 0x74, 0x72, 0x75, 0x00, 0x1D, 0x02, 0xCF, 0x03, 0x66, 0x61, 0x6C, 0x00, 0x1D, 
44473
  0x03, 0xDA, 0x80, 0x83, 0x01, 0x1D, 0x05, 0xDA, 0x37, 0x17, 0x1D, 0x07, 0xCF, 0x04, 0x66, 0x61, 
44474
  0x6C, 0x32, 0x19, 0x1D, 0x09, 0xDA, 0x8A, 0x06, 0x3F, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 
44475
  0x2B, 0x07, 0x00, 0x00, 0x25, 0x06, 0x07, 0x05, 0x1E, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x00, 0x00, 
44476
  0x01, 0x07, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 
44477
  0x1E, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x01, 0x07, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 
44478
  0x3D, 0x07, 0x07, 0x00, 0x1E, 0x07, 0x07, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 
44479
  0x3D, 0x08, 0x08, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x1C, 0x02, 0x00, 0x00, 
44480
  0x1B, 0x06, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x30, 0x08, 0x00, 0x00, 0x1B, 0x09, 0x08, 0x00, 
44481
  0x2B, 0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x36, 0x09, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
44482
  0x00, 0x0C, 0x01, 0x01, 0x01, 0x05, 0x35, 0x01, 0x0B, 0xDA, 0x8A, 0x07, 0xDA, 0x04, 0xDA, 0x82, 
44483
  0x95, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0x81, 0xDA, 0x5C, 0xDA, 0x80, 0xB3, 0xBF, 0xFF, 0x00, 0x00, 
44484
  0xDA, 0x83, 0xA7, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8A, 0x6A, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8A, 
44485
  0x6B, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0x83, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x37, 0xBF, 0xFF, 
44486
  0x00, 0x07, 0xDA, 0x8A, 0x6C, 0x00, 0x35, 0x00, 0xDA, 0x43, 0x00, 0x35, 0x01, 0xDA, 0x8A, 0x06, 
44487
  0x08, 0x35, 0x04, 0xCF, 0x02, 0x62, 0x6C, 0x0D, 0x35, 0x03, 0xCF, 0x02, 0x62, 0x72, 0x21, 0x35, 
44488
  0x07, 0xDA, 0x80, 0x8B, 0x2E, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x05, 0x47, 0x02, 0x00, 0x03, 
44489
  0x1E, 0x02, 0x03, 0x00, 0x2D, 0x03, 0x00, 0x01, 0x03, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x00, 
44490
  0x3A, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x06, 0x03, 0x05, 0x00, 
44491
  0x2D, 0x06, 0x00, 0x00, 0x3A, 0x05, 0x06, 0x03, 0x1B, 0x03, 0x05, 0x00, 0x31, 0x04, 0x00, 0x00, 
44492
  0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x0E, 0x00, 0x2C, 0x07, 0x01, 0x00, 
44493
  0x33, 0x07, 0x04, 0x03, 0x45, 0x06, 0x00, 0x00, 0x2B, 0x08, 0x02, 0x00, 0x06, 0x07, 0x08, 0x00, 
44494
  0x31, 0x07, 0x00, 0x00, 0x35, 0x08, 0x01, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x33, 0x09, 0x06, 0x08, 
44495
  0x2D, 0x09, 0x00, 0x07, 0x31, 0x09, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 
44496
  0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x09, 0x01, 0x00, 
44497
  0x33, 0x09, 0x06, 0x03, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x33, 0x09, 0x04, 0x07, 
44498
  0x45, 0x06, 0x00, 0x00, 0x2B, 0x0A, 0x02, 0x00, 0x06, 0x09, 0x0A, 0x00, 0x31, 0x09, 0x00, 0x00, 
44499
  0x35, 0x0A, 0x01, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x33, 0x0B, 0x06, 0x0A, 0x45, 0x09, 0x00, 0x00, 
44500
  0x2C, 0x0A, 0x02, 0x00, 0x33, 0x0A, 0x08, 0x09, 0x2D, 0x0A, 0x00, 0x07, 0x31, 0x0A, 0x00, 0x00, 
44501
  0x45, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x82, 0xF9, 0x03, 0x01, 0x09, 0x00, 
44502
  0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x1E, 0x00, 
44503
  0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x09, 0x01, 
44504
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0B, 0x00, 
44505
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x16, 0x00, 
44506
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x27, 0x00, 0x27, 0x00, 
44507
  0x22, 0x00, 0x22, 0xBF, 0xFF, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
44508
  0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x82, 0xF5, 0x0C, 0x00, 0x03, 0x01, 0x07, 0x00, 0x07, 0x00, 
44509
  0x03, 0x00, 0x11, 0x00, 0x11, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x12, 0x00, 
44510
  0x12, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 
44511
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x0B, 0x03, 0x00, 0x03, 0x00, 
44512
  0x03, 0xA3, 0x00, 0x00, 0x00, 0xDA, 0x80, 0xCA, 0xDA, 0x88, 0x18, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 
44513
  0x67, 0x65, 0x74, 0x70, 0x69, 0x64, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x69, 
44514
  0x64, 0xCF, 0x07, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
44515
  0x00, 0x0A, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x12, 0x00, 0x05, 0xCE, 0x07, 0x61, 
44516
  0x73, 0x73, 0x65, 0x72, 0x74, 0x66, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x81, 0x49, 
44517
  0xDA, 0x82, 0x81, 0xDA, 0x80, 0xB3, 0x00, 0x12, 0x00, 0xDA, 0x1E, 0x00, 0x12, 0x01, 0xDA, 0x81, 
44518
  0x4C, 0x00, 0x12, 0x02, 0xDA, 0x81, 0x4D, 0x00, 0x12, 0x03, 0xDA, 0x8A, 0x71, 0x02, 0x12, 0x05, 
44519
  0xDA, 0x46, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 0x07, 
44520
  0x01, 0x00, 0x33, 0x07, 0x05, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x32, 0x08, 
44521
  0x01, 0x00, 0x34, 0x02, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 
44522
  0x05, 0x05, 0x31, 0x07, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 
44523
  0x06, 0x08, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x80, 0xD5, 0x0A, 0x00, 0x0A, 0x00, 
44524
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44525
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
44526
  0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
44527
  0x72, 0x6E, 0x67, 0xCF, 0x05, 0x65, 0x70, 0x72, 0x69, 0x6E, 0xDA, 0x84, 0x65, 0xCF, 0x06, 0x2A, 
44528
  0x65, 0x78, 0x69, 0x74, 0x2A, 0xDA, 0x85, 0x49, 0xDA, 0x85, 0xCE, 0xDA, 0x85, 0xCC, 0xCF, 0x03, 
44529
  0x63, 0x68, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x03, 0x14, 
44530
  0x00, 0x03, 0xCE, 0x03, 0x63, 0x68, 0x72, 0xDA, 0x04, 0xDA, 0x82, 0x30, 0xCE, 0x23, 0x65, 0x78, 
44531
  0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 
44532
  0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x31, 0x2C, 0x20, 0x67, 0x6F, 0x74, 0x20, 0x25, 
44533
  0x76, 0xDA, 0x81, 0x4B, 0x00, 0x14, 0x00, 0xDA, 0x83, 0x1D, 0x00, 0x14, 0x01, 0xDA, 0x8A, 0x78, 
44534
  0x03, 0x0A, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x37, 0x31, 0x00, 0x00, 0x00, 
44535
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x03, 0x05, 0x00, 
44536
  0x3F, 0x05, 0x00, 0x00, 0x26, 0x06, 0x05, 0x01, 0x1B, 0x02, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 
44537
  0x1B, 0x02, 0x04, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 
44538
  0x32, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x01, 0x03, 0x00, 0x00, 
44539
  0x2B, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x81, 0x9B, 0x10, 0x00, 
44540
  0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
44541
  0x0B, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 
44542
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 
44543
  0x65, 0x6E, 0x76, 0xDA, 0x84, 0x38, 0xDA, 0x82, 0x22, 0xDA, 0x82, 0x20, 0xCF, 0x0B, 0x70, 0x65, 
44544
  0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0xD8, 0x0B, 0x70, 0x65, 0x67, 0x2F, 0x72, 
44545
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0xDA, 0x81, 0x4E, 0xDA, 0x81, 0x49, 0xDA, 0x85, 0x19, 0xDA, 
44546
  0x85, 0x16, 0xCF, 0x06, 0x74, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
44547
  0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x07, 0x00, 0x02, 0xCE, 0x06, 0x74, 0x6F, 0x67, 0x67, 0x6C, 
44548
  0x65, 0xDA, 0x04, 0xDA, 0x82, 0x51, 0xDA, 0x82, 0x5C, 0x00, 0x07, 0x00, 0xDA, 0x83, 0xCE, 0x00, 
44549
  0x07, 0x01, 0xDA, 0x8A, 0x80, 0x2C, 0x03, 0x00, 0x00, 0x32, 0x03, 0x00, 0x00, 0x45, 0x02, 0x00, 
44550
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x04, 0x00, 0x02, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
44551
  0x00, 0x53, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
44552
  0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 0x74, 
44553
  0x65, 0xD8, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 
44554
  0x79, 0x74, 0x65, 0xCF, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 
44555
  0x2D, 0x75, 0x69, 0x6E, 0x74, 0x36, 0x34, 0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
44556
  0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x36, 0x34, 0xCF, 0x0E, 0x62, 0x75, 0x66, 
44557
  0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0xD8, 0x0E, 0x62, 0x75, 0x66, 
44558
  0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0xCF, 0x05, 0x76, 0x61, 0x72, 
44559
  0x66, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x16, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
44560
  0xFF, 0x12, 0x66, 0x00, 0x0D, 0xCE, 0x05, 0x76, 0x61, 0x72, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x86, 
44561
  0x75, 0xDA, 0x82, 0xE9, 0xDA, 0x2C, 0xDA, 0x83, 0x4E, 0xDA, 0x82, 0x30, 0xDA, 0x06, 0xCE, 0x11, 
44562
  0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 
44563
  0x20, 0xDA, 0x81, 0x28, 0xDA, 0x5C, 0xDA, 0x82, 0x98, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0xC7, 0xCF, 
44564
  0x02, 0x6F, 0x72, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0xC9, 0xDA, 0x83, 0x86, 0xDA, 0x85, 0x0A, 0xDA, 
44565
  0x83, 0xF7, 0x00, 0x66, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x66, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x66, 
44566
  0x02, 0xDA, 0x8A, 0x89, 0x04, 0x66, 0x04, 0xCF, 0x09, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x73, 0x69, 
44567
  0x6F, 0x6E, 0x08, 0x66, 0x06, 0xCF, 0x05, 0x66, 0x62, 0x6F, 0x64, 0x79, 0x0E, 0x66, 0x08, 0xDA, 
44568
  0x86, 0x7B, 0x10, 0x66, 0x0A, 0xCF, 0x08, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x10, 
44569
  0x2C, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x54, 0x13, 0x2C, 0x0C, 0xCF, 0x07, 
44570
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x53, 0x16, 0x2C, 0x0D, 0xDA, 0x82, 0x3C, 0x2E, 0x66, 0x0C, 
44571
  0xDA, 0x82, 0xCC, 0x31, 0x66, 0x0D, 0xCF, 0x09, 0x6F, 0x6C, 0x64, 0x2D, 0x65, 0x6E, 0x74, 0x72, 
44572
  0x79, 0x34, 0x66, 0x0E, 0xDA, 0x31, 0x31, 0x00, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x04, 
44573
  0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x06, 
44574
  0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2B, 0x07, 0x02, 0x00, 0x2B, 0x08, 
44575
  0xFE, 0xFF, 0x33, 0x04, 0x07, 0x08, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 
44576
  0x07, 0x00, 0x44, 0x09, 0x00, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x49, 0x0B, 
44577
  0x08, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 0x18, 0x00, 0x3A, 0x0B, 0x08, 0x0C, 0x1B, 0x0D, 
44578
  0x0B, 0x00, 0x31, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 0x03, 0x00, 0x35, 0x0B, 0x0E, 0x00, 0x1E, 0x0B, 
44579
  0x04, 0x00, 0x29, 0x0E, 0x00, 0x00, 0x3C, 0x0A, 0x0D, 0x0E, 0x1C, 0x0D, 0x00, 0x00, 0x31, 0x0D, 
44580
  0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1E, 0x0E, 0x04, 0x00, 0x2C, 0x0F, 
44581
  0x05, 0x00, 0x3C, 0x0A, 0x0F, 0x0D, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x32, 0x0F, 
44582
  0x0D, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x01, 0x0F, 0x00, 0x00, 0x49, 0x0C, 
44583
  0x08, 0x0C, 0x1C, 0xE9, 0xFF, 0xFF, 0x2C, 0x0C, 0x08, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 
44584
  0x0B, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x2C, 0x0E, 
44585
  0x08, 0x00, 0x35, 0x0B, 0x0E, 0x00, 0x1B, 0x0E, 0x0B, 0x00, 0x2C, 0x0F, 0x09, 0x00, 0x32, 0x0F, 
44586
  0x00, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x10, 0x0A, 0x00, 0x32, 0x10, 0x0B, 0x00, 0x45, 0x0F, 
44587
  0x00, 0x00, 0x32, 0x0D, 0x0F, 0x00, 0x46, 0x0B, 0x00, 0x00, 0x28, 0x10, 0x00, 0x00, 0x31, 0x10, 
44588
  0x00, 0x00, 0x40, 0x0F, 0x00, 0x00, 0x2C, 0x11, 0x0B, 0x00, 0x32, 0x11, 0x0F, 0x00, 0x44, 0x10, 
44589
  0x00, 0x00, 0x2C, 0x11, 0x0C, 0x00, 0x33, 0x11, 0x0D, 0x10, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x11, 
44590
  0x0D, 0x00, 0x33, 0x11, 0x0C, 0x0F, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x11, 0x09, 0x00, 0x32, 0x11, 
44591
  0x00, 0x00, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x12, 0x0E, 0x00, 0x33, 0x12, 0x0F, 0x0C, 0x45, 0x11, 
44592
  0x00, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x33, 0x12, 0x0E, 0x06, 0x45, 0x0F, 0x00, 0x00, 0x2C, 0x13, 
44593
  0x0B, 0x00, 0x2B, 0x14, 0x00, 0x00, 0x32, 0x13, 0x14, 0x00, 0x46, 0x12, 0x00, 0x00, 0x2C, 0x14, 
44594
  0x0F, 0x00, 0x33, 0x14, 0x0C, 0x12, 0x31, 0x0E, 0x00, 0x00, 0x45, 0x13, 0x00, 0x00, 0x2C, 0x14, 
44595
  0x09, 0x00, 0x32, 0x14, 0x0A, 0x00, 0x45, 0x12, 0x00, 0x00, 0x2C, 0x15, 0x10, 0x00, 0x33, 0x15, 
44596
  0x0C, 0x12, 0x45, 0x14, 0x00, 0x00, 0x2C, 0x15, 0x11, 0x00, 0x33, 0x15, 0x0B, 0x10, 0x33, 0x11, 
44597
  0x0F, 0x13, 0x32, 0x14, 0x0E, 0x00, 0x45, 0x12, 0x00, 0x00, 0x03, 0x12, 0x00, 0x00, 0x89, 0x3E, 
44598
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
44599
  0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x03, 0x00, 
44600
  0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 0x07, 0x00, 
44601
  0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x01, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0x00, 
44602
  0x07, 0x00, 0x07, 0xBF, 0xFE, 0x05, 0x02, 0x13, 0x00, 0x13, 0xBF, 0xFE, 0x05, 0x03, 0x0E, 0x00, 
44603
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0xBF, 0xFC, 0x03, 0x00, 0x03, 0x05, 0x03, 0x00, 0x03, 
44604
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 
44605
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44606
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44607
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44608
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44609
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44610
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44611
  0xCF, 0x12, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2D, 0x75, 0x6E, 
44612
  0x70, 0x61, 0x63, 0x6B, 0xD8, 0x12, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 
44613
  0x73, 0x2D, 0x75, 0x6E, 0x70, 0x61, 0x63, 0x6B, 0xDA, 0x89, 0x1E, 0xDA, 0x89, 0x1A, 0xCF, 0x0A, 
44614
  0x6F, 0x73, 0x2F, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0xD8, 0x0A, 0x6F, 0x73, 0x2F, 0x65, 
44615
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0xCF, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 
44616
  0x64, 0x6F, 0x77, 0x6E, 0xD8, 0x0C, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6F, 
44617
  0x77, 0x6E, 0xCF, 0x03, 0x66, 0x6F, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x08, 0x03, 
44618
  0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x08, 0x00, 0x05, 0xCE, 0x03, 0x66, 0x6F, 0x72, 0xDA, 
44619
  0x04, 0xDA, 0x80, 0xF4, 0xDA, 0x82, 0x78, 0xDA, 0x84, 0x0A, 0x00, 0x08, 0x00, 0xDA, 0x43, 0x00, 
44620
  0x08, 0x01, 0xDA, 0x35, 0x00, 0x08, 0x02, 0xDA, 0x82, 0x82, 0x00, 0x08, 0x03, 0xDA, 0x80, 0xC7, 
44621
  0x00, 0x08, 0x04, 0xDA, 0x8A, 0x9A, 0x33, 0x00, 0x01, 0x02, 0x2B, 0x05, 0x01, 0x00, 0x2C, 0x06, 
44622
  0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x33, 0x05, 0x06, 0x07, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 
44623
  0x02, 0x00, 0x36, 0x05, 0x00, 0x00, 0x82, 0x36, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44624
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
44625
  0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0xD8, 0x12, 0x73, 0x74, 0x72, 
44626
  0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0xCF, 
44627
  0x05, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x86, 0x66, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x68, 
44628
  0x6D, 0x6F, 0x64, 0xDA, 0x81, 0x5F, 0xDA, 0x82, 0xF2, 0xDA, 0x89, 0x6A, 0xCF, 0x08, 0x66, 0x66, 
44629
  0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xD8, 0x08, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 
44630
  0xCF, 0x04, 0x6E, 0x61, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 
44631
  0x01, 0x00, 0x02, 0x00, 0x02, 0xCE, 0x04, 0x6E, 0x61, 0x6E, 0x3F, 0xDA, 0x04, 0x00, 0x02, 0x00, 
44632
  0xDA, 0x1E, 0x00, 0x02, 0x01, 0xDA, 0x8A, 0xA3, 0x4A, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 
44633
  0x64, 0x25, 0x00, 0x25, 0xCF, 0x0D, 0x2A, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x69, 
44634
  0x6E, 0x67, 0x2A, 0xDA, 0x86, 0x23, 0xCF, 0x08, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x74, 
44635
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
44636
  0x08, 0x00, 0x03, 0xCE, 0x08, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x74, 0xDA, 0x04, 0xDA, 
44637
  0x80, 0xB3, 0xDA, 0x80, 0x83, 0x00, 0x08, 0x00, 0xDA, 0x83, 0xA7, 0x00, 0x08, 0x01, 0xDA, 0x80, 
44638
  0xC7, 0x00, 0x08, 0x02, 0xDA, 0x8A, 0xA7, 0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 
44639
  0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 
44640
  0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x83, 0x09, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
44641
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x07, 0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 
44642
  0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
44643
  0x01, 0x06, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0xDA, 0x04, 0xDA, 
44644
  0x82, 0x5D, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x06, 0x01, 0xDA, 0x8A, 0xAA, 0x2C, 0x03, 
44645
  0x00, 0x00, 0x29, 0x04, 0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x45, 0x02, 
44646
  0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x82, 0x4B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44647
  0x03, 0x00, 0x03, 0xCF, 0x10, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 
44648
  0x74, 0x72, 0x61, 0x63, 0x65, 0xDA, 0x84, 0xE3, 0xCF, 0x03, 0x64, 0x69, 0x76, 0xD7, 0x00, 0xCD, 
44649
  0x00, 0x09, 0x00, 0x21, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x03, 
44650
  0x64, 0x69, 0x76, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 
44651
  0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 
44652
  0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x0D, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 
44653
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x0D, 0x03, 0x03, 0x04, 0x05, 
44654
  0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 
44655
  0x02, 0x2A, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
44656
  0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2A, 0x3D, 0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 
44657
  0x09, 0x00, 0x0B, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xDA, 0x84, 0x64, 
44658
  0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 
44659
  0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 
44660
  0x3D, 0x04, 0x00, 0x00, 0x0A, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 
44661
  0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x0A, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 
44662
  0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xDA, 0x82, 0x5C, 0x00, 
44663
  0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x02, 0x00, 0x08, 0x02, 0xDA, 0x8A, 0xB1, 
44664
  0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 
44665
  0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 
44666
  0x80, 0x8F, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 
44667
  0x3A, 0xCF, 0x07, 0x70, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
44668
  0x00, 0x09, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 0x23, 0x00, 0x04, 0xCE, 0x07, 0x70, 
44669
  0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 0xAE, 0xD0, 0x07, 0x70, 
44670
  0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0xDA, 0x80, 0xDC, 0xDA, 0x81, 0x8D, 0xDA, 0x83, 0x43, 0xDA, 
44671
  0x80, 0xDE, 0xDA, 0x82, 0x56, 0xDA, 0x0E, 0xDA, 0x83, 0xF7, 0x00, 0x23, 0x00, 0xDA, 0x80, 0xC7, 
44672
  0x00, 0x23, 0x01, 0xDA, 0x8A, 0xB5, 0x02, 0x23, 0x03, 0xDA, 0x31, 0x05, 0x23, 0x04, 0xDA, 0x82, 
44673
  0xCD, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x04, 0x00, 
44674
  0x00, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x01, 
44675
  0x00, 0x2C, 0x07, 0x02, 0x00, 0x33, 0x06, 0x07, 0x02, 0x34, 0x00, 0x00, 0x00, 0x45, 0x05, 0x00, 
44676
  0x00, 0x2C, 0x06, 0x03, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x33, 0x06, 0x05, 0x07, 0x45, 0x02, 0x00, 
44677
  0x00, 0x2C, 0x06, 0x05, 0x00, 0x32, 0x06, 0x03, 0x00, 0x45, 0x05, 0x00, 0x00, 0x33, 0x03, 0x02, 
44678
  0x04, 0x31, 0x05, 0x00, 0x00, 0x46, 0x06, 0x00, 0x00, 0x2C, 0x05, 0x06, 0x00, 0x32, 0x05, 0x03, 
44679
  0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x33, 0x07, 0x08, 
44680
  0x02, 0x45, 0x05, 0x00, 0x00, 0x32, 0x05, 0x04, 0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x07, 0x09, 
44681
  0x00, 0x33, 0x07, 0x06, 0x02, 0x45, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x81, 0x2D, 0x0B, 
44682
  0x00, 0x0B, 0x00, 0x03, 0x00, 0x16, 0x00, 0x16, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
44683
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44684
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44685
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
44686
  0x00, 0x05, 0x00, 0x05, 0xCF, 0x08, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 0xD7, 0x00, 
44687
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0B, 0x00, 
44688
  0x03, 0xCE, 0x08, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x80, 0xAE, 
44689
  0xD0, 0x08, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 0xD2, 0x00, 0x01, 0xDA, 0x82, 0xB5, 
44690
  0xDA, 0x80, 0xDC, 0x00, 0x0B, 0x00, 0xCF, 0x05, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x00, 0x0B, 0x01, 
44691
  0xDA, 0x80, 0xC7, 0x00, 0x0B, 0x02, 0xDA, 0x8A, 0xB9, 0x2C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 
44692
  0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x03, 0x04, 0x05, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x03, 
44693
  0x00, 0x35, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x04, 0x00, 0x33, 0x04, 0x03, 0x00, 0x2C, 0x04, 0x03, 
44694
  0x00, 0x36, 0x04, 0x00, 0x00, 0x82, 0xC6, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
44695
  0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0C, 0x6D, 0x6F, 
44696
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
44697
  0x00, 0x0C, 0x03, 0x02, 0x03, 0x04, 0x1D, 0x00, 0x09, 0xCE, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
44698
  0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 0x04, 0xDA, 0x08, 0xDA, 0x82, 0xC7, 0xDA, 0x85, 
44699
  0xEC, 0xDA, 0x86, 0x3D, 0x00, 0x1D, 0x00, 0xDA, 0x87, 0x9E, 0x00, 0x1D, 0x01, 0xDA, 0x80, 0x8B, 
44700
  0x00, 0x1D, 0x02, 0xCF, 0x07, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x00, 0x1D, 0x03, 0xDA, 
44701
  0x8A, 0xBF, 0x01, 0x1D, 0x05, 0xDA, 0x82, 0xCC, 0x05, 0x1C, 0x07, 0xDA, 0x46, 0x08, 0x1C, 0x08, 
44702
  0xDA, 0x82, 0xCD, 0x0B, 0x1C, 0x09, 0xDA, 0x15, 0x0F, 0x17, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44703
  0x30, 0x30, 0x35, 0x77, 0x3B, 0x04, 0x00, 0x01, 0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x1A, 0x00, 
44704
  0x2C, 0x07, 0x00, 0x00, 0x3A, 0x06, 0x05, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x2C, 0x08, 0x01, 0x00, 
44705
  0x3A, 0x06, 0x05, 0x08, 0x1B, 0x08, 0x06, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x3A, 0x06, 0x05, 0x09, 
44706
  0x1B, 0x09, 0x06, 0x00, 0x1E, 0x09, 0x04, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 
44707
  0x04, 0x00, 0x00, 0x00, 0x1E, 0x08, 0x06, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0B, 0x03, 0x00, 
44708
  0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x06, 0x0A, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x06, 0x08, 0x00, 
44709
  0x1E, 0x06, 0x04, 0x00, 0x2B, 0x0B, 0x00, 0x00, 0x3B, 0x0A, 0x08, 0x0B, 0x03, 0x0A, 0x00, 0x00, 
44710
  0x03, 0x07, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x9D, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x01, 
44711
  0x0D, 0x00, 0x0D, 0x00, 0x05, 0x01, 0x0D, 0x00, 0x0D, 0xBF, 0xFF, 0x05, 0x02, 0x0D, 0x00, 0x0D, 
44712
  0xBF, 0xFE, 0x05, 0x03, 0x07, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x1D, 0x01, 0x0B, 0x00, 0x12, 0x00, 
44713
  0x12, 0x00, 0x12, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 
44714
  0x09, 0xBF, 0xFF, 0x07, 0xBF, 0xFB, 0x03, 0xCF, 0x02, 0x3E, 0x3D, 0xDA, 0x84, 0x19, 0xCF, 0x09, 
44715
  0x65, 0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xD8, 0x09, 0x65, 0x76, 0x2F, 0x73, 0x65, 
44716
  0x6C, 0x65, 0x63, 0x74, 0xCF, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x61, 0x64, 0xDA, 
44717
  0x81, 0x59, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0xDA, 0x84, 
44718
  0x88, 0xCF, 0x0C, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xD8, 
44719
  0x0C, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xCF, 0x10, 0x73, 
44720
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x65, 0x74, 0xDA, 
44721
  0x89, 0x6F, 0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 
44722
  0xDA, 0x81, 0xB3, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xD8, 
44723
  0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0xCF, 0x09, 0x6D, 0x61, 0x74, 
44724
  0x68, 0x2F, 0x73, 0x69, 0x6E, 0x68, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 
44725
  0x68, 0xDA, 0x85, 0x40, 0xDA, 0x85, 0x3B, 0xCF, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 
44726
  0x79, 0x70, 0x65, 0xDA, 0x75, 0xCF, 0x0D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 
44727
  0x72, 0x6D, 0x61, 0x74, 0xDA, 0x81, 0x4B, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 
44728
  0x61, 0x6E, 0x32, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x32, 0xDA, 
44729
  0x85, 0xDF, 0xDA, 0x85, 0xDD, 0xCF, 0x05, 0x73, 0x74, 0x64, 0x69, 0x6E, 0xDA, 0x89, 0x11, 0xCF, 
44730
  0x08, 0x65, 0x76, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xD8, 0x08, 0x65, 0x76, 0x2F, 0x77, 0x72, 
44731
  0x69, 0x74, 0x65, 0xCF, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x61, 
44732
  0x64, 0x64, 0xD8, 0x0D, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 
44733
  0x64, 0xCF, 0x0A, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0xD8, 0x0A, 0x74, 
44734
  0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0xCF, 0x04, 0x6B, 0x65, 0x65, 0x70, 0xD7, 
44735
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x17, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x80, 
44736
  0xB3, 0x00, 0x2F, 0xCE, 0x04, 0x6B, 0x65, 0x65, 0x70, 0xDA, 0x04, 0xDA, 0x30, 0xDA, 0x2F, 0x00, 
44737
  0x80, 0xB3, 0x00, 0xDA, 0x82, 0x1A, 0x00, 0x80, 0xB3, 0x01, 0xDA, 0x33, 0x00, 0x80, 0xB3, 0x02, 
44738
  0xDA, 0x81, 0xFA, 0x00, 0x80, 0xB3, 0x03, 0xDA, 0x8A, 0xDC, 0x01, 0x80, 0xB3, 0x05, 0xDA, 0x7E, 
44739
  0x03, 0x80, 0xB2, 0x07, 0xDA, 0x81, 0xFC, 0x03, 0x80, 0xB2, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
44740
  0x30, 0x30, 0x31, 0x50, 0x05, 0x15, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x52, 
44741
  0x08, 0x15, 0x09, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x51, 0x0B, 0x15, 0x0A, 0xDA, 
44742
  0x1E, 0x0E, 0x13, 0x0B, 0xDA, 0x80, 0x87, 0x19, 0x30, 0x0A, 0xDA, 0x82, 0x00, 0x1A, 0x30, 0x09, 
44743
  0xDA, 0x82, 0x01, 0x1A, 0x30, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x54, 0x1D, 
44744
  0x30, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x53, 0x20, 0x30, 0x0D, 0xDA, 0x1E, 
44745
  0x29, 0x2E, 0x0B, 0xDA, 0x80, 0x87, 0x34, 0x54, 0x0B, 0xDA, 0x82, 0x00, 0x36, 0x54, 0x0C, 0xDA, 
44746
  0x82, 0x04, 0x37, 0x54, 0x0A, 0xDA, 0x82, 0x01, 0x38, 0x54, 0x0D, 0xDA, 0x82, 0x05, 0x38, 0x54, 
44747
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x56, 0x3B, 0x54, 0x0F, 0xCF, 0x07, 0x5F, 
44748
  0x30, 0x30, 0x30, 0x30, 0x31, 0x55, 0x3E, 0x54, 0x10, 0xDA, 0x1E, 0x4D, 0x52, 0x0E, 0xDA, 0x80, 
44749
  0x87, 0x58, 0x80, 0x82, 0x0C, 0xDA, 0x82, 0x00, 0x5A, 0x80, 0x82, 0x0D, 0xDA, 0x82, 0x04, 0x5C, 
44750
  0x80, 0x82, 0x0E, 0xDA, 0x82, 0x08, 0x5D, 0x80, 0x82, 0x0B, 0xDA, 0x82, 0x01, 0x5E, 0x80, 0x82, 
44751
  0x0F, 0xDA, 0x82, 0x05, 0x5F, 0x80, 0x82, 0x10, 0xDA, 0x82, 0x09, 0x5F, 0x80, 0x82, 0x01, 0xCF, 
44752
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x58, 0x62, 0x80, 0x82, 0x12, 0xCF, 0x07, 0x5F, 0x30, 
44753
  0x30, 0x30, 0x30, 0x31, 0x57, 0x65, 0x80, 0x82, 0x13, 0xDA, 0x1E, 0x7B, 0x80, 0x80, 0x11, 0xDA, 
44754
  0x80, 0x87, 0x80, 0x86, 0x80, 0xB2, 0x0C, 0xDA, 0x82, 0x0C, 0x80, 0x8A, 0x80, 0xB2, 0x0D, 0xDA, 
44755
  0x82, 0x0D, 0x80, 0x8B, 0x80, 0xB2, 0x0B, 0xDA, 0x82, 0x0E, 0x80, 0x8B, 0x80, 0xB2, 0x01, 0xCF, 
44756
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x31, 0x5A, 0x80, 0x8E, 0x80, 0xB2, 0x0F, 0xCF, 0x07, 0x5F, 
44757
  0x30, 0x30, 0x30, 0x30, 0x31, 0x59, 0x80, 0x91, 0x80, 0xB2, 0x10, 0xDA, 0x1E, 0x80, 0x92, 0x80, 
44758
  0xA6, 0x0E, 0xDA, 0x43, 0x80, 0x92, 0x80, 0xA6, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44759
  0x32, 0x30, 0x80, 0x96, 0x80, 0xA4, 0x13, 0xDA, 0x82, 0x12, 0x80, 0x98, 0x80, 0xA4, 0x14, 0xDA, 
44760
  0x82, 0x13, 0x80, 0x9A, 0x80, 0xA4, 0x15, 0xDA, 0x82, 0x14, 0x80, 0xAB, 0x80, 0xB0, 0x11, 0xDA, 
44761
  0x80, 0x87, 0x40, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3F, 0x06, 0x02, 0x00, 0x1B, 0x07, 
44762
  0x06, 0x00, 0x26, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x11, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 
44763
  0x01, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x1F, 0x09, 0x0C, 0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 
44764
  0x08, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x08, 0x00, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x1E, 0x08, 
44765
  0x04, 0x00, 0x32, 0x05, 0x0B, 0x00, 0x2C, 0x0D, 0x00, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x49, 0x09, 
44766
  0x01, 0x09, 0x1C, 0xF5, 0xFF, 0xFF, 0x1C, 0x9D, 0x00, 0x00, 0x26, 0x08, 0x07, 0x01, 0x1E, 0x08, 
44767
  0x1A, 0x00, 0x3D, 0x09, 0x02, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0C, 
44768
  0x00, 0x00, 0x49, 0x0B, 0x01, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1F, 0x0C, 0x12, 0x00, 0x3A, 0x0B, 
44769
  0x01, 0x0C, 0x1B, 0x0D, 0x0B, 0x00, 0x49, 0x09, 0x0A, 0x09, 0x28, 0x0E, 0x00, 0x00, 0x25, 0x0B, 
44770
  0x0E, 0x09, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x0B, 0x00, 0x00, 0x3A, 0x0B, 0x0A, 0x09, 0x32, 0x0D, 
44771
  0x0B, 0x00, 0x35, 0x0E, 0x00, 0x00, 0x1B, 0x0B, 0x0E, 0x00, 0x1E, 0x0E, 0x04, 0x00, 0x32, 0x05, 
44772
  0x0B, 0x00, 0x2C, 0x10, 0x00, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x49, 0x0C, 0x01, 0x0C, 0x1C, 0xEF, 
44773
  0xFF, 0xFF, 0x1C, 0x82, 0x00, 0x00, 0x26, 0x09, 0x07, 0x02, 0x1E, 0x09, 0x23, 0x00, 0x3D, 0x0A, 
44774
  0x02, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x3D, 0x0A, 0x02, 0x01, 0x1B, 0x0C, 0x0A, 0x00, 0x28, 0x0A, 
44775
  0x00, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 
44776
  0x0E, 0x00, 0x1F, 0x0F, 0x18, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 0x00, 0x49, 0x0A, 
44777
  0x0B, 0x0A, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 0x0A, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x11, 
44778
  0x00, 0x00, 0x49, 0x0D, 0x0C, 0x0D, 0x28, 0x11, 0x00, 0x00, 0x25, 0x0E, 0x11, 0x0D, 0x1E, 0x0E, 
44779
  0x02, 0x00, 0x1C, 0x0C, 0x00, 0x00, 0x3A, 0x0E, 0x0B, 0x0A, 0x3A, 0x11, 0x0C, 0x0D, 0x33, 0x10, 
44780
  0x0E, 0x11, 0x35, 0x12, 0x00, 0x00, 0x1B, 0x0E, 0x12, 0x00, 0x1E, 0x12, 0x04, 0x00, 0x32, 0x05, 
44781
  0x0E, 0x00, 0x2C, 0x13, 0x00, 0x00, 0x35, 0x11, 0x13, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xE9, 
44782
  0xFF, 0xFF, 0x1C, 0x5E, 0x00, 0x00, 0x26, 0x0A, 0x07, 0x03, 0x1E, 0x0A, 0x2D, 0x00, 0x3D, 0x0B, 
44783
  0x02, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x3D, 0x0B, 0x02, 0x01, 0x1B, 0x0D, 0x0B, 0x00, 0x3D, 0x0B, 
44784
  0x02, 0x02, 0x1B, 0x0E, 0x0B, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x28, 0x10, 
44785
  0x00, 0x00, 0x28, 0x12, 0x00, 0x00, 0x49, 0x11, 0x01, 0x12, 0x1B, 0x12, 0x11, 0x00, 0x1F, 0x12, 
44786
  0x1F, 0x00, 0x3A, 0x11, 0x01, 0x12, 0x1B, 0x13, 0x11, 0x00, 0x49, 0x0B, 0x0C, 0x0B, 0x28, 0x14, 
44787
  0x00, 0x00, 0x25, 0x11, 0x14, 0x0B, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x18, 0x00, 0x00, 0x49, 0x0F, 
44788
  0x0D, 0x0F, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x0F, 0x1E, 0x11, 0x02, 0x00, 0x1C, 0x13, 
44789
  0x00, 0x00, 0x49, 0x10, 0x0E, 0x10, 0x28, 0x14, 0x00, 0x00, 0x25, 0x11, 0x14, 0x10, 0x1E, 0x11, 
44790
  0x02, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x3A, 0x11, 0x0C, 0x0B, 0x3A, 0x14, 0x0D, 0x0F, 0x3A, 0x15, 
44791
  0x0E, 0x10, 0x33, 0x13, 0x11, 0x14, 0x31, 0x15, 0x00, 0x00, 0x35, 0x16, 0x00, 0x00, 0x1B, 0x11, 
44792
  0x16, 0x00, 0x1E, 0x16, 0x04, 0x00, 0x32, 0x05, 0x11, 0x00, 0x2C, 0x15, 0x00, 0x00, 0x35, 0x14, 
44793
  0x15, 0x00, 0x49, 0x12, 0x01, 0x12, 0x1C, 0xE2, 0xFF, 0xFF, 0x1C, 0x30, 0x00, 0x00, 0x31, 0x07, 
44794
  0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x07, 
44795
  0x00, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x2A, 0x0B, 
44796
  0x00, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x01, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 
44797
  0x23, 0x00, 0x3A, 0x0E, 0x01, 0x0F, 0x1B, 0x10, 0x0E, 0x00, 0x2B, 0x0E, 0x00, 0x00, 0x23, 0x11, 
44798
  0x0E, 0x07, 0x1E, 0x11, 0x12, 0x00, 0x3A, 0x12, 0x0C, 0x0E, 0x1B, 0x13, 0x12, 0x00, 0x3A, 0x12, 
44799
  0x02, 0x0E, 0x1B, 0x14, 0x12, 0x00, 0x49, 0x12, 0x14, 0x13, 0x1B, 0x15, 0x12, 0x00, 0x28, 0x16, 
44800
  0x00, 0x00, 0x25, 0x12, 0x16, 0x15, 0x1E, 0x12, 0x04, 0x00, 0x29, 0x0B, 0x00, 0x00, 0x1C, 0x07, 
44801
  0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x3C, 0x0C, 0x0E, 0x15, 0x3A, 0x16, 0x14, 0x15, 0x3C, 0x0D, 
44802
  0x0E, 0x16, 0x05, 0x0E, 0x0E, 0x01, 0x1C, 0xEE, 0xFF, 0xFF, 0x1E, 0x0B, 0x02, 0x00, 0x1C, 0x0B, 
44803
  0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x34, 0x0D, 0x00, 0x00, 0x35, 0x0E, 0x00, 0x00, 0x1B, 0x11, 
44804
  0x0E, 0x00, 0x1E, 0x0E, 0x04, 0x00, 0x32, 0x05, 0x11, 0x00, 0x2C, 0x13, 0x00, 0x00, 0x35, 0x12, 
44805
  0x13, 0x00, 0x49, 0x0F, 0x01, 0x0F, 0x1C, 0xDE, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x84, 0x83, 
44806
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44807
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44808
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44809
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44810
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44811
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44812
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44813
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44814
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44815
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44816
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44817
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44818
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44819
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44820
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44821
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44822
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44823
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44824
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44825
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44826
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44827
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
44828
  0x03, 0x00, 0x03, 0xBF, 0xF4, 0x01, 0xCF, 0x0B, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x73, 0x6C, 
44829
  0x69, 0x63, 0x65, 0xDA, 0x88, 0x69, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x74, 
44830
  0x72, 0x69, 0x6D, 0xDA, 0x81, 0x5E, 0xCF, 0x08, 0x68, 0x61, 0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 
44831
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x00, 0x04, 0x00, 0x03, 0xCE, 
44832
  0x08, 0x68, 0x61, 0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 0xDA, 0x04, 0x00, 0x04, 0x00, 0xDA, 0x82, 
44833
  0x62, 0x00, 0x04, 0x01, 0xDA, 0x82, 0xAD, 0x00, 0x04, 0x02, 0xDA, 0x8A, 0xED, 0x3B, 0x03, 0x00, 
44834
  0x01, 0x28, 0x05, 0x00, 0x00, 0x4A, 0x04, 0x05, 0x03, 0x03, 0x04, 0x00, 0x00, 0x85, 0x31, 0x0D, 
44835
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x03, 0x62, 0x6F, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0x09, 
44836
  0x00, 0x0E, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x03, 0x62, 0x6F, 
44837
  0x72, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x00, 
44838
  0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x00, 
44839
  0x00, 0x3D, 0x04, 0x00, 0x00, 0x11, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 
44840
  0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x11, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 
44841
  0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x0A, 0x61, 
44842
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0xD8, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 
44843
  0x2F, 0x77, 0x65, 0x61, 0x6B, 0xDA, 0x88, 0x0D, 0xD7, 0x01, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x21, 
44844
  0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0E, 0x71, 0x01, 0x04, 0x16, 0xCE, 0x11, 0x66, 0x66, 
44845
  0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x69, 0x61, 0x73, 0xDA, 
44846
  0x04, 0xDA, 0x83, 0x46, 0xDA, 0x86, 0x66, 0xDA, 0x82, 0xE9, 0xDA, 0x29, 0xDA, 0x81, 0xF8, 0xDA, 
44847
  0x86, 0x23, 0xDA, 0x81, 0x26, 0xDA, 0x86, 0x7A, 0xCE, 0x14, 0x6E, 0x6F, 0x20, 0x66, 0x66, 0x69, 
44848
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0xDA, 0x86, 
44849
  0x98, 0xDA, 0x81, 0xCA, 0xDA, 0x86, 0x96, 0xDA, 0x86, 0x97, 0xDA, 0x83, 0xBF, 0xBF, 0xFF, 0x00, 
44850
  0x00, 0xDA, 0x84, 0x2E, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x86, 0x9A, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
44851
  0x86, 0x93, 0x00, 0x71, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x71, 0x01, 0xDA, 0x86, 0x69, 0x00, 0x71, 
44852
  0x02, 0xDA, 0x88, 0x0E, 0x00, 0x71, 0x03, 0xDA, 0x80, 0xC7, 0x00, 0x71, 0x04, 0xDA, 0x88, 0x0D, 
44853
  0x03, 0x71, 0x06, 0xCF, 0x0D, 0x72, 0x65, 0x61, 0x6C, 0x2D, 0x72, 0x65, 0x74, 0x2D, 0x74, 0x79, 
44854
  0x70, 0x65, 0x09, 0x71, 0x08, 0xCF, 0x04, 0x6D, 0x65, 0x74, 0x61, 0x11, 0x71, 0x09, 0xCF, 0x09, 
44855
  0x61, 0x72, 0x67, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0x16, 0x71, 0x0C, 0xCF, 0x0B, 0x66, 0x6F, 
44856
  0x72, 0x6D, 0x61, 0x6C, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x1B, 0x71, 0x0E, 0xCF, 0x09, 0x74, 0x79, 
44857
  0x70, 0x65, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x21, 0x71, 0x0F, 0xCF, 0x12, 0x63, 0x6F, 0x6D, 0x70, 
44858
  0x75, 0x74, 0x65, 0x64, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x34, 0x3B, 
44859
  0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x56, 0x3D, 0x71, 0x13, 0xCF, 0x04, 0x6C, 
44860
  0x6C, 0x69, 0x62, 0x40, 0x71, 0x14, 0xDA, 0x86, 0x9E, 0x43, 0x71, 0x15, 0xCF, 0x02, 0x6D, 0x73, 
44861
  0x46, 0x71, 0x16, 0xDA, 0x86, 0x9D, 0x49, 0x71, 0x17, 0xCF, 0x0A, 0x72, 0x61, 0x77, 0x2D, 0x73, 
44862
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x4B, 0x71, 0x19, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x73, 
44863
  0x69, 0x67, 0x4D, 0x71, 0x1B, 0xCF, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x70, 0x74, 0x72, 0x31, 
44864
  0x02, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2B, 
44865
  0x07, 0x00, 0x00, 0x2B, 0x08, 0xFE, 0xFF, 0x33, 0x03, 0x07, 0x08, 0x2C, 0x08, 0x01, 0x00, 0x35, 
44866
  0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 
44867
  0x09, 0x0A, 0x00, 0x2B, 0x0A, 0x02, 0x00, 0x32, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 
44868
  0x0A, 0x0B, 0x00, 0x1B, 0x09, 0x0A, 0x00, 0x2B, 0x0B, 0x00, 0x00, 0x32, 0x0B, 0x09, 0x00, 0x2C, 
44869
  0x0C, 0x04, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x2B, 0x0D, 0x01, 0x00, 0x32, 
44870
  0x0D, 0x09, 0x00, 0x2C, 0x0E, 0x04, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x34, 
44871
  0x0E, 0x00, 0x00, 0x46, 0x0F, 0x00, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x2C, 0x11, 0x00, 0x00, 0x35, 
44872
  0x10, 0x11, 0x00, 0x1B, 0x0F, 0x10, 0x00, 0x2C, 0x11, 0x05, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 
44873
  0x12, 0x06, 0x00, 0x35, 0x11, 0x12, 0x00, 0x1E, 0x11, 0x0A, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x46, 
44874
  0x12, 0x00, 0x00, 0x2C, 0x14, 0x07, 0x00, 0x32, 0x14, 0x01, 0x00, 0x34, 0x08, 0x00, 0x00, 0x28, 
44875
  0x14, 0x00, 0x00, 0x32, 0x12, 0x14, 0x00, 0x45, 0x13, 0x00, 0x00, 0x03, 0x13, 0x00, 0x00, 0x2D, 
44876
  0x11, 0x00, 0x00, 0x31, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x06, 0x00, 0x35, 0x11, 0x12, 0x00, 0x1B, 
44877
  0x12, 0x11, 0x00, 0x1E, 0x12, 0x03, 0x00, 0x1B, 0x11, 0x12, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 
44878
  0x13, 0x08, 0x00, 0x01, 0x13, 0x00, 0x00, 0x28, 0x11, 0x00, 0x00, 0x2C, 0x13, 0x09, 0x00, 0x3A, 
44879
  0x12, 0x11, 0x13, 0x1B, 0x13, 0x12, 0x00, 0x2C, 0x14, 0x0A, 0x00, 0x3A, 0x12, 0x11, 0x14, 0x1B, 
44880
  0x14, 0x12, 0x00, 0x2C, 0x15, 0x0B, 0x00, 0x3A, 0x12, 0x11, 0x15, 0x1B, 0x15, 0x12, 0x00, 0x2C, 
44881
  0x16, 0x0C, 0x00, 0x3A, 0x12, 0x11, 0x16, 0x1B, 0x16, 0x12, 0x00, 0x31, 0x00, 0x00, 0x00, 0x35, 
44882
  0x12, 0x15, 0x00, 0x1B, 0x17, 0x12, 0x00, 0x30, 0x18, 0x00, 0x00, 0x1B, 0x19, 0x18, 0x00, 0x30, 
44883
  0x1A, 0x01, 0x00, 0x1B, 0x1B, 0x1A, 0x00, 0x1E, 0x16, 0x15, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x46, 
44884
  0x1C, 0x00, 0x00, 0x30, 0x1D, 0x02, 0x00, 0x35, 0x1E, 0x1D, 0x00, 0x31, 0x1E, 0x00, 0x00, 0x45, 
44885
  0x1D, 0x00, 0x00, 0x30, 0x1E, 0x03, 0x00, 0x35, 0x1F, 0x1E, 0x00, 0x31, 0x1F, 0x00, 0x00, 0x45, 
44886
  0x1E, 0x00, 0x00, 0x2C, 0x20, 0x0D, 0x00, 0x33, 0x20, 0x1D, 0x1E, 0x34, 0x0C, 0x00, 0x00, 0x45, 
44887
  0x1F, 0x00, 0x00, 0x2C, 0x1E, 0x07, 0x00, 0x32, 0x1E, 0x01, 0x00, 0x34, 0x08, 0x00, 0x00, 0x32, 
44888
  0x1C, 0x1F, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x03, 0x1D, 0x00, 0x00, 0x34, 0x0C, 0x00, 0x00, 0x46, 
44889
  0x1C, 0x00, 0x00, 0x35, 0x1D, 0x1B, 0x00, 0x35, 0x1E, 0x19, 0x00, 0x2C, 0x20, 0x0D, 0x00, 0x33, 
44890
  0x20, 0x1D, 0x1E, 0x34, 0x0C, 0x00, 0x00, 0x45, 0x1F, 0x00, 0x00, 0x2C, 0x1E, 0x07, 0x00, 0x32, 
44891
  0x1E, 0x01, 0x00, 0x34, 0x08, 0x00, 0x00, 0x32, 0x1C, 0x1F, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x03, 
44892
  0x1D, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x07, 
44893
  0x01, 0x12, 0xCE, 0x08, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x73, 0x69, 0x67, 0xDA, 0x04, 0xD0, 0x07, 
44894
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0xD8, 0x0D, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 0x67, 
44895
  0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 
44896
  0x01, 0xDA, 0x86, 0x69, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x0E, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
44897
  0x80, 0xC7, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 0x0D, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8A, 0xF8, 
44898
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8A, 0xF9, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x8A, 0xFA, 0xBF, 0xFF, 
44899
  0x00, 0x0C, 0xDA, 0x8A, 0xFB, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8A, 0xFC, 0xBF, 0xFF, 0x00, 0x0F, 
44900
  0xDA, 0x8A, 0xFD, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8A, 0xFE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8A, 
44901
  0xFF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x86, 0x9E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x8B, 0x00, 0xBF, 
44902
  0xFF, 0x00, 0x16, 0xDA, 0x86, 0x9D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8B, 0x01, 0x00, 0x07, 0x00, 
44903
  0xDA, 0x8B, 0x02, 0x2C, 0x01, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x06, 0x32, 0x01, 0x02, 0x00, 0x2D, 
44904
  0x01, 0x00, 0x0F, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 
44905
  0xFF, 0x8F, 0xA2, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44906
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x13, 0x01, 0x14, 0xCE, 0x08, 0x6D, 
44907
  0x61, 0x6B, 0x65, 0x2D, 0x70, 0x74, 0x72, 0xDA, 0x04, 0xD8, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6C, 
44908
  0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xCE, 0x1C, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x74, 0x6F, 
44909
  0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x66, 0x66, 0x69, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
44910
  0x20, 0x25, 0x76, 0xDA, 0x81, 0x49, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 
44911
  0x01, 0xDA, 0x86, 0x69, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x0E, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 
44912
  0x80, 0xC7, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 0x0D, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8A, 0xF8, 
44913
  0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8A, 0xF9, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x8A, 0xFA, 0xBF, 0xFF, 
44914
  0x00, 0x0C, 0xDA, 0x8A, 0xFB, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8A, 0xFC, 0xBF, 0xFF, 0x00, 0x0F, 
44915
  0xDA, 0x8A, 0xFD, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8A, 0xFE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8A, 
44916
  0xFF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x86, 0x9E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x8B, 0x00, 0xBF, 
44917
  0xFF, 0x00, 0x16, 0xDA, 0x86, 0x9D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8B, 0x01, 0xBF, 0xFF, 0x00, 
44918
  0x19, 0xDA, 0x8B, 0x02, 0x00, 0x13, 0x00, 0xDA, 0x8B, 0x03, 0x0B, 0x13, 0x01, 0xCF, 0x07, 0x5F, 
44919
  0x30, 0x30, 0x30, 0x30, 0x36, 0x57, 0x2D, 0x02, 0x00, 0x16, 0x1E, 0x02, 0x05, 0x00, 0x2D, 0x03, 
44920
  0x00, 0x13, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x01, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2D, 0x01, 
44921
  0x00, 0x14, 0x2D, 0x02, 0x00, 0x17, 0x32, 0x01, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
44922
  0x03, 0x00, 0x1B, 0x01, 0x02, 0x00, 0x1E, 0x01, 0x02, 0x00, 0x03, 0x01, 0x00, 0x00, 0x2C, 0x02, 
44923
  0x01, 0x00, 0x2D, 0x03, 0x00, 0x17, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x02, 0x02, 0x00, 0x36, 0x02, 
44924
  0x00, 0x00, 0xBF, 0xFF, 0x8F, 0xA4, 0x1C, 0x00, 0x1C, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1C, 0x00, 
44925
  0x1C, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x00, 
44926
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
44927
  0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x01, 0x15, 0xDA, 0x86, 0xA0, 0xDA, 0x04, 0xBF, 0xFF, 
44928
  0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x86, 0x69, 0xBF, 0xFF, 0x00, 0x02, 
44929
  0xDA, 0x88, 0x0E, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xC7, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 
44930
  0x0D, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8A, 0xF8, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x8A, 0xF9, 0xBF, 
44931
  0xFF, 0x00, 0x09, 0xDA, 0x8A, 0xFA, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x8A, 0xFB, 0xBF, 0xFF, 0x00, 
44932
  0x0E, 0xDA, 0x8A, 0xFC, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x8A, 0xFD, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
44933
  0x8A, 0xFE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8A, 0xFF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x86, 0x9E, 
44934
  0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x8B, 0x00, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x86, 0x9D, 0xBF, 0xFF, 
44935
  0x00, 0x17, 0xDA, 0x8B, 0x01, 0xBF, 0xFF, 0x00, 0x19, 0xDA, 0x8B, 0x02, 0xBF, 0xFF, 0x00, 0x1B, 
44936
  0xDA, 0x8B, 0x03, 0x00, 0x04, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x58, 0x01, 
44937
  0x04, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x36, 0x59, 0x28, 0x00, 0x00, 0x00, 0x28, 
44938
  0x01, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 
44939
  0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x02, 0x15, 0xDA, 0x04, 0xBF, 0xFF, 0x01, 0x00, 
44940
  0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x86, 0x69, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x88, 
44941
  0x0E, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x80, 0xC7, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x88, 0x0D, 0xBF, 
44942
  0xFF, 0x01, 0x06, 0xDA, 0x8A, 0xF8, 0xBF, 0xFF, 0x01, 0x08, 0xDA, 0x8A, 0xF9, 0xBF, 0xFF, 0x01, 
44943
  0x09, 0xDA, 0x8A, 0xFA, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x8A, 0xFB, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 
44944
  0x8A, 0xFC, 0xBF, 0xFF, 0x01, 0x0F, 0xDA, 0x8A, 0xFD, 0xBF, 0xFF, 0x01, 0x12, 0xDA, 0x8A, 0xFE, 
44945
  0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x8A, 0xFF, 0xBF, 0xFF, 0x01, 0x14, 0xDA, 0x86, 0x9E, 0xBF, 0xFF, 
44946
  0x01, 0x15, 0xDA, 0x8B, 0x00, 0xBF, 0xFF, 0x01, 0x16, 0xDA, 0x86, 0x9D, 0xBF, 0xFF, 0x01, 0x17, 
44947
  0xDA, 0x8B, 0x01, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 0x8B, 0x02, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x8B, 
44948
  0x03, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8B, 0x0B, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x0C, 0x2D, 
44949
  0x00, 0x00, 0x01, 0x1E, 0x00, 0x03, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x29, 
44950
  0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x01, 0x2D, 0x01, 0x01, 0x1B, 0x35, 0x00, 0x01, 0x00, 0x2F, 
44951
  0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0xA7, 
44952
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x1E, 0x00, 0x1E, 0x00, 
44953
  0x1E, 0x00, 0x17, 0x00, 0x17, 0x8F, 0xA7, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x03, 0x00, 
44954
  0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x01, 0x15, 
44955
  0xDA, 0x86, 0xA0, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x01, 
44956
  0xDA, 0x86, 0x69, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x88, 0x0E, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 
44957
  0xC7, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x88, 0x0D, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8A, 0xF8, 0xBF, 
44958
  0xFF, 0x00, 0x08, 0xDA, 0x8A, 0xF9, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x8A, 0xFA, 0xBF, 0xFF, 0x00, 
44959
  0x0C, 0xDA, 0x8A, 0xFB, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8A, 0xFC, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 
44960
  0x8A, 0xFD, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8A, 0xFE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8A, 0xFF, 
44961
  0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x86, 0x9E, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x8B, 0x00, 0xBF, 0xFF, 
44962
  0x00, 0x16, 0xDA, 0x86, 0x9D, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x8B, 0x01, 0xBF, 0xFF, 0x00, 0x19, 
44963
  0xDA, 0x8B, 0x02, 0xBF, 0xFF, 0x00, 0x1B, 0xDA, 0x8B, 0x03, 0x00, 0x04, 0x00, 0xCF, 0x07, 0x5F, 
44964
  0x30, 0x30, 0x30, 0x30, 0x36, 0x5A, 0x01, 0x04, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
44965
  0x37, 0x30, 0x28, 0x00, 0x00, 0x00, 0x28, 0x01, 0x00, 0x00, 0x30, 0x02, 0x00, 0x00, 0x03, 0x02, 
44966
  0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x02, 
44967
  0x15, 0xDA, 0x04, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x86, 
44968
  0x69, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x88, 0x0E, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x80, 0xC7, 0xBF, 
44969
  0xFF, 0x01, 0x04, 0xDA, 0x88, 0x0D, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x8A, 0xF8, 0xBF, 0xFF, 0x01, 
44970
  0x08, 0xDA, 0x8A, 0xF9, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x8A, 0xFA, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 
44971
  0x8A, 0xFB, 0xBF, 0xFF, 0x01, 0x0E, 0xDA, 0x8A, 0xFC, 0xBF, 0xFF, 0x01, 0x0F, 0xDA, 0x8A, 0xFD, 
44972
  0xBF, 0xFF, 0x01, 0x12, 0xDA, 0x8A, 0xFE, 0xBF, 0xFF, 0x01, 0x13, 0xDA, 0x8A, 0xFF, 0xBF, 0xFF, 
44973
  0x01, 0x14, 0xDA, 0x86, 0x9E, 0xBF, 0xFF, 0x01, 0x15, 0xDA, 0x8B, 0x00, 0xBF, 0xFF, 0x01, 0x16, 
44974
  0xDA, 0x86, 0x9D, 0xBF, 0xFF, 0x01, 0x17, 0xDA, 0x8B, 0x01, 0xBF, 0xFF, 0x01, 0x19, 0xDA, 0x8B, 
44975
  0x02, 0xBF, 0xFF, 0x01, 0x1B, 0xDA, 0x8B, 0x03, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8B, 0x0D, 0xBF, 
44976
  0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x0E, 0x2D, 0x00, 0x00, 0x01, 0x1E, 0x00, 0x03, 0x00, 0x2D, 0x00, 
44977
  0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, 0x01, 0x2D, 0x01, 
44978
  0x01, 0x19, 0x35, 0x00, 0x01, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x03, 0x00, 
44979
  0x00, 0x00, 0xBF, 0xFF, 0x00, 0x8F, 0xA7, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 
44980
  0x00, 0x2D, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x2D, 0x00, 0x2D, 0x8F, 0xA7, 0x2D, 0x00, 
44981
  0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x00, 0x8F, 0x94, 0x18, 0x00, 0x18, 0x00, 0x18, 
44982
  0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x05, 0x01, 0x21, 
44983
  0x00, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x16, 
44984
  0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
44985
  0x00, 0x05, 0x01, 0x23, 0x00, 0x23, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x05, 0x01, 0x09, 
44986
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
44987
  0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x04, 0x24, 0x00, 0x24, 0x00, 0x24, 
44988
  0x00, 0x24, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
44989
  0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
44990
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x04, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 
44991
  0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x02, 0x05, 0x01, 0x07, 0x00, 0x07, 0x01, 0x17, 0x00, 
44992
  0x17, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x01, 0x2D, 0x00, 0x2D, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 
44993
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
44994
  0x07, 0x00, 0x07, 0x02, 0x07, 0x00, 0x07, 0x01, 0x16, 0x00, 0x22, 0xBF, 0xFF, 0x07, 0x00, 0x07, 
44995
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
44996
  0x40, 0x80, 0xD8, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x03, 0xDA, 0x85, 0xF6, 0xDA, 0x85, 0xDB, 
44997
  0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x64, 0x61, 0x74, 0x65, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x64, 0x61, 
44998
  0x74, 0x65, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x6C, 0x69, 0x74, 0xD8, 
44999
  0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x6C, 0x69, 0x74, 0xCF, 0x0B, 0x74, 0x75, 
45000
  0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x2C, 0xCF, 0x08, 0x61, 0x73, 0x2D, 
45001
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x03, 0x01, 0x01, 0xCD, 
45002
  0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x02, 0x00, 0x03, 0xCE, 0x08, 0x61, 0x73, 0x2D, 0x6D, 0x61, 0x63, 
45003
  0x72, 0x6F, 0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 0x31, 0x00, 0x02, 0x01, 0xDA, 0x81, 0x4D, 0x00, 
45004
  0x02, 0x02, 0xDA, 0x8B, 0x14, 0x34, 0x01, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x3A, 0x03, 0x00, 
45005
  0x03, 0xCF, 0x05, 0x61, 0x70, 0x70, 0x6C, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x03, 0x06, 
45006
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0xCE, 0x05, 0x61, 0x70, 0x70, 0x6C, 0x79, 
45007
  0x3F, 0x02, 0x01, 0x00, 0x26, 0x03, 0x02, 0x00, 0x1D, 0x03, 0x09, 0x00, 0x2B, 0x04, 0x00, 0x00, 
45008
  0x3A, 0x05, 0x01, 0x04, 0x05, 0x04, 0x04, 0x01, 0x25, 0x03, 0x04, 0x02, 0x1D, 0x03, 0x03, 0x00, 
45009
  0x31, 0x05, 0x00, 0x00, 0x1C, 0xFB, 0xFF, 0xFF, 0x34, 0x05, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 
45010
  0xDA, 0x85, 0xBF, 0xDA, 0x85, 0xBD, 0xCF, 0x0A, 0x68, 0x61, 0x73, 0x2D, 0x76, 0x61, 0x6C, 0x75, 
45011
  0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x06, 0x00, 
45012
  0x03, 0xCE, 0x0A, 0x68, 0x61, 0x73, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3F, 0xDA, 0x04, 0xDA, 
45013
  0x88, 0xB0, 0x00, 0x06, 0x00, 0xDA, 0x82, 0x62, 0x00, 0x06, 0x01, 0xDA, 0x83, 0xCE, 0x00, 0x06, 
45014
  0x02, 0xDA, 0x8B, 0x1A, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 
45015
  0x28, 0x05, 0x00, 0x00, 0x4A, 0x04, 0x05, 0x03, 0x03, 0x04, 0x00, 0x00, 0x85, 0x36, 0x0D, 0x00, 
45016
  0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x85, 0x53, 0xDA, 0x85, 0x25, 0xCF, 
45017
  0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0xD8, 0x0C, 0x61, 
45018
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0xCF, 0x04, 0x70, 0x72, 0x69, 
45019
  0x6E, 0xD8, 0x04, 0x70, 0x72, 0x69, 0x6E, 0xDA, 0x85, 0x45, 0xDA, 0x85, 0x41, 0xCF, 0x0C, 0x70, 
45020
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0xDA, 0x0F, 0xCF, 0x10, 0x65, 
45021
  0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 
45022
  0x10, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 
45023
  0x6B, 0xCF, 0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xDA, 0x81, 0x58, 
45024
  0xCF, 0x0A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0xD8, 0x0A, 0x74, 0x75, 
45025
  0x70, 0x6C, 0x65, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
45026
  0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0xDA, 0x3D, 0xCF, 0x09, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 
45027
  0x72, 0x6F, 0x2D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
45028
  0xFF, 0xFF, 0x03, 0x06, 0x00, 0x03, 0xCE, 0x09, 0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
45029
  0x2D, 0xDA, 0x04, 0xDA, 0x59, 0xDA, 0x85, 0xEC, 0xDA, 0x86, 0x75, 0x00, 0x06, 0x00, 0xDA, 0x81, 
45030
  0x86, 0x00, 0x06, 0x01, 0xDA, 0x86, 0x6A, 0x00, 0x06, 0x02, 0xDA, 0x8B, 0x28, 0x2C, 0x03, 0x00, 
45031
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x00, 0x03, 0x04, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x02, 
45032
  0x00, 0x36, 0x03, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
45033
  0x03, 0xCF, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 0x72, 0x73, 0xD7, 0x00, 0xCD, 0x00, 
45034
  0xDD, 0x00, 0x00, 0x12, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x11, 0x80, 0x82, 0x00, 0x1B, 
45035
  0xCE, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 0x72, 0x73, 0xDA, 0x04, 0xDA, 0x82, 0x65, 
45036
  0xCE, 0x28, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 
45037
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
45038
  0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x72, 0x73, 0xDA, 0x5C, 0xDA, 0x30, 0xDA, 0x80, 
45039
  0xAB, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 0xAE, 0xD0, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 
45040
  0x72, 0x73, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDB, 0xDA, 0x83, 0x43, 0xDA, 0x80, 0xDE, 0xDA, 0x88, 
45041
  0x1A, 0xDA, 0x80, 0xDF, 0xDA, 0x87, 0xC6, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xB3, 0x00, 0x80, 0x82, 
45042
  0x00, 0xCF, 0x04, 0x76, 0x61, 0x72, 0x73, 0x00, 0x80, 0x82, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x80, 
45043
  0x82, 0x02, 0xDA, 0x8B, 0x2B, 0x01, 0x80, 0x82, 0x04, 0xDA, 0x37, 0x0A, 0x16, 0x06, 0xCF, 0x07, 
45044
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x79, 0x0B, 0x16, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45045
  0x30, 0x32, 0x7A, 0x0B, 0x16, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x41, 0x0E, 
45046
  0x16, 0x08, 0xDA, 0x43, 0x15, 0x80, 0x82, 0x06, 0xCF, 0x04, 0x74, 0x65, 0x6D, 0x70, 0x17, 0x29, 
45047
  0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x42, 0x18, 0x29, 0x05, 0xCF, 0x07, 0x5F, 
45048
  0x30, 0x30, 0x30, 0x30, 0x32, 0x43, 0x18, 0x29, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
45049
  0x32, 0x44, 0x1B, 0x29, 0x09, 0xDA, 0x43, 0x28, 0x80, 0x82, 0x07, 0xCF, 0x07, 0x73, 0x61, 0x76, 
45050
  0x65, 0x6F, 0x6C, 0x64, 0x2A, 0x3C, 0x08, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x45, 
45051
  0x2B, 0x3C, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x46, 0x2B, 0x3C, 0x04, 0xCF, 
45052
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x47, 0x2E, 0x3C, 0x0A, 0xDA, 0x43, 0x3B, 0x80, 0x82, 
45053
  0x08, 0xCF, 0x06, 0x73, 0x65, 0x74, 0x6E, 0x65, 0x77, 0x3D, 0x4F, 0x09, 0xCF, 0x07, 0x5F, 0x30, 
45054
  0x30, 0x30, 0x30, 0x32, 0x48, 0x3E, 0x4F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 
45055
  0x49, 0x3E, 0x4F, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4A, 0x41, 0x4F, 0x0B, 
45056
  0xDA, 0x43, 0x4E, 0x80, 0x82, 0x09, 0xCF, 0x0A, 0x72, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x65, 0x6F, 
45057
  0x6C, 0x64, 0x51, 0x80, 0x82, 0x0A, 0xDA, 0x39, 0x54, 0x80, 0x82, 0x0B, 0xDA, 0x31, 0x57, 0x80, 
45058
  0x82, 0x0C, 0xDA, 0x81, 0x2A, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x04, 0x00, 
45059
  0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x02, 0x00, 0x1C, 0x03, 0x00, 
45060
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x01, 0x06, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 
45061
  0x00, 0x2B, 0x05, 0x00, 0x00, 0x23, 0x07, 0x05, 0x04, 0x1E, 0x07, 0x09, 0x00, 0x1B, 0x08, 0x05, 
45062
  0x00, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x32, 0x06, 0x09, 0x00, 0x2C, 0x0B, 0x03, 
45063
  0x00, 0x35, 0x0A, 0x0B, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF7, 0xFF, 0xFF, 0x40, 0x05, 0x00, 
45064
  0x00, 0x1B, 0x07, 0x05, 0x00, 0x2B, 0x05, 0x00, 0x00, 0x23, 0x08, 0x05, 0x04, 0x1E, 0x08, 0x0F, 
45065
  0x00, 0x1B, 0x09, 0x05, 0x00, 0x0B, 0x0A, 0x09, 0x02, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0B, 0x06, 
45066
  0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x0B, 
45067
  0x0A, 0x45, 0x0A, 0x00, 0x00, 0x32, 0x07, 0x0A, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 
45068
  0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x08, 0x05, 
45069
  0x00, 0x2B, 0x05, 0x00, 0x00, 0x23, 0x09, 0x05, 0x04, 0x1E, 0x09, 0x0F, 0x00, 0x1B, 0x0A, 0x05, 
45070
  0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0B, 0x00, 0x00, 0x05, 0x0C, 0x0A, 0x01, 0x31, 0x0C, 0x00, 
45071
  0x00, 0x35, 0x0D, 0x00, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x33, 0x0C, 0x0B, 0x0D, 0x45, 0x0B, 0x00, 
45072
  0x00, 0x32, 0x08, 0x0B, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x05, 0x05, 0x05, 
45073
  0x02, 0x1C, 0xF1, 0xFF, 0xFF, 0x40, 0x05, 0x00, 0x00, 0x1B, 0x09, 0x05, 0x00, 0x2B, 0x05, 0x00, 
45074
  0x00, 0x23, 0x0A, 0x05, 0x04, 0x1E, 0x0A, 0x0F, 0x00, 0x1B, 0x0B, 0x05, 0x00, 0x31, 0x0B, 0x00, 
45075
  0x00, 0x35, 0x0C, 0x00, 0x00, 0x0B, 0x0D, 0x0B, 0x02, 0x31, 0x0D, 0x00, 0x00, 0x35, 0x0E, 0x06, 
45076
  0x00, 0x2C, 0x0D, 0x05, 0x00, 0x33, 0x0D, 0x0C, 0x0E, 0x45, 0x0C, 0x00, 0x00, 0x32, 0x09, 0x0C, 
45077
  0x00, 0x2C, 0x0E, 0x03, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x05, 0x05, 0x05, 0x02, 0x1C, 0xF1, 0xFF, 
45078
  0xFF, 0x2C, 0x0A, 0x02, 0x00, 0x35, 0x05, 0x0A, 0x00, 0x1B, 0x0A, 0x05, 0x00, 0x2C, 0x0B, 0x02, 
45079
  0x00, 0x35, 0x05, 0x0B, 0x00, 0x1B, 0x0B, 0x05, 0x00, 0x2C, 0x0C, 0x02, 0x00, 0x35, 0x05, 0x0C, 
45080
  0x00, 0x1B, 0x0C, 0x05, 0x00, 0x46, 0x05, 0x00, 0x00, 0x2C, 0x0E, 0x06, 0x00, 0x2C, 0x0F, 0x07, 
45081
  0x00, 0x33, 0x0E, 0x0F, 0x05, 0x34, 0x08, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x0D, 0x00, 
45082
  0x00, 0x2C, 0x0E, 0x08, 0x00, 0x2C, 0x0F, 0x09, 0x00, 0x33, 0x0E, 0x0D, 0x0F, 0x45, 0x05, 0x00, 
45083
  0x00, 0x2C, 0x0E, 0x04, 0x00, 0x33, 0x0E, 0x0B, 0x05, 0x45, 0x0D, 0x00, 0x00, 0x2C, 0x0E, 0x0A, 
45084
  0x00, 0x32, 0x0E, 0x0B, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x33, 0x0F, 0x0A, 
45085
  0x05, 0x45, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x0B, 0x00, 0x32, 0x0F, 0x0B, 0x00, 0x45, 0x05, 0x00, 
45086
  0x00, 0x2C, 0x10, 0x0C, 0x00, 0x2C, 0x11, 0x0D, 0x00, 0x33, 0x10, 0x05, 0x11, 0x45, 0x0F, 0x00, 
45087
  0x00, 0x2C, 0x10, 0x0E, 0x00, 0x33, 0x10, 0x0A, 0x0B, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x11, 0x0F, 
45088
  0x00, 0x33, 0x11, 0x0F, 0x0A, 0x31, 0x05, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x0F, 0x10, 
45089
  0x00, 0x31, 0x0F, 0x00, 0x00, 0x34, 0x07, 0x00, 0x00, 0x32, 0x0D, 0x0E, 0x00, 0x34, 0x09, 0x00, 
45090
  0x00, 0x31, 0x10, 0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x85, 0xF6, 0x0C, 
45091
  0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x17, 0x00, 0x17, 
45092
  0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x27, 0x00, 0x27, 
45093
  0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 
45094
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x36, 0x00, 0x30, 0x00, 0x30, 0x00, 0x3F, 0x00, 0x3F, 
45095
  0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
45096
  0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x2F, 0x00, 0x2F, 
45097
  0x00, 0x3E, 0x00, 0x38, 0x00, 0x38, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 0x0F, 0x00, 0x0F, 
45098
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 
45099
  0x00, 0x13, 0x00, 0x33, 0x00, 0x33, 0x00, 0x42, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x2D, 0x00, 0x2D, 
45100
  0x00, 0x2D, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x03, 0x00, 0x03, 
45101
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 
45102
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45103
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45104
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45105
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45106
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45107
  0x00, 0x05, 0xCF, 0x07, 0x70, 0x72, 0x65, 0x77, 0x61, 0x6C, 0x6B, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 
45108
  0x00, 0x00, 0x06, 0x02, 0x02, 0x02, 0x01, 0x07, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x70, 0x72, 0x65, 
45109
  0x77, 0x61, 0x6C, 0x6B, 0xDA, 0x04, 0xDA, 0x5F, 0x00, 0x07, 0x00, 0xDA, 0x31, 0x00, 0x07, 0x01, 
45110
  0xDA, 0x64, 0x00, 0x07, 0x02, 0xDA, 0x8B, 0x41, 0x2E, 0x02, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 
45111
  0x31, 0x01, 0x00, 0x00, 0x35, 0x04, 0x00, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x05, 0x00, 0x00, 
45112
  0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x01, 0x01, 0x01, 0x00, 0x04, 0x01, 
45113
  0x04, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x64, 0xBF, 
45114
  0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x41, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2D, 0x01, 0x00, 0x00, 0x32, 
45115
  0x01, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x02, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xC7, 0x11, 
45116
  0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x85, 0xC4, 0x01, 0x03, 0x09, 0x00, 0x20, 0x00, 0x20, 0x00, 
45117
  0x03, 0x00, 0x03, 0x00, 0x03, 0x05, 0x00, 0x00, 0x00, 0xCF, 0x05, 0x6D, 0x61, 0x74, 0x63, 0x68, 
45118
  0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x2D, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x17, 
45119
  0x81, 0x0D, 0x00, 0x06, 0x2F, 0xCE, 0x05, 0x6D, 0x61, 0x74, 0x63, 0x68, 0xDA, 0x04, 0xDA, 0x83, 
45120
  0x2A, 0xDA, 0x82, 0xE9, 0xDA, 0x86, 0x66, 0xDA, 0x29, 0xDA, 0x82, 0x4C, 0xDA, 0x5C, 0xDA, 0x80, 
45121
  0xAB, 0xDA, 0x30, 0xDA, 0x83, 0x1A, 0xCF, 0x03, 0x61, 0x6E, 0x64, 0xDA, 0x87, 0xA6, 0xDA, 0x80, 
45122
  0xF2, 0xDA, 0x82, 0xB1, 0xDA, 0x83, 0x22, 0xDA, 0x87, 0x64, 0xDA, 0x81, 0x5A, 0xDA, 0x80, 0xB3, 
45123
  0xDA, 0x2C, 0xDA, 0x83, 0xDE, 0xD0, 0x06, 0x62, 0x72, 0x61, 0x6E, 0x63, 0x68, 0xDA, 0x88, 0x7B, 
45124
  0xDA, 0x82, 0x81, 0xDA, 0x8B, 0x1E, 0x00, 0x81, 0x0D, 0x00, 0xDA, 0x1E, 0x00, 0x81, 0x0D, 0x01, 
45125
  0xCF, 0x05, 0x63, 0x61, 0x73, 0x65, 0x73, 0x00, 0x81, 0x0D, 0x02, 0xDA, 0x8B, 0x44, 0x04, 0x81, 
45126
  0x0D, 0x03, 0xCF, 0x06, 0x6F, 0x64, 0x64, 0x6C, 0x65, 0x6E, 0x0C, 0x81, 0x0D, 0x06, 0xCF, 0x04, 
45127
  0x65, 0x6C, 0x73, 0x65, 0x1A, 0x81, 0x0D, 0x07, 0xCF, 0x08, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 
45128
  0x6E, 0x73, 0x24, 0x81, 0x0D, 0x0A, 0xCF, 0x05, 0x78, 0x2D, 0x73, 0x79, 0x6D, 0x26, 0x81, 0x0D, 
45129
  0x0C, 0xDA, 0x83, 0xC5, 0x32, 0x81, 0x0D, 0x0E, 0xCF, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
45130
  0x73, 0x34, 0x81, 0x0D, 0x10, 0xCF, 0x0E, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 0x79, 
45131
  0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x36, 0x81, 0x0D, 0x12, 0xCF, 0x04, 0x65, 0x6D, 0x69, 0x74, 0x38, 
45132
  0x81, 0x0D, 0x14, 0xCF, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x62, 0x72, 0x61, 0x6E, 0x63, 0x68, 
45133
  0x3A, 0x81, 0x0D, 0x16, 0xCF, 0x07, 0x67, 0x65, 0x74, 0x2D, 0x73, 0x79, 0x6D, 0x3C, 0x81, 0x0D, 
45134
  0x18, 0xCF, 0x0E, 0x67, 0x65, 0x74, 0x2D, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 0x79, 
45135
  0x6D, 0x3E, 0x81, 0x0D, 0x1A, 0xCF, 0x0F, 0x76, 0x69, 0x73, 0x69, 0x74, 0x2D, 0x70, 0x61, 0x74, 
45136
  0x74, 0x65, 0x72, 0x6E, 0x2D, 0x31, 0x40, 0x81, 0x0D, 0x1C, 0xCF, 0x0F, 0x76, 0x69, 0x73, 0x69, 
45137
  0x74, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x32, 0x40, 0x80, 0xC4, 0x07, 0xCF, 
45138
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x32, 0x43, 0x80, 0xC4, 0x1E, 0xCF, 0x07, 0x5F, 0x30, 
45139
  0x30, 0x30, 0x30, 0x34, 0x31, 0x47, 0x80, 0xC4, 0x20, 0xDA, 0x88, 0xE8, 0x49, 0x80, 0xC4, 0x21, 
45140
  0xCF, 0x0A, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x4B, 0x80, 0xC4, 0x1F, 
45141
  0xCF, 0x03, 0x62, 0x32, 0x67, 0x4D, 0x80, 0xC4, 0x22, 0xCF, 0x03, 0x67, 0x75, 0x6E, 0x4F, 0x80, 
45142
  0xC4, 0x23, 0xCF, 0x05, 0x70, 0x72, 0x65, 0x64, 0x73, 0x58, 0x80, 0xC4, 0x24, 0xCF, 0x04, 0x61, 
45143
  0x6E, 0x64, 0x61, 0x5F, 0x80, 0xC4, 0x25, 0xCF, 0x05, 0x75, 0x6E, 0x69, 0x66, 0x79, 0x5F, 0x73, 
45144
  0x1F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x34, 0x62, 0x73, 0x26, 0xCF, 0x07, 0x5F, 
45145
  0x30, 0x30, 0x30, 0x30, 0x34, 0x33, 0x65, 0x73, 0x27, 0xCF, 0x04, 0x73, 0x79, 0x6D, 0x73, 0x72, 
45146
  0x80, 0x83, 0x22, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x36, 0x75, 0x80, 0x83, 0x26, 
45147
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x35, 0x78, 0x80, 0x83, 0x27, 0xDA, 0x82, 0x5E, 
45148
  0x79, 0x80, 0x83, 0x28, 0xDA, 0x8B, 0x60, 0x80, 0x8A, 0x80, 0xA6, 0x26, 0xCF, 0x07, 0x5F, 0x30, 
45149
  0x30, 0x30, 0x30, 0x34, 0x37, 0x80, 0x91, 0x80, 0xA6, 0x1D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45150
  0x30, 0x34, 0x39, 0x80, 0x94, 0x80, 0xA6, 0x28, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
45151
  0x38, 0x80, 0x98, 0x80, 0xA6, 0x2A, 0xDA, 0x3A, 0x80, 0x9A, 0x80, 0xA6, 0x2B, 0xDA, 0x46, 0x80, 
45152
  0xA5, 0x80, 0xC4, 0x26, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x73, 0x80, 0xB4, 0x80, 0xB8, 0x27, 0xCF, 
45153
  0x09, 0x70, 0x72, 0x65, 0x64, 0x2D, 0x6A, 0x6F, 0x69, 0x6E, 0x80, 0xC6, 0x81, 0x0D, 0x1E, 0xDA, 
45154
  0x84, 0x46, 0x80, 0xCA, 0x81, 0x05, 0x20, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x62, 
45155
  0x80, 0xCD, 0x81, 0x05, 0x21, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x61, 0x80, 0xD0, 
45156
  0x81, 0x05, 0x22, 0xDA, 0x83, 0xC8, 0x80, 0xD7, 0x80, 0xFF, 0x24, 0xCF, 0x09, 0x63, 0x6F, 0x6E, 
45157
  0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x80, 0xDB, 0x80, 0xFF, 0x25, 0xCF, 0x06, 0x74, 0x72, 0x75, 
45158
  0x74, 0x68, 0x79, 0x80, 0xDD, 0x80, 0xF2, 0x26, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 
45159
  0x63, 0x80, 0xF6, 0x80, 0xFF, 0x23, 0xCF, 0x07, 0x69, 0x66, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x3F, 
45160
  0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 
45161
  0x03, 0x04, 0x00, 0x1E, 0x03, 0x06, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 
45162
  0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x1B, 
45163
  0x06, 0x05, 0x00, 0x1E, 0x03, 0x08, 0x00, 0x2B, 0x08, 0x00, 0x00, 0x2B, 0x09, 0xFE, 0xFF, 0x33, 
45164
  0x01, 0x08, 0x09, 0x2C, 0x09, 0x02, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x1C, 
45165
  0x02, 0x00, 0x00, 0x1B, 0x07, 0x01, 0x00, 0x2B, 0x08, 0x02, 0x00, 0x32, 0x08, 0x07, 0x00, 0x2C, 
45166
  0x09, 0x03, 0x00, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 
45167
  0x0B, 0x04, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x09, 0x00, 0x00, 0x1C, 
45168
  0x04, 0x00, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x1B, 
45169
  0x0A, 0x09, 0x00, 0x40, 0x0B, 0x00, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x4A, 0x0D, 0x00, 0x0A, 0x1E, 
45170
  0x0D, 0x07, 0x00, 0x2C, 0x0E, 0x06, 0x00, 0x33, 0x0E, 0x0A, 0x00, 0x45, 0x0E, 0x00, 0x00, 0x32, 
45171
  0x0C, 0x0E, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x32, 
45172
  0x0D, 0x0A, 0x00, 0x44, 0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x44, 0x0F, 0x00, 0x00, 0x1B, 
45173
  0x10, 0x0F, 0x00, 0x30, 0x11, 0x00, 0x00, 0x1B, 0x12, 0x11, 0x00, 0x30, 0x13, 0x01, 0x00, 0x1B, 
45174
  0x14, 0x13, 0x00, 0x30, 0x15, 0x02, 0x00, 0x1B, 0x16, 0x15, 0x00, 0x30, 0x17, 0x03, 0x00, 0x1B, 
45175
  0x18, 0x17, 0x00, 0x30, 0x19, 0x04, 0x00, 0x1B, 0x1A, 0x19, 0x00, 0x30, 0x1B, 0x05, 0x00, 0x1B, 
45176
  0x1C, 0x1B, 0x00, 0x28, 0x1E, 0x00, 0x00, 0x49, 0x1D, 0x07, 0x1E, 0x1B, 0x1E, 0x1D, 0x00, 0x1F, 
45177
  0x1E, 0x80, 0x00, 0x3A, 0x1D, 0x07, 0x1E, 0x3D, 0x1F, 0x1D, 0x00, 0x1B, 0x20, 0x1F, 0x00, 0x3D, 
45178
  0x1F, 0x1D, 0x01, 0x1B, 0x21, 0x1F, 0x00, 0x44, 0x1D, 0x00, 0x00, 0x1B, 0x1F, 0x1D, 0x00, 0x44, 
45179
  0x1D, 0x00, 0x00, 0x1B, 0x22, 0x1D, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x23, 0x1D, 0x00, 0x28, 
45180
  0x1D, 0x00, 0x00, 0x28, 0x24, 0x00, 0x00, 0x33, 0x1F, 0x1D, 0x24, 0x31, 0x20, 0x00, 0x00, 0x35, 
45181
  0x1D, 0x1A, 0x00, 0x2C, 0x1D, 0x09, 0x00, 0x31, 0x1D, 0x00, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 
45182
  0x24, 0x1D, 0x00, 0x33, 0x24, 0x22, 0x23, 0x28, 0x1D, 0x00, 0x00, 0x28, 0x25, 0x00, 0x00, 0x33, 
45183
  0x1D, 0x25, 0x20, 0x35, 0x1D, 0x1C, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x25, 0x1D, 0x00, 0x28, 
45184
  0x26, 0x00, 0x00, 0x49, 0x1D, 0x1F, 0x26, 0x1B, 0x26, 0x1D, 0x00, 0x1F, 0x26, 0x10, 0x00, 0x3A, 
45185
  0x1D, 0x1F, 0x26, 0x1B, 0x27, 0x1D, 0x00, 0x3F, 0x1D, 0x27, 0x00, 0x2B, 0x29, 0x01, 0x00, 0x23, 
45186
  0x28, 0x29, 0x1D, 0x1E, 0x28, 0x08, 0x00, 0x2C, 0x1D, 0x0A, 0x00, 0x31, 0x1D, 0x00, 0x00, 0x34, 
45187
  0x27, 0x00, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x32, 0x25, 0x1D, 0x00, 0x2C, 0x2A, 0x07, 0x00, 0x35, 
45188
  0x29, 0x2A, 0x00, 0x49, 0x26, 0x1F, 0x26, 0x1C, 0xF1, 0xFF, 0xFF, 0x28, 0x26, 0x00, 0x00, 0x49, 
45189
  0x1D, 0x22, 0x26, 0x1B, 0x26, 0x1D, 0x00, 0x1F, 0x26, 0x0D, 0x00, 0x3A, 0x1D, 0x22, 0x26, 0x1B, 
45190
  0x27, 0x26, 0x00, 0x1B, 0x28, 0x1D, 0x00, 0x2C, 0x1D, 0x0A, 0x00, 0x32, 0x1D, 0x27, 0x00, 0x34, 
45191
  0x28, 0x00, 0x00, 0x45, 0x1D, 0x00, 0x00, 0x32, 0x25, 0x1D, 0x00, 0x2C, 0x2A, 0x07, 0x00, 0x35, 
45192
  0x29, 0x2A, 0x00, 0x49, 0x26, 0x22, 0x26, 0x1C, 0xF4, 0xFF, 0xFF, 0x31, 0x25, 0x00, 0x00, 0x2C, 
45193
  0x26, 0x0B, 0x00, 0x35, 0x1D, 0x26, 0x00, 0x32, 0x24, 0x25, 0x00, 0x2C, 0x26, 0x0C, 0x00, 0x35, 
45194
  0x1D, 0x26, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x26, 0x1D, 0x00, 0x31, 0x1F, 0x00, 0x00, 0x2C, 
45195
  0x27, 0x0D, 0x00, 0x35, 0x1D, 0x27, 0x00, 0x31, 0x1D, 0x00, 0x00, 0x2C, 0x28, 0x0B, 0x00, 0x35, 
45196
  0x27, 0x28, 0x00, 0x1B, 0x1D, 0x27, 0x00, 0x28, 0x28, 0x00, 0x00, 0x49, 0x27, 0x1D, 0x28, 0x1B, 
45197
  0x28, 0x27, 0x00, 0x1F, 0x28, 0x11, 0x00, 0x3A, 0x27, 0x1D, 0x28, 0x3D, 0x29, 0x27, 0x00, 0x1B, 
45198
  0x2A, 0x29, 0x00, 0x3D, 0x29, 0x27, 0x01, 0x1B, 0x2B, 0x29, 0x00, 0x31, 0x2B, 0x00, 0x00, 0x2C, 
45199
  0x29, 0x0E, 0x00, 0x35, 0x27, 0x29, 0x00, 0x2C, 0x29, 0x06, 0x00, 0x33, 0x29, 0x2A, 0x27, 0x45, 
45200
  0x27, 0x00, 0x00, 0x32, 0x26, 0x27, 0x00, 0x2C, 0x2C, 0x07, 0x00, 0x35, 0x29, 0x2C, 0x00, 0x49, 
45201
  0x28, 0x1D, 0x28, 0x1C, 0xF0, 0xFF, 0xFF, 0x31, 0x23, 0x00, 0x00, 0x2C, 0x27, 0x0F, 0x00, 0x35, 
45202
  0x1D, 0x27, 0x00, 0x1E, 0x1D, 0x02, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x2C, 0x28, 0x09, 0x00, 0x31, 
45203
  0x28, 0x00, 0x00, 0x34, 0x23, 0x00, 0x00, 0x45, 0x27, 0x00, 0x00, 0x2C, 0x29, 0x10, 0x00, 0x31, 
45204
  0x29, 0x00, 0x00, 0x34, 0x26, 0x00, 0x00, 0x31, 0x27, 0x00, 0x00, 0x45, 0x28, 0x00, 0x00, 0x1B, 
45205
  0x27, 0x28, 0x00, 0x32, 0x24, 0x27, 0x00, 0x2C, 0x29, 0x07, 0x00, 0x35, 0x28, 0x29, 0x00, 0x31, 
45206
  0x24, 0x00, 0x00, 0x2C, 0x27, 0x11, 0x00, 0x35, 0x1D, 0x27, 0x00, 0x2C, 0x27, 0x10, 0x00, 0x31, 
45207
  0x27, 0x00, 0x00, 0x34, 0x26, 0x00, 0x00, 0x31, 0x21, 0x00, 0x00, 0x45, 0x27, 0x00, 0x00, 0x32, 
45208
  0x1D, 0x27, 0x00, 0x35, 0x28, 0x14, 0x00, 0x49, 0x1E, 0x07, 0x1E, 0x1C, 0x81, 0xFF, 0xFF, 0x31, 
45209
  0x06, 0x00, 0x00, 0x40, 0x1D, 0x00, 0x00, 0x1B, 0x1E, 0x1D, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x2C, 
45210
  0x20, 0x12, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x1B, 0x20, 0x1F, 0x00, 0x28, 0x21, 0x00, 0x00, 0x49, 
45211
  0x1F, 0x20, 0x21, 0x1B, 0x21, 0x1F, 0x00, 0x1F, 0x21, 0x37, 0x00, 0x3A, 0x1F, 0x20, 0x21, 0x1B, 
45212
  0x22, 0x1F, 0x00, 0x2C, 0x23, 0x13, 0x00, 0x25, 0x1F, 0x23, 0x22, 0x1E, 0x1F, 0x2D, 0x00, 0x31, 
45213
  0x1E, 0x00, 0x00, 0x2C, 0x24, 0x14, 0x00, 0x35, 0x23, 0x24, 0x00, 0x1B, 0x24, 0x23, 0x00, 0x31, 
45214
  0x1E, 0x00, 0x00, 0x2C, 0x25, 0x14, 0x00, 0x35, 0x23, 0x25, 0x00, 0x1B, 0x25, 0x23, 0x00, 0x3F, 
45215
  0x23, 0x1E, 0x00, 0x1B, 0x26, 0x23, 0x00, 0x26, 0x27, 0x26, 0x00, 0x1E, 0x27, 0x03, 0x00, 0x28, 
45216
  0x23, 0x00, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x26, 0x29, 0x26, 0x01, 0x1E, 0x29, 0x06, 0x00, 0x2B, 
45217
  0x2A, 0x00, 0x00, 0x31, 0x2A, 0x00, 0x00, 0x35, 0x2A, 0x1E, 0x00, 0x1B, 0x28, 0x2A, 0x00, 0x1C, 
45218
  0x09, 0x00, 0x00, 0x31, 0x1E, 0x00, 0x00, 0x2C, 0x2B, 0x12, 0x00, 0x35, 0x2A, 0x2B, 0x00, 0x2C, 
45219
  0x2C, 0x10, 0x00, 0x31, 0x2C, 0x00, 0x00, 0x34, 0x2A, 0x00, 0x00, 0x45, 0x2B, 0x00, 0x00, 0x1B, 
45220
  0x28, 0x2B, 0x00, 0x1B, 0x23, 0x28, 0x00, 0x2C, 0x27, 0x15, 0x00, 0x33, 0x27, 0x24, 0x25, 0x31, 
45221
  0x23, 0x00, 0x00, 0x45, 0x26, 0x00, 0x00, 0x1B, 0x23, 0x26, 0x00, 0x3F, 0x26, 0x1E, 0x00, 0x2B, 
45222
  0x27, 0x00, 0x00, 0x33, 0x1E, 0x27, 0x26, 0x2C, 0x28, 0x16, 0x00, 0x35, 0x27, 0x28, 0x00, 0x32, 
45223
  0x1E, 0x23, 0x00, 0x2C, 0x27, 0x07, 0x00, 0x35, 0x26, 0x27, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x32, 
45224
  0x1E, 0x22, 0x00, 0x2C, 0x24, 0x07, 0x00, 0x35, 0x23, 0x24, 0x00, 0x49, 0x21, 0x20, 0x21, 0x1C, 
45225
  0xCA, 0xFF, 0xFF, 0x31, 0x1E, 0x00, 0x00, 0x2C, 0x20, 0x12, 0x00, 0x35, 0x1F, 0x20, 0x00, 0x2C, 
45226
  0x21, 0x10, 0x00, 0x31, 0x21, 0x00, 0x00, 0x34, 0x1F, 0x00, 0x00, 0x45, 0x20, 0x00, 0x00, 0x03, 
45227
  0x20, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x0C, 
45228
  0xCE, 0x04, 0x65, 0x6D, 0x69, 0x74, 0xDA, 0x04, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 
45229
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x49, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x44, 0xBF, 0xFF, 
45230
  0x00, 0x03, 0xDA, 0x8B, 0x4A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x4B, 0xBF, 0xFF, 0x00, 0x07, 
45231
  0xDA, 0x8B, 0x4C, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x4D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 
45232
  0xC5, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x4E, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x4F, 0x00, 
45233
  0x04, 0x00, 0xDA, 0x1E, 0x00, 0x04, 0x01, 0xDA, 0x8B, 0x50, 0x2D, 0x02, 0x00, 0x0C, 0x32, 0x02, 
45234
  0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0xAB, 0x12, 0x00, 
45235
  0x12, 0x00, 0x12, 0x00, 0x12, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 
45236
  0x01, 0x0E, 0xCE, 0x0B, 0x65, 0x6D, 0x69, 0x74, 0x2D, 0x62, 0x72, 0x61, 0x6E, 0x63, 0x68, 0xDA, 
45237
  0x04, 0xDA, 0x8B, 0x48, 0xDA, 0x30, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 
45238
  0xDA, 0x8B, 0x49, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x44, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 
45239
  0x4A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x4B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x4C, 0xBF, 
45240
  0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x4D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC5, 0xBF, 0xFF, 0x00, 
45241
  0x0E, 0xDA, 0x8B, 0x4E, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x4F, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 
45242
  0x8B, 0x50, 0x00, 0x06, 0x00, 0xDA, 0x8B, 0x6A, 0x00, 0x06, 0x01, 0xCF, 0x06, 0x72, 0x65, 0x73, 
45243
  0x75, 0x6C, 0x74, 0x00, 0x06, 0x02, 0xDA, 0x8B, 0x51, 0x2D, 0x03, 0x00, 0x0C, 0x2C, 0x04, 0x00, 
45244
  0x00, 0x33, 0x03, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 
45245
  0x00, 0xBF, 0xFF, 0x87, 0xAC, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 
45246
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x03, 0x17, 0x01, 0x12, 0xCE, 0x07, 0x67, 
45247
  0x65, 0x74, 0x2D, 0x73, 0x79, 0x6D, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x86, 0x70, 0xDA, 0x80, 0xAB, 
45248
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x49, 0xBF, 0xFF, 0x00, 
45249
  0x02, 0xDA, 0x8B, 0x44, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0x4A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 
45250
  0x8B, 0x4B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x4C, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x4D, 
45251
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC5, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x4E, 0xBF, 0xFF, 
45252
  0x00, 0x10, 0xDA, 0x8B, 0x4F, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8B, 0x50, 0xBF, 0xFF, 0x00, 0x14, 
45253
  0xDA, 0x8B, 0x51, 0x00, 0x17, 0x00, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x2D, 0x73, 
45254
  0x79, 0x6D, 0x00, 0x17, 0x01, 0xDA, 0x82, 0xAD, 0x00, 0x17, 0x02, 0xDA, 0x8B, 0x52, 0x02, 0x17, 
45255
  0x04, 0xCF, 0x0A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2D, 0x6B, 0x65, 0x79, 0x05, 0x17, 0x06, 
45256
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x42, 0x0A, 0x17, 0x07, 0xDA, 0x81, 0x2A, 0x32, 
45257
  0x00, 0x01, 0x00, 0x45, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2D, 0x06, 0x00, 0x0E, 0x3B, 
45258
  0x05, 0x06, 0x04, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x06, 0x02, 0x00, 0x03, 0x06, 0x00, 0x00, 0x2C, 
45259
  0x07, 0x00, 0x00, 0x35, 0x05, 0x07, 0x00, 0x1B, 0x07, 0x05, 0x00, 0x2D, 0x05, 0x00, 0x0E, 0x3C, 
45260
  0x05, 0x04, 0x07, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x01, 0x45, 0x05, 0x00, 0x00, 0x2C, 
45261
  0x08, 0x02, 0x00, 0x33, 0x08, 0x07, 0x05, 0x45, 0x05, 0x00, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2D, 
45262
  0x09, 0x00, 0x12, 0x35, 0x08, 0x09, 0x00, 0x03, 0x07, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0xB0, 0x15, 
45263
  0x00, 0x15, 0x00, 0x05, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x11, 
45264
  0x00, 0x11, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 
45265
  0x00, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xCD, 0x00, 0xDC, 
45266
  0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x05, 0x1A, 0x01, 0x11, 0xCE, 0x0E, 0x67, 0x65, 0x74, 0x2D, 
45267
  0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x2B, 
45268
  0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x08, 0x01, 0x01, 0x01, 0x01, 0x00, 0x02, 0xCE, 0x06, 0x6C, 
45269
  0x65, 0x6E, 0x67, 0x74, 0x68, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xDA, 0x82, 0x81, 
45270
  0xDA, 0x80, 0xAB, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x49, 
45271
  0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x44, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0x4A, 0xBF, 0xFF, 
45272
  0x00, 0x06, 0xDA, 0x8B, 0x4B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x4C, 0xBF, 0xFF, 0x00, 0x0A, 
45273
  0xDA, 0x8B, 0x4D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC5, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 
45274
  0x4E, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x4F, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8B, 0x50, 0xBF, 
45275
  0xFF, 0x00, 0x14, 0xDA, 0x8B, 0x51, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x8B, 0x52, 0x00, 0x1A, 0x00, 
45276
  0xDA, 0x8B, 0x72, 0x00, 0x1A, 0x01, 0xDA, 0x8B, 0x53, 0x02, 0x1A, 0x03, 0xCF, 0x07, 0x5F, 0x30, 
45277
  0x30, 0x30, 0x30, 0x33, 0x43, 0x07, 0x1A, 0x04, 0xDA, 0x81, 0x2A, 0x2D, 0x03, 0x00, 0x10, 0x3B, 
45278
  0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x03, 0x03, 0x00, 0x00, 0x2C, 
45279
  0x04, 0x00, 0x00, 0x35, 0x02, 0x04, 0x00, 0x1B, 0x04, 0x02, 0x00, 0x2D, 0x02, 0x00, 0x10, 0x3C, 
45280
  0x02, 0x00, 0x04, 0x2C, 0x02, 0x01, 0x00, 0x32, 0x02, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 
45281
  0x05, 0x02, 0x00, 0x32, 0x05, 0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x33, 
45282
  0x06, 0x02, 0x05, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x33, 0x05, 0x04, 0x02, 0x45, 
45283
  0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x12, 0x35, 0x05, 0x06, 0x00, 0x03, 
45284
  0x04, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0xB9, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45285
  0x01, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x0B, 0x00, 0x0B, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 
45286
  0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x11, 0x00, 0x11, 
45287
  0x00, 0x11, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0xBF, 0xFE, 0x09, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
45288
  0x17, 0x04, 0x04, 0x04, 0x13, 0x80, 0xD2, 0x01, 0x27, 0xCE, 0x0F, 0x76, 0x69, 0x73, 0x69, 0x74, 
45289
  0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x31, 0xDA, 0x04, 0xDA, 0x81, 0x96, 0xDA, 
45290
  0x1C, 0xDA, 0x6A, 0xDA, 0x70, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xDA, 0x82, 0x4F, 0xDA, 0x30, 0xDA, 
45291
  0x82, 0x98, 0xDA, 0x68, 0xDA, 0x61, 0xCF, 0x01, 0x26, 0xDA, 0x84, 0x89, 0xCE, 0x26, 0x65, 0x78, 
45292
  0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x6F, 
45293
  0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 
45294
  0x74, 0x65, 0x72, 0x6E, 0xDA, 0x81, 0x49, 0xDA, 0x86, 0x66, 0xCE, 0x37, 0x65, 0x78, 0x70, 0x65, 
45295
  0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x73, 0x79, 
45296
  0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x27, 0x26, 0x20, 0x69, 
45297
  0x6E, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2C, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
45298
  0x20, 0x25, 0x71, 0xCE, 0x30, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 
45299
  0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x26, 
45300
  0x20, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2C, 0x20, 0x66, 0x6F, 0x75, 
45301
  0x6E, 0x64, 0x20, 0x25, 0x71, 0xCF, 0x01, 0x40, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 
45302
  0x00, 0x01, 0xDA, 0x8B, 0x49, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0x44, 0xBF, 0xFF, 0x00, 0x03, 
45303
  0xDA, 0x8B, 0x4A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x4B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x8B, 
45304
  0x4C, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x4D, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x83, 0xC5, 0xBF, 
45305
  0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x4E, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x8B, 0x4F, 0xBF, 0xFF, 0x00, 
45306
  0x12, 0xDA, 0x8B, 0x50, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x8B, 0x51, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 
45307
  0x8B, 0x52, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x8B, 0x53, 0x00, 0x80, 0xD2, 0x00, 0xDA, 0x8B, 0x59, 
45308
  0x00, 0x80, 0xD2, 0x01, 0xDA, 0x8B, 0x72, 0x00, 0x80, 0xD2, 0x02, 0xDA, 0x82, 0xAD, 0x00, 0x80, 
45309
  0xD2, 0x03, 0xDA, 0x88, 0xE8, 0x00, 0x80, 0xD2, 0x04, 0xDA, 0x8B, 0x54, 0x08, 0x80, 0xD2, 0x06, 
45310
  0xDA, 0x81, 0x2A, 0x0C, 0x80, 0xD2, 0x08, 0xDA, 0x82, 0x33, 0x0F, 0x20, 0x0A, 0xCF, 0x07, 0x5F, 
45311
  0x30, 0x30, 0x30, 0x30, 0x33, 0x44, 0x15, 0x1F, 0x0D, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
45312
  0x33, 0x45, 0x20, 0x80, 0xD2, 0x0A, 0xCF, 0x05, 0x69, 0x73, 0x61, 0x72, 0x72, 0x25, 0x2F, 0x0D, 
45313
  0xDA, 0x1E, 0x31, 0x43, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x47, 0x36, 0x40, 
45314
  0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x46, 0x48, 0x4F, 0x0E, 0xCF, 0x07, 0x5F, 
45315
  0x30, 0x30, 0x30, 0x30, 0x33, 0x48, 0x4F, 0x5D, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
45316
  0x33, 0x4A, 0x52, 0x5D, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x49, 0x55, 0x5C, 
45317
  0x10, 0xDA, 0x43, 0x56, 0x5C, 0x11, 0xCF, 0x0B, 0x73, 0x75, 0x62, 0x2D, 0x70, 0x61, 0x74, 0x74, 
45318
  0x65, 0x72, 0x6E, 0x60, 0x80, 0xA9, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4C, 
45319
  0x63, 0x80, 0xA9, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4B, 0x66, 0x80, 0xA8, 
45320
  0x10, 0xDA, 0x43, 0x67, 0x80, 0xA8, 0x11, 0xDA, 0x8B, 0x87, 0x80, 0xAB, 0x80, 0xBD, 0x10, 0xCF, 
45321
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x4E, 0x80, 0xB0, 0x80, 0xBA, 0x12, 0xCF, 0x07, 0x5F, 
45322
  0x30, 0x30, 0x30, 0x30, 0x33, 0x4D, 0x80, 0xC2, 0x80, 0xCA, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
45323
  0x30, 0x30, 0x33, 0x4F, 0x2E, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x25, 0x05, 0x03, 0x06, 
45324
  0x1E, 0x05, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x32, 0x01, 0x02, 0x00, 0x2D, 0x06, 0x00, 0x16, 
45325
  0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 
45326
  0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x25, 0x09, 0x08, 0x0A, 
45327
  0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x03, 0x00, 0x1B, 0x09, 0x0A, 0x00, 0x1C, 0x0E, 0x00, 0x00, 
45328
  0x2C, 0x0D, 0x03, 0x00, 0x25, 0x0C, 0x08, 0x0D, 0x1B, 0x0D, 0x0C, 0x00, 0x1E, 0x0C, 0x08, 0x00, 
45329
  0x31, 0x03, 0x00, 0x00, 0x2C, 0x0F, 0x04, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x2C, 0x10, 0x05, 0x00, 
45330
  0x25, 0x0F, 0x0E, 0x10, 0x1B, 0x0B, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 
45331
  0x1B, 0x09, 0x0B, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x25, 0x0B, 0x08, 0x0C, 
45332
  0x1E, 0x0B, 0x0C, 0x00, 0x3A, 0x0C, 0x00, 0x03, 0x1B, 0x0D, 0x0C, 0x00, 0x1E, 0x0C, 0x04, 0x00, 
45333
  0x32, 0x0D, 0x06, 0x00, 0x2C, 0x0E, 0x07, 0x00, 0x36, 0x0E, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 
45334
  0x40, 0x0E, 0x00, 0x00, 0x1B, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x03, 0x0E, 0x03, 0x0F, 0x00, 0x00, 
45335
  0x2C, 0x0E, 0x03, 0x00, 0x25, 0x0D, 0x08, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0D, 0x10, 0x00, 
45336
  0x3F, 0x10, 0x03, 0x00, 0x2B, 0x12, 0x02, 0x00, 0x25, 0x11, 0x12, 0x10, 0x1B, 0x10, 0x11, 0x00, 
45337
  0x1E, 0x11, 0x08, 0x00, 0x2B, 0x12, 0x00, 0x00, 0x31, 0x12, 0x00, 0x00, 0x35, 0x12, 0x03, 0x00, 
45338
  0x2C, 0x14, 0x08, 0x00, 0x25, 0x13, 0x14, 0x12, 0x1B, 0x0F, 0x13, 0x00, 0x1C, 0x02, 0x00, 0x00, 
45339
  0x1B, 0x0F, 0x10, 0x00, 0x1B, 0x0C, 0x0F, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0C, 0x0E, 0x00, 
45340
  0x1E, 0x0C, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x0E, 0x09, 0x00, 
45341
  0x25, 0x0D, 0x08, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 
45342
  0x1C, 0x04, 0x00, 0x00, 0x2C, 0x10, 0x0A, 0x00, 0x25, 0x0F, 0x08, 0x10, 0x1B, 0x0D, 0x0F, 0x00, 
45343
  0x1E, 0x0D, 0x0E, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x03, 0x0F, 0x1B, 0x0F, 0x0E, 0x00, 
45344
  0x1F, 0x0F, 0x09, 0x00, 0x3A, 0x0E, 0x03, 0x0F, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x11, 0x0E, 0x00, 
45345
  0x33, 0x00, 0x06, 0x10, 0x31, 0x11, 0x00, 0x00, 0x35, 0x0E, 0x04, 0x00, 0x49, 0x0F, 0x03, 0x0F, 
45346
  0x1C, 0xF8, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x0A, 0x4C, 0x00, 0x31, 0x06, 0x00, 0x00, 
45347
  0x2D, 0x0F, 0x00, 0x18, 0x35, 0x0E, 0x0F, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x03, 0x0F, 
45348
  0x1B, 0x0F, 0x0E, 0x00, 0x1F, 0x0F, 0x44, 0x00, 0x3A, 0x0E, 0x03, 0x0F, 0x1B, 0x10, 0x0F, 0x00, 
45349
  0x1B, 0x11, 0x0E, 0x00, 0x2C, 0x12, 0x0B, 0x00, 0x25, 0x0E, 0x11, 0x12, 0x1E, 0x0E, 0x39, 0x00, 
45350
  0x3F, 0x12, 0x03, 0x00, 0x31, 0x10, 0x00, 0x00, 0x2C, 0x14, 0x0C, 0x00, 0x35, 0x13, 0x14, 0x00, 
45351
  0x48, 0x14, 0x12, 0x13, 0x1E, 0x14, 0x05, 0x00, 0x2C, 0x12, 0x0D, 0x00, 0x31, 0x12, 0x00, 0x00, 
45352
  0x2C, 0x13, 0x0E, 0x00, 0x35, 0x12, 0x13, 0x00, 0x05, 0x12, 0x10, 0x02, 0x3F, 0x13, 0x03, 0x00, 
45353
  0x23, 0x14, 0x12, 0x13, 0x1E, 0x14, 0x0B, 0x00, 0x31, 0x10, 0x00, 0x00, 0x2C, 0x13, 0x0C, 0x00, 
45354
  0x35, 0x12, 0x13, 0x00, 0x32, 0x03, 0x12, 0x00, 0x2C, 0x15, 0x0F, 0x00, 0x35, 0x13, 0x15, 0x00, 
45355
  0x2C, 0x12, 0x10, 0x00, 0x32, 0x12, 0x13, 0x00, 0x2C, 0x15, 0x0E, 0x00, 0x35, 0x12, 0x15, 0x00, 
45356
  0x31, 0x10, 0x00, 0x00, 0x2C, 0x13, 0x0C, 0x00, 0x35, 0x12, 0x13, 0x00, 0x31, 0x12, 0x00, 0x00, 
45357
  0x35, 0x13, 0x03, 0x00, 0x31, 0x13, 0x00, 0x00, 0x2C, 0x14, 0x01, 0x00, 0x35, 0x12, 0x14, 0x00, 
45358
  0x2C, 0x14, 0x06, 0x00, 0x4A, 0x13, 0x12, 0x14, 0x1E, 0x13, 0x0A, 0x00, 0x31, 0x10, 0x00, 0x00, 
45359
  0x2C, 0x14, 0x0C, 0x00, 0x35, 0x12, 0x14, 0x00, 0x31, 0x12, 0x00, 0x00, 0x35, 0x14, 0x03, 0x00, 
45360
  0x2C, 0x12, 0x11, 0x00, 0x32, 0x12, 0x14, 0x00, 0x2C, 0x15, 0x0E, 0x00, 0x35, 0x12, 0x15, 0x00, 
45361
  0x31, 0x10, 0x00, 0x00, 0x2C, 0x13, 0x0C, 0x00, 0x35, 0x12, 0x13, 0x00, 0x31, 0x12, 0x00, 0x00, 
45362
  0x35, 0x13, 0x03, 0x00, 0x2C, 0x12, 0x0F, 0x00, 0x33, 0x12, 0x06, 0x10, 0x45, 0x12, 0x00, 0x00, 
45363
  0x31, 0x12, 0x00, 0x00, 0x40, 0x12, 0x00, 0x00, 0x3C, 0x00, 0x13, 0x12, 0x1C, 0x06, 0x00, 0x00, 
45364
  0x33, 0x00, 0x06, 0x10, 0x31, 0x11, 0x00, 0x00, 0x35, 0x0E, 0x04, 0x00, 0x49, 0x0F, 0x03, 0x0F, 
45365
  0x1C, 0xBD, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x10, 0x03, 0x00, 0x25, 0x0F, 0x08, 0x10, 
45366
  0x1B, 0x10, 0x0F, 0x00, 0x1E, 0x0F, 0x10, 0x00, 0x3F, 0x12, 0x03, 0x00, 0x2B, 0x14, 0x02, 0x00, 
45367
  0x25, 0x13, 0x14, 0x12, 0x1B, 0x12, 0x13, 0x00, 0x1E, 0x13, 0x08, 0x00, 0x2B, 0x14, 0x00, 0x00, 
45368
  0x31, 0x14, 0x00, 0x00, 0x35, 0x14, 0x03, 0x00, 0x2C, 0x16, 0x12, 0x00, 0x25, 0x15, 0x16, 0x14, 
45369
  0x1B, 0x11, 0x15, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x11, 0x12, 0x00, 0x1B, 0x0E, 0x11, 0x00, 
45370
  0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0E, 0x10, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 
45371
  0x04, 0x00, 0x00, 0x00, 0x2C, 0x11, 0x03, 0x00, 0x25, 0x10, 0x08, 0x11, 0x1B, 0x11, 0x10, 0x00, 
45372
  0x1E, 0x10, 0x06, 0x00, 0x3F, 0x12, 0x03, 0x00, 0x2B, 0x14, 0x02, 0x00, 0x47, 0x13, 0x12, 0x14, 
45373
  0x1B, 0x0F, 0x13, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 0x1E, 0x0F, 0x07, 0x00, 
45374
  0x2B, 0x10, 0x00, 0x00, 0x31, 0x10, 0x00, 0x00, 0x35, 0x10, 0x03, 0x00, 0x33, 0x00, 0x01, 0x02, 
45375
  0x31, 0x10, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x87, 0xBF, 
45376
  0x03, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x18, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
45377
  0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 
45378
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x36, 0x00, 
45379
  0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x10, 0x00, 
45380
  0x05, 0x04, 0x07, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x04, 0x12, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 
45381
  0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x0C, 
45382
  0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 
45383
  0x00, 0x3A, 0x00, 0x3A, 0x00, 0x3A, 0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45384
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF7, 0x05, 0x0A, 0x07, 0x00, 0x07, 0x03, 0x0B, 0x00, 
45385
  0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0xBF, 
45386
  0xF3, 0x05, 0x0E, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45387
  0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF2, 0x05, 
45388
  0x13, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
45389
  0x00, 0x09, 0x00, 0x09, 0x01, 0x11, 0x00, 0x11, 0x00, 0x0B, 0x01, 0x17, 0x00, 0x28, 0x00, 0x28, 
45390
  0x00, 0x28, 0x00, 0x13, 0x00, 0x0D, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 0x16, 
45391
  0x00, 0x1E, 0x00, 0x13, 0x00, 0x0D, 0x01, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x51, 0x00, 0x51, 
45392
  0x00, 0x51, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 0x28, 0x00, 0x28, 0x00, 0x28, 
45393
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0D, 
45394
  0x01, 0x53, 0x00, 0x53, 0x00, 0x53, 0x00, 0x4A, 0x00, 0x4A, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
45395
  0x00, 0x0F, 0x02, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x2A, 0x00, 0x2A, 
45396
  0x00, 0x2A, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x0D, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
45397
  0xBF, 0xF3, 0x09, 0x00, 0x09, 0x00, 0x09, 0x10, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 
45398
  0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 
45399
  0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 
45400
  0xDC, 0x05, 0x25, 0x07, 0x00, 0x07, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1D, 
45401
  0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xD8, 0x05, 0x2A, 0x2D, 0x00, 
45402
  0x2D, 0x00, 0x2D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xD6, 0x05, 0xCD, 0x00, 0xFC, 0x00, 
45403
  0x00, 0x19, 0x06, 0x06, 0x06, 0x12, 0x80, 0xD4, 0x01, 0x01, 0x2C, 0xCE, 0x0F, 0x76, 0x69, 0x73, 
45404
  0x69, 0x74, 0x2D, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x32, 0xDA, 0x04, 0xDA, 0x81, 
45405
  0x96, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x70, 0xDA, 0x75, 0xDA, 0x82, 0x9C, 0xDA, 0x30, 0xDA, 0x85, 
45406
  0xB9, 0xDA, 0x84, 0x14, 0xDA, 0x68, 0xDA, 0x61, 0xDA, 0x82, 0x56, 0xDA, 0x8B, 0x7A, 0xDA, 0x82, 
45407
  0x4F, 0xDA, 0x82, 0x98, 0xDA, 0x88, 0x1A, 0xDA, 0x8B, 0x7E, 0xDA, 0x86, 0x66, 0xBF, 0xFF, 0x00, 
45408
  0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0x49, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 
45409
  0x44, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0x4A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x8B, 0x4B, 0xBF, 
45410
  0xFF, 0x00, 0x07, 0xDA, 0x8B, 0x4C, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x8B, 0x4D, 0xBF, 0xFF, 0x00, 
45411
  0x0C, 0xDA, 0x83, 0xC5, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x8B, 0x4E, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 
45412
  0x8B, 0x4F, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x8B, 0x50, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x8B, 0x51, 
45413
  0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x8B, 0x52, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x8B, 0x53, 0xBF, 0xFF, 
45414
  0x00, 0x1A, 0xDA, 0x8B, 0x54, 0x00, 0x80, 0xD4, 0x00, 0xDA, 0x8B, 0x5C, 0x00, 0x80, 0xD4, 0x01, 
45415
  0xDA, 0x8B, 0x5A, 0x00, 0x80, 0xD4, 0x02, 0xDA, 0x8B, 0x5B, 0x00, 0x80, 0xD4, 0x03, 0xDA, 0x8B, 
45416
  0x72, 0x00, 0x80, 0xD4, 0x04, 0xDA, 0x82, 0xAD, 0x00, 0x80, 0xD4, 0x05, 0xDA, 0x88, 0xE8, 0x00, 
45417
  0x80, 0xD4, 0x06, 0xDA, 0x8B, 0x55, 0x08, 0x80, 0xD4, 0x08, 0xDA, 0x81, 0x2A, 0x0C, 0x80, 0xD4, 
45418
  0x0A, 0xDA, 0x82, 0x33, 0x0F, 0x20, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x50, 
45419
  0x15, 0x1F, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x51, 0x20, 0x80, 0xD4, 0x0C, 
45420
  0xDA, 0x8B, 0x81, 0x2C, 0x32, 0x0E, 0xCF, 0x08, 0x72, 0x65, 0x73, 0x74, 0x2D, 0x69, 0x64, 0x78, 
45421
  0x32, 0x3C, 0x0E, 0xCF, 0x0B, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x2D, 0x6C, 0x65, 0x6E, 
45422
  0x3E, 0x45, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x52, 0x45, 0x5D, 0x05, 0xCF, 
45423
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x54, 0x48, 0x5D, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
45424
  0x30, 0x30, 0x33, 0x53, 0x4B, 0x5C, 0x10, 0xDA, 0x43, 0x4C, 0x5C, 0x11, 0xDA, 0x8B, 0x87, 0x5D, 
45425
  0x6F, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x56, 0x60, 0x6F, 0x0F, 0xCF, 0x07, 
45426
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x55, 0x63, 0x6E, 0x10, 0xDA, 0x43, 0x64, 0x6E, 0x11, 0xDA, 
45427
  0x8B, 0x87, 0x76, 0x80, 0x88, 0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x58, 0x7B, 
45428
  0x80, 0x85, 0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x57, 0x80, 0x91, 0x80, 0xA3, 
45429
  0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x5A, 0x80, 0x96, 0x80, 0xA0, 0x14, 0xCF, 
45430
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x59, 0x80, 0xA8, 0x80, 0xB5, 0x11, 0xDA, 0x1E, 0x80, 
45431
  0xB7, 0x80, 0xBF, 0x13, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x30, 0x2E, 0x06, 0x00, 
45432
  0x00, 0x2C, 0x08, 0x00, 0x00, 0x25, 0x07, 0x05, 0x08, 0x1E, 0x07, 0x02, 0x00, 0x04, 0x00, 0x00, 
45433
  0x00, 0x32, 0x03, 0x04, 0x00, 0x2D, 0x08, 0x00, 0x16, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 
45434
  0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 
45435
  0x00, 0x2C, 0x0C, 0x02, 0x00, 0x25, 0x0B, 0x0A, 0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x1E, 0x0C, 0x03, 
45436
  0x00, 0x1B, 0x0B, 0x0C, 0x00, 0x1C, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x03, 0x00, 0x25, 0x0E, 0x0A, 
45437
  0x0F, 0x1B, 0x0F, 0x0E, 0x00, 0x1E, 0x0E, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x11, 0x04, 
45438
  0x00, 0x35, 0x10, 0x11, 0x00, 0x2C, 0x12, 0x05, 0x00, 0x25, 0x11, 0x10, 0x12, 0x1B, 0x0D, 0x11, 
45439
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0D, 0x0F, 0x00, 0x1B, 0x0B, 0x0D, 0x00, 0x1B, 0x0C, 0x0B, 
45440
  0x00, 0x1E, 0x0C, 0x1B, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x0E, 0x00, 0x18, 0x35, 0x0D, 0x0E, 
45441
  0x00, 0x32, 0x00, 0x0D, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x30, 0x0E, 0x00, 
45442
  0x00, 0x32, 0x0E, 0x05, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x0E, 0x0F, 
45443
  0x00, 0x1E, 0x0F, 0x03, 0x00, 0x1B, 0x0D, 0x0E, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x3F, 0x10, 0x05, 
45444
  0x00, 0x1B, 0x0D, 0x10, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2D, 0x0F, 0x00, 
45445
  0x18, 0x35, 0x0D, 0x0F, 0x00, 0x2C, 0x0F, 0x08, 0x00, 0x33, 0x0F, 0x0E, 0x0D, 0x45, 0x0D, 0x00, 
45446
  0x00, 0x32, 0x00, 0x0D, 0x00, 0x2C, 0x10, 0x06, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 0x0E, 0x09, 
45447
  0x00, 0x25, 0x0D, 0x0A, 0x0E, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x0D, 0x0E, 
45448
  0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x10, 0x0A, 0x00, 0x25, 0x0F, 0x0A, 0x10, 0x1B, 0x0D, 0x0F, 
45449
  0x00, 0x1E, 0x0D, 0x18, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x05, 0x0F, 0x1B, 0x0F, 0x0E, 
45450
  0x00, 0x1F, 0x0F, 0x13, 0x00, 0x3A, 0x0E, 0x05, 0x0F, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x11, 0x0E, 
45451
  0x00, 0x32, 0x08, 0x10, 0x00, 0x2D, 0x12, 0x00, 0x16, 0x35, 0x0E, 0x12, 0x00, 0x2C, 0x12, 0x0B, 
45452
  0x00, 0x28, 0x13, 0x00, 0x00, 0x33, 0x12, 0x13, 0x0E, 0x45, 0x0E, 0x00, 0x00, 0x32, 0x00, 0x0E, 
45453
  0x00, 0x2C, 0x13, 0x06, 0x00, 0x35, 0x12, 0x13, 0x00, 0x33, 0x00, 0x01, 0x02, 0x33, 0x08, 0x10, 
45454
  0x11, 0x35, 0x0E, 0x06, 0x00, 0x49, 0x0F, 0x05, 0x0F, 0x1C, 0xEE, 0xFF, 0xFF, 0x04, 0x00, 0x00, 
45455
  0x00, 0x1E, 0x0C, 0x12, 0x00, 0x28, 0x0F, 0x00, 0x00, 0x49, 0x0E, 0x05, 0x0F, 0x1B, 0x0F, 0x0E, 
45456
  0x00, 0x1F, 0x0F, 0x0D, 0x00, 0x3A, 0x0E, 0x05, 0x0F, 0x1B, 0x10, 0x0F, 0x00, 0x1B, 0x11, 0x0E, 
45457
  0x00, 0x2C, 0x12, 0x0C, 0x00, 0x25, 0x0E, 0x11, 0x12, 0x1E, 0x0E, 0x02, 0x00, 0x1C, 0x06, 0x00, 
45458
  0x00, 0x33, 0x00, 0x01, 0x02, 0x33, 0x08, 0x10, 0x11, 0x35, 0x0E, 0x06, 0x00, 0x49, 0x0F, 0x05, 
45459
  0x0F, 0x1C, 0xF4, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x0F, 0x0D, 0x00, 0x25, 0x0E, 0x0A, 
45460
  0x0F, 0x1E, 0x0E, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x11, 0x03, 
45461
  0x00, 0x25, 0x10, 0x0A, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x1E, 0x10, 0x10, 0x00, 0x3F, 0x13, 0x05, 
45462
  0x00, 0x2B, 0x15, 0x02, 0x00, 0x25, 0x14, 0x15, 0x13, 0x1B, 0x13, 0x14, 0x00, 0x1E, 0x14, 0x08, 
45463
  0x00, 0x2B, 0x15, 0x00, 0x00, 0x31, 0x15, 0x00, 0x00, 0x35, 0x15, 0x05, 0x00, 0x2C, 0x17, 0x0E, 
45464
  0x00, 0x25, 0x16, 0x17, 0x15, 0x1B, 0x12, 0x16, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x12, 0x13, 
45465
  0x00, 0x1B, 0x0F, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 0x1E, 0x0F, 0x07, 
45466
  0x00, 0x2C, 0x10, 0x0F, 0x00, 0x33, 0x10, 0x08, 0x05, 0x45, 0x10, 0x00, 0x00, 0x32, 0x00, 0x10, 
45467
  0x00, 0x2C, 0x11, 0x06, 0x00, 0x36, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x03, 0x00, 0x25, 0x11, 0x0A, 
45468
  0x12, 0x1B, 0x12, 0x11, 0x00, 0x1E, 0x11, 0x10, 0x00, 0x3F, 0x14, 0x05, 0x00, 0x2B, 0x16, 0x02, 
45469
  0x00, 0x25, 0x15, 0x16, 0x14, 0x1B, 0x14, 0x15, 0x00, 0x1E, 0x15, 0x08, 0x00, 0x2B, 0x16, 0x00, 
45470
  0x00, 0x31, 0x16, 0x00, 0x00, 0x35, 0x16, 0x05, 0x00, 0x2C, 0x18, 0x10, 0x00, 0x25, 0x17, 0x18, 
45471
  0x16, 0x1B, 0x13, 0x17, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x13, 0x14, 0x00, 0x1B, 0x10, 0x13, 
45472
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x10, 0x12, 0x00, 0x1E, 0x10, 0x12, 0x00, 0x2B, 0x11, 0x01, 
45473
  0x00, 0x31, 0x11, 0x00, 0x00, 0x35, 0x11, 0x05, 0x00, 0x3A, 0x12, 0x01, 0x11, 0x1B, 0x11, 0x12, 
45474
  0x00, 0x1E, 0x12, 0x04, 0x00, 0x32, 0x11, 0x08, 0x00, 0x2C, 0x13, 0x06, 0x00, 0x36, 0x13, 0x00, 
45475
  0x00, 0x2B, 0x13, 0x01, 0x00, 0x31, 0x13, 0x00, 0x00, 0x35, 0x13, 0x05, 0x00, 0x31, 0x08, 0x00, 
45476
  0x00, 0x40, 0x14, 0x00, 0x00, 0x1B, 0x15, 0x01, 0x00, 0x3C, 0x15, 0x13, 0x14, 0x03, 0x15, 0x00, 
45477
  0x00, 0x2C, 0x13, 0x03, 0x00, 0x25, 0x12, 0x0A, 0x13, 0x1B, 0x13, 0x12, 0x00, 0x1E, 0x12, 0x06, 
45478
  0x00, 0x3F, 0x14, 0x05, 0x00, 0x2B, 0x16, 0x02, 0x00, 0x47, 0x15, 0x14, 0x16, 0x1B, 0x11, 0x15, 
45479
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x11, 0x13, 0x00, 0x1E, 0x11, 0x0F, 0x00, 0x2B, 0x12, 0x01, 
45480
  0x00, 0x32, 0x05, 0x12, 0x00, 0x2C, 0x13, 0x11, 0x00, 0x35, 0x12, 0x13, 0x00, 0x31, 0x02, 0x00, 
45481
  0x00, 0x34, 0x12, 0x00, 0x00, 0x2C, 0x14, 0x06, 0x00, 0x35, 0x13, 0x14, 0x00, 0x2B, 0x12, 0x00, 
45482
  0x00, 0x31, 0x12, 0x00, 0x00, 0x35, 0x12, 0x05, 0x00, 0x33, 0x00, 0x01, 0x02, 0x33, 0x03, 0x04, 
45483
  0x12, 0x36, 0x06, 0x00, 0x00, 0x2C, 0x12, 0x0F, 0x00, 0x33, 0x12, 0x08, 0x05, 0x45, 0x12, 0x00, 
45484
  0x00, 0x32, 0x00, 0x12, 0x00, 0x2C, 0x13, 0x06, 0x00, 0x36, 0x13, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 
45485
  0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x01, 0xDA, 0x04, 0xDA, 0x8B, 
45486
  0x7A, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x2C, 0x02, 0x00, 0x00, 0x25, 0x01, 0x00, 0x02, 0x03, 0x01, 
45487
  0x00, 0x00, 0x87, 0xFA, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x87, 0xF1, 0x03, 0x02, 0x09, 0x00, 0x09, 
45488
  0x00, 0x05, 0x00, 0x18, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 
45489
  0x00, 0x0C, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
45490
  0x00, 0x26, 0x00, 0x26, 0x00, 0x21, 0x00, 0x21, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 
45491
  0x00, 0x33, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x01, 0x18, 
45492
  0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x27, 0x00, 0x1B, 0x00, 0x1B, 
45493
  0x00, 0x1B, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x02, 0x0B, 0xBF, 0xFE, 0x09, 0xBF, 
45494
  0xFF, 0x07, 0x04, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 
45495
  0x00, 0x07, 0x00, 0x07, 0x04, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45496
  0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0xBF, 0xFD, 0x05, 0x04, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
45497
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1A, 0x00, 
45498
  0x1A, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 
45499
  0x09, 0xBF, 0xFE, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFC, 0x05, 0x09, 0x07, 0x00, 0x07, 0x00, 
45500
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x09, 0x01, 
45501
  0x0B, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 0xFC, 0x07, 0x00, 0x07, 0x00, 0x07, 0x07, 0x07, 
45502
  0x00, 0x07, 0xBF, 0xF0, 0x05, 0x10, 0x15, 0x00, 0x15, 0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 
45503
  0x07, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x3A, 0x00, 0x3A, 0x00, 
45504
  0x3A, 0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
45505
  0x07, 0xBF, 0xED, 0x05, 0x14, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45506
  0x03, 0x0C, 0x00, 0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1E, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 
45507
  0x00, 0x07, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x30, 0x00, 0x30, 0x00, 0x07, 0x00, 0x07, 
45508
  0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xE9, 0x05, 0x18, 0x1A, 0x00, 0x1A, 0x00, 
45509
  0x1A, 0x00, 0x12, 0x00, 0x07, 0x00, 0x07, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 
45510
  0x12, 0x00, 0x12, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x0C, 0x00, 
45511
  0x0C, 0x00, 0x07, 0x00, 0x07, 0x00, 0x1D, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 
45512
  0x07, 0xBF, 0xE3, 0x05, 0x1F, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x09, 0x00, 0x09, 
45513
  0x00, 0x09, 0x00, 0x09, 0x01, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 
45514
  0x03, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x87, 0x9E, 0x15, 0x00, 
45515
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x0D, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
45516
  0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x01, 0x1E, 0x00, 0x29, 0x00, 0x29, 0x00, 0x29, 0x00, 
45517
  0x29, 0x00, 0x29, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 
45518
  0x11, 0x00, 0x03, 0x03, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
45519
  0x24, 0x00, 0x24, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x07, 0x00, 0x03, 0x00, 
45520
  0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x03, 0x03, 0x00, 0x03, 0x00, 
45521
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x02, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x02, 
45522
  0x03, 0x00, 0x03, 0x09, 0x03, 0x00, 0x03, 0x08, 0x03, 0x00, 0x03, 0x32, 0x03, 0x00, 0x03, 0x33, 
45523
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
45524
  0x03, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
45525
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 
45526
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 
45527
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x12, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
45528
  0x07, 0x01, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0xBF, 
45529
  0xFE, 0x05, 0x00, 0x05, 0x04, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45530
  0x00, 0x05, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45531
  0xBF, 0xFF, 0x05, 0x00, 0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 
45532
  0x05, 0x02, 0x0F, 0x00, 0x0F, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
45533
  0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
45534
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x3B, 0x00, 0x33, 0x00, 0x33, 0x00, 
45535
  0x33, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x02, 0x0D, 0x00, 0x0D, 0x00, 
45536
  0x0D, 0x00, 0x05, 0x00, 0x05, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 
45537
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
45538
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
45539
  0x05, 0x00, 0x05, 0xBF, 0xE9, 0x03, 0x00, 0x03, 0x1A, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 
45540
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45541
  0x00, 0x03, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x07, 
45542
  0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFF, 0x07, 0x03, 0x1F, 0x00, 0x19, 0x00, 0x19, 0x00, 
45543
  0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0xBF, 
45544
  0xFE, 0x19, 0x00, 0x19, 0x03, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 
45545
  0x00, 0x1B, 0xBF, 0xFD, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 
45546
  0xBF, 0xFE, 0x07, 0x07, 0x1F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x09, 0x00, 
45547
  0x09, 0x00, 0x09, 0xBF, 0xF7, 0x05, 0x0A, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xF5, 0x03, 0x00, 
45548
  0x03, 0x0D, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
45549
  0x03, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0xCF, 0x04, 0x64, 0x65, 0x66, 0x2D, 0xD7, 
45550
  0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 
45551
  0x00, 0x03, 0xCE, 0x04, 0x64, 0x65, 0x66, 0x2D, 0xDA, 0x04, 0xDA, 0x80, 0xAB, 0xDA, 0x85, 0xEC, 
45552
  0x00, 0x06, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x06, 0x01, 0xDA, 0x86, 0x6A, 0x00, 0x06, 0x02, 0xDA, 
45553
  0x8B, 0x9C, 0x2C, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x04, 0x00, 0x05, 0x34, 0x01, 
45554
  0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x49, 0x03, 0x00, 0x03, 0x00, 0x03, 
45555
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x03, 0x74, 0x72, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 
45556
  0x00, 0x00, 0x0C, 0x02, 0x02, 0x02, 0x11, 0x52, 0x00, 0x0B, 0xDA, 0x81, 0x99, 0xDA, 0x04, 0xDA, 
45557
  0x81, 0x5A, 0xDA, 0x82, 0x51, 0xDA, 0x2B, 0xCE, 0x35, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
45558
  0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x63, 
45559
  0x61, 0x74, 0x63, 0x68, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 
45560
  0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0xDA, 0x5C, 
45561
  0xDA, 0x80, 0xAE, 0xD0, 0x03, 0x74, 0x72, 0x79, 0xDA, 0x80, 0xDC, 0xDA, 0x81, 0x8D, 0xDA, 0x83, 
45562
  0x43, 0xDA, 0x80, 0xDE, 0xDA, 0x87, 0xA6, 0xDA, 0x0E, 0xDA, 0x2C, 0xDA, 0x80, 0xB3, 0xDA, 0x82, 
45563
  0x81, 0xDA, 0x83, 0xF7, 0x00, 0x52, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x52, 0x01, 0xCF, 0x05, 0x63, 
45564
  0x61, 0x74, 0x63, 0x68, 0x00, 0x52, 0x02, 0xDA, 0x8B, 0x9F, 0x06, 0x11, 0x04, 0xCF, 0x07, 0x5F, 
45565
  0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x11, 0x16, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
45566
  0x30, 0x33, 0x1A, 0x52, 0x05, 0xDA, 0x85, 0x93, 0x1C, 0x52, 0x06, 0xDA, 0x87, 0xCB, 0x1C, 0x23, 
45567
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x23, 0x52, 0x04, 0xDA, 0x82, 0xCD, 
45568
  0x23, 0x2A, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x2A, 0x52, 0x07, 0xDA, 
45569
  0x31, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x31, 0x04, 0x00, 
45570
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x1E, 0x05, 0x09, 
45571
  0x00, 0x2B, 0x06, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x35, 0x06, 0x01, 0x00, 0x31, 0x06, 0x00, 
45572
  0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x02, 0x00, 
45573
  0x00, 0x1B, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x1C, 0x03, 0x00, 
45574
  0x00, 0x2C, 0x03, 0x03, 0x00, 0x01, 0x03, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 
45575
  0x00, 0x35, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 
45576
  0x01, 0x1B, 0x06, 0x04, 0x00, 0x1E, 0x05, 0x03, 0x00, 0x1B, 0x03, 0x05, 0x00, 0x1C, 0x04, 0x00, 
45577
  0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x04, 0x07, 0x00, 0x1B, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 
45578
  0x00, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x08, 0x04, 
45579
  0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1B, 0x07, 0x03, 0x00, 0x46, 0x03, 0x00, 
45580
  0x00, 0x2C, 0x09, 0x05, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x33, 0x09, 0x0A, 0x03, 0x31, 0x00, 0x00, 
45581
  0x00, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x2C, 0x0A, 0x08, 0x00, 0x33, 0x09, 0x08, 
45582
  0x0A, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x09, 0x00, 0x32, 0x09, 0x07, 0x00, 0x45, 0x08, 0x00, 
45583
  0x00, 0x33, 0x07, 0x03, 0x04, 0x31, 0x08, 0x00, 0x00, 0x46, 0x09, 0x00, 0x00, 0x2C, 0x08, 0x0A, 
45584
  0x00, 0x32, 0x08, 0x07, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x0A, 0x0B, 0x00, 0x2C, 0x0B, 0x0C, 
45585
  0x00, 0x33, 0x0A, 0x03, 0x0B, 0x45, 0x08, 0x00, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x32, 0x01, 0x03, 
45586
  0x00, 0x2C, 0x0A, 0x0D, 0x00, 0x35, 0x03, 0x0A, 0x00, 0x2C, 0x0B, 0x0E, 0x00, 0x31, 0x0B, 0x00, 
45587
  0x00, 0x34, 0x03, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x0F, 0x00, 0x33, 0x0B, 0x08, 
45588
  0x0A, 0x31, 0x04, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x0A, 0x10, 0x00, 0x33, 0x0A, 0x09, 
45589
  0x03, 0x45, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x81, 0x5D, 0x15, 0x00, 0x15, 0x00, 0x15, 
45590
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 
45591
  0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 
45592
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x03, 0x00, 0x03, 
45593
  0x00, 0x03, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 
45594
  0xBF, 0xFF, 0x03, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x13, 0x00, 0x13, 0x00, 0x0B, 0xBF, 
45595
  0xFE, 0x03, 0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45596
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45597
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45598
  0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFD, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
45599
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
45600
  0x05, 0xCF, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0xD8, 
45601
  0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0xCF, 0x09, 0x6E, 
45602
  0x65, 0x74, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0xD8, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x66, 0x6C, 
45603
  0x75, 0x73, 0x68, 0xDA, 0x83, 0x80, 0xDA, 0x83, 0x7E, 0xCF, 0x0A, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 
45604
  0x69, 0x73, 0x74, 0x65, 0x6E, 0xDA, 0x83, 0xB5, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 
45605
  0x78, 0x70, 0x6D, 0x31, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x6D, 0x31, 
45606
  0xCF, 0x04, 0x70, 0x6F, 0x73, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 
45607
  0x01, 0x01, 0x06, 0x00, 0x02, 0xCE, 0x04, 0x70, 0x6F, 0x73, 0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 
45608
  0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8B, 0xAF, 0x2B, 0x02, 0x00, 0x00, 0x32, 
45609
  0x00, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 0x01, 0x03, 
45610
  0x03, 0x00, 0x00, 0x83, 0x90, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 
45611
  0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x75, 
45612
  0x6D, 0x61, 0x73, 0x6B, 0xDA, 0x86, 0x7A, 0xDA, 0x86, 0x75, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x73, 
45613
  0x65, 0x74, 0x65, 0x6E, 0x76, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 
45614
  0xCF, 0x05, 0x74, 0x72, 0x75, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 
45615
  0x01, 0x01, 0x00, 0x03, 0x00, 0x02, 0xCE, 0x05, 0x74, 0x72, 0x75, 0x65, 0x3F, 0xDA, 0x04, 0x00, 
45616
  0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8B, 0xB6, 0x29, 0x03, 0x00, 0x00, 0x25, 0x02, 
45617
  0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x73, 0x27, 0x00, 0x27, 0x00, 0x27, 0xCF, 0x04, 0x6A, 0x75, 
45618
  0x78, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
45619
  0xFF, 0x09, 0x24, 0x00, 0x07, 0xCE, 0x04, 0x6A, 0x75, 0x78, 0x74, 0xDA, 0x04, 0xCF, 0x05, 0x74, 
45620
  0x75, 0x70, 0x6C, 0x65, 0xDA, 0x5C, 0xDA, 0x8B, 0x18, 0xDA, 0x82, 0xB5, 0xDA, 0x30, 0xDA, 0x8B, 
45621
  0x7A, 0xDA, 0x2C, 0xDA, 0x80, 0xAE, 0xD0, 0x04, 0x6A, 0x75, 0x78, 0x74, 0x00, 0x24, 0x00, 0xCF, 
45622
  0x04, 0x66, 0x75, 0x6E, 0x73, 0x00, 0x24, 0x01, 0xDA, 0x8B, 0xB9, 0x03, 0x24, 0x03, 0xDA, 0x38, 
45623
  0x06, 0x24, 0x05, 0xCF, 0x05, 0x24, 0x61, 0x72, 0x67, 0x73, 0x06, 0x16, 0x00, 0xCF, 0x07, 0x5F, 
45624
  0x30, 0x30, 0x30, 0x30, 0x32, 0x6A, 0x09, 0x16, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
45625
  0x32, 0x69, 0x0C, 0x16, 0x08, 0xDA, 0x31, 0x2C, 0x02, 0x00, 0x00, 0x31, 0x02, 0x00, 0x00, 0x40, 
45626
  0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1B, 
45627
  0x05, 0x04, 0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 0x06, 0x00, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 
45628
  0x07, 0x0C, 0x00, 0x3A, 0x06, 0x00, 0x07, 0x1B, 0x08, 0x06, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x33, 
45629
  0x06, 0x08, 0x05, 0x2C, 0x09, 0x03, 0x00, 0x35, 0x06, 0x09, 0x00, 0x32, 0x03, 0x06, 0x00, 0x2C, 
45630
  0x0A, 0x04, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x49, 0x07, 0x00, 0x07, 0x1C, 0xF5, 0xFF, 0xFF, 0x2C, 
45631
  0x06, 0x05, 0x00, 0x32, 0x06, 0x05, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2B, 
45632
  0x07, 0x00, 0x00, 0x32, 0x03, 0x07, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 
45633
  0x08, 0x07, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x33, 0x08, 0x09, 0x06, 0x31, 0x07, 0x00, 0x00, 0x2C, 
45634
  0x08, 0x03, 0x00, 0x36, 0x08, 0x00, 0x00, 0x85, 0x28, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45635
  0x01, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45636
  0x00, 0x03, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45637
  0xBF, 0xFF, 0x03, 0x00, 0x03, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x25, 0x00, 
45638
  0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
45639
  0x03, 0xCF, 0x0C, 0x61, 0x6C, 0x6C, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xD7, 
45640
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x02, 0x00, 0x02, 0x02, 0x04, 0x00, 0x03, 0xCE, 0x0C, 
45641
  0x61, 0x6C, 0x6C, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0xDA, 0x04, 0xDA, 0x82, 
45642
  0x95, 0xDA, 0x83, 0x52, 0x00, 0x04, 0x00, 0xDA, 0x83, 0x4A, 0x00, 0x04, 0x01, 0xDA, 0x83, 0x5F, 
45643
  0x00, 0x04, 0x02, 0xDA, 0x8B, 0xC2, 0x2C, 0x03, 0x00, 0x00, 0x33, 0x03, 0x00, 0x01, 0x2C, 0x03, 
45644
  0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0x8C, 0x9D, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 
45645
  0x09, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x3F, 0xD8, 0x09, 0x61, 0x62, 0x73, 0x74, 
45646
  0x72, 0x61, 0x63, 0x74, 0x3F, 0xCF, 0x0C, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2F, 0x73, 0x6C, 
45647
  0x69, 0x63, 0x65, 0xD8, 0x0C, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2F, 0x73, 0x6C, 0x69, 0x63, 
45648
  0x65, 0xCF, 0x07, 0x65, 0x78, 0x74, 0x72, 0x65, 0x6D, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
45649
  0x00, 0x07, 0x02, 0x02, 0x02, 0x00, 0x0F, 0x00, 0x07, 0xCE, 0x07, 0x65, 0x78, 0x74, 0x72, 0x65, 
45650
  0x6D, 0x65, 0xDA, 0x04, 0x00, 0x0F, 0x00, 0xDA, 0x88, 0x73, 0x00, 0x0F, 0x01, 0xDA, 0x81, 0x4D, 
45651
  0x00, 0x0F, 0x02, 0xDA, 0x8B, 0xC9, 0x00, 0x0F, 0x01, 0xDA, 0x82, 0x62, 0x02, 0x0F, 0x04, 0xDA, 
45652
  0x3A, 0x04, 0x0F, 0x05, 0xDA, 0x39, 0x08, 0x0E, 0x06, 0xDA, 0x1E, 0x28, 0x04, 0x00, 0x00, 0x49, 
45653
  0x03, 0x01, 0x04, 0x1B, 0x04, 0x03, 0x00, 0x3B, 0x03, 0x01, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x49, 
45654
  0x04, 0x01, 0x04, 0x1F, 0x04, 0x08, 0x00, 0x3A, 0x03, 0x01, 0x04, 0x1B, 0x06, 0x03, 0x00, 0x32, 
45655
  0x06, 0x05, 0x00, 0x35, 0x03, 0x00, 0x00, 0x1E, 0x03, 0x02, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 
45656
  0xF8, 0xFF, 0xFF, 0x03, 0x05, 0x00, 0x00, 0x83, 0x32, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
45657
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
45658
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 
45659
  0x76, 0xDA, 0x88, 0xD9, 0xDA, 0x80, 0xB9, 0xD7, 0x01, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 
45660
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x06, 0x01, 0x08, 0xCE, 0x0C, 0x65, 0x76, 0x2F, 0x77, 
45661
  0x69, 0x74, 0x68, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x83, 0x36, 0xDA, 0x88, 0x38, 
45662
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xB5, 0xBF, 0xFF, 
45663
  0x00, 0x03, 0xDA, 0x80, 0xB6, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 
45664
  0xDA, 0x80, 0xB8, 0x00, 0x06, 0x00, 0xDA, 0x80, 0xCD, 0x00, 0x06, 0x01, 0xDA, 0x80, 0xC7, 0x00, 
45665
  0x06, 0x02, 0xDA, 0x80, 0xB9, 0x2C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 
45666
  0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x05, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 
45667
  0x0E, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDB, 0x00, 0xCF, 0x0E, 
45668
  0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xD8, 0x0E, 
45669
  0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xCF, 0x11, 
45670
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 
45671
  0x73, 0xD8, 0x11, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x76, 0x61, 
45672
  0x6C, 0x75, 0x65, 0x73, 0xCF, 0x06, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 
45673
  0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x03, 0x00, 0x02, 0xCE, 0x06, 0x66, 0x61, 0x6C, 
45674
  0x73, 0x65, 0x3F, 0xDA, 0x04, 0x00, 0x03, 0x00, 0xDA, 0x1E, 0x00, 0x03, 0x01, 0xDA, 0x8B, 0xD3, 
45675
  0x2A, 0x03, 0x00, 0x00, 0x25, 0x02, 0x00, 0x03, 0x03, 0x02, 0x00, 0x00, 0x74, 0x29, 0x00, 0x29, 
45676
  0x00, 0x29, 0xDA, 0x81, 0x85, 0xDA, 0x81, 0x82, 0xDA, 0x80, 0xB7, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
45677
  0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0x00, 0x02, 0xCE, 0x0C, 
45678
  0x65, 0x76, 0x2F, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x04, 0xDA, 0x8B, 
45679
  0x7A, 0xDA, 0x80, 0xAE, 0xD0, 0x09, 0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 
45680
  0x88, 0xA2, 0x00, 0x0C, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x0C, 0x01, 0xDA, 0x80, 0xB7, 0x2C, 0x03, 
45681
  0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x2C, 0x05, 
45682
  0x02, 0x00, 0x33, 0x04, 0x05, 0x02, 0x34, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x04, 
45683
  0x03, 0x00, 0x32, 0x04, 0x03, 0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8F, 0x00, 
45684
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
45685
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x10, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 
45686
  0x61, 0x64, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 
45687
  0x15, 0x02, 0x02, 0x02, 0x0E, 0x41, 0x00, 0x01, 0x09, 0xCE, 0x10, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
45688
  0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0xDA, 0x04, 0xDA, 0x81, 0xB2, 
45689
  0xDA, 0x81, 0xB3, 0xDA, 0x81, 0x26, 0xCE, 0x06, 0x3A, 0x40, 0x61, 0x6C, 0x6C, 0x3A, 0xDA, 0x81, 
45690
  0x28, 0xDA, 0x81, 0xE6, 0xDA, 0x88, 0xE2, 0xCE, 0x06, 0x2E, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0xDA, 
45691
  0x81, 0xDB, 0xDA, 0x88, 0xE1, 0xCE, 0x0B, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 
45692
  0x6C, 0x3A, 0xDA, 0x81, 0xCD, 0xCE, 0x0B, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x2F, 0x3A, 0x61, 0x6C, 
45693
  0x6C, 0x3A, 0xDA, 0x81, 0xC0, 0x00, 0x41, 0x00, 0xCF, 0x03, 0x65, 0x78, 0x74, 0x00, 0x41, 0x01, 
45694
  0xCF, 0x06, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x00, 0x41, 0x02, 0xDA, 0x8B, 0xD9, 0x05, 0x41, 
45695
  0x04, 0xDA, 0x82, 0x26, 0x07, 0x41, 0x06, 0xCF, 0x0B, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x70, 0x72, 
45696
  0x65, 0x66, 0x69, 0x78, 0x0B, 0x41, 0x08, 0xCF, 0x09, 0x64, 0x79, 0x6E, 0x2D, 0x69, 0x6E, 0x64, 
45697
  0x65, 0x78, 0x19, 0x41, 0x0B, 0xCF, 0x09, 0x61, 0x6C, 0x6C, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 
45698
  0x27, 0x41, 0x0E, 0xCF, 0x09, 0x73, 0x79, 0x73, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x35, 0x41, 
45699
  0x11, 0xCF, 0x0C, 0x63, 0x75, 0x72, 0x61, 0x6C, 0x6C, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2C, 
45700
  0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 
45701
  0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x30, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 
45702
  0x07, 0x03, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x07, 0x06, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 
45703
  0x09, 0x03, 0x00, 0x32, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x04, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2C, 
45704
  0x0A, 0x05, 0x00, 0x33, 0x09, 0x01, 0x0A, 0x45, 0x09, 0x00, 0x00, 0x33, 0x04, 0x08, 0x09, 0x2C, 
45705
  0x0B, 0x06, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x09, 0x07, 0x00, 0x31, 0x09, 0x00, 0x00, 0x35, 
45706
  0x09, 0x06, 0x00, 0x1B, 0x0B, 0x09, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x32, 0x0C, 0x00, 0x00, 0x2C, 
45707
  0x0D, 0x04, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x33, 0x0C, 0x01, 0x0D, 0x45, 
45708
  0x0C, 0x00, 0x00, 0x33, 0x04, 0x0B, 0x0C, 0x2C, 0x0E, 0x06, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 
45709
  0x0C, 0x09, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x35, 0x0C, 0x06, 0x00, 0x1B, 0x0E, 0x0C, 0x00, 0x2C, 
45710
  0x0F, 0x0A, 0x00, 0x32, 0x0F, 0x00, 0x00, 0x2C, 0x10, 0x04, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x2C, 
45711
  0x10, 0x0B, 0x00, 0x33, 0x0F, 0x01, 0x10, 0x45, 0x0F, 0x00, 0x00, 0x33, 0x04, 0x0E, 0x0F, 0x2C, 
45712
  0x11, 0x06, 0x00, 0x35, 0x10, 0x11, 0x00, 0x2C, 0x0F, 0x0C, 0x00, 0x31, 0x0F, 0x00, 0x00, 0x35, 
45713
  0x0F, 0x06, 0x00, 0x1B, 0x11, 0x0F, 0x00, 0x2C, 0x12, 0x0C, 0x00, 0x32, 0x12, 0x00, 0x00, 0x2C, 
45714
  0x13, 0x04, 0x00, 0x35, 0x12, 0x13, 0x00, 0x2C, 0x13, 0x0D, 0x00, 0x33, 0x12, 0x01, 0x13, 0x45, 
45715
  0x12, 0x00, 0x00, 0x33, 0x04, 0x11, 0x12, 0x2C, 0x14, 0x06, 0x00, 0x35, 0x13, 0x14, 0x00, 0x03, 
45716
  0x04, 0x00, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x01, 0x0A, 0x01, 0x01, 
45717
  0x07, 0xCE, 0x0B, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0xDA, 0x04, 
45718
  0xDA, 0x85, 0xB9, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8B, 0xE0, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 
45719
  0xE1, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8B, 0xD9, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x82, 0x26, 0x00, 
45720
  0x0A, 0x00, 0xCF, 0x03, 0x70, 0x72, 0x65, 0x00, 0x0A, 0x01, 0xDA, 0x8B, 0xE2, 0x05, 0x0A, 0x02, 
45721
  0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6E, 0x30, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 
45722
  0x04, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 
45723
  0x00, 0x1E, 0x02, 0x02, 0x00, 0x03, 0x02, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 
45724
  0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x10, 0x01, 0x04, 
45725
  0xCE, 0x08, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0xDA, 0x04, 0xDA, 0x82, 0x30, 0xDA, 
45726
  0x81, 0xBB, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8B, 0xE8, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x8B, 0xE2, 
45727
  0x00, 0x10, 0x00, 0xCF, 0x09, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x6F, 0x24, 0x30, 0x06, 0x10, 
45728
  0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x70, 0x2B, 0x01, 0x00, 0x00, 0x31, 0x01, 
45729
  0x00, 0x00, 0x35, 0x01, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 
45730
  0x03, 0x00, 0x1B, 0x01, 0x02, 0x00, 0x1E, 0x02, 0x08, 0x00, 0x2B, 0x03, 0x00, 0x00, 0x31, 0x03, 
45731
  0x00, 0x00, 0x35, 0x03, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x04, 
45732
  0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8B, 0x3F, 0x24, 0x00, 
45733
  0x24, 0x00, 0x24, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x15, 0x00, 0x15, 0x00, 0x43, 0x00, 
45734
  0x43, 0x00, 0x43, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0x00, 0x15, 0x8B, 0x3F, 0x15, 
45735
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45736
  0x00, 0x05, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x3C, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
45737
  0x0B, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 
45738
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x03, 0x00, 
45739
  0x03, 0x00, 0x03, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x1F, 0x00, 0x1F, 0x00, 
45740
  0x1F, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 
45741
  0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x03, 0x01, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
45742
  0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 
45743
  0x15, 0x00, 0x03, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x21, 0x00, 0x21, 0x00, 
45744
  0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xEC, 0x01, 0x10, 0x00, 0x00, 0x00, 0xCF, 0x0C, 
45745
  0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xDA, 0x84, 0xBA, 0xDA, 
45746
  0x8A, 0x19, 0xDA, 0x8A, 0x0C, 0xCF, 0x10, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 
45747
  0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0xDA, 0x80, 0xE5, 0xCF, 0x0C, 0x2A, 0x65, 0x78, 0x65, 
45748
  0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2A, 0xDA, 0x89, 0x4D, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 
45749
  0x77, 0x68, 0x69, 0x63, 0x68, 0xDA, 0x81, 0x1D, 0xCF, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
45750
  0x2F, 0x62, 0x69, 0x74, 0x2D, 0x73, 0x65, 0x74, 0xD8, 0x0E, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
45751
  0x2F, 0x62, 0x69, 0x74, 0x2D, 0x73, 0x65, 0x74, 0xCF, 0x04, 0x61, 0x73, 0x2D, 0x3E, 0xD7, 0x00, 
45752
  0xCD, 0x02, 0xFF, 0x00, 0x00, 0x07, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x07, 0x00, 
45753
  0x02, 0x05, 0xCE, 0x04, 0x61, 0x73, 0x2D, 0x3E, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x5D, 0xDA, 0x83, 
45754
  0xF7, 0x00, 0x07, 0x00, 0xDA, 0x1E, 0x00, 0x07, 0x01, 0xDA, 0x80, 0x84, 0x00, 0x07, 0x02, 0xDA, 
45755
  0x80, 0x85, 0x00, 0x07, 0x03, 0xDA, 0x8B, 0xF3, 0x00, 0x07, 0x04, 0xDA, 0x80, 0x86, 0x1B, 0x04, 
45756
  0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x02, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x30, 0x05, 
45757
  0x01, 0x00, 0x35, 0x05, 0x05, 0x00, 0x03, 0x04, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 
45758
  0x01, 0x01, 0x01, 0x00, 0x06, 0x01, 0x06, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 
45759
  0xFF, 0x00, 0x01, 0xDA, 0x80, 0x84, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 
45760
  0x03, 0xDA, 0x8B, 0xF3, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x80, 0x86, 0x00, 0x06, 0x00, 0xDA, 0x80, 
45761
  0x87, 0x2D, 0x02, 0x00, 0x01, 0x25, 0x01, 0x00, 0x02, 0x1E, 0x01, 0x03, 0x00, 0x2D, 0x02, 0x00, 
45762
  0x08, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x85, 0xD1, 0x2A, 0x00, 0x2A, 
45763
  0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x07, 0x00, 0x00, 
45764
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x1C, 0x01, 0x01, 0x05, 0xDA, 0x80, 0x88, 0xDA, 0x04, 0xDA, 
45765
  0x5C, 0xDA, 0x5D, 0xDA, 0x83, 0xF7, 0xBF, 0xFF, 0x00, 0x02, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45766
  0x30, 0x32, 0x73, 0xBF, 0xFF, 0x00, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x72, 
45767
  0x06, 0x1C, 0x01, 0xDA, 0x64, 0x09, 0x1C, 0x02, 0xDA, 0x80, 0x8B, 0x0E, 0x1C, 0x00, 0xDA, 0x80, 
45768
  0x8C, 0x2D, 0x00, 0x00, 0x06, 0x20, 0x00, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 
45769
  0x02, 0x2D, 0x02, 0x00, 0x06, 0x3A, 0x00, 0x01, 0x02, 0x1B, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 
45770
  0x00, 0x35, 0x00, 0x02, 0x00, 0x1B, 0x02, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x32, 0x00, 0x01, 
45771
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x00, 0x03, 0x00, 0x2D, 0x04, 0x00, 
45772
  0x04, 0x32, 0x02, 0x04, 0x00, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x05, 0x03, 
45773
  0x00, 0x45, 0x04, 0x00, 0x00, 0x2F, 0x04, 0x00, 0x04, 0x2D, 0x05, 0x00, 0x02, 0x2D, 0x06, 0x00, 
45774
  0x06, 0x49, 0x03, 0x05, 0x06, 0x2F, 0x03, 0x00, 0x06, 0x2E, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 
45775
  0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x06, 0x02, 0x08, 
45776
  0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x1E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 0x84, 0xBF, 
45777
  0xFF, 0x00, 0x02, 0xDA, 0x80, 0x85, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x8B, 0xF3, 0xBF, 0xFF, 0x00, 
45778
  0x04, 0xDA, 0x80, 0x86, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x64, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x80, 
45779
  0x8B, 0x00, 0x06, 0x00, 0xDA, 0x80, 0x87, 0x2D, 0x02, 0x00, 0x01, 0x25, 0x01, 0x00, 0x02, 0x1E, 
45780
  0x01, 0x03, 0x00, 0x2D, 0x02, 0x01, 0x02, 0x03, 0x02, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 
45781
  0xBF, 0xFF, 0x85, 0xD1, 0x2A, 0x00, 0x2A, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x85, 
45782
  0xCF, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0E, 
45783
  0x00, 0x0E, 0x00, 0x05, 0x01, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 0x01, 0x0F, 
45784
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x03, 0x00, 
45785
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 0x00, 0x00, 0x00, 0x85, 0xCE, 0x03, 
45786
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0x56, 0x01, 0x00, 
45787
  0x00, 0xCF, 0x07, 0x7A, 0x69, 0x70, 0x63, 0x6F, 0x6C, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
45788
  0x00, 0x09, 0x02, 0x02, 0x02, 0x00, 0x13, 0x00, 0x06, 0xCE, 0x07, 0x7A, 0x69, 0x70, 0x63, 0x6F, 
45789
  0x6C, 0x6C, 0xDA, 0x04, 0x00, 0x13, 0x00, 0xDA, 0x83, 0x72, 0x00, 0x13, 0x01, 0xCF, 0x02, 0x76, 
45790
  0x73, 0x00, 0x13, 0x02, 0xDA, 0x8B, 0xF8, 0x01, 0x13, 0x04, 0xDA, 0x7E, 0x02, 0x13, 0x05, 0xCF, 
45791
  0x02, 0x6B, 0x6B, 0x03, 0x13, 0x06, 0xCF, 0x02, 0x76, 0x6B, 0x44, 0x03, 0x00, 0x00, 0x1B, 0x04, 
45792
  0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x28, 0x06, 0x00, 0x00, 0x49, 0x05, 0x00, 0x05, 0x28, 0x08, 
45793
  0x00, 0x00, 0x25, 0x07, 0x08, 0x05, 0x1E, 0x07, 0x02, 0x00, 0x1C, 0x0A, 0x00, 0x00, 0x49, 0x06, 
45794
  0x01, 0x06, 0x28, 0x08, 0x00, 0x00, 0x25, 0x07, 0x08, 0x06, 0x1E, 0x07, 0x02, 0x00, 0x1C, 0x05, 
45795
  0x00, 0x00, 0x3A, 0x07, 0x00, 0x05, 0x3A, 0x08, 0x01, 0x06, 0x3C, 0x04, 0x07, 0x08, 0x1C, 0xF3, 
45796
  0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x86, 0x47, 0x03, 0x00, 0x03, 0x01, 0x03, 0x01, 0x03, 0x02, 
45797
  0x0D, 0x01, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x14, 0x01, 0x0D, 0x01, 0x09, 0x00, 0x09, 0x00, 
45798
  0x05, 0x00, 0x14, 0x01, 0x0E, 0x00, 0x19, 0x00, 0x05, 0xBF, 0xFB, 0x03, 0xBF, 0xF9, 0x01, 0xCF, 
45799
  0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0xDA, 0x88, 0xE2, 
45800
  0xCF, 0x0F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 
45801
  0x65, 0xDA, 0x83, 0x92, 0xDA, 0x86, 0x30, 0xDA, 0x86, 0x2E, 0xCF, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 
45802
  0x6C, 0x65, 0x2F, 0x63, 0x61, 0x63, 0x68, 0x65, 0xDA, 0x81, 0xB6, 0xCF, 0x06, 0x6C, 0x65, 0x6E, 
45803
  0x67, 0x74, 0x68, 0xDA, 0x8B, 0x76, 0xCF, 0x11, 0x2A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2D, 
45804
  0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x2A, 0xDA, 0x81, 0xA2, 0xDA, 0x41, 0xDA, 0x3E, 
45805
  0xCF, 0x0E, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 
45806
  0xD8, 0x0E, 0x6E, 0x65, 0x74, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 
45807
  0xCF, 0x06, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0xDA, 0x81, 0x28, 0xCF, 0x0C, 0x70, 0x61, 0x72, 
45808
  0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
45809
  0x0E, 0x02, 0x02, 0x02, 0x01, 0x26, 0x00, 0x0B, 0xCE, 0x0C, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 
45810
  0x69, 0x6F, 0x6E, 0x2D, 0x62, 0x79, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x26, 0x00, 0xDA, 0x31, 0x00, 
45811
  0x26, 0x01, 0xDA, 0x33, 0x00, 0x26, 0x02, 0xDA, 0x8C, 0x06, 0x01, 0x26, 0x04, 0xDA, 0x39, 0x02, 
45812
  0x26, 0x05, 0xCF, 0x04, 0x73, 0x70, 0x61, 0x6E, 0x03, 0x26, 0x06, 0xCF, 0x08, 0x63, 0x61, 0x74, 
45813
  0x65, 0x67, 0x6F, 0x72, 0x79, 0x04, 0x26, 0x07, 0xCF, 0x06, 0x69, 0x73, 0x2D, 0x6E, 0x65, 0x77, 
45814
  0x04, 0x25, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x72, 0x07, 0x25, 0x09, 0xCF, 
45815
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x71, 0x0A, 0x25, 0x0A, 0xDA, 0x1E, 0x0D, 0x25, 0x0B, 
45816
  0xDA, 0x80, 0x87, 0x40, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 0x00, 0x28, 
45817
  0x06, 0x00, 0x00, 0x29, 0x07, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x49, 0x08, 0x01, 0x09, 0x1B, 
45818
  0x09, 0x08, 0x00, 0x1F, 0x09, 0x1D, 0x00, 0x3A, 0x08, 0x01, 0x09, 0x1B, 0x0A, 0x08, 0x00, 0x31, 
45819
  0x0A, 0x00, 0x00, 0x35, 0x08, 0x00, 0x00, 0x1B, 0x0B, 0x08, 0x00, 0x1E, 0x07, 0x09, 0x00, 0x2A, 
45820
  0x07, 0x00, 0x00, 0x1B, 0x06, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x32, 
45821
  0x04, 0x05, 0x00, 0x2C, 0x0C, 0x00, 0x00, 0x35, 0x08, 0x0C, 0x00, 0x1C, 0x0D, 0x00, 0x00, 0x25, 
45822
  0x08, 0x0B, 0x06, 0x1E, 0x08, 0x05, 0x00, 0x32, 0x05, 0x0A, 0x00, 0x2C, 0x0D, 0x00, 0x00, 0x35, 
45823
  0x0C, 0x0D, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x1B, 0x06, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x40, 
45824
  0x05, 0x00, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x0D, 0x00, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x49, 
45825
  0x09, 0x01, 0x09, 0x1C, 0xE4, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x86, 0xE4, 0x03, 0x00, 0x03, 
45826
  0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
45827
  0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x05, 0x01, 0x12, 0x00, 0x25, 0x00, 0x36, 
45828
  0x00, 0x36, 0x00, 0x46, 0x00, 0x46, 0x00, 0x46, 0xBF, 0xFF, 0x05, 0x02, 0x07, 0xBF, 0xFE, 0x05, 
45829
  0x02, 0x16, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFE, 0x05, 0x03, 0x0B, 0x00, 0x1C, 0x00, 0x1C, 0x00, 
45830
  0x2C, 0x00, 0x2C, 0x00, 0x2C, 0xBF, 0xFB, 0x03, 0x00, 0x03, 0xBF, 0xF7, 0x01, 0xDA, 0x80, 0xBB, 
45831
  0xD7, 0x01, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x05, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
45832
  0x06, 0x01, 0x0A, 0xCE, 0x0D, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x77, 0x6C, 0x6F, 
45833
  0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x8B, 0x23, 0xDA, 0x8A, 0x55, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x80, 
45834
  0xB4, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x80, 0xB5, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x80, 0xB6, 0xBF, 
45835
  0xFF, 0x00, 0x04, 0xDA, 0x80, 0xB7, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x80, 0xB8, 0xBF, 0xFF, 0x00, 
45836
  0x06, 0xDA, 0x80, 0xB9, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x80, 0xBA, 0x00, 0x06, 0x00, 0xDA, 0x80, 
45837
  0xCD, 0x00, 0x06, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x06, 0x02, 0xDA, 0x80, 0xBB, 0x2C, 0x03, 0x00, 
45838
  0x00, 0x2C, 0x04, 0x01, 0x00, 0x33, 0x03, 0x04, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 
45839
  0x05, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x8F, 0x18, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45840
  0x00, 0x05, 0x00, 0x05, 0xDB, 0x00, 0xCF, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 
45841
  0x79, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x01, 0x04, 0x00, 0x01, 
45842
  0x03, 0xCE, 0x09, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0xDA, 0x04, 0xDA, 0x88, 
45843
  0x8A, 0x00, 0x04, 0x00, 0xDA, 0x31, 0x00, 0x04, 0x01, 0xDA, 0x33, 0x00, 0x04, 0x02, 0xDA, 0x8C, 
45844
  0x10, 0x30, 0x03, 0x00, 0x00, 0x32, 0x01, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 
45845
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x00, 0x08, 0x01, 0x05, 0xCE, 0x0E, 
45846
  0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0xDA, 0x04, 
45847
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x33, 0xBF, 0xFF, 0x00, 0x02, 
45848
  0xDA, 0x8C, 0x10, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x80, 0x87, 0x31, 0x00, 
45849
  0x00, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x04, 
45850
  0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x23, 0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 
45851
  0x83, 0xDB, 0x2C, 0x00, 0x2C, 0x00, 0x2C, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x29, 0x00, 
45852
  0x29, 0x83, 0xDB, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xDA, 0x8B, 
45853
  0xBC, 0xDA, 0x82, 0xB5, 0xDA, 0x83, 0xFC, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
45854
  0x01, 0x01, 0x02, 0x08, 0x00, 0x02, 0xCE, 0x02, 0x2D, 0x2D, 0xDA, 0x04, 0xDA, 0x84, 0x16, 0xDA, 
45855
  0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0xFC, 0x2C, 0x03, 0x00, 
45856
  0x00, 0x2B, 0x04, 0x01, 0x00, 0x33, 0x03, 0x00, 0x04, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 
45857
  0x00, 0x33, 0x04, 0x00, 0x02, 0x45, 0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x80, 0x8C, 0x2F, 
45858
  0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0xCF, 0x0D, 
45859
  0x2A, 0x6C, 0x69, 0x6E, 0x74, 0x2D, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0x2A, 0xDA, 0x85, 0x7C, 
45860
  0xCF, 0x05, 0x79, 0x69, 0x65, 0x6C, 0x64, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x04, 0x02, 0x01, 
45861
  0x00, 0x01, 0x00, 0x02, 0xCE, 0x05, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x38, 0x00, 0x00, 0x03, 0x03, 
45862
  0x00, 0x00, 0x00, 0xDA, 0x82, 0x17, 0xDA, 0x82, 0x15, 0xCF, 0x06, 0x63, 0x61, 0x6E, 0x63, 0x65, 
45863
  0x6C, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 0x20, 0x02, 0x02, 0x02, 0x02, 0x00, 0x02, 0xCE, 0x06, 
45864
  0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x4C, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x0E, 
45865
  0x66, 0x66, 0x69, 0x2F, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0xD8, 0x0E, 
45866
  0x66, 0x66, 0x69, 0x2F, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0xCF, 0x06, 
45867
  0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0B, 0x01, 0x01, 
45868
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0D, 0x2F, 0x00, 0x05, 0xDA, 0x89, 0x8F, 0xDA, 0x04, 0xDA, 0x5C, 
45869
  0xDA, 0x80, 0xAE, 0xD0, 0x06, 0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 
45870
  0xDB, 0xDA, 0x80, 0xAB, 0xDA, 0x83, 0x43, 0xDA, 0x80, 0xDE, 0xDA, 0x88, 0x1A, 0xDA, 0x80, 0xDF, 
45871
  0xDA, 0x87, 0xC6, 0xDA, 0x80, 0xB3, 0xDA, 0x82, 0x81, 0x00, 0x2F, 0x00, 0xDA, 0x64, 0x00, 0x2F, 
45872
  0x01, 0xDA, 0x80, 0xC7, 0x00, 0x2F, 0x02, 0xDA, 0x8C, 0x1F, 0x02, 0x2F, 0x04, 0xDA, 0x31, 0x05, 
45873
  0x2F, 0x05, 0xDA, 0x82, 0xCD, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 
45874
  0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x03, 0x05, 0x00, 0x1B, 0x05, 0x03, 0x00, 0x46, 0x03, 0x00, 
45875
  0x00, 0x2C, 0x07, 0x01, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x07, 0x08, 0x03, 0x34, 0x01, 0x00, 
45876
  0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x33, 0x07, 0x06, 
45877
  0x08, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x07, 0x05, 0x00, 0x33, 0x07, 0x04, 0x03, 0x45, 0x06, 0x00, 
45878
  0x00, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x08, 0x05, 
45879
  0x00, 0x33, 0x08, 0x05, 0x03, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x07, 0x00, 0x32, 0x08, 0x04, 
45880
  0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x08, 0x00, 0x2C, 0x0A, 0x09, 0x00, 0x33, 0x09, 0x03, 
45881
  0x0A, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x0A, 0x00, 0x33, 0x09, 0x05, 0x04, 0x45, 0x03, 0x00, 
45882
  0x00, 0x2C, 0x0A, 0x0B, 0x00, 0x33, 0x0A, 0x00, 0x03, 0x45, 0x09, 0x00, 0x00, 0x2C, 0x0A, 0x0C, 
45883
  0x00, 0x33, 0x0A, 0x08, 0x05, 0x31, 0x09, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x09, 0x0B, 
45884
  0x00, 0x33, 0x09, 0x06, 0x07, 0x31, 0x03, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x03, 0x08, 0x00, 
45885
  0x00, 0x81, 0x83, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 
45886
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45887
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45888
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45889
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45890
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
45891
  0xCF, 0x0B, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x80, 0xD2, 
45892
  0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x68, 0xD8, 0x0A, 0x6D, 0x61, 
45893
  0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x68, 0xCF, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 
45894
  0x69, 0x74, 0x65, 0xD8, 0x09, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0xCF, 0x08, 
45895
  0x64, 0x65, 0x66, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 
45896
  0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x09, 0x00, 0x03, 0xCE, 0x08, 0x64, 0x65, 0x66, 
45897
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0xDA, 0x04, 0xDA, 0x82, 0xC9, 0xDA, 0x59, 0xDA, 0x86, 0x75, 0x00, 
45898
  0x09, 0x00, 0xDA, 0x81, 0x86, 0x00, 0x09, 0x01, 0xDA, 0x86, 0x6A, 0x00, 0x09, 0x02, 0xDA, 0x8C, 
45899
  0x27, 0x44, 0x03, 0x00, 0x00, 0x32, 0x00, 0x03, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 
45900
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x32, 0x00, 0x03, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x03, 0x02, 
45901
  0x00, 0x36, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 
45902
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
45903
  0x68, 0x61, 0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x3F, 0xDA, 0x81, 0xBB, 0xCF, 0x02, 
45904
  0x69, 0x6E, 0xDA, 0x82, 0x58, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 
45905
  0xDA, 0x88, 0xEE, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0xDA, 
45906
  0x0B, 0xCF, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0xD8, 0x09, 0x66, 0x66, 
45907
  0x69, 0x2F, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0xDA, 0x81, 0x9E, 0xDA, 0x81, 0x9A, 0xCF, 0x0A, 0x66, 
45908
  0x72, 0x6F, 0x6D, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
45909
  0x09, 0x01, 0x01, 0x01, 0x00, 0x0F, 0x00, 0x07, 0xCE, 0x0A, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x70, 
45910
  0x61, 0x69, 0x72, 0x73, 0xDA, 0x04, 0x00, 0x0F, 0x00, 0xDA, 0x85, 0xFD, 0x00, 0x0F, 0x01, 0xDA, 
45911
  0x8C, 0x30, 0x01, 0x0F, 0x03, 0xDA, 0x39, 0x01, 0x0E, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45912
  0x30, 0x33, 0x7A, 0x04, 0x0E, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x79, 0x08, 
45913
  0x0E, 0x07, 0xDA, 0x3A, 0x0A, 0x0E, 0x08, 0xDA, 0x46, 0x44, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 
45914
  0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x09, 
45915
  0x00, 0x3A, 0x04, 0x00, 0x05, 0x3D, 0x06, 0x04, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x3D, 0x06, 0x04, 
45916
  0x01, 0x1B, 0x08, 0x06, 0x00, 0x3C, 0x03, 0x07, 0x08, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF8, 0xFF, 
45917
  0xFF, 0x03, 0x03, 0x00, 0x00, 0x87, 0x19, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 
45918
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0xBF, 0xFF, 
45919
  0x03, 0x00, 0x03, 0xBF, 0xFB, 0x01, 0xCF, 0x04, 0x62, 0x61, 0x6E, 0x64, 0xD7, 0x00, 0xCD, 0x00, 
45920
  0x09, 0x00, 0x0D, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x13, 0xCE, 0x04, 0x62, 
45921
  0x61, 0x6E, 0x64, 0x3F, 0x01, 0x00, 0x00, 0x26, 0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 
45922
  0x03, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x26, 0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 
45923
  0x03, 0xFF, 0xFF, 0x3D, 0x04, 0x00, 0x00, 0x10, 0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 
45924
  0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x10, 0x03, 0x03, 0x04, 0x05, 
45925
  0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 
45926
  0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6D, 0x70, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 
45927
  0x2F, 0x74, 0x65, 0x6D, 0x70, 0xCF, 0x0F, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 
45928
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xD8, 0x0F, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 
45929
  0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0xDA, 0x82, 0xB2, 0xDA, 0x82, 0xE9, 0xDA, 0x86, 0x4D, 
45930
  0xDA, 0x86, 0x47, 0xCF, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x66, 0xD8, 0x06, 0x78, 0x70, 0x72, 
45931
  0x69, 0x6E, 0x66, 0xCF, 0x09, 0x65, 0x76, 0x2F, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x09, 
45932
  0x65, 0x76, 0x2F, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0xCF, 0x0B, 0x70, 0x61, 0x72, 0x73, 0x65, 
45933
  0x72, 0x2F, 0x62, 0x79, 0x74, 0x65, 0xD8, 0x0B, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x62, 
45934
  0x79, 0x74, 0x65, 0xCF, 0x04, 0x6E, 0x61, 0x74, 0x3F, 0xD8, 0x04, 0x6E, 0x61, 0x74, 0x3F, 0xCF, 
45935
  0x09, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x65, 0x6B, 0xD8, 0x09, 0x66, 0x69, 0x6C, 0x65, 
45936
  0x2F, 0x73, 0x65, 0x65, 0x6B, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x32, 
45937
  0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x32, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 
45938
  0x6F, 0x70, 0x65, 0x6E, 0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0xCF, 0x15, 0x66, 
45939
  0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x63, 0x66, 0x75, 0x6E, 0x63, 
45940
  0x74, 0x69, 0x6F, 0x6E, 0xD8, 0x15, 0x66, 0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 
45941
  0x72, 0x2D, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0xDA, 0x82, 0x32, 0xDA, 0x82, 
45942
  0x30, 0xCF, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x61, 0x67, 0x65, 
45943
  0xD8, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x61, 0x67, 0x65, 0xCF, 
45944
  0x0A, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0xD8, 0x0A, 0x62, 0x75, 0x66, 
45945
  0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 
45946
  0x69, 0x6E, 0x68, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0x68, 0xCF, 
45947
  0x07, 0x67, 0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0xDA, 0x85, 0x73, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 
45948
  0x68, 0x2F, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 
45949
  0x75, 0x6E, 0x64, 0xCF, 0x0B, 0x65, 0x76, 0x2F, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 
45950
  0xDA, 0x8A, 0x24, 0xCF, 0x07, 0x65, 0x76, 0x2F, 0x66, 0x75, 0x6C, 0x6C, 0xD8, 0x07, 0x65, 0x76, 
45951
  0x2F, 0x66, 0x75, 0x6C, 0x6C, 0xCF, 0x06, 0x66, 0x72, 0x65, 0x65, 0x7A, 0x65, 0xD7, 0x00, 0xCD, 
45952
  0x00, 0xDC, 0x00, 0x00, 0x11, 0x01, 0x01, 0x01, 0x0C, 0x4C, 0x00, 0x0E, 0xCE, 0x06, 0x66, 0x72, 
45953
  0x65, 0x65, 0x7A, 0x65, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x6A, 0xDA, 0x70, 0xDA, 0x81, 0xF8, 0xDA, 
45954
  0x2C, 0xDA, 0x61, 0xDA, 0x68, 0xDA, 0x84, 0x80, 0xD8, 0x08, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 
45955
  0x74, 0x6F, 0xDA, 0x69, 0xDA, 0x82, 0x4E, 0xDA, 0x81, 0x28, 0x00, 0x4C, 0x00, 0xDA, 0x1E, 0x00, 
45956
  0x4C, 0x01, 0xDA, 0x8C, 0x58, 0x04, 0x4C, 0x03, 0xDA, 0x82, 0xD5, 0x07, 0x0E, 0x05, 0xCF, 0x07, 
45957
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x46, 0x17, 0x1E, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
45958
  0x30, 0x34, 0x47, 0x20, 0x45, 0x07, 0xCF, 0x08, 0x74, 0x65, 0x6D, 0x70, 0x2D, 0x74, 0x61, 0x62, 
45959
  0x20, 0x3D, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x49, 0x23, 0x3D, 0x08, 0xCF, 
45960
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x48, 0x26, 0x3D, 0x09, 0xDA, 0x3A, 0x27, 0x3D, 0x0A, 
45961
  0xDA, 0x46, 0x2A, 0x3D, 0x0B, 0xDA, 0x8B, 0xFC, 0x2D, 0x3D, 0x0C, 0xCF, 0x02, 0x76, 0x76, 0x2F, 
45962
  0x3D, 0x0D, 0xDA, 0x85, 0xAE, 0x39, 0x3D, 0x0E, 0xCF, 0x03, 0x6E, 0x65, 0x77, 0x2E, 0x01, 0x00, 
45963
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 
45964
  0x00, 0x2C, 0x05, 0x01, 0x00, 0x25, 0x04, 0x03, 0x05, 0x1B, 0x05, 0x04, 0x00, 0x1E, 0x05, 0x03, 
45965
  0x00, 0x1B, 0x04, 0x05, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x25, 0x06, 0x03, 
45966
  0x07, 0x1B, 0x04, 0x06, 0x00, 0x1E, 0x04, 0x07, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 0x06, 0x03, 
45967
  0x00, 0x35, 0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x36, 0x06, 0x00, 
45968
  0x00, 0x2C, 0x06, 0x05, 0x00, 0x25, 0x05, 0x03, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1E, 0x06, 0x03, 
45969
  0x00, 0x1B, 0x05, 0x06, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x25, 0x07, 0x03, 
45970
  0x08, 0x1B, 0x05, 0x07, 0x00, 0x1E, 0x05, 0x27, 0x00, 0x44, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 
45971
  0x00, 0x28, 0x08, 0x00, 0x00, 0x49, 0x06, 0x00, 0x08, 0x1B, 0x08, 0x06, 0x00, 0x1F, 0x08, 0x19, 
45972
  0x00, 0x3A, 0x06, 0x00, 0x08, 0x1B, 0x09, 0x08, 0x00, 0x1B, 0x0A, 0x06, 0x00, 0x31, 0x09, 0x00, 
45973
  0x00, 0x35, 0x06, 0x01, 0x00, 0x1B, 0x0B, 0x06, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x06, 0x01, 
45974
  0x00, 0x1B, 0x0C, 0x06, 0x00, 0x3B, 0x06, 0x07, 0x0B, 0x1B, 0x0D, 0x06, 0x00, 0x28, 0x0F, 0x00, 
45975
  0x00, 0x25, 0x0E, 0x0F, 0x0D, 0x1E, 0x0E, 0x03, 0x00, 0x1B, 0x06, 0x0C, 0x00, 0x1C, 0x05, 0x00, 
45976
  0x00, 0x32, 0x0C, 0x0D, 0x00, 0x2C, 0x10, 0x07, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x06, 0x0F, 
45977
  0x00, 0x1B, 0x0E, 0x06, 0x00, 0x3C, 0x07, 0x0B, 0x0E, 0x49, 0x08, 0x00, 0x08, 0x1C, 0xE8, 0xFF, 
45978
  0xFF, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x35, 0x06, 0x08, 0x00, 0x31, 0x06, 0x00, 
45979
  0x00, 0x35, 0x08, 0x01, 0x00, 0x32, 0x07, 0x08, 0x00, 0x2C, 0x06, 0x09, 0x00, 0x36, 0x06, 0x00, 
45980
  0x00, 0x2C, 0x07, 0x0A, 0x00, 0x25, 0x06, 0x03, 0x07, 0x1E, 0x06, 0x04, 0x00, 0x31, 0x00, 0x00, 
45981
  0x00, 0x2C, 0x07, 0x0B, 0x00, 0x36, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x88, 0xDA, 0x01, 
45982
  0x05, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 0x05, 
45983
  0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x02, 0x12, 0x00, 
45984
  0x12, 0x00, 0x12, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x00, 
45985
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x17, 0x00, 0x17, 0x00, 0x05, 0xBF, 0xFC, 0x03, 0x05, 0x05, 
45986
  0x00, 0x05, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
45987
  0x01, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x11, 0x00, 0x11, 0x00, 0x09, 0x01, 0x12, 0x00, 0x09, 
45988
  0x01, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x25, 0x00, 0x25, 0x00, 0x25, 
45989
  0x00, 0x12, 0x00, 0x09, 0x01, 0x09, 0xBF, 0xFB, 0x07, 0x00, 0x07, 0x06, 0x29, 0x00, 0x29, 0x00, 
45990
  0x29, 0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x02, 0x05, 0x00, 0x05, 0xBF, 
45991
  0xF0, 0x03, 0x11, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xEF, 0x03, 0xCF, 0x06, 0x61, 0x73, 0x73, 
45992
  0x65, 0x72, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x02, 0x01, 0x02, 0x07, 0x19, 
45993
  0x00, 0x04, 0xCE, 0x06, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x80, 
45994
  0xAB, 0xCE, 0x14, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 
45995
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x25, 0x6A, 0xDA, 0x81, 0x4B, 0xD7, 0x00, 0xCD, 0x00, 0x08, 0x00, 
45996
  0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0xCE, 0x05, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x01, 0x00, 
45997
  0x00, 0x00, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xB3, 0x00, 0x19, 0x00, 0xDA, 0x1E, 0x00, 0x19, 0x01, 
45998
  0xDA, 0x85, 0x93, 0x00, 0x19, 0x02, 0xDA, 0x8C, 0x63, 0x02, 0x19, 0x04, 0xDA, 0x46, 0x2C, 0x04, 
45999
  0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x33, 0x06, 
46000
  0x04, 0x00, 0x45, 0x05, 0x00, 0x00, 0x1E, 0x01, 0x03, 0x00, 0x1B, 0x06, 0x01, 0x00, 0x1C, 0x06, 
46001
  0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x32, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 
46002
  0x08, 0x00, 0x1B, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x32, 0x08, 0x06, 0x00, 0x45, 0x07, 
46003
  0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x33, 0x08, 0x04, 0x04, 0x31, 0x07, 0x00, 0x00, 0x45, 0x06, 
46004
  0x00, 0x00, 0x2C, 0x08, 0x06, 0x00, 0x33, 0x08, 0x05, 0x06, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 
46005
  0x00, 0x00, 0x80, 0x96, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x04, 
46006
  0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x11, 0xBF, 
46007
  0xFC, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46008
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0D, 0x2A, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 
46009
  0x70, 0x61, 0x74, 0x68, 0x2A, 0xDA, 0x88, 0xEB, 0xDA, 0x8B, 0x47, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
46010
  0x00, 0x00, 0x0D, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x23, 0x00, 0x07, 0xCE, 0x03, 
46011
  0x61, 0x6E, 0x64, 0xDA, 0x04, 0xDA, 0x82, 0x4C, 0xDA, 0x82, 0x81, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 
46012
  0x00, 0x23, 0x00, 0xDA, 0x80, 0x85, 0x00, 0x23, 0x01, 0xDA, 0x8B, 0x47, 0x00, 0x23, 0x02, 0xDA, 
46013
  0x39, 0x02, 0x23, 0x04, 0xDA, 0x37, 0x03, 0x23, 0x05, 0xDA, 0x43, 0x08, 0x22, 0x08, 0xDA, 0x46, 
46014
  0x19, 0x21, 0x0B, 0xDA, 0x81, 0x2A, 0x29, 0x02, 0x00, 0x00, 0x3F, 0x03, 0x00, 0x00, 0x1B, 0x04, 
46015
  0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x22, 0x06, 0x05, 0x00, 0x1E, 0x06, 0x1D, 0x00, 0x07, 0x05, 
46016
  0x05, 0x01, 0x3A, 0x07, 0x00, 0x05, 0x1B, 0x08, 0x07, 0x00, 0x07, 0x07, 0x04, 0x01, 0x25, 0x09, 
46017
  0x05, 0x07, 0x1E, 0x09, 0x03, 0x00, 0x1B, 0x02, 0x08, 0x00, 0x1C, 0x14, 0x00, 0x00, 0x31, 0x08, 
46018
  0x00, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x07, 0x0A, 0x00, 0x1E, 0x07, 0x06, 0x00, 0x2C, 0x0A, 
46019
  0x01, 0x00, 0x33, 0x0A, 0x08, 0x02, 0x31, 0x08, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x1C, 0x0B, 
46020
  0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x0B, 0x0A, 0x00, 0x2C, 0x0A, 
46021
  0x03, 0x00, 0x33, 0x0A, 0x0B, 0x08, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x33, 0x0C, 
46022
  0x0A, 0x02, 0x31, 0x0B, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x1C, 0xE3, 0xFF, 0xFF, 0x03, 0x02, 
46023
  0x00, 0x00, 0x81, 0x36, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 
46024
  0x05, 0x01, 0x0C, 0x00, 0x05, 0x01, 0x17, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x02, 
46025
  0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 
46026
  0xFF, 0x10, 0x02, 0x1D, 0x00, 0x1D, 0x00, 0x16, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x14, 
46027
  0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xF8, 0x03, 0xBF, 0xF9, 0x01, 0xDA, 0x89, 0x4A, 0xD7, 
46028
  0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x17, 0x02, 0x01, 0x02, 0x0A, 0x3A, 0x00, 0x02, 0x0F, 0xDA, 
46029
  0x8B, 0xEA, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x82, 0x91, 0xD2, 0x01, 0x00, 0xD0, 0x08, 0x73, 0x68, 
46030
  0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0xCF, 0x01, 0x24, 0xDA, 0x83, 0xCD, 0xDA, 0x30, 0xCF, 0x02, 
46031
  0x24, 0x26, 0xDA, 0x8B, 0x7A, 0xDA, 0x82, 0x7C, 0xDA, 0x80, 0xAE, 0x00, 0x3A, 0x00, 0xDA, 0x89, 
46032
  0x0C, 0x00, 0x3A, 0x01, 0xDA, 0x81, 0x86, 0x00, 0x3A, 0x02, 0xDA, 0x89, 0x4A, 0x00, 0x3A, 0x03, 
46033
  0xCF, 0x0E, 0x6D, 0x61, 0x78, 0x2D, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x2D, 0x73, 0x65, 0x65, 0x6E, 
46034
  0x01, 0x3A, 0x04, 0xCF, 0x06, 0x76, 0x61, 0x72, 0x61, 0x72, 0x67, 0x03, 0x3A, 0x06, 0xCF, 0x0F, 
46035
  0x73, 0x61, 0x77, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 0x61, 0x72, 0x67, 0x06, 
46036
  0x3A, 0x08, 0xDA, 0x85, 0xEE, 0x08, 0x3A, 0x0A, 0xDA, 0x82, 0x9D, 0x0C, 0x3A, 0x0C, 0xCF, 0x08, 
46037
  0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x64, 0x13, 0x3A, 0x0E, 0xCF, 0x0B, 0x6E, 0x61, 0x6D, 
46038
  0x65, 0x2D, 0x73, 0x70, 0x6C, 0x69, 0x63, 0x65, 0x15, 0x26, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
46039
  0x30, 0x30, 0x34, 0x55, 0x16, 0x26, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x56, 
46040
  0x19, 0x26, 0x12, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x34, 0x57, 0x1C, 0x26, 0x13, 0xDA, 
46041
  0x43, 0x25, 0x3A, 0x10, 0xCF, 0x07, 0x66, 0x6E, 0x2D, 0x61, 0x72, 0x67, 0x73, 0x2B, 0x03, 0xFF, 
46042
  0xFF, 0x2A, 0x04, 0x00, 0x00, 0x30, 0x05, 0x00, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x2C, 0x08, 0x00, 
46043
  0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 0x30, 0x09, 0x01, 0x00, 0x1B, 0x0A, 0x09, 
46044
  0x00, 0x32, 0x00, 0x0A, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 
46045
  0x00, 0x1E, 0x01, 0x05, 0x00, 0x31, 0x01, 0x00, 0x00, 0x45, 0x0E, 0x00, 0x00, 0x1B, 0x0D, 0x0E, 
46046
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x0D, 0x02, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x40, 0x0F, 0x00, 
46047
  0x00, 0x1B, 0x10, 0x0F, 0x00, 0x2B, 0x0F, 0x00, 0x00, 0x2B, 0x12, 0x01, 0x00, 0x06, 0x11, 0x12, 
46048
  0x03, 0x1B, 0x12, 0x11, 0x00, 0x23, 0x11, 0x0F, 0x12, 0x1E, 0x11, 0x0B, 0x00, 0x1B, 0x13, 0x0F, 
46049
  0x00, 0x2C, 0x14, 0x03, 0x00, 0x33, 0x08, 0x14, 0x13, 0x2C, 0x15, 0x04, 0x00, 0x35, 0x14, 0x15, 
46050
  0x00, 0x32, 0x10, 0x14, 0x00, 0x2C, 0x16, 0x05, 0x00, 0x35, 0x15, 0x16, 0x00, 0x05, 0x0F, 0x0F, 
46051
  0x01, 0x1C, 0xF5, 0xFF, 0xFF, 0x1E, 0x04, 0x0A, 0x00, 0x2C, 0x11, 0x06, 0x00, 0x32, 0x08, 0x11, 
46052
  0x00, 0x2C, 0x12, 0x04, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x12, 0x07, 0x00, 0x32, 0x12, 0x11, 
46053
  0x00, 0x45, 0x11, 0x00, 0x00, 0x1B, 0x0F, 0x11, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x0F, 0x08, 
46054
  0x00, 0x34, 0x10, 0x00, 0x00, 0x34, 0x0F, 0x00, 0x00, 0x46, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x09, 
46055
  0x00, 0x31, 0x12, 0x00, 0x00, 0x34, 0x0E, 0x00, 0x00, 0x32, 0x11, 0x0C, 0x00, 0x45, 0x0F, 0x00, 
46056
  0x00, 0x03, 0x0F, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x07, 
46057
  0x01, 0x07, 0xCE, 0x0F, 0x73, 0x61, 0x77, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 
46058
  0x61, 0x72, 0x67, 0xDA, 0x04, 0xDA, 0x84, 0x80, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x89, 0x0C, 0xBF, 
46059
  0xFF, 0x00, 0x01, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x89, 0x4A, 0xBF, 0xFF, 0x00, 
46060
  0x03, 0xDA, 0x8C, 0x71, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8C, 0x72, 0x00, 0x07, 0x00, 0xCF, 0x03, 
46061
  0x6E, 0x75, 0x6D, 0x00, 0x07, 0x01, 0xDA, 0x8C, 0x73, 0x2D, 0x02, 0x00, 0x03, 0x32, 0x02, 0x00, 
46062
  0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2F, 0x02, 0x00, 0x03, 0x2D, 0x03, 0x00, 
46063
  0x03, 0x03, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x89, 0x63, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 
46064
  0x00, 0x19, 0x00, 0x05, 0x00, 0x05, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x09, 0x01, 0x01, 0x01, 0x08, 
46065
  0x30, 0x01, 0x0A, 0xCE, 0x0A, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0xDA, 
46066
  0x04, 0xDA, 0x8C, 0x6F, 0xDA, 0x81, 0xBB, 0xCF, 0x02, 0x24, 0x30, 0xDA, 0x83, 0xCD, 0xDA, 0x8C, 
46067
  0x70, 0xDA, 0x3D, 0xDA, 0x89, 0x3C, 0xDA, 0x8C, 0x43, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x89, 0x0C, 
46068
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x86, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x89, 0x4A, 0xBF, 0xFF, 
46069
  0x00, 0x03, 0xDA, 0x8C, 0x71, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8C, 0x72, 0xBF, 0xFF, 0x00, 0x06, 
46070
  0xDA, 0x8C, 0x73, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x85, 0xEE, 0x00, 0x30, 0x00, 0xDA, 0x1E, 0x00, 
46071
  0x30, 0x01, 0xDA, 0x82, 0x9D, 0x21, 0x2E, 0x05, 0xDA, 0x8C, 0x7B, 0x2C, 0x02, 0x00, 0x00, 0x32, 
46072
  0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1E, 0x02, 0x2B, 0x00, 0x2C, 
46073
  0x04, 0x00, 0x00, 0x25, 0x03, 0x04, 0x00, 0x1E, 0x03, 0x0A, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x31, 
46074
  0x04, 0x00, 0x00, 0x2D, 0x05, 0x00, 0x06, 0x35, 0x04, 0x05, 0x00, 0x2D, 0x04, 0x00, 0x08, 0x2C, 
46075
  0x05, 0x02, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x36, 0x04, 0x00, 0x00, 0x2C, 
46076
  0x05, 0x04, 0x00, 0x25, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x07, 0x00, 0x29, 0x05, 0x00, 0x00, 0x2F, 
46077
  0x05, 0x00, 0x04, 0x2D, 0x05, 0x00, 0x08, 0x32, 0x05, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 0x36, 
46078
  0x05, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x32, 0x00, 0x05, 0x00, 0x2C, 0x06, 0x05, 0x00, 0x35, 
46079
  0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 
46080
  0x05, 0x06, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1E, 
46081
  0x06, 0x08, 0x00, 0x31, 0x05, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x06, 0x35, 0x07, 0x08, 0x00, 0x2D, 
46082
  0x07, 0x00, 0x08, 0x32, 0x07, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x36, 0x07, 0x00, 0x00, 0x03, 
46083
  0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x89, 0x67, 0x09, 
46084
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x05, 0x02, 0x09, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x03, 
46085
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 
46086
  0x0B, 0x01, 0x09, 0x00, 0x09, 0xBF, 0xFB, 0x07, 0x07, 0x0B, 0x00, 0x0B, 0x01, 0x0B, 0x00, 0x0B, 
46087
  0x00, 0x0B, 0x00, 0x0B, 0x03, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 
46088
  0x00, 0x14, 0x00, 0x0B, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0B, 0x02, 0x0F, 0x00, 0x0F, 
46089
  0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x0B, 0xBF, 0xF4, 0x07, 
46090
  0xBF, 0xFF, 0x05, 0x89, 0x5F, 0x03, 0x01, 0x03, 0x01, 0x03, 0x00, 0x03, 0x03, 0x0F, 0x00, 0x0F, 
46091
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x15, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x14, 
46092
  0x00, 0x1D, 0x00, 0x1D, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x03, 0x01, 0x10, 0x00, 0x10, 
46093
  0x00, 0x10, 0x00, 0x22, 0x00, 0x22, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x39, 
46094
  0x00, 0x39, 0x00, 0x39, 0x00, 0x39, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
46095
  0x01, 0x23, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 
46096
  0x00, 0x23, 0x00, 0x23, 0x00, 0x23, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46097
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x58, 0x01, 0x00, 0x00, 0xDA, 0x81, 0x12, 0xDA, 
46098
  0x81, 0x7C, 0xCF, 0x08, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0xD7, 0x00, 0xCD, 0x00, 
46099
  0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x08, 0x18, 0x00, 0x03, 0xCE, 
46100
  0x08, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0xDA, 0x04, 0xDA, 0x88, 0x57, 0xDA, 0x80, 
46101
  0xB3, 0xDA, 0x8C, 0x17, 0xDA, 0x83, 0xEF, 0xDA, 0x80, 0xAE, 0xD0, 0x08, 0x67, 0x65, 0x6E, 0x65, 
46102
  0x72, 0x61, 0x74, 0x65, 0xDA, 0x80, 0xDC, 0xDA, 0x85, 0x99, 0x00, 0x18, 0x00, 0xDA, 0x84, 0x22, 
46103
  0x00, 0x18, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x18, 0x02, 0xDA, 0x8C, 0x7E, 0x31, 0x01, 0x00, 0x00, 
46104
  0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x46, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 
46105
  0x31, 0x06, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x02, 0x00, 
46106
  0x32, 0x07, 0x05, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x33, 0x07, 0x00, 0x06, 
46107
  0x45, 0x05, 0x00, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x33, 0x07, 0x08, 0x04, 
46108
  0x31, 0x05, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x07, 0x00, 
46109
  0x33, 0x05, 0x06, 0x07, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x82, 0xBB, 0x03, 0x00, 
46110
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46111
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46112
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x8A, 0x8D, 
46113
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0F, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 
46114
  0x27, 0x00, 0x07, 0xCE, 0x02, 0x6F, 0x72, 0xDA, 0x04, 0xDA, 0x82, 0x4C, 0xDA, 0x82, 0x81, 0xDA, 
46115
  0x82, 0xB5, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x80, 0xB3, 0x00, 0x27, 0x00, 0xDA, 0x80, 0x85, 
46116
  0x00, 0x27, 0x01, 0xDA, 0x8A, 0x8D, 0x01, 0x27, 0x03, 0xDA, 0x37, 0x03, 0x27, 0x05, 0xDA, 0x43, 
46117
  0x05, 0x27, 0x07, 0xDA, 0x39, 0x0A, 0x26, 0x0A, 0xCF, 0x02, 0x66, 0x69, 0x17, 0x25, 0x0C, 0xCF, 
46118
  0x03, 0x24, 0x66, 0x69, 0x3F, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x07, 0x04, 0x03, 0x01, 
46119
  0x1B, 0x05, 0x04, 0x00, 0x3B, 0x06, 0x00, 0x05, 0x1B, 0x07, 0x06, 0x00, 0x22, 0x08, 0x05, 0x00, 
46120
  0x1E, 0x08, 0x1F, 0x00, 0x07, 0x05, 0x05, 0x01, 0x3A, 0x09, 0x00, 0x05, 0x1B, 0x0A, 0x09, 0x00, 
46121
  0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x00, 0x00, 0x35, 0x09, 0x0B, 0x00, 0x1E, 0x09, 0x07, 0x00, 
46122
  0x2C, 0x0B, 0x01, 0x00, 0x33, 0x0B, 0x0A, 0x0A, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x0B, 0x02, 0x00, 
46123
  0x35, 0x07, 0x0B, 0x00, 0x1C, 0x11, 0x00, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 0x00, 
46124
  0x1B, 0x0C, 0x0B, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x33, 0x0B, 0x0C, 0x0A, 0x2C, 0x0D, 0x02, 0x00, 
46125
  0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0D, 0x01, 0x00, 0x33, 0x0D, 0x0C, 0x0C, 0x31, 0x07, 0x00, 0x00, 
46126
  0x2C, 0x0E, 0x02, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x2C, 0x0E, 0x05, 0x00, 0x33, 0x0E, 0x0B, 0x0D, 
46127
  0x2C, 0x0E, 0x02, 0x00, 0x35, 0x07, 0x0E, 0x00, 0x1C, 0xE1, 0xFF, 0xFF, 0x03, 0x07, 0x00, 0x00, 
46128
  0x81, 0x48, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 
46129
  0x03, 0x01, 0x05, 0x01, 0x0D, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x0E, 0x01, 
46130
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0xBF, 0xFF, 0x0E, 0x03, 0x1B, 0x00, 0x1B, 
46131
  0x00, 0x12, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x01, 0x19, 0x00, 0x19, 0x00, 0x19, 
46132
  0x00, 0x19, 0x00, 0x19, 0xBF, 0xFF, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xF9, 0x03, 
46133
  0xBF, 0xF9, 0x01, 0xCF, 0x08, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x8C, 0x5B, 
46134
  0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0xD8, 0x0B, 0x6E, 
46135
  0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0xCF, 0x07, 0x2A, 0x72, 0x65, 0x64, 
46136
  0x65, 0x66, 0x2A, 0xDA, 0x86, 0xED, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 
46137
  0x32, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x32, 0xCF, 0x0C, 0x66, 0x69, 
46138
  0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0xDA, 0x83, 0x55, 0xCF, 0x04, 0x64, 
46139
  0x6F, 0x63, 0x2A, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0F, 0x01, 0x00, 0x01, 0x13, 0x45, 
46140
  0x00, 0x01, 0x06, 0xCE, 0x04, 0x64, 0x6F, 0x63, 0x2A, 0xDA, 0x04, 0xDA, 0x82, 0x30, 0xD7, 0x00, 
46141
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0C, 0x01, 0x01, 0x01, 0x0D, 0x3C, 0x00, 0x04, 0xCE, 0x0B, 0x70, 
46142
  0x72, 0x69, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0xDA, 0x04, 0xDA, 0x8B, 0xC3, 0xDA, 
46143
  0x82, 0x18, 0xDA, 0x83, 0x4C, 0xD8, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0xDA, 
46144
  0x81, 0xF8, 0xDA, 0x81, 0x90, 0xDA, 0x84, 0x62, 0xDA, 0x84, 0x68, 0xCE, 0x0B, 0x42, 0x69, 0x6E, 
46145
  0x64, 0x69, 0x6E, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0xDA, 0x81, 0x28, 0xDA, 0x86, 0xF5, 0xCE, 0x0B, 
46146
  0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0x3A, 0x0A, 0x0A, 0xCE, 0x36, 0x0A, 0x20, 0x20, 
46147
  0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 0x28, 0x64, 0x6F, 0x63, 0x20, 0x73, 0x79, 0x6D, 0x29, 0x20, 
46148
  0x66, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
46149
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
46150
  0x67, 0x2E, 0x0A, 0x00, 0x3C, 0x00, 0xCF, 0x04, 0x66, 0x6C, 0x74, 0x72, 0x00, 0x3C, 0x01, 0xCF, 
46151
  0x0B, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x05, 0x3C, 0x02, 0xDA, 
46152
  0x83, 0xA7, 0x0F, 0x3C, 0x05, 0xCF, 0x08, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0x2C, 
46153
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x32, 0x00, 0x02, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 
46154
  0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x35, 0x04, 0x05, 0x00, 0x32, 
46155
  0x00, 0x04, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x32, 
46156
  0x04, 0x05, 0x00, 0x2C, 0x06, 0x04, 0x00, 0x35, 0x04, 0x06, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x2C, 
46157
  0x07, 0x05, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2C, 0x07, 0x06, 0x00, 0x32, 0x02, 0x07, 0x00, 0x2C, 
46158
  0x08, 0x07, 0x00, 0x35, 0x07, 0x08, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x32, 0x08, 0x07, 0x00, 0x2C, 
46159
  0x09, 0x09, 0x00, 0x35, 0x08, 0x09, 0x00, 0x28, 0x07, 0x00, 0x00, 0x28, 0x09, 0x00, 0x00, 0x33, 
46160
  0x08, 0x07, 0x09, 0x2A, 0x07, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x0A, 0x00, 0x35, 
46161
  0x07, 0x09, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x35, 0x08, 0x09, 0x00, 0x2C, 
46162
  0x09, 0x05, 0x00, 0x35, 0x07, 0x09, 0x00, 0x2C, 0x09, 0x06, 0x00, 0x32, 0x05, 0x09, 0x00, 0x2C, 
46163
  0x0A, 0x07, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2C, 0x0A, 0x0B, 0x00, 0x32, 0x0A, 0x09, 0x00, 0x2C, 
46164
  0x0B, 0x09, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x28, 0x09, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x33, 
46165
  0x0A, 0x09, 0x0B, 0x2A, 0x09, 0x00, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x0A, 0x00, 0x35, 
46166
  0x09, 0x0B, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 
46167
  0x09, 0x0C, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x36, 0x09, 0x00, 0x00, 0x8D, 
46168
  0xB8, 0x1E, 0x00, 0x1E, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 0x01, 0x2C, 0x00, 0x2C, 
46169
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x03, 
46170
  0x01, 0x03, 0x00, 0x03, 0x01, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x16, 0x00, 0x16, 
46171
  0x00, 0x16, 0x00, 0x16, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 
46172
  0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x2E, 0x00, 0x2E, 
46173
  0x00, 0x2E, 0x00, 0x2E, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0A, 0x00, 0x0A, 
46174
  0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46175
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x81, 0x26, 0xDA, 0x82, 0x51, 0xD2, 0x0D, 
46176
  0x01, 0xDA, 0x82, 0x99, 0xDA, 0x80, 0xAB, 0xDA, 0x80, 0xB3, 0xDA, 0x80, 0xAE, 0xDA, 0x82, 0x81, 
46177
  0xDA, 0x82, 0x9B, 0xDA, 0x82, 0x98, 0xDA, 0x82, 0x5C, 0xCF, 0x06, 0x73, 0x70, 0x6C, 0x69, 0x63, 
46178
  0x65, 0xDA, 0x82, 0xBB, 0xDA, 0x82, 0x9A, 0xDA, 0x82, 0x55, 0xDA, 0x82, 0x5D, 0xDA, 0x88, 0xB0, 
46179
  0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x06, 0x09, 0x00, 0x02, 0xCE, 
46180
  0x18, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x2D, 0x66, 
46181
  0x6F, 0x72, 0x6D, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 0xDA, 0x04, 0xDA, 0x87, 0x90, 0xCE, 0x12, 
46182
  0x20, 0x20, 0x20, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
46183
  0x0A, 0x0A, 0xCE, 0x05, 0x20, 0x20, 0x20, 0x20, 0x28, 0xCE, 0x07, 0x20, 0x2E, 0x2E, 0x2E, 0x29, 
46184
  0x0A, 0x0A, 0xCE, 0x33, 0x20, 0x20, 0x20, 0x20, 0x53, 0x65, 0x65, 0x20, 0x68, 0x74, 0x74, 0x70, 
46185
  0x73, 0x3A, 0x2F, 0x2F, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2D, 0x6C, 0x61, 0x6E, 0x67, 0x2E, 0x6F, 
46186
  0x72, 0x67, 0x2F, 0x64, 0x6F, 0x63, 0x73, 0x2F, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x73, 
46187
  0x2E, 0x68, 0x74, 0x6D, 0x6C, 0x0A, 0x0A, 0xDA, 0x81, 0x90, 0x00, 0x09, 0x00, 0xDA, 0x1E, 0x00, 
46188
  0x09, 0x01, 0xCF, 0x18, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 
46189
  0x6C, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x2D, 0x65, 0x6E, 0x74, 0x72, 0x79, 0x2C, 0x02, 0x00, 0x00, 
46190
  0x2C, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 0x02, 0x03, 0x04, 0x2C, 0x02, 0x03, 0x00, 
46191
  0x2C, 0x03, 0x04, 0x00, 0x33, 0x00, 0x02, 0x03, 0x2C, 0x02, 0x05, 0x00, 0x36, 0x02, 0x00, 0x00, 
46192
  0x8D, 0xD7, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46193
  0x03, 0x00, 0x03, 0xDA, 0x81, 0x28, 0xDA, 0x81, 0xB0, 0xDA, 0x81, 0xB6, 0xDA, 0x06, 0xDA, 0x86, 
46194
  0xF1, 0xDA, 0x86, 0xF2, 0xDA, 0x03, 0xDA, 0x86, 0xEB, 0xCE, 0x07, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
46195
  0x6C, 0x20, 0xDA, 0x87, 0x97, 0xDA, 0x81, 0x90, 0xDA, 0x82, 0x15, 0x00, 0x45, 0x00, 0xDA, 0x80, 
46196
  0x8B, 0x00, 0x45, 0x01, 0xDA, 0x8C, 0x8D, 0x0C, 0x41, 0x04, 0xDA, 0x1E, 0x20, 0x3E, 0x08, 0xDA, 
46197
  0x82, 0x2B, 0x22, 0x3E, 0x09, 0xDA, 0x82, 0x29, 0x25, 0x3E, 0x07, 0xCF, 0x07, 0x6D, 0x6F, 0x64, 
46198
  0x2D, 0x65, 0x6E, 0x76, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 
46199
  0x1E, 0x02, 0x05, 0x00, 0x30, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 
46200
  0x36, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x39, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x02, 0x00, 
46201
  0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x03, 0x00, 
46202
  0x35, 0x03, 0x05, 0x00, 0x1E, 0x03, 0x2E, 0x00, 0x2C, 0x05, 0x04, 0x00, 0x32, 0x00, 0x05, 0x00, 
46203
  0x2C, 0x06, 0x05, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x04, 0x00, 0x31, 0x00, 0x00, 0x00, 
46204
  0x2C, 0x06, 0x06, 0x00, 0x36, 0x06, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 
46205
  0x35, 0x06, 0x07, 0x00, 0x31, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x08, 0x00, 0x35, 0x07, 0x08, 0x00, 
46206
  0x3D, 0x06, 0x07, 0x00, 0x1B, 0x08, 0x06, 0x00, 0x3D, 0x06, 0x07, 0x01, 0x1B, 0x09, 0x06, 0x00, 
46207
  0x2C, 0x07, 0x09, 0x00, 0x3A, 0x06, 0x07, 0x08, 0x1B, 0x07, 0x06, 0x00, 0x1E, 0x06, 0x13, 0x00, 
46208
  0x28, 0x0A, 0x00, 0x00, 0x28, 0x0B, 0x00, 0x00, 0x33, 0x08, 0x0A, 0x0B, 0x45, 0x0A, 0x00, 0x00, 
46209
  0x2C, 0x0C, 0x0A, 0x00, 0x3A, 0x0B, 0x07, 0x0C, 0x2C, 0x0C, 0x0B, 0x00, 0x29, 0x0D, 0x00, 0x00, 
46210
  0x2C, 0x0E, 0x0C, 0x00, 0x33, 0x0C, 0x0D, 0x0E, 0x2C, 0x0C, 0x0D, 0x00, 0x33, 0x09, 0x0C, 0x0A, 
46211
  0x2C, 0x0C, 0x0A, 0x00, 0x32, 0x0C, 0x0B, 0x00, 0x43, 0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 0x00, 
46212
  0x2C, 0x0B, 0x0E, 0x00, 0x36, 0x0B, 0x00, 0x00, 0x2C, 0x0A, 0x0F, 0x00, 0x2C, 0x0B, 0x10, 0x00, 
46213
  0x33, 0x0A, 0x00, 0x0B, 0x2C, 0x0A, 0x11, 0x00, 0x36, 0x0A, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 
46214
  0x2C, 0x05, 0x0E, 0x00, 0x36, 0x05, 0x00, 0x00, 0x2C, 0x03, 0x12, 0x00, 0x31, 0x03, 0x00, 0x00, 
46215
  0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xD4, 0x00, 0x00, 0x02, 0x01, 0x01, 
46216
  0x01, 0x01, 0x04, 0x01, 0x03, 0xDA, 0x04, 0xD8, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
46217
  0x66, 0x69, 0x6E, 0x64, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x80, 0x8B, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 
46218
  0x8C, 0x8D, 0x00, 0x04, 0x00, 0xDA, 0x1E, 0x2D, 0x01, 0x00, 0x00, 0x32, 0x01, 0x00, 0x00, 0x2C, 
46219
  0x01, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x8D, 0xE2, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 
46220
  0x00, 0x1A, 0x8D, 0xE1, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xFF, 0x03, 0x02, 0x12, 0x00, 0x05, 
46221
  0x00, 0x05, 0x00, 0x05, 0xBF, 0xFE, 0x03, 0x06, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x01, 
46222
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x07, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 
46223
  0x09, 0x02, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x02, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x26, 0x00, 
46224
  0x26, 0x00, 0x26, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x01, 0x1E, 0x00, 0x1E, 0x00, 
46225
  0x0D, 0x00, 0x0D, 0x03, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x01, 0x29, 0x00, 0x29, 0xBF, 
46226
  0xFD, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
46227
  0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x04, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
46228
  0x00, 0x0F, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46229
  0x01, 0x00, 0x00, 0x00, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 
46230
  0x68, 0xDA, 0x87, 0x5A, 0xCF, 0x03, 0x2D, 0x3F, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 
46231
  0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 0x03, 0x2D, 
46232
  0x3F, 0x3E, 0xDA, 0x04, 0xDA, 0x83, 0xC2, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 
46233
  0x80, 0x85, 0x00, 0x05, 0x02, 0xDA, 0x8C, 0xA6, 0x01, 0x05, 0x04, 0xDA, 0x88, 0x67, 0x30, 0x03, 
46234
  0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 
46235
  0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x02, 0x02, 0x02, 0x09, 0x2F, 0x00, 0x07, 0xDA, 
46236
  0x88, 0x68, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 0xDA, 0x88, 0x69, 0xDA, 0x82, 0xB5, 0xDA, 0x5C, 
46237
  0xDA, 0x82, 0xB1, 0xDA, 0x71, 0xDA, 0x82, 0x81, 0xDA, 0x83, 0xF7, 0x00, 0x2F, 0x00, 0xDA, 0x82, 
46238
  0xB2, 0x00, 0x2F, 0x01, 0xDA, 0x32, 0x00, 0x2F, 0x02, 0xDA, 0x88, 0x67, 0x17, 0x2F, 0x05, 0xDA, 
46239
  0x82, 0xCA, 0x19, 0x2F, 0x06, 0xDA, 0x82, 0x33, 0x1C, 0x2F, 0x07, 0xDA, 0x80, 0x8B, 0x22, 0x2F, 
46240
  0x08, 0xDA, 0x38, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 
46241
  0x06, 0x01, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x0C, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 
46242
  0x04, 0x01, 0x06, 0x2B, 0x06, 0x01, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 
46243
  0x06, 0x07, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 
46244
  0x03, 0x07, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 0x01, 0x04, 0x00, 0x2C, 
46245
  0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x1B, 
46246
  0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 0x01, 0x1B, 0x06, 0x04, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 
46247
  0x04, 0x07, 0x00, 0x1B, 0x07, 0x04, 0x00, 0x32, 0x05, 0x07, 0x00, 0x40, 0x08, 0x00, 0x00, 0x32, 
46248
  0x08, 0x06, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x08, 0x09, 0x00, 0x32, 
46249
  0x07, 0x00, 0x00, 0x46, 0x0A, 0x00, 0x00, 0x32, 0x01, 0x08, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 
46250
  0x0B, 0x0C, 0x00, 0x2C, 0x0D, 0x07, 0x00, 0x33, 0x0D, 0x07, 0x0B, 0x45, 0x0C, 0x00, 0x00, 0x2C, 
46251
  0x0D, 0x08, 0x00, 0x33, 0x0D, 0x0A, 0x0C, 0x45, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 0x85, 
46252
  0x8E, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 
46253
  0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 
46254
  0x10, 0x00, 0x10, 0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 
46255
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 
46256
  0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x22, 
46257
  0x00, 0x22, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46258
  0x85, 0x8D, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x61, 0x72, 0x72, 
46259
  0x61, 0x79, 0xD8, 0x05, 0x61, 0x72, 0x72, 0x61, 0x79, 0xCF, 0x0F, 0x70, 0x61, 0x72, 0x73, 0x65, 
46260
  0x72, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0xDA, 0x11, 0xCF, 0x0B, 0x62, 0x75, 
46261
  0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x6F, 0x70, 0x6E, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 
46262
  0x72, 0x2F, 0x70, 0x6F, 0x70, 0x6E, 0xDA, 0x8A, 0x23, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
46263
  0x05, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x0C, 0x00, 0x02, 0xDA, 0x85, 0x9B, 0xDA, 
46264
  0x04, 0xDA, 0x80, 0xAE, 0xD0, 0x04, 0x63, 0x6F, 0x72, 0x6F, 0xDA, 0x8A, 0xBD, 0xDA, 0x82, 0xB5, 
46265
  0xDA, 0x80, 0xDC, 0xDA, 0x85, 0x99, 0x00, 0x0C, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x0C, 0x01, 0xDA, 
46266
  0x8A, 0x23, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 0x02, 
46267
  0x03, 0x04, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x03, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x03, 
46268
  0x04, 0x00, 0x2C, 0x04, 0x05, 0x00, 0x33, 0x03, 0x02, 0x04, 0x2C, 0x03, 0x03, 0x00, 0x36, 0x03, 
46269
  0x00, 0x00, 0x82, 0xC1, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
46270
  0x14, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0B, 0x73, 0x74, 0x72, 
46271
  0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xDA, 0x8C, 0xA4, 0xCF, 0x07, 0x65, 0x76, 0x2F, 
46272
  0x74, 0x61, 0x6B, 0x65, 0xDA, 0x80, 0xD3, 0xCF, 0x0C, 0x2A, 0x65, 0x78, 0x69, 0x74, 0x2D, 0x76, 
46273
  0x61, 0x6C, 0x75, 0x65, 0x2A, 0xDA, 0x85, 0x4A, 0xCF, 0x0E, 0x2A, 0x63, 0x75, 0x72, 0x72, 0x65, 
46274
  0x6E, 0x74, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x2A, 0xDA, 0x85, 0x48, 0xCF, 0x06, 0x74, 0x72, 0x61, 
46275
  0x63, 0x65, 0x76, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x15, 0x01, 0x01, 0x01, 0x15, 0x4C, 
46276
  0x00, 0x0A, 0xCE, 0x06, 0x74, 0x72, 0x61, 0x63, 0x65, 0x76, 0xDA, 0x04, 0xDA, 0x82, 0xC8, 0xDA, 
46277
  0x82, 0x7C, 0xDA, 0x81, 0x26, 0xDA, 0x78, 0xDA, 0x85, 0x48, 0xCE, 0x0A, 0x74, 0x72, 0x61, 0x63, 
46278
  0x65, 0x20, 0x5B, 0x25, 0x73, 0x5D, 0xDA, 0x81, 0x4B, 0xCE, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 
46279
  0xDA, 0x83, 0x04, 0xDA, 0x85, 0x32, 0xCE, 0x17, 0x20, 0x6F, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 
46280
  0x20, 0x25, 0x64, 0x2C, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x25, 0x64, 0x3A, 0xCE, 
46281
  0x07, 0x20, 0x25, 0x6A, 0x20, 0x69, 0x73, 0x20, 0xDA, 0x81, 0x28, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 
46282
  0xDA, 0x82, 0x98, 0xDA, 0x84, 0x6A, 0xDA, 0x83, 0x33, 0xDA, 0x85, 0x1A, 0xDA, 0x84, 0x60, 0xDA, 
46283
  0x82, 0x9A, 0x00, 0x4C, 0x00, 0xDA, 0x1E, 0x00, 0x4C, 0x01, 0xDA, 0x8C, 0xB4, 0x09, 0x4C, 0x04, 
46284
  0xDA, 0x80, 0xCE, 0x0B, 0x4C, 0x05, 0xDA, 0x83, 0x1D, 0x10, 0x4C, 0x06, 0xCF, 0x02, 0x63, 0x66, 
46285
  0x19, 0x4C, 0x08, 0xCF, 0x05, 0x66, 0x6D, 0x74, 0x2D, 0x31, 0x1D, 0x25, 0x0B, 0xCF, 0x07, 0x5F, 
46286
  0x30, 0x30, 0x30, 0x30, 0x32, 0x6B, 0x2D, 0x4C, 0x0A, 0xCF, 0x05, 0x66, 0x6D, 0x74, 0x2D, 0x32, 
46287
  0x32, 0x4C, 0x0C, 0xDA, 0x81, 0x4C, 0x35, 0x4C, 0x0E, 0xDA, 0x81, 0x2A, 0x2C, 0x02, 0x00, 0x00, 
46288
  0x2C, 0x03, 0x01, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x35, 0x02, 0x03, 0x00, 
46289
  0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x35, 0x03, 0x04, 0x00, 0x3D, 0x02, 0x03, 0x00, 
46290
  0x1B, 0x04, 0x02, 0x00, 0x3D, 0x02, 0x03, 0x01, 0x1B, 0x05, 0x02, 0x00, 0x2C, 0x02, 0x04, 0x00, 
46291
  0x31, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x35, 0x02, 0x06, 0x00, 0x1B, 0x06, 0x02, 0x00, 
46292
  0x1E, 0x06, 0x07, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x32, 0x08, 0x06, 0x00, 0x2C, 0x09, 0x06, 0x00, 
46293
  0x35, 0x08, 0x09, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x07, 0x07, 0x00, 
46294
  0x1B, 0x08, 0x07, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x35, 0x0A, 0x0B, 0x00, 
46295
  0x1B, 0x0B, 0x0A, 0x00, 0x1E, 0x0B, 0x03, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x1C, 0x05, 0x00, 0x00, 
46296
  0x31, 0x05, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0A, 0x0C, 0x00, 
46297
  0x1E, 0x0A, 0x03, 0x00, 0x2C, 0x09, 0x09, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x2C, 0x0B, 0x0A, 0x00, 
46298
  0x33, 0x0B, 0x04, 0x05, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 
46299
  0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x0B, 0x00, 0x33, 0x08, 0x0A, 0x0B, 0x2C, 0x0C, 0x0C, 0x00, 
46300
  0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0C, 0x0B, 0x00, 0x2C, 0x0E, 0x0D, 0x00, 0x35, 0x0D, 0x0E, 0x00, 
46301
  0x1B, 0x0E, 0x0D, 0x00, 0x2C, 0x10, 0x0E, 0x00, 0x33, 0x10, 0x0E, 0x00, 0x45, 0x0F, 0x00, 0x00, 
46302
  0x2C, 0x11, 0x0F, 0x00, 0x32, 0x11, 0x00, 0x00, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x12, 0x10, 0x00, 
46303
  0x33, 0x12, 0x0C, 0x10, 0x45, 0x11, 0x00, 0x00, 0x2C, 0x12, 0x02, 0x00, 0x2C, 0x13, 0x11, 0x00, 
46304
  0x2C, 0x14, 0x12, 0x00, 0x33, 0x12, 0x13, 0x14, 0x45, 0x10, 0x00, 0x00, 0x2C, 0x13, 0x13, 0x00, 
46305
  0x33, 0x13, 0x10, 0x0E, 0x45, 0x12, 0x00, 0x00, 0x2C, 0x13, 0x14, 0x00, 0x33, 0x13, 0x0F, 0x11, 
46306
  0x32, 0x12, 0x0E, 0x00, 0x45, 0x10, 0x00, 0x00, 0x03, 0x10, 0x00, 0x00, 0x85, 0x49, 0x1F, 0x00, 
46307
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x00, 
46308
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x01, 
46309
  0x0E, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 
46310
  0x03, 0x01, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 
46311
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x12, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x2D, 0x00, 
46312
  0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 
46313
  0x0C, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46314
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46315
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46316
  0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x83, 0x9A, 0xDA, 0x83, 0x98, 0xDA, 0x85, 0xE9, 0xDA, 0x85, 
46317
  0xE7, 0xCF, 0x07, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
46318
  0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x04, 0x00, 0x02, 0xCE, 0x07, 0x66, 0x6C, 0x61, 0x74, 0x74, 
46319
  0x65, 0x6E, 0xDA, 0x04, 0xDA, 0x88, 0x47, 0x00, 0x04, 0x00, 0xDA, 0x81, 0x5C, 0x00, 0x04, 0x01, 
46320
  0xDA, 0x8C, 0xBF, 0x40, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x36, 
46321
  0x03, 0x00, 0x00, 0x87, 0x0B, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x12, 0x66, 0x69, 
46322
  0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x75, 0x6E, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 
46323
  0xD8, 0x12, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x75, 0x6E, 0x6C, 0x69, 
46324
  0x73, 0x74, 0x65, 0x6E, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 
46325
  0xDA, 0x89, 0xC5, 0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 
46326
  0x6C, 0xD8, 0x0C, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0xCF, 
46327
  0x04, 0x63, 0x6F, 0x6D, 0x70, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x18, 0x00, 0x00, 0xCD, 
46328
  0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x3A, 0x00, 0x04, 0x03, 0xCE, 0x04, 0x63, 0x6F, 0x6D, 0x70, 0xDA, 
46329
  0x04, 0xDA, 0x2C, 0x00, 0x3A, 0x00, 0xCF, 0x09, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
46330
  0x73, 0x00, 0x3A, 0x01, 0xDA, 0x8C, 0xC7, 0x02, 0x3A, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
46331
  0x30, 0x30, 0x72, 0x2E, 0x01, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x26, 
46332
  0x02, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0x04, 0x03, 0x01, 0x1E, 
46333
  0x04, 0x04, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 0x05, 0x00, 0x06, 0x03, 0x05, 0x00, 0x00, 0x26, 
46334
  0x05, 0x03, 0x02, 0x1E, 0x05, 0x07, 0x00, 0x3D, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x3D, 
46335
  0x06, 0x00, 0x01, 0x1B, 0x08, 0x06, 0x00, 0x30, 0x06, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x26, 
46336
  0x06, 0x03, 0x03, 0x1E, 0x06, 0x09, 0x00, 0x3D, 0x09, 0x00, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x3D, 
46337
  0x09, 0x00, 0x01, 0x1B, 0x0B, 0x09, 0x00, 0x3D, 0x09, 0x00, 0x02, 0x1B, 0x0C, 0x09, 0x00, 0x30, 
46338
  0x09, 0x01, 0x00, 0x03, 0x09, 0x00, 0x00, 0x26, 0x09, 0x03, 0x04, 0x1E, 0x09, 0x0B, 0x00, 0x3D, 
46339
  0x0D, 0x00, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x3D, 0x0D, 0x00, 0x01, 0x1B, 0x0F, 0x0D, 0x00, 0x3D, 
46340
  0x0D, 0x00, 0x02, 0x1B, 0x10, 0x0D, 0x00, 0x3D, 0x0D, 0x00, 0x03, 0x1B, 0x11, 0x0D, 0x00, 0x30, 
46341
  0x0D, 0x02, 0x00, 0x03, 0x0D, 0x00, 0x00, 0x3D, 0x0D, 0x00, 0x00, 0x1B, 0x12, 0x0D, 0x00, 0x3D, 
46342
  0x0D, 0x00, 0x01, 0x1B, 0x13, 0x0D, 0x00, 0x3D, 0x0D, 0x00, 0x02, 0x1B, 0x14, 0x0D, 0x00, 0x3D, 
46343
  0x0D, 0x00, 0x03, 0x1B, 0x15, 0x0D, 0x00, 0x30, 0x0D, 0x03, 0x00, 0x2B, 0x16, 0x04, 0x00, 0x2B, 
46344
  0x17, 0xFF, 0xFF, 0x33, 0x00, 0x16, 0x17, 0x2C, 0x17, 0x00, 0x00, 0x35, 0x16, 0x17, 0x00, 0x31, 
46345
  0x0D, 0x00, 0x00, 0x34, 0x16, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
46346
  0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x01, 0x03, 0xDA, 0x8C, 0xC9, 0xDA, 
46347
  0x04, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x08, 0xCF, 0x01, 0x67, 0x00, 0x06, 
46348
  0x00, 0xDA, 0x1E, 0x34, 0x00, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x08, 0x35, 0x01, 0x02, 0x00, 0x31, 
46349
  0x01, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x07, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x12, 0x31, 
46350
  0x00, 0x31, 0x00, 0x31, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 
46351
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x09, 0x01, 0x04, 0xDA, 0x8C, 0xC9, 0xDA, 0x04, 
46352
  0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x8C, 0xCC, 0xBF, 0xFF, 0x00, 
46353
  0x0C, 0xDA, 0x82, 0xCA, 0x00, 0x09, 0x00, 0xDA, 0x1E, 0x34, 0x00, 0x00, 0x00, 0x2D, 0x02, 0x00, 
46354
  0x0C, 0x35, 0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x0B, 0x35, 0x02, 0x03, 
46355
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x0A, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x83, 
46356
  0x13, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x33, 0x00, 0x33, 0x00, 0x33, 0x00, 0x30, 0x00, 0x30, 
46357
  0x00, 0x30, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x04, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
46358
  0x0C, 0x01, 0x05, 0xDA, 0x8C, 0xC9, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x31, 0xBF, 0xFF, 
46359
  0x00, 0x0F, 0xDA, 0x8C, 0xCC, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x82, 0xCA, 0xBF, 0xFF, 0x00, 0x11, 
46360
  0xDA, 0x43, 0x00, 0x0C, 0x00, 0xDA, 0x1E, 0x34, 0x00, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x11, 0x35, 
46361
  0x01, 0x02, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x10, 0x35, 0x02, 0x03, 0x00, 0x31, 
46362
  0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x0F, 0x35, 0x01, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 
46363
  0x02, 0x00, 0x0E, 0x36, 0x02, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x14, 0x3B, 0x00, 0x3B, 0x00, 0x3B, 
46364
  0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x35, 0x00, 0x35, 0x00, 0x35, 0x00, 0x32, 0x00, 0x32, 
46365
  0x00, 0x32, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x00, 0x0C, 0x01, 0x05, 0xDA, 
46366
  0x8C, 0xC9, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x8C, 
46367
  0xCC, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xCA, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x43, 0x00, 0x0C, 
46368
  0x00, 0xDA, 0x1E, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x15, 0x35, 0x01, 0x02, 0x00, 0x31, 
46369
  0x01, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x14, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2D, 
46370
  0x03, 0x00, 0x13, 0x35, 0x01, 0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x02, 0x00, 0x12, 0x36, 
46371
  0x02, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0x16, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x21, 0x00, 0x21, 
46372
  0x00, 0x21, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x83, 0x0B, 
46373
  0x01, 0x04, 0x09, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x02, 
46374
  0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFE, 0x03, 0x00, 0x03, 0x03, 0x07, 0x00, 0x07, 0x00, 0x07, 
46375
  0x00, 0x07, 0x00, 0x1E, 0x00, 0x1E, 0xBF, 0xFD, 0x03, 0x00, 0x03, 0x04, 0x07, 0x00, 0x07, 0x00, 
46376
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x20, 0x00, 0x20, 0xBF, 0xFC, 0x03, 0x00, 0x03, 
46377
  0x05, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
46378
  0x00, 0x22, 0x00, 0x22, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46379
  0x00, 0x05, 0x00, 0x05, 0x01, 0x0D, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
46380
  0xBF, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 0x80, 0xDD, 0x3F, 0x00, 0xCF, 0x08, 0x77, 0x69, 0x74, 
46381
  0x68, 0x2D, 0x65, 0x6E, 0x76, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x07, 0x01, 0x01, 0xCD, 
46382
  0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0F, 0x00, 0x03, 0xDA, 0x81, 0xA8, 0xDA, 0x04, 0xDA, 0x80, 0xAE, 
46383
  0xD0, 0x08, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x80, 0xDC, 0xDA, 0x81, 0xA4, 
46384
  0xDA, 0x83, 0x43, 0x00, 0x0F, 0x00, 0xDA, 0x83, 0x4A, 0x00, 0x0F, 0x01, 0xDA, 0x80, 0xC7, 0x00, 
46385
  0x0F, 0x02, 0xDA, 0x8C, 0xCD, 0x46, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 
46386
  0x00, 0x33, 0x05, 0x06, 0x03, 0x34, 0x01, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x2C, 0x05, 0x02, 
46387
  0x00, 0x2C, 0x06, 0x03, 0x00, 0x33, 0x05, 0x04, 0x06, 0x31, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 
46388
  0x00, 0x2C, 0x05, 0x04, 0x00, 0x32, 0x05, 0x03, 0x00, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 
46389
  0x00, 0x85, 0xF0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46390
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46391
  0xCF, 0x06, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 
46392
  0x03, 0x02, 0x03, 0x01, 0x06, 0x00, 0x04, 0xCE, 0x06, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x66, 0xDA, 
46393
  0x04, 0xDA, 0x83, 0x46, 0x00, 0x06, 0x00, 0xCF, 0x03, 0x63, 0x6E, 0x64, 0x00, 0x06, 0x01, 0xDA, 
46394
  0x8A, 0x6A, 0x00, 0x06, 0x02, 0xCF, 0x04, 0x66, 0x61, 0x6C, 0x73, 0x00, 0x06, 0x03, 0xDA, 0x8C, 
46395
  0xD0, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x1E, 0x04, 0x02, 
46396
  0x00, 0x03, 0x01, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8A, 0xFF, 0x07, 0x00, 0x07, 0x00, 0x07, 
46397
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x65, 0x61, 0x63, 0x68, 0x6B, 0xD7, 0x00, 0xCD, 
46398
  0x00, 0xDD, 0x00, 0x00, 0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 
46399
  0xCE, 0x05, 0x65, 0x61, 0x63, 0x68, 0x6B, 0xDA, 0x04, 0xDA, 0x82, 0x5A, 0xDA, 0x82, 0x4A, 0x00, 
46400
  0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x82, 0x62, 0x00, 0x05, 0x02, 0xDA, 0x80, 0xC7, 
46401
  0x00, 0x05, 0x03, 0xDA, 0x8C, 0xD5, 0x2C, 0x04, 0x00, 0x00, 0x33, 0x00, 0x01, 0x04, 0x31, 0x02, 
46402
  0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x82, 0x3B, 0x03, 0x00, 0x03, 0x00, 
46403
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 
46404
  0x70, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x70, 0xDA, 0x82, 0x80, 
46405
  0xDA, 0x82, 0x7D, 0xCF, 0x04, 0x68, 0x61, 0x73, 0x68, 0xD8, 0x04, 0x68, 0x61, 0x73, 0x68, 0xCF, 
46406
  0x08, 0x72, 0x6F, 0x6F, 0x74, 0x2D, 0x65, 0x6E, 0x76, 0xDA, 0x00, 0xCF, 0x0B, 0x2A, 0x64, 0x6F, 
46407
  0x63, 0x2D, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2A, 0xDA, 0x86, 0xF7, 0xDA, 0x82, 0xF8, 0xD7, 0x01, 
46408
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x13, 0x04, 0x02, 0x04, 0x0C, 0x30, 0x01, 0x25, 0xCE, 0x0F, 0x62, 
46409
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x04, 
46410
  0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xDA, 0x81, 0x28, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xCE, 
46411
  0x24, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x74, 0x20, 0x25, 0x73, 
46412
  0x2C, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 
46413
  0x78, 0x69, 0x73, 0x74, 0x73, 0xDA, 0x81, 0x49, 0xDA, 0x81, 0x21, 0xDA, 0x30, 0xDA, 0x81, 0x5F, 
46414
  0xDA, 0x84, 0x2B, 0xDA, 0x81, 0x90, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 
46415
  0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
46416
  0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 
46417
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 
46418
  0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 
46419
  0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 
46420
  0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 
46421
  0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 
46422
  0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 
46423
  0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 
46424
  0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x00, 0x18, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 
46425
  0x00, 0x19, 0xDA, 0x82, 0xF5, 0xBF, 0xFF, 0x00, 0x1A, 0xDA, 0x82, 0xF6, 0xBF, 0xFF, 0x00, 0x1B, 
46426
  0xDA, 0x82, 0xF7, 0x00, 0x30, 0x00, 0xDA, 0x81, 0x39, 0x00, 0x30, 0x01, 0xDA, 0x82, 0xFA, 0x00, 
46427
  0x30, 0x02, 0xDA, 0x84, 0x2C, 0x00, 0x30, 0x03, 0xDA, 0x82, 0xFB, 0x00, 0x30, 0x04, 0xDA, 0x82, 
46428
  0xF8, 0x04, 0x30, 0x06, 0xDA, 0x84, 0x2C, 0x08, 0x30, 0x08, 0xDA, 0x81, 0x3A, 0x0B, 0x30, 0x0A, 
46429
  0xDA, 0x81, 0x2A, 0x13, 0x30, 0x0B, 0xDA, 0x84, 0x2D, 0x23, 0x30, 0x0F, 0xDA, 0x84, 0x2D, 0x20, 
46430
  0x02, 0x03, 0x00, 0x1B, 0x05, 0x01, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x05, 0x02, 0x00, 0x1B, 
46431
  0x06, 0x05, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x08, 0x35, 0x07, 0x08, 0x00, 0x1B, 
46432
  0x08, 0x07, 0x00, 0x2D, 0x0A, 0x00, 0x02, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 
46433
  0x0B, 0x00, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x01, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x33, 
46434
  0x0B, 0x0A, 0x06, 0x2C, 0x0D, 0x02, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1B, 0x0B, 0x0C, 0x00, 0x2C, 
46435
  0x0D, 0x03, 0x00, 0x32, 0x0B, 0x0D, 0x00, 0x2C, 0x0E, 0x04, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1E, 
46436
  0x0D, 0x05, 0x00, 0x2C, 0x0E, 0x05, 0x00, 0x32, 0x0E, 0x0B, 0x00, 0x2C, 0x0F, 0x06, 0x00, 0x35, 
46437
  0x0E, 0x0F, 0x00, 0x32, 0x01, 0x0B, 0x00, 0x2D, 0x0E, 0x00, 0x0A, 0x35, 0x0D, 0x0E, 0x00, 0x31, 
46438
  0x0B, 0x00, 0x00, 0x2C, 0x0F, 0x07, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x1B, 0x0F, 0x0E, 0x00, 0x32, 
46439
  0x08, 0x0F, 0x00, 0x2C, 0x11, 0x08, 0x00, 0x35, 0x10, 0x11, 0x00, 0x1E, 0x03, 0x04, 0x00, 0x32, 
46440
  0x0F, 0x03, 0x00, 0x2C, 0x12, 0x09, 0x00, 0x35, 0x11, 0x12, 0x00, 0x2C, 0x11, 0x0A, 0x00, 0x32, 
46441
  0x11, 0x0F, 0x00, 0x2C, 0x12, 0x0B, 0x00, 0x35, 0x11, 0x12, 0x00, 0x03, 0x0F, 0x00, 0x00, 0xBF, 
46442
  0xFF, 0x91, 0x8C, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 
46443
  0x00, 0x10, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x1A, 0x00, 0x1A, 0x00, 0x1A, 
46444
  0x00, 0x1A, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
46445
  0x00, 0x0B, 0x00, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 
46446
  0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 
46447
  0x01, 0x05, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46448
  0xBF, 0xF2, 0x03, 0xDB, 0x01, 0xCF, 0x0D, 0x2A, 0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 
46449
  0x6D, 0x61, 0x72, 0x2A, 0xD0, 0x0B, 0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 
46450
  0x72, 0xCF, 0x05, 0x72, 0x61, 0x6E, 0x67, 0x65, 0xD8, 0x05, 0x72, 0x61, 0x6E, 0x67, 0x65, 0xCF, 
46451
  0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x71, 0x72, 0x74, 0xD8, 0x09, 0x6D, 0x61, 0x74, 0x68, 
46452
  0x2F, 0x73, 0x71, 0x72, 0x74, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x70, 0x61, 
46453
  0x74, 0x68, 0xDA, 0x81, 0x21, 0xCF, 0x01, 0x2A, 0xDA, 0x8A, 0xB4, 0xDA, 0x87, 0x66, 0xDA, 0x87, 
46454
  0x64, 0xCF, 0x0F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 
46455
  0x61, 0x70, 0xDA, 0x78, 0xCF, 0x0C, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 
46456
  0x61, 0x74, 0xDA, 0x82, 0xB1, 0xCF, 0x0A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x72, 0x6F, 0x6F, 
46457
  0x74, 0xD8, 0x0A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x72, 0x6F, 0x6F, 0x74, 0xCF, 0x0F, 0x73, 
46458
  0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xD8, 0x0F, 
46459
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xCF, 
46460
  0x09, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x74, 0x69, 0x6D, 0x65, 0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x6D, 
46461
  0x6B, 0x74, 0x69, 0x6D, 0x65, 0xCF, 0x09, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 
46462
  0xD8, 0x09, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0xCF, 0x0A, 0x66, 0x66, 0x69, 
46463
  0x2F, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0xDA, 0x8B, 0x08, 0xCF, 0x07, 0x75, 0x6E, 0x74, 0x72, 
46464
  0x61, 0x63, 0x65, 0xD8, 0x07, 0x75, 0x6E, 0x74, 0x72, 0x61, 0x63, 0x65, 0xCF, 0x05, 0x65, 0x72, 
46465
  0x72, 0x6F, 0x72, 0xDA, 0x8C, 0x67, 0xCF, 0x0A, 0x65, 0x76, 0x2F, 0x72, 0x73, 0x65, 0x6C, 0x65, 
46466
  0x63, 0x74, 0xD8, 0x0A, 0x65, 0x76, 0x2F, 0x72, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0xDA, 0x89, 
46467
  0xD5, 0xDA, 0x89, 0xD3, 0xCF, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x72, 0x6F, 
46468
  0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xD8, 0x11, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
46469
  0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 
46470
  0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x81, 0x76, 0xCF, 0x06, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 
46471
  0x70, 0xDA, 0x82, 0xD3, 0xCF, 0x06, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0xD7, 0x00, 0xCD, 0x00, 
46472
  0xDC, 0x00, 0x00, 0x05, 0x02, 0x01, 0x02, 0x01, 0x06, 0x00, 0x03, 0xCE, 0x06, 0x72, 0x65, 0x74, 
46473
  0x75, 0x72, 0x6E, 0xDA, 0x04, 0xDA, 0x88, 0x84, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x50, 0x00, 0x06, 
46474
  0x01, 0xDA, 0x83, 0xCE, 0x00, 0x06, 0x02, 0xDA, 0x8C, 0xFD, 0x32, 0x00, 0x01, 0x00, 0x45, 0x03, 
46475
  0x00, 0x00, 0x2B, 0x04, 0x00, 0x00, 0x32, 0x04, 0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 
46476
  0x00, 0x00, 0x81, 0xAA, 0x0D, 0x00, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 
46477
  0x86, 0x3F, 0xDA, 0x86, 0x3D, 0xCF, 0x0A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 
46478
  0x68, 0xDA, 0x30, 0xCF, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x62, 0x79, 0x74, 0x65, 
46479
  0x73, 0xD8, 0x0C, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x62, 0x79, 0x74, 0x65, 0x73, 0xCF, 
46480
  0x0D, 0x2A, 0x72, 0x65, 0x70, 0x6C, 0x2D, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x2A, 0xDA, 0x89, 
46481
  0xC0, 0xCF, 0x06, 0x66, 0x69, 0x62, 0x65, 0x72, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
46482
  0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x06, 0x66, 0x69, 0x62, 0x65, 0x72, 0x3F, 
46483
  0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x84, 0x35, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 
46484
  0x8D, 0x04, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 
46485
  0x01, 0x00, 0x25, 0x03, 0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x66, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 
46486
  0x00, 0x2B, 0x00, 0x2B, 0x00, 0x2B, 0xCF, 0x0F, 0x2A, 0x64, 0x65, 0x66, 0x64, 0x79, 0x6E, 0x2D, 
46487
  0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2A, 0xDA, 0x86, 0x65, 0xCF, 0x0A, 0x70, 0x61, 0x72, 0x73, 
46488
  0x65, 0x72, 0x2F, 0x65, 0x6F, 0x66, 0xDA, 0x10, 0xCF, 0x04, 0x6E, 0x6F, 0x74, 0x3D, 0xDA, 0x82, 
46489
  0x56, 0xCF, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x78, 0x73, 
46490
  0x74, 0x61, 0x63, 0x6B, 0xD8, 0x11, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 0x74, 0x6D, 
46491
  0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xDA, 0x81, 0x5D, 0xDA, 0x81, 0x5A, 0xCF, 0x03, 0x6E, 
46492
  0x6F, 0x74, 0xDA, 0x82, 0x51, 0xDA, 0x89, 0x44, 0xDA, 0x89, 0x41, 0xCF, 0x04, 0x71, 0x75, 0x69, 
46493
  0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x03, 0x0A, 0x00, 0x02, 
46494
  0xCE, 0x04, 0x71, 0x75, 0x69, 0x74, 0xDA, 0x04, 0xDA, 0x85, 0x49, 0xDA, 0x82, 0xC9, 0xDA, 0x85, 
46495
  0x4A, 0x00, 0x0A, 0x00, 0xDA, 0x83, 0xCE, 0x00, 0x0A, 0x01, 0xDA, 0x8D, 0x0D, 0x2C, 0x02, 0x00, 
46496
  0x00, 0x29, 0x03, 0x00, 0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 
46497
  0x00, 0x2C, 0x03, 0x02, 0x00, 0x32, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x35, 0x03, 0x04, 
46498
  0x00, 0x04, 0x00, 0x00, 0x00, 0x8A, 0xB9, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46499
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFA, 0x01, 0xDA, 0x7C, 0xDA, 0x73, 0xCF, 
46500
  0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x72, 0x75, 0x6E, 0x63, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 
46501
  0x68, 0x2F, 0x74, 0x72, 0x75, 0x6E, 0x63, 0xCF, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 
46502
  0x6E, 0x62, 0x72, 0x65, 0x61, 0x6B, 0xD8, 0x0D, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 
46503
  0x62, 0x72, 0x65, 0x61, 0x6B, 0xCF, 0x04, 0x2D, 0x3F, 0x3E, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 
46504
  0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 
46505
  0x04, 0x2D, 0x3F, 0x3E, 0x3E, 0xDA, 0x04, 0xDA, 0x83, 0xC2, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 
46506
  0x05, 0x01, 0xDA, 0x80, 0x85, 0x00, 0x05, 0x02, 0xDA, 0x8D, 0x14, 0x01, 0x05, 0x04, 0xDA, 0x88, 
46507
  0x67, 0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 0x05, 0x00, 
46508
  0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0E, 0x02, 0x02, 0x02, 0x09, 0x31, 
46509
  0x00, 0x07, 0xDA, 0x88, 0x68, 0xDA, 0x04, 0xDA, 0x1C, 0xDA, 0x70, 0xDA, 0x88, 0x69, 0xDA, 0x82, 
46510
  0xB5, 0xDA, 0x5C, 0xDA, 0x82, 0xB1, 0xDA, 0x71, 0xDA, 0x82, 0x81, 0xDA, 0x83, 0xF7, 0x00, 0x31, 
46511
  0x00, 0xDA, 0x82, 0xB2, 0x00, 0x31, 0x01, 0xDA, 0x32, 0x00, 0x31, 0x02, 0xDA, 0x88, 0x67, 0x17, 
46512
  0x31, 0x05, 0xDA, 0x82, 0xCA, 0x19, 0x31, 0x06, 0xDA, 0x82, 0x33, 0x1C, 0x31, 0x07, 0xDA, 0x80, 
46513
  0x8B, 0x24, 0x31, 0x08, 0xDA, 0x38, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 
46514
  0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x0C, 0x00, 0x2B, 0x06, 
46515
  0x00, 0x00, 0x3A, 0x04, 0x01, 0x06, 0x2B, 0x06, 0x01, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x07, 
46516
  0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 
46517
  0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 0x01, 
46518
  0x04, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x3D, 0x04, 
46519
  0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x3D, 0x04, 0x03, 0x01, 0x1B, 0x06, 0x04, 0x00, 0x2C, 0x07, 
46520
  0x04, 0x00, 0x35, 0x04, 0x07, 0x00, 0x1B, 0x07, 0x04, 0x00, 0x31, 0x05, 0x00, 0x00, 0x40, 0x08, 
46521
  0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x40, 0x09, 0x00, 0x00, 0x33, 0x08, 0x06, 0x09, 0x2C, 0x0B, 
46522
  0x05, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x1B, 0x08, 0x0A, 0x00, 0x32, 0x07, 0x00, 0x00, 0x46, 0x09, 
46523
  0x00, 0x00, 0x32, 0x01, 0x08, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x2C, 0x0D, 
46524
  0x07, 0x00, 0x33, 0x0D, 0x07, 0x0B, 0x45, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x33, 0x0D, 
46525
  0x09, 0x0C, 0x45, 0x0B, 0x00, 0x00, 0x03, 0x0B, 0x00, 0x00, 0x85, 0x9E, 0x1E, 0x00, 0x1E, 0x00, 
46526
  0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 0x22, 0x00, 
46527
  0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 0x02, 0x12, 
46528
  0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46529
  0x05, 0x03, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
46530
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x22, 0x00, 0x22, 0x00, 
46531
  0x22, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 
46532
  0x9D, 0x03, 0x00, 0x03, 0x07, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x09, 0x76, 0x61, 0x72, 0x67, 
46533
  0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x08, 0x02, 0x02, 0x02, 
46534
  0x03, 0x0D, 0x00, 0x04, 0xCE, 0x09, 0x76, 0x61, 0x72, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0xDA, 
46535
  0x04, 0xDA, 0x83, 0xCD, 0xDA, 0x82, 0xC7, 0xDA, 0x82, 0xC9, 0x00, 0x0D, 0x00, 0xDA, 0x81, 0x86, 
46536
  0x00, 0x0D, 0x01, 0xDA, 0x83, 0xC4, 0x00, 0x0D, 0x02, 0xDA, 0x8D, 0x17, 0x03, 0x0D, 0x04, 0xDA, 
46537
  0x83, 0xCF, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 
46538
  0x03, 0x00, 0x31, 0x01, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x32, 0x06, 
46539
  0x05, 0x00, 0x44, 0x05, 0x00, 0x00, 0x32, 0x04, 0x05, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 
46540
  0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x5F, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x03, 
46541
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFC, 
46542
  0x01, 0xCF, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0xD8, 0x07, 0x69, 0x6E, 0x74, 0x2F, 
46543
  0x73, 0x36, 0x34, 0xDA, 0x80, 0xB6, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 
46544
  0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x04, 0x0C, 0x00, 0x02, 0xCE, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x70, 
46545
  0x61, 0x77, 0x6E, 0xDA, 0x04, 0xDA, 0x8B, 0x7A, 0xDA, 0x80, 0xAE, 0xD0, 0x05, 0x73, 0x70, 0x61, 
46546
  0x77, 0x6E, 0xDA, 0x80, 0xB0, 0x00, 0x0C, 0x00, 0xDA, 0x80, 0xC7, 0x00, 0x0C, 0x01, 0xDA, 0x80, 
46547
  0xB6, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 
46548
  0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x04, 0x05, 0x02, 0x34, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 
46549
  0x00, 0x2C, 0x04, 0x03, 0x00, 0x32, 0x04, 0x03, 0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 
46550
  0x00, 0x8E, 0xFA, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46551
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xDA, 0x83, 0x59, 0xDA, 0x83, 0x57, 
46552
  0xDA, 0x82, 0xF0, 0xDA, 0x89, 0x54, 0xDA, 0x84, 0x82, 0xDA, 0x84, 0x80, 0xCF, 0x0D, 0x6F, 0x73, 
46553
  0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 
46554
  0x70, 0x72, 0x6F, 0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xDA, 0x80, 0xBC, 0xD7, 0x00, 0xCD, 
46555
  0x00, 0xDD, 0x00, 0x00, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x0F, 0x00, 0x02, 
46556
  0xCE, 0x0F, 0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 
46557
  0x64, 0xDA, 0x04, 0xDA, 0x8B, 0x7A, 0xDA, 0x80, 0xAE, 0xD0, 0x0C, 0x73, 0x70, 0x61, 0x77, 0x6E, 
46558
  0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0xDA, 0x88, 0xA2, 0xD0, 0x01, 0x6E, 0x00, 0x0F, 0x00, 
46559
  0xDA, 0x80, 0xC7, 0x00, 0x0F, 0x01, 0xDA, 0x80, 0xBC, 0x2C, 0x03, 0x00, 0x00, 0x31, 0x03, 0x00, 
46560
  0x00, 0x46, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x2C, 0x05, 0x02, 0x00, 0x33, 0x04, 0x05, 
46561
  0x02, 0x34, 0x00, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x03, 0x00, 0x28, 0x05, 0x00, 
46562
  0x00, 0x33, 0x04, 0x03, 0x05, 0x2C, 0x04, 0x04, 0x00, 0x31, 0x04, 0x00, 0x00, 0x45, 0x02, 0x00, 
46563
  0x00, 0x03, 0x02, 0x00, 0x00, 0x8F, 0x1D, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46564
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46565
  0x00, 0x05, 0x00, 0x05, 0xDA, 0x87, 0xC9, 0xDA, 0x87, 0xC2, 0xCF, 0x12, 0x6D, 0x6F, 0x64, 0x75, 
46566
  0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0xDA, 0x81, 
46567
  0xF7, 0xCF, 0x01, 0x25, 0xDA, 0x86, 0xAD, 0xDA, 0x83, 0xB9, 0xDA, 0x1C, 0xCF, 0x0D, 0x6F, 0x73, 
46568
  0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x66, 0x6F, 0x72, 0x6B, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 
46569
  0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x66, 0x6F, 0x72, 0x6B, 0xDA, 0x82, 0xF4, 0xD7, 0x01, 0xCD, 
46570
  0x03, 0xFF, 0x00, 0x00, 0x16, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x10, 0x52, 0x01, 0x01, 
46571
  0x23, 0xCE, 0x0E, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 
46572
  0x65, 0xDA, 0x04, 0xD0, 0x06, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 
46573
  0xF0, 0xDA, 0x81, 0x3E, 0xCE, 0x1D, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x73, 0x6F, 0x75, 0x72, 
46574
  0x63, 0x65, 0x20, 0x25, 0x76, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 
46575
  0x62, 0x6C, 0x65, 0xDA, 0x81, 0x49, 0xDA, 0x81, 0x25, 0xDA, 0x81, 0x26, 0xCE, 0x07, 0x2E, 0x62, 
46576
  0x61, 0x63, 0x6B, 0x75, 0x70, 0xDA, 0x81, 0x28, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 
46577
  0xDE, 0xDA, 0x80, 0xDF, 0xDA, 0x81, 0x6D, 0xCE, 0x0A, 0x6F, 0x6C, 0x64, 0x2D, 0x62, 0x75, 0x6E, 
46578
  0x64, 0x6C, 0x65, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 
46579
  0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 
46580
  0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 
46581
  0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 
46582
  0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 
46583
  0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 
46584
  0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 
46585
  0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 
46586
  0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 
46587
  0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 
46588
  0x17, 0xDA, 0x82, 0xF3, 0x00, 0x52, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x52, 0x01, 0xDA, 0x81, 0x22, 
46589
  0x00, 0x52, 0x02, 0xDA, 0x88, 0x36, 0x00, 0x52, 0x03, 0xDA, 0x82, 0xF4, 0x03, 0x52, 0x05, 0xDA, 
46590
  0x81, 0x39, 0x09, 0x52, 0x06, 0xDA, 0x89, 0x7B, 0x0C, 0x52, 0x09, 0xDA, 0x81, 0x2A, 0x13, 0x1A, 
46591
  0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x61, 0x23, 0x52, 0x0A, 0xCF, 0x0A, 0x62, 
46592
  0x61, 0x63, 0x6B, 0x75, 0x70, 0x2D, 0x64, 0x69, 0x72, 0x2B, 0x52, 0x0E, 0xCF, 0x14, 0x62, 0x61, 
46593
  0x63, 0x6B, 0x75, 0x70, 0x2D, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x73, 0x6F, 0x75, 0x72, 
46594
  0x63, 0x65, 0x31, 0x4E, 0x0F, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x62, 0x34, 0x4E, 
46595
  0x11, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x63, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x05, 
46596
  0x00, 0x0D, 0x35, 0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x44, 0x06, 0x00, 0x00, 0x2C, 0x08, 
46597
  0x00, 0x00, 0x3B, 0x07, 0x05, 0x08, 0x20, 0x07, 0x02, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x1B, 0x06, 
46598
  0x07, 0x00, 0x2D, 0x09, 0x00, 0x02, 0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x2C, 0x0A, 
46599
  0x01, 0x00, 0x32, 0x01, 0x0A, 0x00, 0x2C, 0x0B, 0x02, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x2C, 0x0C, 
46600
  0x03, 0x00, 0x25, 0x0B, 0x0C, 0x0A, 0x1B, 0x0A, 0x0B, 0x00, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x05, 
46601
  0x00, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x32, 0x0B, 0x01, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 
46602
  0x0C, 0x00, 0x2C, 0x0A, 0x06, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2C, 0x0B, 0x07, 0x00, 0x35, 0x0A, 
46603
  0x0B, 0x00, 0x33, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 
46604
  0x09, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x0A, 0x0B, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x2D, 0x0D, 
46605
  0x00, 0x09, 0x35, 0x0C, 0x0D, 0x00, 0x29, 0x0D, 0x00, 0x00, 0x33, 0x00, 0x0A, 0x0D, 0x2D, 0x0E, 
46606
  0x00, 0x17, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x30, 0x0F, 0x00, 0x00, 0x2C, 0x10, 
46607
  0x0A, 0x00, 0x32, 0x0F, 0x10, 0x00, 0x2C, 0x11, 0x0B, 0x00, 0x35, 0x10, 0x11, 0x00, 0x1B, 0x0F, 
46608
  0x10, 0x00, 0x28, 0x11, 0x00, 0x00, 0x37, 0x10, 0x0F, 0x11, 0x1B, 0x11, 0x10, 0x00, 0x31, 0x0F, 
46609
  0x00, 0x00, 0x2C, 0x12, 0x0C, 0x00, 0x35, 0x10, 0x12, 0x00, 0x2C, 0x13, 0x0D, 0x00, 0x25, 0x12, 
46610
  0x10, 0x13, 0x1E, 0x12, 0x02, 0x00, 0x1C, 0x13, 0x00, 0x00, 0x2C, 0x10, 0x0E, 0x00, 0x33, 0x0E, 
46611
  0x10, 0x00, 0x2D, 0x13, 0x00, 0x16, 0x35, 0x10, 0x13, 0x00, 0x2C, 0x10, 0x0F, 0x00, 0x33, 0x0E, 
46612
  0x09, 0x10, 0x2C, 0x13, 0x09, 0x00, 0x35, 0x10, 0x13, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x14, 
46613
  0x00, 0x04, 0x35, 0x13, 0x14, 0x00, 0x32, 0x10, 0x13, 0x00, 0x2D, 0x15, 0x00, 0x0B, 0x35, 0x14, 
46614
  0x15, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x2D, 0x13, 0x00, 0x09, 0x35, 0x10, 0x13, 0x00, 0x39, 0x10, 
46615
  0x11, 0x0F, 0x31, 0x0E, 0x00, 0x00, 0x2D, 0x10, 0x00, 0x09, 0x35, 0x0F, 0x10, 0x00, 0x03, 0x00, 
46616
  0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x02, 0x14, 0x02, 
46617
  0x21, 0xDA, 0x89, 0x8F, 0xDA, 0x04, 0xDA, 0x82, 0xBC, 0xDA, 0x81, 0x6D, 0xBF, 0xFF, 0x00, 0x00, 
46618
  0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 
46619
  0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 
46620
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 
46621
  0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
46622
  0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 
46623
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 
46624
  0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 
46625
  0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 
46626
  0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 
46627
  0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x00, 0x17, 0xDA, 0x82, 0xF3, 0xBF, 0xFF, 0x01, 
46628
  0x00, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x01, 0x01, 0xDA, 0x81, 0x22, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 
46629
  0x88, 0x36, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 0x82, 0xF4, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x39, 
46630
  0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x89, 0x7B, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x81, 0x2A, 0xBF, 0xFF, 
46631
  0x01, 0x0A, 0xDA, 0x8D, 0x2F, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x8D, 0x30, 0xBF, 0xFF, 0x01, 0x0E, 
46632
  0xDA, 0x8D, 0x31, 0x2D, 0x00, 0x01, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x11, 0x35, 
46633
  0x00, 0x01, 0x00, 0x2D, 0x01, 0x01, 0x06, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 
46634
  0x01, 0x02, 0x00, 0x2D, 0x02, 0x01, 0x02, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 
46635
  0x02, 0x03, 0x00, 0x2D, 0x03, 0x01, 0x01, 0x2C, 0x04, 0x01, 0x00, 0x2D, 0x05, 0x01, 0x00, 0x33, 
46636
  0x03, 0x04, 0x05, 0x34, 0x01, 0x00, 0x00, 0x34, 0x02, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x16, 0x36, 
46637
  0x03, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x91, 0x60, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
46638
  0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x2F, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3D, 0x00, 0x3D, 0x00, 
46639
  0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x91, 
46640
  0x55, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 
46641
  0x00, 0x11, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 
46642
  0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46643
  0x00, 0x05, 0x00, 0x05, 0x01, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x15, 0x00, 0x15, 
46644
  0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x1F, 
46645
  0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46646
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
46647
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 
46648
  0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x44, 0x00, 0x44, 0x00, 0x44, 0x00, 0x0F, 
46649
  0x00, 0x0F, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFD, 0x05, 0x06, 0x05, 0x00, 
46650
  0x05, 0x00, 0x05, 0xBF, 0xEE, 0x03, 0x47, 0x00, 0x00, 0x00, 0xDB, 0x01, 0xCF, 0x09, 0x61, 0x72, 
46651
  0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0xD8, 0x09, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 
46652
  0x65, 0x77, 0xCF, 0x06, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 
46653
  0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0E, 0x00, 0x06, 0xCE, 0x06, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 
46654
  0x66, 0xDA, 0x04, 0x00, 0x0E, 0x00, 0xDA, 0x81, 0x4D, 0x00, 0x0E, 0x01, 0xDA, 0x8D, 0x36, 0x00, 
46655
  0x0E, 0x00, 0xDA, 0x82, 0x62, 0x02, 0x0E, 0x03, 0xDA, 0x3A, 0x04, 0x0E, 0x04, 0xDA, 0x39, 0x08, 
46656
  0x0D, 0x05, 0xDA, 0x1E, 0x28, 0x03, 0x00, 0x00, 0x49, 0x02, 0x00, 0x03, 0x1B, 0x03, 0x02, 0x00, 
46657
  0x3B, 0x02, 0x00, 0x03, 0x1B, 0x04, 0x02, 0x00, 0x49, 0x03, 0x00, 0x03, 0x1F, 0x03, 0x07, 0x00, 
46658
  0x3A, 0x02, 0x00, 0x03, 0x1B, 0x05, 0x02, 0x00, 0x23, 0x02, 0x05, 0x04, 0x1E, 0x02, 0x02, 0x00, 
46659
  0x1B, 0x04, 0x05, 0x00, 0x1C, 0xF9, 0xFF, 0xFF, 0x03, 0x04, 0x00, 0x00, 0x83, 0x42, 0x0A, 0x00, 
46660
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 
46661
  0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0xCF, 0x08, 0x70, 0x65, 0x67, 0x2F, 0x66, 
46662
  0x69, 0x6E, 0x64, 0xD8, 0x08, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0xCF, 0x0F, 0x6E, 
46663
  0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0xDA, 0x83, 
46664
  0xBD, 0xCF, 0x04, 0x6E, 0x65, 0x78, 0x74, 0xDA, 0x82, 0x53, 0xCF, 0x07, 0x70, 0x61, 0x72, 0x74, 
46665
  0x69, 0x61, 0x6C, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
46666
  0xFF, 0xFF, 0x01, 0x08, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 
46667
  0xDA, 0x04, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0x01, 0x01, 0x06, 0x00, 
46668
  0x02, 0xCE, 0x05, 0x7A, 0x65, 0x72, 0x6F, 0x3F, 0xDA, 0x04, 0xDA, 0x82, 0x67, 0x00, 0x06, 0x00, 
46669
  0xDA, 0x1E, 0x00, 0x06, 0x01, 0xCF, 0x05, 0x7A, 0x65, 0x72, 0x6F, 0x3F, 0x2B, 0x02, 0x00, 0x00, 
46670
  0x32, 0x00, 0x02, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x26, 0x03, 0x02, 0x00, 
46671
  0x03, 0x03, 0x00, 0x00, 0x83, 0x8F, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x2A, 0x00, 0x27, 0x00, 
46672
  0x27, 0x00, 0x08, 0x00, 0xDA, 0x31, 0x00, 0x08, 0x01, 0xDA, 0x86, 0x6A, 0x00, 0x08, 0x02, 0xDA, 
46673
  0x8D, 0x3D, 0x3F, 0x03, 0x01, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 
46674
  0x05, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x03, 0x00, 0x00, 0x03, 0x03, 
46675
  0x00, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x02, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 
46676
  0x05, 0x01, 0x04, 0xDA, 0x8D, 0x3F, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 
46677
  0x00, 0x01, 0xDA, 0x86, 0x6A, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8D, 0x3D, 0x00, 0x05, 0x00, 0xDA, 
46678
  0x82, 0xCD, 0x2D, 0x01, 0x00, 0x01, 0x34, 0x01, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2D, 0x01, 
46679
  0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x86, 0x08, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 
46680
  0x18, 0x00, 0x18, 0x86, 0x07, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x00, 0x03, 
46681
  0x01, 0x05, 0x00, 0x05, 0x03, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 
46682
  0x74, 0xD7, 0x00, 0xCD, 0x00, 0x09, 0x00, 0x10, 0x06, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
46683
  0x00, 0x13, 0xCE, 0x07, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 0x74, 0x3F, 0x01, 0x00, 0x00, 0x26, 
46684
  0x02, 0x01, 0x00, 0x1E, 0x02, 0x03, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x03, 0x03, 0x00, 0x00, 0x26, 
46685
  0x02, 0x01, 0x01, 0x1E, 0x02, 0x05, 0x00, 0x2B, 0x03, 0x01, 0x00, 0x3D, 0x04, 0x00, 0x00, 0x14, 
46686
  0x03, 0x03, 0x04, 0x03, 0x03, 0x00, 0x00, 0x3D, 0x03, 0x00, 0x00, 0x2B, 0x05, 0x01, 0x00, 0x3A, 
46687
  0x04, 0x00, 0x05, 0x14, 0x03, 0x03, 0x04, 0x05, 0x05, 0x05, 0x01, 0x25, 0x02, 0x05, 0x01, 0x1E, 
46688
  0x02, 0xFC, 0xFF, 0x03, 0x03, 0x00, 0x00, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 
46689
  0xD8, 0x07, 0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0xCF, 0x08, 0x64, 0x65, 0x73, 0x63, 0x72, 
46690
  0x69, 0x62, 0x65, 0xDA, 0x8C, 0x92, 0xCF, 0x0D, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 
46691
  0x2D, 0x65, 0x78, 0x65, 0x63, 0xD8, 0x0D, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 
46692
  0x65, 0x78, 0x65, 0x63, 0xCF, 0x08, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0xD7, 0x00, 
46693
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x15, 0x00, 0x07, 0xCE, 0x08, 0x64, 
46694
  0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0xDA, 0x04, 0xDA, 0x30, 0x00, 0x15, 0x00, 0xDA, 0x81, 
46695
  0x5C, 0x00, 0x15, 0x01, 0xDA, 0x8D, 0x4B, 0x01, 0x15, 0x03, 0xDA, 0x39, 0x03, 0x15, 0x05, 0xCF, 
46696
  0x04, 0x73, 0x65, 0x65, 0x6E, 0x03, 0x14, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 
46697
  0x74, 0x06, 0x14, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x73, 0x09, 0x14, 0x08, 
46698
  0xDA, 0x1E, 0x40, 0x02, 0x00, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x44, 0x04, 0x00, 0x00, 0x1B, 0x05, 
46699
  0x04, 0x00, 0x28, 0x07, 0x00, 0x00, 0x49, 0x06, 0x00, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 
46700
  0x0D, 0x00, 0x3A, 0x06, 0x00, 0x07, 0x1B, 0x08, 0x06, 0x00, 0x3A, 0x06, 0x05, 0x08, 0x1E, 0x06, 
46701
  0x02, 0x00, 0x1C, 0x06, 0x00, 0x00, 0x29, 0x09, 0x00, 0x00, 0x3C, 0x05, 0x08, 0x09, 0x32, 0x03, 
46702
  0x08, 0x00, 0x2C, 0x0A, 0x00, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x49, 0x07, 0x00, 0x07, 0x1C, 0xF4, 
46703
  0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0xF8, 0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 
46704
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x12, 0x00, 0x0E, 0x00, 
46705
  0x0E, 0x00, 0x26, 0x00, 0x26, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x03, 0x00, 0x03, 0xBF, 
46706
  0xFB, 0x01, 0xCF, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 
46707
  0x77, 0x6F, 0x72, 0x64, 0xD8, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 
46708
  0x68, 0x2D, 0x77, 0x6F, 0x72, 0x64, 0xCF, 0x04, 0x61, 0x6E, 0x79, 0x3F, 0xD7, 0x00, 0xCD, 0x00, 
46709
  0xDC, 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x00, 0x0D, 0x00, 0x06, 0xCE, 0x04, 0x61, 0x6E, 0x79, 
46710
  0x3F, 0xDA, 0x04, 0x00, 0x0D, 0x00, 0xDA, 0x33, 0x00, 0x0D, 0x01, 0xDA, 0x8D, 0x53, 0x00, 0x0D, 
46711
  0x02, 0xDA, 0x7E, 0x00, 0x0C, 0x00, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4E, 0x03, 
46712
  0x0C, 0x04, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x4D, 0x06, 0x0C, 0x05, 0xDA, 0x1E, 
46713
  0x28, 0x02, 0x00, 0x00, 0x28, 0x04, 0x00, 0x00, 0x49, 0x03, 0x00, 0x04, 0x1B, 0x04, 0x03, 0x00, 
46714
  0x1F, 0x04, 0x08, 0x00, 0x3A, 0x03, 0x00, 0x04, 0x1B, 0x05, 0x03, 0x00, 0x1E, 0x02, 0x02, 0x00, 
46715
  0x1C, 0x04, 0x00, 0x00, 0x1B, 0x02, 0x05, 0x00, 0x49, 0x04, 0x00, 0x04, 0x1C, 0xF9, 0xFF, 0xFF, 
46716
  0x03, 0x02, 0x00, 0x00, 0x86, 0x17, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46717
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0xBF, 0xFB, 
46718
  0x01, 0xCF, 0x04, 0x63, 0x61, 0x73, 0x65, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 0x00, 0x00, 0x0C, 0x01, 
46719
  0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x05, 0x1C, 0x00, 0x01, 0x06, 0xCE, 0x04, 0x63, 0x61, 0x73, 
46720
  0x65, 0xDA, 0x04, 0xDA, 0x82, 0x4C, 0xDA, 0x5C, 0xDA, 0x80, 0xAB, 0xDA, 0x82, 0xB5, 0xDA, 0x80, 
46721
  0xB3, 0x00, 0x1C, 0x00, 0xCF, 0x08, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x00, 0x1C, 
46722
  0x01, 0xDA, 0x83, 0x21, 0x00, 0x1C, 0x02, 0xDA, 0x8D, 0x58, 0x03, 0x1C, 0x04, 0xCF, 0x03, 0x61, 
46723
  0x74, 0x6D, 0x0A, 0x1C, 0x06, 0xDA, 0x80, 0x8B, 0x0C, 0x1C, 0x08, 0xDA, 0x8A, 0x06, 0x31, 0x00, 
46724
  0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x1E, 0x04, 
46725
  0x03, 0x00, 0x1B, 0x05, 0x00, 0x00, 0x1C, 0x04, 0x00, 0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 
46726
  0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x30, 0x07, 0x00, 0x00, 0x1B, 0x08, 
46727
  0x07, 0x00, 0x1E, 0x04, 0x04, 0x00, 0x2B, 0x09, 0x00, 0x00, 0x31, 0x09, 0x00, 0x00, 0x36, 0x08, 
46728
  0x00, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x33, 0x09, 0x06, 0x00, 0x2C, 0x0A, 0x03, 0x00, 0x35, 0x09, 
46729
  0x0A, 0x00, 0x2B, 0x0A, 0x00, 0x00, 0x31, 0x0A, 0x00, 0x00, 0x35, 0x0A, 0x08, 0x00, 0x2C, 0x0B, 
46730
  0x04, 0x00, 0x33, 0x0B, 0x09, 0x0A, 0x2C, 0x0B, 0x03, 0x00, 0x36, 0x0B, 0x00, 0x00, 0xCD, 0x00, 
46731
  0xDC, 0x00, 0x00, 0x0A, 0x01, 0x01, 0x01, 0x03, 0x1F, 0x01, 0x08, 0xDA, 0x8A, 0x07, 0xDA, 0x04, 
46732
  0xDA, 0x87, 0xA6, 0xDA, 0x82, 0xB5, 0xDA, 0x82, 0x81, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8D, 0x5B, 
46733
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x83, 0x21, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8D, 0x58, 0xBF, 0xFF, 
46734
  0x00, 0x04, 0xDA, 0x8D, 0x5C, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x80, 0x8B, 0x00, 0x1F, 0x00, 0xDA, 
46735
  0x43, 0x00, 0x1F, 0x01, 0xDA, 0x8A, 0x06, 0x04, 0x1F, 0x02, 0xDA, 0x8A, 0x08, 0x2E, 0x01, 0x00, 
46736
  0x00, 0x2D, 0x03, 0x00, 0x01, 0x3F, 0x02, 0x03, 0x00, 0x08, 0x03, 0x02, 0x00, 0x1B, 0x02, 0x03, 
46737
  0x00, 0x26, 0x04, 0x02, 0x00, 0x1E, 0x04, 0x02, 0x00, 0x04, 0x00, 0x00, 0x00, 0x26, 0x05, 0x02, 
46738
  0x01, 0x1E, 0x05, 0x04, 0x00, 0x2D, 0x07, 0x00, 0x01, 0x3A, 0x06, 0x07, 0x00, 0x03, 0x06, 0x00, 
46739
  0x00, 0x2D, 0x07, 0x00, 0x01, 0x3A, 0x06, 0x07, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x2D, 0x08, 0x00, 
46740
  0x06, 0x33, 0x07, 0x08, 0x06, 0x2C, 0x08, 0x01, 0x00, 0x35, 0x07, 0x08, 0x00, 0x05, 0x06, 0x00, 
46741
  0x01, 0x2D, 0x09, 0x00, 0x01, 0x3A, 0x08, 0x09, 0x06, 0x05, 0x06, 0x00, 0x02, 0x31, 0x06, 0x00, 
46742
  0x00, 0x35, 0x09, 0x01, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x33, 0x06, 0x07, 0x08, 0x31, 0x09, 0x00, 
46743
  0x00, 0x2C, 0x06, 0x01, 0x00, 0x36, 0x06, 0x00, 0x00, 0xBF, 0xFF, 0x81, 0x0B, 0x03, 0x01, 0x15, 
46744
  0x00, 0x15, 0x00, 0x12, 0x00, 0x05, 0x01, 0x09, 0x00, 0x05, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x07, 
46745
  0x00, 0x19, 0x00, 0x19, 0x00, 0x19, 0x01, 0x21, 0x00, 0x21, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 
46746
  0x00, 0x14, 0x00, 0x14, 0x01, 0x1A, 0x00, 0x10, 0x00, 0x10, 0x01, 0x15, 0x00, 0x10, 0x00, 0x10, 
46747
  0xBF, 0xFE, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x81, 0x09, 0x0C, 0x00, 0x0C, 
46748
  0x00, 0x0C, 0x00, 0x03, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1D, 0x00, 0x1D, 0x00, 0x0C, 
46749
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x07, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x0C, 
46750
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x05, 0x00, 
46751
  0x05, 0x00, 0x05, 0x00, 0x05, 0x42, 0x00, 0x00, 0x00, 0xCF, 0x06, 0x72, 0x65, 0x70, 0x65, 0x61, 
46752
  0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x09, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
46753
  0x06, 0x16, 0x00, 0x04, 0xCE, 0x06, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0xDA, 0x04, 0xDA, 0x5C, 
46754
  0xDA, 0x82, 0x55, 0xDA, 0x83, 0xFB, 0xDA, 0x83, 0xFC, 0xDA, 0x82, 0x5D, 0xDA, 0x80, 0xB3, 0x00, 
46755
  0x16, 0x00, 0xDA, 0x32, 0x00, 0x16, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x16, 0x02, 0xDA, 0x8D, 0x5D, 
46756
  0x02, 0x16, 0x04, 0xDA, 0x84, 0x26, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 
46757
  0x03, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x04, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x06, 
46758
  0x02, 0x00, 0x2B, 0x07, 0x00, 0x00, 0x33, 0x06, 0x04, 0x07, 0x45, 0x05, 0x00, 0x00, 0x2C, 0x07, 
46759
  0x03, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x32, 0x08, 
46760
  0x05, 0x00, 0x34, 0x01, 0x00, 0x00, 0x31, 0x06, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x06, 
46761
  0x05, 0x00, 0x33, 0x06, 0x03, 0x07, 0x45, 0x05, 0x00, 0x00, 0x03, 0x05, 0x00, 0x00, 0x82, 0x45, 
46762
  0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46763
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
46764
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xCF, 0x07, 0x6D, 0x61, 0x72, 
46765
  0x73, 0x68, 0x61, 0x6C, 0xDA, 0x89, 0x43, 0xCF, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
46766
  0x2D, 0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0xD3, 0x1E, 0xD0, 0x01, 
46767
  0x53, 0xD2, 0x03, 0x00, 0xCF, 0x06, 0x69, 0x66, 0x2D, 0x6E, 0x6F, 0x74, 0xD0, 0x01, 0x73, 0x01, 
46768
  0xD0, 0x02, 0x68, 0x2A, 0xD2, 0x02, 0x00, 0xCF, 0x03, 0x61, 0x6E, 0x79, 0xD0, 0x01, 0x68, 0xD0, 
46769
  0x01, 0x41, 0xD2, 0x03, 0x00, 0xDA, 0x8D, 0x64, 0xD0, 0x01, 0x61, 0x01, 0xD0, 0x02, 0x41, 0x2A, 
46770
  0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x68, 0xDA, 0x8D, 0x6B, 0xD0, 0x02, 0x57, 0x2A, 0xD2, 0x02, 0x00, 
46771
  0xDA, 0x8D, 0x68, 0xD0, 0x01, 0x57, 0xD0, 0x02, 0x64, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB6, 
46772
  0xD0, 0x01, 0x64, 0xD0, 0x02, 0x53, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB6, 0xDA, 0x8D, 0x63, 
46773
  0xDA, 0x8D, 0x74, 0xD2, 0x02, 0x00, 0xDA, 0x8C, 0xE3, 0xCE, 0x02, 0x30, 0x39, 0xDA, 0x8D, 0x65, 
46774
  0xD2, 0x02, 0x00, 0xDA, 0x82, 0x5C, 0xCE, 0x07, 0x20, 0x09, 0x0D, 0x0A, 0x00, 0x0C, 0x0B, 0xDA, 
46775
  0x8D, 0x69, 0xD2, 0x04, 0x00, 0xDA, 0x8C, 0xE3, 0xDA, 0x8D, 0x78, 0xCE, 0x02, 0x61, 0x66, 0xCE, 
46776
  0x02, 0x41, 0x46, 0xD0, 0x01, 0x77, 0xD2, 0x04, 0x00, 0xDA, 0x8C, 0xE3, 0xCE, 0x02, 0x61, 0x7A, 
46777
  0xCE, 0x02, 0x41, 0x5A, 0xDA, 0x8D, 0x78, 0xD0, 0x02, 0x61, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 
46778
  0xB6, 0xDA, 0x8D, 0x6C, 0xD0, 0x02, 0x57, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB6, 0xDA, 0x8D, 
46779
  0x71, 0xD0, 0x02, 0x73, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x68, 0xDA, 0x8D, 0x65, 0xD0, 0x02, 
46780
  0x48, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB6, 0xD0, 0x01, 0x48, 0xD0, 0x02, 0x64, 0x2A, 0xD2, 
46781
  0x02, 0x00, 0xDA, 0x8D, 0x68, 0xDA, 0x8D, 0x74, 0xDA, 0x8D, 0x6C, 0xD2, 0x03, 0x00, 0xDA, 0x8C, 
46782
  0xE3, 0xDA, 0x8D, 0x80, 0xDA, 0x8D, 0x81, 0xD0, 0x02, 0x77, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 
46783
  0x68, 0xDA, 0x8D, 0x7F, 0xD0, 0x02, 0x48, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x68, 0xDA, 0x8D, 
46784
  0x8A, 0xD0, 0x02, 0x61, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x68, 0xDA, 0x8D, 0x6C, 0xD0, 0x02, 
46785
  0x73, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB6, 0xDA, 0x8D, 0x65, 0xD0, 0x02, 0x44, 0x2B, 0xD2, 
46786
  0x02, 0x00, 0xDA, 0x88, 0xB6, 0xD0, 0x01, 0x44, 0xD0, 0x02, 0x77, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 
46787
  0x88, 0xB6, 0xDA, 0x8D, 0x7F, 0xD0, 0x02, 0x41, 0x2B, 0xD2, 0x02, 0x00, 0xDA, 0x88, 0xB6, 0xDA, 
46788
  0x8D, 0x6B, 0xD0, 0x02, 0x44, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x68, 0xDA, 0x8D, 0x98, 0xDA, 
46789
  0x8D, 0x8A, 0xD2, 0x03, 0x00, 0xDA, 0x8D, 0x64, 0xDA, 0x8D, 0x69, 0x01, 0xDA, 0x8D, 0x71, 0xD2, 
46790
  0x03, 0x00, 0xDA, 0x8D, 0x64, 0xDA, 0x8D, 0x7F, 0x01, 0xD0, 0x02, 0x68, 0x2B, 0xD2, 0x02, 0x00, 
46791
  0xDA, 0x88, 0xB6, 0xDA, 0x8D, 0x69, 0xD0, 0x02, 0x53, 0x2A, 0xD2, 0x02, 0x00, 0xDA, 0x8D, 0x68, 
46792
  0xDA, 0x8D, 0x63, 0xDA, 0x8D, 0x98, 0xD2, 0x03, 0x00, 0xDA, 0x8D, 0x64, 0xDA, 0x8D, 0x74, 0x01, 
46793
  0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0xDA, 0x86, 0xCD, 0xCF, 0x10, 0x66, 
46794
  0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0xD8, 
46795
  0x10, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 
46796
  0x65, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 0xD8, 0x08, 0x6D, 0x61, 0x74, 
46797
  0x68, 0x2F, 0x63, 0x6F, 0x73, 0xCF, 0x0C, 0x2A, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x66, 0x6F, 
46798
  0x72, 0x6D, 0x2A, 0xDA, 0x82, 0xC8, 0xCF, 0x08, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 0x69, 0x72, 
46799
  0xDA, 0x81, 0x3F, 0xDA, 0x8D, 0x42, 0xDA, 0x8D, 0x40, 0xCF, 0x0A, 0x67, 0x63, 0x69, 0x6E, 0x74, 
46800
  0x65, 0x72, 0x76, 0x61, 0x6C, 0xD8, 0x0A, 0x67, 0x63, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 
46801
  0x6C, 0xCF, 0x0C, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0xD8, 
46802
  0x0C, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x84, 0x00, 
46803
  0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x07, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 
46804
  0x0A, 0x00, 0x03, 0xCE, 0x06, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0xDA, 0x04, 0xDA, 0x80, 0xB3, 
46805
  0xDA, 0x82, 0x81, 0x00, 0x0A, 0x00, 0xDA, 0x8B, 0x6A, 0x00, 0x0A, 0x01, 0xDA, 0x80, 0xC7, 0x00, 
46806
  0x0A, 0x02, 0xDA, 0x84, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 
46807
  0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x28, 0x06, 0x00, 0x00, 0x33, 0x05, 0x00, 
46808
  0x06, 0x31, 0x03, 0x00, 0x00, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0xF3, 0x03, 
46809
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46810
  0x00, 0x03, 0xCF, 0x06, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0xDA, 0x84, 0x4F, 0xCF, 0x03, 0x75, 
46811
  0x73, 0x65, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x05, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 
46812
  0xFF, 0x02, 0x09, 0x00, 0x01, 0x02, 0xCE, 0x03, 0x75, 0x73, 0x65, 0xDA, 0x04, 0xDA, 0x81, 0xF8, 
46813
  0xDA, 0x80, 0xB3, 0x00, 0x09, 0x00, 0xCF, 0x07, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x00, 
46814
  0x09, 0x01, 0xDA, 0x8D, 0xB5, 0x30, 0x02, 0x00, 0x00, 0x32, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x00, 
46815
  0x00, 0x35, 0x03, 0x04, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 0x03, 0x00, 
46816
  0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 
46817
  0x01, 0x01, 0x04, 0x0A, 0x00, 0x01, 0xDA, 0x8B, 0xEA, 0xDA, 0x04, 0xDA, 0x81, 0x28, 0xDA, 0x85, 
46818
  0xDB, 0xDA, 0x85, 0xE3, 0xDA, 0x81, 0x6E, 0x00, 0x0A, 0x00, 0xCF, 0x09, 0x5F, 0x30, 0x30, 0x30, 
46819
  0x30, 0x35, 0x4D, 0x24, 0x30, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x00, 0x35, 0x01, 0x02, 
46820
  0x00, 0x2C, 0x03, 0x01, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x33, 0x03, 0x01, 0x04, 0x2C, 0x03, 0x03, 
46821
  0x00, 0x31, 0x03, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0x8C, 0x84, 0x1C, 
46822
  0x00, 0x1C, 0x00, 0x1C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 
46823
  0x00, 0x10, 0x8C, 0x84, 0x0F, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x0A, 0x00, 0x03, 0x00, 0x03, 0x00, 
46824
  0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x10, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 
46825
  0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0xDA, 0x2F, 0xCF, 0x07, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
46826
  0x72, 0x64, 0xDA, 0x86, 0x67, 0xCF, 0x07, 0x69, 0x66, 0x2D, 0x77, 0x69, 0x74, 0x68, 0xD7, 0x00, 
46827
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x03, 0x02, 0x03, 0x03, 0x1A, 0x00, 0x07, 0xCE, 0x07, 0x69, 
46828
  0x66, 0x2D, 0x77, 0x69, 0x74, 0x68, 0xDA, 0x04, 0xDA, 0x81, 0x47, 0xDA, 0x88, 0x18, 0xDA, 0x80, 
46829
  0x83, 0x00, 0x1A, 0x01, 0xDA, 0x8B, 0x6B, 0x00, 0x1A, 0x02, 0xCF, 0x06, 0x66, 0x61, 0x6C, 0x73, 
46830
  0x65, 0x79, 0x01, 0x1A, 0x04, 0xDA, 0x82, 0x5E, 0x03, 0x1A, 0x05, 0xDA, 0x88, 0x1B, 0x05, 0x1A, 
46831
  0x06, 0xDA, 0x88, 0x1C, 0x06, 0x1A, 0x00, 0xDA, 0x8D, 0xBC, 0x08, 0x0D, 0x06, 0xCF, 0x07, 0x5F, 
46832
  0x30, 0x30, 0x30, 0x30, 0x30, 0x61, 0x3D, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x3D, 0x03, 
46833
  0x00, 0x01, 0x1B, 0x05, 0x03, 0x00, 0x3D, 0x03, 0x00, 0x02, 0x1B, 0x06, 0x03, 0x00, 0x2E, 0x00, 
46834
  0x00, 0x00, 0x32, 0x04, 0x05, 0x00, 0x46, 0x03, 0x00, 0x00, 0x1E, 0x06, 0x03, 0x00, 0x1B, 0x07, 
46835
  0x06, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2C, 0x07, 0x00, 0x00, 0x32, 0x07, 0x04, 0x00, 0x45, 0x07, 
46836
  0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x34, 0x08, 
46837
  0x00, 0x00, 0x2C, 0x0A, 0x01, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x33, 0x08, 
46838
  0x03, 0x09, 0x31, 0x02, 0x00, 0x00, 0x45, 0x07, 0x00, 0x00, 0x03, 0x07, 0x00, 0x00, 0x81, 0xBD, 
46839
  0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x05, 0x03, 0x00, 
46840
  0x03, 0x01, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x14, 0x00, 0x14, 0x00, 0x2F, 0x00, 
46841
  0x2F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x03, 0x00, 0x03, 0x00, 0x03, 
46842
  0x00, 0x03, 0x00, 0x03, 0xCF, 0x06, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0xDA, 0x81, 0x8A, 0xCF, 
46843
  0x0A, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x64, 0x65, 0x78, 0x70, 0xD8, 0x0A, 0x6D, 0x61, 0x74, 
46844
  0x68, 0x2F, 0x6C, 0x64, 0x65, 0x78, 0x70, 0xDA, 0x82, 0xBF, 0xDA, 0x82, 0xBC, 0xCF, 0x0E, 0x70, 
46845
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0xDA, 0x0C, 0xCF, 
46846
  0x07, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0xDA, 0x80, 0xAC, 0xCF, 0x08, 0x6D, 0x61, 0x74, 
46847
  0x68, 0x2F, 0x73, 0x69, 0x6E, 0xD8, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0xCF, 
46848
  0x02, 0x2B, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 
46849
  0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2B, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0x78, 0xDA, 
46850
  0x82, 0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x02, 0x00, 0x08, 0x02, 
46851
  0xDA, 0x8D, 0xC8, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 
46852
  0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 
46853
  0x04, 0x00, 0x00, 0x80, 0x8D, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 
46854
  0x00, 0x34, 0x00, 0x34, 0xCF, 0x06, 0x63, 0x61, 0x74, 0x73, 0x65, 0x71, 0xD7, 0x00, 0xCD, 0x00, 
46855
  0xDD, 0x00, 0x00, 0x0A, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x06, 0x19, 0x00, 0x04, 0xCE, 
46856
  0x06, 0x63, 0x61, 0x74, 0x73, 0x65, 0x71, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x88, 0x57, 0xDA, 0x80, 
46857
  0xAB, 0xDA, 0x80, 0xB3, 0xDA, 0x82, 0xB1, 0xDA, 0x83, 0xEF, 0x00, 0x19, 0x00, 0xDA, 0x84, 0x22, 
46858
  0x00, 0x19, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x19, 0x02, 0xDA, 0x8D, 0xCB, 0x02, 0x19, 0x04, 0xDA, 
46859
  0x86, 0x0B, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x31, 0x01, 
46860
  0x00, 0x00, 0x2C, 0x06, 0x01, 0x00, 0x35, 0x05, 0x06, 0x00, 0x40, 0x06, 0x00, 0x00, 0x2C, 0x08, 
46861
  0x02, 0x00, 0x33, 0x08, 0x04, 0x06, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x31, 0x08, 
46862
  0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x33, 0x09, 
46863
  0x04, 0x06, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 0x33, 0x09, 0x00, 0x08, 0x45, 0x06, 
46864
  0x00, 0x00, 0x2C, 0x09, 0x03, 0x00, 0x33, 0x09, 0x07, 0x06, 0x31, 0x04, 0x00, 0x00, 0x45, 0x08, 
46865
  0x00, 0x00, 0x03, 0x08, 0x00, 0x00, 0x82, 0xAC, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x01, 0x03, 0x00, 
46866
  0x03, 0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46867
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46868
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x82, 0x6A, 0xDA, 0x82, 0x67, 0xCF, 
46869
  0x12, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 
46870
  0x73, 0x6F, 0x72, 0xD8, 0x12, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 0x70, 
46871
  0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0xCF, 0x0C, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
46872
  0x63, 0x6C, 0x65, 0x61, 0x72, 0xDA, 0x81, 0x61, 0xCF, 0x13, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
46873
  0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x36, 0x34, 0xD8, 0x13, 0x62, 
46874
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 0x74, 
46875
  0x36, 0x34, 0xCF, 0x0A, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0xD8, 0x0A, 
46876
  0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0xCF, 0x0F, 0x64, 0x65, 0x62, 0x75, 
46877
  0x67, 0x2F, 0x61, 0x72, 0x67, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xD8, 0x0F, 0x64, 0x65, 0x62, 
46878
  0x75, 0x67, 0x2F, 0x61, 0x72, 0x67, 0x2D, 0x73, 0x74, 0x61, 0x63, 0x6B, 0xCF, 0x08, 0x6F, 0x73, 
46879
  0x2F, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0xD8, 0x08, 0x6F, 0x73, 0x2F, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 
46880
  0xCF, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 
46881
  0x6E, 0x74, 0x33, 0x32, 0xD8, 0x12, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 
46882
  0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x33, 0x32, 0xCF, 0x02, 0x3C, 0x3D, 0xDA, 0x84, 0x14, 0xCF, 
46883
  0x07, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 
46884
  0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0x00, 0x01, 0xCE, 0x07, 0x63, 0x6F, 0x6D, 
46885
  0x6D, 0x65, 0x6E, 0x74, 0xDA, 0x04, 0x00, 0x01, 0x00, 0xDA, 0x8D, 0xDC, 0x04, 0x00, 0x00, 0x00, 
46886
  0x80, 0xE2, 0x01, 0xCF, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0xD7, 0x00, 0xCD, 
46887
  0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x0A, 0x00, 0x03, 
46888
  0xCE, 0x08, 0x63, 0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0xDA, 0x04, 0xDA, 0x83, 0x46, 0xDA, 
46889
  0x82, 0x9A, 0x00, 0x0A, 0x00, 0xDA, 0x8C, 0xD3, 0x00, 0x0A, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x0A, 
46890
  0x02, 0xDA, 0x8D, 0xDF, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 
46891
  0x1E, 0x03, 0x06, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x31, 0x05, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 
46892
  0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x8B, 0x06, 0x07, 0x00, 
46893
  0x07, 0x00, 0x07, 0x00, 0x03, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 
46894
  0xFF, 0x03, 0xDA, 0x85, 0xC1, 0xDA, 0x85, 0xB5, 0xCF, 0x05, 0x64, 0x65, 0x65, 0x70, 0x3D, 0xD7, 
46895
  0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x02, 0x06, 0x00, 0x03, 0xCE, 0x05, 
46896
  0x64, 0x65, 0x65, 0x70, 0x3D, 0xDA, 0x04, 0xDA, 0x82, 0xCF, 0xDA, 0x82, 0x51, 0x00, 0x06, 0x00, 
46897
  0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x80, 0x87, 0x00, 0x06, 0x02, 0xDA, 0x8D, 0xE2, 0x32, 0x00, 
46898
  0x01, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x31, 0x03, 0x00, 0x00, 0x2C, 0x04, 
46899
  0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x89, 0x23, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x03, 0x00, 
46900
  0x03, 0x00, 0x03, 0xCF, 0x08, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x3F, 0xD7, 0x00, 0xCD, 
46901
  0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x01, 0x01, 0x02, 0x06, 0x00, 0x02, 0xCE, 0x08, 0x62, 0x6F, 
46902
  0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x3F, 0xDA, 0x04, 0xDA, 0x1C, 0xD0, 0x07, 0x62, 0x6F, 0x6F, 0x6C, 
46903
  0x65, 0x61, 0x6E, 0x00, 0x06, 0x00, 0xDA, 0x1E, 0x00, 0x06, 0x01, 0xDA, 0x8D, 0xE5, 0x31, 0x00, 
46904
  0x00, 0x00, 0x2C, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x25, 0x03, 
46905
  0x02, 0x04, 0x03, 0x03, 0x00, 0x00, 0x71, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x2F, 0x00, 0x2F, 
46906
  0x00, 0x2F, 0xCF, 0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xD8, 
46907
  0x0B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0xCF, 0x0A, 0x6D, 0x61, 
46908
  0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0xDA, 0x84, 0x87, 0xCF, 0x0B, 0x6F, 0x73, 0x2F, 
46909
  0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 0x6E, 0x74, 0xD8, 0x0B, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 
46910
  0x6D, 0x2D, 0x69, 0x6E, 0x74, 0xCF, 0x0B, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 0x64, 
46911
  0x6F, 0x6D, 0xD8, 0x0B, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0xCF, 
46912
  0x0C, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0xD8, 0x0C, 0x6F, 
46913
  0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0xCF, 0x09, 0x66, 0x66, 0x69, 
46914
  0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0xD8, 0x09, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 
46915
  0x65, 0xCF, 0x0F, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 
46916
  0x6C, 0x6C, 0xD8, 0x0F, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 
46917
  0x61, 0x6C, 0x6C, 0xCF, 0x06, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0xD8, 0x06, 0x78, 0x70, 0x72, 
46918
  0x69, 0x6E, 0x74, 0xCF, 0x0D, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2F, 0x76, 0x65, 0x72, 0x73, 0x69, 
46919
  0x6F, 0x6E, 0xDA, 0x89, 0x15, 0xCF, 0x07, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0xDA, 0x86, 
46920
  0x59, 0xCF, 0x0E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 
46921
  0x6B, 0xD8, 0x0E, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 
46922
  0x6B, 0xCF, 0x02, 0x2D, 0x3E, 0xD7, 0x00, 0xCD, 0x00, 0xFD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 
46923
  0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x05, 0x00, 0x01, 0x04, 0xCE, 0x02, 0x2D, 0x3E, 0xDA, 0x04, 0xDA, 
46924
  0x83, 0xC2, 0x00, 0x05, 0x00, 0xDA, 0x1E, 0x00, 0x05, 0x01, 0xDA, 0x80, 0x85, 0x00, 0x05, 0x02, 
46925
  0xDA, 0x8D, 0xFC, 0x01, 0x05, 0x04, 0xDA, 0x88, 0x67, 0x30, 0x03, 0x00, 0x00, 0x1B, 0x04, 0x03, 
46926
  0x00, 0x33, 0x04, 0x00, 0x01, 0x2C, 0x05, 0x00, 0x00, 0x36, 0x05, 0x00, 0x00, 0xCD, 0x00, 0xDC, 
46927
  0x00, 0x00, 0x09, 0x02, 0x02, 0x02, 0x06, 0x23, 0x00, 0x06, 0xDA, 0x88, 0x68, 0xDA, 0x04, 0xDA, 
46928
  0x1C, 0xDA, 0x70, 0xDA, 0x88, 0x69, 0xDA, 0x82, 0xB5, 0xDA, 0x82, 0xB1, 0xDA, 0x71, 0x00, 0x23, 
46929
  0x00, 0xDA, 0x82, 0xB2, 0x00, 0x23, 0x01, 0xDA, 0x32, 0x00, 0x23, 0x02, 0xDA, 0x88, 0x67, 0x17, 
46930
  0x23, 0x05, 0xDA, 0x82, 0xCA, 0x19, 0x23, 0x06, 0xDA, 0x82, 0x33, 0x1F, 0x23, 0x04, 0xDA, 0x38, 
46931
  0x31, 0x01, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 
46932
  0x25, 0x05, 0x06, 0x04, 0x1E, 0x05, 0x0C, 0x00, 0x2B, 0x06, 0x00, 0x00, 0x3A, 0x04, 0x01, 0x06, 
46933
  0x2B, 0x06, 0x01, 0x00, 0x32, 0x01, 0x06, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 
46934
  0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x03, 0x07, 0x00, 
46935
  0x1C, 0x06, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x32, 0x01, 0x04, 0x00, 0x2C, 0x07, 0x03, 0x00, 
46936
  0x35, 0x06, 0x07, 0x00, 0x1B, 0x03, 0x06, 0x00, 0x3D, 0x04, 0x03, 0x00, 0x1B, 0x05, 0x04, 0x00, 
46937
  0x3D, 0x04, 0x03, 0x01, 0x1B, 0x06, 0x04, 0x00, 0x32, 0x05, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 
46938
  0x32, 0x04, 0x06, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x04, 0x07, 0x00, 
46939
  0x32, 0x01, 0x04, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x36, 0x08, 0x00, 0x00, 0x85, 0x72, 0x1E, 0x00, 
46940
  0x1E, 0x00, 0x1E, 0x00, 0x14, 0x00, 0x14, 0x00, 0x10, 0x01, 0x19, 0x00, 0x19, 0x00, 0x22, 0x00, 
46941
  0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFF, 0x10, 0x00, 0x10, 
46942
  0x02, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0xBF, 0xFE, 0x10, 0x00, 0x05, 0x00, 0x05, 0x00, 
46943
  0x05, 0x00, 0x05, 0x03, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 
46944
  0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x71, 0x03, 0x00, 0x03, 0x06, 0x03, 0x00, 0x03, 0x00, 0x03, 
46945
  0xCF, 0x12, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
46946
  0x2D, 0x61, 0x6C, 0x6C, 0xDA, 0x86, 0xA6, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 0x6E, 
46947
  0x6B, 0xD8, 0x08, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0xCF, 0x0B, 0x66, 0x72, 0x65, 
46948
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 
46949
  0x01, 0x01, 0x01, 0x00, 0x14, 0x00, 0x07, 0xCE, 0x0B, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6E, 
46950
  0x63, 0x69, 0x65, 0x73, 0xDA, 0x04, 0x00, 0x14, 0x00, 0xDA, 0x33, 0x00, 0x14, 0x01, 0xDA, 0x8E, 
46951
  0x02, 0x01, 0x14, 0x03, 0xCF, 0x05, 0x66, 0x72, 0x65, 0x71, 0x73, 0x01, 0x13, 0x00, 0xCF, 0x07, 
46952
  0x5F, 0x30, 0x30, 0x30, 0x30, 0x33, 0x6E, 0x04, 0x13, 0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 
46953
  0x30, 0x33, 0x6D, 0x07, 0x13, 0x06, 0xDA, 0x1E, 0x09, 0x13, 0x07, 0xDA, 0x32, 0x44, 0x02, 0x00, 
46954
  0x00, 0x1B, 0x03, 0x02, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x00, 0x05, 0x1B, 0x05, 0x04, 
46955
  0x00, 0x1F, 0x05, 0x0E, 0x00, 0x3A, 0x04, 0x00, 0x05, 0x1B, 0x06, 0x04, 0x00, 0x3A, 0x04, 0x03, 
46956
  0x06, 0x1B, 0x07, 0x04, 0x00, 0x1E, 0x07, 0x05, 0x00, 0x2B, 0x09, 0x01, 0x00, 0x06, 0x08, 0x09, 
46957
  0x07, 0x1B, 0x04, 0x08, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x2B, 0x04, 0x01, 0x00, 0x3C, 0x03, 0x06, 
46958
  0x04, 0x49, 0x05, 0x00, 0x05, 0x1C, 0xF3, 0xFF, 0xFF, 0x03, 0x03, 0x00, 0x00, 0x86, 0xCB, 0x03, 
46959
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x01, 0x0C, 
46960
  0x00, 0x05, 0x01, 0x14, 0x00, 0x1A, 0x00, 0x1A, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x05, 
46961
  0xBF, 0xFE, 0x03, 0x00, 0x03, 0xBF, 0xFC, 0x01, 0xCF, 0x0D, 0x66, 0x66, 0x69, 0x2F, 0x73, 0x69, 
46962
  0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0xDA, 0x8B, 0x06, 0xCF, 0x05, 0x2A, 0x6F, 0x75, 0x74, 
46963
  0x2A, 0xD0, 0x03, 0x6F, 0x75, 0x74, 0xCF, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 
46964
  0x69, 0x6C, 0x6C, 0xD8, 0x0B, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 
46965
  0xCF, 0x09, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x73, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 
46966
  0x00, 0x00, 0x0C, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x03, 0x15, 0x00, 0x06, 0xCE, 0x09, 
46967
  0x77, 0x69, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x73, 0xDA, 0x04, 0xD2, 0x01, 0x00, 0xDA, 0x5C, 
46968
  0xDA, 0x30, 0xDA, 0x83, 0xF7, 0x00, 0x15, 0x00, 0xDA, 0x8B, 0x60, 0x00, 0x15, 0x01, 0xDA, 0x80, 
46969
  0xC7, 0x00, 0x15, 0x02, 0xDA, 0x8E, 0x0D, 0x00, 0x15, 0x03, 0xDA, 0x43, 0x02, 0x15, 0x05, 0xDA, 
46970
  0x37, 0x04, 0x15, 0x07, 0xDA, 0x83, 0xC5, 0x2B, 0x03, 0x00, 0x00, 0x3F, 0x04, 0x00, 0x00, 0x1B, 
46971
  0x05, 0x04, 0x00, 0x40, 0x06, 0x00, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x23, 0x08, 0x03, 0x05, 0x1E, 
46972
  0x08, 0x08, 0x00, 0x3A, 0x09, 0x00, 0x03, 0x2C, 0x0A, 0x00, 0x00, 0x33, 0x07, 0x09, 0x0A, 0x2C, 
46973
  0x0B, 0x01, 0x00, 0x35, 0x0A, 0x0B, 0x00, 0x05, 0x03, 0x03, 0x01, 0x1C, 0xF8, 0xFF, 0xFF, 0x34, 
46974
  0x07, 0x00, 0x00, 0x45, 0x08, 0x00, 0x00, 0x2C, 0x0A, 0x02, 0x00, 0x32, 0x0A, 0x08, 0x00, 0x34, 
46975
  0x01, 0x00, 0x00, 0x45, 0x09, 0x00, 0x00, 0x03, 0x09, 0x00, 0x00, 0x81, 0x6A, 0x03, 0x01, 0x0C, 
46976
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x01, 0x0A, 0x00, 0x03, 0x01, 0x17, 0x00, 0x05, 0x00, 0x05, 
46977
  0x00, 0x05, 0x00, 0x05, 0x01, 0x05, 0xBF, 0xFE, 0x03, 0x03, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
46978
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x05, 0x64, 0x65, 0x6C, 0x61, 0x79, 0xD7, 0x00, 
46979
  0xCD, 0x00, 0xDD, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x07, 0x2D, 0x00, 
46980
  0x04, 0xDA, 0x86, 0xA0, 0xDA, 0x04, 0xDA, 0x5C, 0xDA, 0x82, 0x55, 0xDA, 0x82, 0x5C, 0xDA, 0x80, 
46981
  0xB3, 0xDA, 0x82, 0x81, 0xDA, 0x80, 0xAE, 0xD0, 0x05, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x00, 0x2D, 
46982
  0x00, 0xDA, 0x80, 0x85, 0x00, 0x2D, 0x01, 0xDA, 0x8E, 0x11, 0x02, 0x2D, 0x03, 0xCF, 0x05, 0x73, 
46983
  0x74, 0x61, 0x74, 0x65, 0x05, 0x2D, 0x05, 0xCF, 0x06, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x2C, 
46984
  0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 0x00, 0x1B, 0x03, 0x02, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 
46985
  0x04, 0x05, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x46, 0x06, 0x00, 0x00, 0x2C, 0x08, 0x01, 0x00, 0x28, 
46986
  0x09, 0x00, 0x00, 0x33, 0x08, 0x03, 0x09, 0x45, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 0x28, 
46987
  0x0A, 0x00, 0x00, 0x33, 0x09, 0x05, 0x0A, 0x45, 0x08, 0x00, 0x00, 0x46, 0x09, 0x00, 0x00, 0x2C, 
46988
  0x0B, 0x02, 0x00, 0x29, 0x0C, 0x00, 0x00, 0x33, 0x0B, 0x05, 0x0C, 0x45, 0x0A, 0x00, 0x00, 0x2C, 
46989
  0x0C, 0x03, 0x00, 0x31, 0x0C, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x45, 0x0B, 0x00, 0x00, 0x2C, 
46990
  0x0D, 0x02, 0x00, 0x33, 0x0D, 0x03, 0x0B, 0x45, 0x0C, 0x00, 0x00, 0x2C, 0x0D, 0x03, 0x00, 0x33, 
46991
  0x0D, 0x0A, 0x0C, 0x45, 0x0B, 0x00, 0x00, 0x2C, 0x0C, 0x04, 0x00, 0x33, 0x0C, 0x05, 0x03, 0x31, 
46992
  0x0B, 0x00, 0x00, 0x45, 0x0A, 0x00, 0x00, 0x2C, 0x0C, 0x05, 0x00, 0x33, 0x0C, 0x09, 0x0A, 0x45, 
46993
  0x0B, 0x00, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x2C, 0x0C, 0x06, 0x00, 0x33, 0x0A, 0x0C, 0x06, 0x33, 
46994
  0x07, 0x08, 0x0B, 0x45, 0x09, 0x00, 0x00, 0x31, 0x09, 0x00, 0x00, 0x45, 0x06, 0x00, 0x00, 0x03, 
46995
  0x06, 0x00, 0x00, 0x8F, 0x6D, 0x0E, 0x00, 0x0E, 0x00, 0x03, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x03, 
46996
  0x01, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46997
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46998
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
46999
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
47000
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x02, 
47001
  0x2D, 0x3D, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 
47002
  0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x02, 0x2D, 0x3D, 0xDA, 0x04, 0xDA, 0x84, 0x16, 0xDA, 0x82, 
47003
  0x5C, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 0x08, 0x01, 0xDA, 0x83, 0x02, 0x00, 0x08, 0x02, 0xDA, 
47004
  0x8E, 0x16, 0x2C, 0x04, 0x00, 0x00, 0x32, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 
47005
  0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 
47006
  0x00, 0x00, 0x80, 0x8E, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 
47007
  0x34, 0x00, 0x34, 0xCF, 0x0F, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
47008
  0x2D, 0x61, 0x6C, 0x6C, 0xD8, 0x0F, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 
47009
  0x65, 0x2D, 0x61, 0x6C, 0x6C, 0xCF, 0x08, 0x65, 0x76, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xD8, 
47010
  0x08, 0x65, 0x76, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0xCF, 0x17, 0x66, 0x66, 0x69, 0x2F, 0x63, 
47011
  0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 
47012
  0x6E, 0x73, 0xD8, 0x17, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x2D, 
47013
  0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0xDA, 0x8D, 0x64, 0xD7, 0x00, 
47014
  0xCD, 0x00, 0xDC, 0x00, 0x00, 0x06, 0x03, 0x02, 0x03, 0x01, 0x05, 0x00, 0x04, 0xCE, 0x06, 0x69, 
47015
  0x66, 0x2D, 0x6E, 0x6F, 0x74, 0xDA, 0x04, 0xDA, 0x82, 0x81, 0x00, 0x05, 0x00, 0xDA, 0x8B, 0x6A, 
47016
  0x00, 0x05, 0x01, 0xCF, 0x04, 0x74, 0x68, 0x65, 0x6E, 0x00, 0x05, 0x02, 0xDA, 0x8B, 0x4B, 0x00, 
47017
  0x05, 0x03, 0xDA, 0x8D, 0x64, 0x2C, 0x05, 0x00, 0x00, 0x33, 0x05, 0x00, 0x02, 0x31, 0x01, 0x00, 
47018
  0x00, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0xE9, 0x03, 0x00, 0x03, 0x00, 0x03, 
47019
  0x00, 0x03, 0x00, 0x03, 0xDA, 0x81, 0xFB, 0xDA, 0x81, 0xF8, 0xCF, 0x0A, 0x66, 0x69, 0x6C, 0x65, 
47020
  0x2F, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x04, 0x01, 0x01, 
47021
  0x01, 0x02, 0x05, 0x00, 0x01, 0x02, 0xCE, 0x0A, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 0x6E, 
47022
  0x65, 0x73, 0xDA, 0x04, 0xDA, 0x85, 0x99, 0xDA, 0x80, 0xDC, 0x00, 0x05, 0x00, 0xCF, 0x04, 0x66, 
47023
  0x69, 0x6C, 0x65, 0x00, 0x05, 0x01, 0xDA, 0x8E, 0x22, 0x30, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x00, 
47024
  0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0xCD, 0x00, 0xDC, 
47025
  0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x0A, 0x01, 0x03, 0xDA, 0x85, 0x9B, 0xDA, 0x04, 0xDA, 
47026
  0x85, 0x86, 0xDA, 0x81, 0x59, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8E, 0x25, 0xBF, 0xFF, 0x00, 0x01, 
47027
  0xDA, 0x8E, 0x22, 0x05, 0x09, 0x01, 0xDA, 0x85, 0x37, 0x2D, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x00, 
47028
  0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 0x01, 0x01, 0x00, 0x35, 0x00, 0x01, 0x00, 0x1B, 0x01, 0x00, 
47029
  0x00, 0x1E, 0x00, 0x03, 0x00, 0x38, 0x02, 0x01, 0x03, 0x1C, 0xF8, 0xFF, 0xFF, 0x04, 0x00, 0x00, 
47030
  0x00, 0xBF, 0xFF, 0x87, 0x74, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0C, 
47031
  0x00, 0x05, 0x01, 0x07, 0xBF, 0xFF, 0x05, 0x00, 0x05, 0x87, 0x73, 0x03, 0x00, 0x03, 0x00, 0x03, 
47032
  0x00, 0x03, 0x00, 0x03, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x0C, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
47033
  0x2F, 0x73, 0x74, 0x61, 0x74, 0x65, 0xDA, 0x89, 0xC1, 0xCF, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x61, 
47034
  0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0xD8, 0x0B, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 
47035
  0x65, 0x73, 0x73, 0xCF, 0x07, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x62, 0x79, 0xD7, 0x00, 0xCD, 0x02, 
47036
  0xFE, 0x00, 0x00, 0x05, 0x02, 0x02, 0x02, 0x01, 0x04, 0x00, 0x01, 0x03, 0xCE, 0x07, 0x73, 0x6F, 
47037
  0x72, 0x74, 0x2D, 0x62, 0x79, 0xDA, 0x04, 0xDA, 0x80, 0xF2, 0x00, 0x04, 0x00, 0xDA, 0x31, 0x00, 
47038
  0x04, 0x01, 0xDA, 0x33, 0x00, 0x04, 0x02, 0xDA, 0x8E, 0x29, 0x30, 0x03, 0x00, 0x00, 0x32, 0x01, 
47039
  0x03, 0x00, 0x2C, 0x04, 0x00, 0x00, 0x36, 0x04, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 
47040
  0x02, 0x02, 0x02, 0x00, 0x08, 0x01, 0x05, 0xCE, 0x0C, 0x73, 0x6F, 0x72, 0x74, 0x2D, 0x62, 0x79, 
47041
  0x2D, 0x63, 0x6F, 0x6D, 0x70, 0xDA, 0x04, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x31, 0xBF, 0xFF, 0x00, 
47042
  0x01, 0xDA, 0x33, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8E, 0x29, 0x00, 0x08, 0x00, 0xDA, 0x1E, 0x00, 
47043
  0x08, 0x01, 0xDA, 0x80, 0x87, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x35, 0x02, 0x03, 
47044
  0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x04, 0x00, 0x00, 0x35, 0x03, 0x04, 0x00, 0x23, 0x04, 0x02, 
47045
  0x03, 0x03, 0x04, 0x00, 0x00, 0xBF, 0xFF, 0x83, 0xCE, 0x28, 0x00, 0x28, 0x00, 0x28, 0x00, 0x2E, 
47046
  0x00, 0x2E, 0x00, 0x2E, 0x00, 0x25, 0x00, 0x25, 0x83, 0xCE, 0x0D, 0x00, 0x03, 0x00, 0x03, 0x00, 
47047
  0x03, 0x01, 0x00, 0x00, 0x00, 0xCF, 0x07, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0xD8, 0x07, 
47048
  0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0xDA, 0x83, 0xFE, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 
47049
  0x00, 0x06, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x08, 0x00, 0x03, 0xCE, 0x04, 0x77, 
47050
  0x68, 0x65, 0x6E, 0xDA, 0x04, 0xDA, 0x80, 0xB3, 0xDA, 0x82, 0x81, 0x00, 0x08, 0x00, 0xDA, 0x8B, 
47051
  0x6A, 0x00, 0x08, 0x01, 0xDA, 0x80, 0xC7, 0x00, 0x08, 0x02, 0xDA, 0x83, 0xFE, 0x2C, 0x04, 0x00, 
47052
  0x00, 0x31, 0x04, 0x00, 0x00, 0x34, 0x01, 0x00, 0x00, 0x45, 0x03, 0x00, 0x00, 0x2C, 0x05, 0x01, 
47053
  0x00, 0x33, 0x05, 0x00, 0x03, 0x45, 0x04, 0x00, 0x00, 0x03, 0x04, 0x00, 0x00, 0x80, 0xEE, 0x03, 
47054
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xCF, 0x10, 
47055
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2D, 0x61, 0x74, 
47056
  0xD8, 0x10, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2D, 
47057
  0x61, 0x74, 0xCF, 0x05, 0x65, 0x61, 0x63, 0x68, 0x70, 0xD7, 0x00, 0xCD, 0x00, 0xDD, 0x00, 0x00, 
47058
  0x05, 0x02, 0x02, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x00, 0x04, 0xCE, 0x05, 0x65, 0x61, 
47059
  0x63, 0x68, 0x70, 0xDA, 0x04, 0xDA, 0x82, 0x5B, 0xDA, 0x82, 0x4A, 0x00, 0x05, 0x00, 0xDA, 0x1E, 
47060
  0x00, 0x05, 0x01, 0xDA, 0x82, 0x62, 0x00, 0x05, 0x02, 0xDA, 0x80, 0xC7, 0x00, 0x05, 0x03, 0xDA, 
47061
  0x8E, 0x33, 0x2C, 0x04, 0x00, 0x00, 0x33, 0x00, 0x01, 0x04, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x04, 
47062
  0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 0x82, 0x40, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
47063
  0x03, 0xCF, 0x0C, 0x6F, 0x73, 0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xD8, 
47064
  0x0C, 0x6F, 0x73, 0x2F, 0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0xCF, 0x09, 0x2A, 
47065
  0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0xDA, 0x81, 0x25, 0xCF, 0x0E, 0x74, 0x61, 0x62, 
47066
  0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0xDA, 0x81, 0x9C, 0xCF, 0x12, 
47067
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 0x66, 0x66, 0x69, 
47068
  0x78, 0x3F, 0xDA, 0x81, 0xF4, 0xCF, 0x05, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0xD7, 0x00, 0xCD, 0x02, 
47069
  0xFF, 0x00, 0x00, 0x03, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x02, 0x00, 0x01, 0x02, 
47070
  0xCE, 0x05, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0xDA, 0x04, 0x00, 0x02, 0x00, 0xDA, 0x8B, 0xBE, 0x00, 
47071
  0x02, 0x01, 0xDA, 0x8E, 0x3B, 0x30, 0x02, 0x00, 0x00, 0x03, 0x02, 0x00, 0x00, 0xCD, 0x00, 0xDD, 
47072
  0x00, 0x00, 0x09, 0x00, 0x00, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x02, 0x14, 0x01, 0x07, 0xDA, 0x8E, 
47073
  0x3D, 0xDA, 0x04, 0xDA, 0x30, 0xDA, 0x2C, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x8B, 0xBE, 0xBF, 0xFF, 
47074
  0x00, 0x01, 0xDA, 0x8E, 0x3B, 0x00, 0x14, 0x00, 0xDA, 0x81, 0x4D, 0x01, 0x14, 0x02, 0xDA, 0x39, 
47075
  0x02, 0x10, 0x03, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x68, 0x05, 0x10, 0x05, 0xCF, 
47076
  0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x32, 0x67, 0x08, 0x10, 0x06, 0xDA, 0x31, 0x40, 0x01, 0x00, 
47077
  0x00, 0x1B, 0x02, 0x01, 0x00, 0x2D, 0x03, 0x00, 0x00, 0x28, 0x05, 0x00, 0x00, 0x49, 0x04, 0x03, 
47078
  0x05, 0x1B, 0x05, 0x04, 0x00, 0x1F, 0x05, 0x0A, 0x00, 0x3A, 0x04, 0x03, 0x05, 0x1B, 0x06, 0x04, 
47079
  0x00, 0x34, 0x00, 0x00, 0x00, 0x35, 0x04, 0x06, 0x00, 0x32, 0x02, 0x04, 0x00, 0x2C, 0x08, 0x00, 
47080
  0x00, 0x35, 0x07, 0x08, 0x00, 0x49, 0x05, 0x03, 0x05, 0x1C, 0xF7, 0xFF, 0xFF, 0x2B, 0x03, 0x00, 
47081
  0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 0x00, 0xBF, 0xFF, 0x85, 
47082
  0x20, 0x05, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
47083
  0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xBF, 0xFF, 0x05, 0x00, 
47084
  0x05, 0x02, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x85, 0x1F, 0x03, 0x00, 0x03, 0x01, 0x00, 
47085
  0x00, 0x00, 0xCF, 0x07, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0xDA, 0x84, 0x60, 0xCF, 0x03, 
47086
  0x64, 0x6F, 0x63, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x05, 0x01, 0x00, 0x01, 0x02, 0x07, 
47087
  0x00, 0x02, 0xCE, 0x03, 0x64, 0x6F, 0x63, 0xDA, 0x04, 0xDA, 0x82, 0x98, 0xDA, 0x8C, 0x8E, 0x00, 
47088
  0x07, 0x00, 0xDA, 0x80, 0x8B, 0x00, 0x07, 0x01, 0xDA, 0x8E, 0x41, 0x2C, 0x03, 0x00, 0x00, 0x32, 
47089
  0x03, 0x00, 0x00, 0x45, 0x02, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x04, 0x02, 0x00, 0x45, 
47090
  0x03, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x8D, 0xFE, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
47091
  0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xDA, 0x83, 0xDA, 0x00, 0x04, 0x00, 0xCF, 0x05, 0x69, 0x6D, 
47092
  0x61, 0x67, 0x65, 0x00, 0x04, 0x01, 0xDA, 0x88, 0xAA, 0x2C, 0x02, 0x00, 0x00, 0x32, 0x00, 0x02, 
47093
  0x00, 0x2C, 0x02, 0x01, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8B, 0x12, 0x03, 0x00, 0x03, 0x00, 0x03, 
47094
  0x00, 0x03, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x06, 0x01, 0xCF, 0x0C, 0x69, 0x6D, 0x61, 
47095
  0x67, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x03, 0x00, 
47096
  0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x36, 0x03, 0x00, 
47097
  0x00, 0x8C, 0x34, 0x32, 0x00, 0x32, 0x00, 0x32, 0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0xDA, 0x81, 
47098
  0xCA, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x04, 0x01, 0x01, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 
47099
  0x04, 0x09, 0x00, 0x02, 0xCE, 0x0D, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 
47100
  0x64, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x81, 0xA2, 0xDA, 0x81, 0x9A, 0xDA, 0x81, 0x26, 0xDA, 0x83, 
47101
  0xD3, 0x00, 0x09, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x09, 0x01, 0xCF, 0x0D, 0x6E, 0x61, 0x74, 0x69, 
47102
  0x76, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x2C, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 
47103
  0x00, 0x32, 0x02, 0x03, 0x00, 0x2C, 0x03, 0x02, 0x00, 0x35, 0x02, 0x03, 0x00, 0x35, 0x03, 0x02, 
47104
  0x00, 0x32, 0x00, 0x03, 0x00, 0x2C, 0x02, 0x03, 0x00, 0x36, 0x02, 0x00, 0x00, 0x8C, 0x28, 0x36, 
47105
  0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x36, 0x00, 0x35, 0x00, 0x28, 0x00, 0x28, 0x00, 0x28, 
47106
  0xDA, 0x81, 0xC5, 0xD7, 0x00, 0xCD, 0x02, 0xFE, 0x00, 0x00, 0x0A, 0x02, 0x02, 0x02, 0x07, 0x1C, 
47107
  0x00, 0x01, 0x06, 0xCE, 0x0D, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x6F, 0x61, 0x64, 
47108
  0x65, 0x72, 0xDA, 0x04, 0xDA, 0x81, 0xA1, 0xDA, 0x82, 0x35, 0xDA, 0x81, 0x26, 0xDA, 0x80, 0xDB, 
47109
  0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0x00, 0x1C, 0x00, 0xDA, 0x81, 0x22, 0x00, 
47110
  0x1C, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x1C, 0x02, 0xCF, 0x0D, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
47111
  0x2D, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x05, 0x1C, 0x04, 0xCF, 0x02, 0x6D, 0x6C, 0x0D, 0x1C, 
47112
  0x05, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x35, 0x42, 0x10, 0x1C, 0x07, 0xCF, 0x07, 0x5F, 
47113
  0x30, 0x30, 0x30, 0x30, 0x35, 0x43, 0x2C, 0x03, 0x00, 0x00, 0x2C, 0x04, 0x01, 0x00, 0x32, 0x03, 
47114
  0x04, 0x00, 0x2C, 0x04, 0x02, 0x00, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x04, 0x03, 0x00, 0x29, 0x05, 
47115
  0x00, 0x00, 0x3C, 0x04, 0x00, 0x05, 0x30, 0x05, 0x00, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x32, 0x05, 
47116
  0x06, 0x00, 0x2C, 0x07, 0x04, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x28, 0x07, 
47117
  0x00, 0x00, 0x37, 0x06, 0x05, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x28, 0x06, 0x00, 0x00, 0x3C, 0x04, 
47118
  0x00, 0x06, 0x31, 0x05, 0x00, 0x00, 0x2C, 0x08, 0x05, 0x00, 0x35, 0x06, 0x08, 0x00, 0x2C, 0x09, 
47119
  0x06, 0x00, 0x25, 0x08, 0x06, 0x09, 0x1E, 0x08, 0x02, 0x00, 0x03, 0x07, 0x00, 0x00, 0x39, 0x06, 
47120
  0x07, 0x05, 0x03, 0x06, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 
47121
  0x06, 0x01, 0x04, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xDA, 0x86, 0x47, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 
47122
  0x81, 0x22, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8E, 0x4B, 
47123
  0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x8E, 0x4C, 0x2D, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 
47124
  0x00, 0x00, 0x01, 0x34, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0xBF, 
47125
  0xFF, 0x8C, 0x2D, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x8C, 0x2A, 
47126
  0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x0F, 0x01, 0x0F, 0x00, 0x0F, 0x01, 
47127
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
47128
  0x0F, 0x00, 0x16, 0x00, 0x16, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
47129
  0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x03, 0x00, 0x00, 0x00, 0xD0, 0x05, 0x66, 0x72, 0x65, 
47130
  0x73, 0x68, 0xCE, 0x14, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x20, 0x64, 0x65, 0x70, 
47131
  0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x79, 0x20, 0xCE, 0x09, 0x20, 0x64, 0x65, 0x74, 0x65, 0x63, 
47132
  0x74, 0x65, 0x64, 0xDA, 0x81, 0x28, 0xDA, 0x83, 0x4E, 0xCE, 0x0C, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
47133
  0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0xCE, 0x08, 0x20, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 
47134
  0x6E, 0x00, 0x48, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x48, 0x01, 0xDA, 0x81, 0x4D, 0x00, 0x48, 0x02, 
47135
  0xDA, 0x85, 0xF7, 0x00, 0x48, 0x03, 0xCF, 0x09, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 
47136
  0x31, 0x04, 0x48, 0x06, 0xDA, 0x82, 0x2B, 0x06, 0x48, 0x07, 0xDA, 0x82, 0x29, 0x0F, 0x48, 0x08, 
47137
  0xDA, 0x82, 0x3B, 0x15, 0x48, 0x0A, 0xDA, 0x8E, 0x4C, 0x1B, 0x48, 0x0C, 0xCF, 0x03, 0x6D, 0x6C, 
47138
  0x73, 0x24, 0x48, 0x0E, 0xDA, 0x87, 0xA2, 0x3A, 0x48, 0x11, 0xDA, 0x8B, 0xE1, 0x45, 0x48, 0x12, 
47139
  0xDA, 0x83, 0x4A, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x05, 0x00, 0x00, 0x35, 0x04, 0x05, 0x00, 0x3D, 
47140
  0x05, 0x04, 0x00, 0x1B, 0x06, 0x05, 0x00, 0x3D, 0x05, 0x04, 0x01, 0x1B, 0x07, 0x05, 0x00, 0x1E, 
47141
  0x06, 0x02, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x2C, 0x05, 0x01, 0x00, 0x2C, 
47142
  0x08, 0x02, 0x00, 0x32, 0x05, 0x08, 0x00, 0x2C, 0x08, 0x03, 0x00, 0x35, 0x05, 0x08, 0x00, 0x1B, 
47143
  0x08, 0x05, 0x00, 0x2C, 0x09, 0x04, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x32, 0x09, 0x0A, 0x00, 0x2C, 
47144
  0x0A, 0x03, 0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x2C, 
47145
  0x0C, 0x07, 0x00, 0x32, 0x0B, 0x0C, 0x00, 0x2C, 0x0C, 0x03, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 
47146
  0x0C, 0x0B, 0x00, 0x2C, 0x0E, 0x08, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x35, 0x0E, 0x02, 0x00, 0x1E, 
47147
  0x0E, 0x03, 0x00, 0x28, 0x0D, 0x00, 0x00, 0x1C, 0x03, 0x00, 0x00, 0x3A, 0x0F, 0x08, 0x06, 0x1B, 
47148
  0x0D, 0x0F, 0x00, 0x1B, 0x0E, 0x0D, 0x00, 0x1E, 0x0D, 0x02, 0x00, 0x03, 0x0E, 0x00, 0x00, 0x31, 
47149
  0x06, 0x00, 0x00, 0x35, 0x0F, 0x0A, 0x00, 0x1E, 0x0F, 0x08, 0x00, 0x2C, 0x10, 0x09, 0x00, 0x2C, 
47150
  0x11, 0x0A, 0x00, 0x33, 0x10, 0x06, 0x11, 0x2C, 0x11, 0x0B, 0x00, 0x35, 0x10, 0x11, 0x00, 0x01, 
47151
  0x10, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x12, 0x0C, 0x00, 0x35, 
47152
  0x11, 0x12, 0x00, 0x1E, 0x11, 0x05, 0x00, 0x31, 0x07, 0x00, 0x00, 0x35, 0x12, 0x0C, 0x00, 0x1B, 
47153
  0x10, 0x12, 0x00, 0x1C, 0x02, 0x00, 0x00, 0x1B, 0x10, 0x07, 0x00, 0x1B, 0x11, 0x10, 0x00, 0x1E, 
47154
  0x11, 0x02, 0x00, 0x1C, 0x07, 0x00, 0x00, 0x2C, 0x10, 0x0D, 0x00, 0x2C, 0x12, 0x0E, 0x00, 0x33, 
47155
  0x10, 0x07, 0x12, 0x2C, 0x12, 0x0B, 0x00, 0x35, 0x10, 0x12, 0x00, 0x01, 0x10, 0x00, 0x00, 0x32, 
47156
  0x06, 0x01, 0x00, 0x35, 0x10, 0x11, 0x00, 0x1B, 0x12, 0x10, 0x00, 0x3C, 0x08, 0x06, 0x12, 0x03, 
47157
  0x12, 0x00, 0x00, 0x8C, 0x38, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 
47158
  0x00, 0x03, 0x01, 0x03, 0x00, 0x03, 0x00, 0x14, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 
47159
  0x00, 0x0B, 0x00, 0x03, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 
47160
  0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x03, 0x01, 0x1A, 0x00, 0x1A, 
47161
  0x00, 0x1A, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x29, 0x00, 0x12, 0x00, 0x03, 0x00, 0x03, 
47162
  0x00, 0x03, 0x02, 0x09, 0x00, 0x09, 0x00, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 
47163
  0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x02, 0x19, 0x00, 0x19, 0x00, 0x19, 0x00, 0x15, 0x00, 0x2D, 
47164
  0x00, 0x2D, 0x00, 0x15, 0x00, 0x15, 0x00, 0x15, 0x00, 0x09, 0xBF, 0xFF, 0x07, 0x00, 0x07, 0x02, 
47165
  0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x18, 0x01, 0x12, 0x00, 0x12, 0x00, 
47166
  0x09, 0x01, 0x09, 0xBF, 0xFC, 0x07, 0x00, 0x06, 0x00, 0xDA, 0x81, 0x22, 0x00, 0x06, 0x01, 0xDA, 
47167
  0x81, 0x4D, 0x00, 0x06, 0x02, 0xDA, 0x86, 0xD8, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x04, 0x00, 0x00, 
47168
  0x35, 0x03, 0x04, 0x00, 0x33, 0x00, 0x01, 0x03, 0x2C, 0x04, 0x01, 0x00, 0x36, 0x04, 0x00, 0x00, 
47169
  0x8C, 0x4D, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0xBF, 0xFF, 0x01, 
47170
  0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 
47171
  0x81, 0x08, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x01, 0x05, 0xDA, 0x81, 0x0A, 
47172
  0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x01, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 
47173
  0x01, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x01, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x01, 0x0A, 
47174
  0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x01, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x01, 0x0C, 0xDA, 0x81, 
47175
  0x11, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x02, 0x00, 0xDA, 0x81, 0x29, 0xBF, 
47176
  0xFF, 0x02, 0x01, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x02, 0x03, 0xDA, 0x81, 0x39, 0xBF, 0xFF, 0x02, 
47177
  0x05, 0xDA, 0x81, 0x92, 0xBF, 0xFF, 0x02, 0x07, 0xDA, 0x81, 0x93, 0xBF, 0xFF, 0x02, 0x08, 0xDA, 
47178
  0x81, 0x94, 0xBF, 0xFF, 0x02, 0x0A, 0xDA, 0x81, 0x95, 0xBF, 0xFF, 0x02, 0x0C, 0xDA, 0x81, 0x96, 
47179
  0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0xA5, 0x2D, 0x00, 0x02, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 
47180
  0x01, 0x01, 0x04, 0x35, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x00, 0x01, 0x2C, 0x02, 0x00, 0x00, 0x3C, 
47181
  0x01, 0x02, 0x00, 0x2C, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x02, 0x00, 0x32, 0x00, 0x01, 0x00, 0x2C, 
47182
  0x01, 0x02, 0x00, 0x35, 0x00, 0x01, 0x00, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x03, 0x00, 0x36, 
47183
  0x01, 0x00, 0x00, 0xBF, 0xFF, 0x01, 0x00, 0x90, 0x7D, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 
47184
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 
47185
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x90, 0x75, 0x14, 0x00, 0x14, 0x00, 0x07, 0x01, 0x07, 0x00, 
47186
  0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x26, 0x00, 0x07, 0x00, 0x07, 0x01, 
47187
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 
47188
  0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
47189
  0x07, 0x02, 0x00, 0x00, 0x00, 0x90, 0x6D, 0x13, 0x00, 0x13, 0x00, 0x13, 0x00, 0x05, 0x01, 0x0E, 
47190
  0x00, 0x0E, 0x00, 0x05, 0x01, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x12, 0x00, 0x05, 0x01, 0x26, 
47191
  0x00, 0x26, 0x00, 0x26, 0x00, 0x26, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x05, 0x01, 0x05, 
47192
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 
47193
  0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x02, 0x0C, 0x00, 0x0C, 
47194
  0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0xBF, 0xFE, 0x05, 0x03, 0x05, 0x00, 0x05, 0x00, 
47195
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0C, 0x00, 
47196
  0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47197
  0x05, 0x00, 0x05, 0x00, 0x05, 0x81, 0x01, 0x00, 0x00, 0xDB, 0x01, 0xD7, 0x00, 0xCD, 0x02, 0xFF, 
47198
  0x00, 0x00, 0x0F, 0x03, 0x03, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0x0A, 0x29, 0x00, 0x01, 0x09, 0xCE, 
47199
  0x07, 0x64, 0x6F, 0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0xDA, 0x04, 0xDA, 0x83, 0xCD, 0xDA, 0x8A, 0xC0, 
47200
  0xDA, 0x81, 0x8A, 0xDA, 0x81, 0xA3, 0xDA, 0x81, 0x8C, 0xDA, 0x81, 0x91, 0xDA, 0x80, 0xDB, 0xDA, 
47201
  0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 0x00, 0x29, 0x00, 0xDA, 0x87, 0x9E, 0x00, 0x29, 
47202
  0x01, 0xDA, 0x81, 0x29, 0x00, 0x29, 0x02, 0xCF, 0x04, 0x68, 0x6F, 0x6F, 0x6B, 0x00, 0x29, 0x03, 
47203
  0xDA, 0x81, 0x4D, 0x00, 0x29, 0x04, 0xDA, 0x81, 0x14, 0x06, 0x29, 0x05, 0xCF, 0x05, 0x68, 0x6F, 
47204
  0x6F, 0x6B, 0x66, 0x0C, 0x29, 0x08, 0xDA, 0x81, 0x92, 0x19, 0x29, 0x09, 0xCF, 0x07, 0x5F, 0x30, 
47205
  0x30, 0x30, 0x30, 0x37, 0x73, 0x1C, 0x29, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 
47206
  0x74, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x32, 0x00, 0x05, 
47207
  0x00, 0x2C, 0x07, 0x01, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1B, 0x05, 0x06, 0x00, 0x1E, 0x05, 0x02, 
47208
  0x00, 0x1C, 0x02, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x08, 0x02, 0x00, 0x35, 0x07, 0x08, 
47209
  0x00, 0x1B, 0x08, 0x07, 0x00, 0x2C, 0x0A, 0x03, 0x00, 0x3B, 0x09, 0x00, 0x0A, 0x20, 0x09, 0x02, 
47210
  0x00, 0x2C, 0x09, 0x04, 0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x05, 0x00, 0x35, 0x0A, 0x0B, 
47211
  0x00, 0x30, 0x09, 0x00, 0x00, 0x2C, 0x0B, 0x06, 0x00, 0x32, 0x09, 0x0B, 0x00, 0x2C, 0x0C, 0x07, 
47212
  0x00, 0x35, 0x0B, 0x0C, 0x00, 0x1B, 0x09, 0x0B, 0x00, 0x28, 0x0C, 0x00, 0x00, 0x37, 0x0B, 0x09, 
47213
  0x0C, 0x1B, 0x0C, 0x0B, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x0D, 0x05, 0x00, 0x35, 0x0B, 0x0D, 
47214
  0x00, 0x31, 0x09, 0x00, 0x00, 0x2C, 0x0D, 0x08, 0x00, 0x35, 0x0B, 0x0D, 0x00, 0x2C, 0x0E, 0x09, 
47215
  0x00, 0x25, 0x0D, 0x0B, 0x0E, 0x1E, 0x0D, 0x02, 0x00, 0x03, 0x0C, 0x00, 0x00, 0x39, 0x0B, 0x0C, 
47216
  0x09, 0x03, 0x0B, 0x00, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x0C, 
47217
  0x01, 0x07, 0xDA, 0x80, 0xE2, 0xDA, 0x04, 0xCE, 0x0D, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 
47218
  0x20, 0x68, 0x6F, 0x6F, 0x6B, 0x20, 0xDA, 0x81, 0x8F, 0xDA, 0x81, 0x90, 0xBF, 0xFF, 0x00, 0x00, 
47219
  0xDA, 0x87, 0x9E, 0xBF, 0xFF, 0x00, 0x01, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x8E, 
47220
  0x58, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x4D, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x14, 0xBF, 
47221
  0xFF, 0x00, 0x05, 0xDA, 0x8E, 0x59, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x92, 0x2C, 0x00, 0x00, 
47222
  0x00, 0x2D, 0x01, 0x00, 0x02, 0x2C, 0x02, 0x01, 0x00, 0x33, 0x00, 0x01, 0x02, 0x2D, 0x00, 0x00, 
47223
  0x01, 0x31, 0x00, 0x00, 0x00, 0x2C, 0x01, 0x02, 0x00, 0x35, 0x00, 0x01, 0x00, 0x2D, 0x01, 0x00, 
47224
  0x03, 0x34, 0x01, 0x00, 0x00, 0x2D, 0x01, 0x00, 0x05, 0x36, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0x90, 
47225
  0x87, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
47226
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x90, 0x82, 0x25, 0x00, 0x25, 0x00, 0x25, 0x00, 
47227
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x13, 0x01, 0x0E, 0x00, 
47228
  0x0E, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 
47229
  0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47230
  0x05, 0x00, 0x05, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47231
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x2E, 0x00, 0x00, 0x00, 0xDA, 
47232
  0x80, 0xED, 0xD7, 0x01, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x10, 0x01, 0x01, 0x01, 0x0E, 0x46, 0x01, 
47233
  0x1A, 0xCE, 0x1A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 
47234
  0x61, 0x6C, 0x6C, 0x2D, 0x75, 0x6E, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x65, 0x64, 0xDA, 0x04, 0xDA, 
47235
  0x89, 0x95, 0xD0, 0x09, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0xDA, 0x88, 0xB0, 
47236
  0xDA, 0x81, 0x38, 0xDA, 0x82, 0x7C, 0xDA, 0x83, 0xDE, 0xCE, 0x07, 0x72, 0x65, 0x6D, 0x6F, 0x76, 
47237
  0x65, 0x20, 0xDA, 0x81, 0x90, 0xDA, 0x80, 0xEF, 0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x67, 0xDA, 0x4F, 
47238
  0xDA, 0x81, 0x3E, 0xDA, 0x81, 0x3F, 0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 
47239
  0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 
47240
  0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 
47241
  0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 
47242
  0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 
47243
  0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 
47244
  0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 
47245
  0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0x00, 0x46, 0x00, 0xDA, 0x81, 0x29, 0x00, 0x46, 0x01, 0xDA, 
47246
  0x82, 0xED, 0x03, 0x46, 0x03, 0xDA, 0x89, 0x8A, 0x09, 0x46, 0x04, 0xDA, 0x89, 0xA2, 0x12, 0x18, 
47247
  0x08, 0xDA, 0x87, 0x9E, 0x1C, 0x46, 0x07, 0xDA, 0x81, 0x3A, 0x20, 0x3F, 0x09, 0xCF, 0x07, 0x5F, 
47248
  0x30, 0x30, 0x30, 0x30, 0x37, 0x76, 0x23, 0x3F, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
47249
  0x37, 0x75, 0x26, 0x3F, 0x0B, 0xDA, 0x8E, 0x25, 0x2F, 0x3D, 0x0C, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
47250
  0x30, 0x30, 0x37, 0x77, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x03, 0x00, 0x0D, 0x35, 0x02, 0x03, 0x00, 
47251
  0x1B, 0x03, 0x02, 0x00, 0x40, 0x04, 0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x3B, 0x05, 0x03, 0x06, 
47252
  0x20, 0x05, 0x02, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x1B, 0x04, 0x05, 0x00, 0x2C, 0x06, 0x01, 0x00, 
47253
  0x32, 0x06, 0x04, 0x00, 0x2C, 0x07, 0x02, 0x00, 0x35, 0x06, 0x07, 0x00, 0x1E, 0x06, 0x0A, 0x00, 
47254
  0x31, 0x00, 0x00, 0x00, 0x2D, 0x08, 0x00, 0x0E, 0x35, 0x07, 0x08, 0x00, 0x1B, 0x08, 0x07, 0x00, 
47255
  0x2C, 0x07, 0x01, 0x00, 0x33, 0x08, 0x00, 0x07, 0x31, 0x03, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x0F, 
47256
  0x35, 0x07, 0x09, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x3B, 0x06, 0x03, 0x07, 0x20, 0x06, 0x02, 0x00, 
47257
  0x2C, 0x06, 0x04, 0x00, 0x1B, 0x07, 0x06, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x05, 0x00, 
47258
  0x35, 0x08, 0x09, 0x00, 0x1B, 0x09, 0x08, 0x00, 0x28, 0x0A, 0x00, 0x00, 0x49, 0x08, 0x09, 0x0A, 
47259
  0x1B, 0x0A, 0x08, 0x00, 0x1F, 0x0A, 0x1B, 0x00, 0x3A, 0x08, 0x09, 0x0A, 0x1B, 0x0B, 0x08, 0x00, 
47260
  0x2C, 0x08, 0x06, 0x00, 0x32, 0x08, 0x0B, 0x00, 0x2C, 0x0C, 0x07, 0x00, 0x35, 0x08, 0x0C, 0x00, 
47261
  0x2C, 0x08, 0x08, 0x00, 0x32, 0x0B, 0x08, 0x00, 0x2C, 0x0C, 0x09, 0x00, 0x35, 0x08, 0x0C, 0x00, 
47262
  0x1B, 0x0C, 0x08, 0x00, 0x2C, 0x0D, 0x0A, 0x00, 0x25, 0x08, 0x0C, 0x0D, 0x1E, 0x08, 0x05, 0x00, 
47263
  0x31, 0x0B, 0x00, 0x00, 0x2C, 0x0E, 0x0B, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1C, 0x07, 0x00, 0x00, 
47264
  0x2C, 0x0E, 0x0C, 0x00, 0x25, 0x0D, 0x0C, 0x0E, 0x1E, 0x0D, 0x04, 0x00, 0x31, 0x0B, 0x00, 0x00, 
47265
  0x2C, 0x0F, 0x0D, 0x00, 0x35, 0x0E, 0x0F, 0x00, 0x49, 0x0A, 0x09, 0x0A, 0x1C, 0xE6, 0xFF, 0xFF, 
47266
  0x31, 0x00, 0x00, 0x00, 0x2D, 0x09, 0x00, 0x04, 0x35, 0x08, 0x09, 0x00, 0x31, 0x08, 0x00, 0x00, 
47267
  0x2D, 0x0A, 0x00, 0x09, 0x35, 0x09, 0x0A, 0x00, 0x04, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0x90, 0x94, 
47268
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x01, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 
47269
  0x14, 0x00, 0x05, 0x01, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x01, 0x13, 0x00, 
47270
  0x13, 0x00, 0x13, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 
47271
  0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 
47272
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x07, 0x00, 
47273
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x07, 0x00, 
47274
  0x07, 0x00, 0x07, 0x00, 0x07, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0xBF, 0xFF, 0x07, 0x00, 0x07, 
47275
  0x00, 0x07, 0x00, 0x07, 0x02, 0x14, 0x00, 0x14, 0x00, 0x14, 0xBF, 0xFC, 0x05, 0x00, 0x05, 0x05, 
47276
  0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0xBF, 0xF3, 0x03, 0xDB, 0x01, 
47277
  0xDA, 0x88, 0x88, 0xDA, 0x88, 0x6F, 0xC9, 0xDA, 0x8A, 0x36, 0xDA, 0x89, 0x6A, 0xD7, 0x01, 0xCD, 
47278
  0x02, 0xFE, 0x00, 0x00, 0x13, 0x03, 0x02, 0x03, 0x0B, 0x3B, 0x01, 0x01, 0x22, 0xCE, 0x0B, 0x62, 
47279
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x63, 0x6B, 0xDA, 0x04, 0xDA, 0x81, 0x38, 0xDA, 
47280
  0x81, 0x33, 0xCE, 0x34, 0x63, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x72, 
47281
  0x65, 0x61, 0x74, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x25, 
47282
  0x76, 0x20, 0x28, 0x6F, 0x72, 0x20, 0x69, 0x74, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 
47283
  0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x29, 0xDA, 0x81, 0x49, 0xDA, 0x81, 0x27, 0xDA, 0x81, 
47284
  0x28, 0xDA, 0x89, 0x74, 0xDA, 0x80, 0xDB, 0xDA, 0x80, 0xDC, 0xDA, 0x80, 0xDE, 0xDA, 0x80, 0xDF, 
47285
  0xBF, 0xFF, 0x00, 0x00, 0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 
47286
  0x00, 0x03, 0xDA, 0x81, 0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 
47287
  0xDA, 0x81, 0x0A, 0xBF, 0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 
47288
  0x0C, 0xBF, 0xFF, 0x00, 0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 
47289
  0xFF, 0x00, 0x0A, 0xDA, 0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 
47290
  0x0C, 0xDA, 0x81, 0x11, 0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 
47291
  0x81, 0x13, 0xBF, 0xFF, 0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 
47292
  0xBF, 0xFF, 0x00, 0x11, 0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 
47293
  0x00, 0x13, 0xDA, 0x82, 0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 
47294
  0xDA, 0x82, 0xF1, 0xBF, 0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0x00, 0x3B, 0x00, 0xDA, 0x81, 0x29, 
47295
  0x00, 0x3B, 0x01, 0xCF, 0x08, 0x64, 0x65, 0x73, 0x74, 0x2D, 0x64, 0x69, 0x72, 0x00, 0x3B, 0x02, 
47296
  0xCF, 0x09, 0x69, 0x73, 0x2D, 0x62, 0x61, 0x63, 0x6B, 0x75, 0x70, 0x00, 0x3B, 0x03, 0xDA, 0x82, 
47297
  0xF3, 0x00, 0x3B, 0x04, 0xDA, 0x43, 0x04, 0x3B, 0x06, 0xDA, 0x89, 0x8A, 0x0A, 0x3B, 0x07, 0xDA, 
47298
  0x81, 0x3A, 0x0E, 0x15, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x32, 0x17, 0x3B, 
47299
  0x0A, 0xDA, 0x81, 0x2A, 0x25, 0x3B, 0x0D, 0xCF, 0x0C, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 
47300
  0x2D, 0x68, 0x6F, 0x6F, 0x6B, 0x2B, 0x3A, 0x0E, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 
47301
  0x33, 0x2E, 0x3A, 0x10, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x34, 0x2B, 0x04, 0x00, 
47302
  0x00, 0x31, 0x00, 0x00, 0x00, 0x2D, 0x06, 0x00, 0x0D, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 
47303
  0x00, 0x40, 0x07, 0x00, 0x00, 0x2C, 0x09, 0x00, 0x00, 0x3B, 0x08, 0x06, 0x09, 0x20, 0x08, 0x02, 
47304
  0x00, 0x1B, 0x08, 0x07, 0x00, 0x1B, 0x07, 0x08, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2C, 0x0A, 0x01, 
47305
  0x00, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x1E, 0x0A, 0x02, 0x00, 0x1C, 0x05, 0x00, 
47306
  0x00, 0x2C, 0x09, 0x02, 0x00, 0x32, 0x09, 0x01, 0x00, 0x2C, 0x0B, 0x03, 0x00, 0x35, 0x09, 0x0B, 
47307
  0x00, 0x2D, 0x0A, 0x00, 0x02, 0x35, 0x09, 0x0A, 0x00, 0x1B, 0x0A, 0x09, 0x00, 0x2C, 0x0B, 0x04, 
47308
  0x00, 0x33, 0x01, 0x0A, 0x0B, 0x2C, 0x0C, 0x05, 0x00, 0x35, 0x0B, 0x0C, 0x00, 0x31, 0x0B, 0x00, 
47309
  0x00, 0x2C, 0x0D, 0x01, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x2C, 0x0B, 0x04, 0x00, 0x33, 0x01, 0x0A, 
47310
  0x0B, 0x2C, 0x0B, 0x06, 0x00, 0x32, 0x0A, 0x0B, 0x00, 0x2C, 0x0D, 0x05, 0x00, 0x35, 0x0B, 0x0D, 
47311
  0x00, 0x1B, 0x0D, 0x0B, 0x00, 0x30, 0x0E, 0x00, 0x00, 0x2C, 0x0F, 0x07, 0x00, 0x32, 0x0E, 0x0F, 
47312
  0x00, 0x2C, 0x10, 0x08, 0x00, 0x35, 0x0F, 0x10, 0x00, 0x1B, 0x0E, 0x0F, 0x00, 0x28, 0x10, 0x00, 
47313
  0x00, 0x37, 0x0F, 0x0E, 0x10, 0x1B, 0x10, 0x0F, 0x00, 0x31, 0x0E, 0x00, 0x00, 0x2C, 0x11, 0x09, 
47314
  0x00, 0x35, 0x0F, 0x11, 0x00, 0x2C, 0x12, 0x0A, 0x00, 0x25, 0x11, 0x0F, 0x12, 0x1E, 0x11, 0x02, 
47315
  0x00, 0x1C, 0x05, 0x00, 0x00, 0x31, 0x01, 0x00, 0x00, 0x2D, 0x12, 0x00, 0x09, 0x35, 0x0F, 0x12, 
47316
  0x00, 0x39, 0x0F, 0x10, 0x0E, 0x03, 0x01, 0x00, 0x00, 0xBF, 0xFF, 0xCD, 0x00, 0xDC, 0x00, 0x00, 
47317
  0x11, 0x00, 0x00, 0x00, 0x19, 0x7A, 0x02, 0x2E, 0xDA, 0x89, 0x8F, 0xDA, 0x04, 0xDA, 0x81, 0x25, 
47318
  0xDA, 0x81, 0x26, 0xDA, 0x8D, 0x2E, 0xDA, 0x81, 0x28, 0xDA, 0x80, 0xF0, 0xDA, 0x81, 0x57, 0xDA, 
47319
  0x80, 0xEF, 0xDA, 0x86, 0x66, 0xDA, 0x80, 0xA4, 0xDA, 0x81, 0x3E, 0xDA, 0x82, 0xF6, 0xDA, 0x81, 
47320
  0x39, 0xDA, 0x30, 0xDA, 0x81, 0x67, 0xCE, 0x09, 0x66, 0x69, 0x6C, 0x65, 0x5F, 0x25, 0x30, 0x36, 
47321
  0x64, 0xDA, 0x81, 0x4B, 0xDA, 0x82, 0xF8, 0xCE, 0x12, 0x75, 0x6E, 0x65, 0x78, 0x70, 0x65, 0x63, 
47322
  0x74, 0x65, 0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x25, 0x76, 0xDA, 0x81, 0x49, 0xCE, 0x18, 
47323
  0x28, 0x64, 0x65, 0x66, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x5B, 0x6D, 
47324
  0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5D, 0xCE, 0x05, 0x0A, 0x20, 0x20, 0x25, 0x6A, 0xDA, 
47325
  0x81, 0x70, 0xCE, 0x02, 0x29, 0x0A, 0xDA, 0x87, 0x5A, 0xDA, 0x81, 0x72, 0xBF, 0xFF, 0x00, 0x00, 
47326
  0xDA, 0x81, 0x06, 0xBF, 0xFF, 0x00, 0x02, 0xDA, 0x81, 0x07, 0xBF, 0xFF, 0x00, 0x03, 0xDA, 0x81, 
47327
  0x08, 0xBF, 0xFF, 0x00, 0x04, 0xDA, 0x81, 0x09, 0xBF, 0xFF, 0x00, 0x05, 0xDA, 0x81, 0x0A, 0xBF, 
47328
  0xFF, 0x00, 0x06, 0xDA, 0x81, 0x0B, 0xBF, 0xFF, 0x00, 0x07, 0xDA, 0x81, 0x0C, 0xBF, 0xFF, 0x00, 
47329
  0x08, 0xDA, 0x81, 0x0D, 0xBF, 0xFF, 0x00, 0x09, 0xDA, 0x81, 0x0E, 0xBF, 0xFF, 0x00, 0x0A, 0xDA, 
47330
  0x81, 0x0F, 0xBF, 0xFF, 0x00, 0x0B, 0xDA, 0x81, 0x10, 0xBF, 0xFF, 0x00, 0x0C, 0xDA, 0x81, 0x11, 
47331
  0xBF, 0xFF, 0x00, 0x0D, 0xDA, 0x81, 0x12, 0xBF, 0xFF, 0x00, 0x0E, 0xDA, 0x81, 0x13, 0xBF, 0xFF, 
47332
  0x00, 0x0F, 0xDA, 0x81, 0x14, 0xBF, 0xFF, 0x00, 0x10, 0xDA, 0x80, 0xE9, 0xBF, 0xFF, 0x00, 0x11, 
47333
  0xDA, 0x82, 0xED, 0xBF, 0xFF, 0x00, 0x12, 0xDA, 0x82, 0xEE, 0xBF, 0xFF, 0x00, 0x13, 0xDA, 0x82, 
47334
  0xEF, 0xBF, 0xFF, 0x00, 0x14, 0xDA, 0x82, 0xF0, 0xBF, 0xFF, 0x00, 0x15, 0xDA, 0x82, 0xF1, 0xBF, 
47335
  0xFF, 0x00, 0x16, 0xDA, 0x82, 0xF2, 0xBF, 0xFF, 0x01, 0x00, 0xDA, 0x81, 0x29, 0xBF, 0xFF, 0x01, 
47336
  0x01, 0xDA, 0x8E, 0x67, 0xBF, 0xFF, 0x01, 0x02, 0xDA, 0x8E, 0x68, 0xBF, 0xFF, 0x01, 0x03, 0xDA, 
47337
  0x82, 0xF3, 0xBF, 0xFF, 0x01, 0x04, 0xDA, 0x43, 0xBF, 0xFF, 0x01, 0x06, 0xDA, 0x89, 0x8A, 0xBF, 
47338
  0xFF, 0x01, 0x07, 0xDA, 0x81, 0x3A, 0xBF, 0xFF, 0x01, 0x0A, 0xDA, 0x8E, 0x69, 0xBF, 0xFF, 0x01, 
47339
  0x0A, 0xDA, 0x81, 0x2A, 0xBF, 0xFF, 0x01, 0x0D, 0xDA, 0x8E, 0x6A, 0x01, 0x7A, 0x01, 0xCF, 0x0E, 
47340
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2D, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x09, 0x7A, 
47341
  0x02, 0xCF, 0x07, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x19, 0x62, 0x04, 0xCF, 0x07, 0x5F, 
47342
  0x30, 0x30, 0x30, 0x30, 0x38, 0x36, 0x1C, 0x62, 0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 
47343
  0x38, 0x35, 0x1F, 0x62, 0x07, 0xDA, 0x8E, 0x25, 0x25, 0x62, 0x09, 0xDA, 0x81, 0x63, 0x28, 0x62, 
47344
  0x0A, 0xDA, 0x81, 0x78, 0x32, 0x62, 0x08, 0xCF, 0x07, 0x72, 0x65, 0x6C, 0x70, 0x61, 0x74, 0x68, 
47345
  0x32, 0x60, 0x0A, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x37, 0x4A, 0x5B, 0x0E, 0xDA, 
47346
  0x81, 0x2D, 0x65, 0x7A, 0x05, 0xDA, 0x81, 0x64, 0x65, 0x72, 0x01, 0xCF, 0x07, 0x5F, 0x30, 0x30, 
47347
  0x30, 0x30, 0x38, 0x39, 0x68, 0x72, 0x07, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x38, 0x38, 
47348
  0x6B, 0x72, 0x08, 0xDA, 0x64, 0x40, 0x00, 0x00, 0x00, 0x1B, 0x01, 0x00, 0x00, 0x2C, 0x02, 0x00, 
47349
  0x00, 0x31, 0x02, 0x00, 0x00, 0x2C, 0x03, 0x01, 0x00, 0x35, 0x02, 0x03, 0x00, 0x31, 0x02, 0x00, 
47350
  0x00, 0x2D, 0x04, 0x00, 0x03, 0x35, 0x03, 0x04, 0x00, 0x1B, 0x02, 0x03, 0x00, 0x2D, 0x04, 0x01, 
47351
  0x02, 0x1E, 0x04, 0x0E, 0x00, 0x2D, 0x04, 0x01, 0x00, 0x31, 0x04, 0x00, 0x00, 0x2D, 0x05, 0x00, 
47352
  0x04, 0x35, 0x04, 0x05, 0x00, 0x2D, 0x05, 0x01, 0x01, 0x2D, 0x06, 0x01, 0x0A, 0x2C, 0x07, 0x02, 
47353
  0x00, 0x33, 0x05, 0x06, 0x07, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x05, 0x06, 0x00, 0x32, 0x04, 0x05, 
47354
  0x00, 0x2D, 0x07, 0x00, 0x0B, 0x35, 0x06, 0x07, 0x00, 0x2D, 0x04, 0x01, 0x07, 0x28, 0x06, 0x00, 
47355
  0x00, 0x49, 0x05, 0x04, 0x06, 0x1B, 0x06, 0x05, 0x00, 0x1F, 0x06, 0x45, 0x00, 0x3A, 0x05, 0x04, 
47356
  0x06, 0x1B, 0x07, 0x05, 0x00, 0x31, 0x07, 0x00, 0x00, 0x2C, 0x08, 0x04, 0x00, 0x35, 0x05, 0x08, 
47357
  0x00, 0x2C, 0x09, 0x05, 0x00, 0x3A, 0x08, 0x05, 0x09, 0x1B, 0x09, 0x08, 0x00, 0x2C, 0x0A, 0x06, 
47358
  0x00, 0x3A, 0x08, 0x05, 0x0A, 0x1B, 0x0A, 0x08, 0x00, 0x3F, 0x05, 0x02, 0x00, 0x2B, 0x08, 0xFF, 
47359
  0xFF, 0x33, 0x07, 0x05, 0x08, 0x2C, 0x0B, 0x07, 0x00, 0x35, 0x08, 0x0B, 0x00, 0x2D, 0x05, 0x01, 
47360
  0x0A, 0x32, 0x08, 0x05, 0x00, 0x2C, 0x0B, 0x08, 0x00, 0x35, 0x05, 0x0B, 0x00, 0x1B, 0x08, 0x05, 
47361
  0x00, 0x2C, 0x0B, 0x09, 0x00, 0x25, 0x05, 0x0A, 0x0B, 0x1E, 0x05, 0x0A, 0x00, 0x2C, 0x0C, 0x0A, 
47362
  0x00, 0x2C, 0x0D, 0x0B, 0x00, 0x33, 0x0C, 0x0D, 0x08, 0x31, 0x09, 0x00, 0x00, 0x45, 0x0B, 0x00, 
47363
  0x00, 0x32, 0x01, 0x0B, 0x00, 0x2C, 0x0D, 0x0C, 0x00, 0x35, 0x0C, 0x0D, 0x00, 0x1C, 0x22, 0x00, 
47364
  0x00, 0x2C, 0x0C, 0x0D, 0x00, 0x25, 0x0B, 0x0A, 0x0C, 0x1E, 0x0B, 0x1B, 0x00, 0x2D, 0x0D, 0x01, 
47365
  0x04, 0x05, 0x0C, 0x0D, 0x01, 0x2F, 0x0C, 0x01, 0x04, 0x2C, 0x0D, 0x0E, 0x00, 0x2D, 0x0E, 0x01, 
47366
  0x04, 0x32, 0x0D, 0x0E, 0x00, 0x2C, 0x0E, 0x0F, 0x00, 0x35, 0x0D, 0x0E, 0x00, 0x1B, 0x0E, 0x0D, 
47367
  0x00, 0x2D, 0x0D, 0x01, 0x01, 0x2D, 0x0F, 0x01, 0x0A, 0x33, 0x0D, 0x0F, 0x0E, 0x2C, 0x0F, 0x03, 
47368
  0x00, 0x35, 0x0D, 0x0F, 0x00, 0x32, 0x07, 0x0D, 0x00, 0x2D, 0x10, 0x00, 0x0A, 0x35, 0x0F, 0x10, 
47369
  0x00, 0x2C, 0x0F, 0x10, 0x00, 0x2C, 0x10, 0x0B, 0x00, 0x33, 0x0F, 0x10, 0x0E, 0x32, 0x08, 0x09, 
47370
  0x00, 0x45, 0x0D, 0x00, 0x00, 0x32, 0x01, 0x0D, 0x00, 0x2C, 0x10, 0x0C, 0x00, 0x35, 0x0F, 0x10, 
47371
  0x00, 0x1C, 0x05, 0x00, 0x00, 0x2C, 0x0C, 0x11, 0x00, 0x32, 0x0C, 0x07, 0x00, 0x2C, 0x0D, 0x12, 
47372
  0x00, 0x35, 0x0C, 0x0D, 0x00, 0x49, 0x06, 0x04, 0x06, 0x1C, 0xBC, 0xFF, 0xFF, 0x2C, 0x04, 0x13, 
47373
  0x00, 0x31, 0x04, 0x00, 0x00, 0x41, 0x04, 0x00, 0x00, 0x1B, 0x05, 0x04, 0x00, 0x28, 0x07, 0x00, 
47374
  0x00, 0x49, 0x06, 0x01, 0x07, 0x1B, 0x07, 0x06, 0x00, 0x1F, 0x07, 0x09, 0x00, 0x3A, 0x06, 0x01, 
47375
  0x07, 0x1B, 0x08, 0x06, 0x00, 0x2C, 0x06, 0x14, 0x00, 0x33, 0x05, 0x06, 0x08, 0x2C, 0x09, 0x15, 
47376
  0x00, 0x35, 0x06, 0x09, 0x00, 0x49, 0x07, 0x01, 0x07, 0x1C, 0xF8, 0xFF, 0xFF, 0x2C, 0x06, 0x16, 
47377
  0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x07, 0x17, 0x00, 0x35, 0x06, 0x07, 0x00, 0x2D, 0x07, 0x01, 
47378
  0x0D, 0x32, 0x07, 0x05, 0x00, 0x2C, 0x07, 0x18, 0x00, 0x36, 0x07, 0x00, 0x00, 0x00, 0xBF, 0xFF, 
47379
  0x91, 0x3D, 0x07, 0x00, 0x07, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x14, 0x00, 
47380
  0x14, 0x00, 0x14, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 
47381
  0x1F, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x17, 0x00, 
47382
  0x17, 0x00, 0x17, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 
47383
  0x07, 0x01, 0x2D, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x00, 
47384
  0x09, 0x00, 0x09, 0x01, 0x30, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x16, 0x00, 
47385
  0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x09, 0x01, 0x09, 0x00, 0x09, 0x00, 0x09, 0x01, 0x31, 0x00, 
47386
  0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x31, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0xBF, 0xFF, 0x09, 
47387
  0x00, 0x09, 0x00, 0x09, 0x00, 0x09, 0x03, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x21, 0x00, 0x21, 
47388
  0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x13, 0x01, 0x22, 0x00, 0x22, 0x00, 0x22, 0x00, 0x22, 
47389
  0x00, 0x22, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0x01, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 0x00, 0x2E, 
47390
  0x00, 0x2E, 0x00, 0x13, 0x00, 0x13, 0x00, 0x13, 0xBF, 0xFB, 0x09, 0x06, 0x0B, 0x00, 0x0B, 0x00, 
47391
  0x0B, 0x00, 0x0B, 0xBF, 0xF7, 0x07, 0x00, 0x07, 0x0A, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
47392
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x21, 0x00, 0x21, 
47393
  0x00, 0x21, 0x00, 0x21, 0x00, 0x07, 0x00, 0x07, 0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 
47394
  0x01, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x91, 0x35, 0x05, 0x01, 0x0E, 0x00, 0x0E, 0x00, 
47395
  0x0E, 0x00, 0x05, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x05, 0x01, 
47396
  0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47397
  0x05, 0x00, 0x05, 0x01, 0x0C, 0x00, 0x0C, 0x00, 0x05, 0x01, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 
47398
  0x0F, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x01, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 0x17, 0x00, 
47399
  0x17, 0x00, 0x17, 0x00, 0x05, 0x01, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47400
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 
47401
  0x05, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x0D, 0x00, 0x05, 0xBF, 0xF3, 0x03, 
47402
  0x97, 0x24, 0x00, 0x00, 0xDB, 0x01, 0xDA, 0x8D, 0x29, 0xDA, 0x88, 0x34, 0xDA, 0x84, 0x28, 0xC9, 
47403
  0xDA, 0x8C, 0xDE, 0xC9, 0xC9, 0xC9, 0xC9, 0xC9, 0xDA, 0x82, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47404
  0x03, 0x00, 0xDA, 0x4C, 0x88, 0x7E, 0x01, 0xDA, 0x06, 0xCE, 0x54, 0x28, 0x6F, 0x73, 0x2F, 0x72, 
47405
  0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x52, 
47406
  0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 
47407
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x6C, 
47408
  0x69, 0x6E, 0x6B, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x77, 0x6F, 
47409
  0x72, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0x0A, 0xDA, 
47410
  0x08, 0xDA, 0x82, 0x43, 0xDA, 0x82, 0x44, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
47411
  0x81, 0x0E, 0x01, 0xDA, 0x06, 0xCE, 0x32, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x6F, 0x73, 
47412
  0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
47413
  0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x63, 0x6F, 0x73, 
47414
  0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x45, 0xDA, 0x82, 
47415
  0x46, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x4D, 0x01, 0xDA, 0x06, 0xCE, 
47416
  0x3E, 0x28, 0x65, 0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x64, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 
47417
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 
47418
  0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x64, 0x73, 
47419
  0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 
47420
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x82, 0x47, 0xDA, 0x82, 0x64, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47421
  0x00, 0xDA, 0x04, 0x83, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x1E, 0x28, 0x65, 0x76, 0x65, 0x6E, 0x3F, 
47422
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
47423
  0x69, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x65, 0xDA, 0x82, 0x6F, 
47424
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x11, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 
47425
  0x65, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x63, 0x80, 0xD2, 0x01, 0xDA, 0x06, 0xCE, 
47426
  0x7F, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x70, 0x72, 
47427
  0x6F, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x26, 0x20, 0x6B, 0x76, 0x73, 0x29, 
47428
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
47429
  0x74, 0x75, 0x72, 0x65, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
47430
  0x65, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x63, 
47431
  0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x73, 
47432
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x70, 0x72, 
47433
  0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2E, 
47434
  0xDA, 0x08, 0xDA, 0x82, 0x70, 0xDA, 0x82, 0x71, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47435
  0x80, 0xA1, 0x81, 0x87, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x39, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 
47436
  0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 
47437
  0x75, 0x62, 0x73, 0x74, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 
47438
  0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6F, 0x63, 0x63, 
47439
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 
47440
  0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 
47441
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 
47442
  0x72, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 
47443
  0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 
47444
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
47445
  0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 
47446
  0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x66, 
47447
  0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 
47448
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 
47449
  0x61, 0x6C, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 
47450
  0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 
47451
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 
47452
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 
47453
  0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 
47454
  0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x73, 0x74, 
47455
  0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x72, 0xDA, 0x82, 0x73, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47456
  0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x61, 0x72, 0x72, 
47457
  0x61, 0x79, 0x2E, 0x63, 0x80, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x53, 0x28, 0x61, 0x72, 0x72, 0x61, 
47458
  0x79, 0x2F, 0x70, 0x65, 0x65, 0x6B, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
47459
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 
47460
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 
47461
  0x61, 0x79, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x6F, 0x64, 
47462
  0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 
47463
  0xDA, 0x82, 0x74, 0xDA, 0x82, 0x75, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 
47464
  0x2D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x9C, 0x28, 0x66, 0x6F, 0x72, 0x76, 0x20, 0x69, 0x20, 0x73, 
47465
  0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
47466
  0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 0x20, 0x43, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x20, 
47467
  0x66, 0x6F, 0x72, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x64, 
47468
  0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x69, 
47469
  0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 
47470
  0x65, 0x20, 0x60, 0x69, 0x60, 0x0A, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x75, 0x74, 
47471
  0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
47472
  0x2C, 0x20, 0x75, 0x6E, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 
47473
  0x60, 0x66, 0x6F, 0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 
47474
  0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x82, 0x76, 0xDA, 0x82, 0x8A, 0xD3, 0x03, 
47475
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1A, 
47476
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 
47477
  0x61, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 
47478
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x63, 
47479
  0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x73, 
47480
  0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 
47481
  0x69, 0x73, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 
47482
  0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
47483
  0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x65, 0x64, 0x69, 0x63, 0x61, 
47484
  0x74, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 
47485
  0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 
47486
  0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 
47487
  0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 
47488
  0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
47489
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
47490
  0x64, 0x75, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x77, 0x68, 
47491
  0x69, 0x63, 0x68, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 
47492
  0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x74, 
47493
  0x68, 0x65, 0x20, 0x63, 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x8B, 0xDA, 
47494
  0x82, 0x8C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 0x63, 0x2F, 0x63, 
47495
  0x6F, 0x72, 0x65, 0x2F, 0x65, 0x76, 0x2E, 0x63, 0x84, 0x94, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 
47496
  0x28, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
47497
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 
47498
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 
47499
  0x6E, 0x65, 0x6C, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
47500
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 
47501
  0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
47502
  0x20, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
47503
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x69, 0x66, 
47504
  0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 
47505
  0x65, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 
47506
  0x69, 0x73, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x8D, 0xDA, 0x82, 0x8E, 0xD3, 0x03, 0xDA, 0x03, 
47507
  0xD2, 0x03, 0x00, 0xDA, 0x21, 0x80, 0x91, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x6D, 0x61, 0x74, 
47508
  0x68, 0x2F, 0x72, 0x6E, 0x67, 0x2D, 0x75, 0x6E, 0x69, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x72, 0x6E, 
47509
  0x67, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x61, 0x20, 0x72, 0x61, 
47510
  0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 
47511
  0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x30, 0x2C, 0x20, 0x31, 0x29, 0x20, 
47512
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x4E, 0x47, 0x2E, 0xDA, 0x08, 0xDA, 
47513
  0x82, 0x8F, 0xCF, 0x06, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47514
  0x00, 0xDA, 0x21, 0x81, 0xAC, 0x01, 0xDA, 0x06, 0xCE, 0x1C, 0x54, 0x68, 0x65, 0x20, 0x62, 0x61, 
47515
  0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x61, 
47516
  0x6C, 0x20, 0x6C, 0x6F, 0x67, 0x2E, 0xDA, 0x08, 0xC8, 0x69, 0x57, 0x14, 0x8B, 0x0A, 0xBF, 0x05, 
47517
  0x40, 0xDA, 0x82, 0x90, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x25, 0x01, 
47518
  0xDA, 0x06, 0xCE, 0x81, 0x61, 0x28, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x20, 0x78, 0x20, 0x26, 0x6F, 
47519
  0x70, 0x74, 0x20, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x29, 0x0A, 0x0A, 
47520
  0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x63, 0x6F, 
47521
  0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x6C, 0x79, 0x2E, 0x0A, 0x60, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 
47522
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 
47523
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x66, 
47524
  0x6F, 0x72, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x65, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x6E, 0x6F, 
47525
  0x72, 0x6D, 0x61, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x62, 0x69, 
47526
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x69, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 
47527
  0x65, 0x72, 0x65, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
47528
  0x73, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x61, 0x73, 0x69, 
47529
  0x6C, 0x79, 0x20, 0x73, 0x65, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
47530
  0x6E, 0x67, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x69, 
47531
  0x72, 0x0A, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x62, 0x79, 0x20, 0x63, 
47532
  0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x60, 0x20, 0x6F, 
47533
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 
47534
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 
47535
  0x73, 0x65, 0x6C, 0x66, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x0A, 0x72, 0x65, 0x70, 
47536
  0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 
47537
  0x75, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 
47538
  0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 
47539
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x64, 0x20, 
47540
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x91, 0xDA, 0x82, 0xE5, 0xD3, 0x03, 
47541
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0xAB, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 0x28, 
47542
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x62, 0x69, 0x6E, 0x20, 0x6D, 
47543
  0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 
47544
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 
47545
  0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 
47546
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x22, 0x62, 0x69, 0x6E, 0x22, 0x20, 0x73, 
47547
  0x75, 0x62, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 
47548
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x79, 0x73, 0x70, 0x61, 
47549
  0x74, 0x68, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x0A, 
47550
  0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 
47551
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 
47552
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xE6, 0xDA, 0x82, 0xFC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47553
  0x03, 0x00, 0xDA, 0x80, 0x95, 0x82, 0x51, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA6, 0x28, 0x6E, 0x65, 
47554
  0x74, 0x2F, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x79, 
47555
  0x70, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 
47556
  0x65, 0x77, 0x20, 0x75, 0x6E, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 
47557
  0x74, 0x2E, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
47558
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2C, 0x20, 
47559
  0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
47560
  0x20, 0x28, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x63, 0x70, 0x29, 0x2C, 0x20, 
47561
  0x6F, 0x72, 0x20, 0x3A, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x28, 0x75, 0x73, 
47562
  0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x75, 0x64, 0x70, 0x29, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
47563
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 
47564
  0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xFD, 0xDA, 0x82, 0xFE, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
47565
  0x03, 0x00, 0xDA, 0x04, 0x80, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x2F, 0x3D, 0x20, 0x78, 
47566
  0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 
47567
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 0x20, 0x28, 0x2F, 0x20, 
47568
  0x78, 0x20, 0x6E, 0x29, 0x29, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x82, 0xFF, 0xDA, 0x83, 
47569
  0x03, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x91, 0x01, 0xDA, 0x06, 0xCE, 
47570
  0x24, 0x28, 0x6E, 0x65, 0x67, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
47571
  0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 
47572
  0x61, 0x6E, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x04, 0xDA, 0x80, 0xB4, 0xD3, 0x03, 0xDA, 
47573
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xED, 0x03, 0xDA, 0x06, 0xCE, 0x29, 0x28, 0x6E, 0x65, 
47574
  0x74, 0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 
47575
  0x0A, 0x41, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x63, 
47576
  0x6C, 0x6F, 0x73, 0x65, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x06, 0xDA, 0x83, 0x0A, 0xD3, 0x03, 
47577
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x80, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 
47578
  0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 
47579
  0x65, 0x73, 0x20, 0x26, 0x20, 0x62, 0x79, 0x74, 0x65, 0x2D, 0x76, 0x61, 0x6C, 0x73, 0x29, 0x0A, 
47580
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
47581
  0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x70, 
47582
  0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 
47583
  0x79, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 
47584
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
47585
  0x20, 0x63, 0x6F, 0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
47586
  0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x31, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
47587
  0x30, 0x2D, 0x32, 0x35, 0x35, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x0B, 0xDA, 0x83, 0x0C, 0xD3, 0x02, 
47588
  0xDA, 0x06, 0xCE, 0x80, 0x99, 0x28, 0x63, 0x6D, 0x70, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 
47589
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x2D, 0x31, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
47590
  0x69, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x6C, 0x65, 0x73, 0x73, 
47591
  0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x79, 0x2C, 0x20, 0x31, 0x20, 0x69, 0x66, 0x20, 0x79, 0x20, 
47592
  0x69, 0x73, 0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x67, 0x72, 0x65, 0x61, 
47593
  0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47594
  0x30, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2E, 0x20, 0x54, 0x6F, 0x20, 
47595
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x2C, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47596
  0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 
47597
  0x61, 0x63, 0x74, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x08, 
47598
  0xDA, 0x83, 0x0D, 0xDA, 0x83, 0x0F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 
47599
  0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x66, 0x69, 0x2E, 0x63, 0x86, 0xDD, 0x01, 
47600
  0xDA, 0x06, 0xCE, 0x81, 0x1C, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 
47601
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x61, 
47602
  0x64, 0x20, 0x61, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 
47603
  0x74, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x6C, 0x6C, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 
47604
  0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x61, 0x6E, 
47605
  0x64, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 
47606
  0x20, 0x6F, 0x72, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 0x6F, 0x64, 0x65, 
47607
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 
47608
  0x73, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x6E, 
47609
  0x20, 0x60, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
47610
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 
47611
  0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x74, 0x6F, 
47612
  0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 
47613
  0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x69, 
47614
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
47615
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 
47616
  0x20, 0x62, 0x69, 0x6E, 0x61, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47617
  0x20, 0x61, 0x20, 0x60, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x60, 
47618
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x10, 0xDA, 0x82, 0x97, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47619
  0xDA, 0x04, 0x68, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x3F, 
47620
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
47621
  0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 
47622
  0x95, 0xDA, 0x83, 0x11, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x80, 0xD0, 
47623
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x90, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 
47624
  0x77, 0x2D, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 
47625
  0x6F, 0x70, 0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
47626
  0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
47627
  0x6F, 0x66, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x60, 0x63, 0x6F, 0x75, 0x6E, 0x74, 
47628
  0x60, 0x20, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x62, 
47629
  0x79, 0x74, 0x65, 0x60, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
47630
  0x2C, 0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2E, 0x20, 0x52, 
47631
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 
47632
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x12, 0xDA, 0x83, 0x13, 0xD3, 0x03, 
47633
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xBE, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAF, 0x28, 
47634
  0x6D, 0x61, 0x63, 0x6C, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x66, 
47635
  0x6D, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x57, 0x68, 0x65, 0x6E, 
47636
  0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2C, 
47637
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
47638
  0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 
47639
  0x74, 0x65, 0x72, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x54, 0x61, 0x6B, 
47640
  0x65, 0x73, 0x0A, 0x61, 0x20, 0x60, 0x66, 0x6D, 0x74, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
47641
  0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
47642
  0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
47643
  0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
47644
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0xDA, 0x08, 
47645
  0xDA, 0x83, 0x14, 0xDA, 0x83, 0x1F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 
47646
  0x8D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x86, 0x28, 0x6F, 0x73, 0x2F, 0x74, 0x69, 0x6D, 0x65, 0x29, 
47647
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
47648
  0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 
47649
  0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 
47650
  0x66, 0x20, 0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 
47651
  0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x75, 0x61, 0x72, 0x79, 0x20, 0x31, 0x2C, 
47652
  0x20, 0x31, 0x39, 0x37, 0x30, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 
47653
  0x65, 0x70, 0x6F, 0x63, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
47654
  0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 
47655
  0x83, 0x20, 0xDA, 0x83, 0x21, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xBB, 
47656
  0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
47657
  0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 
47658
  0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 
47659
  0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
47660
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x22, 0xDA, 0x83, 
47661
  0x29, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x94, 0x01, 0xDA, 0x06, 0xCE, 
47662
  0x1C, 0x28, 0x6F, 0x64, 0x64, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
47663
  0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x64, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 
47664
  0x83, 0x2A, 0xDA, 0x83, 0x2C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0D, 0x73, 0x72, 
47665
  0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x69, 0x6F, 0x2E, 0x63, 0x82, 0xA1, 0x01, 0xDA, 0x06, 
47666
  0xCE, 0x5F, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x6D, 
47667
  0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x70, 
47668
  0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 
47669
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 
47670
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 
47671
  0x74, 0x6F, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
47672
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x2D, 0xDA, 0x83, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47673
  0xDA, 0x80, 0x95, 0x83, 0x4E, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 
47674
  0x6F, 0x63, 0x61, 0x6C, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 
47675
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 
47676
  0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 
47677
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 
47678
  0x74, 0x68, 0x61, 0x74, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x2F, 
47679
  0xDA, 0x83, 0x30, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x59, 0x01, 0xDA, 
47680
  0x06, 0xCE, 0x3D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x63, 0x6D, 0x20, 0x78, 0x20, 0x79, 
47681
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
47682
  0x65, 0x61, 0x73, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x6D, 0x75, 0x6C, 0x74, 
47683
  0x69, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x79, 0x2E, 
47684
  0xDA, 0x08, 0xDA, 0x83, 0x31, 0xDA, 0x83, 0x32, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47685
  0x04, 0x87, 0x64, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x73, 
47686
  0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 
47687
  0x20, 0x60, 0x70, 0x70, 0x60, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0xDA, 0x86, 
47688
  0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x33, 0xDA, 0x83, 0x34, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47689
  0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x74, 0x61, 0x62, 0x6C, 
47690
  0x65, 0x2E, 0x63, 0x81, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE8, 0x28, 0x74, 0x61, 0x62, 0x6C, 
47691
  0x65, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x20, 0x74, 0x61, 0x62, 0x20, 0x6B, 0x65, 0x79, 
47692
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
47693
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 
47694
  0x62, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x69, 
47695
  0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 
47696
  0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x74, 
47697
  0x61, 0x62, 0x60, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 
47698
  0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x64, 0x69, 0x72, 
47699
  0x65, 0x63, 0x74, 0x6C, 0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
47700
  0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
47701
  0x6E, 0x69, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 0x68, 0x65, 0x63, 
47702
  0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
47703
  0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
47704
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 
47705
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xD2, 0xDA, 0x83, 0x35, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47706
  0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x5A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xFD, 0x28, 0x65, 0x76, 
47707
  0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 
47708
  0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x6C, 
47709
  0x6F, 0x63, 0x6B, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 
47710
  0x69, 0x73, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 
47711
  0x74, 0x65, 0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
47712
  0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x69, 
47713
  0x74, 0x68, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x69, 
47714
  0x73, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
47715
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x69, 0x73, 
47716
  0x20, 0x65, 0x6E, 0x74, 0x69, 0x72, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x75, 
47717
  0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x62, 0x65, 
47718
  0x63, 0x6F, 0x6D, 0x65, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2C, 
47719
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x79, 0x69, 
47720
  0x65, 0x6C, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x66, 0x69, 0x62, 
47721
  0x65, 0x72, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x79, 0x73, 0x74, 
47722
  0x65, 0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x36, 0xDA, 
47723
  0x83, 0x37, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x12, 0x73, 0x72, 0x63, 0x2F, 0x63, 
47724
  0x6F, 0x72, 0x65, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x6C, 0x69, 0x62, 0x2E, 0x63, 0x82, 0xAB, 0x01, 
47725
  0xDA, 0x06, 0xCE, 0x31, 0x28, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x3F, 
47726
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
47727
  0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 
47728
  0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x38, 0xDA, 0x83, 0x39, 0xD3, 0x04, 0xDA, 
47729
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0xAA, 0x01, 0xDA, 0x06, 0xCE, 0x43, 0x57, 0x68, 0x65, 
47730
  0x74, 0x68, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 
47731
  0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
47732
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 
47733
  0x74, 0x68, 0x20, 0x60, 0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2E, 
47734
  0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x3A, 0xDA, 0x83, 0x3B, 0xD3, 0x02, 0xDA, 0x06, 
47735
  0xCE, 0x59, 0x28, 0x62, 0x78, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 
47736
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x77, 
47737
  0x69, 0x73, 0x65, 0x20, 0x78, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 
47738
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 
47739
  0x68, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 
47740
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x3C, 
47741
  0xDA, 0x83, 0x3E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x33, 0x01, 0xDA, 
47742
  0x06, 0xCE, 0x3E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x68, 0x79, 0x70, 0x6F, 0x74, 0x20, 0x61, 
47743
  0x20, 0x62, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x63, 0x20, 0x66, 
47744
  0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x71, 0x75, 0x61, 0x74, 0x69, 0x6F, 0x6E, 
47745
  0x20, 0x63, 0x5E, 0x32, 0x20, 0x3D, 0x20, 0x61, 0x5E, 0x32, 0x20, 0x2B, 0x20, 0x62, 0x5E, 0x32, 
47746
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x3F, 0xDA, 0x83, 0x40, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
47747
  0xDA, 0x04, 0x91, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x4B, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 
47748
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
47749
  0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 
47750
  0x61, 0x6E, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
47751
  0x74, 0x73, 0x20, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x73, 0x74, 
47752
  0x61, 0x72, 0x74, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x41, 0xDA, 0x83, 0x42, 
47753
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 0x62, 0x28, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x66, 
47754
  0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
47755
  0x73, 0x75, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x75, 
47756
  0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 
47757
  0x64, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 
47758
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 
47759
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
47760
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 
47761
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 
47762
  0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 
47763
  0x20, 0x61, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
47764
  0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
47765
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 
47766
  0x68, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
47767
  0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
47768
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x65, 
47769
  0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
47770
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
47771
  0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x20, 
47772
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 
47773
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
47774
  0x6E, 0x65, 0x78, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 
47775
  0x69, 0x6E, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x43, 0xDA, 0x83, 
47776
  0x45, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xBD, 0x01, 0xDA, 0x06, 0xCE, 
47777
  0x80, 0xC0, 0x28, 0x65, 0x76, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x26, 0x6F, 0x70, 
47778
  0x74, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
47779
  0x73, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
47780
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
47781
  0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 
47782
  0x74, 0x72, 0x6F, 0x6C, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6E, 
47783
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 
47784
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 
47785
  0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
47786
  0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x60, 0x65, 
47787
  0x6E, 0x76, 0x60, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
47788
  0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
47789
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x46, 0xDA, 0x83, 0x4B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
47790
  0x00, 0xDA, 0x04, 0x8C, 0x9F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 0x61, 0x6C, 0x6C, 0x2D, 
47791
  0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 
47792
  0x76, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6C, 
47793
  0x6C, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
47794
  0x67, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
47795
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 
47796
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x0A, 0x66, 0x69, 
47797
  0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
47798
  0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 
47799
  0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 
47800
  0x74, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 0x64, 
47801
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x0A, 0x28, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
47802
  0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 
47803
  0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x4C, 0xDA, 0x83, 0x69, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 
47804
  0xF4, 0x28, 0x62, 0x72, 0x75, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 0x26, 0x20, 0x73, 
47805
  0x68, 0x69, 0x66, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47806
  0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x62, 
47807
  0x69, 0x74, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 
47808
  0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 
47809
  0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 
47810
  0x66, 0x74, 0x73, 0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 
47811
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 
47812
  0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 
47813
  0x67, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x20, 0x6F, 0x66, 
47814
  0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 
47815
  0x76, 0x65, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x70, 0x6F, 0x73, 0x69, 
47816
  0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
47817
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6C, 
47818
  0x6C, 0x20, 0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 0x20, 0x62, 0x65, 0x20, 0x70, 0x6F, 0x73, 0x69, 
47819
  0x74, 0x69, 0x76, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x6A, 0xDA, 0x83, 0x6C, 0xD3, 0x03, 0xDA, 
47820
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x80, 0xAC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 0x28, 
47821
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x66, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x72, 0x20, 0x26, 
47822
  0x6F, 0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 
47823
  0x61, 0x63, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
47824
  0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 
47825
  0x68, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x20, 0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 
47826
  0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x29, 0x20, 0x77, 0x69, 
47827
  0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x74, 
47828
  0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
47829
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47830
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 
47831
  0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x6D, 0xDA, 0x83, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47832
  0x03, 0x00, 0xDA, 0x04, 0x86, 0x5A, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1B, 0x28, 0x75, 0x70, 0x64, 
47833
  0x61, 0x74, 0x65, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 0x20, 0x66, 0x20, 0x26, 
47834
  0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 
47835
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 
47836
  0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
47837
  0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x4C, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 
47838
  0x74, 0x6F, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x76, 0x69, 0x61, 0x20, 0x61, 0x20, 0x73, 0x65, 
47839
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2C, 0x0A, 
47840
  0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 
47841
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 
47842
  0x72, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x66, 0x60, 0x20, 0x61, 0x70, 0x70, 0x6C, 
47843
  0x69, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 
47844
  0x65, 0x2E, 0x0A, 0x4D, 0x69, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
47845
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
47846
  0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
47847
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
47848
  0x0A, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x6F, 
47849
  0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
47850
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x6F, 0xDA, 0x83, 0x78, 0xD3, 
47851
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xDE, 0x81, 0x78, 0x01, 0xDA, 0x06, 0xCE, 0x54, 
47852
  0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
47853
  0x20, 0x74, 0x61, 0x62, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x29, 
47854
  0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 
47855
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x20, 0x52, 
47856
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 
47857
  0x75, 0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x69, 0xDA, 0x83, 0x79, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47858
  0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 0xD6, 0x01, 0xDA, 0x06, 0xCE, 0x6E, 0x28, 0x65, 0x76, 0x2F, 
47859
  0x74, 0x6F, 0x2D, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
47860
  0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 
47861
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 
47862
  0x68, 0x69, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
47863
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
47864
  0x69, 0x6E, 0x67, 0x20, 0x49, 0x4F, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6F, 0x72, 0x20, 
47865
  0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x7A, 0xDA, 
47866
  0x83, 0x7B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xE5, 0x01, 0xDA, 0x06, 
47867
  0xCE, 0x80, 0xC8, 0x28, 0x65, 0x76, 0x61, 0x6C, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
47868
  0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 
47869
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
47870
  0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
47871
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 
47872
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x20, 0x6F, 0x76, 
47873
  0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
47874
  0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x75, 0x73, 
47875
  0x65, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x2E, 
47876
  0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 
47877
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x60, 0x65, 0x6E, 0x76, 0x60, 0x20, 0x74, 0x61, 0x62, 
47878
  0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 
47879
  0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x7C, 
47880
  0xDA, 0x83, 0x83, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x13, 0x01, 0xDA, 
47881
  0x06, 0xCE, 0x27, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x61, 0x6E, 0x20, 0x78, 0x29, 0x0A, 
47882
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x6E, 
47883
  0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x84, 0xDA, 
47884
  0x83, 0x85, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x70, 0x01, 0xDA, 0x06, 
47885
  0xCE, 0x80, 0xCD, 0x28, 0x70, 0x75, 0x74, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 
47886
  0x20, 0x76, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
47887
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 
47888
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 
47889
  0x73, 0x60, 0x2E, 0x20, 0x4C, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x60, 
47890
  0x64, 0x73, 0x60, 0x20, 0x76, 0x69, 0x61, 0x0A, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
47891
  0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2E, 0x20, 0x4D, 0x69, 0x73, 0x73, 
47892
  0x69, 0x6E, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
47893
  0x72, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 
47894
  0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 
47895
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
47896
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 
47897
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 
47898
  0xDA, 0x08, 0xDA, 0x83, 0x86, 0xDA, 0x83, 0x89, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
47899
  0x04, 0x84, 0xEF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB5, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x20, 0x6E, 
47900
  0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x44, 0x72, 0x6F, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 
47901
  0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
47902
  0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 
47903
  0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 
47904
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 
47905
  0x70, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x69, 0x6E, 
47906
  0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 
47907
  0x76, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x20, 
47908
  0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x64, 0x72, 0x6F, 0x70, 0x73, 0x20, 
47909
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 0x65, 
47910
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2E, 0xDA, 0x08, 
47911
  0xDA, 0x83, 0x8A, 0xDA, 0x83, 0x9D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xDE, 
47912
  0x81, 0x9F, 0x01, 0xDA, 0x06, 0xCE, 0x6C, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x70, 0x72, 
47913
  0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x74, 0x61, 0x62, 0x29, 
47914
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 
47915
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 
47916
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x69, 
47917
  0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 
47918
  0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 
47919
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x9E, 0xDA, 0x83, 0x9F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47920
  0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0xD7, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xDA, 0x28, 0x6E, 0x65, 
47921
  0x74, 0x2F, 0x73, 0x65, 0x6E, 0x64, 0x2D, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
47922
  0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
47923
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 
47924
  0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x74, 0x6F, 0x20, 0x61, 
47925
  0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 
47926
  0x64, 0x65, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 
47927
  0x73, 0x74, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 
47928
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x2E, 
47929
  0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
47930
  0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 
47931
  0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 
47932
  0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 
47933
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
47934
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xA0, 0xDA, 0x83, 0xA1, 0xD3, 
47935
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE4, 
47936
  0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x79, 0x6E, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
47937
  0x6E, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 
47938
  0x20, 0x61, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 
47939
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 
47940
  0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x0A, 0x64, 0x79, 
47941
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x73, 
47942
  0x65, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 
47943
  0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 
47944
  0x72, 0x73, 0x0A, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x2C, 0x20, 0x62, 
47945
  0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 
47946
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
47947
  0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x6C, 0x79, 0x0A, 0x75, 0x6E, 0x73, 0x65, 0x74, 0x2C, 0x20, 
47948
  0x61, 0x73, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
47949
  0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x6C, 0x6F, 
47950
  0x63, 0x61, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0xA2, 0xDA, 0x83, 0xAC, 0xD3, 
47951
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x9D, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 
47952
  0x28, 0x62, 0x79, 0x74, 0x65, 0x73, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 
47953
  0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 
47954
  0x6E, 0x67, 0x2C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x6B, 0x65, 0x79, 0x77, 
47955
  0x6F, 0x72, 0x64, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 
47956
  0x08, 0xDA, 0x3C, 0xDA, 0x81, 0x25, 0xCE, 0x14, 0x2F, 0x75, 0x73, 0x72, 0x2F, 0x6C, 0x6F, 0x63, 
47957
  0x61, 0x6C, 0x2F, 0x6C, 0x69, 0x62, 0x2F, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0xDA, 0x81, 0x79, 0xD3, 
47958
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x5A, 0x01, 0xDA, 0x06, 0xCE, 0x68, 0x28, 
47959
  0x73, 0x70, 0x69, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 
47960
  0x74, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x57, 
47961
  0x72, 0x69, 0x74, 0x65, 0x20, 0x60, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x60, 0x20, 
47962
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x74, 0x20, 0x60, 0x70, 0x61, 
47963
  0x74, 0x68, 0x60, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
47964
  0x6C, 0x6C, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
47965
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x72, 0xDA, 0x83, 0xAD, 0xD3, 
47966
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 
47967
  0x6D, 0x61, 0x78, 0x2D, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
47968
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 
47969
  0x63, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
47970
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 
47971
  0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xAE, 0xDA, 0x83, 0xB0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
47972
  0x03, 0x00, 0xDA, 0x04, 0x8F, 0x54, 0x03, 0xDA, 0x06, 0xCE, 0x81, 0x0E, 0x28, 0x6E, 0x65, 0x74, 
47973
  0x2F, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 
47974
  0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x74, 
47975
  0x79, 0x70, 0x65, 0x20, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x75, 0x73, 0x65, 0x29, 0x0A, 0x0A, 0x53, 
47976
  0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x77, 
47977
  0x69, 0x74, 0x68, 0x20, 0x60, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x60, 
47978
  0x2E, 0x20, 0x52, 0x75, 0x6E, 0x73, 0x20, 0x60, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 
47979
  0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x61, 0x73, 0x79, 0x6E, 0x63, 0x68, 0x72, 
47980
  0x6F, 0x6E, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x0A, 0x60, 0x68, 0x61, 0x6E, 0x64, 
47981
  0x6C, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 
47982
  0x60, 0x74, 0x79, 0x70, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x60, 0x3A, 0x73, 0x74, 0x72, 0x65, 
47983
  0x61, 0x6D, 0x60, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
47984
  0x29, 0x2E, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 
47985
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x74, 0x0A, 0x60, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 
47986
  0x60, 0x20, 0x69, 0x66, 0x20, 0x60, 0x74, 0x79, 0x70, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x60, 
47987
  0x3A, 0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
47988
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x65, 0x72, 0x76, 
47989
  0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xB1, 0xDA, 
47990
  0x83, 0xBE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x86, 0x75, 0x01, 0xDA, 
47991
  0x06, 0xCE, 0x80, 0xB1, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x6F, 
47992
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 
47993
  0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 
47994
  0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x61, 
47995
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 
47996
  0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
47997
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
47998
  0x69, 0x65, 0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 
47999
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x61, 
48000
  0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
48001
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x74, 
48002
  0x79, 0x70, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xBF, 0xDA, 0x83, 0xC0, 0xD3, 0x03, 0xDA, 
48003
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0xC6, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA8, 0x28, 0x6F, 
48004
  0x73, 0x2F, 0x64, 0x69, 0x72, 0x20, 0x64, 0x69, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x61, 
48005
  0x72, 0x72, 0x61, 0x79, 0x29, 0x0A, 0x0A, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 
48006
  0x76, 0x65, 0x72, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x75, 
48007
  0x62, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 
48008
  0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 
48009
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 
48010
  0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x2C, 0x20, 0x77, 0x69, 
48011
  0x74, 0x68, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 
48012
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 
48013
  0x72, 0x79, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x70, 
48014
  0x72, 0x65, 0x66, 0x69, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xF1, 0xDA, 0x83, 0xC1, 0xD3, 0x03, 
48015
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xDD, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xC7, 0x28, 
48016
  0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x20, 0x69, 0x6E, 
48017
  0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x64, 0x75, 0x63, 0x65, 0x2C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 
48018
  0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x64, 0x2D, 0x6C, 0x65, 
48019
  0x66, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x6C, 0x61, 0x6E, 0x67, 0x75, 
48020
  0x61, 0x67, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x73, 
48021
  0x0A, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 
48022
  0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x29, 0x20, 
48023
  0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
48024
  0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 
48025
  0x75, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 
48026
  0x66, 0x60, 0x20, 0x74, 0x6F, 0x0A, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
48027
  0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x60, 0x66, 0x60, 
48028
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
48029
  0x66, 0x20, 0x32, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x60, 
48030
  0x28, 0x66, 0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x20, 0x65, 0x6C, 0x29, 0x60, 0x2C, 0x20, 0x77, 
48031
  0x68, 0x65, 0x72, 0x65, 0x0A, 0x60, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 
48032
  0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48033
  0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
48034
  0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 
48035
  0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 
48036
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x0A, 0x60, 0x66, 0x60, 0x20, 0x72, 0x65, 0x74, 0x75, 
48037
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
48038
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 
48039
  0x20, 0x60, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
48040
  0x6E, 0x65, 0x78, 0x74, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x60, 
48041
  0x2E, 0x20, 0x60, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x60, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 
48042
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48043
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 
48044
  0x6F, 0x20, 0x60, 0x66, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xC2, 0xDA, 0x83, 0xC9, 0xD3, 0x03, 
48045
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0x97, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0xB1, 0x28, 
48046
  0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 
48047
  0x74, 0x20, 0x74, 0x61, 0x62, 0x7C, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 
48048
  0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 
48049
  0x75, 0x74, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 
48050
  0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
48051
  0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
48052
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 
48053
  0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 
48054
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
48055
  0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
48056
  0x73, 0x74, 0x61, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
48057
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x64, 
48058
  0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x2C, 0x20, 0x72, 
48059
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
48060
  0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 
48061
  0x76, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x74, 
48062
  0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 
48063
  0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 
48064
  0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 
48065
  0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x3A, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x3A, 0x64, 
48066
  0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2C, 0x20, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
48067
  0x2C, 0x20, 0x3A, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x3A, 0x66, 
48068
  0x69, 0x66, 0x6F, 0x2C, 0x20, 0x3A, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2C, 0x20, 0x3A, 0x6C, 
48069
  0x69, 0x6E, 0x6B, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x0A, 0x0A, 
48070
  0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x2D, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 
48071
  0x6E, 0x73, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x70, 0x65, 0x72, 0x6D, 
48072
  0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6C, 
48073
  0x69, 0x6B, 0x65, 0x20, 0x38, 0x72, 0x37, 0x34, 0x34, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 
48074
  0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x2D, 0x20, 0x41, 0x20, 0x55, 0x6E, 
48075
  0x69, 0x78, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 
48076
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x22, 0x72, 0x77, 0x78, 0x72, 0x2D, 
48077
  0x2D, 0x72, 0x2D, 0x2D, 0x22, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x69, 0x64, 0x20, 0x2D, 0x20, 
48078
  0x46, 0x69, 0x6C, 0x65, 0x20, 0x75, 0x69, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x67, 0x69, 0x64, 
48079
  0x20, 0x2D, 0x20, 0x46, 0x69, 0x6C, 0x65, 0x20, 0x67, 0x69, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
48080
  0x6E, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 
48081
  0x66, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 
48082
  0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x64, 0x65, 0x76, 0x20, 0x2D, 0x20, 0x52, 0x65, 0x61, 0x6C, 0x20, 
48083
  0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 
48084
  0x30, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 
48085
  0x3A, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x2D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48086
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x0A, 0x0A, 0x2A, 
48087
  0x20, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
48088
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x66, 
48089
  0x69, 0x6C, 0x65, 0x2E, 0x20, 0x30, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 
48090
  0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x69, 0x7A, 0x65, 0x20, 
48091
  0x2D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 
48092
  0x20, 0x69, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x30, 0x20, 0x6F, 0x6E, 0x20, 0x57, 
48093
  0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x63, 0x63, 0x65, 0x73, 
48094
  0x73, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 
48095
  0x77, 0x68, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 
48096
  0x63, 0x63, 0x65, 0x73, 0x73, 0x65, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x68, 0x61, 0x6E, 
48097
  0x67, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 
48098
  0x77, 0x68, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x63, 
48099
  0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x20, 0x28, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 
48100
  0x6F, 0x6E, 0x73, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 
48101
  0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x69, 0x6D, 0x65, 
48102
  0x73, 0x74, 0x61, 0x6D, 0x70, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
48103
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x28, 0x63, 
48104
  0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x64, 0x29, 0x0A, 
48105
  0xDA, 0x08, 0xDA, 0x80, 0xF0, 0xDA, 0x83, 0xCA, 0xD3, 0x04, 0xDA, 0x86, 0x28, 0xDA, 0x86, 0x2A, 
48106
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x55, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x64, 0x65, 
48107
  0x66, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x76, 0x61, 0x6C, 
48108
  0x75, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 
48109
  0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 
48110
  0x20, 0x64, 0x65, 0x66, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xCB, 0xDA, 0x83, 0xD0, 0xD3, 0x03, 0xDA, 
48111
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x26, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x28, 0x6D, 0x61, 
48112
  0x74, 0x68, 0x2F, 0x61, 0x62, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
48113
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x76, 
48114
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xD1, 0xDA, 
48115
  0x83, 0xD2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x26, 0x01, 0xDA, 
48116
  0x06, 0xCE, 0x81, 0x28, 0x28, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
48117
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x61, 0x64, 
48118
  0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
48119
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 
48120
  0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6D, 
48121
  0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 
48122
  0x74, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 
48123
  0x61, 0x74, 0x68, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
48124
  0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x75, 
48125
  0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x2E, 0x73, 0x6F, 0x20, 0x66, 0x69, 0x6C, 
48126
  0x65, 0x20, 0x6F, 0x6E, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 
48127
  0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x2E, 0x64, 0x6C, 0x6C, 0x20, 0x66, 0x69, 
48128
  0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0x20, 0x52, 
48129
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
48130
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
48131
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
48132
  0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 
48133
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 
48134
  0x74, 0x69, 0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 
48135
  0xD3, 0xDA, 0x83, 0xD4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x7C, 
48136
  0x01, 0xDA, 0x06, 0xCE, 0x41, 0x28, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 
48137
  0x29, 0x0A, 0x0A, 0x45, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6E, 
48138
  0x67, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
48139
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 
48140
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xD5, 0xDA, 0x83, 0xD6, 0xD3, 0x03, 
48141
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
48142
  0x64, 0x65, 0x62, 0x75, 0x67, 0x2E, 0x63, 0x80, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x0C, 0x28, 
48143
  0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 
48144
  0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x53, 0x65, 
48145
  0x74, 0x73, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 
48146
  0x69, 0x6E, 0x20, 0x60, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x60, 0x20, 0x61, 0x74, 0x20, 0x61, 
48147
  0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48148
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 
48149
  0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 
48150
  0x68, 0x65, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 
48151
  0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 
48152
  0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 
48153
  0x70, 0x6C, 0x65, 0x0A, 0x0A, 0x09, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x62, 0x72, 0x65, 
48154
  0x61, 0x6B, 0x20, 0x22, 0x63, 0x6F, 0x72, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x22, 0x20, 
48155
  0x31, 0x30, 0x20, 0x34, 0x29, 0x0A, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x65, 0x74, 0x20, 
48156
  0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x61, 0x74, 0x20, 
48157
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x31, 0x30, 0x2C, 0x20, 0x34, 0x74, 0x68, 0x20, 0x63, 0x6F, 0x6C, 
48158
  0x75, 0x6D, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
48159
  0x63, 0x6F, 0x72, 0x65, 0x2E, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xD7, 
48160
  0xDA, 0x83, 0xD8, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xBA, 0x01, 0xDA, 
48161
  0x06, 0xCE, 0x80, 0x9F, 0x42, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 
48162
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6D, 0x65, 
48163
  0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
48164
  0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 
48165
  0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x73, 
48166
  0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x0A, 0x54, 0x6F, 0x20, 
48167
  0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 
48168
  0x72, 0x20, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x61, 0x20, 
48169
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x20, 0x73, 0x68, 0x6F, 
48170
  0x75, 0x6C, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x6C, 0x69, 0x6E, 0x74, 
48171
  0x66, 0x60, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0x16, 0xDA, 0x83, 0xD9, 0xD3, 
48172
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 
48173
  0x2F, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x2E, 0x63, 0x86, 0x9F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBE, 
48174
  0x28, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
48175
  0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x29, 0x0A, 0x0A, 
48176
  0x55, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48177
  0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
48178
  0x20, 0x41, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 
48179
  0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
48180
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 
48181
  0x6F, 0x77, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x65, 0x73, 0x20, 0x74, 
48182
  0x6F, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 0x65, 0x64, 0x2E, 0x20, 0x52, 
48183
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
48184
  0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 
48185
  0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 
48186
  0xDA, 0x83, 0xDA, 0xDA, 0x83, 0xDB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 
48187
  0x82, 0x17, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x67, 0x63, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 
48188
  0x74, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 
48189
  0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x59, 0x6F, 0x75, 0x20, 
48190
  0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x70, 0x72, 0x6F, 0x62, 0x61, 0x62, 0x6C, 0x79, 0x20, 
48191
  0x6E, 0x6F, 0x74, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x61, 
48192
  0x6E, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xDC, 0xDA, 0x83, 0xDD, 0xD3, 
48193
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x29, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x9F, 
48194
  0x28, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x76, 
48195
  0x65, 0x72, 0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 
48196
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
48197
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
48198
  0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
48199
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 
48200
  0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 
48201
  0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 
48202
  0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
48203
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2E, 0xDA, 
48204
  0x08, 0xDA, 0x83, 0xDE, 0xDA, 0x83, 0xEA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
48205
  0xD1, 0x82, 0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x29, 0x0A, 
48206
  0x0A, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 
48207
  0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 
48208
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
48209
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 0x6E, 0x67, 
48210
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xEB, 0xDA, 0x83, 0xEC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48211
  0xDA, 0x80, 0x8F, 0x81, 0x34, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD5, 0x28, 0x62, 0x75, 0x66, 0x66, 
48212
  0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x62, 
48213
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 
48214
  0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 
48215
  0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
48216
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
48217
  0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 
48218
  0x72, 0x69, 0x6E, 0x67, 0x73, 0x2C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 
48219
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x75, 
48220
  0x66, 0x66, 0x65, 0x72, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
48221
  0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 
48222
  0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 
48223
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
48224
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 
48225
  0xDA, 0x08, 0xDA, 0x83, 0xED, 0xDA, 0x83, 0xEE, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 
48226
  0x2F, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48227
  0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x6F, 0x74, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 
48228
  0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 
48229
  0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 0x2E, 0x20, 
48230
  0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x76, 0x61, 
48231
  0x6C, 0x75, 0x65, 0x20, 0x78, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
48232
  0x68, 0x65, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x72, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x6F, 0x66, 
48233
  0x20, 0x78, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 
48234
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 
48235
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 
48236
  0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 
48237
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 
48238
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x01, 0xDA, 0x83, 0xEF, 0xD3, 0x04, 
48239
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x57, 0x01, 0xDA, 0x06, 0xCE, 0x89, 0x51, 0x28, 
48240
  0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
48241
  0x29, 0x0A, 0x0A, 0x41, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x70, 0x75, 0x72, 
48242
  0x70, 0x6F, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 
48243
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x69, 0x73, 0x20, 0x73, 
48244
  0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x6F, 
48245
  0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x4C, 0x69, 0x73, 0x70, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x0A, 0x6D, 
48246
  0x61, 0x63, 0x72, 0x6F, 0x2C, 0x20, 0x61, 0x6C, 0x74, 0x68, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x69, 
48247
  0x6E, 0x74, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x6D, 0x75, 0x63, 
48248
  0x68, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x63, 0x6F, 
48249
  0x70, 0x65, 0x2E, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 
48250
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x0A, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 
48251
  0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
48252
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 
48253
  0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 
48254
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x6F, 0x72, 0x0A, 0x63, 0x6F, 0x6E, 0x64, 0x69, 
48255
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x73, 0x2E, 0x20, 0x41, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
48256
  0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
48257
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
48258
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x73, 0x6F, 0x6D, 
48259
  0x65, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x0A, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 
48260
  0x76, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 
48261
  0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
48262
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x69, 
48263
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x3A, 0x76, 0x65, 0x72, 0x62, 0x20, 0x6F, 0x62, 0x6A, 0x65, 
48264
  0x63, 0x74, 0x2F, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x77, 
48265
  0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x69, 
48266
  0x73, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 0x20, 0x70, 
48267
  0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x65, 0x66, 0x2C, 0x20, 0x60, 0x3A, 
48268
  0x76, 0x65, 0x72, 0x62, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 
48269
  0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x0A, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
48270
  0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x60, 0x20, 
48271
  0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 
48272
  0x6E, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x71, 0x75, 0x65, 
48273
  0x6E, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
48274
  0x65, 0x73, 0x20, 0x61, 0x0A, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
48275
  0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
48276
  0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 
48277
  0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
48278
  0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 
48279
  0x20, 0x76, 0x65, 0x72, 0x62, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
48280
  0x3A, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x72, 0x65, 0x70, 
48281
  0x65, 0x61, 0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
48282
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
48283
  0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x6C, 
48284
  0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x0A, 0x20, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
48285
  0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x60, 0x20, 0x2D, 0x2D, 
48286
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 
48287
  0x67, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x73, 
48288
  0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 
48289
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 
48290
  0x68, 0x0A, 0x20, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48291
  0x65, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 
48292
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 
48293
  0x69, 0x76, 0x65, 0x20, 0x73, 0x74, 0x65, 0x70, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 
48294
  0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x68, 0x61, 0x6C, 0x66, 0x0A, 0x20, 0x20, 0x6F, 0x70, 
48295
  0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 
48296
  0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2D, 0x74, 0x6F, 0x60, 
48297
  0x20, 0x2D, 0x2D, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x72, 0x61, 0x6E, 
48298
  0x67, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 
48299
  0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x5B, 
48300
  0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x5D, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 
48301
  0x60, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 
48302
  0x6F, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2C, 0x20, 0x73, 0x74, 
48303
  0x65, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x6F, 0x77, 0x6E, 0x77, 0x61, 0x72, 0x64, 0x73, 
48304
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x73, 0x68, 0x6F, 
48305
  0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x0A, 0x20, 0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 
48306
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 
48307
  0x68, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x28, 0x65, 
48308
  0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x29, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x76, 0x61, 
48309
  0x6C, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 
48310
  0x6F, 0x6E, 0x61, 0x6C, 0x0A, 0x20, 0x20, 0x28, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 
48311
  0x21, 0x29, 0x20, 0x73, 0x74, 0x65, 0x70, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 
48312
  0x20, 0x60, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x2D, 0x74, 0x6F, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 
48313
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x64, 0x6F, 0x77, 0x6E, 0x2C, 0x20, 0x62, 0x75, 
48314
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 
48315
  0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 
48316
  0x20, 0x65, 0x6E, 0x64, 0x5D, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6B, 0x65, 0x79, 0x73, 
48317
  0x60, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 
48318
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
48319
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x0A, 
48320
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x70, 0x61, 0x69, 0x72, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x69, 
48321
  0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 
48322
  0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 
48323
  0x61, 0x73, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 
48324
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x0A, 0x0A, 
48325
  0x2A, 0x20, 0x60, 0x3A, 0x69, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 
48326
  0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
48327
  0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
48328
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 
48329
  0x0A, 0x0A, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x61, 0x63, 
48330
  0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
48331
  0x6C, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x74, 0x68, 0x65, 
48332
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 
48333
  0x2E, 0x20, 0x43, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x61, 
48334
  0x72, 0x65, 0x20, 0x6F, 0x66, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x3A, 0x0A, 
48335
  0x0A, 0x20, 0x20, 0x20, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x61, 
48336
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x0A, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 
48337
  0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 
48338
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 
48339
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x61, 0x72, 0x67, 
48340
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
48341
  0x64, 0x2D, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x60, 0x3A, 0x6D, 
48342
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
48343
  0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x68, 0x69, 
48344
  0x6C, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 
48345
  0x2D, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 
48346
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x69, 
48347
  0x66, 0x20, 0x60, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x69, 
48348
  0x73, 0x0A, 0x20, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
48349
  0x3A, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 
48350
  0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x73, 0x20, 0x66, 0x72, 0x6F, 
48351
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 
48352
  0x6F, 0x70, 0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 
48353
  0x6E, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x20, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x0A, 
48354
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
48355
  0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x62, 0x69, 
48356
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 
48357
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x61, 
48358
  0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x0A, 
48359
  0x20, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x0A, 0x0A, 
48360
  0x2A, 0x20, 0x60, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x60, 
48361
  0x20, 0x2D, 0x2D, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 
48362
  0x66, 0x6F, 0x72, 0x6D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 
48363
  0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 
48364
  0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x0A, 0x20, 0x20, 0x6C, 
48365
  0x6F, 0x6F, 0x70, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
48366
  0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 
48367
  0x20, 0x60, 0x3A, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
48368
  0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 
48369
  0x68, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 
48370
  0x65, 0x0A, 0x20, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x20, 0x6C, 
48371
  0x6F, 0x6F, 0x70, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 
48372
  0x20, 0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x73, 0x20, 0x74, 
48373
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x20, 0x6C, 0x6F, 
48374
  0x6F, 0x70, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x0A, 0x0A, 0x2A, 
48375
  0x20, 0x60, 0x3A, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
48376
  0x6E, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 
48377
  0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
48378
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 
48379
  0x60, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x0A, 0x20, 0x20, 0x69, 0x73, 
48380
  0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x75, 0x6E, 
48381
  0x6C, 0x65, 0x73, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x20, 
48382
  0x2D, 0x2D, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
48383
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 
48384
  0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x63, 0x6F, 
48385
  0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x0A, 0x20, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 
48386
  0x6C, 0x73, 0x65, 0x79, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 
48387
  0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 0x20, 0x65, 
48388
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
48389
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x83, 0xF0, 0xDA, 0x82, 0xF6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48390
  0x03, 0x00, 0xDA, 0x04, 0x91, 0x6D, 0x03, 0xDA, 0x06, 0xCE, 0x76, 0x28, 0x62, 0x75, 0x6E, 0x64, 
48391
  0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
48392
  0x20, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x26, 
48393
  0x6F, 0x70, 0x74, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 
48394
  0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
48395
  0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 
48396
  0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x60, 
48397
  0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0x29, 0x60, 
48398
  0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x28, 0xDA, 0x84, 0x2E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48399
  0xDA, 0x04, 0x8F, 0x7B, 0x03, 0xDA, 0x06, 0xCE, 0x37, 0x20, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6E, 
48400
  0x74, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 
48401
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 0x66, 0x69, 0x2F, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x61, 0x6E, 
48402
  0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x73, 
48403
  0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x84, 0x2F, 0xDA, 0x84, 0x30, 0xD3, 0x03, 0xDA, 0x03, 
48404
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x87, 0x21, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xDB, 0x28, 0x66, 
48405
  0x66, 0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 
48406
  0x72, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 
48407
  0x74, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x6F, 0x66, 
48408
  0x66, 0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 
48409
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x70, 0x6F, 
48410
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 
48411
  0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x6F, 0x66, 0x20, 
48412
  0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
48413
  0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 
48414
  0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x66, 0x72, 0x65, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 
48415
  0x68, 0x65, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 
48416
  0x63, 0x74, 0x6F, 0x72, 0x2C, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x75, 
48417
  0x6E, 0x6D, 0x61, 0x6E, 0x61, 0x67, 0x65, 0x64, 0x2C, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 
48418
  0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6D, 
48419
  0x61, 0x6E, 0x69, 0x70, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
48420
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
48421
  0x2E, 0x20, 0x41, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
48422
  0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x64, 0x20, 0x74, 
48423
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x65, 0x79, 0x6F, 0x6E, 0x64, 
48424
  0x20, 0x69, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x70, 
48425
  0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 
48426
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x41, 0x73, 0x20, 0x77, 0x69, 
48427
  0x74, 0x68, 0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 
48428
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6D, 
48429
  0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x75, 0x6E, 0x73, 0x61, 0x66, 0x65, 0x20, 0x61, 0x6E, 0x64, 
48430
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x70, 0x6F, 0x74, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x6C, 0x79, 
48431
  0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x6F, 
48432
  0x75, 0x6E, 0x64, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 
48433
  0x73, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
48434
  0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x31, 0xDA, 0x84, 
48435
  0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0xAD, 0x01, 0xDA, 0x06, 0xCE, 
48436
  0x80, 0x81, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 
48437
  0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 
48438
  0x75, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x2D, 0x62, 0x61, 0x73, 0x65, 0x64, 0x20, 
48439
  0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 
48440
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 
48441
  0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 
48442
  0x20, 0x74, 0x6F, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x74, 
48443
  0x65, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 
48444
  0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x33, 0xDA, 0x85, 0xA9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48445
  0x03, 0x00, 0xDA, 0x8E, 0x98, 0x85, 0x1C, 0x01, 0xDA, 0x06, 0xCE, 0x4B, 0x28, 0x65, 0x76, 0x2F, 
48446
  0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 
48447
  0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 
48448
  0x66, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 
48449
  0x79, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x63, 
48450
  0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xAA, 0xDA, 0x85, 0xAB, 0xD3, 
48451
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF1, 
48452
  0x28, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x66, 
48453
  0x75, 0x6E, 0x63, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x6F, 0x72, 
48454
  0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 
48455
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 
48456
  0x64, 0x73, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x69, 0x74, 0x73, 
48457
  0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x76, 
48458
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x72, 0x65, 
48459
  0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 
48460
  0x60, 0x66, 0x75, 0x6E, 0x63, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 
48461
  0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 
48462
  0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 
48463
  0x65, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
48464
  0x64, 0x0A, 0x61, 0x6C, 0x6F, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x75, 0x6E, 0x63, 
48465
  0x60, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
48466
  0x6E, 0x73, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2C, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 
48467
  0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xAC, 0xDA, 0x85, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48468
  0xDA, 0x04, 0x84, 0xDA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCE, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 
48469
  0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 
48470
  0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 
48471
  0x74, 0x65, 0x2C, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x6C, 
48472
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 
48473
  0x62, 0x65, 0x72, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x72, 
48474
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
48475
  0x20, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x79, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 
48476
  0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x6F, 0x72, 
48477
  0x74, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 
48478
  0x72, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
48479
  0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 
48480
  0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 
48481
  0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xB0, 0xDA, 0x85, 0xC8, 
48482
  0xD3, 0x05, 0xDA, 0x86, 0x28, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0A, 0x04, 0x04, 0x04, 
48483
  0x06, 0x15, 0x00, 0x08, 0xCE, 0x11, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 
48484
  0x6D, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x72, 0xDA, 0x04, 0xDA, 0x78, 0xDA, 0x85, 0x2B, 0xDA, 0x86, 
48485
  0x26, 0xDA, 0x82, 0xB5, 0xDA, 0x79, 0xDA, 0x83, 0x49, 0x00, 0x15, 0x00, 0xDA, 0x86, 0x42, 0x00, 
48486
  0x15, 0x01, 0xDA, 0x85, 0x78, 0x00, 0x15, 0x02, 0xDA, 0x83, 0x4A, 0x00, 0x15, 0x03, 0xDA, 0x85, 
48487
  0x36, 0x00, 0x15, 0x04, 0xCF, 0x11, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x69, 
48488
  0x6D, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x72, 0x04, 0x15, 0x07, 0xDA, 0x80, 0xCE, 0x06, 0x15, 0x08, 
48489
  0xDA, 0x83, 0x1D, 0x10, 0x15, 0x05, 0xCF, 0x06, 0x6E, 0x65, 0x77, 0x74, 0x75, 0x70, 0x31, 0x01, 
48490
  0x00, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x3D, 0x06, 0x05, 0x00, 0x1B, 0x07, 
48491
  0x06, 0x00, 0x3D, 0x06, 0x05, 0x01, 0x1B, 0x08, 0x06, 0x00, 0x34, 0x01, 0x00, 0x00, 0x2C, 0x05, 
48492
  0x01, 0x00, 0x2C, 0x06, 0x02, 0x00, 0x32, 0x05, 0x06, 0x00, 0x2C, 0x06, 0x03, 0x00, 0x35, 0x05, 
48493
  0x06, 0x00, 0x33, 0x05, 0x07, 0x08, 0x2C, 0x09, 0x04, 0x00, 0x35, 0x06, 0x09, 0x00, 0x1B, 0x05, 
48494
  0x06, 0x00, 0x33, 0x05, 0x02, 0x03, 0x2C, 0x09, 0x05, 0x00, 0x35, 0x06, 0x09, 0x00, 0x36, 0x06, 
48495
  0x00, 0x00, 0x8F, 0xF8, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
48496
  0x03, 0x01, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x10, 0x00, 
48497
  0x10, 0x00, 0x10, 0xBF, 0xFF, 0x03, 0x02, 0x06, 0x00, 0x06, 0x00, 0x06, 0x00, 0x05, 0xDA, 0x03, 
48498
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x6C, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x99, 0x28, 0x69, 0x6D, 
48499
  0x70, 0x6F, 0x72, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 
48500
  0x29, 0x0A, 0x0A, 0x49, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 
48501
  0x6C, 0x65, 0x2E, 0x20, 0x46, 0x69, 0x72, 0x73, 0x74, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 
48502
  0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2C, 0x20, 0x61, 
48503
  0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x69, 
48504
  0x74, 0x73, 0x0A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 
48505
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 
48506
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x70, 0x72, 0x65, 0x70, 0x65, 0x6E, 0x64, 
48507
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x72, 0x65, 0x66, 
48508
  0x69, 0x78, 0x20, 0x61, 0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0x0A, 0x28, 0x75, 
48509
  0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x61, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x70, 
48510
  0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
48511
  0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x29, 0x2E, 0x20, 0x49, 
48512
  0x66, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x69, 0x73, 0x20, 0x70, 
48513
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x0A, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 
48514
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 
48515
  0x75, 0x6C, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x2E, 
48516
  0x20, 0x4F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x75, 0x73, 
48517
  0x65, 0x20, 0x22, 0x60, 0x3A, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x74, 0x72, 0x75, 0x65, 
48518
  0x60, 0x22, 0x0A, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x2D, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x20, 
48519
  0x74, 0x68, 0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 
48520
  0x62, 0x6F, 0x6C, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x22, 0x60, 0x3A, 0x65, 0x78, 0x69, 0x74, 
48521
  0x20, 0x74, 0x72, 0x75, 0x65, 0x60, 0x22, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
48522
  0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 
48523
  0x0A, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 
48524
  0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 
48525
  0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
48526
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 
48527
  0x65, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x31, 0x29, 0x60, 0x0A, 
48528
  0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x2E, 0x20, 0x44, 0x79, 
48529
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 
48530
  0x69, 0x6C, 0x6C, 0x20, 0x4E, 0x4F, 0x54, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 
48531
  0x74, 0x65, 0x64, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x3A, 0x66, 0x72, 0x65, 0x73, 0x68, 0x20, 
48532
  0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x0A, 0x76, 0x61, 
48533
  0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x70, 0x61, 0x73, 0x73, 0x20, 0x74, 0x68, 
48534
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x63, 0x68, 0x65, 0x2E, 0x20, 
48535
  0x55, 0x73, 0x65, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x5B, 0x66, 0x6F, 0x6F, 0x20, 
48536
  0x62, 0x61, 0x72, 0x20, 0x62, 0x61, 0x7A, 0x5D, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x6E, 0x6C, 
48537
  0x79, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x0A, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 
48538
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 
48539
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
48540
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0xC9, 0xDA, 0x86, 
48541
  0x02, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 
48542
  0x72, 0x65, 0x2F, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x63, 0x82, 0x5D, 0x01, 0xDA, 0x06, 0xCE, 
48543
  0x35, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 
48544
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
48545
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 
48546
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x54, 0xDA, 0x82, 0xD4, 0xD3, 0x03, 
48547
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x02, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x99, 0x28, 
48548
  0x64, 0x65, 0x65, 0x70, 0x2D, 0x6E, 0x6F, 0x74, 0x3D, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 
48549
  0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x6E, 0x6F, 0x74, 0x3D, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 
48550
  0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x28, 
48551
  0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 
48552
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 
48553
  0x73, 0x69, 0x64, 0x65, 0x72, 0x65, 0x64, 0x0A, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x69, 0x66, 
48554
  0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 
48555
  0x69, 0x63, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 
48556
  0x4D, 0x75, 0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 
48557
  0x20, 0x60, 0x6E, 0x6F, 0x74, 0x3D, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xCF, 0xDA, 0x86, 0x03, 
48558
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x16, 0x01, 0xDA, 0x06, 0xCE, 0x2A, 
48559
  0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
48560
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
48561
  0x6F, 0x77, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x04, 0xDA, 
48562
  0x86, 0x05, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x7C, 0x82, 0x54, 0x01, 0xDA, 
48563
  0x06, 0xCE, 0x82, 0x06, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 
48564
  0x73, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
48565
  0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 
48566
  0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x77, 0x69, 
48567
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 
48568
  0x20, 0x3A, 0x64, 0x65, 0x61, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 
48569
  0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 0x65, 0x64, 0x0A, 
48570
  0x2A, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48571
  0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x65, 0x64, 
48572
  0x20, 0x6F, 0x75, 0x74, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x2D, 0x20, 
48573
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x73, 0x75, 0x73, 
48574
  0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 
48575
  0x6D, 0x6F, 0x64, 0x65, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
48576
  0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 
48577
  0x62, 0x65, 0x65, 0x6E, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x65, 0x64, 0x0A, 0x2A, 0x20, 0x3A, 
48578
  0x75, 0x73, 0x65, 0x72, 0x28, 0x30, 0x2D, 0x37, 0x29, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 
48579
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 
48580
  0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 
48581
  0x6E, 0x61, 0x6C, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 
48582
  0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 
48583
  0x61, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x65, 0x64, 0x0A, 0x2A, 
48584
  0x20, 0x3A, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x74, 0x68, 
48585
  0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 
48586
  0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 
48587
  0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 
48588
  0x72, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x69, 0x76, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 
48589
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
48590
  0x74, 0x6C, 0x79, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48591
  0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 
48592
  0x64, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x77, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48593
  0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6A, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 
48594
  0x65, 0x6E, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 
48595
  0x6F, 0x74, 0x20, 0x79, 0x65, 0x74, 0x20, 0x72, 0x75, 0x6E, 0xDA, 0x08, 0xDA, 0x80, 0xDE, 0xDA, 
48596
  0x86, 0x06, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xB0, 0x01, 0xDA, 0x06, 
48597
  0xCE, 0x7D, 0x28, 0x74, 0x61, 0x62, 0x73, 0x65, 0x71, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x6B, 
48598
  0x65, 0x79, 0x2D, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x26, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2D, 
48599
  0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 
48600
  0x6F, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x63, 
48601
  0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 
48602
  0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 
48603
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 
48604
  0x70, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 
48605
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x07, 0xDA, 0x86, 0x0C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
48606
  0x00, 0xDA, 0x04, 0x83, 0xF6, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x32, 0x28, 0x61, 0x63, 0x63, 0x75, 
48607
  0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x20, 0x69, 0x6E, 
48608
  0x64, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 
48609
  0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x63, 0x63, 
48610
  0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 
48611
  0x64, 0x69, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 
48612
  0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 
48613
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 
48614
  0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x77, 0x68, 0x61, 
48615
  0x74, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
48616
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
48617
  0x20, 0x60, 0x72, 0x65, 0x64, 0x75, 0x63, 0x65, 0x60, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 
48618
  0x69, 0x6E, 0x69, 0x74, 0x60, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 
48619
  0x6F, 0x74, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
48620
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
48621
  0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 
48622
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x0A, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
48623
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x73, 
48624
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x29, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48625
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 
48626
  0x86, 0x0D, 0xDA, 0x83, 0x91, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6E, 0x01, 
48627
  0xDA, 0x06, 0xCE, 0x21, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
48628
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x73, 0x74, 
48629
  0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x8F, 0xDA, 0x86, 0x11, 0xD3, 0x03, 0xDA, 
48630
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x96, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC0, 0x28, 0x6D, 
48631
  0x65, 0x72, 0x67, 0x65, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 
48632
  0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x74, 
48633
  0x61, 0x62, 0x6C, 0x65, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6E, 
48634
  0x74, 0x6F, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
48635
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 
48636
  0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
48637
  0x6F, 0x6E, 0x65, 0x0A, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 
48638
  0x6E, 0x20, 0x60, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 
48639
  0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x72, 0x65, 0x70, 
48640
  0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 
48641
  0x73, 0x20, 0x6F, 0x6E, 0x65, 0x73, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
48642
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 
48643
  0xDA, 0x86, 0x12, 0xDA, 0x86, 0x19, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0x94, 0x28, 0x6D, 0x6F, 
48644
  0x64, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
48645
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 
48646
  0x70, 0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 
48647
  0x6C, 0x6F, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x74, 
48648
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 
48649
  0x66, 0x20, 0x78, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 
48650
  0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 
48651
  0x60, 0x28, 0x6D, 0x6F, 0x64, 0x20, 0x78, 0x20, 0x30, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x64, 
48652
  0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x60, 0x78, 0x60, 
48653
  0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x1A, 0xDA, 0x86, 0x1C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48654
  0xDA, 0x4C, 0x85, 0xC7, 0x01, 0xDA, 0x06, 0xCE, 0x84, 0x61, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 
48655
  0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
48656
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 
48657
  0x75, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x6F, 0x6E, 
48658
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 
48659
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 
48660
  0x63, 0x6F, 0x64, 0x65, 0x2E, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 
48661
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 
48662
  0x66, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 
48663
  0x69, 0x72, 0x73, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x74, 
48664
  0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
48665
  0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
48666
  0x65, 0x6D, 0x61, 0x69, 0x6E, 0x64, 0x65, 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x72, 0x67, 
48667
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 
48668
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0x20, 0x60, 0x66, 
48669
  0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
48670
  0x72, 0x64, 0x20, 0x6D, 0x61, 0x64, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 
48671
  0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 
48672
  0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 
48673
  0x69, 0x65, 0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 
48674
  0x72, 0x61, 0x6D, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x3A, 0x0A, 0x2A, 0x20, 
48675
  0x3A, 0x65, 0x20, 0x2D, 0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x70, 0x61, 0x73, 
48676
  0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
48677
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 
48678
  0x61, 0x6D, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x27, 0x65, 0x27, 0x2C, 
48679
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 
48680
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x68, 0x65, 
48681
  0x72, 0x69, 0x74, 0x65, 0x64, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x20, 0x2D, 0x20, 0x61, 0x6C, 
48682
  0x6C, 0x6F, 0x77, 0x73, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 
48683
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x50, 0x41, 0x54, 0x48, 0x20, 
48684
  0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 
48685
  0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 
48686
  0x6F, 0x75, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x2C, 0x20, 0x74, 
48687
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
48688
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 
48689
  0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 
48690
  0x61, 0x74, 0x68, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x78, 0x20, 0x2D, 0x20, 0x72, 0x61, 0x69, 0x73, 
48691
  0x65, 0x73, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x65, 0x78, 0x69, 0x74, 
48692
  0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x7A, 0x65, 0x72, 
48693
  0x6F, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x20, 0x2D, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 
48694
  0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 
48695
  0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 
48696
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 
48697
  0x20, 0x28, 0x69, 0x66, 0x20, 0x73, 0x74, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 
48698
  0x6E, 0x67, 0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 
48699
  0x74, 0x68, 0x65, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
48700
  0x66, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0x60, 
48701
  0x20, 0x28, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x20, 0x7A, 0x6F, 0x6D, 0x62, 0x69, 0x65, 0x20, 
48702
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x29, 0x2E, 0x0A, 0x60, 0x65, 0x6E, 0x76, 
48703
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x74, 0x72, 
48704
  0x75, 0x63, 0x74, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6E, 0x76, 0x69, 
48705
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 
48706
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x74, 0x20, 
48707
  0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 
48708
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x3A, 0x69, 0x6E, 0x2C, 0x20, 0x3A, 
48709
  0x6F, 0x75, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x2C, 0x20, 0x77, 
48710
  0x68, 0x69, 0x63, 0x68, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 0x65, 0x64, 0x69, 0x72, 
48711
  0x65, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6F, 0x20, 0x69, 0x6E, 0x20, 
48712
  0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 
48713
  0x3A, 0x69, 0x6E, 0x2C, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 
48714
  0x65, 0x72, 0x72, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 
48715
  0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
48716
  0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x49, 
48717
  0x66, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x76, 0x61, 
48718
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x74, 
48719
  0x68, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 
48720
  0x70, 0x6F, 0x6E, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x6E, 0x73, 
48721
  0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 0x20, 0x64, 0x6F, 0x20, 0x6E, 
48722
  0x6F, 0x74, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
48723
  0x67, 0x72, 0x61, 0x6D, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x6E, 
48724
  0x64, 0x20, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x1D, 
48725
  0xDA, 0x86, 0x1E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x25, 0x01, 0xDA, 
48726
  0x06, 0xCE, 0x29, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 
48727
  0x6D, 0x61, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6C, 
48728
  0x6F, 0x67, 0x2D, 0x67, 0x61, 0x6D, 0x6D, 0x61, 0x28, 0x78, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
48729
  0x1F, 0xDA, 0x86, 0x20, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0xCC, 0x01, 
48730
  0xDA, 0x06, 0xCE, 0x81, 0xF7, 0x28, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x70, 
48731
  0x61, 0x74, 0x68, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6B, 0x77, 0x61, 0x72, 0x67, 0x73, 
48732
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
48733
  0x66, 0x6F, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 
48734
  0x75, 0x74, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
48735
  0x69, 0x6C, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
48736
  0x73, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 
48737
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 
48738
  0x68, 0x65, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2E, 
48739
  0x20, 0x54, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
48740
  0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 
48741
  0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 
48742
  0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x60, 0x3A, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 
48743
  0x6B, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 
48744
  0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x64, 0x0A, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 
48745
  0x20, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x46, 0x6F, 
48746
  0x72, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x6F, 0x6C, 0x2C, 0x20, 
48747
  0x74, 0x68, 0x65, 0x20, 0x60, 0x3A, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x60, 0x20, 
48748
  0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x63, 0x61, 0x6E, 0x0A, 0x61, 0x6C, 0x73, 
48749
  0x6F, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
48750
  0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x34, 0x20, 0x61, 0x72, 0x67, 
48751
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x60, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x60, 
48752
  0x2C, 0x20, 0x60, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x60, 0x2C, 0x20, 0x60, 0x65, 0x6E, 0x76, 
48753
  0x60, 0x2C, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x77, 0x68, 0x65, 0x72, 0x65, 0x60, 0x2C, 0x20, 
48754
  0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
48755
  0x60, 0x3A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x61, 0x72, 0x67, 
48756
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 
48757
  0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x2E, 0x0A, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x72, 
48758
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x6C, 0x79, 0x63, 
48759
  0x68, 0x65, 0x63, 0x6B, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 
48760
  0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x60, 0x2E, 0x20, 
48761
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
48762
  0x21, 0xDA, 0x86, 0x5C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x6B, 
48763
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB6, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 
48764
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x62, 
48765
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 
48766
  0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
48767
  0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 
48768
  0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
48769
  0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 
48770
  0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 
48771
  0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 
48772
  0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 
48773
  0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
48774
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
48775
  0x5D, 0xDA, 0x86, 0x5E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1D, 0x01, 
48776
  0xDA, 0x06, 0xCE, 0x2A, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x62, 0x72, 0x74, 0x20, 0x78, 
48777
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
48778
  0x75, 0x62, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 
48779
  0xDA, 0x86, 0x5F, 0xDA, 0x86, 0x60, 0xD3, 0x05, 0xDA, 0x86, 0x28, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 
48780
  0x00, 0xDA, 0x04, 0x80, 0x9D, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x61, 0x28, 0x64, 0x65, 0x66, 0x64, 
48781
  0x79, 0x6E, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 
48782
  0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x69, 0x61, 
48783
  0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 
48784
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
48785
  0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
48786
  0x67, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x0A, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x69, 0x73, 0x20, 
48787
  0x61, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x2C, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 
48788
  0x6C, 0x6C, 0x79, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 
48789
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 
48790
  0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x0A, 0x61, 
48791
  0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 
48792
  0x65, 0x6E, 0x74, 0x20, 0x74, 0x79, 0x70, 0x6F, 0x73, 0x2E, 0x20, 0x60, 0x64, 0x65, 0x66, 0x64, 
48793
  0x79, 0x6E, 0x60, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x65, 0x74, 
48794
  0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
48795
  0x73, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x72, 
48796
  0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x60, 0x64, 0x79, 0x6E, 0x60, 0x20, 0x61, 0x6E, 0x64, 
48797
  0x20, 0x60, 0x73, 0x65, 0x74, 0x64, 0x79, 0x6E, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x61, 
48798
  0x6C, 0x69, 0x61, 0x73, 0x20, 0x2A, 0x6D, 0x75, 0x73, 0x74, 0x2A, 0x20, 0x73, 0x74, 0x61, 0x72, 
48799
  0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
48800
  0x68, 0x65, 0x20, 0x60, 0x2A, 0x60, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
48801
  0x2C, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x0A, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 
48802
  0x20, 0x22, 0x65, 0x61, 0x72, 0x6D, 0x75, 0x66, 0x66, 0x73, 0x22, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
48803
  0x08, 0xDA, 0x86, 0x61, 0xDA, 0x86, 0x6F, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 0x30, 0x28, 0x67, 
48804
  0x65, 0x74, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 
48805
  0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 
48806
  0x6C, 0x75, 0x65, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6B, 0x65, 
48807
  0x79, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
48808
  0x75, 0x72, 0x65, 0x20, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 
48809
  0x72, 0x6E, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 
48810
  0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x53, 0x69, 0x6D, 
48811
  0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
48812
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 
48813
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 
48814
  0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x66, 0x6F, 
48815
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
48816
  0x74, 0x75, 0x72, 0x65, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
48817
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 
48818
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 
48819
  0x70, 0x65, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x73, 0x65, 
48820
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 
48821
  0x79, 0x70, 0x65, 0x20, 0x67, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x74, 
48822
  0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 
48823
  0xDA, 0x86, 0x70, 0xDA, 0x86, 0x72, 0xD3, 0x05, 0xDA, 0x86, 0x28, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 
48824
  0x00, 0xDA, 0x04, 0x41, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 0x64, 0x65, 0x66, 0x6E, 0x2D, 0x20, 
48825
  0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 
48826
  0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x66, 
48827
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 
48828
  0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 
48829
  0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x73, 0xDA, 0x86, 0x81, 0xD3, 0x03, 0xDA, 
48830
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x24, 0x01, 0xDA, 0x06, 0xCE, 0x3D, 0x28, 0x6D, 0x61, 
48831
  0x74, 0x68, 0x2F, 0x65, 0x72, 0x66, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
48832
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 
48833
  0x6E, 0x74, 0x61, 0x72, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 
48834
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x82, 0xDA, 
48835
  0x86, 0x83, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x72, 0x01, 0xDA, 0x06, 0xCE, 
48836
  0x22, 0x28, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
48837
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 
48838
  0x68, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x84, 0xDA, 0x86, 0x86, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
48839
  0x03, 0x00, 0xDA, 0x04, 0x84, 0x02, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xDC, 0x28, 0x61, 0x63, 0x63, 
48840
  0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x32, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 
48841
  0x0A, 0x54, 0x68, 0x65, 0x20, 0x32, 0x2D, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
48842
  0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 0x63, 0x63, 0x75, 
48843
  0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6F, 0x65, 
48844
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
48845
  0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 
48846
  0x75, 0x65, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 
48847
  0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x77, 0x69, 0x6C, 
48848
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
48849
  0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x73, 0x20, 0x69, 0x73, 0x2C, 0x20, 0x73, 
48850
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 
48851
  0x74, 0x68, 0x65, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
48852
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 
48853
  0x68, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x87, 0xDA, 0x86, 0x89, 
48854
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 0x5B, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
48855
  0x3A, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x66, 0x6D, 
48856
  0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 
48857
  0x6C, 0x29, 0x0A, 0x0A, 0x46, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 
48858
  0x69, 0x76, 0x65, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 
48859
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
48860
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 0x74, 
48861
  0x69, 0x6D, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 0x69, 0x76, 0x65, 
48862
  0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 
48863
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x63, 0x63, 0x6F, 0x72, 0x64, 0x69, 
48864
  0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x72, 
48865
  0x75, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x53, 0x4F, 0x20, 
48866
  0x43, 0x38, 0x39, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 
48867
  0x66, 0x74, 0x69, 0x6D, 0x65, 0x28, 0x29, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 
48868
  0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x69, 
48869
  0x6E, 0x20, 0x55, 0x54, 0x43, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x60, 0x6C, 0x6F, 
48870
  0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 
48871
  0x69, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 
48872
  0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
48873
  0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 
48874
  0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x8A, 
48875
  0xDA, 0x86, 0x8B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x80, 0x01, 0xDA, 
48876
  0x06, 0xCE, 0x65, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3C, 0x3D, 0x20, 0x26, 0x20, 
48877
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 
48878
  0x6F, 0x66, 0x20, 0x60, 0x3C, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 
48879
  0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 
48880
  0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 
48881
  0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 
48882
  0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x8C, 0xDA, 0x86, 0x93, 
48883
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x81, 0x03, 0xDA, 0x06, 0xCE, 0x80, 
48884
  0xB7, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 
48885
  0x70, 0x74, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 
48886
  0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 0x6D, 0x61, 0x70, 0x2D, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
48887
  0x73, 0x20, 0x6C, 0x61, 0x7A, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
48888
  0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x79, 0x6E, 
48889
  0x61, 0x6D, 0x69, 0x63, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 
48890
  0x69, 0x6D, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x6C, 0x79, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x2C, 
48891
  0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x73, 0x20, 
48892
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 
48893
  0x74, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x63, 
48894
  0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x62, 
48895
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x94, 0xDA, 0x86, 0xA7, 
48896
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x8F, 0x01, 0xDA, 0x06, 0xCE, 
48897
  0x3D, 0x28, 0x70, 0x72, 0x69, 0x6E, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 
48898
  0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 
48899
  0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x74, 0x72, 0x61, 
48900
  0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 
48901
  0xDA, 0x86, 0xA8, 0xDA, 0x86, 0xA9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x7C, 
48902
  0x81, 0xD6, 0x01, 0xDA, 0x06, 0xCE, 0x71, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x73, 0x65, 
48903
  0x74, 0x65, 0x6E, 0x76, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
48904
  0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 
48905
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 
48906
  0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x53, 0x65, 0x74, 0x20, 0x74, 
48907
  0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 
48908
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 
48909
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x9A, 0xDA, 0x82, 0x52, 
48910
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x83, 0x01, 0xDA, 0x06, 0xCE, 0x4E, 
48911
  0x28, 0x69, 0x64, 0x65, 0x6D, 0x70, 0x6F, 0x74, 0x65, 0x6E, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
48912
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 
48913
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6C, 
48914
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x65, 0x6C, 0x66, 0x20, 
48915
  0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 
48916
  0xDA, 0x82, 0x4C, 0xDA, 0x84, 0x86, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 
48917
  0x38, 0x01, 0xDA, 0x06, 0xCE, 0x3B, 0x28, 0x6D, 0x69, 0x6E, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
48918
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
48919
  0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 
48920
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
48921
  0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x84, 0xDA, 0x86, 0xAA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48922
  0xDA, 0x04, 0x80, 0x91, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x25, 0x3D, 0x20, 0x78, 0x20, 0x26, 
48923
  0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 
48924
  0x66, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x65, 0x74, 0x20, 0x78, 0x20, 0x28, 0x25, 0x20, 0x78, 0x20, 
48925
  0x6E, 0x29, 0x29, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0xAB, 0xDA, 0x86, 0xAE, 0xD3, 
48926
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xC4, 0x01, 0xDA, 0x06, 0xCE, 0x52, 
48927
  0x28, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 
48928
  0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 
48929
  0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x73, 0x74, 
48930
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
48931
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
48932
  0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xAF, 0xDA, 0x86, 0xB0, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x68, 
48933
  0x28, 0x2B, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48934
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 
48935
  0x20, 0x78, 0x73, 0x2E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 
48936
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x6C, 
48937
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x2E, 0x20, 0x49, 
48938
  0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 
48939
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x78, 0xDA, 0x86, 0xB1, 
48940
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xD1, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
48941
  0x40, 0x28, 0x67, 0x72, 0x6F, 0x75, 0x70, 0x2D, 0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 
48942
  0x29, 0x0A, 0x0A, 0x47, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
48943
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 
48944
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x61, 0x6E, 0x64, 
48945
  0x20, 0x70, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 
48946
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 
48947
  0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x0A, 0x74, 
48948
  0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 
48949
  0x20, 0x64, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x63, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
48950
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x61, 0x6C, 
48951
  0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
48952
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 
48953
  0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x0A, 0x6F, 0x66, 
48954
  0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 
48955
  0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 0x65, 
48956
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x66, 
48957
  0x6F, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 0x66, 0x60, 0x20, 0x63, 0x61, 0x6C, 
48958
  0x6C, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
48959
  0x6E, 0x74, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x73, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 
48960
  0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6B, 0x65, 0x79, 
48961
  0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xB2, 0xDA, 0x86, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
48962
  0xDA, 0x4C, 0x86, 0x0C, 0x01, 0xDA, 0x06, 0xCE, 0x7E, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 
48963
  0x69, 0x78, 0x2D, 0x63, 0x68, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x64, 0x69, 0x72, 0x6E, 0x61, 0x6D, 
48964
  0x65, 0x29, 0x0A, 0x0A, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x60, 0x63, 0x68, 0x72, 0x6F, 0x6F, 0x74, 
48965
  0x60, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
48966
  0x72, 0x6F, 0x6F, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x74, 
48967
  0x6F, 0x20, 0x60, 0x64, 0x69, 0x72, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 
48968
  0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6C, 
48969
  0x6C, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x28, 0x50, 0x4F, 0x53, 0x49, 0x58, 
48970
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xB7, 0xDA, 0x82, 0x1B, 0xD3, 
48971
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x5F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8A, 
48972
  0x28, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 
48973
  0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 
48974
  0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
48975
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 
48976
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
48977
  0x66, 0x6F, 0x72, 0x0A, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 0x28, 0x70, 0x72, 0x65, 0x64, 
48978
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 
48979
  0x75, 0x74, 0x68, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
48980
  0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x18, 0xDA, 
48981
  0x86, 0xB8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x52, 0x01, 0xDA, 0x06, 
48982
  0xCE, 0x80, 0xB9, 0x28, 0x67, 0x65, 0x74, 0x2D, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x73, 
48983
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x41, 0x63, 0x63, 
48984
  0x65, 0x73, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 
48985
  0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
48986
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x4C, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x69, 0x6E, 
48987
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
48988
  0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x76, 0x69, 0x61, 0x0A, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 
48989
  0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2E, 0x20, 0x49, 0x66, 
48990
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 
48991
  0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 0x20, 
48992
  0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 
48993
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
48994
  0xB9, 0xDA, 0x86, 0xBD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xDE, 0x81, 0x8E, 
48995
  0x01, 0xDA, 0x06, 0xCE, 0x74, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 
48996
  0x65, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 
48997
  0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
48998
  0x2E, 0x20, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
48999
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
49000
  0x6E, 0x6F, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 
49001
  0x6C, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x76, 0x69, 
49002
  0x63, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x61, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x9B, 0xDA, 0x86, 
49003
  0xBE, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x1B, 0x01, 0xDA, 0x06, 0xCE, 
49004
  0x2D, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
49005
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 
49006
  0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0xDA, 0x86, 
49007
  0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x81, 0xB2, 0xDA, 0x86, 0xBF, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
49008
  0x00, 0xDA, 0x04, 0x80, 0xB1, 0x01, 0xDA, 0x06, 0xCE, 0x7E, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 
49009
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
49010
  0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 
49011
  0x72, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
49012
  0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x61, 0x74, 0x20, 0x77, 0x68, 0x69, 
49013
  0x63, 0x68, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 
49014
  0x69, 0x6C, 0x6C, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 
49015
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 
49016
  0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 
49017
  0x83, 0xDA, 0x86, 0xC0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x81, 0x6E, 
49018
  0x01, 0xDA, 0x06, 0xCE, 0x69, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x74, 0x72, 0x69, 0x6D, 
49019
  0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
49020
  0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 
49021
  0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 
49022
  0x74, 0x73, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 
49023
  0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
49024
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 
49025
  0xDA, 0x86, 0xC1, 0xDA, 0x86, 0xC2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 
49026
  0x82, 0x34, 0x01, 0xDA, 0x06, 0xCE, 0x5B, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 
49027
  0x69, 0x74, 0x2D, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
49028
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x73, 0x20, 0x74, 
49029
  0x68, 0x65, 0x20, 0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 
49030
  0x76, 0x65, 0x6E, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 
49031
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
49032
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xC3, 0xDA, 0x86, 0xC4, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
49033
  0x00, 0xDA, 0x04, 0x8B, 0x1A, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 
49034
  0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x76, 
49035
  0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
49036
  0x2F, 0x63, 0x61, 0x63, 0x68, 0x65, 0x60, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x81, 0xA0, 
49037
  0xDA, 0x86, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x80, 0xFE, 0x01, 
49038
  0xDA, 0x06, 0xCE, 0x64, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 
49039
  0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x73, 
49040
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x27, 0x62, 0x79, 0x74, 
49041
  0x65, 0x73, 0x27, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 
49042
  0x6E, 0x67, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 
49043
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
49044
  0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x60, 0xDA, 0x86, 0xC6, 
49045
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x14, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 
49046
  0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2E, 0x63, 0x82, 0x4D, 0x01, 
49047
  0xDA, 0x06, 0xCE, 0x84, 0x3B, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 
49048
  0x6E, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x26, 0x6F, 0x70, 0x74, 
49049
  0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2D, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x29, 0x0A, 
49050
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 
49051
  0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
49052
  0x69, 0x6C, 0x6C, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 
49053
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x63, 0x68, 0x61, 
49054
  0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x53, 0x65, 0x65, 0x20, 0x60, 0x66, 0x69, 0x6C, 0x65, 0x77, 
49055
  0x61, 0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 0x64, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x76, 
49056
  0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x2E, 0x0A, 0x0A, 
49057
  0x57, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 
49058
  0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 
49059
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2C, 0x20, 0x61, 
49060
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 
49061
  0x6E, 0x67, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 
49062
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
49063
  0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
49064
  0x60, 0x65, 0x76, 0x2F, 0x67, 0x69, 0x76, 0x65, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 
49065
  0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
49066
  0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x6E, 
49067
  0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 
49068
  0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 
49069
  0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
49070
  0x3A, 0x74, 0x79, 0x70, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 
49071
  0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 
49072
  0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x2E, 
49073
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x66, 0x69, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 
49074
  0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x66, 0x69, 0x6C, 
49075
  0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
49076
  0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 
49077
  0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 
49078
  0x60, 0x3A, 0x64, 0x69, 0x72, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x74, 
49079
  0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6E, 0x61, 0x6D, 
49080
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 
49081
  0x61, 0x74, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 
49082
  0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x0A, 0x45, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 
49083
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 
49084
  0x6E, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 
49085
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x4F, 0x53, 0x2E, 0x0A, 
49086
  0x0A, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x20, 
49087
  0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 
49088
  0x20, 0x6F, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x0A, 0x4C, 0x69, 0x6E, 
49089
  0x75, 0x78, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 
49090
  0x77, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x70, 0x65, 
49091
  0x72, 0x74, 0x69, 0x65, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x3A, 
49092
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x64, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 
49093
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x72, 0x65, 0x74, 
49094
  0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 
49095
  0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 0x64, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 
49096
  0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 
49097
  0x65, 0x72, 0x65, 0x64, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 
49098
  0x77, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 
49099
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 
49100
  0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 
49101
  0x79, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x66, 
49102
  0x69, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 
49103
  0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x3A, 0x66, 0x69, 0x6C, 0x65, 
49104
  0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
49105
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, 0x2C, 0x20, 0x77, 0x69, 0x6C, 
49106
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 
49107
  0x20, 0x60, 0x3A, 0x64, 0x69, 0x72, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x2E, 0x0A, 0x0A, 0x2A, 
49108
  0x20, 0x60, 0x3A, 0x63, 0x6F, 0x6F, 0x6B, 0x69, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 
49109
  0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x69, 0x7A, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
49110
  0x65, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 
49111
  0x69, 0x61, 0x74, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x65, 0x76, 0x65, 
49112
  0x6E, 0x74, 0x73, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x3A, 0x6D, 0x6F, 
49113
  0x76, 0x65, 0x64, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x6D, 0x6F, 
49114
  0x76, 0x65, 0x64, 0x2D, 0x74, 0x6F, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x0A, 
49115
  0xDA, 0x08, 0xDA, 0x86, 0xC7, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6E, 0x61, 0x6E, 0xD3, 
49116
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xBA, 0x01, 0xDA, 0x06, 0xCE, 0x1B, 0x4E, 
49117
  0x6F, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x28, 0x49, 0x45, 0x45, 
49118
  0x45, 0x2D, 0x37, 0x35, 0x34, 0x20, 0x4E, 0x61, 0x4E, 0x29, 0xDA, 0x08, 0xC8, 0x00, 0x00, 0x00, 
49119
  0x00, 0x00, 0x00, 0xF8, 0x7F, 0xDA, 0x86, 0xC8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49120
  0x8E, 0x98, 0x8D, 0x01, 0x01, 0xDA, 0x06, 0xCE, 0x66, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x6C, 0x6F, 
49121
  0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 
49122
  0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
49123
  0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 
49124
  0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x28, 
49125
  0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x20, 0x66, 
49126
  0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x73, 0x2E, 0xDA, 
49127
  0x08, 0xDA, 0x83, 0x08, 0xDA, 0x86, 0xC9, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xDB, 0x28, 0x2D, 
49128
  0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
49129
  0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 
49130
  0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 
49131
  0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x30, 0x2E, 
49132
  0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x65, 
49133
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
49134
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x76, 0x61, 0x6C, 
49135
  0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
49136
  0x6E, 0x74, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 
49137
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
49138
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 
49139
  0x69, 0x6E, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 
49140
  0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
49141
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x16, 0xDA, 0x85, 
49142
  0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x4F, 0x01, 0xDA, 0x06, 0xCE, 
49143
  0x81, 0x95, 0x28, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 
49144
  0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x26, 0x6F, 
49145
  0x70, 0x74, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 
49146
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x29, 0x0A, 0x0A, 0x4D, 0x65, 0x72, 0x67, 0x65, 0x20, 0x61, 0x20, 
49147
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x6E, 
49148
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x60, 0x20, 
49149
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 
49150
  0x20, 0x61, 0x20, 0x60, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x60, 0x2C, 0x20, 0x61, 0x73, 0x20, 
49151
  0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 
49152
  0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x0A, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x65, 
49153
  0x74, 0x73, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x65, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 
49154
  0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6F, 0x72, 0x20, 0x6F, 0x66, 
49155
  0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
49156
  0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 
49157
  0x61, 0x62, 0x6C, 0x65, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x60, 0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 
49158
  0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 
49159
  0x6E, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
49160
  0x6E, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x72, 0x6B, 0x65, 
49161
  0x64, 0x20, 0x61, 0x73, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x52, 0x65, 
49162
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
49163
  0x65, 0x64, 0x20, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
49164
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 
49165
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x6F, 0x6E, 0x6C, 0x79, 
49166
  0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 
49167
  0x79, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x69, 0x6E, 0x20, 
49168
  0x60, 0x6F, 0x6E, 0x6C, 0x79, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xE5, 0xDA, 0x86, 0xCA, 0xD3, 
49169
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xD9, 0x01, 0xDA, 0x06, 0xCE, 0x46, 0x28, 
49170
  0x67, 0x65, 0x6F, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
49171
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6F, 0x6D, 0x65, 0x74, 0x72, 
49172
  0x69, 0x63, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 
49173
  0x66, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
49174
  0x20, 0x4E, 0x61, 0x4E, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xCB, 0xDA, 0x86, 0xD3, 0xD3, 0x03, 0xDA, 
49175
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xF5, 0x82, 0x92, 0x01, 0xDA, 0x06, 0xCE, 0x3E, 0x28, 0x66, 
49176
  0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x20, 
49177
  0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x73, 0x74, 0x65, 0x6E, 
49178
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 
49179
  0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 
49180
  0xD4, 0xDA, 0x86, 0xD5, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x34, 0x28, 0x62, 0x6E, 0x6F, 0x74, 0x20, 
49181
  0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49182
  0x62, 0x69, 0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 
49183
  0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x78, 0x2E, 0xDA, 0x08, 
49184
  0xDA, 0x86, 0xD6, 0xDA, 0x86, 0xD8, 0xD3, 0x04, 0xDA, 0x86, 0x28, 0xDA, 0x8F, 0x75, 0xDA, 0x03, 
49185
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x48, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB6, 0x28, 0x72, 0x65, 
49186
  0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
49187
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x6F, 
49188
  0x64, 0x75, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 
49189
  0x76, 0x65, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 
49190
  0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
49191
  0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x69, 0x6E, 0x0A, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
49192
  0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49193
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
49194
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x66, 
49195
  0x72, 0x6F, 0x6D, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 
49196
  0x64, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
49197
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xAB, 0xDA, 0x86, 0xD9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
49198
  0x03, 0x00, 0xDA, 0x4C, 0x88, 0x2D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF7, 0x28, 0x6F, 0x73, 0x2F, 
49199
  0x6D, 0x6B, 0x64, 0x69, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
49200
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 
49201
  0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x77, 0x69, 
49202
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 
49203
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x64, 0x69, 
49204
  0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x69, 0x66, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 
49205
  0x69, 0x76, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x69, 
49206
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 
49207
  0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
49208
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
49209
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x72, 
49210
  0x65, 0x61, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 
49211
  0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 
49212
  0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 
49213
  0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
49214
  0x73, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x33, 0xDA, 0x86, 0xDA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
49215
  0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x81, 0xD7, 0x01, 0xDA, 0x06, 0xCE, 0x6E, 0x28, 0x66, 0x66, 0x69, 
49216
  0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x29, 
49217
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
49218
  0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6F, 
49219
  0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 
49220
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
49221
  0x74, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 
49222
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0xDA, 0x08, 0xDA, 0x86, 0xDB, 0xDA, 
49223
  0x82, 0xF9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x9A, 0x03, 0xDA, 0x06, 
49224
  0xCE, 0x81, 0x0C, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x6D, 
49225
  0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 
49226
  0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 
49227
  0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 
49228
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 
49229
  0x67, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6C, 
49230
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 
49231
  0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2A, 0x29, 0x60, 0x2E, 0x0A, 0x41, 0x64, 0x64, 0x65, 
49232
  0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x69, 0x72, 0x65, 
49233
  0x63, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
49234
  0x72, 0x65, 0x63, 0x6F, 0x72, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
49235
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 
49236
  0x73, 0x75, 0x63, 0x68, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 
49237
  0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x70, 0x65, 0x72, 0x6C, 0x79, 0x20, 0x74, 0x72, 0x61, 0x63, 
49238
  0x6B, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x20, 
49239
  0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 
49240
  0x65, 0x20, 0x6F, 0x72, 0x20, 0x75, 0x6E, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2E, 0xDA, 
49241
  0x08, 0xDA, 0x86, 0xDC, 0xDA, 0x86, 0xE3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
49242
  0x89, 0xC4, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x57, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6F, 
49243
  0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6F, 0x6E, 
49244
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x6E, 0x67, 0x20, 
49245
  0x69, 0x6E, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x20, 0x61, 
49246
  0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6D, 
49247
  0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x84, 
49248
  0xE2, 0xDA, 0x86, 0xE4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x41, 
49249
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB0, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x20, 0x74, 0x6F, 0x20, 
49250
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 
49251
  0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 
49252
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x6C, 0x79, 
49253
  0x20, 0x28, 0x6E, 0x6F, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 
49254
  0x64, 0x69, 0x6E, 0x67, 0x73, 0x29, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
49255
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x73, 
49256
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
49257
  0x65, 0x6E, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x74, 0x68, 0x65, 
49258
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 
49259
  0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49260
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xE5, 0xDA, 0x86, 0xE6, 0xD3, 0x03, 
49261
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0x00, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAA, 0x28, 
49262
  0x64, 0x6F, 0x63, 0x2D, 0x6F, 0x66, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 0x72, 0x63, 
49263
  0x68, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x20, 0x6D, 
49264
  0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
49265
  0x2F, 0x63, 0x61, 0x63, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 
49266
  0x65, 0x6E, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 
49267
  0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x74, 0x73, 0x20, 0x64, 0x6F, 
49268
  0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x54, 0x68, 0x69, 
49269
  0x73, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 
49270
  0x62, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 
49271
  0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 
49272
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xE7, 0xDA, 0x87, 
49273
  0xA3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xDC, 0x01, 0xDA, 0x06, 0xCE, 
49274
  0x74, 0x28, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x20, 0x76, 0x61, 
49275
  0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x64, 0x65, 0x66, 
49276
  0x61, 0x75, 0x6C, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
49277
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
49278
  0x65, 0x6E, 0x74, 0x2E, 0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 
49279
  0x60, 0x28, 0x64, 0x65, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x20, 0x28, 0x69, 0x66, 0x20, 0x28, 0x3D, 
49280
  0x20, 0x6E, 0x69, 0x6C, 0x20, 0x73, 0x79, 0x6D, 0x29, 0x20, 0x76, 0x61, 0x6C, 0x20, 0x73, 0x79, 
49281
  0x6D, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x87, 0xA4, 0xDA, 0x87, 0xA9, 
49282
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x89, 0x01, 0xDA, 0x06, 0xCE, 
49283
  0x7F, 0x28, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 
49284
  0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 
49285
  0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 
49286
  0x66, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
49287
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x3B, 0x78, 0x73, 0x29, 0x60, 
49288
  0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 
49289
  0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 
49290
  0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 
49291
  0xDA, 0x08, 0xDA, 0x85, 0x20, 0xDA, 0x87, 0xAA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49292
  0x21, 0x81, 0x23, 0x01, 0xDA, 0x06, 0xCE, 0x2E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x72, 
49293
  0x66, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
49294
  0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
49295
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xAB, 0xDA, 0x87, 0xAC, 0xD3, 0x04, 
49296
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x3B, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x57, 0x68, 
49297
  0x65, 0x72, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 
49298
  0x6E, 0x67, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 
49299
  0x20, 0x74, 0x6F, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x5A, 0xDA, 0x87, 0xAD, 
49300
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xF2, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
49301
  0x8D, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 
49302
  0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 
49303
  0x68, 0x20, 0x60, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x6D, 
49304
  0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x69, 0x6D, 0x61, 
49305
  0x67, 0x65, 0x73, 0x29, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x0A, 
49306
  0x60, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x78, 0x29, 0x60, 
49307
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
49308
  0x60, 0x28, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x78, 0x20, 0x6D, 0x61, 0x6B, 0x65, 
49309
  0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 0x69, 0x63, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x08, 
49310
  0xDA, 0x87, 0xAE, 0xDA, 0x87, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 
49311
  0x86, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x26, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 
49312
  0x74, 0x65, 0x20, 0x66, 0x66, 0x69, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 
49313
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 
49314
  0x65, 0x78, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x6E, 0x61, 
49315
  0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 
49316
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x69, 0x74, 
49317
  0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 
49318
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 
49319
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 
49320
  0x73, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 
49321
  0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x66, 0x69, 
49322
  0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x43, 0x2F, 0x43, 0x2B, 0x2B, 0x2F, 
49323
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 0x6F, 
49324
  0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 
49325
  0x6F, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 
49326
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
49327
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
49328
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x69, 0x73, 
49329
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6C, 0x69, 0x65, 0x64, 0x2E, 0xDA, 0x08, 
49330
  0xDA, 0x87, 0xB0, 0xDA, 0x87, 0xB1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 
49331
  0x82, 0xA4, 0x01, 0xDA, 0x06, 0xCE, 0x2E, 0x28, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x3F, 
49332
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
49333
  0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 
49334
  0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x2B, 0xDA, 0x87, 0xB2, 0xD3, 0x05, 0xDA, 0x86, 
49335
  0x28, 0xDA, 0x86, 0x2A, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x4B, 0x01, 0xDA, 0x06, 0xCE, 
49336
  0x43, 0x28, 0x76, 0x61, 0x72, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 
49337
  0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 
49338
  0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
49339
  0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6F, 0x72, 
49340
  0x74, 0x65, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x87, 0xB3, 0xDA, 0x82, 0x25, 0xD3, 
49341
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x75, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x01, 
49342
  0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x74, 
49343
  0x68, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 
49344
  0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x70, 0x61, 0x74, 
49345
  0x68, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
49346
  0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 
49347
  0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 
49348
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x28, 0x66, 0x75, 0x6C, 
49349
  0x6C, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6B, 0x69, 0x6E, 0x64, 0x29, 0x20, 0x77, 0x68, 0x65, 0x72, 
49350
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x69, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 
49351
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 0x6E, 
49352
  0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x0A, 0x6F, 0x72, 0x20, 0x3A, 0x69, 0x6D, 0x61, 0x67, 0x65, 
49353
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x69, 
49354
  0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
49355
  0x73, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
49356
  0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x0A, 
49357
  0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 
49358
  0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xB0, 0xDA, 0x87, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49359
  0xDA, 0x8E, 0xDE, 0x81, 0x61, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x74, 0x61, 0x62, 0x6C, 
49360
  0x65, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 
49361
  0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
49362
  0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 
49363
  0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 
49364
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x68, 0x61, 
49365
  0x73, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 
49366
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49367
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2E, 
49368
  0xDA, 0x08, 0xDA, 0x83, 0x56, 0xDA, 0x87, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49369
  0x80, 0x95, 0x83, 0xB5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE5, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x72, 
49370
  0x65, 0x63, 0x76, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
49371
  0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x62, 0x75, 0x66, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
49372
  0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 
49373
  0x65, 0x73, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 
49374
  0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 
49375
  0x20, 0x70, 0x75, 0x74, 0x73, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 
49376
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
49377
  0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2D, 0x61, 0x64, 0x64, 0x72, 0x65, 
49378
  0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x63, 0x61, 
49379
  0x6D, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 
49380
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 
49381
  0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 
49382
  0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
49383
  0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 
49384
  0x08, 0xDA, 0x87, 0xB7, 0xDA, 0x87, 0xB8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
49385
  0x87, 0x6A, 0x01, 0xDA, 0x06, 0xCE, 0x68, 0x28, 0x70, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x50, 
49386
  0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 
49387
  0x74, 0x64, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 
49388
  0x6F, 0x75, 0x74, 0x2A, 0x29, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
49389
  0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 
49390
  0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 
49391
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x2A, 0x20, 0x22, 0x25, 0x71, 0x22, 0x29, 0x60, 0x2E, 0xDA, 
49392
  0x08, 0xDA, 0x87, 0xB9, 0xDA, 0x87, 0xBB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
49393
  0x83, 0x92, 0x01, 0xDA, 0x06, 0xCE, 0x23, 0x28, 0x6F, 0x6E, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
49394
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x65, 
49395
  0x71, 0x75, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xBC, 0xDA, 
49396
  0x80, 0x80, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xB1, 0x01, 0xDA, 0x06, 
49397
  0xCE, 0x80, 0xAB, 0x28, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 
49398
  0x0A, 0x0A, 0x49, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 
49399
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x73, 0x74, 
49400
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x20, 0x60, 0x66, 0x60, 0x0A, 0x74, 
49401
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x2E, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x20, 
49402
  0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 
49403
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 
49404
  0x20, 0x49, 0x66, 0x20, 0x61, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 
49405
  0x0A, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 
49406
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 
49407
  0x0A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0xDA, 0x08, 
49408
  0xDA, 0x5F, 0xDA, 0x87, 0xBE, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x9F, 
49409
  0x01, 0xDA, 0x06, 0xCE, 0x7B, 0x28, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
49410
  0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 
49411
  0x6C, 0x61, 0x62, 0x65, 0x6C, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 
49412
  0x20, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x73, 0x63, 
49413
  0x6F, 0x70, 0x65, 0x64, 0x2E, 0x20, 0x60, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 
49414
  0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x0A, 
49415
  0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x62, 0x6F, 0x75, 
49416
  0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x62, 0x65, 0x6C, 0x2E, 
49417
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x87, 0xBF, 0xDA, 0x87, 0xCC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
49418
  0x03, 0x00, 0xCE, 0x10, 0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x61, 0x72, 
49419
  0x73, 0x65, 0x2E, 0x63, 0x84, 0x3B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE3, 0x28, 0x70, 0x61, 0x72, 
49420
  0x73, 0x65, 0x72, 0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
49421
  0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x65, 0x61, 0x72, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 
49422
  0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 
49423
  0x61, 0x72, 0x73, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 
49424
  0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 
49425
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x61, 
49426
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x73, 0x20, 0x65, 0x6E, 0x63, 0x6F, 
49427
  0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
49428
  0x74, 0x20, 0x72, 0x65, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 
49429
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x63, 0x6F, 0x75, 0x6E, 
49430
  0x74, 0x65, 0x72, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 
49431
  0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 
49432
  0x77, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x2C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
49433
  0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 
49434
  0x08, 0xDA, 0x87, 0xCD, 0xDA, 0x87, 0xCE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x10, 
49435
  0x73, 0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x63, 
49436
  0x6F, 0x01, 0xDA, 0x06, 0xCE, 0x73, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 
49437
  0x6D, 0x61, 0x70, 0x20, 0x74, 0x75, 0x70, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 
49438
  0x75, 0x6D, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 
49439
  0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 
49440
  0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0x20, 0x6C, 0x69, 0x6E, 
49441
  0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x6E, 0x64, 
49442
  0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 
49443
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x79, 0xDA, 0x87, 0xCF, 
49444
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x49, 0x01, 0xDA, 0x06, 0xCE, 
49445
  0x67, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x2D, 0x74, 0x6F, 0x67, 
49446
  0x67, 0x6C, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 
49447
  0x29, 0x0A, 0x0A, 0x54, 0x6F, 0x67, 0x67, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
49448
  0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 
49449
  0x62, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x75, 0x66, 
49450
  0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
49451
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xD0, 0xDA, 0x87, 0xD1, 
49452
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x94, 0x01, 0xDA, 0x06, 0xCE, 
49453
  0x43, 0x28, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x72, 0x6C, 0x6F, 
49454
  0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 
49455
  0x61, 0x73, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 
49456
  0x6F, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 
49457
  0x6C, 0x6F, 0x63, 0x6B, 0xDA, 0x08, 0xDA, 0x87, 0xD2, 0xDA, 0x87, 0xD3, 0xD3, 0x03, 0xDA, 0x03, 
49458
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x0A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8B, 0x28, 0x65, 0x76, 
49459
  0x65, 0x72, 0x79, 0x3F, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 
49460
  0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 
49461
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 
49462
  0x60, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 
49463
  0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 
49464
  0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x0A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
49465
  0x65, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 
49466
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 
49467
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xD4, 0xDA, 0x87, 0xD8, 
49468
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x7C, 0x82, 0x92, 0x01, 0xDA, 0x06, 0xCE, 
49469
  0x4E, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x73, 0x75, 
49470
  0x6D, 0x65, 0x3F, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 
49471
  0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 
49472
  0x66, 0x69, 0x6E, 0x69, 0x73, 0x68, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x6E, 
49473
  0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x2E, 0xDA, 
49474
  0x08, 0xDA, 0x85, 0x77, 0xDA, 0x87, 0xD9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 
49475
  0x83, 0x9A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE1, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x69, 0x67, 0x61, 
49476
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 
49477
  0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 
49478
  0x70, 0x74, 0x2D, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x29, 0x0A, 
49479
  0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x68, 0x61, 
49480
  0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 
49481
  0x6E, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x6E, 0x69, 
49482
  0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x68, 0x61, 0x6E, 0x64, 0x6C, 
49483
  0x65, 0x72, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 
49484
  0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 
49485
  0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x73, 0x69, 0x67, 
49486
  0x6E, 0x61, 0x6C, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 
49487
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x73, 0x75, 0x70, 
49488
  0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 
49489
  0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 0x6C, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xDA, 0xDA, 0x87, 
49490
  0xDB, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xAD, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x26, 
49491
  0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x73, 0x20, 0x61, 
49492
  0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x68, 
49493
  0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x75, 0x67, 0x68, 0x74, 
49494
  0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 
49495
  0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x69, 
49496
  0x6E, 0x73, 0x70, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 
49497
  0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
49498
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 
49499
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49500
  0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 
49501
  0x73, 0x75, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xDC, 0xDA, 0x83, 0xE2, 0xD3, 0x03, 0xDA, 
49502
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x1C, 0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x72, 0x65, 
49503
  0x76, 0x65, 0x72, 0x73, 0x65, 0x21, 0x20, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x76, 0x65, 0x72, 
49504
  0x73, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x66, 
49505
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 
49506
  0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 
49507
  0x72, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 
49508
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x0A, 0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 0x64, 0x2E, 
49509
  0xDA, 0x08, 0xDA, 0x83, 0xE0, 0xDA, 0x87, 0xDE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
49510
  0x04, 0x83, 0x8A, 0x01, 0xDA, 0x06, 0xCE, 0x65, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 
49511
  0x3E, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 
49512
  0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x3E, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 
49513
  0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 
49514
  0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 
49515
  0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 
49516
  0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 
49517
  0x87, 0xDF, 0xDA, 0x87, 0xE6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x83, 
49518
  0x18, 0x01, 0xDA, 0x06, 0xCE, 0x84, 0xD2, 0x28, 0x73, 0x61, 0x6E, 0x64, 0x62, 0x6F, 0x78, 0x20, 
49519
  0x26, 0x20, 0x66, 0x6F, 0x72, 0x62, 0x69, 0x64, 0x64, 0x65, 0x6E, 0x2D, 0x63, 0x61, 0x70, 0x61, 
49520
  0x62, 0x69, 0x6C, 0x69, 0x74, 0x69, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x44, 0x69, 0x73, 0x61, 0x62, 
49521
  0x6C, 0x65, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 
49522
  0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
49523
  0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
49524
  0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x79, 
49525
  0x73, 0x74, 0x65, 0x6D, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2E, 0x20, 
49526
  0x4F, 0x6E, 0x63, 0x65, 0x20, 0x61, 0x20, 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 
49527
  0x73, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x72, 
49528
  0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x20, 0x77, 0x61, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x72, 
49529
  0x65, 0x2D, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x43, 0x61, 0x70, 
49530
  0x61, 0x62, 0x69, 0x6C, 0x69, 0x74, 0x69, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
49531
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 
49532
  0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 
49533
  0x20, 0x49, 0x4F, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x2C, 0x20, 0x73, 
49534
  0x74, 0x64, 0x65, 0x72, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6E, 
49535
  0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x68, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 
49536
  0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 
49537
  0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x63, 0x68, 0x72, 0x6F, 0x6F, 0x74, 0x60, 
49538
  0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x6E, 0x76, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 
49539
  0x6F, 0x77, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 
49540
  0x72, 0x69, 0x74, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 
49541
  0x65, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 
49542
  0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x46, 0x46, 0x49, 0x20, 0x28, 0x72, 0x65, 0x63, 0x6F, 0x6D, 0x6D, 
49543
  0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x69, 
49544
  0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x73, 0x65, 
49545
  0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x2D, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 
49546
  0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 
49547
  0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x46, 0x46, 0x49, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
49548
  0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 
49549
  0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 
49550
  0x66, 0x66, 0x69, 0x2D, 0x6A, 0x69, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 
49551
  0x6F, 0x77, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 
49552
  0x6A, 0x69, 0x74, 0x66, 0x6E, 0x60, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x66, 0x69, 0x2D, 0x75, 0x73, 
49553
  0x65, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x75, 0x73, 0x69, 
49554
  0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x6C, 
49555
  0x79, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 
49556
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 
49557
  0x2D, 0x75, 0x6E, 0x73, 0x61, 0x66, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
49558
  0x73, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 
49559
  0x6C, 0x6F, 0x77, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 
49560
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x0A, 0x2A, 0x20, 
49561
  0x3A, 0x66, 0x73, 0x2D, 0x72, 0x65, 0x61, 0x64, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 
49562
  0x6C, 0x6F, 0x77, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 
49563
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 
49564
  0x65, 0x6D, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x73, 0x2D, 0x74, 0x65, 0x6D, 0x70, 0x20, 0x2D, 0x20, 
49565
  0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 
49566
  0x67, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x6C, 0x65, 
49567
  0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x73, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x2D, 0x20, 
49568
  0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 
49569
  0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
49570
  0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x0A, 0x2A, 0x20, 0x3A, 0x68, 0x72, 0x74, 0x69, 
49571
  0x6D, 0x65, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x68, 0x69, 
49572
  0x67, 0x68, 0x2D, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x69, 
49573
  0x6D, 0x65, 0x72, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 
49574
  0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x20, 
49575
  0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 
49576
  0x28, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 
49577
  0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6E, 0x65, 0x74, 0x77, 
49578
  0x6F, 0x72, 0x6B, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 
49579
  0x74, 0x2D, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 
49580
  0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x75, 0x74, 0x62, 
49581
  0x6F, 0x75, 0x6E, 0x64, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 
49582
  0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x2D, 
49583
  0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 
49584
  0x77, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x62, 0x6F, 
49585
  0x75, 0x6E, 0x64, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 
49586
  0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x61, 0x6E, 0x64, 0x62, 
49587
  0x6F, 0x78, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x63, 0x61, 
49588
  0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
49589
  0x69, 0x6F, 0x6E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x2D, 0x20, 
49590
  0x64, 0x69, 0x73, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x20, 
49591
  0x6F, 0x72, 0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x69, 0x67, 0x6E, 
49592
  0x61, 0x6C, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 
49593
  0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x69, 0x73, 0x61, 
49594
  0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x75, 0x62, 
49595
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0xDA, 0x08, 0xDA, 0x87, 0xE7, 0xDA, 0x87, 
49596
  0xE8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x81, 0x1A, 0x01, 0xDA, 0x06, 
49597
  0xCE, 0x80, 0x97, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x61, 
49598
  0x72, 0x72, 0x20, 0x26, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x4A, 0x6F, 0x69, 
49599
  0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
49600
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6E, 
49601
  0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 
49602
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
49603
  0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 
49604
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49605
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 
49606
  0x72, 0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xE9, 0xDA, 
49607
  0x87, 0xEA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8A, 0x01, 0xDA, 0x06, 
49608
  0xCE, 0x17, 0x28, 0x64, 0x65, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
49609
  0x6E, 0x73, 0x20, 0x78, 0x20, 0x2D, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xEB, 0xDA, 0x87, 
49610
  0xED, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x85, 0x11, 0x01, 0xDA, 0x06, 
49611
  0xCE, 0x5C, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x63, 
49612
  0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
49613
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 
49614
  0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
49615
  0x73, 0x74, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x6C, 0x6F, 
49616
  0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x2E, 0xDA, 0x08, 
49617
  0xDA, 0x87, 0xEE, 0xDA, 0x87, 0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 
49618
  0xE6, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x97, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x6C, 0x6F, 
49619
  0x63, 0x61, 0x6C, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 
49620
  0x20, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6F, 0x72, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 
49621
  0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 
49622
  0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x73, 
49623
  0x20, 0x68, 0x6F, 0x77, 0x20, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 
49624
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
49625
  0x74, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x69, 
49626
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
49627
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
49628
  0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x74, 0x65, 
49629
  0x67, 0x6F, 0x72, 0x79, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 
49630
  0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x20, 0x28, 0x64, 0x65, 
49631
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x29, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x63, 0x6F, 0x6C, 0x6C, 0x61, 
49632
  0x74, 0x65, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x63, 0x74, 0x79, 0x70, 0x65, 0x0A, 0x20, 0x2A, 0x20, 
49633
  0x3A, 0x6D, 0x6F, 0x6E, 0x65, 0x74, 0x61, 0x72, 0x79, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x6E, 0x75, 
49634
  0x6D, 0x65, 0x72, 0x69, 0x63, 0x0A, 0x20, 0x2A, 0x20, 0x3A, 0x74, 0x69, 0x6D, 0x65, 0x0A, 0x0A, 
49635
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 
49636
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x65, 0x20, 0x69, 0x66, 0x20, 0x73, 0x65, 0x74, 0x20, 0x73, 0x75, 
49637
  0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 0x6C, 0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
49638
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 
49639
  0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 
49640
  0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 
49641
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x60, 0x6F, 
49642
  0x73, 0x2F, 0x73, 0x74, 0x72, 0x66, 0x74, 0x69, 0x6D, 0x65, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49643
  0x65, 0x76, 0x65, 0x6E, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x2E, 0xDA, 0x08, 
49644
  0xDA, 0x87, 0xF0, 0xDA, 0x87, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 
49645
  0x82, 0x0F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x30, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
49646
  0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 
49647
  0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 
49648
  0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 
49649
  0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x66, 0x72, 
49650
  0x6F, 0x6D, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x65, 
49651
  0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 
49652
  0x73, 0x20, 0x68, 0x61, 0x6C, 0x66, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 
49653
  0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x65, 0x78, 
49654
  0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 
49655
  0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 
49656
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 
49657
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
49658
  0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 
49659
  0x79, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 
49660
  0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 
49661
  0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 
49662
  0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
49663
  0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
49664
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xF2, 0xDA, 0x80, 0xAD, 
49665
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x82, 0x57, 0x28, 0x70, 0x75, 0x74, 0x20, 0x64, 0x73, 0x20, 0x6B, 
49666
  0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x41, 0x73, 0x73, 0x6F, 0x63, 
49667
  0x69, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
49668
  0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6D, 
49669
  0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 
49670
  0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
49671
  0x65, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
49672
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 
49673
  0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x29, 0x20, 
49674
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 
49675
  0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
49676
  0x20, 0x6B, 0x65, 0x79, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
49677
  0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x75, 0x74, 
49678
  0x20, 0x6F, 0x66, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
49679
  0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x49, 0x6E, 
49680
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 
49681
  0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x66, 
49682
  0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 0x73, 0x2C, 
49683
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
49684
  0x2C, 0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x77, 0x69, 
49685
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 
49686
  0x68, 0x20, 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x61, 0x20, 
49687
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x70, 0x75, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 
49688
  0x20, 0x6B, 0x65, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 
49689
  0x74, 0x61, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 
49690
  0x62, 0x6C, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x77, 0x69, 
49691
  0x6C, 0x6C, 0x20, 0x68, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x6F, 
49692
  0x63, 0x69, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 
49693
  0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 
49694
  0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 
49695
  0x75, 0x74, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 
49696
  0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x50, 0x75, 0x74, 0x74, 0x69, 
49697
  0x6E, 0x67, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 
49698
  0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
49699
  0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 
49700
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 
49701
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 
49702
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x64, 0x73, 0x2E, 0xDA, 0x08, 
49703
  0xDA, 0x80, 0xB1, 0xDA, 0x87, 0xF3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 
49704
  0x81, 0xDC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD1, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x26, 
49705
  0x20, 0x6B, 0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 
49706
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
49707
  0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
49708
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x76, 0x61, 
49709
  0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x6B, 0x76, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 
49710
  0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6B, 0x31, 0x2C, 0x20, 0x76, 0x31, 0x2C, 0x20, 
49711
  0x6B, 0x32, 0x2C, 0x20, 0x76, 0x32, 0x2C, 0x20, 0x6B, 0x33, 0x2C, 0x20, 0x76, 0x33, 0x2C, 0x20, 
49712
  0x2E, 0x2E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6B, 0x76, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 
49713
  0x6E, 0x20, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
49714
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
49715
  0x6F, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 
49716
  0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
49717
  0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xC2, 0xDA, 0x87, 
49718
  0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xCC, 0x01, 0xDA, 0x06, 
49719
  0xCE, 0x55, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 
49720
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
49721
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 
49722
  0x20, 0x69, 0x73, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x6F, 0x70, 0x69, 0x65, 0x73, 0x20, 0x6F, 
49723
  0x66, 0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 
49724
  0x65, 0x6E, 0x61, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x63, 0xDA, 0x87, 0xF5, 0xD3, 
49725
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x80, 0xF7, 0x01, 0xDA, 0x06, 0xCE, 0x79, 0x28, 
49726
  0x6F, 0x73, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
49727
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x20, 0x75, 
49728
  0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 
49729
  0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 0x2E, 0x20, 
49730
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 
49731
  0x0A, 0x2A, 0x20, 0x3A, 0x67, 0x63, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x6C, 0x61, 0x6E, 
49732
  0x67, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x73, 0x76, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 
49733
  0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0A, 0x0A, 0xDA, 0x08, 0xDA, 0x87, 0xF6, 0xDA, 0x87, 0xF7, 
49734
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x84, 0x01, 0x01, 0xDA, 0x06, 0xCE, 
49735
  0x81, 0x02, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 
49736
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 
49737
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 
49738
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 
49739
  0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x2E, 0x20, 0x54, 
49740
  0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
49741
  0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x65, 
49742
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x2D, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
49743
  0x69, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x2E, 
49744
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x61, 0x20, 0x70, 
49745
  0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x73, 
49746
  0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x2A, 
49747
  0x20, 0x3A, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 
49748
  0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x72, 
49749
  0x65, 0x61, 0x64, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 
49750
  0x6F, 0x72, 0x20, 0x73, 0x61, 0x66, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 
49751
  0x61, 0x74, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x0D, 0xDA, 0x80, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
49752
  0x03, 0x00, 0xDA, 0x04, 0x8E, 0xEF, 0x03, 0xDA, 0x06, 0xCE, 0x6A, 0x28, 0x65, 0x76, 0x2F, 0x63, 
49753
  0x61, 0x6C, 0x6C, 0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
49754
  0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 
49755
  0x73, 0x79, 0x6E, 0x63, 0x68, 0x72, 0x6F, 0x6E, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x2E, 0x0A, 0x52, 
49756
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 
49757
  0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x64, 
49758
  0x20, 0x74, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 
49759
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xF8, 0xDA, 0x87, 0xFB, 0xD3, 0x03, 0xDA, 
49760
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x8A, 0xF2, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x46, 0x28, 0x6F, 
49761
  0x73, 0x2F, 0x70, 0x69, 0x70, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 
49762
  0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 
49763
  0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x61, 0x6E, 0x64, 
49764
  0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 
49765
  0x61, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 
49766
  0x65, 0x63, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
49767
  0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 
49768
  0x6C, 0x65, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
49769
  0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
49770
  0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
49771
  0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x65, 
49772
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 
49773
  0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x60, 
49774
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 
49775
  0x6F, 0x72, 0x64, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 
49776
  0x20, 0x74, 0x6F, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 
49777
  0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 
49778
  0x73, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x6F, 0x66, 
49779
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 
49780
  0x6D, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, 0x64, 0x20, 0x69, 
49781
  0x66, 0x20, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 
49782
  0x70, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 
49783
  0x73, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 
49784
  0x6E, 0x60, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x57, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x73, 
49785
  0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x65, 0x6E, 
49786
  0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x20, 0x74, 0x6F, 
49787
  0x20, 0x61, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x72, 0x65, 
49788
  0x61, 0x6D, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x52, 0x20, 0x2D, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 
49789
  0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x65, 0x6E, 0x64, 
49790
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x20, 0x74, 0x6F, 0x20, 
49791
  0x61, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
49792
  0x6D, 0x2E, 0x0A, 0x0A, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 
49793
  0x62, 0x6F, 0x74, 0x68, 0x20, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
49794
  0x20, 0x70, 0x69, 0x70, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x62, 0x6C, 
49795
  0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x75, 0x73, 0x65, 0x20, 0x77, 
49796
  0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x65, 0x76, 0x60, 0x20, 0x6D, 0x6F, 0x64, 
49797
  0x75, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xFC, 0xDA, 0x88, 0x05, 0xD3, 0x03, 0xDA, 0x03, 
49798
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x1E, 0x01, 0xDA, 0x06, 0xCE, 0x4D, 0x28, 0x73, 0x74, 
49799
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x73, 0x74, 0x72, 
49800
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 
49801
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
49802
  0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x64, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 
49803
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x06, 0xDA, 
49804
  0x87, 0xFD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0xC2, 0x03, 0xDA, 0x06, 
49805
  0xCE, 0x39, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 
49806
  0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 
49807
  0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 
49808
  0x6C, 0x6C, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xFE, 
49809
  0xDA, 0x88, 0x07, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0xFF, 0x01, 
49810
  0xDA, 0x06, 0xCE, 0x80, 0xCC, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x20, 0x6B, 
49811
  0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 
49812
  0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 
49813
  0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 
49814
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x2E, 0x20, 0x6B, 0x76, 0x73, 
49815
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6B, 
49816
  0x31, 0x2C, 0x20, 0x76, 0x31, 0x2C, 0x20, 0x6B, 0x32, 0x2C, 0x20, 0x76, 0x32, 0x2C, 0x20, 0x6B, 
49817
  0x33, 0x2C, 0x20, 0x76, 0x33, 0x2C, 0x20, 0x2E, 0x2E, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6B, 0x76, 
49818
  0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 
49819
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 
49820
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
49821
  0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
49822
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
49823
  0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xAD, 0xDA, 0x88, 0x08, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49824
  0xDA, 0x8E, 0x98, 0x8D, 0xE0, 0x01, 0xDA, 0x06, 0xCE, 0x57, 0x28, 0x65, 0x76, 0x2F, 0x61, 0x6C, 
49825
  0x6C, 0x2D, 0x74, 0x61, 0x73, 0x6B, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 
49826
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x63, 
49827
  0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
49828
  0x20, 0x61, 0x72, 0x65, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
49829
  0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x72, 
49830
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x09, 0xDA, 0x88, 0x0A, 0xD3, 0x05, 0xDA, 0x86, 0x28, 0xCB, 0xDA, 
49831
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0xAB, 0x03, 0xDA, 0x06, 0xCE, 0x62, 0x28, 0x66, 0x66, 
49832
  0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x72, 
49833
  0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
49834
  0x0A, 0x47, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
49835
  0x67, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 
49836
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 
49837
  0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2E, 0xDA, 
49838
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x0B, 0xDA, 0x88, 0x0F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49839
  0x00, 0xDA, 0x8F, 0x44, 0x81, 0xA7, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF9, 0x28, 0x64, 0x65, 0x62, 
49840
  0x75, 0x67, 0x2F, 0x73, 0x74, 0x65, 0x70, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 
49841
  0x70, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 
49842
  0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x76, 0x69, 0x72, 0x74, 0x75, 
49843
  0x61, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
49844
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x6D, 0x61, 0x63, 0x68, 
49845
  0x69, 0x6E, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
49846
  0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x76, 0x61, 
49847
  0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
49848
  0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
49849
  0x65, 0x73, 0x75, 0x6D, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x52, 
49850
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
49851
  0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 
49852
  0x69, 0x6C, 0x6C, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x62, 0x65, 0x20, 0x6E, 
49853
  0x69, 0x6C, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 
49854
  0x74, 0x73, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x73, 0x69, 0x67, 
49855
  0x6E, 0x61, 0x6C, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x01, 0xDA, 0x88, 0x10, 0xD3, 0x03, 0xDA, 
49856
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x54, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x74, 0x75, 
49857
  0x70, 0x6C, 0x65, 0x2F, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x26, 0x20, 0x78, 
49858
  0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
49859
  0x77, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 
49860
  0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
49861
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x78, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
49862
  0x77, 0xDA, 0x88, 0x11, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 0x72, 0x63, 
49863
  0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x65, 0x67, 0x2E, 0x63, 0x87, 0x73, 0x01, 0xDA, 0x06, 
49864
  0xCE, 0x80, 0xFA, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x70, 0x65, 
49865
  0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 
49866
  0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x74, 0x63, 0x68, 
49867
  0x20, 0x61, 0x20, 0x50, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x45, 0x78, 0x70, 0x72, 0x65, 
49868
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x47, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x74, 0x6F, 
49869
  0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 
49870
  0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 
49871
  0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x20, 0x76, 
49872
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 
49873
  0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 
49874
  0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 
49875
  0x6E, 0x67, 0x75, 0x61, 0x67, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 
49876
  0x79, 0x20, 0x70, 0x65, 0x67, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 
49877
  0x78, 0x20, 0x6F, 0x66, 0x20, 0x50, 0x45, 0x47, 0x73, 0x20, 0x69, 0x73, 0x20, 0x64, 0x6F, 0x63, 
49878
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 
49879
  0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
49880
  0x88, 0x12, 0xDA, 0x88, 0x13, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x87, 0x80, 
49881
  0xEC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA8, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x70, 
49882
  0x72, 0x6F, 0x74, 0x6F, 0x2D, 0x66, 0x6C, 0x61, 0x74, 0x74, 0x65, 0x6E, 0x20, 0x73, 0x74, 0x29, 
49883
  0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
49884
  0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 
49885
  0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 
49886
  0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 
49887
  0x73, 0x20, 0x62, 0x79, 0x20, 0x6D, 0x65, 0x72, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 
49888
  0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 
49889
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 
49890
  0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 
49891
  0x6F, 0x6E, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 
49892
  0x08, 0xDA, 0x88, 0x14, 0xCF, 0x08, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x66, 0xD3, 0x03, 
49893
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xAE, 0x01, 0xDA, 0x06, 0xCE, 0x29, 0x54, 0x68, 
49894
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 
49895
  0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 
49896
  0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x79, 0xDA, 0x08, 0xDA, 0x85, 0x7E, 0xDA, 0x88, 0x15, 0xD3, 
49897
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0xB6, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA0, 
49898
  0x28, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 
49899
  0x69, 0x6E, 0x67, 0x20, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 0x26, 
49900
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 
49901
  0x74, 0x6F, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 
49902
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 
49903
  0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
49904
  0x0A, 0x6E, 0x69, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x65, 0x76, 0x61, 
49905
  0x6C, 0x75, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 
49906
  0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 
49907
  0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x77, 0x69, 0x74, 0x68, 0x60, 0x2E, 
49908
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x16, 0xDA, 0x80, 0xBA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
49909
  0x03, 0x00, 0xDA, 0x04, 0x8F, 0x10, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0x88, 0x28, 0x65, 0x76, 0x2F, 
49910
  0x77, 0x69, 0x74, 0x68, 0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 
49911
  0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 
49912
  0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 
49913
  0x72, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x72, 0x65, 0x61, 0x64, 
49914
  0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x72, 0x77, 
49915
  0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 
49916
  0x61, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 
49917
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x64, 
49918
  0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x1E, 0xDA, 0x88, 0x21, 0xD3, 
49919
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x85, 0x02, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
49920
  0xD1, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x20, 0x70, 
49921
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 
49922
  0x70, 0x20, 0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 
49923
  0x73, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x64, 0x65, 0x6E, 
49924
  0x74, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 
49925
  0x75, 0x74, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 
49926
  0x63, 0x6C, 0x6F, 0x6E, 0x65, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 
49927
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 
49928
  0x74, 0x69, 0x6E, 0x75, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 
49929
  0x6F, 0x6D, 0x20, 0x61, 0x20, 0x67, 0x6F, 0x6F, 0x64, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x70, 
49930
  0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 
49931
  0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 
49932
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
49933
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x22, 0xDA, 0x88, 0x23, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49934
  0x00, 0xDA, 0x04, 0x84, 0x69, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xAE, 0x28, 0x63, 0x6F, 0x75, 0x6E, 
49935
  0x74, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 
49936
  0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 
49937
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 
49938
  0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
49939
  0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x68, 0x69, 
49940
  0x63, 0x68, 0x0A, 0x61, 0x70, 0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 
49941
  0x64, 0x60, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 0x61, 0x20, 0x74, 0x72, 0x75, 0x74, 
49942
  0x68, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 
49943
  0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 
49944
  0x61, 0x72, 0x65, 0x0A, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x4D, 0x75, 
49945
  0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
49946
  0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 
49947
  0x6E, 0x64, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x60, 0x69, 
49948
  0x6E, 0x64, 0x73, 0x60, 0x0A, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
49949
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x70, 0x72, 
49950
  0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
49951
  0x6E, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 
49952
  0x6F, 0x72, 0x65, 0x0A, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
49953
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x4E, 
49954
  0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 
49955
  0x69, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x65, 0x64, 0x20, 
49956
  0x74, 0x6F, 0x0A, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 
49957
  0x65, 0x63, 0x65, 0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
49958
  0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 
49959
  0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x0A, 
49960
  0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 
49961
  0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x24, 0xDA, 0x88, 
49962
  0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xED, 0x01, 0xDA, 0x06, 0xCE, 
49963
  0x80, 0xB4, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 
49964
  0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 
49965
  0x74, 0x68, 0x20, 0x60, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x60, 0x20, 0x74, 
49966
  0x6F, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 
49967
  0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
49968
  0x65, 0x64, 0x0A, 0x62, 0x79, 0x20, 0x60, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 
49969
  0x65, 0x60, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x28, 
49970
  0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
49971
  0x29, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 
49972
  0x73, 0x20, 0x60, 0x28, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x62, 0x79, 
49973
  0x74, 0x65, 0x73, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x2D, 0x64, 
49974
  0x69, 0x63, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x41, 0xDA, 0x88, 0x33, 0xD3, 0x04, 
49975
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x1D, 0x01, 0xDA, 0x06, 0xCE, 0x2F, 0x44, 0x79, 
49976
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 
49977
  0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6D, 0x6F, 
49978
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x73, 0x60, 0xDA, 0x86, 0x68, 
49979
  0xCB, 0xDA, 0x08, 0xDA, 0x82, 0x36, 0xDA, 0x82, 0xF5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
49980
  0xDA, 0x04, 0x91, 0x65, 0x03, 0xDA, 0x06, 0xCE, 0x69, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
49981
  0x2F, 0x72, 0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
49982
  0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6E, 0x65, 0x77, 
49983
  0x2D, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 
49984
  0x61, 0x6C, 0x6C, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 
49985
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
49986
  0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 
49987
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x34, 0xDA, 0x88, 0x37, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
49988
  0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x63, 0x01, 0xDA, 0x06, 0xCE, 0x4E, 0x28, 0x65, 0x76, 0x2F, 0x72, 
49989
  0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 
49990
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x63, 
49991
  0x6B, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6F, 0x74, 0x68, 0x65, 
49992
  0x72, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x61, 0x63, 
49993
  0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x69, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x38, 0xDA, 0x88, 
49994
  0x39, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x81, 0x79, 0x01, 0xDA, 0x06, 
49995
  0xCE, 0x47, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x74, 0x65, 0x6C, 0x6C, 0x20, 0x66, 0x29, 0x0A, 
49996
  0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
49997
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
49998
  0x6C, 0x65, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 
49999
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x3A, 0xDA, 0x88, 
50000
  0x3B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6A, 0x01, 0xDA, 0x06, 0xCE, 0x24, 
50001
  0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
50002
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 
50003
  0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x3C, 0xDA, 0x80, 0x82, 0xD3, 0x03, 0xDA, 0x03, 
50004
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xBE, 0x01, 0xDA, 0x06, 0xCE, 0x66, 0x28, 0x70, 0x6F, 0x73, 
50005
  0x74, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 0x0A, 0x0A, 0x44, 
50006
  0x6F, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x73, 0x74, 0x2D, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 
50007
  0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 
50008
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 
50009
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x60, 0x28, 0x66, 0x20, 0x78, 0x29, 0x60, 0x0A, 0x6F, 0x6E, 
50010
  0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x69, 0x73, 0x69, 0x74, 0x61, 0x74, 0x69, 0x6F, 
50011
  0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x5D, 0xDA, 0x88, 0x3E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50012
  0xDA, 0x21, 0x81, 0x14, 0x01, 0xDA, 0x06, 0xCE, 0x33, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 
50013
  0x61, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
50014
  0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x74, 
50015
  0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 
50016
  0x3F, 0xDA, 0x84, 0x8B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x89, 0x01, 
50017
  0xDA, 0x06, 0xCE, 0x17, 0x28, 0x69, 0x6E, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
50018
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x78, 0x20, 0x2B, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x89, 
50019
  0xDA, 0x83, 0xF7, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x18, 0x01, 0xDA, 
50020
  0x06, 0xCE, 0x80, 0xAE, 0x28, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
50021
  0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
50022
  0x65, 0x20, 0x61, 0x20, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x69, 
50023
  0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x79, 0x6D, 
50024
  0x62, 0x6F, 0x6C, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 
50025
  0x69, 0x6E, 0x20, 0x60, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 
50026
  0x0A, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 
50027
  0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x65, 0x66, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
50028
  0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
50029
  0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
50030
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x0A, 0x76, 0x61, 0x6C, 0x75, 
50031
  0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x40, 0xDA, 0x88, 0x44, 0xD3, 0x03, 0xDA, 
50032
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x81, 0xDE, 0x01, 0xDA, 0x06, 0xCE, 0x36, 0x28, 0x66, 
50033
  0x66, 0x69, 0x2F, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x29, 0x0A, 0x0A, 0x47, 
50034
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 
50035
  0x6E, 0x20, 0x66, 0x66, 0x69, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 
50036
  0x74, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x45, 0xDA, 0x88, 0x46, 0xD3, 0x03, 0xDA, 0x03, 
50037
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xFD, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x87, 0x28, 0x66, 0x6C, 
50038
  0x61, 0x74, 0x74, 0x65, 0x6E, 0x2D, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 
50039
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x73, 
50040
  0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x28, 0x74, 0x72, 0x65, 0x65, 0x29, 
50041
  0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 
50042
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x66, 0x69, 0x72, 0x73, 
50043
  0x74, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x0A, 0x60, 
50044
  0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x69, 0x6E, 
50045
  0x74, 0x6F, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x69, 0x6E, 
50046
  0x74, 0x6F, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x47, 0xCF, 0x11, 0x6A, 0x61, 0x6E, 0x65, 0x74, 
50047
  0x2F, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x2D, 0x62, 0x69, 0x74, 0x73, 0xD3, 0x02, 0xDA, 0x06, 
50048
  0xCE, 0x7E, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 
50049
  0x66, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
50050
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x63, 0x6F, 0x6E, 0x66, 0x2E, 
50051
  0x68, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
50052
  0x74, 0x6F, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x61, 0x74, 0x69, 
50053
  0x76, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 
50054
  0x6F, 0x6D, 0x70, 0x61, 0x74, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 
50055
  0x68, 0x65, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 
50056
  0xDA, 0x08, 0x01, 0xDA, 0x88, 0x4C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 
50057
  0x82, 0x2B, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x26, 
50058
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 
50059
  0x72, 0x69, 0x6E, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 
50060
  0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 
50061
  0x72, 0x29, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x60, 
50062
  0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 
50063
  0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x58, 0xDA, 0x83, 0xA4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50064
  0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x17, 0x01, 0xDA, 0x06, 0xCE, 0x39, 0x28, 0x73, 0x65, 0x74, 
50065
  0x64, 0x79, 0x6E, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 
50066
  0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 
50067
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x76, 
50068
  0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xC9, 0xDA, 0x88, 0x4D, 0xD3, 0x03, 0xDA, 
50069
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0xF0, 0x01, 0xDA, 0x06, 0xCE, 0x7A, 0x28, 0x73, 
50070
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 
50071
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x70, 0x29, 0x0A, 0x0A, 0x4A, 0x6F, 0x69, 0x6E, 
50072
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 
50073
  0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x73, 
50074
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 
50075
  0x79, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 
50076
  0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
50077
  0x67, 0x20, 0x60, 0x73, 0x65, 0x70, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x68, 0xDA, 0x88, 0x4E, 
50078
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8B, 0xC2, 0x01, 0xDA, 0x06, 0xCE, 
50079
  0x81, 0xD5, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x6F, 
50080
  0x72, 0x2D, 0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
50081
  0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x75, 
50082
  0x74, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 
50083
  0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x62, 
50084
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x20, 0x6C, 0x61, 0x74, 0x65, 0x72, 0x2E, 
50085
  0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 
50086
  0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x77, 0x72, 
50087
  0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x66, 0x69, 0x62, 0x65, 
50088
  0x72, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x2E, 0x20, 0x4F, 0x70, 
50089
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x61, 0x20, 
50090
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 
50091
  0x77, 0x69, 0x74, 0x68, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 
50092
  0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x69, 0x6C, 
50093
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
50094
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
50095
  0x20, 0x60, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x60, 0x20, 
50096
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 
50097
  0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 
50098
  0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x65, 0x76, 
50099
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x63, 0x63, 0x75, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
50100
  0x65, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x79, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 
50101
  0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 
50102
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 
50103
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 
50104
  0x6F, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
50105
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 
50106
  0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x20, 
50107
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x75, 0x70, 0x65, 
50108
  0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xB0, 0xDA, 0x88, 0x4F, 0xD3, 
50109
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x51, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 
50110
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x63, 0x64, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 
50111
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 
50112
  0x65, 0x73, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 
50113
  0x6F, 0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 
50114
  0x20, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x50, 0xDA, 0x88, 0x51, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
50115
  0x03, 0x00, 0xDA, 0x04, 0x80, 0x8B, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x2B, 0x2B, 0x20, 0x78, 
50116
  0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x63, 0x72, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 
50117
  0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 0x20, 0x31, 0x2E, 0xDA, 0x59, 0xCB, 
50118
  0xDA, 0x08, 0xDA, 0x88, 0x52, 0xDA, 0x88, 0x54, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
50119
  0x04, 0x82, 0xA0, 0x01, 0xDA, 0x06, 0xCE, 0x7B, 0x28, 0x73, 0x65, 0x71, 0x20, 0x68, 0x65, 0x61, 
50120
  0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 
50121
  0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x2C, 0x20, 0x62, 0x75, 
50122
  0x74, 0x20, 0x61, 0x63, 0x63, 0x75, 0x6D, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 
50123
  0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x69, 0x6E, 0x74, 0x6F, 
50124
  0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
50125
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2E, 0x0A, 0x53, 0x65, 0x65, 0x20, 
50126
  0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 
50127
  0x6C, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x55, 0xDA, 0x88, 0x5B, 0xD3, 0x03, 
50128
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xE6, 0x01, 0xDA, 0x06, 0xCE, 0x43, 0x28, 0x70, 
50129
  0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
50130
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, 0x20, 
50131
  0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 
50132
  0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x31, 
50133
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x5C, 0xDA, 0x88, 0x60, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50134
  0xDA, 0x4C, 0x86, 0x2F, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x68, 0x65, 
50135
  0x6C, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x73, 0x73, 0x20, 0x61, 0x20, 
50136
  0x63, 0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x73, 
50137
  0x74, 0x72, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x74, 
50138
  0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x73, 0x68, 0x65, 0x6C, 0x6C, 0x2E, 
50139
  0xDA, 0x08, 0xDA, 0x88, 0x61, 0xDA, 0x88, 0x62, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
50140
  0x8E, 0xE5, 0x81, 0x55, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB6, 0x28, 0x73, 0x79, 0x6D, 0x62, 0x6F, 
50141
  0x6C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 
50142
  0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 
50143
  0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
50144
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 
50145
  0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 
50146
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 
50147
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 
50148
  0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 
50149
  0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 
50150
  0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50151
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 
50152
  0xDA, 0x08, 0xDA, 0x83, 0xCD, 0xDA, 0x88, 0x63, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
50153
  0x04, 0x85, 0x3D, 0x01, 0xDA, 0x06, 0xCE, 0x58, 0x45, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 
50154
  0x61, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 
50155
  0x67, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x61, 0x6E, 
50156
  0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 
50157
  0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x62, 0x75, 
50158
  0x67, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x2E, 
50159
  0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x1D, 0xDA, 0x88, 0x64, 0xD3, 0x04, 0xDA, 0x03, 
50160
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x79, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xDC, 0x28, 0x2D, 0x3E, 
50161
  0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 
50162
  0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 
50163
  0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
50164
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
50165
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 
50166
  0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 
50167
  0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
50168
  0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 
50169
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 
50170
  0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 
50171
  0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 
50172
  0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 
50173
  0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 
50174
  0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 
50175
  0x65, 0xDA, 0x88, 0x6A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x44, 0x81, 0x79, 
50176
  0x01, 0xDA, 0x06, 0xCE, 0x83, 0x4C, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 
50177
  0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x69, 0x6E, 
50178
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 
50179
  0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 
50180
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2E, 
50181
  0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 
50182
  0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 
50183
  0x73, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 
50184
  0x6F, 0x75, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 
50185
  0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6F, 0x70, 0x2D, 0x6D, 0x6F, 0x73, 0x74, 0x2C, 
50186
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 
50187
  0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
50188
  0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
50189
  0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 
50190
  0x74, 0x74, 0x6F, 0x6D, 0x2D, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 
50191
  0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
50192
  0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, 0x74, 
50193
  0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 
50194
  0x6E, 0x73, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
50195
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 
50196
  0x74, 0x65, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x20, 0x2D, 0x20, 0x74, 0x72, 0x75, 
50197
  0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 
50198
  0x72, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x63, 0x20, 0x66, 0x75, 0x6E, 0x63, 
50199
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 
50200
  0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 
50201
  0x6E, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
50202
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6F, 0x66, 
50203
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 
50204
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x2D, 0x20, 
50205
  0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 
50206
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 
50207
  0x65, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x0A, 0x0A, 0x2A, 0x20, 
50208
  0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x2D, 0x20, 0x74, 
50209
  0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 
50210
  0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 
50211
  0x61, 0x63, 0x6B, 0x20, 0x66, 0x72, 0x61, 0x6D, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x61, 
50212
  0x6D, 0x65, 0x20, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x75, 0x6D, 0x61, 0x6E, 0x2D, 0x66, 
50213
  0x72, 0x69, 0x65, 0x6E, 0x64, 0x6C, 0x79, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 
50214
  0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 
50215
  0x3A, 0x70, 0x63, 0x20, 0x2D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x69, 0x6E, 
50216
  0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 
50217
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
50218
  0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 
50219
  0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x2D, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
50220
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 
50221
  0x61, 0x74, 0x68, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x64, 0x65, 
50222
  0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 
50223
  0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 
50224
  0x73, 0x6C, 0x6F, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 
50225
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x65, 
50226
  0x61, 0x63, 0x68, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x61, 0x69, 
50227
  0x6C, 0x20, 0x2D, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x69, 
50228
  0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x74, 0x61, 0x69, 0x6C, 0x20, 0x63, 0x61, 
50229
  0x6C, 0x6C, 0xDA, 0x08, 0xDA, 0x84, 0x44, 0xDA, 0x88, 0x6B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50230
  0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x0F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xC8, 0x28, 0x65, 0x76, 0x2F, 
50231
  0x72, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x20, 0x26, 0x6F, 
50232
  0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 
50233
  0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 
50234
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 
50235
  0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 0x73, 0x79, 0x6E, 0x63, 0x68, 0x72, 0x6F, 0x6E, 0x6F, 0x75, 
50236
  0x73, 0x6C, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
50237
  0x6D, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
50238
  0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x60, 
50239
  0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x6E, 
50240
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x75, 0x6E, 
50241
  0x74, 0x69, 0x6C, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
50242
  0x6D, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 
50243
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 
50244
  0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x73, 0x20, 
50245
  0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 
50246
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x66, 0x74, 
50247
  0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 0x6E, 0x63, 
50248
  0x65, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 
50249
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 
50250
  0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
50251
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
50252
  0x65, 0x61, 0x64, 0x20, 0x77, 0x61, 0x73, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 
50253
  0x75, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x65, 0x6E, 0x64, 
50254
  0x2D, 0x6F, 0x66, 0x2D, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 
50255
  0x65, 0x64, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 
50256
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 
50257
  0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x62, 0x6C, 0x65, 0x6D, 0x73, 0x20, 0x77, 0x69, 
50258
  0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x4F, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 
50259
  0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x6C, 0xDA, 0x88, 0x6D, 0xD3, 0x03, 0xDA, 0x03, 
50260
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x86, 0x40, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCB, 0x28, 0x66, 
50261
  0x66, 0x69, 0x2F, 0x6A, 0x69, 0x74, 0x66, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 
50262
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 
50263
  0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 
50264
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 
50265
  0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
50266
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x60, 0x2E, 
50267
  0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 
50268
  0x60, 0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 
50269
  0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 
50270
  0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x74, 0x68, 
50271
  0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x70, 0x69, 0x65, 
50272
  0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 
50273
  0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x6E, 0xDA, 0x82, 
50274
  0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x90, 0xB3, 0x03, 0xDA, 0x06, 0xCE, 
50275
  0x70, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x74, 0x6F, 0x70, 0x6F, 0x6C, 0x69, 0x73, 
50276
  0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x70, 0x6F, 0x6C, 0x6F, 0x67, 0x69, 
50277
  0x63, 0x61, 0x6C, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 
50278
  0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 
50279
  0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 
50280
  0x69, 0x73, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
50281
  0x69, 0x74, 0x73, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 
50282
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x6F, 0xDA, 0x88, 0x7E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50283
  0xDA, 0x8E, 0xDE, 0x81, 0x3D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF3, 0x28, 0x74, 0x61, 0x62, 0x6C, 
50284
  0x65, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 
50285
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 
50286
  0x6D, 0x70, 0x74, 0x79, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
50287
  0x70, 0x72, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6D, 0x65, 
50288
  0x6D, 0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 
50289
  0x74, 0x79, 0x60, 0x20, 0x65, 0x6E, 0x74, 0x72, 0x69, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 
50290
  0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x66, 0x20, 
50291
  0x6F, 0x6E, 0x65, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 
50292
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6E, 0x74, 0x72, 0x69, 0x65, 0x73, 0x20, 
50293
  0x67, 0x6F, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 
50294
  0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 
50295
  0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 0x6C, 
50296
  0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 
50297
  0x76, 0x6F, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
50298
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 
50299
  0xDA, 0x88, 0x7F, 0xDA, 0x88, 0x80, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 
50300
  0x82, 0x8E, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x69, 0x6E, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
50301
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x63, 0x61, 0x6E, 0x20, 
50302
  0x62, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 
50303
  0x73, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 
50304
  0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x77, 0x6F, 0x27, 0x73, 0x20, 
50305
  0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
50306
  0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x81, 0xDA, 0x88, 0x82, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50307
  0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x81, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x80, 0x28, 0x61, 0x72, 
50308
  0x72, 0x61, 0x79, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 
50309
  0x45, 0x6D, 0x70, 0x74, 0x69, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
50310
  0x2C, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x27, 0x73, 0x20, 0x63, 
50311
  0x6F, 0x75, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 
50312
  0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x72, 0x65, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
50313
  0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 
50314
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
50315
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 
50316
  0x85, 0x7B, 0xDA, 0x88, 0x83, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 
50317
  0xC1, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBF, 0x28, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x77, 
50318
  0x68, 0x61, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 
50319
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x61, 0x79, 0x6C, 
50320
  0x6F, 0x61, 0x64, 0x20, 0x78, 0x2E, 0x20, 0x60, 0x77, 0x68, 0x61, 0x74, 0x60, 0x20, 0x63, 0x61, 
50321
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x0A, 
50322
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x30, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x37, 
50323
  0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x73, 0x65, 0x72, 
50324
  0x28, 0x30, 0x2D, 0x37, 0x29, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 
50325
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6F, 0x6B, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 
50326
  0x72, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x69, 
50327
  0x65, 0x6C, 0x64, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x73, 0x65, 0x72, 0x28, 0x30, 0x2D, 0x37, 0x29, 
50328
  0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x0A, 0x2A, 0x20, 
50329
  0x3A, 0x61, 0x77, 0x61, 0x69, 0x74, 0xDA, 0x08, 0xDA, 0x88, 0x84, 0xDA, 0x88, 0x85, 0xD3, 0x03, 
50330
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x82, 0x74, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA2, 
50331
  0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x74, 0x72, 0x69, 0x6D, 0x72, 0x20, 0x73, 0x74, 
50332
  0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 
50333
  0x6D, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 
50334
  0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 
50335
  0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 
50336
  0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x60, 0x73, 0x65, 0x74, 
50337
  0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 
50338
  0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x68, 0x61, 
50339
  0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 
50340
  0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 
50341
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x86, 0xDA, 0x88, 0x87, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50342
  0x00, 0xDA, 0x80, 0x8F, 0x82, 0x80, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x81, 0x28, 0x62, 0x75, 0x66, 
50343
  0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
50344
  0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 
50345
  0x0A, 0x0A, 0x53, 0x6E, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 
50346
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x66, 0x6F, 
50347
  0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
50348
  0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
50349
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 
50350
  0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 
50351
  0x81, 0x70, 0xDA, 0x82, 0xEE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x90, 0xA2, 
50352
  0x03, 0xDA, 0x06, 0xCE, 0x80, 0xDE, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x75, 0x6E, 
50353
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 
50354
  0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x20, 0x62, 
50355
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
50356
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 
50357
  0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x31, 0x20, 0x68, 0x6F, 0x6F, 0x6B, 0x20, 
50358
  0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x75, 0x6E, 
50359
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x75, 0x6E, 
50360
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x29, 0x2E, 0x20, 0x41, 0x20, 0x75, 0x73, 0x65, 0x72, 
50361
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 
50362
  0x68, 0x6F, 0x6F, 0x6B, 0x20, 0x62, 0x79, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x6E, 0x67, 
50363
  0x20, 0x61, 0x0A, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 
50364
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x69, 
50365
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x73, 0x63, 0x72, 
50366
  0x69, 0x70, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x88, 0xDA, 0x88, 0x95, 0xD3, 0x03, 0xDA, 0x03, 
50367
  0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x4B, 0x86, 0x7A, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC0, 0x28, 0x65, 
50368
  0x6E, 0x76, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 
50369
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x77, 0x61, 0x72, 
50370
  0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 
50371
  0x6F, 0x72, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 
50372
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
50373
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x54, 0x6F, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 
50374
  0x61, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 
50375
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
50376
  0x69, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
50377
  0x74, 0x6F, 0x20, 0x73, 0x77, 0x61, 0x70, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 
50378
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
50379
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 
50380
  0xDA, 0x88, 0x96, 0xDA, 0x88, 0x97, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x88, 
50381
  0x17, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x80, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x79, 0x6D, 0x6C, 0x69, 
50382
  0x6E, 0x6B, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 
50383
  0x74, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 
50384
  0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 
50385
  0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x72, 
50386
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x53, 0x61, 
50387
  0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 
50388
  0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 
50389
  0x74, 0x72, 0x75, 0x65, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x98, 0xDA, 0x88, 0x99, 0xD3, 
50390
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1E, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 
50391
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 0x65, 0x69, 0x6C, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
50392
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6D, 0x61, 0x6C, 0x6C, 0x65, 
50393
  0x73, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
50394
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 
50395
  0x6E, 0x6F, 0x74, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x2E, 
50396
  0xDA, 0x08, 0xDA, 0x88, 0x9A, 0xDA, 0x81, 0x05, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
50397
  0x04, 0x83, 0xC2, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 0x73, 0x6F, 0x72, 0x74, 0x20, 0x69, 
50398
  0x6E, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x29, 
50399
  0x0A, 0x0A, 0x53, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x6E, 
50400
  0x2D, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 
50401
  0x72, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x73, 0x20, 0x71, 0x75, 0x69, 
50402
  0x63, 0x6B, 0x2D, 0x73, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6E, 
50403
  0x6F, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x6F, 0x72, 0x74, 
50404
  0x2E, 0x0A, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x60, 
50405
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 
50406
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 
50407
  0x2C, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
50408
  0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2C, 0x0A, 0x6F, 0x74, 0x68, 
50409
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 0x73, 0x20, 0x60, 0x3C, 0x60, 0x2E, 
50410
  0xDA, 0x08, 0xDA, 0x80, 0xF2, 0xDA, 0x88, 0x9B, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 
50411
  0x62, 0x72, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 0x26, 0x20, 0x73, 0x68, 0x69, 0x66, 
50412
  0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
50413
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x62, 0x69, 0x74, 0x20, 
50414
  0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x79, 
50415
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
50416
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x73, 
50417
  0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 
50418
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x6D, 0x75, 
50419
  0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
50420
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x9C, 0xDA, 0x88, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50421
  0xDA, 0x4C, 0x86, 0xC7, 0x01, 0xDA, 0x06, 0xCE, 0x59, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x6C, 0x65, 
50422
  0x65, 0x70, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 
50423
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 
50424
  0x6E, 0x60, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 
50425
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 
50426
  0x6D, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
50427
  0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x9F, 0xDA, 0x88, 0xA0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50428
  0x00, 0xDA, 0x4C, 0x88, 0x4C, 0x01, 0xDA, 0x06, 0xCE, 0x5A, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x64, 
50429
  0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x63, 
50430
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
50431
  0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
50432
  0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x6E, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 
50433
  0x2C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 
50434
  0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x91, 0xDA, 0x88, 0xA1, 0xD3, 0x03, 0xDA, 0x03, 
50435
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8C, 0x62, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0xFA, 0x28, 0x65, 
50436
  0x76, 0x2F, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x26, 0x6F, 
50437
  0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x73, 
50438
  0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 
50439
  0x60, 0x6D, 0x61, 0x69, 0x6E, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
50440
  0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 
50441
  0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2C, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
50442
  0x6C, 0x6C, 0x79, 0x20, 0x70, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x76, 0x61, 0x6C, 
50443
  0x75, 0x65, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x77, 0x69, 
50444
  0x74, 0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 
50445
  0x72, 0x20, 0x60, 0x6D, 0x61, 0x69, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 
50446
  0x68, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 
50447
  0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 
50448
  0x61, 0x74, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x73, 0x20, 0x30, 0x20, 0x6F, 0x72, 0x20, 
50449
  0x31, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x55, 0x6E, 0x6C, 
50450
  0x69, 0x6B, 0x65, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x69, 
50451
  0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
50452
  0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
50453
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 
50454
  0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 
50455
  0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x77, 
50456
  0x61, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 
50457
  0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x77, 0x61, 
50458
  0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x75, 
50459
  0x6C, 0x74, 0x2C, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x3A, 0x6E, 
50460
  0x60, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
50461
  0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 
50462
  0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 
50463
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6C, 0x61, 
50464
  0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 
50465
  0x6E, 0x60, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x69, 0x6D, 0x6D, 0x65, 
50466
  0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x74, 0x60, 0x20, 0x2D, 
50467
  0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 
50468
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 
50469
  0x61, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 
50470
  0x20, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 
50471
  0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x74, 
50472
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 
50473
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x60, 
50474
  0x20, 0x2D, 0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x61, 0x62, 
50475
  0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x20, 
50476
  0x74, 0x6F, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x28, 0x70, 
50477
  0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6D, 
50478
  0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x60, 0x20, 
50479
  0x2D, 0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x63, 0x66, 0x75, 
50480
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x20, 
50481
  0x74, 0x6F, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x28, 0x70, 
50482
  0x65, 0x72, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6D, 
50483
  0x69, 0x7A, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0xDA, 0x08, 0xDA, 0x88, 0xA2, 0xDA, 0x88, 0xA3, 
50484
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x44, 0x81, 0x04, 0x01, 0xDA, 0x06, 0xCE, 
50485
  0x47, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 
50486
  0x20, 0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x63, 0x29, 0x0A, 0x0A, 0x55, 
50487
  0x6E, 0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 
50488
  0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 
50489
  0x2F, 0x66, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x9F, 0xDA, 0x88, 0xA4, 
50490
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x0F, 0x01, 0xDA, 0x06, 0xCE, 
50491
  0x80, 0xD1, 0x28, 0x67, 0x65, 0x6E, 0x73, 0x79, 0x6D, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
50492
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
50493
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x20, 
50494
  0x61, 0x63, 0x72, 0x6F, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x74, 0x69, 
50495
  0x6D, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x69, 
50496
  0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 
50497
  0x64, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x61, 0x6C, 0x72, 0x65, 
50498
  0x61, 0x64, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x62, 
50499
  0x6F, 0x6C, 0x73, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 
50500
  0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 
50501
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 
50502
  0x72, 0x6F, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 
50503
  0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 
50504
  0x67, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x5C, 0xDA, 0x88, 0xA5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50505
  0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x1F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x49, 0x28, 0x70, 0x72, 0x69, 
50506
  0x6E, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 
50507
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 
50508
  0x6E, 0x73, 0x6F, 0x6C, 0x65, 0x20, 0x28, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 
50509
  0x6F, 0x75, 0x74, 0x29, 0x2E, 0x20, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 
50510
  0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x72, 
50511
  0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 0x72, 0x65, 
50512
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x2E, 0x20, 0x41, 0x66, 
50513
  0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6C, 0x6C, 
50514
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 
50515
  0x6E, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 
50516
  0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 
50517
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 
50518
  0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x29, 0x60, 0x20, 0x74, 0x6F, 
50519
  0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x68, 0x61, 0x74, 0x20, 
50520
  0x74, 0x6F, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 
50521
  0x72, 0x73, 0x20, 0x74, 0x6F, 0x2E, 0x20, 0x45, 0x78, 0x70, 0x65, 0x63, 0x74, 0x73, 0x20, 0x60, 
50522
  0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 
50523
  0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 
50524
  0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 
50525
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50526
  0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x90, 0xDA, 0x88, 0xA6, 0xD3, 0x03, 0xDA, 
50527
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xA5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 
50528
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 0x61, 
50529
  0x74, 0x33, 0x32, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 
50530
  0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 
50531
  0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x79, 0x74, 0x65, 
50532
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x66, 0x6C, 
50533
  0x6F, 0x61, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 
50534
  0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 
50535
  0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
50536
  0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
50537
  0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xA7, 0xDA, 0x88, 0xA8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
50538
  0xDA, 0x90, 0xAA, 0x87, 0x2E, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x01, 0x28, 0x70, 0x65, 0x67, 0x2F, 
50539
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x65, 0x67, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 
50540
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x6F, 0x75, 
50541
  0x72, 0x63, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
50542
  0x72, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x3C, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
50543
  0x70, 0x65, 0x67, 0x3E, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
50544
  0x73, 0x70, 0x65, 0x65, 0x64, 0x20, 0x75, 0x70, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 
50545
  0x67, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x70, 0x65, 
50546
  0x67, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x6D, 
50547
  0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 0x2E, 0x20, 0x57, 
50548
  0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x20, 0x60, 0x28, 0x64, 
50549
  0x79, 0x6E, 0x20, 0x3A, 0x70, 0x65, 0x67, 0x2D, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x29, 
50550
  0x60, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
50551
  0x74, 0x68, 0x65, 0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 
50552
  0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 
50553
  0x77, 0x69, 0x73, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x70, 
50554
  0x65, 0x67, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 
50555
  0xA9, 0xDA, 0x88, 0xAA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x0F, 0x01, 
50556
  0xDA, 0x06, 0xCE, 0x52, 0x28, 0x6C, 0x6F, 0x61, 0x64, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 
50557
  0x69, 0x6D, 0x61, 0x67, 0x65, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 
50558
  0x72, 0x73, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 
50559
  0x20, 0x60, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x60, 0x2E, 0x20, 0x52, 
50560
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
50561
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x3F, 0xDA, 0x88, 0xAB, 0xD3, 0x04, 
50562
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x40, 0x01, 0xDA, 0x06, 0xCE, 0x55, 0x57, 0x68, 
50563
  0x65, 0x6E, 0x20, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x74, 0x68, 
50564
  0x72, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x74, 
50565
  0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x2D, 0x69, 0x64, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
50566
  0x65, 0x20, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 
50567
  0x6F, 0x6E, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 
50568
  0x6F, 0x6C, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0xAC, 0xDA, 0x88, 0xAD, 0xD3, 
50569
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x88, 0x5C, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8A, 
50570
  0x28, 0x6F, 0x73, 0x2F, 0x74, 0x6F, 0x75, 0x63, 0x68, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 
50571
  0x6F, 0x70, 0x74, 0x20, 0x61, 0x63, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x74, 0x69, 
50572
  0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
50573
  0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
50574
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x69, 0x6D, 
50575
  0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x42, 
50576
  0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 
50577
  0x74, 0x69, 0x6D, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
50578
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xAE, 0xDA, 
50579
  0x88, 0xAF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0xA4, 0x01, 0xDA, 0x06, 
50580
  0xCE, 0x80, 0xBB, 0x28, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2D, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x69, 
50581
  0x6E, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 
50582
  0x69, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6B, 0x65, 
50583
  0x79, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 
50584
  0x68, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x61, 
50585
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2C, 
50586
  0x20, 0x61, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x72, 
50587
  0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x2E, 0x0A, 0x57, 
50588
  0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x61, 0x74, 0x20, 
50589
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x73, 
50590
  0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x66, 0x6C, 0x74, 0x60, 
50591
  0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x08, 
50592
  0xDA, 0x88, 0xB0, 0xDA, 0x88, 0xB2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 
50593
  0x84, 0x46, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x2B, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 
50594
  0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 
50595
  0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
50596
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
50597
  0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 
50598
  0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
50599
  0x61, 0x72, 0x73, 0x65, 0x72, 0x27, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 
50600
  0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
50601
  0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 
50602
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6E, 0x75, 
50603
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
50604
  0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 
50605
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x49, 
50606
  0x66, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 
50607
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
50608
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x6E, 0x75, 
50609
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 
50610
  0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
50611
  0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 
50612
  0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xB3, 0xDA, 0x88, 0xB4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50613
  0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x9B, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 0x65, 0x70, 0x72, 
50614
  0x69, 0x6E, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 
50615
  0x69, 0x6B, 0x65, 0x20, 0x60, 0x65, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x60, 0x20, 0x62, 0x75, 
50616
  0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 
50617
  0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x6A, 
50618
  0xDA, 0x88, 0xB5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x84, 0x2D, 0x01, 
50619
  0xDA, 0x06, 0xCE, 0x81, 0x28, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x70, 0x72, 0x6F, 
50620
  0x64, 0x75, 0x63, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
50621
  0x20, 0x77, 0x72, 0x61, 0x70, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 
50622
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 
50623
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 
50624
  0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 
50625
  0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 
50626
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
50627
  0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
50628
  0x73, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x65, 0x71, 0x75, 0x65, 0x75, 0x65, 0x20, 
50629
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 
50630
  0x49, 0x66, 0x20, 0x60, 0x77, 0x72, 0x61, 0x70, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 
50631
  0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
50632
  0x20, 0x61, 0x20, 0x31, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x75, 0x70, 
50633
  0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x72, 0x61, 0x70, 0x73, 0x20, 0x74, 0x68, 
50634
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 
50635
  0x75, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
50636
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6D, 0x61, 0x70, 0x70, 
50637
  0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
50638
  0x12, 0xDA, 0x88, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xCA, 0x01, 
50639
  0xDA, 0x06, 0xCE, 0x81, 0xFB, 0x28, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 
50640
  0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
50641
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, 0x70, 0x6C, 
50642
  0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x65, 
50643
  0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
50644
  0x64, 0x61, 0x74, 0x61, 0x0A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 
50645
  0x69, 0x6E, 0x64, 0x60, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 
50646
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 
50647
  0x65, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 
50648
  0x6E, 0x6F, 0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 
50649
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 
50650
  0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 
50651
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x0A, 
50652
  0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x69, 
50653
  0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
50654
  0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 
50655
  0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x6F, 0x66, 0x20, 0x61, 
50656
  0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 
50657
  0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 
50658
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50659
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0x74, 0x72, 0x75, 0x74, 0x68, 
50660
  0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 0x6E, 0x74, 
50661
  0x65, 0x72, 0x65, 0x64, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
50662
  0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 
50663
  0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x61, 0x73, 0x0A, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x74, 0x69, 
50664
  0x6D, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 
50665
  0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 
50666
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 
50667
  0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x49, 
50668
  0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 
50669
  0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x65, 0x6D, 0x70, 
50670
  0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
50671
  0xDA, 0x08, 0xDA, 0x88, 0xB7, 0xDA, 0x88, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
50672
  0x21, 0x80, 0xF5, 0x01, 0xDA, 0x06, 0xCE, 0x6E, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x65, 
50673
  0x65, 0x64, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x73, 0x65, 0x65, 0x64, 0x29, 0x0A, 0x0A, 
50674
  0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 
50675
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
50676
  0x65, 0x72, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0x20, 0x60, 0x73, 
50677
  0x65, 0x65, 0x64, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 
50678
  0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x62, 
50679
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xC6, 0xDA, 0x87, 0x0E, 0xD3, 0x03, 
50680
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0xAD, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1F, 0x28, 
50681
  0x64, 0x6F, 0x63, 0x2D, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 
50682
  0x6F, 0x70, 0x74, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x6E, 0x74, 
50683
  0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 0x69, 0x7A, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x66, 0x6F, 
50684
  0x72, 0x6D, 0x61, 0x74, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
50685
  0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x61, 0x70, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 
50686
  0x69, 0x6E, 0x20, 0x77, 0x69, 0x64, 0x74, 0x68, 0x2E, 0x20, 0x44, 0x6F, 0x63, 0x73, 0x74, 0x72, 
50687
  0x69, 0x6E, 0x67, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 
50688
  0x62, 0x65, 0x20, 0x70, 0x6C, 0x61, 0x69, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x0A, 0x6F, 0x72, 0x20, 
50689
  0x61, 0x20, 0x73, 0x75, 0x62, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x61, 0x72, 0x6B, 
50690
  0x64, 0x6F, 0x77, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
50691
  0x73, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x6E, 0x67, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 
50692
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x6F, 0x73, 0x65, 0x20, 0x6F, 0x72, 
50693
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
50694
  0x74, 0x6F, 0x20, 0x62, 0x65, 0x0A, 0x61, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2D, 0x66, 0x6F, 0x72, 
50695
  0x6D, 0x65, 0x64, 0x20, 0x64, 0x6F, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 
50696
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
50697
  0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
50698
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2E, 0xDA, 0x08, 
50699
  0xDA, 0x86, 0xF5, 0xDA, 0x88, 0xC7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x0E, 0x73, 
50700
  0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x61, 0x73, 0x6D, 0x2E, 0x63, 0x84, 0x1A, 0x01, 
50701
  0xDA, 0x06, 0xCE, 0x80, 0xF0, 0x28, 0x61, 0x73, 0x6D, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 
50702
  0x6C, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
50703
  0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 
50704
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 
50705
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
50706
  0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x73, 0x79, 0x6E, 
50707
  0x74, 0x61, 0x78, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 
50708
  0x6D, 0x62, 0x6C, 0x79, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
50709
  0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 
50710
  0x65, 0x62, 0x73, 0x69, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 
50711
  0x6C, 0x64, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x0A, 0x74, 0x6F, 
50712
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 
50713
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x2E, 0x20, 0x57, 0x69, 0x6C, 
50714
  0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x0A, 0x65, 0x72, 0x72, 0x6F, 0x72, 
50715
  0x20, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x61, 0x73, 0x73, 0x65, 
50716
  0x6D, 0x62, 0x6C, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xC8, 0xDA, 0x85, 0xB4, 0xD3, 0x03, 0xDA, 
50717
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x1E, 0x01, 0xDA, 0x06, 0xCE, 0x4A, 0x28, 0x63, 0x6F, 
50718
  0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
50719
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
50720
  0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
50721
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 
50722
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xB2, 0xDA, 0x88, 0xC9, 0xD3, 
50723
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x61, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 
50724
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x72, 0x65, 0x78, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
50725
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 
50726
  0x66, 0x20, 0x28, 0x6D, 0x61, 0x6E, 0x74, 0x69, 0x73, 0x73, 0x61, 0x2C, 0x20, 0x65, 0x78, 0x70, 
50727
  0x6F, 0x6E, 0x65, 0x6E, 0x74, 0x29, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
50728
  0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xCA, 0xDA, 0x88, 0xCB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50729
  0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8C, 0xF7, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x89, 0x28, 0x65, 0x76, 
50730
  0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x65, 0x72, 
50731
  0x72, 0x29, 0x0A, 0x0A, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x61, 0x20, 0x73, 0x75, 0x73, 
50732
  0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 
50733
  0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0x20, 
50734
  0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x63, 0x61, 0x6E, 
50735
  0x63, 0x65, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x72, 
50736
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 
50737
  0x6C, 0x65, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 
50738
  0x61, 0x74, 0x65, 0x6C, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xD1, 0xDA, 0x88, 0xCC, 0xD3, 0x03, 
50739
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xF5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBE, 0x28, 
50740
  0x74, 0x68, 0x61, 0x77, 0x20, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x61, 0x77, 0x20, 0x61, 
50741
  0x6E, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x69, 
50742
  0x74, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 
50743
  0x6F, 0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x2C, 0x20, 0x6D, 
50744
  0x61, 0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 
50745
  0x65, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 
50746
  0x43, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65, 0x73, 0x2C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 
50747
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x0A, 0x74, 
50748
  0x79, 0x70, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 
50749
  0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 
50750
  0x77, 0x65, 0x64, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 
50751
  0x65, 0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0xDA, 0x08, 0xDA, 
50752
  0x88, 0xCD, 0xDA, 0x82, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0x54, 
50753
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x31, 0x20, 0x78, 0x20, 
50754
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6F, 0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x29, 
50755
  0x0A, 0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x20, 
50756
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 
50757
  0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 
50758
  0x79, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 
50759
  0x0A, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6D, 0x61, 0x63, 0x65, 0x78, 0x60, 0x20, 0x64, 0x6F, 0x63, 
50760
  0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x20, 0x6F, 0x6E, 0x20, 0x60, 0x6F, 
50761
  0x6E, 0x2D, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x93, 
50762
  0xDA, 0x88, 0xD0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x80, 0x99, 0x01, 
50763
  0xDA, 0x06, 0xCE, 0x82, 0xD5, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6F, 0x70, 0x65, 0x6E, 0x20, 
50764
  0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x62, 
50765
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2D, 0x73, 0x69, 0x7A, 0x65, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 
50766
  0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 
50767
  0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 
50768
  0x6F, 0x72, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 
50769
  0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 
50770
  0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x69, 
50771
  0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
50772
  0x64, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
50773
  0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x2E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 
50774
  0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x77, 0x68, 0x65, 0x72, 
50775
  0x65, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
50776
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x66, 0x6C, 
50777
  0x61, 0x67, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
50778
  0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 
50779
  0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 
50780
  0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
50781
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 
50782
  0x6E, 0x64, 0x6C, 0x65, 0x2E, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 
50783
  0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x72, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 
50784
  0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
50785
  0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x77, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 
50786
  0x77, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
50787
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x61, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 
50788
  0x65, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 
50789
  0x0A, 0x46, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 
50790
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x6C, 
50791
  0x61, 0x67, 0x73, 0x2C, 0x20, 0x30, 0x20, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6F, 
50792
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 
50793
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 
50794
  0x65, 0x6E, 0x64, 0x65, 0x64, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x62, 0x20, 0x2D, 0x20, 0x6F, 0x70, 
50795
  0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 
50796
  0x69, 0x6E, 0x61, 0x72, 0x79, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x72, 0x61, 0x74, 0x68, 
50797
  0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6D, 0x6F, 0x64, 
50798
  0x65, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x2B, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 
50799
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x73, 
50800
  0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 
50801
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x6E, 0x20, 0x2D, 0x20, 0x65, 0x72, 
50802
  0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
50803
  0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x65, 0x64, 
50804
  0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x65, 0x74, 0x75, 
50805
  0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x69, 0x6C, 0x0A, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x66, 
50806
  0x6F, 0x70, 0x65, 0x6E, 0x20, 0x28, 0x3C, 0x73, 0x74, 0x64, 0x69, 0x6F, 0x2E, 0x68, 0x3E, 0x2C, 
50807
  0x20, 0x43, 0x39, 0x39, 0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 
50808
  0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x46, 0xDA, 
50809
  0x88, 0xD1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x13, 0x73, 0x72, 0x63, 0x2F, 0x63, 
50810
  0x6F, 0x72, 0x65, 0x2F, 0x69, 0x6E, 0x74, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2E, 0x63, 0x80, 0xD0, 
50811
  0x01, 0xDA, 0x06, 0xCE, 0x73, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x6E, 0x75, 0x6D, 
50812
  0x62, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 
50813
  0x65, 0x72, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0x20, 0x6F, 
50814
  0x72, 0x20, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6E, 
50815
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x46, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x69, 0x66, 0x20, 
50816
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x75, 
50817
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
50818
  0x6E, 0x20, 0x69, 0x6E, 0x74, 0x36, 0x34, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xD2, 0xDA, 0x88, 0xD3, 
50819
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x92, 0x0B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
50820
  0xA1, 0x28, 0x63, 0x6C, 0x69, 0x2D, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 
50821
  0x0A, 0x0A, 0x45, 0x6E, 0x74, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
50822
  0x68, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x43, 0x4C, 0x49, 0x20, 0x74, 0x6F, 0x6F, 
50823
  0x6C, 0x2E, 0x20, 0x43, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 
50824
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
50825
  0x6F, 0x6D, 0x6D, 0x61, 0x6E, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x0A, 0x61, 0x72, 0x67, 0x75, 
50826
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 
50827
  0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 
50828
  0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x6B, 0x65, 0x20, 
50829
  0x74, 0x68, 0x65, 0x20, 0x43, 0x4C, 0x49, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 
50830
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xD4, 0xDA, 0x89, 0xC8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50831
  0x00, 0xDA, 0x8E, 0xD1, 0x82, 0xCA, 0x01, 0xDA, 0x06, 0xCE, 0x4A, 0x28, 0x65, 0x66, 0x6C, 0x75, 
50832
  0x73, 0x68, 0x29, 0x0A, 0x0A, 0x46, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 
50833
  0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x69, 
50834
  0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 
50835
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 
50836
  0x68, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x1C, 0xDA, 0x89, 0xC9, 0xD3, 0x03, 0xDA, 
50837
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x83, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x19, 0x54, 0x68, 
50838
  0x65, 0x20, 0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 
50839
  0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xED, 0xDA, 0x89, 0xCA, 0xD3, 
50840
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6C, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x63, 
50841
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
50842
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x63, 0x66, 0x75, 0x6E, 0x63, 
50843
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xCB, 0xDA, 0x89, 0xCE, 0xD3, 0x03, 0xDA, 
50844
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x0A, 0x01, 0xDA, 0x06, 0xCE, 0x2A, 0x28, 0x6D, 0x61, 
50845
  0x74, 0x68, 0x2F, 0x61, 0x63, 0x6F, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 
50846
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x63, 0x63, 0x6F, 0x73, 0x69, 0x6E, 
50847
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xCF, 0xDA, 0x89, 0xD0, 0xD3, 
50848
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xCF, 0x01, 0xDA, 0x06, 0xCE, 0x39, 0x28, 
50849
  0x6D, 0x65, 0x61, 0x6E, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
50850
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 
50851
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
50852
  0x72, 0x6E, 0x73, 0x20, 0x4E, 0x61, 0x4E, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xD1, 0xDA, 0x89, 0xDA, 
50853
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x7C, 0x81, 0xFA, 0x01, 0xDA, 0x06, 0xCE, 
50854
  0x84, 0x81, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 
50855
  0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x65, 
50856
  0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 
50857
  0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x75, 0x6E, 
50858
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x2E, 
50859
  0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 
50860
  0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x69, 
50861
  0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x60, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 0x60, 0x20, 
50862
  0x74, 0x6F, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
50863
  0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 
50864
  0x64, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
50865
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x65, 0x6E, 0x76, 0x60, 0x2E, 0x20, 0x54, 0x68, 
50866
  0x65, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
50867
  0x69, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
50868
  0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x63, 0x68, 0x61, 0x72, 
50869
  0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 
50870
  0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 
50871
  0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 0x49, 0x66, 0x20, 
50872
  0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x69, 0x73, 
50873
  0x20, 0x65, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 
50874
  0x69, 0x73, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 
50875
  0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
50876
  0x74, 0x6F, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x73, 
50877
  0x65, 0x20, 0x22, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x65, 0x64, 0x22, 0x20, 0x73, 0x69, 0x67, 0x6E, 
50878
  0x61, 0x6C, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 
50879
  0x69, 0x6E, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6E, 
50880
  0x67, 0x20, 0x73, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 
50881
  0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
50882
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x73, 0x69, 
50883
  0x67, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x79, 0x2E, 0x20, 0x46, 0x6F, 0x72, 
50884
  0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2C, 0x0A, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x28, 
50885
  0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 0x20, 0x6D, 0x79, 0x66, 0x75, 0x6E, 0x20, 
50886
  0x3A, 0x65, 0x31, 0x32, 0x33, 0x29, 0x0A, 0x0A, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x65, 
50887
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x61, 0x6E, 0x64, 
50888
  0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x31, 0x2C, 
50889
  0x20, 0x32, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x33, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 
50890
  0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 
50891
  0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x20, 0x2D, 0x20, 0x62, 0x6C, 
50892
  0x6F, 0x63, 0x6B, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 
50893
  0x2A, 0x20, 0x3A, 0x64, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x64, 0x65, 0x62, 
50894
  0x75, 0x67, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x20, 
50895
  0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 0x69, 
50896
  0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 
50897
  0x63, 0x6B, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 
50898
  0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x3A, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2B, 0x20, 
50899
  0x75, 0x73, 0x65, 0x72, 0x5B, 0x30, 0x2D, 0x34, 0x5D, 0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x20, 0x2D, 
50900
  0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 
50901
  0x61, 0x6C, 0x73, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 
50902
  0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x0A, 0x2A, 
50903
  0x20, 0x3A, 0x77, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x77, 0x61, 0x69, 
50904
  0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x28, 0x75, 0x73, 0x65, 0x72, 0x39, 
50905
  0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x20, 0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 
50906
  0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 
50907
  0x20, 0x28, 0x75, 0x73, 0x65, 0x72, 0x38, 0x29, 0x0A, 0x2A, 0x20, 0x3A, 0x30, 0x2D, 0x39, 0x20, 
50908
  0x2D, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
50909
  0x69, 0x63, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x0A, 0x0A, 
50910
  0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x61, 0x72, 0x67, 0x75, 
50911
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 0x61, 
50912
  0x6B, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 
50913
  0x6C, 0x61, 0x67, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6D, 0x75, 0x74, 
50914
  0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 
50915
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 
50916
  0x74, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 
50917
  0x20, 0x74, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x65, 0x6E, 0x63, 
50918
  0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x69, 0x20, 0x2D, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 
50919
  0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
50920
  0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
50921
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x20, 0x2D, 
50922
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
50923
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x27, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
50924
  0x70, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
50925
  0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 
50926
  0x62, 0x6C, 0x65, 0xDA, 0x08, 0xDA, 0x80, 0xDC, 0xDA, 0x89, 0xDB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
50927
  0x03, 0x00, 0xDA, 0x04, 0x83, 0x7B, 0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 
50928
  0x61, 0x72, 0x65, 0x3C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 
50929
  0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x3C, 0x60, 0x20, 0x62, 0x75, 
50930
  0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 
50931
  0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 
50932
  0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 
50933
  0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 
50934
  0xDA, 0x89, 0xDC, 0xDA, 0x89, 0xE3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x80, 
50935
  0x9B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAB, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 
50936
  0x2D, 0x69, 0x6E, 0x74, 0x20, 0x72, 0x6E, 0x67, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6D, 0x61, 
50937
  0x78, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x61, 0x20, 0x72, 0x61, 
50938
  0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 
50939
  0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x30, 0x2C, 0x20, 0x6D, 0x61, 
50940
  0x78, 0x29, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x78, 0x20, 0x3E, 0x20, 0x30, 0x20, 0x66, 
50941
  0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x52, 0x4E, 0x47, 0x2E, 0x20, 0x20, 0x49, 0x66, 
50942
  0x20, 0x6D, 0x61, 0x78, 0x20, 0x69, 0x73, 0x20, 0x30, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
50943
  0x6E, 0x20, 0x30, 0x2E, 0x20, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x61, 0x78, 0x20, 
50944
  0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 
50945
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x32, 0x5E, 0x33, 0x31, 0x20, 0x2D, 0x20, 
50946
  0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xE4, 0xDA, 0x89, 0xE5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50947
  0x00, 0xDA, 0x04, 0x84, 0xB8, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB7, 0x28, 0x74, 0x61, 0x6B, 0x65, 
50948
  0x20, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x68, 
50949
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
50950
  0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x69, 
50951
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
50952
  0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
50953
  0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
50954
  0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x0A, 0x72, 0x65, 0x73, 0x70, 
50955
  0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6E, 0x60, 
50956
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x74, 0x61, 
50957
  0x6B, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 
50958
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 
50959
  0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xE6, 0xDA, 0x89, 0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
50960
  0x00, 0xDA, 0x21, 0x81, 0x32, 0x01, 0xDA, 0x06, 0xCE, 0x2C, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 
50961
  0x70, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
50962
  0x73, 0x20, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 0x65, 0x72, 
50963
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xF0, 0xDA, 0x89, 0xF1, 0xD3, 0x03, 
50964
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x0D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBE, 
50965
  0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x75, 0x70, 
50966
  0x70, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
50967
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 
50968
  0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 
50969
  0x72, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 
50970
  0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 
50971
  0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x73, 0x65, 
50972
  0x6C, 0x76, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x2E, 0x20, 0x44, 
50973
  0x6F, 0x65, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 
50974
  0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 
50975
  0x6B, 0x2C, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x75, 0x6E, 
50976
  0x69, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x2E, 0xDA, 0x08, 
50977
  0xDA, 0x89, 0xF2, 0xDA, 0x89, 0xF3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 
50978
  0xB4, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8F, 0x54, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
50979
  0x6E, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x20, 
50980
  0x6C, 0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 
50981
  0x6E, 0x67, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
50982
  0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x61, 0x74, 0x20, 0x77, 0x68, 
50983
  0x69, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x77, 0x69, 
50984
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x62, 0x75, 
50985
  0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 
50986
  0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x20, 0x61, 0x73, 0x20, 0x6E, 
50987
  0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x84, 0xDA, 
50988
  0x88, 0x8C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xD0, 0x01, 0xDA, 0x06, 
50989
  0xCE, 0x80, 0xB3, 0x28, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 
50990
  0x6F, 0x70, 0x74, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x3F, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
50991
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x6F, 0x72, 0x74, 
50992
  0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 
50993
  0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 
50994
  0x6C, 0x64, 0x20, 0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x62, 0x65, 
50995
  0x66, 0x6F, 0x72, 0x65, 0x3F, 0x60, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 
50996
  0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 
50997
  0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x73, 0x20, 0x65, 0x6C, 
50998
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 
50999
  0x74, 0x2C, 0x0A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x75, 0x73, 0x65, 
51000
  0x73, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x8A, 0xDA, 0x89, 0xF4, 0xD3, 0x03, 
51001
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xF0, 0x01, 0xDA, 0x06, 0xCE, 0x67, 0x28, 0x69, 
51002
  0x6E, 0x74, 0x65, 0x72, 0x6C, 0x65, 0x61, 0x76, 0x65, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x73, 
51003
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
51004
  0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
51005
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 0x63, 
51006
  0x68, 0x20, 0x63, 0x6F, 0x6C, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
51007
  0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 
51008
  0x20, 0x65, 0x74, 0x63, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xF5, 0xDA, 0x89, 0xF8, 0xD3, 0x03, 0xDA, 
51009
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x87, 0x81, 0x2D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE9, 0x28, 
51010
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x72, 0x61, 0x77, 0x67, 0x65, 0x74, 0x20, 0x73, 0x74, 
51011
  0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 
51012
  0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
51013
  0x74, 0x20, 0x60, 0x73, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6C, 
51014
  0x6F, 0x6F, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 
51015
  0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0x20, 
51016
  0x49, 0x66, 0x20, 0x60, 0x73, 0x74, 0x60, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
51017
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 
51018
  0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6C, 0x79, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
51019
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 
51020
  0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 
51021
  0x63, 0x68, 0x65, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 
51022
  0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
51023
  0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
51024
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xD1, 0xDA, 0x89, 0xF9, 
51025
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x93, 0x01, 0xDA, 0x06, 0xCE, 0x5A, 
51026
  0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 
51027
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 
51028
  0x6E, 0x67, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 
51029
  0x75, 0x65, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 
51030
  0x65, 0x6E, 0x74, 0x0A, 0x63, 0x69, 0x72, 0x63, 0x75, 0x6C, 0x61, 0x72, 0x20, 0x64, 0x65, 0x70, 
51031
  0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x35, 0xDA, 
51032
  0x89, 0xFA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0x9D, 0x01, 0xDA, 0x06, 
51033
  0xCE, 0x47, 0x28, 0x6F, 0x73, 0x2F, 0x6C, 0x73, 0x74, 0x61, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 
51034
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x61, 0x62, 0x7C, 0x6B, 0x65, 0x79, 0x29, 0x0A, 0x0A, 
51035
  0x4C, 0x69, 0x6B, 0x65, 0x20, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x2C, 0x20, 0x62, 0x75, 
51036
  0x74, 0x20, 0x64, 0x6F, 0x6E, 0x27, 0x74, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x73, 
51037
  0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x73, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x81, 0x3D, 0xDA, 0x89, 
51038
  0xFB, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 0xD0, 0x28, 0x70, 0x72, 0x6F, 0x70, 0x61, 0x67, 0x61, 
51039
  0x74, 0x65, 0x20, 0x78, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x6F, 
51040
  0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 
51041
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 
51042
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 
51043
  0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 
51044
  0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
51045
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 
51046
  0x20, 0x60, 0x78, 0x60, 0x2E, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
51047
  0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 
51048
  0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 
51049
  0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
51050
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 
51051
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 0x63, 
51052
  0x6B, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 
51053
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 
51054
  0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6D, 
51055
  0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x49, 
51056
  0x66, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
51057
  0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 
51058
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 
51059
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
51060
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
51061
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x60, 0x66, 0x69, 0x62, 0x65, 0x72, 0x60, 0x2E, 
51062
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 
51063
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
51064
  0x2D, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
51065
  0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 
51066
  0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x63, 
51067
  0x6B, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xC6, 0xDA, 0x89, 0xFC, 
51068
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xDE, 0x81, 0x4F, 0x01, 0xDA, 0x06, 0xCE, 
51069
  0x80, 0xA2, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x6B, 0x65, 
51070
  0x79, 0x73, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 
51071
  0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 
51072
  0x79, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x77, 0x65, 0x61, 
51073
  0x6B, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
51074
  0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 
51075
  0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 
51076
  0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 
51077
  0x20, 0x60, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x2E, 0x20, 0x52, 0x65, 
51078
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 
51079
  0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xFD, 0xDA, 0x89, 0xFE, 0xD3, 0x03, 0xDA, 0x03, 
51080
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x07, 0x01, 0xDA, 0x06, 0xCE, 0x66, 0x28, 0x64, 0x79, 
51081
  0x6E, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
51082
  0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 
51083
  0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
51084
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
51085
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x28, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x29, 0x20, 0x69, 
51086
  0x66, 0x20, 0x6E, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x75, 
51087
  0x6E, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x26, 0xDA, 0x89, 0xFF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
51088
  0x03, 0x00, 0xDA, 0x4C, 0x85, 0xDB, 0x01, 0xDA, 0x06, 0xCE, 0x84, 0xED, 0x28, 0x6F, 0x73, 0x2F, 
51089
  0x73, 0x70, 0x61, 0x77, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
51090
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x65, 0x63, 
51091
  0x75, 0x74, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x6F, 0x6E, 
51092
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x61, 0x6E, 0x64, 0x20, 
51093
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x72, 
51094
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x72, 0x65, 0x70, 0x72, 
51095
  0x65, 0x73, 0x65, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x61, 
51096
  0x77, 0x6E, 0x65, 0x64, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 
51097
  0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 
51098
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, 0x60, 0x6F, 0x73, 
51099
  0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 
51100
  0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 
51101
  0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 
51102
  0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x20, 0x55, 0x6E, 0x6C, 0x69, 
51103
  0x6B, 0x65, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x60, 0x2C, 
51104
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x3A, 0x70, 0x69, 0x70, 
51105
  0x65, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 
51106
  0x6F, 0x72, 0x20, 0x3A, 0x69, 0x6E, 0x2C, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x6E, 0x64, 
51107
  0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x65, 
51108
  0x6E, 0x76, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 
51109
  0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 
51110
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 
51111
  0x65, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 
51112
  0x65, 0x61, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x69, 0x6E, 0x20, 0x66, 
51113
  0x69, 0x65, 0x6C, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 
51114
  0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
51115
  0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x66, 
51116
  0x69, 0x65, 0x6C, 0x64, 0x73, 0x2E, 0x20, 0x4F, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x57, 0x69, 
51117
  0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2C, 0x20, 0x74, 
51118
  0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x50, 0x49, 
51119
  0x44, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
51120
  0x20, 0x3A, 0x70, 0x69, 0x64, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x65, 
51121
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 
51122
  0x6E, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 
51123
  0x6E, 0x67, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 
51124
  0x73, 0x20, 0x28, 0x65, 0x2E, 0x67, 0x2E, 0x20, 0x62, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 
51125
  0x6E, 0x67, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 
51126
  0x60, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 
51127
  0x64, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x76, 
51128
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x63, 
51129
  0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x7A, 0x6F, 0x6D, 0x62, 0x69, 0x65, 0x20, 0x70, 
51130
  0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 
51131
  0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x63, 0x6F, 0x6D, 
51132
  0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 
51133
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 
51134
  0x20, 0x3A, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x66, 0x69, 
51135
  0x65, 0x6C, 0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 
51136
  0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x73, 0x20, 0x27, 0x78, 0x27, 0x2C, 0x20, 0x61, 0x20, 
51137
  0x6E, 0x6F, 0x6E, 0x2D, 0x7A, 0x65, 0x72, 0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 
51138
  0x64, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x61, 0x20, 
51139
  0x77, 0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x74, 0x6F, 
51140
  0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 
51141
  0x20, 0x54, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x3A, 0x70, 0x69, 
51142
  0x70, 0x65, 0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 
51143
  0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x6D, 0x61, 
51144
  0x6E, 0x79, 0x20, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x64, 
51145
  0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
51146
  0x63, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 
51147
  0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 
51148
  0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 
51149
  0x62, 0x79, 0x20, 0x60, 0x3A, 0x70, 0x69, 0x70, 0x65, 0x60, 0x20, 0x28, 0x65, 0x69, 0x74, 0x68, 
51150
  0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 
51151
  0x6F, 0x72, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 
51152
  0x63, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x60, 0x29, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 
51153
  0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 
51154
  0x65, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x72, 0x20, 0x69, 
51155
  0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6F, 
51156
  0x72, 0x20, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 
51157
  0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 
51158
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x6C, 0x6F, 
51159
  0x63, 0x6B, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 
51160
  0x20, 0x41, 0x73, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x63, 0x61, 
51161
  0x73, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x70, 
51162
  0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x3A, 0x65, 0x72, 0x72, 0x60, 0x20, 
51163
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
51164
  0x72, 0x64, 0x20, 0x60, 0x3A, 0x6F, 0x75, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x64, 
51165
  0x69, 0x72, 0x65, 0x63, 0x74, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x20, 0x74, 0x6F, 0x20, 
51166
  0x73, 0x74, 0x64, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 
51167
  0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x00, 0xDA, 0x8A, 
51168
  0x01, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x4E, 0x01, 0xDA, 0x06, 
51169
  0xCE, 0x33, 0x28, 0x65, 0x76, 0x2F, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
51170
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 
51171
  0x6F, 0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x69, 0x6E, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 
51172
  0x65, 0x61, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x02, 0xDA, 0x8A, 0x03, 0xD3, 0x04, 0xDA, 
51173
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xF5, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x0A, 0x28, 0x63, 
51174
  0x6F, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 
51175
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 
51176
  0x6E, 0x73, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x6C, 0x79, 0x20, 
51177
  0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 
51178
  0x74, 0x72, 0x75, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x69, 
51179
  0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 
51180
  0x6E, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
51181
  0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x6F, 0x64, 
51182
  0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 
51183
  0x61, 0x6E, 0x0A, 0x6F, 0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 
51184
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6E, 0x6F, 0x20, 0x66, 
51185
  0x6F, 0x72, 0x6D, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 
51186
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 
51187
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x0A, 0x69, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 
51188
  0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 
51189
  0x6E, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
51190
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x04, 
51191
  0xDA, 0x8A, 0x09, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x15, 0x01, 0xDA, 
51192
  0x06, 0xCE, 0x80, 0xBC, 0x28, 0x64, 0x72, 0x6F, 0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 
51193
  0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 
51194
  0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x72, 0x65, 
51195
  0x6D, 0x6F, 0x76, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x72, 
51196
  0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x6F, 0x72, 
51197
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 
51198
  0x20, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x79, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 
51199
  0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 0x6F, 0x72, 
51200
  0x74, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 
51201
  0x72, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
51202
  0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
51203
  0x67, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 
51204
  0xDA, 0x08, 0xDA, 0x8A, 0x0A, 0xDA, 0x8A, 0x1A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
51205
  0x8E, 0x98, 0x85, 0x44, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC2, 0x28, 0x65, 0x76, 0x2F, 0x74, 0x68, 
51206
  0x72, 0x65, 0x61, 0x64, 0x2D, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 
51207
  0x69, 0x6D, 0x69, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 
51208
  0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
51209
  0x2E, 0x20, 0x41, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x65, 0x64, 0x20, 0x63, 0x68, 0x61, 
51210
  0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
51211
  0x6C, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 
51212
  0x61, 0x72, 0x65, 0x64, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x72, 
51213
  0x65, 0x61, 0x64, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 
51214
  0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x74, 
51215
  0x77, 0x65, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
51216
  0x6F, 0x66, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 
51217
  0x74, 0x65, 0x6D, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 
51218
  0x1B, 0xDA, 0x8A, 0x1C, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0xAC, 0x01, 
51219
  0xDA, 0x06, 0xCE, 0x81, 0x41, 0x28, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 
51220
  0x69, 0x6E, 0x67, 0x20, 0x63, 0x74, 0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 0x26, 
51221
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
51222
  0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x6F, 0x6D, 
51223
  0x65, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 
51224
  0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 
51225
  0x74, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0x65, 0x64, 0x20, 
51226
  0x75, 0x70, 0x0A, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 
51227
  0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 
51228
  0x60, 0x2E, 0x20, 0x60, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x69, 0x73, 0x20, 
51229
  0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 
51230
  0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x74, 0x6F, 0x72, 0x60, 0x2C, 0x20, 
51231
  0x61, 0x6E, 0x64, 0x0A, 0x60, 0x64, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
51232
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x72, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
51233
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 
51234
  0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 
51235
  0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x64, 0x65, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x6F, 
51236
  0x72, 0x0A, 0x28, 0x60, 0x64, 0x74, 0x6F, 0x72, 0x60, 0x29, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 
51237
  0x76, 0x65, 0x6E, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x3A, 
51238
  0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 
51239
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x1D, 0xDA, 0x88, 
51240
  0x1A, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x41, 0x28, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 
51241
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 
51242
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x65, 
51243
  0x71, 0x75, 0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
51244
  0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x87, 0xA6, 0xDA, 0x8A, 0x20, 
51245
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0xBD, 0x01, 0xDA, 0x06, 0xCE, 
51246
  0x81, 0x77, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x70, 0x6C, 0x69, 0x74, 0x20, 
51247
  0x64, 0x65, 0x6C, 0x69, 0x6D, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 
51248
  0x74, 0x61, 0x72, 0x74, 0x20, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x29, 0x0A, 0x0A, 0x53, 0x70, 0x6C, 
51249
  0x69, 0x74, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 
51250
  0x72, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 
51251
  0x72, 0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 
51252
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 
51253
  0x66, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 
51254
  0x65, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 
51255
  0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x74, 0x68, 
51256
  0x65, 0x20, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x72, 0x20, 0x60, 0x64, 0x65, 0x6C, 
51257
  0x69, 0x6D, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x20, 
51258
  0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x74, 0x68, 
51259
  0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
51260
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x65, 
51261
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x74, 0x61, 
51262
  0x72, 0x74, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 
51263
  0x20, 0x60, 0x64, 0x65, 0x6C, 0x69, 0x6D, 0x60, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 
51264
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x28, 0x69, 
51265
  0x66, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x29, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
51266
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 
51267
  0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6C, 0x69, 0x6D, 0x69, 
51268
  0x74, 0x60, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x28, 0x69, 0x66, 0x20, 0x70, 
51269
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xE8, 0xDA, 0x80, 
51270
  0xBD, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x1F, 0x03, 0xDA, 0x06, 0xCE, 
51271
  0x81, 0x69, 0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x64, 0x65, 0x61, 0x64, 0x6C, 
51272
  0x69, 0x6E, 0x65, 0x20, 0x73, 0x65, 0x63, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 
51273
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 
51274
  0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 
51275
  0x60, 0x2C, 0x20, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
51276
  0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x61, 
51277
  0x6E, 0x63, 0x65, 0x6C, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x20, 0x28, 0x72, 
51278
  0x6F, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 
51279
  0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 
51280
  0x60, 0x27, 0x73, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 
51281
  0x74, 0x61, 0x72, 0x74, 0x0A, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x27, 0x73, 0x20, 0x66, 0x69, 
51282
  0x62, 0x65, 0x72, 0x20, 0x62, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x69, 0x6E, 0x67, 0x20, 
51283
  0x69, 0x74, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 
51284
  0x6F, 0x6F, 0x70, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 
51285
  0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 
51286
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x27, 
51287
  0x73, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 
51288
  0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
51289
  0x61, 0x74, 0x20, 0x6C, 0x65, 0x61, 0x73, 0x74, 0x20, 0x60, 0x73, 0x65, 0x63, 0x60, 0x20, 0x73, 
51290
  0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2E, 0x0A, 0x0A, 0x60, 0x73, 0x65, 0x63, 0x60, 0x20, 0x69, 
51291
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
51292
  0x63, 0x61, 0x6E, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 
51293
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 
51294
  0xDA, 0x8A, 0x21, 0xDA, 0x85, 0x0E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 
51295
  0x8D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBF, 0x28, 0x6D, 0x65, 0x72, 0x67, 0x65, 0x2D, 0x69, 0x6E, 
51296
  0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x20, 0x26, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x29, 0x0A, 
51297
  0x0A, 0x4D, 0x65, 0x72, 0x67, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 
51298
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2F, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x20, 
51299
  0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 
51300
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 
51301
  0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 
51302
  0x6F, 0x6E, 0x65, 0x0A, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 
51303
  0x6E, 0x20, 0x60, 0x63, 0x6F, 0x6C, 0x6C, 0x73, 0x60, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 
51304
  0x6C, 0x61, 0x74, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x72, 0x65, 0x70, 
51305
  0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 
51306
  0x73, 0x20, 0x6F, 0x6E, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
51307
  0x60, 0x74, 0x61, 0x62, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x0A, 0xDA, 0x8A, 0x26, 0xD3, 0x03, 
51308
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x24, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8B, 0x41, 
51309
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 
51310
  0x67, 0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x73, 0x20, 0x74, 
51311
  0x6F, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
51312
  0x6F, 0x6E, 0x73, 0x2E, 0x0A, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
51313
  0x6C, 0x65, 0x74, 0x73, 0x20, 0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x60, 0x20, 0x61, 
51314
  0x6E, 0x64, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x20, 0x6C, 0x6F, 0x61, 0x64, 
51315
  0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 
51316
  0x6B, 0x69, 0x6E, 0x64, 0x73, 0x0A, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 
51317
  0x73, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x37, 0xDA, 
51318
  0x8A, 0x27, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x83, 0xC2, 0x01, 0xDA, 
51319
  0x06, 0xCE, 0x80, 0xF2, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x69, 0x6E, 0x73, 0x65, 
51320
  0x72, 0x74, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 
51321
  0x0A, 0x0A, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
51322
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
51323
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 
51324
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 
51325
  0x74, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x70, 0x75, 
51326
  0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 
51327
  0x20, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
51328
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x61, 0x6C, 0x6C, 
51329
  0x6F, 0x77, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 0x64, 
51330
  0x20, 0x65, 0x78, 0x74, 0x72, 0x61, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
51331
  0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x75, 
51332
  0x70, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 
51333
  0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
51334
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x28, 0xDA, 0x8A, 0x29, 0xD3, 0x03, 
51335
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x85, 0x4F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x83, 
51336
  0x28, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x61, 0x6E, 0x2D, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x63, 
51337
  0x68, 0x61, 0x6E, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x61, 0x20, 0x63, 0x68, 
51338
  0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x41, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x20, 
51339
  0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 
51340
  0x73, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x72, 
51341
  0x65, 0x61, 0x64, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 
51342
  0x74, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 
51343
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 
51344
  0x65, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x2A, 0xDA, 0x7F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51345
  0x00, 0xDA, 0x04, 0x85, 0x64, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB5, 0x28, 0x6B, 0x65, 0x65, 0x70, 
51346
  0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x21, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 
51347
  0x61, 0x66, 0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x6B, 0x65, 
51348
  0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
51349
  0x69, 0x66, 0x20, 0x60, 0x61, 0x66, 0x74, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
51350
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 
51351
  0x65, 0x72, 0x63, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 
51352
  0x6C, 0x65, 0x2E, 0x0A, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 
51353
  0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x63, 0x74, 0x69, 0x63, 
51354
  0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x65, 
51355
  0x6E, 0x20, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x69, 0x6E, 0x67, 0x20, 0x61, 
51356
  0x6E, 0x20, 0x61, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x73, 0x2E, 
51357
  0xDA, 0x08, 0xDA, 0x71, 0xDA, 0x83, 0xFB, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x3E, 0x20, 
51358
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
51359
  0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6E, 0x64, 
51360
  0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
51361
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 
51362
  0x80, 0xF8, 0xDA, 0x8A, 0x2B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x34, 
51363
  0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6E, 0x65, 0x78, 0x74, 0x20, 
51364
  0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
51365
  0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 
51366
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 
51367
  0x69, 0x6E, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 
51368
  0x78, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 
51369
  0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x2C, 0xDA, 0x83, 0x51, 
51370
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x69, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x28, 
51371
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
51372
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 
51373
  0x77, 0x6F, 0x72, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x4E, 0xDA, 0x8A, 0x18, 0xD3, 0x03, 0xDA, 
51374
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x81, 0x28, 0x66, 
51375
  0x69, 0x6E, 0x64, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x6F, 0x70, 
51376
  0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 0x74, 0x68, 
51377
  0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 
51378
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 
51379
  0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x61, 0x74, 0x69, 
51380
  0x73, 0x66, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 
51381
  0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x60, 0x64, 0x66, 0x6C, 0x74, 
51382
  0x60, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 
51383
  0x08, 0xDA, 0x8A, 0x16, 0xDA, 0x8A, 0x2D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 
51384
  0x80, 0xCD, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB4, 0x28, 0x6F, 0x73, 0x2F, 0x61, 0x72, 0x63, 0x68, 
51385
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 0x20, 0x49, 0x53, 0x41, 
51386
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x61, 0x73, 0x20, 
51387
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 
51388
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 
51389
  0x20, 0x3A, 0x78, 0x38, 0x36, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x78, 0x36, 0x34, 0x0A, 0x0A, 0x2A, 
51390
  0x20, 0x3A, 0x61, 0x72, 0x6D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x61, 0x72, 0x63, 0x68, 0x36, 
51391
  0x34, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x72, 0x69, 0x73, 0x63, 0x76, 0x33, 0x32, 0x0A, 0x0A, 0x2A, 
51392
  0x20, 0x3A, 0x72, 0x69, 0x73, 0x63, 0x76, 0x36, 0x34, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x70, 
51393
  0x61, 0x72, 0x63, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x61, 0x73, 0x6D, 0x0A, 0x0A, 0x2A, 0x20, 
51394
  0x3A, 0x73, 0x33, 0x39, 0x30, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x33, 0x39, 0x30, 0x78, 0x0A, 
51395
  0x0A, 0x2A, 0x20, 0x3A, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x0A, 0xDA, 0x08, 0xDA, 0x89, 
51396
  0x13, 0xDA, 0x8A, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x82, 
51397
  0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 
51398
  0x2D, 0x72, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 
51399
  0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x6C, 
51400
  0x6F, 0x63, 0x6B, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 
51401
  0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0x20, 0xDA, 0x82, 
51402
  0xF7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x7C, 0x03, 0xDA, 0x06, 0xCE, 
51403
  0x4D, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x77, 0x68, 0x6F, 0x69, 0x73, 0x20, 0x70, 
51404
  0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 
51405
  0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x20, 
51406
  0x6F, 0x75, 0x74, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 
51407
  0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x74, 0x2E, 0xDA, 0x08, 
51408
  0xDA, 0x8A, 0x2F, 0xDA, 0x8A, 0x35, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xCE, 0x12, 0x73, 
51409
  0x72, 0x63, 0x2F, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2E, 
51410
  0x63, 0x84, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xB9, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 
51411
  0x65, 0x20, 0x61, 0x73, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x73, 
51412
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 
51413
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x41, 0x62, 0x73, 0x74, 0x72, 0x61, 
51414
  0x63, 0x74, 0x20, 0x53, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x54, 0x72, 0x65, 0x65, 0x20, 0x28, 
51415
  0x61, 0x73, 0x74, 0x29, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
51416
  0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x50, 0x61, 0x69, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
51417
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
51418
  0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 
51419
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6D, 
51420
  0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 
51421
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 
51422
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
51423
  0x74, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x20, 0x61, 0x73, 0x74, 0x2E, 0x20, 0x52, 0x65, 
51424
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 
51425
  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 
51426
  0x3A, 0x6C, 0x69, 0x6E, 0x65, 0x2C, 0x20, 0x3A, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2C, 0x20, 
51427
  0x61, 0x6E, 0x64, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x63, 0x6F, 
51428
  0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x2E, 
51429
  0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x60, 0x6C, 0x69, 0x6E, 0x74, 0x73, 0x60, 0x20, 0x61, 0x72, 
51430
  0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2C, 0x20, 0x6C, 0x69, 
51431
  0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x20, 0x77, 
51432
  0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 
51433
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x45, 0x61, 
51434
  0x63, 0x68, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
51435
  0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
51436
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x60, 0x28, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x6C, 
51437
  0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x29, 
51438
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x49, 0xDA, 0x82, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51439
  0x00, 0xDA, 0x04, 0x90, 0xE1, 0x03, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
51440
  0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x3F, 0x20, 0x62, 0x75, 0x6E, 
51441
  0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
51442
  0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 
51443
  0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x36, 0xDA, 
51444
  0x8A, 0x38, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x76, 0x01, 0xDA, 0x06, 
51445
  0xCE, 0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 
51446
  0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 
51447
  0x20, 0x60, 0x3D, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 
51448
  0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 
51449
  0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 
51450
  0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 
51451
  0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x39, 0xDA, 0x8A, 0x40, 0xD3, 0x02, 0xDA, 
51452
  0x06, 0xCE, 0x32, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x64, 0x20, 0x69, 0x64, 0x65, 
51453
  0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
51454
  0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x70, 0x72, 0x6F, 
51455
  0x67, 0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x16, 0xDA, 0x8A, 0x41, 0xD3, 0x02, 0xDA, 
51456
  0x06, 0xCE, 0x3F, 0x28, 0x3C, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
51457
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 
51458
  0x73, 0x63, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 
51459
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 
51460
  0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xF4, 0xDA, 0x85, 0x39, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51461
  0x00, 0xDA, 0x04, 0x89, 0xE7, 0x01, 0xDA, 0x06, 0xCE, 0x52, 0x28, 0x62, 0x61, 0x64, 0x2D, 0x63, 
51462
  0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
51463
  0x66, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x69, 0x6E, 
51464
  0x65, 0x20, 0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
51465
  0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x6F, 
51466
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 
51467
  0x2F, 0xDA, 0x8A, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x80, 0xB9, 
51468
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x86, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x6F, 0x70, 
51469
  0x20, 0x61, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x74, 0x68, 
51470
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
51471
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 
51472
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 
51473
  0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 
51474
  0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 
51475
  0x6C, 0x2E, 0x20, 0x4D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
51476
  0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 
51477
  0x7B, 0xDA, 0x8A, 0x43, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x85, 0x01, 
51478
  0xDA, 0x06, 0xCE, 0x63, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x3E, 0x20, 0x26, 0x20, 
51479
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 0x74, 0x20, 
51480
  0x6F, 0x66, 0x20, 0x60, 0x3E, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 
51481
  0x20, 0x70, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 0x60, 0x63, 0x6F, 
51482
  0x6D, 0x70, 0x61, 0x72, 0x65, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 
51483
  0x66, 0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
51484
  0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x44, 0xDA, 0x8A, 0x4B, 0xD3, 
51485
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0xB2, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 
51486
  0x28, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
51487
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 
51488
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x2C, 
51489
  0x20, 0x6F, 0x72, 0x20, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x72, 0x79, 0x2E, 0xDA, 
51490
  0x08, 0xDA, 0x40, 0xDA, 0x8A, 0x4C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 
51491
  0x81, 0x7F, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x54, 0x28, 0x73, 0x63, 0x61, 0x6E, 0x2D, 0x6E, 0x75, 
51492
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x61, 
51493
  0x73, 0x65, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 
51494
  0x62, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
51495
  0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 
51496
  0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 
51497
  0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
51498
  0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x2E, 0x20, 0x54, 0x68, 
51499
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 
51500
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x66, 0x6F, 0x72, 
51501
  0x6D, 0x61, 0x74, 0x20, 0x61, 0x73, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x69, 
51502
  0x6E, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x63, 
51503
  0x6F, 0x64, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51504
  0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x61, 0x6C, 
51505
  0x69, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 
51506
  0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 
51507
  0x62, 0x61, 0x73, 0x65, 0x20, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x62, 0x61, 0x73, 0x65, 
51508
  0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x6E, 0x6F, 
51509
  0x20, 0x72, 0x61, 0x64, 0x69, 0x78, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 
51510
  0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 
51511
  0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 
51512
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 
51513
  0x3C, 0xDA, 0x8A, 0x4D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0xA7, 
51514
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC5, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 
51515
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 
51516
  0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 
51517
  0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 
51518
  0x64, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x77, 0x61, 0x69, 0x74, 
51519
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
51520
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 0x69, 0x76, 0x65, 0x20, 0x72, 0x61, 0x74, 0x68, 0x65, 
51521
  0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 0x61, 
51522
  0x72, 0x6C, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
51523
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 
51524
  0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 
51525
  0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 
51526
  0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x4E, 
51527
  0xDA, 0x8A, 0x4F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x87, 0x12, 0x01, 
51528
  0xDA, 0x06, 0xCE, 0x49, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0x20, 0x70, 0x6F, 
51529
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 0x20, 0x6D, 0x65, 0x6D, 
51530
  0x6F, 0x72, 0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 
51531
  0x74, 0x68, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x60, 0x2E, 
51532
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 
51533
  0x8A, 0x50, 0xDA, 0x8A, 0x51, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xF7, 
51534
  0x01, 0xDA, 0x06, 0xCE, 0x5D, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x78, 
51535
  0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x73, 0x20, 0x78, 0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 
51536
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
51537
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 
51538
  0x74, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 
51539
  0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x75, 0x6E, 0x71, 0x75, 0x6F, 0x74, 
51540
  0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x52, 0xDA, 0x8A, 0x54, 0xD3, 0x03, 0xDA, 
51541
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x9D, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x65, 
51542
  0x76, 0x2F, 0x72, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 
51543
  0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 
51544
  0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 
51545
  0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 
51546
  0x63, 0x6B, 0xDA, 0x08, 0xDA, 0x8A, 0x55, 0xDA, 0x83, 0x19, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51547
  0x00, 0xDA, 0x04, 0x70, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3F, 
51548
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
51549
  0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x17, 
51550
  0xDA, 0x8A, 0x56, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x22, 0x01, 
51551
  0xDA, 0x06, 0xCE, 0x80, 0xD3, 0x28, 0x67, 0x63, 0x73, 0x65, 0x74, 0x69, 0x6E, 0x74, 0x65, 0x72, 
51552
  0x76, 0x61, 0x6C, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x53, 
51553
  0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x75, 
51554
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 
51555
  0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 
51556
  0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x67, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 
51557
  0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x4C, 0x6F, 0x77, 
51558
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x6E, 0x74, 0x65, 
51559
  0x72, 0x76, 0x61, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x73, 0x6C, 0x6F, 
51560
  0x77, 0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6C, 0x65, 0x73, 0x73, 
51561
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x76, 0x61, 
51562
  0x6C, 0x75, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x66, 0x61, 0x73, 
51563
  0x74, 0x65, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 
51564
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x57, 0xDA, 0x8A, 0x58, 
51565
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0xFC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
51566
  0x82, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6F, 0x72, 0x61, 0x6E, 0x64, 0x20, 
51567
  0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
51568
  0x20, 0x6F, 0x72, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x62, 
51569
  0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x67, 0x6F, 0x6F, 0x64, 0x20, 0x71, 0x75, 0x61, 
51570
  0x6C, 0x69, 0x74, 0x79, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x64, 0x61, 0x74, 0x61, 
51571
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 
51572
  0x20, 0x4F, 0x53, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
51573
  0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x62, 0x75, 
51574
  0x66, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x59, 0xDA, 0x8A, 0x5A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
51575
  0x03, 0x00, 0xDA, 0x21, 0x81, 0x0C, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 
51576
  0x2F, 0x61, 0x74, 0x61, 0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
51577
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 
51578
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x5B, 0xDA, 0x8A, 0x5C, 0xD3, 0x03, 
51579
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x94, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xD4, 
51580
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
51581
  0x20, 0x6E, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 
51582
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x61, 0x64, 0x20, 
51583
  0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 
51584
  0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 
51585
  0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
51586
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 
51587
  0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 
51588
  0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x63, 0x61, 0x6E, 
51589
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 
51590
  0x77, 0x6F, 0x72, 0x64, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x72, 
51591
  0x65, 0x61, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 
51592
  0x66, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
51593
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6C, 0x65, 0x73, 0x73, 
51594
  0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 
51595
  0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x28, 0x61, 0x6E, 0x64, 
51596
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x30, 0x29, 0x2C, 0x20, 0x77, 
51597
  0x69, 0x6C, 0x6C, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x62, 
51598
  0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
51599
  0x65, 0x61, 0x72, 0x6C, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 
51600
  0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 
51601
  0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 
51602
  0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 
51603
  0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 
51604
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 
51605
  0x69, 0x74, 0x68, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x6D, 0x6F, 0x72, 0x65, 
51606
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x69, 0x74, 0x2C, 0x20, 0x6F, 0x72, 
51607
  0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
51608
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x61, 0x69, 
51609
  0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x5D, 0xDA, 0x85, 0xBC, 0xD3, 0x03, 0xDA, 0x03, 
51610
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x87, 0x01, 0xDA, 0x06, 0xCE, 0x76, 0x28, 0x66, 0x69, 0x6E, 
51611
  0x64, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 
51612
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 
51613
  0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x69, 
51614
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 
51615
  0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 
51616
  0x74, 0x72, 0x75, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 
51617
  0x66, 0x6C, 0x74, 0x60, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
51618
  0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xB9, 0xDA, 0x88, 0x00, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51619
  0x00, 0xDA, 0x04, 0x91, 0xB6, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xB7, 0x28, 0x62, 0x75, 0x6E, 0x64, 
51620
  0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x6D, 0x61, 0x6E, 0x70, 0x61, 0x67, 0x65, 0x20, 0x6D, 
51621
  0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 
51622
  0x20, 0x6D, 0x61, 0x6E, 0x73, 0x65, 0x63, 0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 
51623
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x20, 
51624
  0x73, 0x75, 0x62, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6F, 0x66, 0x20, 
51625
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x79, 0x73, 0x70, 
51626
  0x61, 0x74, 0x68, 0x2E, 0x20, 0x46, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x0A, 0x63, 
51627
  0x6F, 0x70, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 0x64, 
51628
  0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x60, 0x6D, 0x61, 0x6E, 0x73, 0x65, 0x63, 
51629
  0x60, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 
51630
  0x6D, 0x61, 0x6E, 0x73, 0x65, 0x63, 0x60, 0x20, 0x69, 0x73, 0x20, 0x22, 0x6D, 0x61, 0x6E, 0x31, 
51631
  0x22, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x5E, 0xDA, 0x8A, 0x62, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51632
  0x00, 0xDA, 0x8E, 0xD1, 0x83, 0x43, 0x01, 0xDA, 0x06, 0xCE, 0x18, 0x54, 0x68, 0x65, 0x20, 0x73, 
51633
  0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x66, 0x69, 
51634
  0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x63, 0xDA, 0x8A, 0x64, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
51635
  0x03, 0x00, 0xDA, 0x04, 0x8B, 0x1C, 0x01, 0xDA, 0x06, 0xCE, 0x2F, 0x44, 0x79, 0x6E, 0x61, 0x6D, 
51636
  0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 
51637
  0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
51638
  0x65, 0x2F, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x60, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 
51639
  0xDA, 0x81, 0xA1, 0xDA, 0x80, 0x83, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 
51640
  0xF0, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xCB, 0x28, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 0x20, 0x62, 
51641
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x74, 0x72, 0x75, 0x20, 0x26, 0x6F, 0x70, 0x74, 
51642
  0x20, 0x66, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x6B, 0x65, 0x20, 0x6D, 0x75, 0x6C, 0x74, 
51643
  0x69, 0x70, 0x6C, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2C, 0x20, 0x61, 
51644
  0x6E, 0x64, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 
51645
  0x75, 0x74, 0x68, 0x79, 0x2C, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 
51646
  0x68, 0x65, 0x20, 0x60, 0x74, 0x72, 0x75, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x20, 0x49, 
51647
  0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 
51648
  0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
51649
  0x0A, 0x74, 0x68, 0x65, 0x20, 0x60, 0x66, 0x61, 0x6C, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 
51650
  0x20, 0x42, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 
51651
  0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x20, 0x61, 
51652
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x65, 0x74, 0x60, 0x20, 0x6D, 0x61, 0x63, 0x72, 
51653
  0x6F, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x65, 0xDA, 0x80, 0xCA, 0xD3, 0x04, 0xDA, 
51654
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x72, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 0x28, 0x64, 
51655
  0x65, 0x66, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
51656
  0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 0x75, 0x6E, 
51657
  0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x66, 
51658
  0x74, 0x65, 0x72, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x2C, 0x20, 0x65, 0x76, 0x65, 0x6E, 
51659
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x74, 0x68, 0x72, 
51660
  0x6F, 0x77, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x0A, 0x57, 0x69, 
51661
  0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 
51662
  0x6D, 0x60, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 
51663
  0x6E, 0x61, 0x6C, 0x20, 0x30, 0x2D, 0x34, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 
51664
  0x76, 0x65, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0x18, 0xDA, 0x8A, 0x6F, 0xD3, 
51665
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x83, 0x52, 0x01, 0xDA, 0x06, 0xCE, 0x37, 0x28, 
51666
  0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x69, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 
51667
  0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x49, 0x44, 0x20, 0x6F, 
51668
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 
51669
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x70, 0xDA, 0x8A, 0x71, 0xD3, 0x04, 
51670
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xD2, 0x01, 0xDA, 0x06, 0xCE, 0x55, 0x28, 0x61, 
51671
  0x73, 0x73, 0x65, 0x72, 0x74, 0x66, 0x20, 0x78, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x61, 
51672
  0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 0x65, 0x6E, 0x63, 
51673
  0x65, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 
51674
  0x62, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x60, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x60, 0x20, 0x61, 
51675
  0x6E, 0x64, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
51676
  0x74, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x72, 0xDA, 0x8A, 0x74, 0xD3, 0x03, 
51677
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x7D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD5, 0x28, 0x6D, 
51678
  0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 0x65, 
51679
  0x64, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x50, 0x73, 
51680
  0x65, 0x75, 0x64, 0x6F, 0x2D, 0x52, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
51681
  0x65, 0x72, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x2C, 0x20, 0x77, 0x69, 
51682
  0x74, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 
51683
  0x65, 0x65, 0x64, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x65, 0x64, 0x20, 0x73, 0x68, 
51684
  0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 
51685
  0x6E, 0x65, 0x64, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
51686
  0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 
51687
  0x44, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
51688
  0x66, 0x6F, 0x72, 0x20, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6F, 0x67, 0x72, 0x61, 0x70, 0x68, 0x79, 
51689
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 
51690
  0x2F, 0x72, 0x6E, 0x67, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 
51691
  0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x75, 0xDA, 0x8A, 0x76, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
51692
  0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x31, 0x01, 0xDA, 0x06, 0xCE, 0x5A, 0x28, 0x65, 0x70, 0x72, 
51693
  0x69, 0x6E, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 
51694
  0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x75, 0x73, 
51695
  0x65, 0x73, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 
51696
  0x64, 0x65, 0x72, 0x72, 0x29, 0x60, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 
51697
  0x66, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x6F, 0x75, 0x74, 0x20, 0x73, 0x74, 0x64, 
51698
  0x6F, 0x75, 0x74, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x65, 0xDA, 0x8A, 0x77, 0xD3, 0x04, 
51699
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x3E, 0x01, 0xDA, 0x06, 0xCE, 0x6A, 0x57, 0x68, 
51700
  0x65, 0x6E, 0x20, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 
51701
  0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x63, 
51702
  0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 
51703
  0x74, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 
51704
  0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x72, 0x65, 0x70, 0x6C, 
51705
  0x20, 0x28, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x20, 
51706
  0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 
51707
  0x49, 0xDA, 0x85, 0xCE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0x50, 0x01, 
51708
  0xDA, 0x06, 0xCE, 0x81, 0xB1, 0x28, 0x6D, 0x61, 0x70, 0x63, 0x61, 0x74, 0x20, 0x66, 0x20, 0x69, 
51709
  0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x70, 0x20, 
51710
  0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 
51711
  0x76, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
51712
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
51713
  0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x75, 0x73, 
51714
  0x65, 0x20, 0x60, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x60, 
51715
  0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 0x20, 
51716
  0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 
51717
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x0A, 0x6E, 0x6F, 0x20, 0x60, 0x69, 0x6E, 0x64, 
51718
  0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 
51719
  0x20, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
51720
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
51721
  0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x0A, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 
51722
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 
51723
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
51724
  0x60, 0x66, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
51725
  0x6E, 0x20, 0x6F, 0x66, 0x0A, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 
51726
  0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 
51727
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x4E, 
51728
  0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x66, 0x60, 0x20, 0x69, 0x73, 0x20, 
51729
  0x6F, 0x6E, 0x6C, 0x79, 0x0A, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
51730
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x63, 0x65, 
51731
  0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x72, 0x67, 
51732
  0x65, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
51733
  0x0A, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 
51734
  0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 
51735
  0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xCC, 0xDA, 0x8A, 0x78, 0xD3, 0x04, 
51736
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x98, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x63, 
51737
  0x68, 0x72, 0x20, 0x63, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 
51738
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 
51739
  0x68, 0x20, 0x31, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
51740
  0x28, 0x61, 0x73, 0x63, 0x69, 0x69, 0x29, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 0x74, 
51741
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0xDA, 0x59, 
51742
  0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x79, 0xDA, 0x8A, 0x7D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
51743
  0xDA, 0x04, 0x8B, 0xA7, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x41, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 
51744
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 
51745
  0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x64, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 
51746
  0x65, 0x64, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x66, 0x6F, 0x72, 
51747
  0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x38, 
51748
  0xDA, 0x82, 0x22, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x1E, 0x01, 0xDA, 
51749
  0x06, 0xCE, 0x69, 0x28, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x6F, 0x73, 0x65, 0x20, 0x73, 0x65, 
51750
  0x70, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
51751
  0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
51752
  0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 
51753
  0x6E, 0x64, 0x60, 0x20, 0x73, 0x65, 0x70, 0x61, 0x72, 0x61, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 
51754
  0x0A, 0x60, 0x73, 0x65, 0x70, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
51755
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 
51756
  0x20, 0xDA, 0x8A, 0x7E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0xAA, 0x87, 0xBE, 
51757
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x56, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 
51758
  0x63, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 
51759
  0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 
51760
  0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x66, 0x69, 
51761
  0x72, 0x73, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x65, 
51762
  0x67, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 
51763
  0x68, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
51764
  0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
51765
  0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 
51766
  0x6E, 0x6F, 0x74, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 
51767
  0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x6F, 0x20, 
51768
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 
51769
  0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
51770
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 
51771
  0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
51772
  0x65, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
51773
  0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 
51774
  0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 
51775
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 
51776
  0x64, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
51777
  0x6E, 0x70, 0x75, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x61, 
51778
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 
51779
  0x7F, 0xDA, 0x81, 0x4E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xCD, 0x01, 
51780
  0xDA, 0x06, 0xCE, 0x75, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 
51781
  0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 
51782
  0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x65, 0x72, 0x72, 0x6F, 0x72, 
51783
  0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 
51784
  0x72, 0x6D, 0x61, 0x74, 0x60, 0x2E, 0x20, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 0x6E, 
51785
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x74, 
51786
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 
51787
  0x3B, 0x61, 0x72, 0x67, 0x73, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x49, 0xDA, 0x85, 
51788
  0x19, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0xC7, 0x01, 0xDA, 0x06, 0xCE, 
51789
  0x81, 0x15, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x2D, 0x6F, 0x6E, 0x2D, 0x73, 
51790
  0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 
51791
  0x65, 0x76, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6C, 0x29, 0x0A, 0x0A, 0x43, 
51792
  0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
51793
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 
51794
  0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 
51795
  0x65, 0x78, 0x74, 0x60, 0x27, 0x73, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 
51796
  0x75, 0x73, 0x60, 0x20, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 
51797
  0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x72, 0x6F, 0x70, 0x20, 0x69, 0x6E, 0x74, 
51798
  0x6F, 0x20, 0x61, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x20, 
51799
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x62, 0x75, 
51800
  0x67, 0x67, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
51801
  0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 
51802
  0x6C, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 
51803
  0x20, 0x65, 0x6E, 0x76, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 
51804
  0x68, 0x65, 0x20, 0x60, 0x3A, 0x64, 0x65, 0x62, 0x75, 0x67, 0x60, 0x20, 0x64, 0x79, 0x6E, 0x20, 
51805
  0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
51806
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x16, 0xDA, 0x8A, 0x80, 0xD3, 
51807
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x50, 0x01, 0xDA, 0x06, 0xCE, 0x56, 0x28, 0x74, 
51808
  0x6F, 0x67, 0x67, 0x6C, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x65, 
51809
  0x74, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x73, 
51810
  0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 
51811
  0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x73, 0x65, 0x74, 0x20, 
51812
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
51813
  0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x81, 0xDA, 0x8A, 0x83, 0xD3, 
51814
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0x13, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
51815
  0xA8, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 0x79, 
51816
  0x74, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 
51817
  0x0A, 0x41, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 
51818
  0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
51819
  0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
51820
  0x72, 0x20, 0x61, 0x73, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x2E, 0x20, 
51821
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
51822
  0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 
51823
  0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
51824
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 
51825
  0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x84, 0xDA, 0x8A, 
51826
  0x85, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0x95, 0x01, 0xDA, 0x06, 
51827
  0xCE, 0x80, 0x84, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 
51828
  0x75, 0x69, 0x6E, 0x74, 0x36, 0x34, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 
51829
  0x64, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 
51830
  0x61, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 0x65, 
51831
  0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 
51832
  0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 
51833
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
51834
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
51835
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x86, 0xDA, 0x8A, 0x87, 0xD3, 
51836
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xD4, 0x01, 0xDA, 0x06, 0xCE, 0x73, 
51837
  0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x61, 0x74, 0x20, 
51838
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x26, 0x20, 0x78, 
51839
  0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x62, 0x75, 0x66, 0x66, 
51840
  0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x6F, 0x70, 
51841
  0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 
51842
  0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
51843
  0x20, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x65, 
51844
  0x78, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x88, 0xDA, 0x8A, 0x89, 0xD3, 0x05, 0xDA, 0x86, 0x28, 
51845
  0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x38, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x01, 
51846
  0x28, 0x76, 0x61, 0x72, 0x66, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 
51847
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 
51848
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 
51849
  0x62, 0x65, 0x20, 0x72, 0x65, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x60, 0x76, 0x61, 0x72, 
51850
  0x66, 0x6E, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 
51851
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x0A, 0x61, 0x73, 0x20, 0x60, 0x64, 
51852
  0x65, 0x66, 0x6E, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 
51853
  0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 
51854
  0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 
51855
  0x73, 0x20, 0x76, 0x61, 0x72, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 
51856
  0x20, 0x60, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x0A, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 
51857
  0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 
51858
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 
51859
  0x20, 0x72, 0x65, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
51860
  0x6E, 0x65, 0x77, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x52, 0x65, 
51861
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x0A, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
51862
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x8A, 0xDA, 0x8A, 0x94, 0xD3, 0x03, 0xDA, 0x03, 
51863
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0x6F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 0x28, 0x6E, 
51864
  0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2D, 0x75, 0x6E, 0x70, 0x61, 0x63, 
51865
  0x6B, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 
51866
  0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x72, 0x65, 0x74, 
51867
  0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 
51868
  0x72, 0x65, 0x73, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x68, 
51869
  0x6F, 0x73, 0x74, 0x2C, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x70, 0x61, 0x69, 0x72, 0x2E, 0x20, 
51870
  0x55, 0x6E, 0x69, 0x78, 0x20, 0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 
51871
  0x65, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 
51872
  0x6C, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x74, 
51873
  0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 
51874
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x95, 0xDA, 0x89, 0x1E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
51875
  0x00, 0xDA, 0x04, 0x8E, 0xCC, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x88, 0x28, 0x72, 0x65, 0x70, 0x6C, 
51876
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x20, 0x6F, 0x6E, 0x73, 
51877
  0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
51878
  0x20, 0x72, 0x65, 0x61, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 
51879
  0x70, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 
51880
  0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
51881
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
51882
  0x74, 0x6F, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x0A, 0x67, 0x65, 0x74, 0x20, 0x61, 
51883
  0x20, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
51884
  0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 
51885
  0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x66, 0x6F, 0x72, 
51886
  0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x0A, 0x54, 0x68, 
51887
  0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 
51888
  0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
51889
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
51890
  0x77, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x69, 0x73, 
51891
  0x0A, 0x63, 0x61, 0x75, 0x67, 0x68, 0x74, 0x2E, 0x20, 0x4F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 
51892
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 
51893
  0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
51894
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x75, 0x6E, 0x0A, 0x74, 0x68, 
51895
  0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x69, 0x6E, 0x2C, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 
51896
  0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
51897
  0x6C, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 
51898
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x61, 0x73, 
51899
  0x73, 0x0A, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 
51900
  0x74, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x1A, 0xDA, 0x8A, 0x96, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
51901
  0x03, 0x00, 0xDA, 0x4C, 0x86, 0x43, 0x01, 0xDA, 0x06, 0xCE, 0x35, 0x28, 0x6F, 0x73, 0x2F, 0x65, 
51902
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x63, 
51903
  0x6F, 0x70, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x20, 0x65, 0x6E, 
51904
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
51905
  0xDA, 0x08, 0xDA, 0x8A, 0x97, 0xDA, 0x8A, 0x98, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
51906
  0x80, 0x95, 0x82, 0xA6, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xCF, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x73, 
51907
  0x68, 0x75, 0x74, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x26, 
51908
  0x6F, 0x70, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x74, 0x6F, 0x70, 0x20, 
51909
  0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 
51910
  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x69, 0x6E, 0x20, 
51911
  0x61, 0x20, 0x67, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 
51912
  0x72, 0x2C, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x6F, 0x74, 
51913
  0x68, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x6F, 0x72, 0x20, 
51914
  0x6A, 0x75, 0x73, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x2F, 0x77, 0x72, 0x69, 
51915
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 
51916
  0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 
51917
  0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 
51918
  0x6F, 0x6C, 0x73, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 
51919
  0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x6F, 0x70, 0x20, 
51920
  0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x20, 0x0A, 
51921
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
51922
  0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x72, 0x65, 0x76, 
51923
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 
51924
  0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
51925
  0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 
51926
  0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
51927
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x0A, 0x2A, 
51928
  0x20, 0x60, 0x3A, 0x72, 0x60, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x72, 
51929
  0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
51930
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 
51931
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x77, 0x60, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 
51932
  0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 
51933
  0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
51934
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 0x61, 
51935
  0x6C, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x99, 0xDA, 0x8A, 
51936
  0x9A, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x33, 0x01, 0xDA, 0x06, 0xCE, 
51937
  0x4F, 0x28, 0x66, 0x6F, 0x72, 0x20, 0x69, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x74, 
51938
  0x6F, 0x70, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x44, 0x6F, 0x20, 0x61, 
51939
  0x20, 0x43, 0x2D, 0x73, 0x74, 0x79, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x2D, 0x6C, 0x6F, 0x6F, 
51940
  0x70, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x64, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 
51941
  0x74, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
51942
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0x9B, 0xDA, 0x8A, 0x9D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
51943
  0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xFA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xBE, 0x28, 0x73, 0x74, 
51944
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x61, 0x73, 0x63, 0x69, 0x69, 0x2D, 0x6C, 0x6F, 0x77, 0x65, 0x72, 
51945
  0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
51946
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 0x65, 0x72, 
51947
  0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 
51948
  0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 
51949
  0x65, 0x20, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 
51950
  0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x73, 0x65, 0x6C, 0x76, 0x65, 
51951
  0x73, 0x20, 0x69, 0x6E, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 
51952
  0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x69, 0x6D, 
51953
  0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2C, 0x20, 
51954
  0x6D, 0x65, 0x61, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x6F, 0x20, 0x75, 0x6E, 0x69, 0x63, 0x6F, 
51955
  0x64, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x9E, 
51956
  0xDA, 0x8A, 0x9F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x9E, 0x01, 
51957
  0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 
51958
  0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x45, 0x78, 
51959
  0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x2D, 0x72, 0x61, 0x6E, 0x67, 
51960
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 
51961
  0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x6F, 
51962
  0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 
51963
  0xDA, 0x08, 0xDA, 0x86, 0x66, 0xDA, 0x8A, 0xA0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
51964
  0x4C, 0x89, 0xA6, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x9E, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x68, 0x6D, 
51965
  0x6F, 0x64, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x43, 
51966
  0x68, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 
51967
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x6D, 
51968
  0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 
51969
  0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 0x20, 0x72, 
51970
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 
51971
  0x65, 0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x60, 0x2C, 0x20, 0x6F, 0x72, 0x20, 
51972
  0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 
51973
  0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x70, 0x65, 
51974
  0x72, 0x6D, 0x2D, 0x69, 0x6E, 0x74, 0x60, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x6D, 
51975
  0x6F, 0x64, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
51976
  0x65, 0x72, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 
51977
  0x72, 0x65, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 
51978
  0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
51979
  0x2C, 0x20, 0x62, 0x65, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 
51980
  0x20, 0x69, 0x6E, 0x20, 0x6F, 0x63, 0x74, 0x61, 0x6C, 0x2C, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 
51981
  0x38, 0x72, 0x36, 0x36, 0x36, 0x20, 0x6F, 0x72, 0x20, 0x38, 0x72, 0x34, 0x30, 0x30, 0x2E, 0x20, 
51982
  0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 
51983
  0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x74, 0x65, 0x20, 0x62, 
51984
  0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2C, 0x20, 0x67, 0x72, 0x6F, 
51985
  0x75, 0x70, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x65, 
51986
  0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 
51987
  0x68, 0x75, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 
51988
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x70, 0x65, 
51989
  0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
51990
  0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x5F, 0xDA, 0x82, 0xF2, 0xD3, 
51991
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x90, 0xE6, 0x03, 0xDA, 0x06, 0xCE, 0x81, 0x5D, 
51992
  0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 
51993
  0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x66, 0x69, 
51994
  0x67, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x20, 0x62, 0x75, 
51995
  0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 
51996
  0x63, 0x61, 0x6C, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x20, 
51997
  0x54, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
51998
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 
51999
  0x6C, 0x75, 0x65, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x3A, 0x6E, 
52000
  0x61, 0x6D, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x60, 0x63, 
52001
  0x6F, 0x6E, 0x66, 0x69, 0x67, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 
52002
  0x66, 0x6F, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 
52003
  0x72, 0x65, 0x0A, 0x35, 0x20, 0x68, 0x6F, 0x6F, 0x6B, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 
52004
  0x64, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 
52005
  0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x28, 0x70, 0x6F, 0x73, 0x74, 0x64, 0x65, 0x70, 0x73, 0x2C, 
52006
  0x20, 0x63, 0x6C, 0x65, 0x61, 0x6E, 0x2C, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x64, 0x2C, 0x20, 0x69, 
52007
  0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x63, 0x68, 0x65, 0x63, 0x6B, 
52008
  0x29, 0x2E, 0x20, 0x41, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x72, 0x65, 
52009
  0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x20, 0x61, 0x20, 0x68, 0x6F, 0x6F, 0x6B, 0x20, 0x62, 0x79, 
52010
  0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 
52011
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 
52012
  0x6D, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
52013
  0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 
52014
  0x89, 0x6A, 0xDA, 0x8A, 0xA1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x86, 
52015
  0xAA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE5, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 
52016
  0x20, 0x66, 0x66, 0x69, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
52017
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x29, 0x0A, 0x0A, 0x50, 0x61, 
52018
  0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x74, 0x72, 
52019
  0x75, 0x63, 0x74, 0x20, 0x6F, 0x75, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 
52020
  0x66, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 
52021
  0x69, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x4A, 0x61, 0x6E, 
52022
  0x65, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
52023
  0x65, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
52024
  0x6E, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 
52025
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x60, 0x2E, 
52026
  0x20, 0x60, 0x62, 0x79, 0x74, 0x65, 0x73, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 
52027
  0x6F, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 
52028
  0x65, 0x72, 0x2C, 0x20, 0x61, 0x6C, 0x74, 0x68, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x74, 0x68, 0x69, 
52029
  0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6E, 0x73, 0x61, 0x66, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 
52030
  0xA2, 0xDA, 0x8A, 0xA3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x64, 0x01, 0xDA, 
52031
  0x06, 0xCE, 0x1C, 0x28, 0x6E, 0x61, 0x6E, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
52032
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x4E, 0x61, 0x4E, 0x2E, 0xDA, 
52033
  0x08, 0xDA, 0x8A, 0xA4, 0xDA, 0x8A, 0xA6, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
52034
  0x80, 0xAE, 0x01, 0xDA, 0x06, 0xCE, 0x61, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 
52035
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
52036
  0x20, 0x69, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 
52037
  0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x60, 0x66, 0x6C, 0x79, 0x63, 
52038
  0x68, 0x65, 0x63, 0x6B, 0x60, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x60, 
52039
  0x74, 0x72, 0x75, 0x65, 0x60, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x6C, 0x79, 0x63, 
52040
  0x68, 0x65, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 
52041
  0x23, 0xDA, 0x8A, 0xA7, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x06, 0x01, 
52042
  0xDA, 0x06, 0xCE, 0x43, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x2D, 0x6C, 0x65, 0x74, 0x20, 0x62, 0x69, 
52043
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
52044
  0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x69, 0x66, 0x2D, 0x6C, 0x65, 0x74, 
52045
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x28, 0x64, 0x6F, 0x20, 0x3B, 0x62, 
52046
  0x6F, 0x64, 0x79, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xA8, 0xDA, 
52047
  0x8A, 0xAA, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x48, 0x01, 0xDA, 0x06, 
52048
  0xCE, 0x4E, 0x28, 0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
52049
  0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x62, 0x6F, 0x64, 
52050
  0x79, 0x20, 0x66, 0x6F, 0x72, 0x65, 0x76, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6C, 
52051
  0x6F, 0x6F, 0x70, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x61, 0x20, 
52052
  0x62, 0x72, 0x65, 0x61, 0x6B, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 
52053
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xAB, 0xDA, 0x8A, 0xAD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
52054
  0x03, 0x00, 0xDA, 0x8F, 0x44, 0x81, 0x8D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xED, 0x28, 0x64, 0x65, 
52055
  0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 
52056
  0x69, 0x62, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x72, 0x72, 0x20, 0x70, 0x72, 
52057
  0x65, 0x66, 0x69, 0x78, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 
52058
  0x6E, 0x69, 0x63, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x74, 0x61, 
52059
  0x63, 0x6B, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 
52060
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
52061
  0x6C, 0x6C, 0x79, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 
52062
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 
52063
  0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x72, 
52064
  0x61, 0x63, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x70, 0x72, 
52065
  0x65, 0x66, 0x69, 0x78, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x72, 0x20, 
52066
  0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x77, 0x69, 
52067
  0x6C, 0x6C, 0x20, 0x73, 0x6B, 0x69, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 
52068
  0x72, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
52069
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0xE3, 0xDA, 
52070
  0x8A, 0xAE, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xD1, 0x28, 0x64, 0x69, 0x76, 0x20, 0x26, 0x20, 
52071
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
52072
  0x20, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0x65, 0x64, 0x20, 0x64, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 
52073
  0x6E, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 
52074
  0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
52075
  0x20, 0x31, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6F, 0x6E, 
52076
  0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x78, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
52077
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x63, 0x69, 0x70, 0x72, 0x6F, 0x63, 0x61, 
52078
  0x6C, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
52079
  0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
52080
  0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 0x20, 0x72, 
52081
  0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x6C, 0x79, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x65, 
52082
  0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 
52083
  0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xAF, 0xDA, 
52084
  0x8A, 0xB1, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8F, 0x01, 0xDA, 0x06, 
52085
  0xCE, 0x2C, 0x28, 0x2A, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x53, 
52086
  0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x28, 0x73, 0x65, 
52087
  0x74, 0x20, 0x78, 0x20, 0x28, 0x5C, 0x2A, 0x20, 0x78, 0x20, 0x6E, 0x29, 0x29, 0x2E, 0xDA, 0x59, 
52088
  0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xB2, 0xDA, 0x8A, 0xB5, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
52089
  0xDA, 0x04, 0x81, 0x28, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD2, 0x28, 0x70, 0x72, 0x6F, 0x74, 0x65, 
52090
  0x63, 0x74, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 
52091
  0x75, 0x61, 0x74, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 
52092
  0x2C, 0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x70, 0x74, 0x75, 0x72, 0x69, 0x6E, 
52093
  0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x45, 0x76, 
52094
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 
52095
  0x6C, 0x65, 0x0A, 0x6F, 0x66, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
52096
  0x74, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 
52097
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 
52098
  0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6C, 0x2C, 0x20, 0x66, 0x61, 0x6C, 
52099
  0x73, 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x0A, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2C, 0x20, 
52100
  0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x69, 
52101
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x76, 0x61, 0x6C, 
52102
  0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
52103
  0x08, 0xDA, 0x8A, 0xB6, 0xDA, 0x8A, 0xB9, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
52104
  0x82, 0xC3, 0x01, 0xDA, 0x06, 0xCE, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2D, 0x66, 0x6E, 
52105
  0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
52106
  0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6D, 0x61, 
52107
  0x6B, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2E, 0x20, 0x53, 0x61, 0x6D, 
52108
  0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 0x77, 
52109
  0x20, 0x28, 0x66, 0x6E, 0x20, 0x5B, 0x5D, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x20, 0x66, 
52110
  0x6C, 0x61, 0x67, 0x73, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xBA, 0xDA, 
52111
  0x8A, 0xBF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x98, 0x01, 0xDA, 0x06, 
52112
  0xCE, 0x80, 0xCF, 0x28, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x76, 0x61, 0x6C, 0x75, 0x65, 
52113
  0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x20, 0x26, 0x6F, 0x70, 0x74, 
52114
  0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 
52115
  0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2C, 
52116
  0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x62, 
52117
  0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
52118
  0x20, 0x60, 0x73, 0x79, 0x6D, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x70, 0x72, 0x69, 0x76, 
52119
  0x61, 0x74, 0x65, 0x60, 0x20, 0x69, 0x73, 0x0A, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 
52120
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x6C, 0x76, 
52121
  0x65, 0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
52122
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x20, 
52123
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
52124
  0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x0A, 0x6E, 0x69, 
52125
  0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xC0, 0xDA, 0x8A, 0xC4, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x44, 
52126
  0x28, 0x3E, 0x3D, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
52127
  0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 
52128
  0x2D, 0x61, 0x73, 0x63, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 
52129
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 
52130
  0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x19, 0xDA, 0x8A, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 
52131
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x84, 0xC8, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x79, 0x28, 0x65, 
52132
  0x76, 0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x26, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 
52133
  0x65, 0x73, 0x29, 0x0A, 0x0A, 0x42, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 
52134
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 
52135
  0x76, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x6F, 0x70, 
52136
  0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x6F, 0x63, 0x63, 0x75, 0x72, 0x2E, 0x20, 
52137
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
52138
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x5B, 0x3A, 0x67, 0x69, 
52139
  0x76, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x5D, 0x2C, 0x20, 0x5B, 0x3A, 0x74, 0x61, 0x6B, 0x65, 
52140
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x5D, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x5B, 0x3A, 0x63, 
52141
  0x6C, 0x6F, 0x73, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x5D, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 
52142
  0x65, 0x20, 0x61, 0x20, 0x3A, 0x67, 0x69, 0x76, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
52143
  0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 
52144
  0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x3A, 
52145
  0x74, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
52146
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x72, 0x65, 
52147
  0x61, 0x64, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x20, 
52148
  0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 
52149
  0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x28, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 
52150
  0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x70, 0x65, 
52151
  0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 
52152
  0x6C, 0x65, 0x20, 0x5B, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x78, 0x5D, 0x20, 0x28, 
52153
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x67, 0x69, 
52154
  0x76, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x2E, 0x20, 0x4F, 
52155
  0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 
52156
  0x69, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 
52157
  0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x72, 0x6C, 0x69, 0x65, 0x72, 0x20, 0x63, 
52158
  0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x70, 0x72, 0x65, 0x63, 
52159
  0x65, 0x64, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x6C, 0x61, 0x74, 0x65, 
52160
  0x72, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x2E, 0x20, 0x42, 0x6F, 0x74, 0x68, 0x20, 
52161
  0x67, 0x69, 0x76, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x6F, 0x70, 
52162
  0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x74, 
52163
  0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x5B, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x63, 0x68, 
52164
  0x61, 0x6E, 0x5D, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
52165
  0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
52166
  0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x63, 0x68, 
52167
  0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 
52168
  0x20, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x2C, 0x20, 
52169
  0x6F, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 
52170
  0x6E, 0x65, 0x6C, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 
52171
  0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xC6, 0xDA, 0x8A, 0xC7, 0xD3, 
52172
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x80, 0xD3, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
52173
  0xAA, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x20, 0x77, 0x68, 
52174
  0x61, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
52175
  0x61, 0x64, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 
52176
  0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 
52177
  0x20, 0x60, 0x66, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 
52178
  0x65, 0x72, 0x2E, 0x20, 0x41, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x60, 0x62, 0x75, 
52179
  0x66, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 
52180
  0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 
52181
  0x6C, 0x20, 0x74, 0x68, 0x69, 0x72, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
52182
  0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 
52183
  0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 
52184
  0x74, 0x65, 0x64, 0x2E, 0x20, 0x60, 0x77, 0x68, 0x61, 0x74, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 
52185
  0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 
52186
  0x65, 0x67, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
52187
  0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
52188
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
52189
  0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x20, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x73, 
52190
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x77, 0x68, 0x61, 0x74, 0x60, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 
52191
  0x3A, 0x61, 0x6C, 0x6C, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 
52192
  0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6C, 
52193
  0x69, 0x6E, 0x65, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 
52194
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 
52195
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
52196
  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x6E, 0x20, 0x28, 
52197
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x29, 0x20, 0x2D, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 
52198
  0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x66, 0x72, 
52199
  0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0xDA, 0x08, 0xDA, 0x81, 0x59, 
52200
  0xDA, 0x8A, 0xC8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1F, 0x01, 0xDA, 
52201
  0x06, 0xCE, 0x54, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x66, 0x6C, 0x6F, 0x6F, 0x72, 0x20, 0x78, 
52202
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
52203
  0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x76, 
52204
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 
52205
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 
52206
  0x74, 0x68, 0x61, 0x6E, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x88, 0xDA, 0x8A, 0xC9, 0xD3, 
52207
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x91, 0x87, 0x80, 0xF5, 0x01, 0xDA, 0x06, 0xCE, 0x81, 
52208
  0xAC, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x74, 0x6F, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 
52209
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 
52210
  0x6E, 0x65, 0x73, 0x73, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x57, 0x72, 
52211
  0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 
52212
  0x20, 0x61, 0x6E, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0x60, 0x20, 0x6F, 0x72, 
52213
  0x20, 0x60, 0x69, 0x6E, 0x74, 0x2F, 0x75, 0x36, 0x34, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 
52214
  0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x62, 
52215
  0x75, 0x66, 0x66, 0x65, 0x72, 0x60, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 
52216
  0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 
52217
  0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 
52218
  0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x6F, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x75, 0x6E, 
52219
  0x73, 0x65, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
52220
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 
52221
  0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
52222
  0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x0A, 0x54, 
52223
  0x68, 0x65, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x6E, 0x65, 0x73, 0x73, 0x60, 0x20, 
52224
  0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 
52225
  0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x6F, 0x72, 0x64, 
52226
  0x65, 0x72, 0x3A, 0x0A, 0x2D, 0x20, 0x60, 0x6E, 0x69, 0x6C, 0x60, 0x20, 0x28, 0x75, 0x6E, 0x73, 
52227
  0x65, 0x74, 0x29, 0x3A, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x62, 0x79, 0x74, 0x65, 
52228
  0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x0A, 0x2D, 0x20, 0x60, 0x3A, 0x6C, 0x65, 0x60, 0x3A, 0x20, 
52229
  0x6C, 0x69, 0x74, 0x74, 0x6C, 0x65, 0x2D, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x2C, 0x20, 0x6C, 
52230
  0x65, 0x61, 0x73, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6E, 0x74, 
52231
  0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0x2D, 0x20, 0x60, 0x3A, 
52232
  0x62, 0x65, 0x60, 0x3A, 0x20, 0x62, 0x69, 0x67, 0x2D, 0x65, 0x6E, 0x64, 0x69, 0x61, 0x6E, 0x2C, 
52233
  0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x69, 0x66, 0x69, 0x63, 0x61, 0x6E, 
52234
  0x74, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0xDA, 0x08, 0xDA, 
52235
  0x8A, 0xCA, 0xDA, 0x8A, 0xCB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 
52236
  0xD7, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD6, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x63, 
52237
  0x68, 0x65, 0x63, 0x6B, 0x2D, 0x73, 0x65, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x73, 0x74, 0x72, 
52238
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 
52239
  0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 
52240
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x62, 0x79, 
52241
  0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 
52242
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 
52243
  0x65, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 
52244
  0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 
52245
  0x6E, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x20, 0x69, 
52246
  0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x69, 
52247
  0x66, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 
52248
  0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x64, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x70, 0x70, 
52249
  0x65, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x65, 0x74, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 
52250
  0x89, 0x6F, 0xDA, 0x8A, 0xCC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x24, 
52251
  0x01, 0xDA, 0x06, 0xCE, 0x82, 0x09, 0x54, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x20, 0x6F, 
52252
  0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x20, 
52253
  0x66, 0x6F, 0x72, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x65, 0x6D, 
52254
  0x70, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 
52255
  0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x60, 0x2E, 
52256
  0x0A, 0x45, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 
52257
  0x20, 0x61, 0x20, 0x74, 0x77, 0x6F, 0x2D, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 
52258
  0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 
52259
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x0A, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 
52260
  0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
52261
  0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 0x3A, 0x6E, 0x61, 0x74, 0x69, 0x76, 
52262
  0x65, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x69, 0x6E, 0x64, 
52263
  0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x68, 0x6F, 0x77, 0x0A, 0x60, 0x72, 0x65, 0x71, 
52264
  0x75, 0x69, 0x72, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x6C, 0x6F, 0x61, 
52265
  0x64, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x61, 0x74, 
52266
  0x20, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x2E, 0x0A, 0x0A, 0x41, 
52267
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x0A, 
52268
  0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x68, 0x69, 0x72, 0x64, 0x20, 
52269
  0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 
52270
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 
52271
  0x74, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 
52272
  0x6C, 0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x60, 0x0A, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x73, 0x65, 
52273
  0x61, 0x72, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x61, 0x74, 
52274
  0x68, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 
52275
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 0x72, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x6E, 0x27, 0x74, 
52276
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 
52277
  0x0A, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x74, 0x65, 
52278
  0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
52279
  0x67, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 
52280
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x69, 
52281
  0x73, 0x20, 0x6F, 0x66, 0x74, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x65, 
52282
  0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 
52283
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x72, 0x69, 0x6F, 0x64, 0x2E, 0xDA, 
52284
  0x08, 0xDA, 0x81, 0xB3, 0xDA, 0x8A, 0xCD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
52285
  0x81, 0x27, 0x01, 0xDA, 0x06, 0xCE, 0x21, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x67, 0x61, 0x6D, 
52286
  0x6D, 0x61, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x67, 
52287
  0x61, 0x6D, 0x6D, 0x61, 0x28, 0x78, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xCE, 0xDA, 0x8A, 0xCF, 
52288
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x11, 0x01, 0xDA, 0x06, 0xCE, 0x30, 
52289
  0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x69, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
52290
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 
52291
  0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 
52292
  0xDA, 0x08, 0xDA, 0x8A, 0xD0, 0xDA, 0x85, 0x40, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
52293
  0x04, 0x89, 0xD8, 0x01, 0xDA, 0x06, 0xCE, 0x54, 0x28, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 
52294
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x73, 0x67, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 
52295
  0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
52296
  0x63, 0x6F, 0x6C, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x68, 0x61, 
52297
  0x6E, 0x64, 0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
52298
  0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 
52299
  0x3B, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x2D, 0x6D, 0x61, 
52300
  0x78, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xB4, 0x01, 0xDA, 0x06, 0xCE, 
52301
  0x47, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 
52302
  0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 
52303
  0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 
52304
  0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 
52305
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0xDA, 0x08, 0xCD, 0x7F, 0xFF, 0xFF, 0xFF, 0xDA, 
52306
  0x8A, 0xD1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x54, 0x56, 0x01, 0xDA, 0x06, 
52307
  0xCE, 0x81, 0x1D, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 
52308
  0x75, 0x70, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x73, 0x20, 0x68, 0x6F, 0x77, 0x20, 
52309
  0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x6F, 
52310
  0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
52311
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
52312
  0x72, 0x64, 0x20, 0x3A, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x69, 0x66, 0x20, 
52313
  0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x70, 0x61, 
52314
  0x72, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 
52315
  0x74, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x73, 0x20, 
52316
  0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 
52317
  0x77, 0x6F, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x75, 0x70, 0x6C, 
52318
  0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 
52319
  0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 
52320
  0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 
52321
  0x6C, 0x6C, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 
52322
  0x6E, 0x74, 0x6C, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x72, 0x65, 0x61, 
52323
  0x74, 0x65, 0x64, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 
52324
  0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x72, 0x2E, 
52325
  0xDA, 0x08, 0xDA, 0x75, 0xDA, 0x8A, 0xD2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 
52326
  0xA1, 0x82, 0x32, 0x01, 0xDA, 0x06, 0xCE, 0x85, 0x4B, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
52327
  0x2F, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x26, 
52328
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 
52329
  0x72, 0x20, 0x74, 0x6F, 0x20, 0x43, 0x27, 0x73, 0x20, 0x60, 0x73, 0x6E, 0x70, 0x72, 0x69, 0x6E, 
52330
  0x74, 0x66, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 
52331
  0x69, 0x7A, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 
52332
  0x6E, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 
52333
  0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 
52334
  0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 
52335
  0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 
52336
  0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 
52337
  0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2C, 0x20, 
52338
  0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 
52339
  0x63, 0x61, 0x73, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 
52340
  0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x63, 
52341
  0x61, 0x73, 0x65, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x3A, 0x0A, 0x2D, 0x20, 0x60, 0x63, 
52342
  0x60, 0x3A, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 
52343
  0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x64, 0x60, 0x2C, 0x20, 0x60, 0x69, 0x60, 0x3A, 0x20, 
52344
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 
52345
  0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 
52346
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x78, 0x60, 0x2C, 0x20, 0x60, 
52347
  0x58, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 
52348
  0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, 0x61, 
52349
  0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x0A, 
52350
  0x2D, 0x20, 0x60, 0x6F, 0x60, 0x3A, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 
52351
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 
52352
  0x6F, 0x63, 0x74, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 
52353
  0x60, 0x66, 0x60, 0x2C, 0x20, 0x60, 0x46, 0x60, 0x3A, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 
52354
  0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 
52355
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 
52356
  0x64, 0x65, 0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x0A, 
52357
  0x2D, 0x20, 0x60, 0x65, 0x60, 0x2C, 0x20, 0x60, 0x45, 0x60, 0x3A, 0x20, 0x66, 0x6C, 0x6F, 0x61, 
52358
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
52359
  0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 
52360
  0x73, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x69, 0x66, 0x69, 0x63, 0x20, 0x6E, 0x6F, 0x74, 0x61, 0x74, 
52361
  0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x67, 0x60, 0x2C, 0x20, 0x60, 0x47, 0x60, 0x3A, 
52362
  0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 
52363
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 
52364
  0x64, 0x20, 0x69, 0x6E, 0x20, 0x69, 0x74, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 
52365
  0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x61, 0x60, 0x2C, 0x20, 0x60, 
52366
  0x41, 0x60, 0x3A, 0x20, 0x66, 0x6C, 0x6F, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 
52367
  0x6E, 0x74, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 
52368
  0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, 0x61, 0x64, 0x65, 
52369
  0x63, 0x69, 0x6D, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x0A, 0x2D, 0x20, 
52370
  0x60, 0x73, 0x60, 0x3A, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 
52371
  0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x70, 0x72, 0x65, 0x63, 
52372
  0x69, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 
52373
  0x70, 0x61, 0x64, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6D, 0x61, 0x78, 0x69, 
52374
  0x6D, 0x75, 0x6D, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x74, 
52375
  0x60, 0x3A, 0x20, 0x65, 0x6D, 0x69, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 
52376
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x76, 0x61, 
52377
  0x6C, 0x75, 0x65, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x76, 0x60, 0x3A, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
52378
  0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 
52379
  0x65, 0x20, 0x78, 0x29, 0x0A, 0x2D, 0x20, 0x60, 0x56, 0x60, 0x3A, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
52380
  0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 
52381
  0x78, 0x29, 0x0A, 0x2D, 0x20, 0x60, 0x6A, 0x60, 0x3A, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 
52382
  0x20, 0x74, 0x6F, 0x20, 0x6A, 0x64, 0x6E, 0x20, 0x28, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x64, 
52383
  0x61, 0x74, 0x61, 0x20, 0x6E, 0x6F, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x2E, 0x0A, 0x0A, 
52384
  0x54, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 
52385
  0x6E, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 
52386
  0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 
52387
  0x20, 0x22, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x2D, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 
52388
  0x67, 0x22, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 
52389
  0x70, 0x65, 0x72, 0x2D, 0x63, 0x61, 0x73, 0x65, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6E, 0x74, 
52390
  0x73, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6F, 0x72, 
52391
  0x65, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x73, 0x65, 
52392
  0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 
52393
  0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x63, 0x69, 0x73, 0x69, 0x6F, 0x6E, 
52394
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x70, 0x65, 
52395
  0x63, 0x69, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 
52396
  0x20, 0x6E, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 0x20, 0x74, 
52397
  0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x70, 0x60, 0x2C, 0x20, 
52398
  0x60, 0x50, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
52399
  0x61, 0x74, 0x2C, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 
52400
  0x66, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x0A, 0x2D, 0x20, 0x60, 0x6D, 
52401
  0x60, 0x2C, 0x20, 0x60, 0x4D, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 
52402
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x72, 
52403
  0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x71, 0x60, 0x2C, 
52404
  0x20, 0x60, 0x51, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 
52405
  0x6D, 0x61, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x2C, 
52406
  0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x66, 0x20, 0x6E, 
52407
  0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x2E, 0x0A, 0x2D, 0x20, 0x60, 0x6E, 0x60, 0x2C, 
52408
  0x20, 0x60, 0x4E, 0x60, 0x3A, 0x20, 0x70, 0x72, 0x65, 0x74, 0x74, 0x79, 0x20, 0x66, 0x6F, 0x72, 
52409
  0x6D, 0x61, 0x74, 0x20, 0x6F, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 
52410
  0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x72, 0x75, 0x6E, 0x63, 0x61, 0x74, 0x69, 
52411
  0x6F, 0x6E, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x81, 0x4B, 0xDA, 0x8A, 0xD3, 0xD3, 0x03, 0xDA, 0x03, 
52412
  0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x31, 0x01, 0xDA, 0x06, 0xCE, 0x48, 0x28, 0x6D, 0x61, 0x74, 
52413
  0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x32, 0x20, 0x79, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
52414
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x63, 0x74, 0x61, 0x6E, 
52415
  0x67, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x79, 0x2F, 0x78, 0x2E, 0x20, 0x57, 0x6F, 0x72, 
52416
  0x6B, 0x73, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x78, 0x20, 0x69, 
52417
  0x73, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xD4, 0xDA, 0x85, 0xDF, 0xD3, 0x03, 0xDA, 0x03, 
52418
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0xF8, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA2, 0x28, 0x63, 0x75, 
52419
  0x72, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
52420
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 
52421
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
52422
  0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 
52423
  0x2F, 0x67, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 
52424
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 0x29, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6E, 
52425
  0x60, 0x0A, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x67, 
52426
  0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x74, 0x68, 0x20, 0x70, 0x72, 0x6F, 0x74, 
52427
  0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 
52428
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 
52429
  0x08, 0xDA, 0x85, 0xDD, 0xDA, 0x8A, 0xD5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
52430
  0xD1, 0x83, 0x47, 0x01, 0xDA, 0x06, 0xCE, 0x18, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x6E, 
52431
  0x64, 0x61, 0x72, 0x64, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 
52432
  0xDA, 0x08, 0xDA, 0x89, 0x11, 0xDA, 0x8A, 0xD6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
52433
  0x8E, 0x98, 0x8D, 0x31, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xEC, 0x28, 0x65, 0x76, 0x2F, 0x77, 0x72, 
52434
  0x69, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
52435
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x57, 
52436
  0x72, 0x69, 0x74, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 
52437
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 
52438
  0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 
52439
  0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 
52440
  0x69, 0x74, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x54, 
52441
  0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
52442
  0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 
52443
  0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
52444
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 
52445
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 
52446
  0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 
52447
  0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x66, 
52448
  0x61, 0x69, 0x6C, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xD7, 0xDA, 0x8A, 0xD8, 0xD3, 0x03, 
52449
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xF5, 0x82, 0x7D, 0x01, 0xDA, 0x06, 0xCE, 0x85, 0xBC, 
52450
  0x28, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x61, 0x64, 0x64, 0x20, 0x77, 
52451
  0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 
52452
  0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x70, 
52453
  0x61, 0x74, 0x68, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 
52454
  0x65, 0x72, 0x2E, 0x20, 0x41, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x6C, 
52455
  0x61, 0x67, 0x73, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 
52456
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x4F, 0x53, 0x2C, 0x20, 0x61, 0x6E, 
52457
  0x64, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 
52458
  0x3A, 0x0A, 0x0A, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2F, 0x4D, 0x49, 0x4E, 0x47, 0x57, 
52459
  0x20, 0x28, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 
52460
  0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 
52461
  0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x2A, 0x60, 0x20, 0x66, 0x6C, 0x61, 
52462
  0x67, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x77, 0x69, 0x6E, 0x33, 0x32, 0x20, 0x64, 0x6F, 0x63, 0x75, 
52463
  0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
52464
  0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x2D, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 
52465
  0x61, 0x6E, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 
52466
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x6C, 0x6F, 0x77, 0x20, 0x74, 0x72, 
52467
  0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x74, 0x74, 
52468
  0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 
52469
  0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x41, 
52470
  0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x53, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 
52471
  0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 
52472
  0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 
52473
  0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4F, 0x4E, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 
52474
  0x69, 0x72, 0x2D, 0x6E, 0x61, 0x6D, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 
52475
  0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x44, 
52476
  0x49, 0x52, 0x5F, 0x4E, 0x41, 0x4D, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6C, 0x61, 
52477
  0x73, 0x74, 0x2D, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x46, 0x49, 
52478
  0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 
52479
  0x5F, 0x4C, 0x41, 0x53, 0x54, 0x5F, 0x41, 0x43, 0x43, 0x45, 0x53, 0x53, 0x60, 0x0A, 0x0A, 0x2A, 
52480
  0x20, 0x60, 0x3A, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x60, 0x20, 0x2D, 
52481
  0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 
52482
  0x41, 0x4E, 0x47, 0x45, 0x5F, 0x4C, 0x41, 0x53, 0x54, 0x5F, 0x57, 0x52, 0x49, 0x54, 0x45, 0x60, 
52483
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x60, 0x20, 
52484
  0x2D, 0x20, 0x60, 0x46, 0x49, 0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 
52485
  0x48, 0x41, 0x4E, 0x47, 0x45, 0x5F, 0x53, 0x45, 0x43, 0x55, 0x52, 0x49, 0x54, 0x59, 0x60, 0x0A, 
52486
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x73, 0x69, 0x7A, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x46, 0x49, 
52487
  0x4C, 0x45, 0x5F, 0x4E, 0x4F, 0x54, 0x49, 0x46, 0x59, 0x5F, 0x43, 0x48, 0x41, 0x4E, 0x47, 0x45, 
52488
  0x5F, 0x53, 0x49, 0x5A, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x63, 0x75, 
52489
  0x72, 0x73, 0x69, 0x76, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x20, 0x73, 
52490
  0x75, 0x62, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x69, 0x65, 0x73, 0x20, 0x72, 0x65, 
52491
  0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x0A, 0x0A, 0x4C, 0x69, 0x6E, 0x75, 0x78, 
52492
  0x20, 0x28, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 
52493
  0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x2A, 0x60, 0x20, 0x66, 0x6C, 0x61, 
52494
  0x67, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x3C, 0x73, 0x79, 0x73, 0x2F, 0x69, 0x6E, 0x6F, 
52495
  0x74, 0x69, 0x66, 0x79, 0x2E, 0x68, 0x3E, 0x29, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 
52496
  0x63, 0x63, 0x65, 0x73, 0x73, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x41, 0x43, 0x43, 
52497
  0x45, 0x53, 0x53, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x20, 0x2D, 
52498
  0x20, 0x60, 0x49, 0x4E, 0x5F, 0x41, 0x4C, 0x4C, 0x5F, 0x45, 0x56, 0x45, 0x4E, 0x54, 0x53, 0x60, 
52499
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x60, 0x20, 0x2D, 0x20, 
52500
  0x60, 0x49, 0x4E, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
52501
  0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x2D, 0x6E, 0x6F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x60, 0x20, 
52502
  0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x5F, 0x4E, 0x4F, 0x57, 0x52, 
52503
  0x49, 0x54, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x2D, 
52504
  0x77, 0x72, 0x69, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x43, 0x4C, 0x4F, 
52505
  0x53, 0x45, 0x5F, 0x57, 0x52, 0x49, 0x54, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x63, 
52506
  0x72, 0x65, 0x61, 0x74, 0x65, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x43, 0x52, 0x45, 
52507
  0x41, 0x54, 0x45, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 0x65, 0x6C, 0x65, 0x74, 0x65, 
52508
  0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x60, 0x0A, 
52509
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x64, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x2D, 0x73, 0x65, 0x6C, 0x66, 
52510
  0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x5F, 0x53, 
52511
  0x45, 0x4C, 0x46, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x69, 0x67, 0x6E, 0x6F, 0x72, 0x65, 
52512
  0x64, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x49, 0x47, 0x4E, 0x4F, 0x52, 0x45, 0x44, 
52513
  0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x79, 0x60, 0x20, 0x2D, 
52514
  0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x44, 0x49, 0x46, 0x59, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 
52515
  0x60, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x2D, 0x73, 0x65, 0x6C, 0x66, 0x60, 0x20, 0x2D, 0x20, 0x60, 
52516
  0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x5F, 0x53, 0x45, 0x4C, 0x46, 0x60, 0x0A, 0x0A, 0x2A, 
52517
  0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x2D, 0x66, 0x72, 0x6F, 0x6D, 0x60, 0x20, 0x2D, 
52518
  0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x44, 0x5F, 0x46, 0x52, 0x4F, 0x4D, 0x60, 
52519
  0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x2D, 0x74, 0x6F, 0x60, 0x20, 
52520
  0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x4D, 0x4F, 0x56, 0x45, 0x44, 0x5F, 0x54, 0x4F, 0x60, 0x0A, 
52521
  0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x70, 0x65, 0x6E, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 
52522
  0x5F, 0x4F, 0x50, 0x45, 0x4E, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x71, 0x2D, 0x6F, 0x76, 
52523
  0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x51, 0x5F, 
52524
  0x4F, 0x56, 0x45, 0x52, 0x46, 0x4C, 0x4F, 0x57, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x75, 
52525
  0x6E, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x60, 0x20, 0x2D, 0x20, 0x60, 0x49, 0x4E, 0x5F, 0x55, 0x4E, 
52526
  0x4D, 0x4F, 0x55, 0x4E, 0x54, 0x60, 0x0A, 0x0A, 0x0A, 0x4F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 
52527
  0x6F, 0x77, 0x73, 0x2C, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
52528
  0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 
52529
  0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 
52530
  0x65, 0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x75, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 
52531
  0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 0x61, 0x64, 0x64, 0x65, 0x64, 0x60, 0x0A, 0x0A, 0x2A, 
52532
  0x20, 0x60, 0x3A, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 
52533
  0x3A, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x3A, 
52534
  0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x2D, 0x6F, 0x6C, 0x64, 0x60, 0x0A, 0x0A, 0x2A, 0x20, 
52535
  0x60, 0x3A, 0x72, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x2D, 0x6E, 0x65, 0x77, 0x60, 0x0A, 0x0A, 
52536
  0x4F, 0x6E, 0x20, 0x4C, 0x69, 0x6E, 0x75, 0x78, 0x2C, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x73, 
52537
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x60, 0x3A, 0x74, 
52538
  0x79, 0x70, 0x65, 0x60, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 
52539
  0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x73, 0x73, 0x69, 0x62, 
52540
  0x6C, 0x65, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x2C, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x64, 
52541
  0x69, 0x6E, 0x67, 0x20, 0x60, 0x3A, 0x61, 0x6C, 0x6C, 0x60, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x8A, 
52542
  0xD9, 0xDA, 0x8A, 0xDA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xDE, 0x81, 0x46, 
52543
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x88, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 
52544
  0x6B, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
52545
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 
52546
  0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x77, 0x65, 0x61, 0x6B, 
52547
  0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6B, 
52548
  0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 
52549
  0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x74, 0x61, 0x62, 0x6C, 
52550
  0x65, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
52551
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 
52552
  0xDA, 0x8A, 0xDB, 0xDA, 0x8A, 0xDC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 
52553
  0x78, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xB7, 0x28, 0x6B, 0x65, 0x65, 0x70, 0x20, 0x70, 0x72, 0x65, 
52554
  0x64, 0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x47, 
52555
  0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 
52556
  0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
52557
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
52558
  0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x74, 0x72, 0x75, 0x74, 0x68, 
52559
  0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x70, 0x70, 
52560
  0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x74, 0x6F, 0x20, 
52561
  0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
52562
  0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
52563
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 
52564
  0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 
52565
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x4D, 0x75, 0x6C, 0x74, 
52566
  0x69, 0x70, 0x6C, 0x65, 0x0A, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
52567
  0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 
52568
  0x6C, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x60, 0x69, 0x6E, 0x64, 
52569
  0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0A, 0x73, 0x74, 0x72, 
52570
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 
52571
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
52572
  0x6F, 0x66, 0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 
52573
  0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
52574
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 
52575
  0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
52576
  0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x74, 0x68, 
52577
  0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x0A, 0x6C, 0x6F, 0x6E, 0x67, 0x65, 0x72, 0x20, 
52578
  0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 0x73, 
52579
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 
52580
  0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0xDA, 0x08, 
52581
  0xDA, 0x8A, 0xDD, 0xDA, 0x8A, 0xEB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 
52582
  0x80, 0xEB, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x88, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x73, 
52583
  0x6C, 0x69, 0x63, 0x65, 0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x20, 0x26, 0x6F, 0x70, 0x74, 
52584
  0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 
52585
  0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 
52586
  0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 
52587
  0x6D, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x65, 0x6E, 
52588
  0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 
52589
  0x20, 0x68, 0x61, 0x6C, 0x66, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x2C, 0x20, 0x5B, 0x73, 0x74, 0x61, 
52590
  0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x65, 0x78, 0x65, 
52591
  0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 
52592
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x69, 
52593
  0x6E, 0x67, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
52594
  0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
52595
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 
52596
  0x74, 0x2C, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x30, 0x20, 
52597
  0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 
52598
  0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 
52599
  0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
52600
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x69, 0x73, 0x20, 
52601
  0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 
52602
  0x74, 0x61, 0x6B, 0x65, 0x6E, 0x20, 0x61, 0x73, 0x20, 0x28, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 
52603
  0x20, 0x65, 0x6E, 0x64, 0x5D, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 
52604
  0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 
52605
  0x6C, 0x69, 0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
52606
  0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 
52607
  0xDA, 0x08, 0xDA, 0x88, 0x69, 0xDA, 0x8A, 0xEC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
52608
  0x80, 0x8F, 0x81, 0x00, 0x01, 0xDA, 0x06, 0xCE, 0x7E, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
52609
  0x2F, 0x74, 0x72, 0x69, 0x6D, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 
52610
  0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x63, 
52611
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
52612
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
52613
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 
52614
  0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
52615
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 
52616
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x5E, 0xDA, 0x8A, 0xED, 0xD3, 
52617
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x2E, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 
52618
  0x68, 0x61, 0x73, 0x2D, 0x6B, 0x65, 0x79, 0x3F, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x29, 
52619
  0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 
52620
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 0x60, 
52621
  0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 
52622
  0x79, 0x20, 0x60, 0x6B, 0x65, 0x79, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xEE, 0xDA, 0x8A, 0xF0, 
52623
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x59, 0x28, 0x62, 0x6F, 0x72, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 
52624
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x69, 
52625
  0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 
52626
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x45, 
52627
  0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 
52628
  0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 
52629
  0x08, 0xDA, 0x8A, 0xF1, 0xDA, 0x8A, 0xF3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
52630
  0x8E, 0x80, 0x94, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x87, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 
52631
  0x77, 0x65, 0x61, 0x6B, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 
52632
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 
52633
  0x70, 0x74, 0x79, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
52634
  0x20, 0x70, 0x72, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 
52635
  0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x75, 0x70, 0x70, 
52636
  0x6F, 0x72, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x65, 0x61, 0x6B, 0x20, 0x72, 0x65, 0x66, 
52637
  0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 
52638
  0x20, 0x74, 0x6F, 0x20, 0x60, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x2E, 
52639
  0xDA, 0x08, 0xDA, 0x8A, 0xF4, 0xDA, 0x88, 0x0D, 0xD3, 0x05, 0xDA, 0x86, 0x28, 0xCB, 0xDA, 0x03, 
52640
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x8F, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xD7, 0x28, 0x66, 0x66, 
52641
  0x69, 0x2F, 0x64, 0x65, 0x66, 0x62, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 
52642
  0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x2D, 0x74, 
52643
  0x79, 0x70, 0x65, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x6E, 
52644
  0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x66, 
52645
  0x6F, 0x72, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
52646
  0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x69, 
52647
  0x65, 0x6E, 0x74, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20, 
52648
  0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x65, 0x66, 0x62, 0x69, 
52649
  0x6E, 0x64, 0x20, 0x62, 0x75, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x20, 0x66, 0x6F, 
52650
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x66, 0x75, 0x6E, 0x63, 
52651
  0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 
52652
  0x20, 0x20, 0x20, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x68, 
52653
  0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x46, 0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
52654
  0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8A, 0xF5, 0xDA, 0x85, 0xF6, 0xD3, 
52655
  0x04, 0xDA, 0x86, 0x28, 0xDA, 0x8F, 0x75, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x5B, 
52656
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x86, 0x28, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x2A, 0x20, 0x70, 
52657
  0x61, 0x74, 0x68, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x75, 0x6E, 
52658
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 
52659
  0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x2E, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x70, 0x61, 0x72, 
52660
  0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 
52661
  0x20, 0x70, 0x61, 0x74, 0x68, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 
52662
  0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 
52663
  0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 
52664
  0x6E, 0x67, 0x73, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 
52665
  0xDB, 0xDA, 0x8B, 0x0F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 0x42, 0x01, 
52666
  0xDA, 0x06, 0xCE, 0x82, 0x84, 0x28, 0x6F, 0x73, 0x2F, 0x64, 0x61, 0x74, 0x65, 0x20, 0x26, 0x6F, 
52667
  0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 
52668
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 
52669
  0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x65, 
52670
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 
52671
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x69, 0x66, 0x20, 
52672
  0x60, 0x74, 0x69, 0x6D, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x67, 0x69, 
52673
  0x76, 0x65, 0x6E, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 
52674
  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 
52675
  0x77, 0x69, 0x6E, 0x67, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2E, 
52676
  0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6E, 
52677
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x30, 0x2D, 0x69, 0x6E, 0x64, 
52678
  0x65, 0x78, 0x65, 0x64, 0x2E, 0x20, 0x44, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 
52679
  0x76, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x54, 0x43, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 
52680
  0x73, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 
52681
  0x74, 0x68, 0x79, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 
52682
  0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x66, 
52683
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 
52684
  0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x7A, 0x6F, 0x6E, 0x65, 0x2E, 
52685
  0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x2D, 0x20, 0x6E, 
52686
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 
52687
  0x20, 0x5B, 0x30, 0x2D, 0x36, 0x31, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x75, 
52688
  0x74, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 
52689
  0x6D, 0x69, 0x6E, 0x75, 0x74, 0x65, 0x73, 0x20, 0x5B, 0x30, 0x2D, 0x35, 0x39, 0x5D, 0x0A, 0x0A, 
52690
  0x2A, 0x20, 0x3A, 0x68, 0x6F, 0x75, 0x72, 0x73, 0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
52691
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x68, 0x6F, 0x75, 0x72, 0x73, 0x20, 0x5B, 0x30, 0x2D, 0x32, 0x33, 
52692
  0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x2D, 0x64, 0x61, 0x79, 0x20, 
52693
  0x2D, 0x20, 0x64, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 0x5B, 
52694
  0x30, 0x2D, 0x33, 0x30, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 
52695
  0x2D, 0x20, 0x6D, 0x6F, 0x6E, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x79, 0x65, 0x61, 0x72, 0x20, 
52696
  0x5B, 0x30, 0x2C, 0x20, 0x31, 0x31, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x65, 0x61, 0x72, 
52697
  0x20, 0x2D, 0x20, 0x79, 0x65, 0x61, 0x72, 0x73, 0x20, 0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x79, 
52698
  0x65, 0x61, 0x72, 0x20, 0x30, 0x20, 0x28, 0x65, 0x2E, 0x67, 0x2E, 0x20, 0x32, 0x30, 0x31, 0x39, 
52699
  0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x65, 0x65, 0x6B, 0x2D, 0x64, 0x61, 0x79, 0x20, 0x2D, 
52700
  0x20, 0x64, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x65, 0x65, 0x6B, 
52701
  0x20, 0x5B, 0x30, 0x2D, 0x36, 0x5D, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x79, 0x65, 0x61, 0x72, 0x2D, 
52702
  0x64, 0x61, 0x79, 0x20, 0x2D, 0x20, 0x64, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
52703
  0x20, 0x79, 0x65, 0x61, 0x72, 0x20, 0x5B, 0x30, 0x2D, 0x33, 0x36, 0x35, 0x5D, 0x0A, 0x0A, 0x2A, 
52704
  0x20, 0x3A, 0x64, 0x73, 0x74, 0x20, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x44, 0x61, 0x79, 0x20, 0x4C, 
52705
  0x69, 0x67, 0x68, 0x74, 0x20, 0x53, 0x61, 0x76, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x69, 0x73, 0x20, 
52706
  0x69, 0x6E, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0xDA, 0x08, 0xDA, 0x8B, 0x10, 0xDA, 0x8B, 
52707
  0x11, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x56, 0x01, 0xDA, 0x06, 
52708
  0xCE, 0x81, 0x1F, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x62, 0x6C, 0x69, 0x74, 0x20, 
52709
  0x64, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 
52710
  0x73, 0x74, 0x2D, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x73, 0x72, 0x63, 0x2D, 0x73, 0x74, 0x61, 
52711
  0x72, 0x74, 0x20, 0x73, 0x72, 0x63, 0x2D, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x73, 
52712
  0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 
52713
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x73, 0x72, 0x63, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x60, 
52714
  0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 
52715
  0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 
52716
  0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 
52717
  0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 
52718
  0x73, 0x72, 0x63, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x70, 0x79, 0x20, 0x69, 0x6E, 0x74, 
52719
  0x6F, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 
52720
  0x60, 0x64, 0x65, 0x73, 0x74, 0x60, 0x2E, 0x20, 0x49, 0x6E, 0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 
52721
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 
52722
  0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 
52723
  0x78, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 
52724
  0x66, 0x20, 0x60, 0x73, 0x72, 0x63, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 
52725
  0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x64, 0x65, 0x73, 0x74, 
52726
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x12, 0xDA, 0x8B, 0x13, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
52727
  0x00, 0xDA, 0x90, 0x54, 0x4A, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xE9, 0x28, 0x74, 0x75, 0x70, 0x6C, 
52728
  0x65, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x20, 0x5B, 
52729
  0x2C, 0x73, 0x74, 0x61, 0x72, 0x74, 0x3D, 0x30, 0x20, 0x5B, 0x2C, 0x65, 0x6E, 0x64, 0x3D, 0x28, 
52730
  0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x72, 0x72, 0x74, 0x75, 0x70, 0x29, 0x5D, 0x5D, 
52731
  0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 0x2D, 0x73, 0x65, 
52732
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 
52733
  0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
52734
  0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 
52735
  0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x65, 
52736
  0x78, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 
52737
  0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x6F, 0x72, 
52738
  0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 
52739
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x64, 0x65, 
52740
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 
52741
  0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x61, 0x72, 
52742
  0x72, 0x74, 0x75, 0x70, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 
52743
  0x65, 0x6C, 0x79, 0x2E, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x61, 0x6E, 0x64, 
52744
  0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
52745
  0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 
52746
  0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 
52747
  0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
52748
  0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 
52749
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x66, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 
52750
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 
52751
  0x69, 0x73, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x61, 0x6E, 
52752
  0x64, 0x20, 0x69, 0x66, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 
52753
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 
52754
  0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 
52755
  0x20, 0x61, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 
52756
  0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 
52757
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 
52758
  0x70, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x2C, 0xDA, 0x8B, 0x14, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
52759
  0x03, 0x00, 0xDA, 0x04, 0x34, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xFE, 0x28, 0x61, 0x73, 0x2D, 0x6D, 
52760
  0x61, 0x63, 0x72, 0x6F, 0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 
52761
  0x55, 0x73, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 
52762
  0x72, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x6C, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6C, 0x20, 
52763
  0x60, 0x66, 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 
52764
  0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x74, 0x73, 0x0A, 0x61, 0x6E, 0x79, 0x20, 0x66, 0x75, 
52765
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 
52766
  0x73, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x69, 0x64, 
52767
  0x65, 0x20, 0x61, 0x20, 0x71, 0x75, 0x61, 0x73, 0x69, 0x71, 0x75, 0x6F, 0x74, 0x65, 0x2C, 0x20, 
52768
  0x74, 0x68, 0x65, 0x0A, 0x69, 0x64, 0x69, 0x6F, 0x6D, 0x20, 0x60, 0x28, 0x61, 0x73, 0x2D, 0x6D, 
52769
  0x61, 0x63, 0x72, 0x6F, 0x20, 0x2C, 0x6D, 0x79, 0x2D, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x2D, 
52770
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x61, 0x72, 0x67, 0x31, 0x20, 0x61, 0x72, 0x67, 0x32, 0x2E, 
52771
  0x2E, 0x2E, 0x29, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
52772
  0x0A, 0x74, 0x6F, 0x20, 0x61, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x75, 0x6E, 0x77, 0x61, 0x6E, 0x74, 
52773
  0x65, 0x64, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 0x61, 0x70, 0x74, 
52774
  0x75, 0x72, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6D, 0x79, 0x2D, 0x63, 0x75, 0x73, 0x74, 0x6F, 
52775
  0x6D, 0x2D, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 
52776
  0x15, 0xDA, 0x8B, 0x17, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 0x15, 0x28, 0x61, 0x70, 0x70, 0x6C, 
52777
  0x79, 0x20, 0x66, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 
52778
  0x6C, 0x69, 0x65, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
52779
  0x66, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 
52780
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 
52781
  0x6E, 0x74, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
52782
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 
52783
  0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 
52784
  0x20, 0x74, 0x6F, 0x20, 0x66, 0x2C, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x74, 0x68, 
52785
  0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 
52786
  0x6E, 0x20, 0x61, 0x72, 0x67, 0x73, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 
52787
  0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 
52788
  0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x74, 0x75, 
52789
  0x70, 0x6C, 0x65, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 
52790
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x61, 
52791
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 
52792
  0x61, 0x6C, 0x73, 0x6F, 0x20, 0x70, 0x75, 0x73, 0x68, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 
52793
  0x6E, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x66, 0x2E, 
52794
  0xDA, 0x08, 0xDA, 0x8B, 0x18, 0xDA, 0x85, 0xBF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
52795
  0x04, 0x75, 0x01, 0xDA, 0x06, 0xCE, 0x1C, 0x28, 0x6E, 0x69, 0x6C, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
52796
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 
52797
  0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xBD, 0xDA, 0x8B, 0x1A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
52798
  0x03, 0x00, 0xDA, 0x04, 0x85, 0x33, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x84, 0x28, 0x68, 0x61, 0x73, 
52799
  0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x3F, 0x20, 0x64, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
52800
  0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 
52801
  0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 0x73, 
52802
  0x60, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
52803
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 0x2E, 0x20, 0x57, 0x69, 
52804
  0x6C, 0x6C, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x70, 
52805
  0x72, 0x6F, 0x70, 0x6F, 0x72, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x74, 
52806
  0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 
52807
  0xDA, 0x08, 0xDA, 0x8B, 0x1B, 0xDA, 0x85, 0x53, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
52808
  0x04, 0x8A, 0x07, 0x01, 0xDA, 0x06, 0xCE, 0x85, 0x6C, 0x28, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 
52809
  0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x6F, 0x70, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 
52810
  0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
52811
  0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 
52812
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 
52813
  0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x6E, 
52814
  0x63, 0x61, 0x70, 0x73, 0x75, 0x6C, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
52815
  0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 
52816
  0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 
52817
  0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x28, 0x69, 
52818
  0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x3A, 0x65, 
52819
  0x78, 0x69, 0x74, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
52820
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x29, 0x60, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 
52821
  0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x0A, 0x60, 0x6F, 0x70, 0x74, 0x73, 0x60, 0x20, 0x69, 0x73, 
52822
  0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 
52823
  0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x54, 
52824
  0x68, 0x65, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 
52825
  0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 
52826
  0x60, 0x3A, 0x63, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 
52827
  0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x6E, 
52828
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x2D, 0x20, 0x64, 0x65, 
52829
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x67, 0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 
52830
  0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 
52831
  0x2D, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 
52832
  0x61, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 
52833
  0x20, 0x66, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
52834
  0x20, 0x69, 0x73, 0x20, 0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x0A, 0x0A, 0x20, 
52835
  0x20, 0x2A, 0x20, 0x60, 0x3A, 0x65, 0x6E, 0x76, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 
52836
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 
52837
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 0x20, 
52838
  0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 
52839
  0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x0A, 0x0A, 0x20, 0x20, 
52840
  0x2A, 0x20, 0x60, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x73, 
52841
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x62, 
52842
  0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x28, 0x75, 0x73, 
52843
  0x65, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 
52844
  0x6F, 0x6E, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0x29, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 
52845
  0x75, 0x6C, 0x74, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x69, 0x73, 0x20, 0x60, 0x3A, 0x3C, 0x61, 0x6E, 
52846
  0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x3E, 0x60, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 
52847
  0x3A, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x2D, 0x65, 0x72, 0x72, 0x6F, 
52848
  0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x77, 
52849
  0x68, 0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
52850
  0x66, 0x61, 0x69, 0x6C, 0x73, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
52851
  0x69, 0x73, 0x20, 0x62, 0x61, 0x64, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 
52852
  0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 
52853
  0x2D, 0x77, 0x61, 0x72, 0x6E, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 
52854
  0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6C, 0x69, 
52855
  0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x2D, 0x20, 0x64, 0x65, 
52856
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x77, 0x61, 0x72, 0x6E, 0x2D, 0x63, 0x6F, 
52857
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x65, 0x76, 0x61, 
52858
  0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 
52859
  0x61, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 
52860
  0x73, 0x20, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x73, 0x2E, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x61, 0x74, 
52861
  0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x28, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 
52862
  0x72, 0x20, 0x74, 0x68, 0x75, 0x6E, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x0A, 0x20, 
52863
  0x20, 0x20, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x20, 
52864
  0x20, 0x2A, 0x20, 0x60, 0x3A, 0x6F, 0x6E, 0x2D, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x60, 0x20, 
52865
  0x2D, 0x2D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 
52866
  0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x65, 0x76, 0x61, 0x6C, 
52867
  0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x2D, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 
52868
  0x69, 0x73, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x74, 0x72, 
52869
  0x61, 0x63, 0x65, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x66, 0x69, 0x62, 0x65, 
52870
  0x72, 0x2D, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x77, 0x68, 0x61, 0x74, 
52871
  0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x77, 0x72, 0x61, 0x70, 0x20, 0x74, 
52872
  0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 
52873
  0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 
52874
  0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x69, 0x61, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 
52875
  0x60, 0x3A, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x61, 
52876
  0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
52877
  0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
52878
  0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x74, 0x6F, 0x70, 0x20, 0x6C, 
52879
  0x65, 0x76, 0x65, 0x6C, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 
52880
  0x0A, 0x20, 0x20, 0x20, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 
52881
  0x6C, 0x65, 0x64, 0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x70, 0x61, 0x72, 0x73, 
52882
  0x65, 0x72, 0x60, 0x20, 0x2D, 0x2D, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 
52883
  0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x74, 
52884
  0x68, 0x61, 0x74, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 
52885
  0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 
52886
  0x65, 0x20, 0x61, 0x73, 0x20, 0x4A, 0x61, 0x6E, 0x65, 0x74, 0x27, 0x73, 0x0A, 0x20, 0x20, 0x20, 
52887
  0x20, 0x62, 0x75, 0x69, 0x6C, 0x74, 0x2D, 0x69, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
52888
  0x2E, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x60, 0x3A, 0x72, 0x65, 0x61, 0x64, 0x60, 0x20, 0x2D, 
52889
  0x2D, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
52890
  0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
52891
  0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 
52892
  0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x28, 0x72, 0x65, 0x61, 0x64, 0x20, 0x65, 0x6E, 0x76, 
52893
  0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x29, 0x60, 0x2E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x4F, 
52894
  0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x61, 0x72, 
52895
  0x73, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x25, 0xDA, 0x8B, 0x1D, 0xD3, 0x03, 0xDA, 
52896
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x81, 0x53, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xEF, 0x28, 
52897
  0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x72, 0x72, 
52898
  0x20, 0x61, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 
52899
  0x6F, 0x76, 0x65, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x65, 0x6C, 
52900
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 
52901
  0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x61, 0x74, 0x60, 0x20, 0x69, 0x6E, 
52902
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x2E, 0x20, 0x60, 0x61, 
52903
  0x74, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x66, 0x72, 0x6F, 
52904
  0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
52905
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x6E, 0x65, 
52906
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2C, 0x20, 0x61, 0x6E, 
52907
  0x64, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 
52908
  0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 
52909
  0x65, 0x67, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
52910
  0x2C, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x20, 0x31, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
52911
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 
52912
  0xDA, 0x8B, 0x1E, 0xDA, 0x8B, 0x1F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 
52913
  0x82, 0x25, 0x01, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x70, 0x72, 0x69, 0x6E, 0x20, 0x26, 0x20, 0x78, 
52914
  0x73, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 
52915
  0x6E, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
52916
  0x74, 0x20, 0x61, 0x64, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 
52917
  0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x20, 0xDA, 0x85, 0x45, 0xD3, 
52918
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0xC7, 0x01, 0xDA, 0x06, 0xCE, 0x37, 0x28, 
52919
  0x62, 0x61, 0x64, 0x2D, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x70, 0x20, 0x77, 0x68, 0x65, 0x72, 
52920
  0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x68, 0x61, 0x6E, 0x64, 
52921
  0x6C, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 
52922
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x41, 0xDA, 0x8B, 0x21, 0xD3, 0x03, 
52923
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x84, 0x1B, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xFF, 
52924
  0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x70, 0x61, 
52925
  0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 
52926
  0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
52927
  0x72, 0x72, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 
52928
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 
52929
  0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
52930
  0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 
52931
  0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 
52932
  0x69, 0x6C, 0x2E, 0x20, 0x41, 0x6C, 0x73, 0x6F, 0x20, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x65, 0x73, 
52933
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x73, 0x74, 0x61, 0x74, 
52934
  0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x71, 0x75, 0x65, 
52935
  0x75, 0x65, 0x2C, 0x20, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 
52936
  0x6F, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x74, 0x68, 
52937
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 
52938
  0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 
52939
  0x60, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x60, 0x2E, 0xDA, 
52940
  0x08, 0xDA, 0x0F, 0xDA, 0x8B, 0x22, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 
52941
  0x8D, 0x8B, 0x01, 0xDA, 0x06, 0xCE, 0x45, 0x28, 0x65, 0x76, 0x2F, 0x61, 0x63, 0x71, 0x75, 0x69, 
52942
  0x72, 0x65, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 
52943
  0x0A, 0x0A, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x20, 0x61, 0x20, 0x77, 0x72, 0x69, 0x74, 
52944
  0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x64, 
52945
  0x2D, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 
52946
  0x23, 0xDA, 0x8B, 0x24, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x80, 0xC6, 
52947
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x6E, 0x65, 
52948
  0x77, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
52949
  0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x2C, 0x20, 0x65, 0x6D, 0x70, 0x74, 
52950
  0x79, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x6E, 
52951
  0x6F, 0x75, 0x67, 0x68, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 
52952
  0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 
52953
  0x79, 0x60, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
52954
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 
52955
  0x66, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x58, 
52956
  0xDA, 0x8B, 0x25, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x54, 0x79, 0x01, 0xDA, 
52957
  0x06, 0xCE, 0x51, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x6A, 0x6F, 0x69, 0x6E, 0x20, 0x26, 
52958
  0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 
52959
  0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 0x6A, 0x6F, 0x69, 0x6E, 0x69, 
52960
  0x6E, 0x67, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 
52961
  0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x72, 0x72, 
52962
  0x61, 0x79, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x26, 0xDA, 0x8B, 0x27, 0xD3, 0x03, 0xDA, 0x03, 
52963
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xB4, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x89, 0x28, 0x73, 
52964
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 
52965
  0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x65, 0x6E, 0x64, 
52966
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x75, 0x62, 
52967
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x62, 0x79, 
52968
  0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 
52969
  0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x72, 
52970
  0x6F, 0x6D, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 
52971
  0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 
52972
  0x64, 0x65, 0x78, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x2C, 0x20, 0x65, 0x78, 0x63, 0x6C, 0x75, 
52973
  0x73, 0x69, 0x76, 0x65, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 
52974
  0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x30, 0x2E, 0x20, 0x60, 0x73, 
52975
  0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x65, 0x6E, 0x64, 0x60, 0x20, 
52976
  0x63, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x6E, 0x65, 0x67, 0x61, 
52977
  0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 
52978
  0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 
52979
  0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 
52980
  0x72, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
52981
  0x69, 0x66, 0x20, 0x60, 0x73, 0x74, 0x61, 0x72, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 
52982
  0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x65, 0x78, 0x63, 
52983
  0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x66, 0x20, 0x60, 
52984
  0x65, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 
52985
  0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x73, 0x69, 0x76, 0x65, 
52986
  0x2C, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6C, 
52987
  0x6C, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 
52988
  0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x3D, 0xCF, 0x0C, 0x6D, 0x61, 0x74, 
52989
  0x68, 0x2F, 0x69, 0x6E, 0x74, 0x2D, 0x6D, 0x61, 0x78, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
52990
  0xDA, 0x21, 0x81, 0xB8, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 
52991
  0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 
52992
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 
52993
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 
52994
  0x65, 0x20, 0x28, 0x2D, 0x28, 0x32, 0x5E, 0x35, 0x33, 0x29, 0x29, 0xDA, 0x08, 0xC8, 0x00, 0x00, 
52995
  0x00, 0x00, 0x00, 0x00, 0x40, 0x43, 0xDA, 0x8B, 0x28, 0xD3, 0x05, 0xDA, 0x86, 0x28, 0xCB, 0xDA, 
52996
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x4A, 0x28, 0x64, 0x65, 0x66, 
52997
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 
52998
  0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x70, 0x72, 
52999
  0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 
53000
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x70, 
53001
  0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x29, 0xDA, 0x8B, 
53002
  0x2B, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xF2, 0x01, 0xDA, 0x06, 0xCE, 
53003
  0x80, 0x90, 0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x76, 0x61, 0x72, 0x73, 0x20, 0x76, 0x61, 0x72, 
53004
  0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 
53005
  0x61, 0x74, 0x65, 0x73, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 
53006
  0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x76, 0x61, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x76, 0x61, 
53007
  0x72, 0x73, 0x60, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x69, 0x6C, 0x79, 0x20, 
53008
  0x62, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x73, 
53009
  0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x74, 0x6F, 0x0A, 0x60, 0x6C, 0x65, 0x74, 
53010
  0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x62, 0x69, 0x6E, 0x64, 
53011
  0x69, 0x6E, 0x67, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 
53012
  0x72, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x2C, 0xDA, 0x8B, 0x41, 0xD3, 0x03, 0xDA, 
53013
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0xC4, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x70, 0x72, 
53014
  0x65, 0x77, 0x61, 0x6C, 0x6B, 0x20, 0x66, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x29, 0x0A, 0x0A, 0x53, 
53015
  0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x70, 0x6F, 0x73, 0x74, 0x77, 
53016
  0x61, 0x6C, 0x6B, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x64, 0x6F, 0x20, 0x70, 0x72, 0x65, 
53017
  0x2D, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 
53018
  0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x42, 0xDA, 0x8B, 0x44, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53019
  0xDA, 0x04, 0x87, 0x7D, 0x01, 0xDA, 0x06, 0xCE, 0x85, 0x1A, 0x28, 0x6D, 0x61, 0x74, 0x63, 0x68, 
53020
  0x20, 0x78, 0x20, 0x26, 0x20, 0x63, 0x61, 0x73, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x74, 
53021
  0x74, 0x65, 0x72, 0x6E, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x20, 0x4D, 
53022
  0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 
53023
  0x6F, 0x6E, 0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 0x20, 0x61, 
53024
  0x6E, 0x79, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x61, 0x73, 
53025
  0x65, 0x73, 0x2E, 0x0A, 0x45, 0x61, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x69, 0x73, 
53026
  0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 
53027
  0x74, 0x63, 0x68, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 0x2C, 0x20, 0x66, 0x6F, 0x6C, 
53028
  0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x72, 
53029
  0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 
53030
  0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 
53031
  0x73, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x2E, 0x20, 0x20, 
53032
  0x4C, 0x65, 0x67, 0x61, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x20, 0x61, 
53033
  0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x2D, 0x2D, 
53034
  0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
53035
  0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
53036
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x2C, 
53037
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x78, 0x60, 0x27, 0x73, 0x0A, 0x20, 
53038
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 
53039
  0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
53040
  0x6F, 0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
53041
  0x20, 0x2D, 0x2D, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 
53042
  0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x77, 0x69, 
53043
  0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 
53044
  0x0A, 0x20, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 0x65, 0x6C, 
53045
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, 0x65, 
53046
  0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x65, 
53047
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 0x60, 0x2E, 0x0A, 
53048
  0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 0x60, 0x26, 0x20, 0x72, 0x65, 0x73, 0x74, 0x60, 0x20, 0x61, 
53049
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 
53050
  0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 
53051
  0x65, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 
53052
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 
53053
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x72, 0x65, 0x73, 0x74, 0x60, 0x2E, 
53054
  0x0A, 0x0A, 0x2A, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 
53055
  0x75, 0x63, 0x74, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 
53056
  0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 
53057
  0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
53058
  0x73, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x77, 0x69, 0x74, 0x68, 0x0A, 0x20, 0x20, 0x74, 
53059
  0x68, 0x65, 0x20, 0x63, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
53060
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 0x60, 0x2E, 0x0A, 
53061
  0x0A, 0x2A, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x61, 0x20, 0x74, 0x75, 
53062
  0x70, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
53063
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 0x66, 0x69, 
53064
  0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 
53065
  0x68, 0x65, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x20, 0x20, 0x66, 
53066
  0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
53067
  0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 
53068
  0x20, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
53069
  0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x60, 0x5F, 0x60, 
53070
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
53071
  0x61, 0x73, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x63, 0x61, 0x73, 0x65, 
53072
  0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x5F, 0x60, 0x20, 0x73, 0x79, 0x6D, 0x62, 
53073
  0x6F, 0x6C, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x77, 
53074
  0x69, 0x6C, 0x64, 0x63, 0x61, 0x72, 0x64, 0x0A, 0x20, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 
53075
  0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 
53076
  0x6C, 0x75, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x63, 0x72, 0x65, 0x61, 
53077
  0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0x0A, 
53078
  0x0A, 0x57, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 
53079
  0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x72, 0x64, 
53080
  0x69, 0x6E, 0x61, 0x72, 0x69, 0x6C, 0x79, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x6E, 
53081
  0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 
53082
  0x74, 0x65, 0x72, 0x6E, 0x20, 0x60, 0x28, 0x40, 0x20, 0x3C, 0x73, 0x79, 0x6D, 0x3E, 0x29, 0x60, 
53083
  0x2C, 0x0A, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x60, 0x3C, 0x73, 0x79, 0x6D, 0x3E, 0x60, 0x20, 
53084
  0x69, 0x73, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x77, 
53085
  0x69, 0x6C, 0x6C, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x6D, 
53086
  0x61, 0x74, 0x63, 0x68, 0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 0x73, 0x74, 
53087
  0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x61, 0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 
53088
  0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x3C, 0x73, 0x79, 0x6D, 0x3E, 
53089
  0x60, 0x2C, 0x20, 0x72, 0x61, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6D, 
53090
  0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x62, 0x69, 
53091
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x2E, 0x0A, 0x0A, 0x41, 0x6E, 0x79, 0x20, 0x6F, 
53092
  0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 
53093
  0x72, 0x6E, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6D, 0x61, 0x74, 
53094
  0x63, 0x68, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 
53095
  0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x78, 0x60, 0x2E, 0x0A, 0x51, 0x75, 0x6F, 0x74, 0x69, 0x6E, 
53096
  0x67, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 
53097
  0x20, 0x60, 0x27, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x74, 
53098
  0x72, 0x65, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 
53099
  0x73, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 
53100
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6E, 
53101
  0x73, 0x74, 0x2E, 0x0A, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0x45, 0xDA, 0x8B, 0x9C, 0xD3, 
53102
  0x05, 0xDA, 0x86, 0x28, 0xDA, 0x86, 0x2A, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x46, 0x01, 
53103
  0xDA, 0x06, 0xCE, 0x45, 0x28, 0x64, 0x65, 0x66, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 
53104
  0x20, 0x6D, 0x6F, 0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 
53105
  0x20, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 
53106
  0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 
53107
  0x65, 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 
53108
  0x9D, 0xDA, 0x8B, 0x9F, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x56, 0x01, 
53109
  0xDA, 0x06, 0xCE, 0x81, 0x48, 0x28, 0x74, 0x72, 0x79, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x63, 
53110
  0x61, 0x74, 0x63, 0x68, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x79, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x74, 
53111
  0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 0x74, 0x63, 0x68, 0x20, 0x65, 
53112
  0x72, 0x72, 0x6F, 0x72, 0x73, 0x2E, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x69, 0x73, 
53113
  0x20, 0x61, 0x6E, 0x79, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2C, 
53114
  0x0A, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x63, 0x61, 0x74, 0x63, 0x68, 0x60, 0x20, 0x73, 0x68, 0x6F, 
53115
  0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x2C, 0x20, 0x74, 
53116
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
53117
  0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 
53118
  0x75, 0x70, 0x6C, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 
53119
  0x0A, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 
53120
  0x61, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x72, 
53121
  0x72, 0x6F, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 
53122
  0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 
53123
  0x0A, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 
53124
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x2E, 0x20, 0x52, 0x65, 
53125
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
53126
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 
53127
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2C, 0x0A, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
53128
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x63, 0x61, 0x74, 0x63, 0x68, 0x60, 
53129
  0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x59, 0xCB, 
53130
  0xDA, 0x08, 0xDA, 0x8B, 0xA0, 0xDA, 0x8B, 0xA8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53131
  0x8E, 0x8E, 0x80, 0xDB, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x56, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 
53132
  0x2F, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 0x20, 0x61, 0x72, 0x72, 0x20, 0x63, 0x61, 0x70, 0x61, 
53133
  0x63, 0x69, 0x74, 0x79, 0x20, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x45, 0x6E, 
53134
  0x73, 0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
53135
  0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
53136
  0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 
53137
  0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x63, 0x61, 0x70, 
53138
  0x61, 0x63, 0x69, 0x74, 0x79, 0x60, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x20, 0x61, 0x74, 0x20, 
53139
  0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x72, 0x61, 0x74, 0x65, 0x20, 0x6F, 
53140
  0x66, 0x20, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 0x2E, 0x20, 0x60, 0x63, 0x61, 0x70, 0x61, 0x63, 
53141
  0x69, 0x74, 0x79, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x67, 0x72, 0x6F, 0x77, 0x74, 0x68, 
53142
  0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
53143
  0x72, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x69, 
53144
  0x6E, 0x67, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x20, 0x69, 0x73, 0x20, 0x61, 
53145
  0x6C, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x2C, 0x20, 0x74, 
53146
  0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
53147
  0x6E, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x68, 0x69, 0x6E, 0x67, 0x2E, 0x20, 
53148
  0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 
53149
  0x61, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x77, 0x69, 
53150
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 
53151
  0x64, 0x20, 0x73, 0x6F, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 
53152
  0x69, 0x73, 0x20, 0x65, 0x6E, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2E, 
53153
  0xDA, 0x08, 0xDA, 0x8B, 0xA9, 0xDA, 0x8B, 0xAA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53154
  0x80, 0x95, 0x83, 0xEA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB5, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x66, 
53155
  0x6C, 0x75, 0x73, 0x68, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 
53156
  0x6B, 0x65, 0x20, 0x73, 0x75, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x73, 
53157
  0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x75, 0x66, 
53158
  0x66, 0x65, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 
53159
  0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 0x61, 0x72, 0x69, 0x6C, 
53160
  0x79, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x4E, 0x61, 0x67, 0x6C, 0x65, 
53161
  0x27, 0x73, 0x20, 0x61, 0x6C, 0x67, 0x6F, 0x72, 0x69, 0x74, 0x68, 0x6D, 0x2E, 0x20, 0x55, 0x73, 
53162
  0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x73, 
53163
  0x75, 0x72, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x6E, 0x74, 
53164
  0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x2E, 0x20, 
53165
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0xDA, 
53166
  0x08, 0xDA, 0x8B, 0xAB, 0xDA, 0x83, 0x80, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
53167
  0x8A, 0xD5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8E, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x2D, 0x61, 
53168
  0x6C, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 
53169
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 
53170
  0x72, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x64, 0x20, 0x76, 0x61, 
53171
  0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 
53172
  0x78, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 
53173
  0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x77, 0x69, 
53174
  0x74, 0x68, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x69, 0x6E, 
53175
  0x67, 0x2C, 0x0A, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
53176
  0x72, 0x20, 0x61, 0x70, 0x69, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x7E, 0xDA, 0x8B, 0xAC, 0xD3, 0x03, 
53177
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x82, 0xCC, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x3B, 
53178
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x20, 0x68, 0x6F, 0x73, 0x74, 
53179
  0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 
53180
  0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x75, 0x73, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
53181
  0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
53182
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
53183
  0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x69, 0x74, 0x68, 0x65, 
53184
  0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 0x6F, 0x72, 0x20, 0x77, 
53185
  0x72, 0x69, 0x74, 0x65, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x6E, 0x65, 
53186
  0x74, 0x2F, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x65, 0x74, 0x2F, 
53187
  0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x65, 0x20, 0x74, 
53188
  0x6F, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 
53189
  0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x74, 
53190
  0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 
53191
  0x79, 0x70, 0x65, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 0x65, 0x72, 0x20, 0x73, 0x70, 
53192
  0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 
53193
  0x20, 0x6F, 0x66, 0x20, 0x6E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 
53194
  0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 
53195
  0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x28, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 
53196
  0x79, 0x20, 0x74, 0x63, 0x70, 0x29, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x3A, 0x64, 0x61, 0x74, 0x61, 
53197
  0x67, 0x72, 0x61, 0x6D, 0x20, 0x28, 0x75, 0x73, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x75, 0x64, 
53198
  0x70, 0x29, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 
53199
  0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 
53200
  0x74, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 
53201
  0x65, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 
53202
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 
53203
  0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6E, 0x65, 0x74, 
53204
  0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6C, 0x61, 
53205
  0x73, 0x74, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 
53206
  0x65, 0x74, 0x65, 0x72, 0x20, 0x60, 0x6E, 0x6F, 0x2D, 0x72, 0x65, 0x75, 0x73, 0x65, 0x60, 0x20, 
53207
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 
53208
  0x20, 0x75, 0x73, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x53, 0x4F, 0x5F, 0x52, 0x45, 0x55, 0x53, 
53209
  0x45, 0x41, 0x44, 0x44, 0x52, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x53, 0x4F, 0x5F, 0x52, 
53210
  0x45, 0x55, 0x53, 0x45, 0x50, 0x4F, 0x52, 0x54, 0x60, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 
53211
  0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 
53212
  0x20, 0x6F, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 
53213
  0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xB5, 
53214
  0xDA, 0x8B, 0xAD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x18, 0x01, 0xDA, 
53215
  0x06, 0xCE, 0x34, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 0x78, 0x70, 0x6D, 0x31, 0x20, 0x78, 
53216
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x65, 0x20, 0x74, 0x6F, 0x20, 
53217
  0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x6D, 
53218
  0x69, 0x6E, 0x75, 0x73, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xAE, 0xDA, 0x8B, 0xAF, 0xD3, 
53219
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 
53220
  0x70, 0x6F, 0x73, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 
53221
  0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 
53222
  0x68, 0x61, 0x6E, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xB0, 0xDA, 0x8B, 0xB2, 0xD3, 0x03, 
53223
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x89, 0xB6, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x6F, 
53224
  0x73, 0x2F, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0x20, 0x6D, 0x61, 0x73, 0x6B, 0x29, 0x0A, 0x0A, 0x53, 
53225
  0x65, 0x74, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x75, 0x6D, 0x61, 0x73, 0x6B, 0x2C, 0x20, 
53226
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x20, 
53227
  0x75, 0x6D, 0x61, 0x73, 0x6B, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xB3, 0xDA, 0x86, 0x7A, 0xD3, 0x05, 
53228
  0xDA, 0x86, 0x28, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x0A, 0x01, 0xDA, 0x06, 0xCE, 
53229
  0x57, 0x28, 0x64, 0x65, 0x66, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 
53230
  0x72, 0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 
53231
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x45, 0x71, 0x75, 0x69, 0x76, 0x61, 0x6C, 0x65, 
53232
  0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x64, 0x65, 0x66, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
53233
  0x20, 0x28, 0x66, 0x6E, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x5B, 0x61, 0x72, 0x67, 0x73, 0x5D, 
53234
  0x20, 0x2E, 0x2E, 0x2E, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0x75, 
53235
  0xDA, 0x8B, 0xB4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0x74, 0x01, 0xDA, 
53236
  0x06, 0xCE, 0x38, 0x28, 0x6F, 0x73, 0x2F, 0x73, 0x65, 0x74, 0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 
53237
  0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x53, 
53238
  0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 
53239
  0x74, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xB5, 
53240
  0xDA, 0x8B, 0xB6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x73, 0x01, 0xDA, 0x06, 
53241
  0xCE, 0x1E, 0x28, 0x74, 0x72, 0x75, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 
53242
  0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 
53243
  0xDA, 0x08, 0xDA, 0x8B, 0xB7, 0xDA, 0x8B, 0xB9, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53244
  0x04, 0x85, 0x25, 0x01, 0xDA, 0x06, 0xCE, 0x47, 0x28, 0x6A, 0x75, 0x78, 0x74, 0x20, 0x26, 0x20, 
53245
  0x66, 0x75, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x66, 0x6F, 0x72, 
53246
  0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0x60, 0x2E, 0x20, 0x53, 0x61, 
53247
  0x6D, 0x65, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6F, 0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 
53248
  0x6D, 0x6F, 0x72, 0x65, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 
53249
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xBA, 0xDA, 0x8B, 0xC2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53250
  0x00, 0xDA, 0x04, 0x8C, 0x98, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC8, 0x28, 0x61, 0x6C, 0x6C, 0x2D, 
53251
  0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6E, 
53252
  0x76, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6C, 
53253
  0x6C, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 
53254
  0x62, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 
53255
  0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 
53256
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x0A, 0x66, 
53257
  0x69, 0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
53258
  0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 0x69, 
53259
  0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 
53260
  0x6F, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x69, 0x6E, 0x68, 0x65, 0x72, 0x69, 0x74, 0x65, 
53261
  0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x0A, 0x28, 0x66, 0x72, 0x6F, 0x6D, 
53262
  0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
53263
  0x73, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xC3, 0xDA, 0x8B, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53264
  0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x74, 0x01, 0xDA, 0x06, 0xCE, 0x2E, 0x28, 0x61, 0x62, 0x73, 
53265
  0x74, 0x72, 0x61, 0x63, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 
53266
  0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 
53267
  0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xC6, 0xDA, 
53268
  0x8B, 0xC7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x80, 0xBC, 0x01, 0xDA, 
53269
  0x06, 0xCE, 0x50, 0x28, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 
53270
  0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 
53271
  0x74, 0x20, 0x65, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
53272
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x2C, 0x20, 0x62, 0x75, 
53273
  0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 
53274
  0x6F, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xC8, 0xDA, 0x8B, 0xC9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53275
  0x03, 0x00, 0xDA, 0x04, 0x83, 0x2E, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC5, 0x28, 0x65, 0x78, 0x74, 
53276
  0x72, 0x65, 0x6D, 0x65, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 
53277
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 
53278
  0x73, 0x74, 0x20, 0x65, 0x78, 0x74, 0x72, 0x65, 0x6D, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
53279
  0x20, 0x69, 0x6E, 0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x62, 0x61, 0x73, 0x65, 0x64, 
53280
  0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
53281
  0x20, 0x60, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x60, 0x2E, 0x0A, 0x60, 0x6F, 0x72, 0x64, 0x65, 0x72, 
53282
  0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x74, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x77, 
53283
  0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 
53284
  0x75, 0x72, 0x6E, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x66, 0x61, 0x6C, 0x73, 
53285
  0x65, 0x20, 0x28, 0x61, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x69, 0x73, 0x6F, 0x6E, 0x29, 
53286
  0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 
53287
  0x20, 0x60, 0x61, 0x72, 0x67, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 
53288
  0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xCA, 0xDA, 0x8B, 0xCC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53289
  0xDA, 0x4C, 0x86, 0x63, 0x01, 0xDA, 0x06, 0xCE, 0x50, 0x28, 0x6F, 0x73, 0x2F, 0x67, 0x65, 0x74, 
53290
  0x65, 0x6E, 0x76, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x26, 0x6F, 0x70, 
53291
  0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
53292
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 
53293
  0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
53294
  0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x88, 0xD9, 0xDA, 0x80, 
53295
  0xB9, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x0B, 0x03, 0xDA, 0x06, 0xCE, 
53296
  0x75, 0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 
53297
  0x6F, 0x63, 0x6B, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 
53298
  0x20, 0x61, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 
53299
  0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x69, 0x6E, 0x67, 0x20, 
53300
  0x61, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x75, 0x74, 
53301
  0x6F, 0x6D, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x6C, 0x65, 0x61, 
53302
  0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x77, 0x68, 0x65, 0x6E, 
53303
  0x20, 0x64, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xCD, 0xDA, 0x8B, 
53304
  0xCF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x8A, 0x1D, 0x01, 0xDA, 0x06, 0xCE, 
53305
  0x81, 0x52, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 
53306
  0x67, 0x20, 0x69, 0x6E, 0x74, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 
53307
  0x61, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x6F, 0x63, 0x74, 0x61, 0x6C, 0x20, 0x70, 0x65, 0x72, 
53308
  0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 
53309
  0x6F, 0x6D, 0x20, 0x61, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 
53310
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
53311
  0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x60, 
53312
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x68, 0x75, 0x6D, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x61, 0x64, 
53313
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x74, 0x68, 0x61, 
53314
  0x74, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 
53315
  0x72, 0x6D, 0x61, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x55, 0x6E, 0x69, 0x78, 
53316
  0x20, 0x74, 0x6F, 0x6F, 0x6C, 0x73, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x6C, 0x73, 0x60, 
53317
  0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 
53318
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x39, 0x2D, 0x63, 0x68, 0x61, 0x72, 
53319
  0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 
53320
  0x72, 0x2C, 0x20, 0x77, 0x2C, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x63, 0x68, 
53321
  0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 
53322
  0x6F, 0x74, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
53323
  0x69, 0x6C, 0x65, 0x2F, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2F, 0x73, 0x79, 
53324
  0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 
53325
  0x61, 0x73, 0x20, 0x72, 0x65, 0x6E, 0x64, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 
53326
  0x6C, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xD0, 0xDA, 0x8B, 0xD1, 0xD3, 0x03, 0xDA, 0x03, 
53327
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xDE, 0x81, 0x58, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA4, 0x28, 0x74, 
53328
  0x61, 0x62, 0x6C, 0x65, 0x2F, 0x77, 0x65, 0x61, 0x6B, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
53329
  0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 
53330
  0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 
53331
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 
53332
  0x6C, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
53333
  0x6B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x65, 0x61, 0x6B, 0x20, 0x72, 0x65, 
53334
  0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 
53335
  0x65, 0x73, 0x2E, 0x20, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 
53336
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x6E, 0x65, 0x77, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
53337
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 
53338
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xD2, 0xDA, 0x8B, 0xD3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53339
  0x00, 0xDA, 0x04, 0x74, 0x01, 0xDA, 0x06, 0xCE, 0x20, 0x28, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x3F, 
53340
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 
53341
  0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xD4, 0xDA, 0x81, 
53342
  0x85, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x51, 0x01, 0xDA, 0x06, 0xCE, 
53343
  0x51, 0x28, 0x73, 0x6C, 0x75, 0x72, 0x70, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x52, 
53344
  0x65, 0x61, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x66, 0x72, 0x6F, 
53345
  0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6E, 0x61, 
53346
  0x6D, 0x65, 0x20, 0x60, 0x70, 0x61, 0x74, 0x68, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 
53347
  0x65, 0x6E, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 
53348
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x82, 0xDA, 0x80, 0xB7, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
53349
  0x00, 0xDA, 0x04, 0x8E, 0xFC, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0x84, 0x28, 0x65, 0x76, 0x2F, 0x64, 
53350
  0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 
53351
  0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 
53352
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 
53353
  0x20, 0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
53354
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 
53355
  0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x69, 0x73, 0x20, 
53356
  0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x65, 0x76, 
53357
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 
53358
  0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8B, 0xD6, 0xDA, 0x8B, 0xD9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53359
  0x00, 0xDA, 0x04, 0x8B, 0x33, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x71, 0x28, 0x6D, 0x6F, 0x64, 0x75, 
53360
  0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x65, 0x78, 0x74, 
53361
  0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x70, 0x61, 
53362
  0x74, 0x68, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 
53363
  0x61, 0x74, 0x68, 0x73, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 
53364
  0x6E, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x74, 0x68, 
53365
  0x61, 0x74, 0x0A, 0x74, 0x68, 0x65, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 
53366
  0x20, 0x70, 0x61, 0x74, 0x68, 0x73, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x20, 0x6C, 0x69, 
53367
  0x6B, 0x65, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 
53368
  0x74, 0x79, 0x70, 0x65, 0x73, 0x2C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 
53369
  0x0A, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 
53370
  0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x20, 0x69, 0x6D, 
53371
  0x70, 0x6F, 0x72, 0x74, 0x73, 0x2E, 0x20, 0x60, 0x65, 0x78, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 
53372
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 
53373
  0x6F, 0x6E, 0x0A, 0x74, 0x6F, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x20, 
53374
  0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 
53375
  0x20, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 
53376
  0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6F, 0x74, 0x2E, 0x20, 0x60, 0x6C, 0x6F, 0x61, 0x64, 0x65, 
53377
  0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 
53378
  0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x6C, 0x6F, 0x61, 0x64, 
53379
  0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x6C, 0x6F, 
53380
  0x61, 0x64, 0x65, 0x72, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53381
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x60, 0x6D, 0x6F, 
53382
  0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 0x61, 0x74, 0x68, 0x73, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 
53383
  0xDA, 0xDA, 0x8B, 0xED, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x44, 0x80, 0xFA, 
53384
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD3, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x66, 0x62, 0x72, 
53385
  0x65, 0x61, 0x6B, 0x20, 0x66, 0x75, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x63, 0x29, 
53386
  0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x61, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 
53387
  0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x66, 0x75, 
53388
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x70, 0x63, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
53389
  0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 
53390
  0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 
53391
  0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 
53392
  0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x66, 0x75, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 
53393
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x57, 0x69, 
53394
  0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 
53395
  0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x20, 
53396
  0x69, 0x73, 0x20, 0x74, 0x6F, 0x6F, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 0x20, 0x6F, 0x72, 0x20, 
53397
  0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0xBA, 0xCF, 0x07, 
53398
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x70, 0x69, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
53399
  0x81, 0xAA, 0x01, 0xDA, 0x06, 0xCE, 0x0D, 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
53400
  0x20, 0x70, 0x69, 0x2E, 0xDA, 0x08, 0xC8, 0x18, 0x2D, 0x44, 0x54, 0xFB, 0x21, 0x09, 0x40, 0xDA, 
53401
  0x8B, 0xEE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x7C, 0x82, 0x9A, 0x01, 0xDA, 
53402
  0x06, 0xCE, 0x51, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6C, 0x61, 0x73, 0x74, 0x2D, 0x76, 
53403
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
53404
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
53405
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 
53406
  0x61, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
53407
  0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xE5, 0xDA, 0x8A, 0x19, 0xD3, 0x03, 0xDA, 0x03, 
53408
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x0B, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x64, 0x72, 0x6F, 
53409
  0x70, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 
53410
  0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x64, 0x72, 0x6F, 
53411
  0x70, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 
53412
  0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x65, 0x64, 0x29, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x60, 0x2E, 
53413
  0xDA, 0x08, 0xDA, 0x8A, 0x0C, 0xDA, 0x8B, 0xEF, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53414
  0x04, 0x91, 0xE5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8E, 0x4E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 
53415
  0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x72, 0x65, 0x74, 0x65, 0x72, 
53416
  0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
53417
  0x20, 0x74, 0x6F, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 
53418
  0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0x20, 0x43, 0x6F, 0x72, 0x72, 0x65, 0x73, 
53419
  0x70, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x61, 0x72, 0x67, 0x76, 0x5B, 0x30, 
53420
  0x5D, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x74, 
53421
  0x6F, 0x0A, 0x20, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x20, 0x6D, 0x61, 0x69, 0x6E, 0x28, 0x69, 0x6E, 
53422
  0x74, 0x20, 0x61, 0x72, 0x67, 0x63, 0x2C, 0x20, 0x63, 0x68, 0x61, 0x72, 0x20, 0x2A, 0x2A, 0x61, 
53423
  0x72, 0x67, 0x76, 0x29, 0x3B, 0x60, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x89, 0x4D, 
53424
  0xDA, 0x8B, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x80, 0x9D, 0x01, 0xDA, 
53425
  0x06, 0xCE, 0x81, 0x3C, 0x28, 0x6F, 0x73, 0x2F, 0x77, 0x68, 0x69, 0x63, 0x68, 0x29, 0x0A, 0x0A, 
53426
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
53427
  0x74, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x73, 0x79, 0x73, 0x74, 
53428
  0x65, 0x6D, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6F, 0x6E, 0x65, 0x20, 
53429
  0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x77, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x0A, 
53430
  0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x69, 0x6E, 0x67, 0x77, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x79, 
53431
  0x67, 0x77, 0x69, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x61, 0x63, 0x6F, 0x73, 0x0A, 0x0A, 
53432
  0x2A, 0x20, 0x3A, 0x77, 0x65, 0x62, 0x20, 0x2D, 0x20, 0x57, 0x65, 0x62, 0x20, 0x61, 0x73, 0x73, 
53433
  0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x28, 0x65, 0x6D, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x65, 
53434
  0x6E, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6C, 0x69, 0x6E, 0x75, 0x78, 0x0A, 0x0A, 0x2A, 0x20, 
53435
  0x3A, 0x66, 0x72, 0x65, 0x65, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6F, 0x70, 0x65, 
53436
  0x6E, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x65, 0x74, 0x62, 0x73, 0x64, 0x0A, 
53437
  0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x72, 0x61, 0x67, 0x6F, 0x6E, 0x66, 0x6C, 0x79, 0x0A, 0x0A, 0x2A, 
53438
  0x20, 0x3A, 0x62, 0x73, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x20, 
53439
  0x2D, 0x20, 0x41, 0x20, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x74, 
53440
  0x69, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x28, 0x64, 0x65, 0x66, 
53441
  0x61, 0x75, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x79, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 
53442
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 
53443
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 
53444
  0x64, 0x20, 0x61, 0x74, 0x20, 0x62, 0x75, 0x69, 0x6C, 0x64, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 
53445
  0xDA, 0x08, 0xDA, 0x81, 0x1D, 0xDA, 0x8B, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53446
  0x80, 0x8F, 0x82, 0x29, 0x01, 0xDA, 0x06, 0xCE, 0x57, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
53447
  0x2F, 0x62, 0x69, 0x74, 0x2D, 0x73, 0x65, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
53448
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 
53449
  0x20, 0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 
53450
  0x6E, 0x20, 0x62, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 
53451
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
53452
  0xDA, 0x08, 0xDA, 0x8B, 0xF2, 0xDA, 0x8B, 0xF3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53453
  0x04, 0x85, 0xC9, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA1, 0x28, 0x61, 0x73, 0x2D, 0x3E, 0x20, 0x78, 
53454
  0x20, 0x61, 0x73, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x68, 
53455
  0x72, 0x65, 0x61, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 
53456
  0x68, 0x65, 0x72, 0x2C, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x69, 0x6E, 0x67, 0x20, 0x60, 
53457
  0x61, 0x73, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x20, 0x77, 
53458
  0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x6F, 0x66, 
53459
  0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x20, 0x66, 0x6F, 
53460
  0x72, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 0x6F, 
53461
  0x72, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
53462
  0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x6C, 
53463
  0x61, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
53464
  0x8B, 0xF4, 0xDA, 0x8B, 0xF8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x43, 
53465
  0x01, 0xDA, 0x06, 0xCE, 0x4D, 0x28, 0x7A, 0x69, 0x70, 0x63, 0x6F, 0x6C, 0x6C, 0x20, 0x6B, 0x73, 
53466
  0x20, 0x76, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 
53467
  0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x61, 
53468
  0x72, 0x72, 0x61, 0x79, 0x73, 0x2F, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2E, 0x0A, 0x52, 0x65, 
53469
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 
53470
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0xF9, 0xDA, 0x8B, 0xFE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53471
  0x00, 0xDA, 0x8E, 0x8E, 0x81, 0x34, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x33, 0x28, 0x61, 0x72, 0x72, 
53472
  0x61, 0x79, 0x2F, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x72, 0x72, 0x20, 0x61, 0x74, 
53473
  0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 
53474
  0x6C, 0x6C, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x72, 0x72, 
53475
  0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x20, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 
53476
  0x78, 0x20, 0x60, 0x61, 0x74, 0x60, 0x2E, 0x20, 0x60, 0x61, 0x74, 0x60, 0x20, 0x73, 0x68, 0x6F, 
53477
  0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
53478
  0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 
53479
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
53480
  0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x41, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 
53481
  0x69, 0x76, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x61, 
53482
  0x74, 0x60, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x62, 0x61, 
53483
  0x63, 0x6B, 0x77, 0x61, 0x72, 0x64, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 
53484
  0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 
53485
  0x79, 0x2C, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x66, 0x74, 
53486
  0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x73, 0x75, 0x63, 
53487
  0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6E, 0x67, 
53488
  0x20, 0x61, 0x74, 0x20, 0x2D, 0x31, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 
53489
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x52, 0x65, 0x74, 
53490
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 
53491
  0x08, 0xDA, 0x88, 0xE2, 0xDA, 0x8B, 0xFF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 
53492
  0x87, 0x81, 0x0D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA5, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
53493
  0x2F, 0x74, 0x6F, 0x2D, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x73, 0x74, 0x20, 0x26, 0x6F, 0x70, 
53494
  0x74, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 
53495
  0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 
53496
  0x6F, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x72, 0x65, 
53497
  0x63, 0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2C, 
53498
  0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 
53499
  0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x27, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 
53500
  0x79, 0x70, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 
53501
  0x77, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x27, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 
53502
  0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x2E, 0xDA, 0x08, 
53503
  0xDA, 0x83, 0x92, 0xDA, 0x86, 0x30, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 
53504
  0xBA, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0xFC, 0x28, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x64, 
53505
  0x20, 0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
53506
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x61, 0x70, 
53507
  0x70, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x74, 0x6F, 
53508
  0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 
53509
  0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x0A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
53510
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x69, 
53511
  0x6E, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x76, 0x61, 
53512
  0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x69, 
53513
  0x66, 0x20, 0x6E, 0x6F, 0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 
53514
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x4D, 0x75, 0x6C, 0x74, 0x69, 0x70, 
53515
  0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 
53516
  0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 
53517
  0x64, 0x0A, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 
53518
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
53519
  0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 
53520
  0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x6F, 0x66, 
53521
  0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 
53522
  0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
53523
  0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
53524
  0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x0A, 0x66, 0x61, 0x6C, 
53525
  0x73, 0x65, 0x79, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x65, 0x6E, 0x63, 0x6F, 0x75, 
53526
  0x6E, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 
53527
  0x74, 0x20, 0x60, 0x70, 0x72, 0x65, 0x64, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 
53528
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x61, 0x73, 0x0A, 0x6D, 0x61, 0x6E, 0x79, 0x20, 
53529
  0x74, 0x69, 0x6D, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 
53530
  0x67, 0x74, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 
53531
  0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 
53532
  0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x0A, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 
53533
  0x20, 0x49, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x79, 
53534
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x65, 
53535
  0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 
53536
  0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x2E, 0xDA, 0x8C, 0x00, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53537
  0x03, 0x00, 0xDA, 0x04, 0x8B, 0x20, 0x01, 0xDA, 0x06, 0xCE, 0x41, 0x41, 0x20, 0x74, 0x61, 0x62, 
53538
  0x6C, 0x65, 0x2C, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 0x6C, 0x6F, 0x61, 0x64, 
53539
  0x65, 0x64, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 
53540
  0x66, 0x69, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x65, 
53541
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 
53542
  0xB6, 0xDA, 0x8C, 0x01, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0xB1, 0x28, 0x6C, 0x65, 0x6E, 0x67, 
53543
  0x74, 0x68, 0x20, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53544
  0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x6F, 0x72, 0x20, 0x63, 0x6F, 
53545
  0x75, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 
53546
  0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 
53547
  0x61, 0x6E, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 
53548
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 
53549
  0x63, 0x74, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 
53550
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
53551
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
53552
  0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 
53553
  0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 
53554
  0x76, 0xDA, 0x8C, 0x02, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x1E, 0x01, 
53555
  0xDA, 0x06, 0xCE, 0x6A, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 
53556
  0x69, 0x6E, 0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 
53557
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
53558
  0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x2C, 0x20, 
53559
  0x60, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 
53560
  0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x60, 0x2E, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 
53561
  0x65, 0x73, 0x20, 0x60, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x60, 0x2E, 0xDA, 0x86, 
53562
  0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x81, 0xA2, 0xDA, 0x41, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53563
  0xDA, 0x04, 0x86, 0xAE, 0x01, 0xDA, 0x06, 0xCE, 0x3C, 0x28, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
53564
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 
53565
  0x75, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 
53566
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
53567
  0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x3E, 0xDA, 0x8C, 0x03, 0xD3, 0x03, 0xDA, 0x03, 
53568
  0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x84, 0x19, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x3A, 0x28, 0x6E, 
53569
  0x65, 0x74, 0x2F, 0x73, 0x65, 0x74, 0x73, 0x6F, 0x63, 0x6B, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 
53570
  0x72, 0x65, 0x61, 0x6D, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x6C, 0x75, 
53571
  0x65, 0x29, 0x0A, 0x0A, 0x73, 0x65, 0x74, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x20, 0x6F, 
53572
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x0A, 0x0A, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 
53573
  0x65, 0x64, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 
53574
  0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
53575
  0x74, 0x79, 0x70, 0x65, 0x73, 0x3A, 0x0A, 0x2D, 0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x62, 0x72, 0x6F, 
53576
  0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 
53577
  0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x72, 0x65, 0x75, 0x73, 0x65, 0x61, 0x64, 0x64, 0x72, 0x20, 0x62, 
53578
  0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 0x20, 0x3A, 0x73, 0x6F, 0x2D, 0x6B, 0x65, 0x65, 
53579
  0x70, 0x61, 0x6C, 0x69, 0x76, 0x65, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x2D, 
53580
  0x20, 0x3A, 0x69, 0x70, 0x2D, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x2D, 0x74, 
53581
  0x74, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x2D, 
53582
  0x61, 0x64, 0x64, 0x2D, 0x6D, 0x65, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x20, 0x73, 
53583
  0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x2D, 0x64, 0x72, 0x6F, 0x70, 
53584
  0x2D, 0x6D, 0x65, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x68, 0x69, 0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 
53585
  0x6E, 0x67, 0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x70, 0x76, 0x36, 0x2D, 0x6A, 0x6F, 0x69, 0x6E, 0x2D, 
53586
  0x67, 0x72, 0x6F, 0x75, 0x70, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x2D, 0x20, 0x3A, 
53587
  0x69, 0x70, 0x76, 0x36, 0x2D, 0x6C, 0x65, 0x61, 0x76, 0x65, 0x2D, 0x67, 0x72, 0x6F, 0x75, 0x70, 
53588
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0xDA, 0x08, 0xDA, 0x8C, 0x04, 0xDA, 0x8C, 0x05, 
53589
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x4A, 0x01, 0xDA, 0x06, 0xCE, 
53590
  0x80, 0xB6, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 
53591
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
53592
  0x67, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 
53593
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 
53594
  0x6F, 0x66, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 
53595
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
53596
  0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 
53597
  0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 
53598
  0x6E, 0x76, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 
53599
  0x20, 0x76, 0x69, 0x61, 0x20, 0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 
53600
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 
53601
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x28, 0xDA, 0x8C, 0x06, 
53602
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xDF, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
53603
  0xE6, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x2D, 0x62, 0x79, 0x20, 0x66, 
53604
  0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6F, 0x6E, 
53605
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x73, 
53606
  0x65, 0x71, 0x75, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 
53607
  0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x72, 0x65, 
53608
  0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 
53609
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x2E, 0x20, 0x50, 0x61, 0x72, 0x74, 0x69, 
53610
  0x74, 0x69, 0x6F, 0x6E, 0x73, 0x0A, 0x73, 0x70, 0x6C, 0x69, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 
53611
  0x20, 0x60, 0x28, 0x66, 0x20, 0x78, 0x29, 0x60, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x73, 
53612
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x69, 0x74, 0x65, 
53613
  0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 
53614
  0x78, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x60, 0x78, 0x60, 0x20, 0x6F, 
53615
  0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
53616
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x0A, 0x6F, 0x66, 0x20, 
53617
  0x61, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x07, 0xDA, 0x80, 0xBB, 0xD3, 
53618
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x15, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0x89, 
53619
  0x28, 0x65, 0x76, 0x2F, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6C, 
53620
  0x6F, 0x63, 0x6B, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 
53621
  0x20, 0x61, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 
53622
  0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x61, 0x63, 0x71, 0x75, 0x69, 0x72, 0x69, 0x6E, 0x67, 0x20, 
53623
  0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 
53624
  0x61, 0x6E, 0x20, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
53625
  0x61, 0x75, 0x74, 0x6F, 0x6D, 0x61, 0x74, 0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 0x65, 
53626
  0x6C, 0x65, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x77, 
53627
  0x68, 0x65, 0x6E, 0x20, 0x64, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 
53628
  0x0E, 0xDA, 0x8C, 0x10, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0xD7, 0x01, 
53629
  0xDA, 0x06, 0xCE, 0x80, 0x92, 0x28, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2D, 0x62, 0x79, 0x20, 
53630
  0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53631
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 
53632
  0x61, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x73, 
53633
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x62, 0x79, 0x20, 0x69, 0x6E, 0x76, 
53634
  0x6F, 0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
53635
  0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 
53636
  0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x69, 
53637
  0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x77, 0x69, 
53638
  0x74, 0x68, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x11, 0xDA, 0x8B, 0xBC, 0xD3, 
53639
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x8F, 0x01, 0xDA, 0x06, 0xCE, 0x50, 
53640
  0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x26, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x29, 0x0A, 
53641
  0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 
53642
  0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 
53643
  0x6E, 0x73, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
53644
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2E, 
53645
  0xDA, 0x08, 0xDA, 0x82, 0xB5, 0xDA, 0x83, 0xFC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53646
  0x04, 0x80, 0x8C, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x2D, 0x2D, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
53647
  0x44, 0x65, 0x63, 0x72, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 
53648
  0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 0x20, 0x31, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
53649
  0x8C, 0x14, 0xDA, 0x8C, 0x16, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0xB7, 
53650
  0x01, 0xDA, 0x06, 0xCE, 0x7A, 0x41, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 
53651
  0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x20, 0x74, 0x6F, 
53652
  0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x73, 0x20, 0x64, 0x65, 0x6E, 0x6F, 0x74, 0x69, 0x6E, 
53653
  0x67, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x2E, 0x20, 
53654
  0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x70, 
53655
  0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x61, 
53656
  0x6C, 0x69, 0x61, 0x73, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x6E, 0x75, 0x6D, 0x65, 0x72, 
53657
  0x69, 0x63, 0x20, 0x6C, 0x69, 0x6E, 0x74, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x73, 0x2E, 0xDA, 
53658
  0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x7C, 0xDA, 0x8C, 0x17, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 
53659
  0x80, 0xE3, 0x28, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x29, 
53660
  0x0A, 0x0A, 0x59, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
53661
  0x74, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 
53662
  0x72, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 
53663
  0x79, 0x69, 0x65, 0x6C, 0x64, 0x73, 0x2C, 0x20, 0x69, 0x74, 0x73, 0x20, 0x65, 0x78, 0x65, 0x63, 
53664
  0x75, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x75, 0x73, 0x65, 0x64, 0x20, 
53665
  0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 0x61, 0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 
53666
  0x72, 0x65, 0x61, 0x64, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x73, 0x20, 0x69, 0x74, 0x2E, 
53667
  0x20, 0x54, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
53668
  0x74, 0x68, 0x65, 0x6E, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
53669
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 0x20, 
53670
  0x63, 0x61, 0x6C, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
53671
  0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
53672
  0x77, 0x61, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
53673
  0x73, 0x75, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x18, 0xDA, 0x82, 0x17, 0xD3, 0x03, 0xDA, 
53674
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x19, 0x01, 0xDA, 0x06, 0xCE, 0x33, 0x28, 0x69, 0x64, 
53675
  0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x66, 0x75, 0x6E, 
53676
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
53677
  0x6E, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 
53678
  0xDA, 0x08, 0xDA, 0x82, 0x15, 0xDA, 0x8C, 0x1A, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 0x9C, 0x28, 
53679
  0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x65, 0x72, 0x72, 
53680
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 
53681
  0x72, 0x20, 0x62, 0x75, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6D, 
53682
  0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 
53683
  0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6C, 
53684
  0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 
53685
  0x20, 0x75, 0x6E, 0x77, 0x69, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 
53686
  0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
53687
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
53688
  0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x1B, 
53689
  0xDA, 0x8C, 0x1D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x86, 0xC1, 0x01, 
53690
  0xDA, 0x06, 0xCE, 0x81, 0xF1, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 
53691
  0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x63, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 
53692
  0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
53693
  0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 
53694
  0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x61, 
53695
  0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
53696
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x43, 0x20, 0x6C, 0x69, 0x62, 0x72, 0x61, 0x72, 0x69, 0x65, 0x73, 
53697
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x62, 0x61, 0x63, 0x6B, 0x20, 
53698
  0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 
53699
  0x68, 0x65, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x76, 0x6F, 
53700
  0x69, 0x64, 0x20, 0x74, 0x72, 0x61, 0x6D, 0x70, 0x6F, 0x6C, 0x69, 0x6E, 0x65, 0x28, 0x76, 0x6F, 
53701
  0x69, 0x64, 0x20, 0x5C, 0x2A, 0x63, 0x74, 0x78, 0x2C, 0x20, 0x76, 0x6F, 0x69, 0x64, 0x20, 0x5C, 
53702
  0x2A, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x29, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x74, 
53703
  0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 
53704
  0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x69, 
53705
  0x73, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 0x75, 
53706
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 
53707
  0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x2E, 0x20, 0x49, 0x74, 0x20, 0x69, 
53708
  0x73, 0x20, 0x75, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x67, 
53709
  0x72, 0x61, 0x6D, 0x6D, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x6E, 0x73, 0x75, 0x72, 0x65, 
53710
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x64, 
53711
  0x61, 0x74, 0x61, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x63, 0x6F, 
53712
  0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x66, 
53713
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
53714
  0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
53715
  0x6F, 0x6E, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x60, 0x63, 
53716
  0x74, 0x78, 0x60, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 
53717
  0x6F, 0x70, 0x61, 0x71, 0x75, 0x65, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x20, 
53718
  0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 
53719
  0x20, 0x62, 0x65, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x73, 0x70, 
53720
  0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x66, 0x66, 0x69, 0x2F, 
53721
  0x72, 0x65, 0x61, 0x64, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x1E, 0xDA, 0x8C, 0x1F, 0xD3, 0x04, 
53722
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x7F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x9F, 0x28, 
53723
  0x65, 0x64, 0x65, 0x66, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x26, 0x20, 0x62, 0x6F, 
53724
  0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x60, 0x20, 
53725
  0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x69, 0x6E, 0x20, 
53726
  0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x62, 0x6F, 
53727
  0x64, 0x79, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 
53728
  0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x28, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
53729
  0x6F, 0x72, 0x20, 0x6F, 0x72, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 
53730
  0x6C, 0x20, 0x30, 0x2D, 0x34, 0x29, 0x2E, 0x0A, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
53731
  0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x66, 
53732
  0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x2E, 0xDA, 0x59, 
53733
  0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x20, 0xDA, 0x8C, 0x22, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53734
  0xDA, 0x8E, 0xDE, 0x81, 0x96, 0x01, 0xDA, 0x06, 0xCE, 0x5D, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 
53735
  0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 0x20, 0x74, 0x61, 0x62, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 
53736
  0x6F, 0x76, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x2D, 0x76, 0x61, 0x6C, 0x75, 
53737
  0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 
53738
  0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 
53739
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
53740
  0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xD2, 0xDA, 0x8C, 0x23, 0xD3, 
53741
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x15, 0x01, 0xDA, 0x06, 0xCE, 0x37, 0x28, 
53742
  0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x74, 0x61, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 
53743
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 0x65, 0x72, 
53744
  0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x74, 0x61, 0x6E, 0x67, 0x65, 0x6E, 0x74, 
53745
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x24, 0xDA, 0x8C, 0x25, 0xD3, 0x03, 
53746
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x83, 0xC4, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF1, 
53747
  0x28, 0x6E, 0x65, 0x74, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
53748
  0x6D, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 
53749
  0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 
53750
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2C, 0x20, 0x73, 0x75, 
53751
  0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
53752
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 
53753
  0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 
53754
  0x65, 0x74, 0x65, 0x73, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 
53755
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 
53756
  0x69, 0x6E, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 0x20, 0x61, 0x66, 0x74, 0x65, 
53757
  0x72, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 
53758
  0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
53759
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x72, 0x61, 0x69, 
53760
  0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 
53761
  0x74, 0x68, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 
53762
  0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x26, 0xDA, 0x8C, 0x27, 0xD3, 0x05, 0xDA, 0x86, 0x28, 0xCB, 0xDA, 
53763
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x2E, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x64, 0x65, 0x66, 
53764
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x72, 
53765
  0x65, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x63, 
53766
  0x72, 0x6F, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x28, 0xDA, 0x8C, 0x2A, 0xD3, 0x03, 
53767
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x47, 0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 
53768
  0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x68, 0x61, 0x73, 0x2D, 0x70, 0x72, 0x65, 0x66, 0x69, 
53769
  0x78, 0x3F, 0x20, 0x70, 0x66, 0x78, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x54, 0x65, 0x73, 
53770
  0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 
53771
  0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 0x66, 
53772
  0x78, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xBB, 0xDA, 0x8C, 0x2B, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 
53773
  0x81, 0x8A, 0x28, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x26, 0x6F, 0x70, 
53774
  0x74, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 
53775
  0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x64, 0x73, 0x20, 0x61, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x2C, 
53776
  0x20, 0x77, 0x6F, 0x72, 0x6B, 0x73, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 
53777
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
53778
  0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 0x73, 0x2C, 0x20, 0x74, 
53779
  0x75, 0x70, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x73, 
53780
  0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x73, 0x2C, 
53781
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x62, 0x75, 
53782
  0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x73, 
53783
  0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x61, 
53784
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2E, 0x20, 0x41, 0x72, 0x72, 0x61, 0x79, 
53785
  0x73, 0x2C, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
53786
  0x67, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
53787
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x75, 0x73, 
53788
  0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x74, 
53789
  0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 
53790
  0x73, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x73, 
53791
  0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x2E, 0x20, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x73, 
53792
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 
53793
  0x74, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x61, 
53794
  0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x20, 0x6E, 
53795
  0x69, 0x6C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 
53796
  0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x6F, 0x72, 0x20, 0x64, 0x66, 0x6C, 0x74, 0x20, 0x69, 
53797
  0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 
53798
  0x58, 0xDA, 0x8C, 0x2C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x86, 0xDC, 0x01, 
53799
  0xDA, 0x06, 0xCE, 0x7C, 0x28, 0x6F, 0x73, 0x2F, 0x69, 0x73, 0x61, 0x74, 0x74, 0x79, 0x20, 0x26, 
53800
  0x6F, 0x70, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
53801
  0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x60, 0x66, 0x69, 0x6C, 0x65, 
53802
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x6C, 0x2E, 
53803
  0x20, 0x49, 0x66, 0x20, 0x60, 0x66, 0x69, 0x6C, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 
53804
  0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x69, 0x74, 0x20, 
53805
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x74, 0x6F, 0x20, 
53806
  0x73, 0x74, 0x61, 0x6E, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2E, 
53807
  0xDA, 0x08, 0xDA, 0x88, 0xEE, 0xDA, 0x8C, 0x2D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
53808
  0x90, 0x50, 0x83, 0x90, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x89, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 
53809
  0x72, 0x2F, 0x6E, 0x65, 0x77, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 
53810
  0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
53811
  0x77, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2E, 
53812
  0x20, 0x50, 0x61, 0x72, 0x73, 0x65, 0x72, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74, 0x61, 
53813
  0x74, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x68, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
53814
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x20, 0x62, 0x79, 0x74, 
53815
  0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 
53816
  0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x76, 0x61, 0x6C, 0x75, 
53817
  0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x0B, 0xDA, 0x8C, 0x2E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53818
  0x00, 0xDA, 0x8E, 0xBB, 0x81, 0xE6, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x66, 0x66, 0x69, 0x2F, 
53819
  0x61, 0x6C, 0x69, 0x67, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
53820
  0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6C, 0x69, 0x67, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 
53821
  0x20, 0x66, 0x66, 0x69, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x62, 0x79, 0x74, 
53822
  0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x2F, 0xDA, 0x81, 0x9E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
53823
  0x03, 0x00, 0xDA, 0x04, 0x89, 0xBB, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB8, 0x28, 0x6D, 0x61, 0x6B, 
53824
  0x65, 0x2D, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 
53825
  0x74, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 
53826
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 
53827
  0x6C, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6E, 0x76, 0x69, 
53828
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x68, 
53829
  0x65, 0x72, 0x69, 0x74, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x66, 0x72, 
53830
  0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 
53831
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6E, 
53832
  0x65, 0x77, 0x0A, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
53833
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x6F, 0x6C, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 
53834
  0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 
53835
  0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x9A, 0xDA, 0x8C, 0x30, 0xD3, 0x03, 0xDA, 0x03, 
53836
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x15, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8C, 0x28, 0x66, 0x72, 
53837
  0x6F, 0x6D, 0x2D, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x70, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 
53838
  0x6B, 0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6F, 
53839
  0x66, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x63, 0x72, 0x65, 0x61, 
53840
  0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
53841
  0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x70, 0x61, 0x69, 0x72, 0x2E, 0x20, 0x49, 0x74, 0x20, 0x69, 
53842
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 
53843
  0x0A, 0x60, 0x70, 0x61, 0x69, 0x72, 0x73, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x74, 0x61, 
53844
  0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 
53845
  0x65, 0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x31, 0xDA, 0x8C, 
53846
  0x35, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x5B, 0x28, 0x62, 0x61, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x78, 
53847
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
53848
  0x62, 0x69, 0x74, 0x2D, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 
53849
  0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 
53850
  0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x6D, 
53851
  0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
53852
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x36, 0xDA, 0x8C, 0x38, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
53853
  0x00, 0xDA, 0x8E, 0xD1, 0x80, 0x80, 0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x66, 0x69, 0x6C, 0x65, 
53854
  0x2F, 0x74, 0x65, 0x6D, 0x70, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x61, 0x6E, 0x20, 
53855
  0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6F, 0x72, 
53856
  0x61, 0x72, 0x79, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 
53857
  0x20, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x63, 0x6C, 0x6F, 0x73, 
53858
  0x65, 0x2E, 0x20, 0x52, 0x61, 0x69, 0x73, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 
53859
  0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 
53860
  0xDA, 0x8C, 0x39, 0xDA, 0x8C, 0x3A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x80, 
53861
  0xBB, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB8, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6E, 0x67, 
53862
  0x2D, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x72, 0x6E, 0x67, 0x20, 0x6E, 0x20, 0x26, 0x6F, 
53863
  0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x6E, 0x20, 0x72, 
53864
  0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 
53865
  0x70, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x6D, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x75, 
53866
  0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 
53867
  0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 
53868
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
53869
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x61, 
53870
  0x70, 0x70, 0x65, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 
53871
  0x76, 0x65, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
53872
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 
53873
  0x08, 0xDA, 0x8C, 0x3B, 0xDA, 0x82, 0xB2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
53874
  0x83, 0x49, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x78, 0x73, 0x29, 
53875
  0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 
53876
  0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x69, 
53877
  0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
53878
  0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xE9, 0xDA, 0x86, 0x4D, 0xD3, 0x04, 
53879
  0xDA, 0x86, 0x28, 0xDA, 0x8F, 0x75, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0xE1, 0x01, 
53880
  0xDA, 0x06, 0xCE, 0x81, 0x69, 0x28, 0x64, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x70, 0x61, 0x74, 
53881
  0x68, 0x20, 0x26, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x65, 0x6E, 
53882
  0x76, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x65, 
53883
  0x72, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 
53884
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 
53885
  0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
53886
  0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 
53887
  0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 
53888
  0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 
53889
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x3A, 0x65, 0x6E, 0x76, 0x2C, 0x20, 0x3A, 0x65, 0x78, 0x70, 
53890
  0x61, 0x6E, 0x64, 0x65, 0x72, 0x2C, 0x0A, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2C, 0x20, 
53891
  0x3A, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x6F, 0x72, 0x2C, 0x20, 0x3A, 0x72, 0x65, 0x61, 
53892
  0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x3A, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x61, 
53893
  0x72, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 
53894
  0x68, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 
53895
  0x69, 0x6E, 0x67, 0x0A, 0x60, 0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 
53896
  0x60, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x65, 0x78, 0x69, 0x74, 
53897
  0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x74, 
53898
  0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 
53899
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x20, 0x61, 0x0A, 0x63, 
53900
  0x61, 0x6C, 0x6C, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 
53901
  0x20, 0x31, 0x29, 0x60, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 
53902
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0xDA, 0x08, 
53903
  0xDA, 0x86, 0x47, 0xDA, 0x8C, 0x3C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 
53904
  0x82, 0xA8, 0x01, 0xDA, 0x06, 0xCE, 0x5D, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x66, 0x20, 0x74, 
53905
  0x6F, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x69, 0x6B, 
53906
  0x65, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x66, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x70, 0x72, 
53907
  0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 
53908
  0x63, 0x69, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x76, 0x61, 0x6C, 0x75, 
53909
  0x65, 0x20, 0x60, 0x74, 0x6F, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53910
  0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x3D, 0xDA, 0x8C, 0x3E, 0xD3, 0x03, 0xDA, 0x03, 
53911
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 0x78, 0x01, 0xDA, 0x06, 0xCE, 0x40, 0x28, 0x65, 0x76, 
53912
  0x2F, 0x72, 0x77, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 
53913
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x72, 0x65, 0x61, 0x64, 0x2D, 0x77, 0x72, 0x69, 0x74, 
53914
  0x65, 0x20, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6F, 0x72, 0x64, 0x69, 
53915
  0x6E, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
53916
  0x8C, 0x3F, 0xDA, 0x8C, 0x40, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x83, 
53917
  0xF3, 0x01, 0xDA, 0x06, 0xCE, 0x60, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x62, 0x79, 
53918
  0x74, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x62, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 
53919
  0x70, 0x75, 0x74, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x62, 0x79, 0x74, 
53920
  0x65, 0x20, 0x60, 0x62, 0x60, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
53921
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
53922
  0x6D, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
53923
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x41, 0xDA, 0x8C, 0x42, 0xD3, 0x03, 
53924
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x69, 0x28, 
53925
  0x6E, 0x61, 0x74, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 
53926
  0x66, 0x20, 0x78, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x65, 0x78, 0x61, 0x63, 0x74, 
53927
  0x6C, 0x79, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x61, 
53928
  0x73, 0x20, 0x61, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 
53929
  0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x74, 
53930
  0x77, 0x6F, 0x27, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
53931
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x43, 0xDA, 0x8C, 0x44, 
53932
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x81, 0x5D, 0x01, 0xDA, 0x06, 0xCE, 
53933
  0x81, 0xCF, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x65, 0x6B, 0x20, 0x66, 0x20, 0x26, 
53934
  0x6F, 0x70, 0x74, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x63, 0x65, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x4A, 
53935
  0x75, 0x6D, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 
53936
  0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
53937
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x60, 0x2E, 0x20, 0x60, 0x77, 0x68, 0x65, 
53938
  0x6E, 0x63, 0x65, 0x60, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x6F, 0x6E, 0x65, 
53939
  0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x20, 0x2D, 0x20, 0x6A, 
53940
  0x75, 0x6D, 0x70, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 
53941
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x6C, 0x65, 
53942
  0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x65, 
53943
  0x74, 0x20, 0x2D, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 
53944
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6E, 0x6E, 0x69, 
53945
  0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 
53946
  0x2A, 0x20, 0x3A, 0x65, 0x6E, 0x64, 0x20, 0x2D, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x20, 0x72, 0x65, 
53947
  0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 
53948
  0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x0A, 0x0A, 0x42, 
53949
  0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 0x20, 0x60, 0x77, 0x68, 0x65, 0x6E, 
53950
  0x63, 0x65, 0x60, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 
53951
  0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 
53952
  0x60, 0x6E, 0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
53953
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 
53954
  0x76, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 
53955
  0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x65, 0x6B, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 
53956
  0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x6D, 0x61, 0x79, 0x20, 
53957
  0x62, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 
53958
  0x20, 0x74, 0x6F, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x6C, 0x61, 0x72, 0x67, 0x65, 
53959
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 
53960
  0x68, 0x61, 0x6E, 0x20, 0x34, 0x47, 0x42, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
53961
  0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 
53962
  0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x45, 0xDA, 0x8C, 0x46, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
53963
  0xDA, 0x21, 0x81, 0x17, 0x01, 0xDA, 0x06, 0xCE, 0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x65, 
53964
  0x78, 0x70, 0x32, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
53965
  0x32, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x6F, 
53966
  0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x47, 0xDA, 0x8C, 0x48, 0xD3, 0x03, 0xDA, 0x03, 
53967
  0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x8A, 0x4C, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0xA6, 0x28, 0x6F, 0x73, 
53968
  0x2F, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
53969
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
53970
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x66, 0x72, 0x6F, 
53971
  0x6D, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x74, 
53972
  0x68, 0x65, 0x20, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x73, 0x79, 
53973
  0x73, 0x74, 0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
53974
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x2E, 
53975
  0x20, 0x60, 0x6D, 0x6F, 0x64, 0x65, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 
53976
  0x65, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x73, 
53977
  0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x63, 
53978
  0x68, 0x6D, 0x6F, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
53979
  0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x66, 0x6C, 
53980
  0x61, 0x67, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 
53981
  0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x73, 
53982
  0x20, 0x38, 0x72, 0x36, 0x36, 0x36, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 
53983
  0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 
53984
  0x6C, 0x6F, 0x77, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x72, 0x20, 0x2D, 0x20, 
53985
  0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 
53986
  0x6F, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 
53987
  0x77, 0x20, 0x2D, 0x20, 0x6F, 0x70, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 
53988
  0x6C, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6E, 0x67, 0x0A, 0x20, 
53989
  0x20, 0x2A, 0x20, 0x3A, 0x63, 0x20, 0x2D, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 
53990
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x43, 0x52, 
53991
  0x45, 0x41, 0x54, 0x45, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x65, 0x20, 0x2D, 0x20, 0x66, 
53992
  0x61, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
53993
  0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x45, 0x58, 0x43, 0x4C, 0x29, 
53994
  0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x74, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x65, 
53995
  0x6E, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 
53996
  0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x30, 0x20, 0x28, 
53997
  0x4F, 0x5C, 0x5F, 0x54, 0x52, 0x55, 0x4E, 0x43, 0x29, 0x0A, 0x0A, 0x50, 0x6F, 0x73, 0x69, 0x78, 
53998
  0x2D, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 
53999
  0x2A, 0x20, 0x3A, 0x61, 0x20, 0x2D, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x6F, 
54000
  0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x28, 0x4F, 0x5C, 0x5F, 0x41, 0x50, 0x50, 0x45, 
54001
  0x4E, 0x44, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x78, 0x20, 0x2D, 0x20, 0x4F, 0x5C, 0x5F, 
54002
  0x53, 0x59, 0x4E, 0x43, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x43, 0x20, 0x2D, 0x20, 0x4F, 0x5C, 
54003
  0x5F, 0x4E, 0x4F, 0x43, 0x54, 0x54, 0x59, 0x0A, 0x0A, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 
54004
  0x2D, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x3A, 0x0A, 0x0A, 0x20, 0x20, 
54005
  0x2A, 0x20, 0x3A, 0x52, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x61, 
54006
  0x64, 0x73, 0x20, 0x28, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5C, 
54007
  0x5F, 0x52, 0x45, 0x41, 0x44, 0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x57, 0x20, 0x2D, 0x20, 
54008
  0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x28, 0x46, 0x49, 
54009
  0x4C, 0x45, 0x5C, 0x5F, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5C, 0x5F, 0x57, 0x52, 0x49, 0x54, 0x45, 
54010
  0x29, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x44, 0x20, 0x2D, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 
54011
  0x20, 0x64, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x20, 0x28, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 
54012
  0x53, 0x48, 0x41, 0x52, 0x45, 0x5C, 0x5F, 0x44, 0x45, 0x4C, 0x45, 0x54, 0x45, 0x29, 0x0A, 0x20, 
54013
  0x20, 0x2A, 0x20, 0x3A, 0x48, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x41, 0x54, 
54014
  0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x48, 0x49, 0x44, 0x44, 0x45, 0x4E, 0x0A, 
54015
  0x20, 0x20, 0x2A, 0x20, 0x3A, 0x4F, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x41, 
54016
  0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x52, 0x45, 0x41, 0x44, 0x4F, 0x4E, 
54017
  0x4C, 0x59, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x46, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 
54018
  0x5C, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x4F, 0x46, 0x46, 
54019
  0x4C, 0x49, 0x4E, 0x45, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x54, 0x20, 0x2D, 0x20, 0x46, 0x49, 
54020
  0x4C, 0x45, 0x5C, 0x5F, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5C, 0x5F, 0x54, 
54021
  0x45, 0x4D, 0x50, 0x4F, 0x52, 0x41, 0x52, 0x59, 0x0A, 0x20, 0x20, 0x2A, 0x20, 0x3A, 0x64, 0x20, 
54022
  0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x46, 0x4C, 0x41, 0x47, 0x5C, 0x5F, 0x44, 0x45, 
54023
  0x4C, 0x45, 0x54, 0x45, 0x5C, 0x5F, 0x4F, 0x4E, 0x5C, 0x5F, 0x43, 0x4C, 0x4F, 0x53, 0x45, 0x0A, 
54024
  0x20, 0x20, 0x2A, 0x20, 0x3A, 0x62, 0x20, 0x2D, 0x20, 0x46, 0x49, 0x4C, 0x45, 0x5C, 0x5F, 0x46, 
54025
  0x4C, 0x41, 0x47, 0x5C, 0x5F, 0x4E, 0x4F, 0x5C, 0x5F, 0x42, 0x55, 0x46, 0x46, 0x45, 0x52, 0x49, 
54026
  0x4E, 0x47, 0x0A, 0xDA, 0x08, 0xDA, 0x8C, 0x49, 0xDA, 0x8C, 0x4A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54027
  0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x87, 0x2F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC3, 0x28, 0x66, 0x66, 
54028
  0x69, 0x2F, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2D, 0x63, 0x66, 0x75, 0x6E, 0x63, 0x74, 
54029
  0x69, 0x6F, 0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 
54030
  0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x66, 0x69, 0x6C, 
54031
  0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x2D, 0x6C, 0x69, 0x6E, 0x65, 0x29, 0x0A, 0x0A, 
54032
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x43, 0x20, 0x46, 0x75, 0x6E, 0x63, 0x74, 
54033
  0x69, 0x6F, 0x6E, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 
54034
  0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 
54035
  0x6C, 0x79, 0x20, 0x67, 0x69, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x66, 0x75, 0x6E, 
54036
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x6E, 0x64, 
54037
  0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 
54038
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x74, 0x72, 0x61, 0x63, 0x65, 
54039
  0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x2E, 
54040
  0xDA, 0x08, 0xDA, 0x8C, 0x4B, 0xDA, 0x82, 0x32, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54041
  0x04, 0x67, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3F, 0x20, 
54042
  0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 
54043
  0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x30, 
54044
  0xDA, 0x8C, 0x4C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x44, 0x81, 0x11, 0x01, 
54045
  0xDA, 0x06, 0xCE, 0x81, 0x2E, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x6C, 0x69, 0x6E, 0x65, 
54046
  0x61, 0x67, 0x65, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
54047
  0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 
54048
  0x6C, 0x20, 0x63, 0x68, 0x69, 0x6C, 0x64, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x20, 0x66, 
54049
  0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
54050
  0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
54051
  0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x61, 
54052
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x6F, 
54053
  0x72, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 
54054
  0x6E, 0x63, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x55, 
54055
  0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
54056
  0x6F, 0x6E, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x68, 0x61, 
54057
  0x6E, 0x64, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 
54058
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x73, 0x65, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x66, 
54059
  0x69, 0x62, 0x65, 0x72, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 
54060
  0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 
54061
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 
54062
  0x75, 0x73, 0x65, 0x64, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x6C, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 
54063
  0x64, 0x65, 0x62, 0x75, 0x67, 0x67, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x75, 0x72, 0x70, 0x6F, 0x73, 
54064
  0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x4D, 0xDA, 0x8C, 0x4E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54065
  0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x6D, 0x28, 0x62, 0x75, 0x66, 
54066
  0x66, 0x65, 0x72, 0x2F, 0x62, 0x69, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x69, 
54067
  0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
54068
  0x62, 0x69, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
54069
  0x20, 0x62, 0x69, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
54070
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
54071
  0x62, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x2C, 0x20, 0x66, 0x61, 0x6C, 0x73, 
54072
  0x65, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x4F, 0xDA, 0x8C, 
54073
  0x50, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x12, 0x01, 0xDA, 0x06, 0xCE, 
54074
  0x34, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x61, 0x73, 0x69, 0x6E, 0x68, 0x20, 0x78, 0x29, 0x0A, 
54075
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x79, 0x70, 
54076
  0x65, 0x72, 0x62, 0x6F, 0x6C, 0x69, 0x63, 0x20, 0x61, 0x72, 0x63, 0x73, 0x69, 0x6E, 0x65, 0x20, 
54077
  0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x51, 0xDA, 0x8C, 0x52, 0xD3, 0x03, 0xDA, 
54078
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x61, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1C, 0x28, 
54079
  0x67, 0x65, 0x74, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x70, 0x72, 0x6F, 
54080
  0x6D, 0x70, 0x74, 0x20, 0x62, 0x75, 0x66, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
54081
  0x61, 0x64, 0x73, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 
54082
  0x70, 0x75, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
54083
  0x72, 0x2C, 0x20, 0x69, 0x6E, 0x63, 0x6C, 0x75, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 
54084
  0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 
54085
  0x65, 0x72, 0x2C, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x70, 0x72, 0x6F, 0x6D, 
54086
  0x70, 0x74, 0x2E, 0x20, 0x41, 0x6E, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
54087
  0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 0x6C, 
54088
  0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 
54089
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x75, 0x74, 0x6F, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 
54090
  0x65, 0x74, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
54091
  0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
54092
  0x2E, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
54093
  0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
54094
  0x20, 0x61, 0x20, 0x73, 0x69, 0x6D, 0x70, 0x6C, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 
54095
  0x61, 0x63, 0x65, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x74, 0x65, 0x72, 0x6D, 0x69, 0x6E, 
54096
  0x61, 0x6C, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0x73, 
54097
  0xDA, 0x8C, 0x53, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x21, 0x01, 0xDA, 
54098
  0x06, 0xCE, 0x31, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x78, 
54099
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 
54100
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x6E, 0x65, 0x61, 0x72, 0x65, 0x73, 0x74, 0x20, 0x74, 
54101
  0x6F, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x54, 0xDA, 0x8C, 0x55, 0xD3, 0x03, 0xDA, 0x03, 
54102
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8C, 0xBC, 0x01, 0xDA, 0x06, 0xCE, 0x82, 0x5A, 0x28, 0x65, 
54103
  0x76, 0x2F, 0x64, 0x65, 0x61, 0x64, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x73, 0x65, 0x63, 0x20, 0x26, 
54104
  0x6F, 0x70, 0x74, 0x20, 0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x6F, 0x63, 
54105
  0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x6E, 0x74, 0x72, 0x3F, 0x29, 0x0A, 0x0A, 0x53, 0x63, 0x68, 
54106
  0x65, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 
54107
  0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 
54108
  0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x61, 
54109
  0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x20, 0x61, 0x73, 0x20, 0x77, 0x69, 
54110
  0x74, 0x68, 0x20, 0x60, 0x65, 0x76, 0x2F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x2E, 0x20, 
54111
  0x41, 0x66, 0x74, 0x65, 0x72, 0x20, 0x60, 0x73, 0x65, 0x63, 0x60, 0x20, 0x73, 0x65, 0x63, 0x6F, 
54112
  0x6E, 0x64, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 
54113
  0x6F, 0x6F, 0x70, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6D, 0x70, 0x74, 
54114
  0x20, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x6C, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 
54115
  0x20, 0x60, 0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x69, 0x66, 0x20, 0x74, 
54116
  0x68, 0x65, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x60, 0x20, 0x66, 0x69, 0x62, 
54117
  0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6D, 0x61, 0x62, 0x6C, 0x65, 0x2E, 
54118
  0x20, 0x60, 0x73, 0x65, 0x63, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
54119
  0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x68, 0x61, 0x76, 0x65, 
54120
  0x20, 0x61, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x70, 0x61, 
54121
  0x72, 0x74, 0x2E, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x64, 
54122
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 
54123
  0x65, 0x72, 0x2F, 0x72, 0x6F, 0x6F, 0x74, 0x29, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 
54124
  0x66, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2C, 0x20, 0x6D, 0x75, 0x73, 
54125
  0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x73, 0x6B, 0x20, 0x28, 0x72, 0x6F, 0x6F, 
54126
  0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x2E, 0x20, 0x60, 0x74, 0x6F, 0x63, 0x68, 0x65, 
54127
  0x63, 0x6B, 0x60, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 
54128
  0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x29, 
54129
  0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 
54130
  0x69, 0x65, 0x64, 0x2C, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 
54131
  0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x74, 
54132
  0x6F, 0x63, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x60, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 
54133
  0x74, 0x65, 0x6C, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 
54134
  0x75, 0x70, 0x74, 0x3F, 0x60, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 
54135
  0x74, 0x72, 0x75, 0x65, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
54136
  0x65, 0x20, 0x61, 0x20, 0x62, 0x61, 0x63, 0x6B, 0x67, 0x72, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 
54137
  0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 
54138
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x56, 0x4D, 
54139
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x20, 
54140
  0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0x24, 0xDA, 0x8C, 0x56, 
54141
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x85, 0x06, 0x01, 0xDA, 0x06, 0xCE, 
54142
  0x35, 0x28, 0x65, 0x76, 0x2F, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
54143
  0x6C, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x63, 
54144
  0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6C, 0x6C, 0x20, 0x6F, 
54145
  0x72, 0x20, 0x6E, 0x6F, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x57, 0xDA, 0x8C, 0x58, 0xD3, 0x03, 
54146
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x88, 0xDA, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 
54147
  0x66, 0x72, 0x65, 0x65, 0x7A, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x46, 0x72, 0x65, 0x65, 0x7A, 
54148
  0x65, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x28, 0x6D, 0x61, 0x6B, 
54149
  0x65, 0x20, 0x69, 0x74, 0x20, 0x69, 0x6D, 0x6D, 0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x29, 0x20, 
54150
  0x61, 0x6E, 0x64, 0x20, 0x64, 0x6F, 0x20, 0x61, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x63, 0x6F, 
54151
  0x70, 0x79, 0x2C, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x0A, 0x63, 0x68, 0x69, 0x6C, 0x64, 
54152
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x69, 0x6D, 0x6D, 
54153
  0x75, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x43, 0x6C, 0x6F, 0x73, 0x75, 0x72, 0x65, 0x73, 
54154
  0x2C, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x62, 
54155
  0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x0A, 0x77, 0x69, 0x6C, 
54156
  0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x63, 0x75, 0x72, 0x73, 0x69, 
54157
  0x76, 0x65, 0x6C, 0x79, 0x20, 0x66, 0x72, 0x6F, 0x7A, 0x65, 0x6E, 0x2C, 0x20, 0x62, 0x75, 0x74, 
54158
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 
54159
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x59, 0xDA, 0x8C, 0x63, 0xD3, 0x05, 
54160
  0xDA, 0x86, 0x28, 0xCB, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x93, 0x01, 0xDA, 0x06, 
54161
  0xCE, 0x5F, 0x28, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 0x74, 
54162
  0x20, 0x65, 0x72, 0x72, 0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 
54163
  0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 
54164
  0x74, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 
54165
  0x6F, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x20, 0x60, 0x65, 0x72, 0x72, 
54166
  0x60, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
54167
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x64, 0xDA, 0x8C, 0x69, 0xD3, 0x04, 0xDA, 0x03, 
54168
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0xE9, 0x01, 0xDA, 0x06, 0xCE, 0x36, 0x50, 0x61, 0x74, 0x68, 
54169
  0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 
54170
  0x20, 0x6C, 0x6F, 0x61, 0x64, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x73, 0x74, 0x61, 
54171
  0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x75, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 
54172
  0x6C, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x88, 0xEB, 0xDA, 0x8B, 0x47, 0xD3, 0x04, 
54173
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x32, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 
54174
  0x61, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 
54175
  0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 
54176
  0x61, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 
54177
  0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 
54178
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 
54179
  0x79, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x65, 0x76, 0x61, 
54180
  0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
54181
  0x72, 0x73, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 
54182
  0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x6A, 0xDA, 0x89, 0x4A, 0xD3, 
54183
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x56, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x4A, 
54184
  0x28, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x2D, 0x66, 0x6E, 0x20, 0x61, 0x72, 0x67, 0x20, 0x26, 0x6F, 
54185
  0x70, 0x74, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 
54186
  0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x66, 0x6E, 0x60, 0x2E, 0x20, 0x41, 0x72, 
54187
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 
54188
  0x6E, 0x20, 0x61, 0x73, 0x20, 0x60, 0x24, 0x6E, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 
54189
  0x20, 0x60, 0x6E, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x30, 0x2D, 0x69, 0x6E, 
54190
  0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 
54191
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 
54192
  0x60, 0x24, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 
54193
  0x6C, 0x69, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x66, 0x69, 0x72, 
54194
  0x73, 0x74, 0x20, 0x28, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x30, 0x29, 0x20, 0x61, 0x72, 0x67, 
54195
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x60, 0x24, 0x26, 0x60, 0x20, 
54196
  0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6D, 0x61, 0x6B, 0x65, 
54197
  0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x6E, 0x6F, 0x6E, 0x79, 0x6D, 0x6F, 0x75, 0x73, 0x0A, 0x66, 
54198
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x64, 0x69, 0x63, 
54199
  0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x61, 0x70, 0x70, 0x65, 0x61, 0x72, 0x73, 0x20, 0x69, 
54200
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
54201
  0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x0A, 
54202
  0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x64, 0x20, 
54203
  0x77, 0x69, 0x74, 0x68, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 
54204
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
54205
  0x8C, 0x6C, 0xDA, 0x81, 0x12, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x90, 0x64, 
54206
  0x03, 0xDA, 0x06, 0xCE, 0x4D, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x6D, 0x61, 0x6E, 
54207
  0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 
54208
  0x65, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 
54209
  0x66, 0x65, 0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
54210
  0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
54211
  0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x7C, 0xDA, 0x8C, 0x7E, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
54212
  0x00, 0xDA, 0x04, 0x82, 0xB7, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA7, 0x28, 0x67, 0x65, 0x6E, 0x65, 
54213
  0x72, 0x61, 0x74, 0x65, 0x20, 0x68, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 
54214
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x65, 0x6E, 0x65, 
54215
  0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 
54216
  0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 
54217
  0x60, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
54218
  0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x79, 
54219
  0x69, 0x65, 0x6C, 0x64, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
54220
  0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 
54221
  0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x53, 0x65, 0x65, 0x20, 0x60, 
54222
  0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 
54223
  0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x7F, 0xDA, 0x8A, 0x8D, 0xD3, 0x04, 0xDA, 
54224
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x44, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x83, 0x28, 0x6F, 
54225
  0x72, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 
54226
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
54227
  0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 
54228
  0x6C, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 
54229
  0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x2C, 
54230
  0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x0A, 0x65, 0x76, 0x61, 0x6C, 0x75, 
54231
  0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
54232
  0x74, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 
54233
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0x82, 0xDA, 0x8C, 0x86, 0xD3, 0x03, 0xDA, 0x03, 
54234
  0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0xE9, 0x01, 0xDA, 0x06, 0xCE, 0x5E, 0x28, 0x67, 0x65, 
54235
  0x74, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 
54236
  0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 
54237
  0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
54238
  0x74, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 
54239
  0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x78, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6E, 0x6F, 
54240
  0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x5B, 
54241
  0xDA, 0x8C, 0x87, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x81, 0xC5, 0x01, 
54242
  0xDA, 0x06, 0xCE, 0x81, 0xBE, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 
54243
  0x74, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 
54244
  0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x62, 
54245
  0x69, 0x6E, 0x64, 0x70, 0x6F, 0x72, 0x74, 0x29, 0x0A, 0x0A, 0x4F, 0x70, 0x65, 0x6E, 0x20, 0x61, 
54246
  0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x63, 
54247
  0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
54248
  0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
54249
  0x73, 0x20, 0x61, 0x20, 0x64, 0x75, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
54250
  0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 
54251
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 
54252
  0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 
54253
  0x72, 0x2E, 0x20, 0x54, 0x79, 0x70, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 0x70, 
54254
  0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x74, 
54255
  0x6F, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 
54256
  0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2C, 0x20, 0x65, 0x69, 0x74, 
54257
  0x68, 0x65, 0x72, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6F, 0x72, 0x20, 0x3A, 
54258
  0x64, 0x61, 0x74, 0x61, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 
54259
  0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 
54260
  0x2E, 0x20, 0x42, 0x69, 0x6E, 0x64, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 
54261
  0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
54262
  0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 
54263
  0x77, 0x68, 0x61, 0x74, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 
54264
  0x6D, 0x61, 0x6B, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x75, 0x74, 0x67, 0x6F, 0x69, 0x6E, 
54265
  0x67, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x77, 0x69, 
54266
  0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x62, 
54267
  0x65, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 
54268
  0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4F, 0x53, 0x27, 0x73, 0x20, 
54269
  0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 
54270
  0x73, 0x2E, 0x20, 0xDA, 0x08, 0xDA, 0x8C, 0x88, 0xDA, 0x8C, 0x89, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
54271
  0x03, 0x00, 0xDA, 0x04, 0x85, 0x3C, 0x01, 0xDA, 0x06, 0xCE, 0x7A, 0x57, 0x68, 0x65, 0x6E, 0x20, 
54272
  0x73, 0x65, 0x74, 0x2C, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 
54273
  0x69, 0x63, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
54274
  0x20, 0x74, 0x6F, 0x70, 0x20, 0x6C, 0x65, 0x76, 0x65, 0x6C, 0x20, 0x64, 0x65, 0x66, 0x73, 0x2E, 
54275
  0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x6C, 0x6F, 0x77, 0x20, 0x67, 0x65, 0x6E, 0x65, 0x72, 
54276
  0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 
54277
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 
54278
  0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, 
54279
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 0xED, 0xDA, 0x8C, 
54280
  0x8A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1B, 0x01, 0xDA, 0x06, 0xCE, 
54281
  0x2B, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x32, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
54282
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x67, 0x20, 
54283
  0x62, 0x61, 0x73, 0x65, 0x20, 0x32, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 
54284
  0x8B, 0xDA, 0x8C, 0x8C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x7C, 0x81, 0xCB, 
54285
  0x01, 0xDA, 0x06, 0xCE, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x67, 0x65, 0x74, 0x65, 
54286
  0x6E, 0x76, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 
54287
  0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
54288
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
54289
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x73, 
54290
  0x75, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x74, 
54291
  0x20, 0x79, 0x65, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x55, 0xDA, 0x8C, 0x8D, 0xD3, 0x03, 0xDA, 
54292
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8D, 0xDC, 0x01, 0xDA, 0x06, 0xCE, 0x63, 0x28, 0x64, 0x6F, 
54293
  0x63, 0x2A, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x29, 0x0A, 0x0A, 0x47, 0x65, 
54294
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 
54295
  0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 
54296
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 
54297
  0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x46, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
54298
  0x6E, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x64, 0x6F, 0x63, 0x60, 0x2E, 
54299
  0xDA, 0x08, 0xDA, 0x8C, 0x8E, 0xDA, 0x8C, 0xA5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54300
  0x80, 0x8F, 0x81, 0xEA, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x55, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 
54301
  0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x20, 
54302
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x69, 
54303
  0x6E, 0x64, 0x69, 0x76, 0x69, 0x64, 0x75, 0x61, 0x6C, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
54304
  0x61, 0x6E, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 
54305
  0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 
54306
  0x46, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x78, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 
54307
  0x2C, 0x20, 0x70, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 
54308
  0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
54309
  0x65, 0x72, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x70, 0x75, 
54310
  0x73, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x65, 0x71, 0x75, 0x65, 
54311
  0x6E, 0x63, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
54312
  0x72, 0x2E, 0x20, 0x54, 0x68, 0x75, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 
54313
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x65, 0x73, 0x20, 0x6C, 
54314
  0x69, 0x6B, 0x65, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x60, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 
54315
  0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x60, 0x20, 0x61, 0x6E, 
54316
  0x64, 0x20, 0x60, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x62, 
54317
  0x79, 0x74, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
54318
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
54319
  0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 
54320
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 
54321
  0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 
54322
  0x08, 0xDA, 0x87, 0x5A, 0xDA, 0x8C, 0xA6, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
54323
  0x85, 0x86, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x2A, 0x28, 0x2D, 0x3F, 0x3E, 0x20, 0x78, 0x20, 0x26, 
54324
  0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x20, 0x63, 
54325
  0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 
54326
  0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 
54327
  0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 
54328
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
54329
  0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 
54330
  0x73, 0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 
54331
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 
54332
  0x73, 0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 
54333
  0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 
54334
  0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 
54335
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 
54336
  0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 
54337
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x0A, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x69, 
54338
  0x6E, 0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
54339
  0x65, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x0A, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 
54340
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 
54341
  0x70, 0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 
54342
  0x61, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xA7, 0xDA, 0x8C, 0xA9, 0xD3, 0x03, 0xDA, 
54343
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x4F, 0x28, 0x61, 
54344
  0x72, 0x72, 0x61, 0x79, 0x20, 0x26, 0x20, 0x69, 0x74, 0x65, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x43, 
54345
  0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 
54346
  0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 
54347
  0x69, 0x74, 0x65, 0x6D, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
54348
  0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 
54349
  0x8C, 0xAA, 0xDA, 0x8C, 0xAB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x83, 
54350
  0xEB, 0x01, 0xDA, 0x06, 0xCE, 0x51, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x68, 0x61, 
54351
  0x73, 0x2D, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 
54352
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 
54353
  0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x76, 0x61, 0x6C, 
54354
  0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
54355
  0x20, 0x71, 0x75, 0x65, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x11, 0xDA, 0x8C, 0xAC, 0xD3, 0x03, 
54356
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xFD, 0x01, 0xDA, 0x06, 0xCE, 0x60, 0x28, 
54357
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x6F, 0x70, 0x6E, 0x20, 0x62, 0x75, 0x66, 0x66, 
54358
  0x65, 0x72, 0x20, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x73, 0x20, 0x74, 
54359
  0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x60, 0x6E, 0x60, 0x20, 0x62, 0x79, 0x74, 0x65, 
54360
  0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
54361
  0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 
54362
  0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 
54363
  0x08, 0xDA, 0x8C, 0xAD, 0xDA, 0x8A, 0x23, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
54364
  0x82, 0xBE, 0x01, 0xDA, 0x06, 0xCE, 0x7F, 0x28, 0x63, 0x6F, 0x72, 0x6F, 0x20, 0x26, 0x20, 0x62, 
54365
  0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x41, 0x20, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x20, 
54366
  0x66, 0x6F, 0x72, 0x20, 0x6D, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
54367
  0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x79, 0x69, 0x65, 0x6C, 0x64, 
54368
  0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 
54369
  0x20, 0x28, 0x63, 0x6F, 0x72, 0x6F, 0x75, 0x74, 0x69, 0x6E, 0x65, 0x29, 0x2E, 0x20, 0x53, 0x61, 
54370
  0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6E, 0x65, 
54371
  0x77, 0x20, 0x28, 0x66, 0x6E, 0x20, 0x5B, 0x5D, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x20, 
54372
  0x3A, 0x79, 0x69, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xAE, 0xDA, 0x8C, 
54373
  0xB0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0x3A, 0x01, 0xDA, 0x06, 
54374
  0xCE, 0x80, 0xBF, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x20, 
54375
  0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 
54376
  0x61, 0x72, 0x74, 0x2D, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 0x72, 
54377
  0x63, 0x68, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 
54378
  0x73, 0x74, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 
54379
  0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x6E, 
54380
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x52, 
54381
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 
54382
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x63, 0x68, 
54383
  0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 
54384
  0x60, 0x20, 0x69, 0x66, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 
54385
  0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 
54386
  0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xA4, 0xDA, 0x8C, 0xB1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
54387
  0x00, 0xDA, 0x8E, 0x98, 0x84, 0xA2, 0x01, 0xDA, 0x06, 0xCE, 0x5E, 0x28, 0x65, 0x76, 0x2F, 0x74, 
54388
  0x61, 0x6B, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
54389
  0x61, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 
54390
  0x6C, 0x2C, 0x20, 0x73, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
54391
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 
54392
  0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 
54393
  0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xD3, 0xDA, 0x8C, 
54394
  0xB2, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 
54395
  0x35, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
54396
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x60, 0x72, 0x75, 0x6E, 0x2D, 
54397
  0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x75, 0x70, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 
54398
  0x20, 0x65, 0x78, 0x69, 0x74, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x4A, 0xDA, 
54399
  0x8C, 0xB3, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x42, 0x01, 0xDA, 0x06, 
54400
  0xCE, 0x32, 0x42, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 
54401
  0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 
54402
  0x6E, 0x74, 0x6C, 0x79, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x66, 
54403
  0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x85, 0x48, 0xDA, 0x8C, 0xB4, 
54404
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x45, 0x01, 0xDA, 0x06, 0xCE, 0x6B, 
54405
  0x28, 0x74, 0x72, 0x61, 0x63, 0x65, 0x76, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 
54406
  0x74, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 0x72, 0x20, 0x61, 0x20, 0x76, 0x61, 
54407
  0x6C, 0x75, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 
54408
  0x70, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6F, 0x72, 
54409
  0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x65, 0x64, 0x20, 
54410
  0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x0A, 0x45, 0x76, 0x61, 0x6C, 
54411
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 
54412
  0xDA, 0x8C, 0xB5, 0xDA, 0x83, 0x9A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6D, 
54413
  0x01, 0xDA, 0x06, 0xCE, 0x1F, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x3F, 0x20, 0x78, 0x29, 0x0A, 
54414
  0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x61, 0x20, 0x74, 0x61, 
54415
  0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x98, 0xDA, 0x85, 0xE9, 0xD3, 0x03, 0xDA, 0x03, 
54416
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x38, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x07, 0x28, 0x69, 0x6E, 
54417
  0x76, 0x65, 0x72, 0x74, 0x20, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x69, 0x76, 0x65, 0x6E, 0x20, 
54418
  0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x64, 
54419
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x64, 
54420
  0x73, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
54421
  0x77, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 
54422
  0x65, 0x0A, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x64, 0x73, 0x60, 0x20, 0x61, 
54423
  0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x2C, 0x20, 0x61, 
54424
  0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 
54425
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6D, 
54426
  0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x0A, 0x69, 0x6E, 0x20, 
54427
  0x60, 0x64, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 
54428
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 
54429
  0x65, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 
54430
  0x68, 0x6F, 0x73, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
54431
  0x0A, 0x62, 0x65, 0x63, 0x6F, 0x6D, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 
54432
  0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x74, 0x61, 
54433
  0x62, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xE7, 0xDA, 0x8C, 0xBF, 0xD3, 0x03, 0xDA, 0x03, 
54434
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x07, 0x01, 0xDA, 0x06, 0xCE, 0x70, 0x28, 0x66, 0x6C, 0x61, 
54435
  0x74, 0x74, 0x65, 0x6E, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 
54436
  0x61, 0x20, 0x6E, 0x65, 0x73, 0x74, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x28, 
54437
  0x74, 0x72, 0x65, 0x65, 0x29, 0x20, 0x60, 0x78, 0x73, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 
54438
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x70, 0x74, 0x68, 
54439
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x61, 0x76, 0x65, 0x72, 0x73, 0x61, 0x6C, 
54440
  0x20, 0x6F, 0x66, 0x0A, 0x69, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
54441
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 
54442
  0xC0, 0xDA, 0x8C, 0xC2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xF5, 0x82, 0x9B, 
54443
  0x01, 0xDA, 0x06, 0xCE, 0x4C, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 
54444
  0x75, 0x6E, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 
54445
  0x29, 0x0A, 0x0A, 0x53, 0x74, 0x6F, 0x70, 0x20, 0x6C, 0x69, 0x73, 0x74, 0x65, 0x6E, 0x69, 0x6E, 
54446
  0x67, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x67, 0x65, 0x73, 0x20, 0x6F, 0x6E, 
54447
  0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 
54448
  0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xC3, 0xDA, 0x8C, 0xC4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54449
  0xDA, 0x8E, 0xD1, 0x81, 0x1F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x90, 0x28, 0x66, 0x69, 0x6C, 0x65, 
54450
  0x2F, 0x66, 0x6C, 0x75, 0x73, 0x68, 0x20, 0x66, 0x29, 0x0A, 0x0A, 0x46, 0x6C, 0x75, 0x73, 0x68, 
54451
  0x20, 0x61, 0x6E, 0x79, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x20, 0x62, 0x79, 
54452
  0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 
54453
  0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x6D, 0x6F, 0x73, 0x74, 0x20, 
54454
  0x66, 0x69, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 
54455
  0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x65, 
54456
  0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6E, 0x63, 0x79, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6F, 0x6E, 
54457
  0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
54458
  0x69, 0x6C, 0x65, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0xC5, 
54459
  0xDA, 0x8C, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x83, 0x11, 0x01, 0xDA, 
54460
  0x06, 0xCE, 0x82, 0x26, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x6B, 0x69, 0x6C, 
54461
  0x6C, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x77, 0x61, 0x69, 0x74, 
54462
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x4B, 0x69, 0x6C, 0x6C, 0x20, 0x74, 
54463
  0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x60, 0x70, 
54464
  0x72, 0x6F, 0x63, 0x60, 0x20, 0x62, 0x79, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 
54465
  0x53, 0x49, 0x47, 0x4B, 0x49, 0x4C, 0x4C, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x6F, 0x6E, 
54466
  0x20, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x2C, 0x20, 
54467
  0x6F, 0x72, 0x20, 0x62, 0x79, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
54468
  0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 
54469
  0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 
54470
  0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6C, 0x72, 0x65, 0x61, 
54471
  0x64, 0x79, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x72, 0x61, 
54472
  0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x49, 0x66, 
54473
  0x20, 0x60, 0x77, 0x61, 0x69, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 
54474
  0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x77, 0x61, 0x69, 0x74, 0x20, 0x66, 0x6F, 0x72, 
54475
  0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 
54476
  0x65, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 
54477
  0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x28, 0x74, 0x68, 
54478
  0x69, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 
54479
  0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 
54480
  0x20, 0x69, 0x73, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x61, 0x69, 0x74, 0x65, 0x64, 
54481
  0x20, 0x66, 0x6F, 0x72, 0x29, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 
54482
  0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x2E, 
54483
  0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 
54484
  0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2C, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x69, 
54485
  0x74, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x53, 0x49, 0x47, 
54486
  0x4B, 0x49, 0x4C, 0x4C, 0x2E, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x20, 0x6B, 0x65, 0x79, 
54487
  0x77, 0x6F, 0x72, 0x64, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x64, 0x20, 
54488
  0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x69, 0x72, 0x20, 0x43, 0x20, 0x63, 0x6F, 
54489
  0x75, 0x6E, 0x74, 0x65, 0x72, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 
54490
  0x6E, 0x20, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x63, 0x61, 0x73, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 
54491
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x49, 0x47, 
54492
  0x20, 0x73, 0x74, 0x72, 0x69, 0x70, 0x70, 0x65, 0x64, 0x2E, 0x20, 0x60, 0x73, 0x69, 0x67, 0x6E, 
54493
  0x61, 0x6C, 0x60, 0x20, 0x69, 0x73, 0x20, 0x69, 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x64, 0x20, 0x6F, 
54494
  0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xC6, 0xDA, 
54495
  0x8C, 0xC7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x0B, 0x01, 0xDA, 0x06, 
54496
  0xCE, 0x6F, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x20, 0x26, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
54497
  0x6F, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x6D, 0x75, 0x6C, 0x74, 
54498
  0x69, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 
54499
  0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
54500
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 
54501
  0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x6F, 0x66, 
54502
  0x20, 0x74, 0x68, 0x6F, 0x73, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
54503
  0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xC8, 0xDA, 0x8C, 0xCD, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54504
  0xDA, 0x04, 0x85, 0xED, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 0x77, 0x69, 0x74, 0x68, 0x2D, 0x65, 
54505
  0x6E, 0x76, 0x20, 0x65, 0x6E, 0x76, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 
54506
  0x52, 0x75, 0x6E, 0x20, 0x61, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x6F, 0x66, 0x20, 0x63, 
54507
  0x6F, 0x64, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 
54508
  0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x61, 0x62, 
54509
  0x6C, 0x65, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xCE, 0xDA, 0x8C, 0xD0, 0xD3, 0x04, 0xDA, 
54510
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xFC, 0x01, 0xDA, 0x06, 0xCE, 0x77, 0x28, 0x63, 0x6F, 
54511
  0x6D, 0x70, 0x69, 0x66, 0x20, 0x63, 0x6E, 0x64, 0x20, 0x74, 0x72, 0x75, 0x20, 0x26, 0x6F, 0x70, 
54512
  0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 
54513
  0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x6E, 
54514
  0x64, 0x60, 0x20, 0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 
54515
  0x6D, 0x65, 0x20, 0x2D, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 
54516
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x72, 0x75, 0x60, 0x2C, 0x20, 
54517
  0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x66, 0x61, 
54518
  0x6C, 0x73, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xD1, 0xDA, 0x8C, 0xD5, 0xD3, 
54519
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x38, 0x01, 0xDA, 0x06, 0xCE, 0x3D, 0x28, 
54520
  0x65, 0x61, 0x63, 0x68, 0x6B, 0x20, 0x78, 0x20, 0x64, 0x73, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
54521
  0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x61, 
54522
  0x63, 0x68, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x64, 0x73, 0x60, 0x2E, 0x20, 
54523
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
54524
  0x08, 0xDA, 0x8C, 0xD6, 0xDA, 0x8C, 0xD8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
54525
  0x81, 0x22, 0x01, 0xDA, 0x06, 0xCE, 0x55, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 
54526
  0x31, 0x70, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x28, 
54527
  0x6C, 0x6F, 0x67, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x29, 
54528
  0x20, 0x2B, 0x20, 0x31, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x61, 0x63, 0x63, 0x75, 0x72, 0x61, 
54529
  0x74, 0x65, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x28, 0x2B, 0x20, 0x28, 0x6D, 0x61, 
54530
  0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x20, 0x78, 0x29, 0x20, 0x31, 0x29, 0xDA, 0x08, 0xDA, 0x8C, 
54531
  0xD9, 0xDA, 0x82, 0x80, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x65, 0x01, 0xDA, 
54532
  0x06, 0xCE, 0x24, 0x28, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
54533
  0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 
54534
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x7D, 0xDA, 0x8C, 0xDA, 0xD3, 
54535
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x57, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
54536
  0xBF, 0x28, 0x68, 0x61, 0x73, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x47, 
54537
  0x65, 0x74, 0x73, 0x20, 0x61, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 
54538
  0x6E, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x68, 0x61, 
54539
  0x73, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
54540
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 
54541
  0x61, 0x20, 0x63, 0x68, 0x65, 0x61, 0x70, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x66, 0x75, 0x6E, 
54542
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 
54543
  0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x76, 0x61, 0x6C, 
54544
  0x75, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x6C, 0x79, 
54545
  0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 
54546
  0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
54547
  0x73, 0x61, 0x6D, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 
54548
  0xDA, 0x08, 0xDA, 0x8C, 0xDB, 0xDA, 0x8C, 0xDC, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x41, 0x54, 0x68, 
54549
  0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 
54550
  0x6E, 0x74, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
54551
  0x65, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 
54552
  0x69, 0x74, 0x68, 0x20, 0x28, 0x6D, 0x61, 0x6B, 0x65, 0x2D, 0x65, 0x6E, 0x76, 0x29, 0x2E, 0xDA, 
54553
  0x08, 0xDA, 0x00, 0xDA, 0x8C, 0xDD, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 
54554
  0xA7, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x57, 0x69, 0x64, 0x74, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x63, 
54555
  0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 
54556
  0x64, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x72, 
54557
  0x69, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x6F, 0x63, 0x2D, 
54558
  0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x60, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 
54559
  0xF7, 0xDA, 0x82, 0xF8, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x89, 0x03, 
54560
  0xDA, 0x06, 0xCE, 0x70, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x61, 0x64, 0x64, 0x2D, 
54561
  0x66, 0x69, 0x6C, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x69, 0x66, 0x65, 0x73, 0x74, 0x20, 0x73, 0x72, 
54562
  0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 0x65, 0x73, 0x74, 0x20, 0x63, 0x68, 0x6D, 0x6F, 
54563
  0x64, 0x2D, 0x6D, 0x6F, 0x64, 0x65, 0x29, 0x0A, 0x0A, 0x41, 0x64, 0x64, 0x20, 0x61, 0x20, 0x66, 
54564
  0x69, 0x6C, 0x65, 0x20, 0x64, 0x75, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
54565
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 
54566
  0x6F, 0x20, 0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x2A, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 
54567
  0x2A, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xDE, 0xDA, 0x8C, 0xE1, 0xD3, 0x04, 0xDA, 0x03, 
54568
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x91, 0x54, 0x68, 0x65, 
54569
  0x20, 0x69, 0x6D, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x20, 0x62, 0x61, 0x73, 0x65, 0x20, 0x67, 
54570
  0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6E, 
54571
  0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x50, 0x45, 0x47, 0x73, 0x2E, 
54572
  0x20, 0x41, 0x6E, 0x79, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x6B, 
54573
  0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x0A, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x77, 0x68, 
54574
  0x65, 0x6E, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x70, 
54575
  0x65, 0x67, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 
54576
  0x75, 0x70, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
54577
  0x20, 0x28, 0x69, 0x66, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x29, 0x2E, 0xDA, 0x86, 
54578
  0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x8C, 0xE2, 0xDA, 0x8C, 0xE3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
54579
  0x00, 0xDA, 0x8E, 0xE5, 0x81, 0xB1, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xDD, 0x28, 0x72, 0x61, 0x6E, 
54580
  0x67, 0x65, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 
54581
  0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x76, 
54582
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 0x6E, 
54583
  0x64, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 
54584
  0x73, 0x74, 0x65, 0x70, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x61, 
54585
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
54586
  0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x30, 0x2C, 0x20, 0x65, 0x6E, 0x64, 
54587
  0x29, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x74, 0x77, 0x6F, 0x20, 0x61, 0x72, 0x67, 0x75, 
54588
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
54589
  0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 0x5B, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2C, 0x20, 0x65, 
54590
  0x6E, 0x64, 0x29, 0x2E, 0x20, 0x57, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x72, 0x65, 0x65, 0x2C, 
54591
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 
54592
  0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 
54593
  0x74, 0x65, 0x70, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xE4, 0xDA, 0x8C, 
54594
  0xE5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1C, 0x01, 0xDA, 0x06, 0xCE, 
54595
  0x2C, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 0x71, 0x72, 0x74, 0x20, 0x78, 0x29, 0x0A, 0x0A, 
54596
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x71, 0x75, 0x61, 
54597
  0x72, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 
54598
  0x8C, 0xE6, 0xDA, 0x8C, 0xE7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x8A, 0x05, 
54599
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x82, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x65, 0x61, 0x6C, 0x70, 0x61, 
54600
  0x74, 0x68, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 
54601
  0x65, 0x20, 0x61, 0x62, 0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 
54602
  0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x68, 
54603
  0x2C, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 0x69, 0x6E, 0x67, 0x20, 0x2E, 0x2E, 0x2F, 0x2C, 
54604
  0x20, 0x2E, 0x2F, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 
54605
  0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 
54606
  0x73, 0x6F, 0x6C, 0x75, 0x74, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x73, 0x20, 0x61, 
54607
  0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x21, 0xDA, 0x8C, 0xE8, 
54608
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x4F, 0x28, 0x2A, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 
54609
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x64, 
54610
  0x75, 0x63, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 
54611
  0x6E, 0x74, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 
54612
  0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
54613
  0x6E, 0x73, 0x20, 0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x8A, 0xB4, 0xDA, 0x87, 0x66, 0xD3, 0x03, 0xDA, 
54614
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x44, 0x01, 0xDA, 0x06, 0xCE, 0x41, 0x28, 0x66, 0x69, 
54615
  0x72, 0x73, 0x74, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 
54616
  0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 
54617
  0x72, 0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x65, 0x64, 0x20, 0x64, 
54618
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0xDA, 0x08, 
54619
  0xDA, 0x87, 0x64, 0xDA, 0x8C, 0xE9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x54, 
54620
  0x63, 0x01, 0xDA, 0x06, 0xCE, 0x71, 0x28, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2F, 0x73, 0x6F, 0x75, 
54621
  0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x74, 0x75, 0x70, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
54622
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 
54623
  0x61, 0x70, 0x20, 0x6D, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x74, 0x74, 0x61, 
54624
  0x63, 0x68, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 
54625
  0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x6F, 0x74, 0x68, 0x65, 
54626
  0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x28, 0x6C, 0x69, 0x6E, 0x65, 0x2C, 0x20, 0x63, 
54627
  0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 0x78, 0xDA, 0x8C, 0xEA, 0xD3, 0x03, 
54628
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x80, 0xFA, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x41, 
54629
  0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x20, 0x61, 0x72, 
54630
  0x72, 0x20, 0x26, 0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6E, 0x63, 
54631
  0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 
54632
  0x62, 0x6C, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 
54633
  0x72, 0x61, 0x79, 0x73, 0x20, 0x28, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 
54634
  0x29, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 
54635
  0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 
54636
  0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 
54637
  0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
54638
  0x20, 0x70, 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 
54639
  0x73, 0x20, 0x6F, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 
54640
  0x69, 0x72, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
54641
  0x20, 0x62, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 
54642
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4F, 0x74, 0x68, 
54643
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x70, 0x61, 0x72, 
54644
  0x74, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x70, 0x61, 0x72, 0x74, 0x73, 0x60, 0x20, 0x77, 0x69, 0x6C, 
54645
  0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6F, 
54646
  0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 
54647
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
54648
  0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x60, 0x61, 0x72, 0x72, 0x60, 
54649
  0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xB1, 0xDA, 0x8C, 0xEB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54650
  0xDA, 0x8F, 0x7C, 0x82, 0x66, 0x01, 0xDA, 0x06, 0xCE, 0x70, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 
54651
  0x2F, 0x72, 0x6F, 0x6F, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
54652
  0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x6F, 0x6F, 0x74, 
54653
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x6F, 0x6F, 0x74, 
54654
  0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x6C, 
54655
  0x64, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x74, 0x6F, 0x72, 0x20, 0x74, 0x68, 
54656
  0x61, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 
54657
  0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xEC, 0xDA, 
54658
  0x8C, 0xED, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x87, 0x80, 0xE1, 0x01, 0xDA, 
54659
  0x06, 0xCE, 0x56, 0x28, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2F, 0x67, 0x65, 0x74, 0x70, 0x72, 
54660
  0x6F, 0x74, 0x6F, 0x20, 0x73, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
54661
  0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 
54662
  0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 
54663
  0x6C, 0x20, 0x69, 0x66, 0x20, 0x69, 0x74, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x6E, 0x27, 0x74, 0x20, 
54664
  0x68, 0x61, 0x76, 0x65, 0x20, 0x6F, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xEE, 0xDA, 0x8C, 
54665
  0xEF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x87, 0xAE, 0x01, 0xDA, 0x06, 0xCE, 
54666
  0x81, 0x31, 0x28, 0x6F, 0x73, 0x2F, 0x6D, 0x6B, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x64, 0x61, 0x74, 
54667
  0x65, 0x2D, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6C, 0x6F, 
54668
  0x63, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x72, 
54669
  0x6F, 0x6B, 0x65, 0x6E, 0x20, 0x64, 0x6F, 0x77, 0x6E, 0x20, 0x64, 0x61, 0x74, 0x65, 0x2D, 0x73, 
54670
  0x74, 0x72, 0x75, 0x63, 0x74, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 
54671
  0x73, 0x73, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
54672
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x73, 0x69, 
54673
  0x6E, 0x63, 0x65, 0x20, 0x4A, 0x61, 0x6E, 0x75, 0x61, 0x72, 0x79, 0x20, 0x31, 0x2C, 0x20, 0x31, 
54674
  0x39, 0x37, 0x30, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x6E, 0x69, 0x78, 0x20, 0x65, 0x70, 
54675
  0x6F, 0x63, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 
54676
  0x65, 0x61, 0x6C, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x44, 0x61, 0x74, 0x65, 
54677
  0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x55, 0x54, 0x43, 
54678
  0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x60, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x60, 0x20, 
54679
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x69, 0x6E, 0x20, 0x77, 0x68, 
54680
  0x69, 0x63, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 
54681
  0x65, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x75, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 
54682
  0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 
54683
  0x7A, 0x6F, 0x6E, 0x65, 0x2E, 0x0A, 0x0A, 0x49, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x66, 
54684
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x73, 0x2F, 0x64, 0x61, 
54685
  0x74, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xF0, 0xDA, 0x8C, 0xF1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54686
  0x03, 0x00, 0xDA, 0x4C, 0x89, 0xF6, 0x01, 0xDA, 0x06, 0xCE, 0x4E, 0x28, 0x6F, 0x73, 0x2F, 0x72, 
54687
  0x65, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x6C, 0x64, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6E, 0x65, 
54688
  0x77, 0x6E, 0x61, 0x6D, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x61, 
54689
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x6E, 0x20, 0x64, 0x69, 0x73, 0x6B, 0x20, 0x74, 0x6F, 
54690
  0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 
54691
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xF2, 0xDA, 0x8C, 
54692
  0xF3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x86, 0xED, 0x01, 0xDA, 0x06, 
54693
  0xCE, 0x80, 0x95, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x6E, 
54694
  0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2D, 0x6E, 0x61, 0x6D, 
54695
  0x65, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 
54696
  0x62, 0x6F, 0x6C, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 
54697
  0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x73, 0x79, 
54698
  0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x73, 0x20, 0x77, 0x69, 0x6C, 
54699
  0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 
54700
  0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 
54701
  0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 0x20, 0x65, 
54702
  0x6C, 0x73, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x08, 0xDA, 0x8C, 0xF4, 
54703
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x85, 0x01, 0xDA, 0x06, 0xCE, 
54704
  0x45, 0x28, 0x75, 0x6E, 0x74, 0x72, 0x61, 0x63, 0x65, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x29, 0x0A, 
54705
  0x0A, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x20, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6E, 
54706
  0x67, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
54707
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x75, 0x6E, 
54708
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xF5, 0xDA, 0x8C, 0xF6, 0xD3, 0x02, 
54709
  0xDA, 0x06, 0xCE, 0x4E, 0x28, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x65, 0x29, 0x0A, 0x0A, 0x54, 
54710
  0x68, 0x72, 0x6F, 0x77, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x65, 
54711
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x75, 
54712
  0x67, 0x68, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x20, 
54713
  0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 
54714
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x67, 0xDA, 0x8C, 0xF7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
54715
  0x00, 0xDA, 0x8E, 0x98, 0x85, 0x31, 0x01, 0xDA, 0x06, 0xCE, 0x62, 0x28, 0x65, 0x76, 0x2F, 0x72, 
54716
  0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x20, 0x26, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 
54717
  0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x65, 0x76, 
54718
  0x2F, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 
54719
  0x6C, 0x20, 0x74, 0x72, 0x79, 0x20, 0x63, 0x6C, 0x61, 0x75, 0x73, 0x65, 0x73, 0x20, 0x69, 0x6E, 
54720
  0x20, 0x61, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 
54721
  0x66, 0x6F, 0x72, 0x20, 0x66, 0x61, 0x69, 0x72, 0x6E, 0x65, 0x73, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
54722
  0x8C, 0xF8, 0xDA, 0x89, 0xD5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0xC8, 
54723
  0x01, 0xDA, 0x06, 0xCE, 0x3B, 0x28, 0x73, 0x75, 0x6D, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 
54724
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 
54725
  0x66, 0x20, 0x78, 0x73, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 
54726
  0x6D, 0x70, 0x74, 0x79, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x30, 0x2E, 
54727
  0xDA, 0x08, 0xDA, 0x89, 0xD3, 0xDA, 0x8C, 0xF9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54728
  0x80, 0xA1, 0x80, 0xEC, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 
54729
  0x67, 0x2F, 0x66, 0x72, 0x6F, 0x6D, 0x2D, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x20, 0x62, 
54730
  0x79, 0x74, 0x65, 0x2D, 0x76, 0x61, 0x6C, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
54731
  0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
54732
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6D, 0x65, 0x74, 
54733
  0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x76, 0x61, 
54734
  0x6C, 0x75, 0x65, 0x73, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
54735
  0x72, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x65, 0x72, 0x63, 
54736
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x61, 0x6E, 0x67, 0x65, 0x20, 
54737
  0x6F, 0x66, 0x20, 0x31, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x30, 0x2D, 0x32, 0x35, 0x35, 0x2E, 
54738
  0xDA, 0x08, 0xDA, 0x8C, 0xFA, 0xDA, 0x8C, 0xFB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54739
  0x8E, 0xD1, 0x81, 0x45, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAC, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 
54740
  0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x66, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x20, 
54741
  0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x6C, 0x65, 0x61, 
54742
  0x73, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x6C, 0x61, 0x74, 0x65, 0x64, 0x20, 0x72, 
54743
  0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x79, 
54744
  0x6F, 0x75, 0x20, 0x61, 0x72, 0x65, 0x20, 0x64, 0x6F, 0x6E, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 
54745
  0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2C, 0x20, 0x63, 0x6C, 0x6F, 0x73, 
54746
  0x65, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 
54747
  0x61, 0x20, 0x72, 0x65, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x65, 0x61, 0x6B, 0x20, 
54748
  0x61, 0x6E, 0x64, 0x20, 0x6C, 0x65, 0x74, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x70, 0x72, 
54749
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x68, 0x65, 
54750
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x76, 0xDA, 0x8C, 0xFC, 0xD3, 0x03, 
54751
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0xDA, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x32, 
54752
  0x28, 0x6D, 0x65, 0x6D, 0x63, 0x6D, 0x70, 0x20, 0x61, 0x20, 0x62, 0x20, 0x26, 0x6F, 0x70, 0x74, 
54753
  0x20, 0x6C, 0x65, 0x6E, 0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2D, 0x61, 0x20, 0x6F, 0x66, 
54754
  0x66, 0x73, 0x65, 0x74, 0x2D, 0x62, 0x29, 0x0A, 0x0A, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 
54755
  0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x20, 0x74, 
54756
  0x77, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
54757
  0x73, 0x20, 0x60, 0x61, 0x60, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x62, 0x60, 0x2C, 0x20, 0x61, 
54758
  0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x74, 
54759
  0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 
54760
  0x61, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x61, 0x20, 0x6E, 
54761
  0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 
54762
  0x69, 0x66, 0x20, 0x61, 0x20, 0x69, 0x73, 0x20, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 
54763
  0x6E, 0x20, 0x62, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x73, 0x69, 0x74, 
54764
  0x69, 0x76, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x69, 0x66, 0x20, 0x61, 
54765
  0x20, 0x69, 0x73, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 
54766
  0x20, 0x62, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x20, 0x74, 
54767
  0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x64, 
54768
  0x20, 0x6F, 0x66, 0x66, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6D, 0x70, 
54769
  0x61, 0x72, 0x65, 0x20, 0x73, 0x6C, 0x69, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 
54770
  0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 
54771
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xD3, 0xDA, 0x8C, 0xFD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
54772
  0x00, 0xDA, 0x04, 0x81, 0xA7, 0x01, 0xDA, 0x06, 0xCE, 0x31, 0x28, 0x72, 0x65, 0x74, 0x75, 0x72, 
54773
  0x6E, 0x20, 0x74, 0x6F, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 
54774
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x72, 
54775
  0x6F, 0x6D, 0x70, 0x74, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0xFE, 
54776
  0xDA, 0x86, 0x3F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x6F, 0x01, 0xDA, 0x06, 
54777
  0xCE, 0x23, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 
54778
  0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 
54779
  0x72, 0x72, 0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x3D, 0xDA, 0x8D, 0x00, 0xD3, 0x03, 0xDA, 
54780
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x80, 0xC9, 0x01, 0xDA, 0x06, 0xCE, 0x73, 0x28, 0x61, 
54781
  0x72, 0x72, 0x61, 0x79, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x20, 0x61, 0x72, 0x72, 0x20, 0x26, 0x20, 
54782
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x74, 0x68, 
54783
  0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x73, 
54784
  0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x61, 
54785
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2E, 0x20, 0x4D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 
54786
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x61, 0x72, 0x72, 0x61, 
54787
  0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x69, 0x74, 
54788
  0x2E, 0xDA, 0x08, 0xDA, 0x30, 0xDA, 0x8D, 0x01, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54789
  0x80, 0xA1, 0x80, 0xDE, 0x01, 0xDA, 0x06, 0xCE, 0x57, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
54790
  0x2F, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
54791
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 0x20, 
54792
  0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 
54793
  0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
54794
  0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 
54795
  0xDA, 0x08, 0xDA, 0x8D, 0x02, 0xCF, 0x0C, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x74, 0x2D, 
54796
  0x6D, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xB6, 0x01, 0xDA, 
54797
  0x06, 0xCE, 0x3F, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x63, 
54798
  0x6F, 0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
54799
  0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 
54800
  0x62, 0x79, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 0x65, 0x20, 0x28, 0x32, 0x5E, 0x35, 
54801
  0x33, 0x29, 0xDA, 0x08, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC3, 0xDA, 0x8D, 0x03, 
54802
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x67, 0x01, 0xDA, 0x06, 0xCE, 0x5B, 
54803
  0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 
54804
  0x63, 0x75, 0x73, 0x74, 0x6F, 0x6D, 0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x20, 0x61, 0x74, 
54805
  0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x52, 0x45, 0x50, 
54806
  0x4C, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x52, 0x45, 0x50, 0x4C, 0x73, 
54807
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 
54808
  0x69, 0x73, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 
54809
  0x08, 0xDA, 0x89, 0xC0, 0xDA, 0x8D, 0x04, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
54810
  0x66, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x3F, 0x20, 0x78, 0x29, 
54811
  0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 
54812
  0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x05, 0xDA, 0x8D, 0x07, 
54813
  0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x38, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
54814
  0x87, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x73, 0x70, 
54815
  0x61, 0x63, 0x65, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x64, 
54816
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x20, 0x64, 0x65, 
54817
  0x63, 0x6C, 0x61, 0x72, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x65, 0x66, 
54818
  0x64, 0x79, 0x6E, 0x60, 0x2E, 0x0A, 0x20, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 
54819
  0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x65, 0x76, 0x65, 0x6E, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x77, 
54820
  0x6F, 0x72, 0x64, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x62, 
54821
  0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 
54822
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x86, 
54823
  0x65, 0xDA, 0x8D, 0x08, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x83, 0xB7, 
54824
  0x01, 0xDA, 0x06, 0xCE, 0x76, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x65, 0x6F, 0x66, 
54825
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x64, 0x69, 0x63, 0x61, 
54826
  0x74, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
54827
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 
54828
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 
54829
  0x64, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x75, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 
54830
  0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 
54831
  0x64, 0x65, 0x61, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x10, 0xDA, 
54832
  0x8D, 0x09, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x48, 0x28, 0x6E, 0x6F, 0x74, 0x3D, 0x20, 0x26, 0x20, 
54833
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 
54834
  0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x78, 0x73, 0x20, 0x61, 
54835
  0x72, 0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x2E, 0x20, 0x52, 0x65, 
54836
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 
54837
  0xDA, 0x08, 0xDA, 0x82, 0x56, 0xDA, 0x8D, 0x0A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54838
  0x8F, 0x7C, 0x82, 0x79, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x8E, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 
54839
  0x2F, 0x73, 0x65, 0x74, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 
54840
  0x20, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 
54841
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x73, 0x74, 0x61, 
54842
  0x63, 0x6B, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 
54843
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x66, 0x69, 
54844
  0x62, 0x65, 0x72, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x2C, 
54845
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x73, 0x74, 0x61, 
54846
  0x63, 0x6B, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x75, 0x61, 0x6C, 
54847
  0x6C, 0x79, 0x20, 0x38, 0x31, 0x39, 0x32, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x0B, 0xDA, 0x81, 0x5D, 
54848
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x76, 0x01, 0xDA, 0x06, 0xCE, 0x22, 0x28, 
54849
  0x65, 0x6D, 0x70, 0x74, 0x79, 0x3F, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 
54850
  0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 0x20, 0x69, 0x73, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 
54851
  0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x5A, 0xDA, 0x8D, 0x0C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54852
  0xDA, 0x21, 0x81, 0x36, 0x01, 0xDA, 0x06, 0xCE, 0x2A, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x78, 0x29, 
54853
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 
54854
  0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6F, 0x66, 
54855
  0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x51, 0xDA, 0x89, 0x44, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
54856
  0x03, 0x00, 0xDA, 0x04, 0x8B, 0x09, 0x01, 0xDA, 0x06, 0xCE, 0x72, 0x28, 0x6D, 0x61, 0x6B, 0x65, 
54857
  0x2D, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x65, 0x6E, 0x76, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 
54858
  0x61, 0x74, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x66, 0x72, 0x6F, 
54859
  0x6D, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 
54860
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x60, 0x72, 0x65, 
54861
  0x71, 0x75, 0x69, 0x72, 0x65, 0x60, 0x2E, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
54862
  0x74, 0x68, 0x65, 0x20, 0x69, 0x6D, 0x61, 0x67, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
54863
  0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 
54864
  0x89, 0x41, 0xDA, 0x8D, 0x0D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8A, 0xB4, 
54865
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF6, 0x28, 0x71, 0x75, 0x69, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 
54866
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 
54867
  0x6F, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 
54868
  0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x20, 0x6F, 0x72, 0x20, 
54869
  0x72, 0x75, 0x6E, 0x2D, 0x63, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x2E, 0x20, 0x44, 0x6F, 0x65, 
54870
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x77, 0x61, 0x79, 0x73, 0x20, 0x65, 0x78, 0x69, 
54871
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 
54872
  0x6E, 0x2E, 0x0A, 0x57, 0x6F, 0x72, 0x6B, 0x73, 0x20, 0x62, 0x79, 0x20, 0x73, 0x65, 0x74, 0x74, 
54873
  0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x3A, 0x65, 0x78, 0x69, 0x74, 0x20, 0x64, 0x79, 
54874
  0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 
54875
  0x20, 0x74, 0x72, 0x75, 0x65, 0x2E, 0x20, 0x50, 0x61, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 
54876
  0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x6E, 0x69, 0x6C, 0x20, 0x60, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x60, 
54877
  0x20, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x61, 0x75, 0x73, 0x65, 
54878
  0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x75, 0x74, 0x65, 0x72, 0x0A, 0x72, 0x75, 0x6E, 0x2D, 0x63, 
54879
  0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
54880
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 
54881
  0x0E, 0xDA, 0x7C, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x55, 0x01, 0xDA, 
54882
  0x06, 0xCE, 0x81, 0x0E, 0x28, 0x6B, 0x65, 0x65, 0x70, 0x2D, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x78, 
54883
  0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x29, 0x0A, 0x0A, 
54884
  0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 
54885
  0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x74, 
54886
  0x79, 0x70, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 
54887
  0x70, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x60, 0x20, 0x62, 0x75, 
54888
  0x74, 0x20, 0x74, 0x68, 0x65, 0x0A, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 
54889
  0x66, 0x20, 0x60, 0x61, 0x66, 0x74, 0x65, 0x72, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x65, 0x69, 
54890
  0x74, 0x68, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x74, 0x73, 0x20, 
54891
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
54892
  0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 
54893
  0x73, 0x0A, 0x60, 0x61, 0x66, 0x74, 0x65, 0x72, 0x60, 0x20, 0x75, 0x6E, 0x6D, 0x6F, 0x64, 0x69, 
54894
  0x66, 0x69, 0x65, 0x64, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x74, 0x6F, 0x20, 
54895
  0x70, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x20, 0x73, 0x79, 0x6E, 0x74, 0x61, 0x63, 0x74, 
54896
  0x69, 0x63, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 
54897
  0x68, 0x65, 0x6E, 0x20, 0x74, 0x72, 0x61, 0x6E, 0x73, 0x66, 0x6F, 0x72, 0x6D, 0x69, 0x6E, 0x67, 
54898
  0x0A, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 
54899
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x73, 0xCF, 0x09, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x2D, 0x69, 0x6E, 
54900
  0x66, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xB0, 0x01, 0xDA, 0x06, 0xCE, 
54901
  0x29, 0x54, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 
54902
  0x65, 0x73, 0x65, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 
54903
  0x65, 0x20, 0x69, 0x6E, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x79, 0xDA, 0x08, 0xC8, 0x00, 0x00, 0x00, 
54904
  0x00, 0x00, 0x00, 0xF0, 0xFF, 0xDA, 0x8D, 0x10, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
54905
  0x21, 0x81, 0x20, 0x01, 0xDA, 0x06, 0xCE, 0x41, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x74, 0x72, 
54906
  0x75, 0x6E, 0x63, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 
54907
  0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 
54908
  0x65, 0x65, 0x6E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x30, 0x20, 0x6E, 0x65, 0x61, 0x72, 
54909
  0x65, 0x73, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x11, 0xDA, 0x8D, 
54910
  0x12, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x44, 0x80, 0xEE, 0x01, 0xDA, 0x06, 
54911
  0xCE, 0x80, 0x9C, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x75, 0x6E, 0x62, 0x72, 0x65, 0x61, 
54912
  0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x6F, 
54913
  0x6C, 0x75, 0x6D, 0x6E, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x20, 
54914
  0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
54915
  0x61, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x61, 0x74, 0x20, 
54916
  0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 
54917
  0x20, 0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 
54918
  0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 0x66, 0x20, 
54919
  0x74, 0x68, 0x65, 0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x63, 
54920
  0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2E, 0xDA, 
54921
  0x08, 0xDA, 0x8D, 0x13, 0xDA, 0x8D, 0x14, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
54922
  0x85, 0x96, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x29, 0x28, 0x2D, 0x3F, 0x3E, 0x3E, 0x20, 0x78, 0x20, 
54923
  0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x20, 
54924
  0x63, 0x69, 0x72, 0x63, 0x75, 0x69, 0x74, 0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 
54925
  0x67, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 
54926
  0x20, 0x78, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 0x76, 
54927
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
54928
  0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 
54929
  0x60, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 
54930
  0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 
54931
  0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 
54932
  0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 
54933
  0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 
54934
  0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 
54935
  0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 
54936
  0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x0A, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 
54937
  0x74, 0x65, 0x72, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
54938
  0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x0A, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 
54939
  0x66, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 
54940
  0x69, 0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 
54941
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x15, 0xDA, 0x8D, 0x17, 0xD3, 0x04, 0xDA, 0x86, 
54942
  0x28, 0xDA, 0x86, 0x2A, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x5C, 0x01, 0xDA, 0x06, 0xCE, 
54943
  0x37, 0x28, 0x76, 0x61, 0x72, 0x67, 0x6C, 0x6F, 0x62, 0x61, 0x6C, 0x20, 0x6E, 0x61, 0x6D, 0x65, 
54944
  0x20, 0x69, 0x6E, 0x69, 0x74, 0x29, 0x0A, 0x0A, 0x44, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x61, 
54945
  0x6C, 0x6C, 0x79, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x67, 0x6C, 0x6F, 
54946
  0x62, 0x61, 0x6C, 0x20, 0x76, 0x61, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x18, 0xDA, 0x8D, 0x1A, 
54947
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x91, 0x87, 0x80, 0xC2, 0x01, 0xDA, 0x06, 0xCE, 
54948
  0x56, 0x28, 0x69, 0x6E, 0x74, 0x2F, 0x73, 0x36, 0x34, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 
54949
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x78, 0x65, 0x64, 
54950
  0x20, 0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 
54951
  0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 
54952
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 
54953
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x1B, 0xDA, 0x80, 0xB6, 0xD3, 
54954
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8E, 0xF7, 0x03, 0xDA, 0x06, 0xCE, 0x5F, 0x28, 
54955
  0x65, 0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 
54956
  0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 
54957
  0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 
54958
  0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 
54959
  0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x65, 0x76, 0x2F, 0x67, 0x6F, 0x20, 0x28, 0x66, 
54960
  0x6E, 0x20, 0x5B, 0x5D, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x29, 0x60, 0x2E, 0xDA, 0x59, 
54961
  0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x1C, 0xDA, 0x83, 0x59, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54962
  0xDA, 0x04, 0x86, 0xA1, 0x01, 0xDA, 0x06, 0xCE, 0x38, 0x28, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x78, 
54963
  0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 
54964
  0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x6F, 0x63, 0x69, 0x61, 0x74, 0x69, 0x76, 
54965
  0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 
54966
  0x2E, 0xDA, 0x08, 0xDA, 0x83, 0x57, 0xDA, 0x82, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
54967
  0xDA, 0x04, 0x90, 0xC8, 0x03, 0xDA, 0x06, 0xCE, 0x80, 0xB0, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 
54968
  0x65, 0x2F, 0x70, 0x72, 0x75, 0x6E, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 
54969
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x72, 0x70, 0x68, 0x61, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x75, 
54970
  0x6E, 0x64, 0x6C, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
54971
  0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x79, 0x73, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 
54972
  0x41, 0x6E, 0x20, 0x6F, 0x72, 0x70, 0x68, 0x61, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x75, 0x6E, 0x64, 
54973
  0x6C, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x74, 
54974
  0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6D, 0x61, 0x72, 0x6B, 0x65, 0x64, 0x20, 0x66, 0x6F, 
54975
  0x72, 0x20, 0x3A, 0x61, 0x75, 0x74, 0x6F, 0x2D, 0x72, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 
54976
  0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6E, 0x64, 
54977
  0x65, 0x64, 0x20, 0x6F, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x6F, 0x74, 0x68, 
54978
  0x65, 0x72, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x54, 0xDA, 
54979
  0x84, 0x82, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x34, 0x01, 0xDA, 0x06, 
54980
  0xCE, 0x3B, 0x28, 0x6D, 0x61, 0x78, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 
54981
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x65, 
54982
  0x72, 0x69, 0x63, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x74, 
54983
  0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 
54984
  0x84, 0x80, 0xDA, 0x8D, 0x1F, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x83, 0x39, 
54985
  0x01, 0xDA, 0x06, 0xCE, 0x81, 0x00, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x2D, 0x63, 
54986
  0x6C, 0x6F, 0x73, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 0x0A, 0x0A, 0x43, 0x6C, 0x6F, 0x73, 
54987
  0x65, 0x20, 0x70, 0x69, 0x70, 0x65, 0x73, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 
54988
  0x66, 0x6F, 0x72, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x60, 
54989
  0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x62, 0x79, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 
54990
  0x77, 0x6E, 0x60, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 
54991
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x65, 0x6E, 0x20, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x64, 
54992
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x6E, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 
54993
  0x60, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x77, 
54994
  0x61, 0x69, 0x74, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x2C, 0x20, 0x77, 0x61, 0x69, 0x74, 0x2E, 
54995
  0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
54996
  0x6E, 0x20, 0x77, 0x61, 0x69, 0x74, 0x73, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x60, 0x70, 
54997
  0x72, 0x6F, 0x63, 0x60, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2C, 0x20, 
54998
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 
54999
  0x63, 0x6F, 0x64, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x2E, 0x20, 
55000
  0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
55001
  0x6E, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x20, 0xDA, 0x80, 0xBC, 0xD3, 0x04, 
55002
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x1A, 0x03, 0xDA, 0x06, 0xCE, 0x6A, 0x28, 0x65, 
55003
  0x76, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x20, 0x26, 
55004
  0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x52, 0x75, 0x6E, 0x20, 0x73, 0x6F, 0x6D, 0x65, 
55005
  0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x74, 
55006
  0x68, 0x72, 0x65, 0x61, 0x64, 0x2E, 0x20, 0x4C, 0x69, 0x6B, 0x65, 0x20, 0x60, 0x65, 0x76, 0x2F, 
55007
  0x64, 0x6F, 0x2D, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 
55008
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x6D, 0x6D, 0x65, 
55009
  0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 0x79, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x21, 
55010
  0xDA, 0x87, 0xC9, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x8B, 0x01, 0xDA, 
55011
  0x06, 0xCE, 0x80, 0x8F, 0x28, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x20, 0x74, 0x61, 0x67, 0x20, 
55012
  0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x20, 0x75, 0x70, 0x20, 
55013
  0x61, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x68, 0x61, 
55014
  0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 
55015
  0x64, 0x20, 0x74, 0x6F, 0x2E, 0x20, 0x60, 0x74, 0x61, 0x67, 0x60, 0x20, 0x73, 0x68, 0x6F, 0x75, 
55016
  0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x0A, 0x74, 0x68, 
55017
  0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 
55018
  0x60, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x60, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x6D, 0x65, 
55019
  0x6E, 0x74, 0x2C, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 
55020
  0x72, 0x64, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x87, 0xC2, 0xDA, 0x8D, 0x25, 0xD3, 0x03, 
55021
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x7B, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0x16, 0x28, 
55022
  0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x2D, 0x70, 0x61, 
55023
  0x74, 0x68, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 
55024
  0x29, 0x0A, 0x0A, 0x45, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 
55025
  0x68, 0x20, 0x74, 0x65, 0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 
55026
  0x75, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x2F, 0x70, 
55027
  0x61, 0x74, 0x68, 0x73, 0x60, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
55028
  0x65, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x60, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x74, 0x61, 
55029
  0x6B, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x28, 0x74, 
55030
  0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x72, 
55031
  0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x29, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x74, 0x65, 
55032
  0x6D, 0x70, 0x6C, 0x61, 0x74, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2C, 0x20, 0x74, 
55033
  0x6F, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 
55034
  0x68, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 
55035
  0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 
55036
  0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x73, 
55037
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 
55038
  0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x73, 0x20, 0x66, 0x6F, 0x6C, 0x6C, 0x6F, 0x77, 
55039
  0x73, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 
55040
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 
55041
  0x20, 0x76, 0x65, 0x72, 0x62, 0x61, 0x74, 0x69, 0x6D, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x40, 
55042
  0x61, 0x6C, 0x6C, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
55043
  0x3A, 0x61, 0x6C, 0x6C, 0x3A, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 
55044
  0x61, 0x74, 0x68, 0x60, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 
55045
  0x20, 0x74, 0x68, 0x65, 0x20, 0x40, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 
55046
  0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 
55047
  0x20, 0x73, 0x65, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6C, 
55048
  0x61, 0x63, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x64, 0x79, 0x6E, 0x61, 
55049
  0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x28, 0x64, 0x79, 
55050
  0x6E, 0x20, 0x3C, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x73, 0x65, 
55051
  0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x73, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 
55052
  0x3E, 0x29, 0x60, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x3A, 0x20, 0x2D, 0x2D, 
55053
  0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x70, 
55054
  0x6F, 0x72, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 0x2C, 0x20, 
55055
  0x6F, 0x66, 0x20, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 
55056
  0x2D, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x69, 0x72, 0x3A, 0x20, 
55057
  0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
55058
  0x20, 0x70, 0x6F, 0x72, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6E, 0x79, 
55059
  0x2C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x61, 0x72, 
55060
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x6D, 0x65, 0x3A, 
55061
  0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x6D, 
55062
  0x70, 0x6F, 0x6E, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2C, 0x20, 
55063
  0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x69, 
55064
  0x66, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x61, 0x74, 0x69, 
55065
  0x76, 0x65, 0x3A, 0x20, 0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6E, 
55066
  0x73, 0x69, 0x6F, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6C, 0x6F, 0x61, 
55067
  0x64, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x73, 0x2C, 0x20, 0x2E, 0x73, 0x6F, 0x20, 0x6F, 
55068
  0x72, 0x20, 0x2E, 0x64, 0x6C, 0x6C, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x79, 0x73, 0x3A, 0x20, 
55069
  0x2D, 0x2D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x70, 0x61, 
55070
  0x74, 0x68, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x73, 0x79, 0x73, 
55071
  0x70, 0x61, 0x74, 0x68, 0x29, 0xDA, 0x08, 0xDA, 0x81, 0xF7, 0xDA, 0x8D, 0x26, 0xD3, 0x02, 0xDA, 
55072
  0x06, 0xCE, 0x5A, 0x28, 0x25, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
55073
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6D, 0x61, 0x69, 0x6E, 0x64, 
55074
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x69, 0x76, 0x69, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x74, 
55075
  0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 
55076
  0x66, 0x20, 0x78, 0x73, 0x20, 0x62, 0x79, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x72, 0x65, 0x6D, 
55077
  0x61, 0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 
55078
  0x86, 0xAD, 0xDA, 0x83, 0xB9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 
55079
  0x49, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x02, 0x28, 0x74, 0x79, 0x70, 0x65, 0x20, 0x78, 0x29, 0x0A, 
55080
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 
55081
  0x65, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 
55082
  0x79, 0x77, 0x6F, 0x72, 0x64, 0x2E, 0x20, 0x60, 0x78, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 
55083
  0x65, 0x20, 0x6F, 0x66, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x69, 0x6C, 0x0A, 0x0A, 0x2A, 
55084
  0x20, 0x3A, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 0x75, 
55085
  0x6D, 0x62, 0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x72, 0x72, 0x61, 0x79, 0x0A, 0x0A, 
55086
  0x2A, 0x20, 0x3A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x74, 0x61, 0x62, 
55087
  0x6C, 0x65, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x0A, 0x0A, 0x2A, 
55088
  0x20, 0x3A, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x75, 0x66, 
55089
  0x66, 0x65, 0x72, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x0A, 0x0A, 
55090
  0x2A, 0x20, 0x3A, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 
55091
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x66, 0x75, 0x6E, 
55092
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x69, 0x62, 0x65, 0x72, 0x0A, 
55093
  0x0A, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x6B, 0x65, 0x79, 0x77, 
55094
  0x6F, 0x72, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 
55095
  0x61, 0x63, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x1C, 0xDA, 0x8D, 0x27, 
55096
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x85, 0xF0, 0x01, 0xDA, 0x06, 0xCE, 0x80, 
55097
  0xCC, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x66, 0x6F, 0x72, 0x6B, 0x29, 
55098
  0x0A, 0x0A, 0x4D, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6B, 0x60, 0x20, 
55099
  0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
55100
  0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 0x72, 0x6F, 
55101
  0x63, 0x65, 0x73, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x6E, 0x69, 0x6C, 
55102
  0x20, 0x69, 0x66, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x70, 
55103
  0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 
55104
  0x65, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x72, 0x65, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 
55105
  0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x28, 0x61, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 
55106
  0x72, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 
55107
  0x29, 0x2E, 0x20, 0x4E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 
55108
  0x20, 0x6F, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x73, 0x20, 
55109
  0x28, 0x50, 0x4F, 0x53, 0x49, 0x58, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x29, 0x2E, 0xDA, 0x08, 0xDA, 
55110
  0x8D, 0x28, 0xDA, 0x82, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x91, 0x50, 
55111
  0x03, 0xDA, 0x06, 0xCE, 0x81, 0x05, 0x28, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 0x65, 
55112
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2D, 0x6E, 0x61, 0x6D, 
55113
  0x65, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x26, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x6E, 0x65, 0x77, 
55114
  0x2D, 0x63, 0x6F, 0x6E, 0x66, 0x69, 0x67, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x69, 0x6E, 0x73, 0x74, 
55115
  0x61, 0x6C, 0x6C, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 
55116
  0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x6E, 0x65, 
55117
  0x77, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x53, 0x69, 0x6D, 
55118
  0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x0A, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x2F, 0x72, 
55119
  0x65, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6C, 0x6C, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6E, 
55120
  0x73, 0x74, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 
55121
  0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x62, 0x75, 0x6E, 0x64, 0x6C, 0x65, 0x20, 0x66, 0x72, 
55122
  0x6F, 0x6D, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 
55123
  0x2E, 0x0A, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x63, 0x65, 0x73, 0x73, 
55124
  0x61, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 
55125
  0x20, 0x70, 0x61, 0x63, 0x6B, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 
55126
  0x20, 0x62, 0x72, 0x65, 0x61, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x64, 0x65, 
55127
  0x70, 0x65, 0x6E, 0x64, 0x65, 0x6E, 0x63, 0x69, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x29, 
55128
  0xDA, 0x8D, 0x34, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x80, 0x8B, 0x01, 
55129
  0xDA, 0x06, 0xCE, 0x80, 0xA8, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x20, 
55130
  0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
55131
  0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x61, 
55132
  0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x72, 0x65, 0x2D, 
55133
  0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 
55134
  0x74, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 
55135
  0x60, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x29, 0x60, 0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x61, 
55136
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 
55137
  0x65, 0x6E, 0x74, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 
55138
  0x75, 0x6D, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 
55139
  0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 
55140
  0x8D, 0x35, 0xDA, 0x8D, 0x36, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x40, 
55141
  0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x6D, 0x69, 0x6E, 0x2D, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 
55142
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
55143
  0x6E, 0x75, 0x6D, 0x65, 0x72, 0x69, 0x63, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 
55144
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
55145
  0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x37, 0xDA, 0x8D, 
55146
  0x39, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0xAA, 0x87, 0x7B, 0x01, 0xDA, 0x06, 
55147
  0xCE, 0x7F, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x20, 0x70, 0x65, 0x67, 0x20, 
55148
  0x74, 0x65, 0x78, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 
55149
  0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 0x66, 0x69, 
55150
  0x72, 0x73, 0x74, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 
55151
  0x74, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 
55152
  0x69, 0x6E, 0x20, 0x74, 0x65, 0x78, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
55153
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 
55154
  0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
55155
  0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x3A, 0xDA, 0x8D, 0x3B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55156
  0xDA, 0x80, 0x95, 0x83, 0x78, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC7, 0x28, 0x6E, 0x65, 0x74, 0x2F, 
55157
  0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x2D, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x73, 0x74, 0x72, 0x65, 
55158
  0x61, 0x6D, 0x20, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 
55159
  0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 
55160
  0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x73, 0x74, 0x72, 0x65, 
55161
  0x61, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x63, 0x6F, 0x6E, 
55162
  0x74, 0x69, 0x6E, 0x75, 0x6F, 0x75, 0x73, 0x6C, 0x79, 0x20, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 
55163
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
55164
  0x2E, 0x20, 0x42, 0x6C, 0x6F, 0x63, 0x6B, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 
55165
  0x72, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 
55166
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x63, 
55167
  0x6C, 0x6F, 0x73, 0x65, 0x64, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 
55168
  0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 
55169
  0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x83, 0xBD, 0xDA, 0x8D, 0x3C, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x81, 
55170
  0x68, 0x28, 0x6E, 0x65, 0x78, 0x74, 0x20, 0x64, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6B, 
55171
  0x65, 0x79, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 
55172
  0x78, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 
55173
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 
55174
  0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 
55175
  0x74, 0x65, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6B, 
55176
  0x65, 0x79, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 
55177
  0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x75, 0x6E, 
55178
  0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 
55179
  0x20, 0x4B, 0x65, 0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6E, 
55180
  0x74, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6E, 0x20, 
55181
  0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x63, 0x65, 0x20, 0x70, 0x65, 0x72, 0x20, 0x69, 0x74, 
55182
  0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 
55183
  0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x69, 0x73, 
55184
  0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 0x75, 0x74, 0x61, 0x74, 0x65, 0x64, 0x20, 0x64, 0x75, 0x72, 
55185
  0x69, 0x6E, 0x67, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x49, 
55186
  0x66, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x6E, 0x65, 
55187
  0x78, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
55188
  0x69, 0x72, 0x73, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x65, 0x78, 
55189
  0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2C, 0x20, 0x74, 
55190
  0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6E, 0x6F, 0x20, 0x6D, 0x6F, 0x72, 0x65, 
55191
  0x20, 0x6B, 0x65, 0x79, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x65, 
55192
  0x20, 0x74, 0x68, 0x72, 0x6F, 0x75, 0x67, 0x68, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x53, 0xDA, 0x8D, 
55193
  0x3D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x04, 0x01, 0xDA, 0x06, 0xCE, 
55194
  0x31, 0x28, 0x70, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x20, 0x26, 0x20, 0x6D, 0x6F, 
55195
  0x72, 0x65, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x66, 0x75, 0x6E, 
55196
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x70, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 
55197
  0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x3E, 0xDA, 0x8D, 0x43, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x80, 
55198
  0x91, 0x28, 0x62, 0x6C, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x78, 0x20, 0x26, 0x20, 0x73, 0x68, 
55199
  0x69, 0x66, 0x74, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
55200
  0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x20, 0x62, 0x69, 
55201
  0x74, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x65, 0x64, 0x20, 0x6C, 0x65, 0x66, 0x74, 0x20, 0x62, 
55202
  0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 
55203
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 
55204
  0x73, 0x2E, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 
55205
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x68, 0x69, 0x66, 0x74, 0x20, 0x6D, 
55206
  0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
55207
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x44, 0xDA, 0x8D, 0x46, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55208
  0x00, 0xDA, 0x4C, 0x88, 0x05, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xE8, 0x28, 0x6F, 0x73, 0x2F, 0x6C, 
55209
  0x69, 0x6E, 0x6B, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 0x74, 0x68, 0x20, 0x6E, 0x65, 0x77, 0x70, 
55210
  0x61, 0x74, 0x68, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 
55211
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 
55212
  0x20, 0x61, 0x74, 0x20, 0x6E, 0x65, 0x77, 0x70, 0x61, 0x74, 0x68, 0x20, 0x74, 0x68, 0x61, 0x74, 
55213
  0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x6C, 0x64, 0x70, 0x61, 
55214
  0x74, 0x68, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 
55215
  0x69, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x66, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 
55216
  0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
55217
  0x65, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x2E, 0x20, 0x49, 0x66, 
55218
  0x66, 0x20, 0x73, 0x79, 0x6D, 0x6C, 0x69, 0x6E, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 
55219
  0x73, 0x65, 0x79, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
55220
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x68, 
55221
  0x61, 0x72, 0x64, 0x20, 0x6C, 0x69, 0x6E, 0x6B, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 
55222
  0x6F, 0x74, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x20, 0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 
55223
  0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x47, 0xDA, 0x8D, 0x48, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
55224
  0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x81, 0x3F, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC9, 0x28, 0x64, 0x65, 
55225
  0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
55226
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 
55227
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x68, 0x75, 0x6D, 0x61, 0x6E, 0x2D, 0x72, 0x65, 0x61, 0x64, 
55228
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
55229
  0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 0x60, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x72, 0x65, 0x63, 
55230
  0x75, 0x72, 0x73, 0x69, 0x76, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 
55231
  0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 
55232
  0x6E, 0x67, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x6E, 0x74, 
55233
  0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x20, 0x76, 
55234
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 
55235
  0x74, 0x68, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x74, 0x79, 0x20, 0x6F, 0x66, 0x20, 
55236
  0x60, 0x78, 0x60, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 
55237
  0x6D, 0x69, 0x6E, 0x65, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x8C, 0x92, 0xDA, 0x8D, 0x49, 0xD3, 0x03, 
55238
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x85, 0xE3, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x25, 0x28, 
55239
  0x6F, 0x73, 0x2F, 0x70, 0x6F, 0x73, 0x69, 0x78, 0x2D, 0x65, 0x78, 0x65, 0x63, 0x20, 0x61, 0x72, 
55240
  0x67, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x6C, 0x61, 0x67, 0x73, 0x20, 0x65, 0x6E, 
55241
  0x76, 0x29, 0x0A, 0x0A, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 
55242
  0x76, 0x70, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x65, 0x63, 0x76, 0x65, 0x20, 0x73, 0x79, 
55243
  0x73, 0x74, 0x65, 0x6D, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
55244
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 
55245
  0x74, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 
55246
  0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x20, 0x73, 0x69, 0x6D, 0x69, 
55247
  0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x6F, 0x73, 0x2F, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 
55248
  0x65, 0x2E, 0x20, 0x48, 0x6F, 0x77, 0x65, 0x76, 0x65, 0x72, 0x2C, 0x20, 0x69, 0x6E, 0x73, 0x74, 
55249
  0x65, 0x61, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 
55250
  0x61, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x2C, 0x20, 0x74, 0x68, 
55251
  0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 
55252
  0x73, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x64, 0x2E, 0x20, 0x49, 
55253
  0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 
55254
  0x6F, 0x6E, 0x20, 0x57, 0x69, 0x6E, 0x64, 0x6F, 0x77, 0x73, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 
55255
  0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x20, 0x72, 
55256
  0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 
55257
  0x64, 0x69, 0x6F, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x4A, 0xDA, 0x8D, 0x4B, 0xD3, 0x03, 0xDA, 0x03, 
55258
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0xF5, 0x01, 0xDA, 0x06, 0xCE, 0x43, 0x28, 0x64, 0x69, 0x73, 
55259
  0x74, 0x69, 0x6E, 0x63, 0x74, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
55260
  0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 
55261
  0x68, 0x65, 0x20, 0x64, 0x65, 0x64, 0x75, 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 
55262
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x78, 0x73, 0x60, 0x2E, 0xDA, 
55263
  0x08, 0xDA, 0x8D, 0x4C, 0xCF, 0x0E, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x69, 0x6E, 0x74, 0x33, 0x32, 
55264
  0x2D, 0x6D, 0x69, 0x6E, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0xB2, 0x01, 
55265
  0xDA, 0x06, 0xCE, 0x47, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x6E, 0x69, 0x6D, 0x75, 0x6D, 0x20, 
55266
  0x63, 0x6F, 0x6E, 0x74, 0x69, 0x67, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
55267
  0x65, 0x72, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x61, 0x62, 0x6C, 0x65, 
55268
  0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x73, 0x69, 0x67, 
55269
  0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0xDA, 0x08, 0xCD, 0x80, 0x00, 
55270
  0x00, 0x00, 0xDA, 0x8D, 0x51, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 
55271
  0x21, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xF0, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 
55272
  0x75, 0x73, 0x68, 0x2D, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 
55273
  0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x41, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x6D, 0x61, 
55274
  0x63, 0x68, 0x69, 0x6E, 0x65, 0x20, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 
55275
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x34, 0x20, 0x62, 
55276
  0x79, 0x74, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 
55277
  0x67, 0x65, 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x70, 0x70, 0x65, 0x6E, 0x64, 0x65, 0x64, 
55278
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x77, 0x6F, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 
55279
  0x65, 0x6E, 0x74, 0x2C, 0x20, 0x6C, 0x69, 0x74, 0x74, 0x6C, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x69, 
55280
  0x61, 0x6E, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2C, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 0x6E, 
55281
  0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x78, 0x2E, 0x20, 0x52, 0x65, 
55282
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 
55283
  0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 
55284
  0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x69, 
55285
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x76, 0x65, 
55286
  0x72, 0x66, 0x6C, 0x6F, 0x77, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x52, 0xDA, 0x8D, 0x53, 0xD3, 
55287
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x86, 0x13, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x89, 
55288
  0x28, 0x61, 0x6E, 0x79, 0x3F, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 
55289
  0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 
55290
  0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 
55291
  0x64, 0x60, 0x20, 0x69, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, 
55292
  0x69, 0x6E, 0x67, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 
55293
  0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x2C, 0x0A, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 
55294
  0x73, 0x65, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 
55295
  0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
55296
  0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x54, 0xDA, 0x8D, 
55297
  0x58, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x04, 0x01, 0xDA, 0x06, 0xCE, 
55298
  0x80, 0xBB, 0x28, 0x63, 0x61, 0x73, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 
55299
  0x20, 0x26, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x6C, 0x65, 0x63, 
55300
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 
55301
  0x65, 0x71, 0x75, 0x61, 0x6C, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x61, 
55302
  0x74, 0x63, 0x68, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 
55303
  0x60, 0x70, 0x61, 0x69, 0x72, 0x73, 0x60, 0x0A, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x6F, 
55304
  0x64, 0x64, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x6C, 0x65, 
55305
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x61, 0x73, 0x74, 0x20, 
55306
  0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x65, 
55307
  0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x6E, 0x6F, 
55308
  0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x2C, 
55309
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 
55310
  0xDA, 0x08, 0xDA, 0x8D, 0x59, 0xDA, 0x8D, 0x5D, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55311
  0x04, 0x82, 0x42, 0x01, 0xDA, 0x06, 0xCE, 0x6D, 0x28, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x20, 
55312
  0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 
55313
  0x61, 0x74, 0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6E, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x73, 
55314
  0x2E, 0x20, 0x49, 0x66, 0x20, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x65, 0x67, 0x61, 0x74, 0x69, 
55315
  0x76, 0x65, 0x2C, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 
55316
  0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x64, 0x20, 0x30, 0x20, 0x74, 0x69, 0x6D, 
55317
  0x65, 0x73, 0x2E, 0x20, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 
55318
  0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0x5E, 0xDA, 0x8D, 0x60, 
55319
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x4B, 0x86, 0x87, 0x01, 0xDA, 0x06, 0xCE, 
55320
  0x81, 0x7A, 0x28, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x78, 0x20, 0x26, 0x6F, 0x70, 
55321
  0x74, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2D, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 
55322
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6E, 0x6F, 0x2D, 0x63, 0x79, 0x63, 0x6C, 0x65, 
55323
  0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x61, 0x20, 0x76, 0x61, 
55324
  0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
55325
  0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 
55326
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 
55327
  0x66, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6C, 0x61, 0x74, 
55328
  0x65, 0x72, 0x20, 0x62, 0x65, 0x20, 0x75, 0x6E, 0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 
55329
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 
55330
  0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x20, 0x76, 0x61, 
55331
  0x6C, 0x75, 0x65, 0x2E, 0x20, 0x4F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x6C, 0x79, 0x2C, 
55332
  0x20, 0x6F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x70, 0x61, 0x73, 0x73, 0x20, 0x69, 0x6E, 
55333
  0x20, 0x61, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 
55334
  0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x6D, 
55335
  0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x20, 0x61, 0x6C, 0x69, 0x61, 0x73, 0x65, 0x64, 0x20, 0x76, 
55336
  0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x66, 
55337
  0x6F, 0x75, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6C, 
55338
  0x65, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x6E, 0x20, 0x61, 0x20, 0x66, 0x6F, 0x72, 0x77, 0x61, 0x72, 
55339
  0x64, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x63, 
55340
  0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x72, 0x65, 
55341
  0x63, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 0x6E, 
55342
  0x61, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x75, 0x6E, 
55343
  0x6D, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 
55344
  0x43, 0xDA, 0x8D, 0x61, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x89, 0x01, 
55345
  0xDA, 0x06, 0xCE, 0x80, 0x8A, 0x54, 0x68, 0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 
55346
  0x20, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x61, 0x72, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x66, 0x6F, 
55347
  0x72, 0x20, 0x70, 0x65, 0x67, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x67, 0x72, 0x61, 
55348
  0x6D, 0x6D, 0x61, 0x72, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x73, 0x65, 0x76, 
55349
  0x65, 0x72, 0x61, 0x6C, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x20, 0x70, 0x61, 0x74, 0x74, 
55350
  0x65, 0x72, 0x6E, 0x73, 0x0A, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 
55351
  0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x69, 0x74, 0x20, 0x65, 0x61, 0x73, 0x69, 0x65, 0x72, 0x20, 
55352
  0x74, 0x6F, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x63, 0x6F, 
55353
  0x6D, 0x70, 0x6C, 0x65, 0x78, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x2E, 0xDA, 
55354
  0x08, 0xDA, 0x8D, 0x62, 0xDA, 0x8D, 0xA7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 
55355
  0x81, 0x19, 0x01, 0xDA, 0x06, 0xCE, 0x31, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 
55356
  0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 
55357
  0x20, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x61, 0x6C, 0x20, 0x6C, 0x6F, 0x67, 0x61, 0x72, 0x69, 0x74, 
55358
  0x68, 0x6D, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0xCD, 0xDA, 0x8D, 0xA8, 
55359
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0xF5, 0x82, 0x88, 0x01, 0xDA, 0x06, 0xCE, 
55360
  0x40, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x77, 0x61, 0x74, 0x63, 0x68, 0x2F, 0x72, 0x65, 0x6D, 0x6F, 
55361
  0x76, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x20, 0x70, 0x61, 0x74, 0x68, 0x29, 
55362
  0x0A, 0x0A, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x20, 0x61, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 
55363
  0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 
55364
  0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xA9, 0xDA, 0x8D, 0xAA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55365
  0xDA, 0x21, 0x81, 0x0D, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x63, 
55366
  0x6F, 0x73, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
55367
  0x68, 0x65, 0x20, 0x63, 0x6F, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 
55368
  0x08, 0xDA, 0x8D, 0xAB, 0xDA, 0x8D, 0xAC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
55369
  0x80, 0xAB, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x49, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x61, 0x20, 
55370
  0x6D, 0x61, 0x63, 0x72, 0x6F, 0x2C, 0x20, 0x69, 0x73, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 
55371
  0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x66, 0x6F, 
55372
  0x72, 0x6D, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x76, 0x6F, 0x6B, 0x65, 0x64, 0x20, 
55373
  0x74, 0x68, 0x65, 0x20, 0x6D, 0x61, 0x63, 0x72, 0x6F, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 
55374
  0x82, 0xC8, 0xDA, 0x8D, 0xAD, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x88, 0x3D, 
55375
  0x01, 0xDA, 0x06, 0xCE, 0x4C, 0x28, 0x6F, 0x73, 0x2F, 0x72, 0x6D, 0x64, 0x69, 0x72, 0x20, 0x70, 
55376
  0x61, 0x74, 0x68, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x64, 
55377
  0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x64, 0x69, 
55378
  0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 
55379
  0x65, 0x6D, 0x70, 0x74, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x65, 0x64, 
55380
  0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x3F, 0xDA, 0x8D, 0x42, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55381
  0xDA, 0x04, 0x83, 0x8F, 0x01, 0xDA, 0x06, 0xCE, 0x1E, 0x28, 0x7A, 0x65, 0x72, 0x6F, 0x3F, 0x20, 
55382
  0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x20, 0x69, 
55383
  0x73, 0x20, 0x7A, 0x65, 0x72, 0x6F, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0x40, 0xDA, 0x8D, 0xAE, 0xD3, 
55384
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xE5, 0x82, 0x32, 0x01, 0xDA, 0x06, 0xCE, 0x70, 
55385
  0x28, 0x67, 0x63, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6C, 0x29, 0x0A, 0x0A, 0x52, 0x65, 
55386
  0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 
55387
  0x72, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 
55388
  0x73, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x20, 0x62, 0x65, 
55389
  0x66, 0x6F, 0x72, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x20, 
55390
  0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x67, 0x61, 0x72, 
55391
  0x62, 0x61, 0x67, 0x65, 0x20, 0x63, 0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 
55392
  0xDA, 0x08, 0xDA, 0x8D, 0xAF, 0xDA, 0x8D, 0xB0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55393
  0x90, 0xAA, 0x87, 0x87, 0x01, 0xDA, 0x06, 0xCE, 0x78, 0x28, 0x70, 0x65, 0x67, 0x2F, 0x66, 0x69, 
55394
  0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x65, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
55395
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
55396
  0x73, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6E, 0x64, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x64, 
55397
  0x65, 0x78, 0x65, 0x73, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 
55398
  0x65, 0x67, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x65, 
55399
  0x78, 0x74, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x61, 
55400
  0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x73, 
55401
  0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xB1, 0xDA, 0x84, 0x00, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55402
  0xDA, 0x04, 0x80, 0xF0, 0x01, 0xDA, 0x06, 0xCE, 0x49, 0x28, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 
55403
  0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
55404
  0x79, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 
55405
  0x72, 0x20, 0x60, 0x28, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 
55406
  0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x29, 0x20, 0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x60, 
55407
  0x2E, 0x20, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xB2, 0xDA, 0x8D, 0xB4, 0xD3, 0x03, 0xDA, 
55408
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x91, 0x71, 0x84, 0x36, 0x01, 0xDA, 0x06, 0xCE, 0x84, 0xC5, 0x28, 
55409
  0x64, 0x69, 0x73, 0x61, 0x73, 0x6D, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 
55410
  0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
55411
  0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 
55412
  0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 
55413
  0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 
55414
  0x6E, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x66, 0x75, 0x6E, 0x63, 
55415
  0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
55416
  0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x20, 0x63, 0x20, 0x66, 0x75, 0x6E, 
55417
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 
55418
  0x77, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6F, 0x6E, 0x20, 0x61, 0x20, 
55419
  0x62, 0x61, 0x64, 0x6C, 0x79, 0x20, 0x74, 0x79, 0x70, 0x65, 0x64, 0x20, 0x61, 0x72, 0x67, 0x75, 
55420
  0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x61, 
55421
  0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x2C, 0x20, 0x77, 0x69, 0x6C, 
55422
  0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 
55423
  0x61, 0x74, 0x20, 0x70, 0x61, 0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 
55424
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x73, 0x73, 0x65, 0x6D, 0x62, 0x6C, 0x79, 
55425
  0x2E, 0x20, 0x50, 0x6F, 0x73, 0x73, 0x69, 0x62, 0x6C, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6C, 0x64, 
55426
  0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x61, 0x72, 0x69, 0x74, 0x79, 
55427
  0x20, 0x2D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x72, 0x65, 0x71, 
55428
  0x75, 0x69, 0x72, 0x65, 0x64, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x6F, 0x70, 0x74, 0x69, 0x6F, 0x6E, 
55429
  0x61, 0x6C, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 
55430
  0x3A, 0x6D, 0x69, 0x6E, 0x2D, 0x61, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2D, 0x20, 0x6D, 0x69, 0x6E, 
55431
  0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 
55432
  0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 
55433
  0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 
55434
  0x77, 0x69, 0x74, 0x68, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x6D, 0x61, 0x78, 0x2D, 0x61, 0x72, 0x69, 
55435
  0x74, 0x79, 0x20, 0x2D, 0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 
55436
  0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x73, 
55437
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
55438
  0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2E, 0x0A, 0x2A, 0x20, 
55439
  0x3A, 0x76, 0x61, 0x72, 0x61, 0x72, 0x67, 0x20, 0x2D, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x69, 
55440
  0x66, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x74, 
55441
  0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x72, 0x69, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6E, 
55442
  0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 
55443
  0x74, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 
55444
  0x2D, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
55445
  0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 
55446
  0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x69, 0x6E, 
55447
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 
55448
  0x75, 0x70, 0x6C, 0x65, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 
55449
  0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
55450
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 
55451
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x61, 0x73, 0x20, 0x63, 0x6F, 0x6D, 
55452
  0x70, 0x69, 0x6C, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x6E, 
55453
  0x61, 0x6D, 0x65, 0x20, 0x2D, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x75, 
55454
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 0x6C, 0x6F, 0x74, 0x63, 
55455
  0x6F, 0x75, 0x6E, 0x74, 0x20, 0x2D, 0x20, 0x68, 0x6F, 0x77, 0x20, 0x6D, 0x61, 0x6E, 0x79, 0x20, 
55456
  0x76, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 
55457
  0x73, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x2C, 0x20, 0x74, 0x68, 0x69, 
55458
  0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x73, 0x2E, 
55459
  0x20, 0x43, 0x6F, 0x72, 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x74, 0x6F, 0x20, 
55460
  0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 
55461
  0x20, 0x62, 0x79, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2A, 0x20, 
55462
  0x3A, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x6D, 0x61, 0x70, 0x20, 0x2D, 0x20, 0x61, 0x6C, 0x6C, 
55463
  0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 
55464
  0x69, 0x72, 0x20, 0x73, 0x6C, 0x6F, 0x74, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x63, 0x6F, 0x6E, 
55465
  0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 
55466
  0x79, 0x20, 0x6F, 0x66, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x73, 0x20, 0x72, 
55467
  0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 
55468
  0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x73, 
55469
  0x6F, 0x75, 0x72, 0x63, 0x65, 0x6D, 0x61, 0x70, 0x20, 0x2D, 0x20, 0x61, 0x20, 0x6D, 0x61, 0x70, 
55470
  0x70, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x62, 0x79, 0x74, 
55471
  0x65, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x69, 0x6F, 
55472
  0x6E, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 
55473
  0x63, 0x6F, 0x6C, 0x75, 0x6D, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x6F, 
55474
  0x75, 0x72, 0x63, 0x65, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x65, 0x6E, 
55475
  0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x2D, 0x20, 0x61, 0x6E, 0x20, 
55476
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x6D, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 
55477
  0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x65, 0x6E, 0x63, 0x6C, 0x6F, 0x73, 
55478
  0x69, 0x6E, 0x67, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x61, 0x72, 
55479
  0x65, 0x20, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 
55480
  0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 
55481
  0x66, 0x73, 0x20, 0x2D, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
55482
  0x69, 0x6F, 0x6E, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 
55483
  0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 
55484
  0x6F, 0x6E, 0x20, 0x6D, 0x61, 0x79, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x74, 0x69, 0x61, 
55485
  0x74, 0x65, 0x2E, 0x0A, 0xDA, 0x08, 0xDA, 0x84, 0x4F, 0xDA, 0x8D, 0xB5, 0xD3, 0x05, 0xDA, 0x86, 
55486
  0x28, 0xD7, 0x00, 0xCD, 0x00, 0xDC, 0x00, 0x00, 0x0B, 0x04, 0x04, 0x04, 0x07, 0x19, 0x00, 0x08, 
55487
  0xCE, 0x0C, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x75, 0x73, 0x65, 0xDA, 0x04, 
55488
  0xDA, 0x83, 0x8A, 0xDA, 0x81, 0x28, 0xDA, 0x85, 0xE3, 0xDA, 0x81, 0x6E, 0xDA, 0x85, 0x2B, 0xDA, 
55489
  0x86, 0x26, 0xDA, 0x85, 0xDB, 0x00, 0x19, 0x00, 0xDA, 0x86, 0x42, 0x00, 0x19, 0x01, 0xDA, 0x85, 
55490
  0x78, 0x00, 0x19, 0x02, 0xDA, 0x83, 0x4A, 0x00, 0x19, 0x03, 0xDA, 0x85, 0x36, 0x00, 0x19, 0x04, 
55491
  0xCF, 0x0C, 0x66, 0x6C, 0x79, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x2D, 0x75, 0x73, 0x65, 0x04, 0x19, 
55492
  0x06, 0xCF, 0x07, 0x5F, 0x30, 0x30, 0x30, 0x30, 0x37, 0x34, 0x07, 0x19, 0x07, 0xCF, 0x07, 0x5F, 
55493
  0x30, 0x30, 0x30, 0x30, 0x37, 0x33, 0x0A, 0x18, 0x08, 0xDA, 0x80, 0xFA, 0x2B, 0x05, 0x01, 0x00, 
55494
  0x32, 0x05, 0x01, 0x00, 0x2C, 0x06, 0x00, 0x00, 0x35, 0x05, 0x06, 0x00, 0x1B, 0x06, 0x05, 0x00, 
55495
  0x28, 0x07, 0x00, 0x00, 0x49, 0x05, 0x06, 0x07, 0x1B, 0x07, 0x05, 0x00, 0x1F, 0x07, 0x10, 0x00, 
55496
  0x3A, 0x05, 0x06, 0x07, 0x1B, 0x08, 0x05, 0x00, 0x31, 0x08, 0x00, 0x00, 0x2C, 0x09, 0x01, 0x00, 
55497
  0x35, 0x05, 0x09, 0x00, 0x2C, 0x09, 0x02, 0x00, 0x2C, 0x0A, 0x03, 0x00, 0x33, 0x05, 0x09, 0x0A, 
55498
  0x2C, 0x09, 0x04, 0x00, 0x2C, 0x0A, 0x05, 0x00, 0x32, 0x09, 0x0A, 0x00, 0x2C, 0x0A, 0x06, 0x00, 
55499
  0x35, 0x09, 0x0A, 0x00, 0x49, 0x07, 0x06, 0x07, 0x1C, 0xF1, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 
55500
  0x8F, 0xFE, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x0B, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 
55501
  0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x24, 0x00, 0x24, 0x00, 0x24, 0x00, 0x1B, 0x00, 
55502
  0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x1B, 0x00, 0x03, 0x00, 
55503
  0x03, 0x00, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8C, 0x80, 0x01, 0xDA, 0x06, 0xCE, 
55504
  0x80, 0x94, 0x28, 0x75, 0x73, 0x65, 0x20, 0x26, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 
55505
  0x29, 0x0A, 0x0A, 0x53, 0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x69, 
55506
  0x6D, 0x70, 0x6F, 0x72, 0x74, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x6D, 0x70, 0x6F, 
55507
  0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 0x61, 0x72, 
55508
  0x65, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x65, 0x64, 0x20, 0x77, 
55509
  0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x0A, 0x69, 0x64, 0x65, 
55510
  0x6E, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x61, 0x6C, 0x73, 
55511
  0x6F, 0x20, 0x69, 0x6D, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 
55512
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6F, 0x6E, 0x65, 
55513
  0x20, 0x73, 0x68, 0x6F, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xB6, 0xDA, 0x8D, 
55514
  0xBA, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x8E, 0x80, 0x9D, 0x01, 0xDA, 0x06, 
55515
  0xCE, 0x80, 0x8F, 0x28, 0x61, 0x72, 0x72, 0x61, 0x79, 0x2F, 0x6E, 0x65, 0x77, 0x2D, 0x66, 0x69, 
55516
  0x6C, 0x6C, 0x65, 0x64, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
55517
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 
55518
  0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x60, 
55519
  0x63, 0x6F, 0x75, 0x6E, 0x74, 0x60, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x2C, 
55520
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x73, 0x65, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x76, 0x61, 0x6C, 
55521
  0x75, 0x65, 0x60, 0x2C, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 
55522
  0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
55523
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 
55524
  0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x2F, 0xDA, 0x8D, 0xBB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55525
  0xDA, 0x8E, 0xE5, 0x81, 0x60, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xB9, 0x28, 0x6B, 0x65, 0x79, 0x77, 
55526
  0x6F, 0x72, 0x64, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 
55527
  0x65, 0x73, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x62, 0x79, 0x20, 
55528
  0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 
55529
  0x65, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x78, 
55530
  0x73, 0x60, 0x20, 0x74, 0x6F, 0x67, 0x65, 0x74, 0x68, 0x65, 0x72, 0x2E, 0x20, 0x49, 0x66, 0x20, 
55531
  0x61, 0x6E, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 
55532
  0x74, 0x20, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 
55533
  0x65, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x72, 0x74, 
55534
  0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x76, 0x69, 0x61, 0x20, 
55535
  0x60, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
55536
  0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x6B, 0x65, 0x79, 0x77, 
55537
  0x6F, 0x72, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x67, 0xDA, 0x8D, 0xBC, 0xD3, 0x04, 0xDA, 0x03, 
55538
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0xBD, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD0, 0x28, 0x69, 0x66, 
55539
  0x2D, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5B, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x63, 
55540
  0x74, 0x6F, 0x72, 0x20, 0x64, 0x74, 0x6F, 0x72, 0x5D, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 
55541
  0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x29, 0x0A, 0x0A, 0x53, 
55542
  0x69, 0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x77, 0x69, 0x74, 0x68, 0x60, 
55543
  0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x69, 0x66, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 
55544
  0x20, 0x69, 0x73, 0x20, 0x66, 0x61, 0x6C, 0x73, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 
55545
  0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x0A, 0x74, 0x68, 0x65, 0x20, 
55546
  0x66, 0x61, 0x6C, 0x73, 0x65, 0x79, 0x20, 0x70, 0x61, 0x74, 0x68, 0x2E, 0x20, 0x4F, 0x74, 0x68, 
55547
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x2C, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 
55548
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x70, 0x61, 0x74, 
55549
  0x68, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x62, 0x6F, 0x74, 0x68, 0x20, 0x63, 0x61, 0x73, 0x65, 0x73, 
55550
  0x2C, 0x0A, 0x60, 0x63, 0x74, 0x6F, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x62, 0x6F, 0x75, 0x6E, 
55551
  0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x2E, 0xDA, 0x59, 0xCB, 
55552
  0xDA, 0x08, 0xDA, 0x8D, 0xBD, 0xDA, 0x8D, 0xC1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55553
  0x4C, 0x86, 0xEC, 0x01, 0xDA, 0x06, 0xCE, 0x30, 0x28, 0x6F, 0x73, 0x2F, 0x63, 0x77, 0x64, 0x29, 
55554
  0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 
55555
  0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x77, 0x6F, 0x72, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x64, 0x69, 
55556
  0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x8A, 0xDA, 0x8D, 0xC2, 
55557
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x6D, 0x01, 0xDA, 0x06, 0xCE, 0x47, 
55558
  0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x6C, 0x64, 0x65, 0x78, 0x70, 0x20, 0x6D, 0x20, 0x65, 0x29, 
55559
  0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
55560
  0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x6D, 0x61, 
55561
  0x6E, 0x74, 0x69, 0x73, 0x73, 0x61, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x78, 
55562
  0x70, 0x6F, 0x6E, 0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xC3, 0xDA, 0x82, 0xBF, 0xD3, 
55563
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x87, 0x0D, 0x01, 0xDA, 0x06, 0xCE, 0x65, 0x28, 
55564
  0x6B, 0x76, 0x73, 0x20, 0x64, 0x69, 0x63, 0x74, 0x29, 0x0A, 0x0A, 0x54, 0x61, 0x6B, 0x65, 0x73, 
55565
  0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x73, 0x74, 0x72, 0x75, 
55566
  0x63, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 
55567
  0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x6B, 0x65, 
55568
  0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x70, 0x61, 0x69, 0x72, 0x73, 0x0A, 0x6C, 0x69, 
55569
  0x6B, 0x65, 0x20, 0x60, 0x40, 0x5B, 0x6B, 0x20, 0x76, 0x20, 0x6B, 0x20, 0x76, 0x20, 0x2E, 0x2E, 
55570
  0x2E, 0x5D, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0xBC, 0xDA, 0x8D, 0xC4, 0xD3, 0x03, 0xDA, 0x03, 
55571
  0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x83, 0x9C, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xD3, 0x28, 0x70, 
55572
  0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x63, 0x6F, 0x6E, 0x73, 0x75, 0x6D, 0x65, 0x20, 0x70, 0x61, 
55573
  0x72, 0x73, 0x65, 0x72, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 
55574
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x49, 0x6E, 0x70, 0x75, 0x74, 0x20, 0x62, 0x79, 
55575
  0x74, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 
55576
  0x73, 0x65, 0x72, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x74, 0x68, 
55577
  0x65, 0x6D, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x74, 0x68, 0x72, 
55578
  0x6F, 0x77, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x73, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 
55579
  0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 
55580
  0x72, 0x6F, 0x72, 0x2E, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 
55581
  0x68, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x20, 0x67, 0x69, 
55582
  0x76, 0x65, 0x6E, 0x20, 0x62, 0x79, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x65, 0x78, 0x60, 0x2E, 0x20, 
55583
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
55584
  0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x72, 0x65, 0x61, 0x64, 
55585
  0x2E, 0xDA, 0x08, 0xDA, 0x0C, 0xDA, 0x8D, 0xC5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
55586
  0x8E, 0x98, 0x85, 0x39, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA7, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x68, 
55587
  0x61, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 
55588
  0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 
55589
  0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x2E, 0x20, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 
55590
  0x79, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
55591
  0x6F, 0x66, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x71, 0x75, 0x65, 
55592
  0x75, 0x65, 0x20, 0x62, 0x65, 0x66, 0x6F, 0x72, 0x65, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 
55593
  0x6E, 0x67, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x2C, 0x20, 0x64, 0x65, 0x66, 0x61, 
55594
  0x75, 0x6C, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x74, 
55595
  0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 
55596
  0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
55597
  0x2E, 0xDA, 0x08, 0xDA, 0x80, 0xAC, 0xDA, 0x8D, 0xC6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55598
  0xDA, 0x21, 0x81, 0x10, 0x01, 0xDA, 0x06, 0xCE, 0x24, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x73, 
55599
  0x69, 0x6E, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 
55600
  0x68, 0x65, 0x20, 0x73, 0x69, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 
55601
  0x8D, 0xC7, 0xDA, 0x8D, 0xC8, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8D, 
55602
  0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x2B, 0x3D, 0x20, 0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 
55603
  0x0A, 0x0A, 0x49, 0x6E, 0x63, 0x72, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 
55604
  0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 0x20, 0x6E, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 
55605
  0x08, 0xDA, 0x8D, 0xC9, 0xDA, 0x8D, 0xCB, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
55606
  0x82, 0xA8, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x91, 0x28, 0x63, 0x61, 0x74, 0x73, 0x65, 0x71, 0x20, 
55607
  0x68, 0x65, 0x61, 0x64, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x53, 0x69, 
55608
  0x6D, 0x69, 0x6C, 0x61, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x2C, 
55609
  0x20, 0x62, 0x75, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x63, 0x61, 0x74, 0x65, 0x6E, 0x61, 0x74, 0x65, 
55610
  0x73, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x66, 
55611
  0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x20, 0x62, 0x6F, 0x64, 
55612
  0x79, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 
55613
  0x61, 0x6E, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 
55614
  0x2E, 0x0A, 0x53, 0x65, 0x65, 0x20, 0x60, 0x6C, 0x6F, 0x6F, 0x70, 0x60, 0x20, 0x66, 0x6F, 0x72, 
55615
  0x20, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6C, 0x73, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 
55616
  0xCC, 0xDA, 0x82, 0x6A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x83, 0x62, 0x01, 
55617
  0xDA, 0x06, 0xCE, 0x81, 0x3D, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 0x78, 0x20, 
55618
  0x79, 0x29, 0x0A, 0x0A, 0x50, 0x6F, 0x6C, 0x79, 0x6D, 0x6F, 0x72, 0x70, 0x68, 0x69, 0x63, 0x20, 
55619
  0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 
55620
  0x20, 0x2D, 0x31, 0x2C, 0x20, 0x30, 0x2C, 0x20, 0x31, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x78, 0x20, 
55621
  0x3C, 0x20, 0x79, 0x2C, 0x20, 0x78, 0x20, 0x3D, 0x20, 0x79, 0x2C, 0x20, 0x78, 0x20, 0x3E, 0x20, 
55622
  0x79, 0x20, 0x72, 0x65, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6C, 0x79, 0x2E, 0x0A, 
55623
  0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x74, 0x68, 0x65, 
55624
  0x20, 0x70, 0x72, 0x69, 0x6D, 0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 
55625
  0x72, 0x61, 0x74, 0x6F, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 
55626
  0x74, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6B, 0x73, 0x20, 0x74, 
55627
  0x6F, 0x0A, 0x73, 0x65, 0x65, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x65, 0x69, 
55628
  0x74, 0x68, 0x65, 0x72, 0x20, 0x78, 0x20, 0x6F, 0x72, 0x20, 0x79, 0x20, 0x69, 0x6D, 0x70, 0x6C, 
55629
  0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x60, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 
55630
  0x60, 0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x63, 
55631
  0x61, 0x6E, 0x0A, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x20, 0x78, 0x20, 0x61, 0x6E, 0x64, 
55632
  0x20, 0x79, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x73, 0x6F, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x75, 0x73, 
55633
  0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x65, 0x74, 0x68, 0x6F, 0x64, 0x2E, 0x20, 
55634
  0x49, 0x66, 0x20, 0x6E, 0x6F, 0x74, 0x2C, 0x20, 0x69, 0x74, 0x0A, 0x64, 0x65, 0x6C, 0x65, 0x67, 
55635
  0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, 0x6D, 
55636
  0x69, 0x74, 0x69, 0x76, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x61, 0x74, 0x6F, 0x72, 
55637
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x82, 0x67, 0xDA, 0x8D, 0xCE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55638
  0x00, 0xDA, 0x8E, 0x98, 0x8C, 0x94, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x2D, 0x28, 0x65, 0x76, 0x2F, 
55639
  0x67, 0x69, 0x76, 0x65, 0x2D, 0x73, 0x75, 0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 
55640
  0x74, 0x61, 0x67, 0x20, 0x26, 0x20, 0x70, 0x61, 0x79, 0x6C, 0x6F, 0x61, 0x64, 0x29, 0x0A, 0x0A, 
55641
  0x53, 0x65, 0x6E, 0x64, 0x20, 0x61, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x74, 
55642
  0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x75, 
55643
  0x70, 0x65, 0x72, 0x76, 0x69, 0x73, 0x6F, 0x72, 0x20, 0x63, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 
55644
  0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x6E, 0x65, 
55645
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x20, 0x77, 0x69, 
55646
  0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x6F, 0x66, 
55647
  0x20, 0x61, 0x6C, 0x6C, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 
55648
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x69, 
55649
  0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x20, 0x6D, 0x65, 0x73, 
55650
  0x73, 0x61, 0x67, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 
55651
  0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x69, 0x73, 
55652
  0x20, 0x74, 0x61, 0x67, 0x2E, 0x20, 0x42, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 
55653
  0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x74, 0x61, 0x67, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 
55654
  0x62, 0x65, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x77, 0x6F, 0x72, 0x64, 0x20, 0x69, 0x6E, 0x64, 
55655
  0x69, 0x63, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 
55656
  0x20, 0x6F, 0x66, 0x20, 0x6D, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 
55657
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xCF, 0xDA, 0x8D, 
55658
  0xD0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xF4, 0x01, 0xDA, 0x06, 
55659
  0xCE, 0x80, 0xA3, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x63, 0x6C, 0x65, 0x61, 0x72, 
55660
  0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x74, 0x73, 0x20, 0x74, 
55661
  0x68, 0x65, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 
55662
  0x66, 0x65, 0x72, 0x20, 0x74, 0x6F, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x65, 0x6D, 0x70, 
55663
  0x74, 0x69, 0x65, 0x73, 0x20, 0x69, 0x74, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 
55664
  0x66, 0x65, 0x72, 0x20, 0x72, 0x65, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 
55665
  0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x73, 0x6F, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6E, 
55666
  0x20, 0x62, 0x65, 0x20, 0x65, 0x66, 0x66, 0x69, 0x63, 0x69, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 
55667
  0x72, 0x65, 0x66, 0x69, 0x6C, 0x6C, 0x65, 0x64, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
55668
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 
55669
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0x61, 0xDA, 0x8D, 0xD1, 0xD3, 0x03, 
55670
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x81, 0xB5, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x92, 
55671
  0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x70, 0x75, 0x73, 0x68, 0x2D, 0x66, 0x6C, 0x6F, 
55672
  0x61, 0x74, 0x36, 0x34, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 0x65, 
55673
  0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x0A, 0x0A, 0x50, 0x75, 0x73, 0x68, 0x20, 0x74, 0x68, 
55674
  0x65, 0x20, 0x75, 0x6E, 0x64, 0x65, 0x72, 0x6C, 0x79, 0x69, 0x6E, 0x67, 0x20, 0x62, 0x79, 0x74, 
55675
  0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 0x20, 0x66, 
55676
  0x6C, 0x6F, 0x61, 0x74, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 
55677
  0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 
55678
  0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
55679
  0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 
55680
  0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xD2, 0xDA, 0x8D, 0xD3, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55681
  0x00, 0xDA, 0x8E, 0xBB, 0x87, 0x08, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAE, 0x28, 0x66, 0x66, 0x69, 
55682
  0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x20, 0x73, 0x69, 0x7A, 0x65, 0x29, 0x0A, 0x0A, 0x41, 
55683
  0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 
55684
  0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6C, 0x79, 0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x74, 
55685
  0x68, 0x65, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 
55686
  0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x6F, 0x72, 0x2E, 0x20, 0x4D, 0x65, 0x6D, 0x6F, 0x72, 
55687
  0x79, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x20, 0x74, 
55688
  0x68, 0x69, 0x73, 0x20, 0x77, 0x61, 0x79, 0x20, 0x6D, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 
55689
  0x66, 0x72, 0x65, 0x65, 0x64, 0x20, 0x6D, 0x61, 0x6E, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x21, 0x20, 
55690
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x61, 0x77, 0x20, 0x70, 0x6F, 
55691
  0x69, 0x6E, 0x74, 0x65, 0x72, 0x2C, 0x20, 0x6F, 0x72, 0x20, 0x6E, 0x69, 0x6C, 0x20, 0x69, 0x66, 
55692
  0x20, 0x73, 0x69, 0x7A, 0x65, 0x20, 0x3D, 0x20, 0x30, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xD4, 0xDA, 
55693
  0x8D, 0xD5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x44, 0x81, 0x9A, 0x01, 0xDA, 
55694
  0x06, 0xCE, 0x80, 0xCF, 0x28, 0x64, 0x65, 0x62, 0x75, 0x67, 0x2F, 0x61, 0x72, 0x67, 0x2D, 0x73, 
55695
  0x74, 0x61, 0x63, 0x6B, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 
55696
  0x73, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x73, 0x20, 0x63, 0x75, 0x72, 
55697
  0x72, 0x65, 0x6E, 0x74, 0x6C, 0x79, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
55698
  0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 
55699
  0x74, 0x61, 0x63, 0x6B, 0x2E, 0x20, 0x4E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x6C, 0x79, 0x2C, 0x20, 
55700
  0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x65, 
55701
  0x6D, 0x70, 0x74, 0x79, 0x20, 0x75, 0x6E, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
55702
  0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x6C, 0x73, 0x20, 0x77, 0x68, 
55703
  0x69, 0x6C, 0x65, 0x20, 0x70, 0x75, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x72, 0x67, 0x75, 
55704
  0x6D, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x61, 0x20, 
55705
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x2E, 0x20, 0x52, 
55706
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x61, 0x72, 0x72, 
55707
  0x61, 0x79, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xD6, 0xDA, 0x8D, 0xD7, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
55708
  0x03, 0x00, 0xDA, 0x4C, 0x86, 0xA1, 0x01, 0xDA, 0x06, 0xCE, 0x83, 0x42, 0x28, 0x6F, 0x73, 0x2F, 
55709
  0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 
55710
  0x65, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
55711
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x69, 
55712
  0x6D, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 
55713
  0x74, 0x65, 0x64, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 
55714
  0x2E, 0x0A, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x73, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x60, 0x20, 
55715
  0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 0x65, 0x6C, 0x65, 0x63, 0x74, 0x73, 
55716
  0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x73, 0x6F, 0x75, 0x72, 0x63, 
55717
  0x65, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x6E, 
55718
  0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 
55719
  0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x60, 0x3A, 0x72, 0x65, 
55720
  0x61, 0x6C, 0x74, 0x69, 0x6D, 0x65, 0x60, 0x3A, 0x0A, 0x2D, 0x20, 0x3A, 0x72, 0x65, 0x61, 0x6C, 
55721
  0x74, 0x69, 0x6D, 0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 
55722
  0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x28, 0x69, 0x2E, 0x65, 0x2E, 0x2C, 0x20, 0x77, 0x61, 0x6C, 
55723
  0x6C, 0x2D, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x29, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0x20, 0x54, 
55724
  0x68, 0x69, 0x73, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x61, 0x66, 0x66, 
55725
  0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6F, 0x6E, 0x74, 
55726
  0x69, 0x6E, 0x75, 0x6F, 0x75, 0x73, 0x20, 0x20, 0x20, 0x6A, 0x75, 0x6D, 0x70, 0x73, 0x20, 0x69, 
55727
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x74, 0x69, 0x6D, 
55728
  0x65, 0x0A, 0x2D, 0x20, 0x3A, 0x6D, 0x6F, 0x6E, 0x6F, 0x74, 0x6F, 0x6E, 0x69, 0x63, 0x3A, 0x20, 
55729
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
55730
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x77, 0x68, 0x6F, 0x6C, 0x65, 0x20, 0x2B, 0x20, 0x66, 0x72, 0x61, 
55731
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 
55732
  0x73, 0x69, 0x6E, 0x63, 0x65, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x66, 0x69, 0x78, 0x65, 0x64, 
55733
  0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x20, 0x69, 0x6E, 0x20, 0x20, 0x20, 0x74, 0x69, 0x6D, 0x65, 
55734
  0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6C, 0x6F, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x67, 
55735
  0x75, 0x61, 0x72, 0x61, 0x6E, 0x74, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 
55736
  0x6E, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x63, 0x72, 0x65, 0x61, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x69, 
55737
  0x6E, 0x20, 0x72, 0x65, 0x61, 0x6C, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x2E, 0x0A, 0x2D, 0x20, 0x3A, 
55738
  0x63, 0x70, 0x75, 0x74, 0x69, 0x6D, 0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
55739
  0x74, 0x68, 0x65, 0x20, 0x43, 0x50, 0x55, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x6E, 
55740
  0x73, 0x75, 0x6D, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 
55741
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x20, 0x28, 0x69, 0x2E, 0x65, 0x2E, 0x20, 0x61, 0x6C, 0x6C, 
55742
  0x20, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
55743
  0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x29, 0x0A, 0x54, 0x68, 0x65, 0x20, 0x60, 0x66, 0x6F, 
55744
  0x72, 0x6D, 0x61, 0x74, 0x60, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x73, 
55745
  0x65, 0x6C, 0x65, 0x63, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 
55746
  0x6F, 0x66, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 
55747
  0x6E, 0x6F, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x74, 0x68, 
55748
  0x65, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x69, 0x73, 0x20, 0x60, 0x3A, 0x64, 
55749
  0x6F, 0x75, 0x62, 0x6C, 0x65, 0x60, 0x3A, 0x0A, 0x2D, 0x20, 0x3A, 0x64, 0x6F, 0x75, 0x62, 0x6C, 
55750
  0x65, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 
55751
  0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 
55752
  0x2B, 0x20, 0x66, 0x72, 0x61, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x65, 0x63, 
55753
  0x6F, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x64, 0x6F, 0x75, 0x62, 0x6C, 0x65, 
55754
  0x0A, 0x2D, 0x20, 0x3A, 0x69, 0x6E, 0x74, 0x3A, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
55755
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x65, 
55756
  0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 
55757
  0x67, 0x65, 0x72, 0x0A, 0x2D, 0x20, 0x3A, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x3A, 0x20, 0x52, 0x65, 
55758
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x32, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 
55759
  0x20, 0x74, 0x75, 0x70, 0x6C, 0x65, 0x20, 0x5B, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x2C, 
55760
  0x20, 0x6E, 0x61, 0x6E, 0x6F, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x5D, 0x0A, 0xDA, 0x08, 
55761
  0xDA, 0x8D, 0xD8, 0xDA, 0x8D, 0xD9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 
55762
  0x81, 0x85, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x84, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 
55763
  0x70, 0x75, 0x73, 0x68, 0x2D, 0x75, 0x69, 0x6E, 0x74, 0x33, 0x32, 0x20, 0x62, 0x75, 0x66, 0x66, 
55764
  0x65, 0x72, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x64, 0x61, 0x74, 0x61, 0x29, 0x0A, 0x0A, 
55765
  0x50, 0x75, 0x73, 0x68, 0x20, 0x61, 0x20, 0x33, 0x32, 0x20, 0x62, 0x69, 0x74, 0x20, 0x75, 0x6E, 
55766
  0x73, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x20, 0x64, 
55767
  0x61, 0x74, 0x61, 0x20, 0x6F, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6E, 0x64, 
55768
  0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0x20, 
55769
  0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 
55770
  0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 
55771
  0xDA, 0xDA, 0x8D, 0xDB, 0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x45, 0x28, 0x3C, 0x3D, 0x20, 0x26, 0x20, 
55772
  0x78, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 0x73, 
55773
  0x20, 0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x6E, 0x6F, 0x6E, 0x2D, 0x64, 0x65, 0x73, 0x63, 0x65, 
55774
  0x6E, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x2E, 0x20, 0x52, 0x65, 0x74, 
55775
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 
55776
  0x08, 0xDA, 0x84, 0x14, 0xDA, 0x8D, 0xDC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
55777
  0x80, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x28, 0x63, 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x20, 
55778
  0x26, 0x29, 0x0A, 0x0A, 0x49, 0x67, 0x6E, 0x6F, 0x72, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
55779
  0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6D, 0x6D, 
55780
  0x65, 0x6E, 0x74, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xDD, 0xDA, 0x8D, 0xDF, 0xD3, 
55781
  0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8B, 0x03, 0x01, 0xDA, 0x06, 0xCE, 0x7B, 0x28, 
55782
  0x63, 0x6F, 0x6D, 0x70, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x62, 
55783
  0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x74, 0x68, 0x65, 0x20, 
55784
  0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x63, 0x6E, 0x64, 0x60, 0x20, 
55785
  0x61, 0x74, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x20, 
55786
  0x2D, 0x2D, 0x20, 0x69, 0x66, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x63, 0x6F, 
55787
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x60, 0x28, 0x75, 0x70, 0x73, 0x63, 0x6F, 0x70, 0x65, 0x20, 
55788
  0x3B, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x60, 0x2C, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x63, 0x6F, 
55789
  0x6D, 0x70, 0x69, 0x6C, 0x65, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 
55790
  0x8D, 0xE0, 0xDA, 0x85, 0xC1, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x84, 0xD1, 
55791
  0x01, 0xDA, 0x06, 0xCE, 0x44, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x75, 0x6E, 0x74, 0x69, 0x6C, 
55792
  0x20, 0x70, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x61, 0x6D, 0x65, 
55793
  0x20, 0x61, 0x73, 0x20, 0x60, 0x28, 0x74, 0x61, 0x6B, 0x65, 0x2D, 0x77, 0x68, 0x69, 0x6C, 0x65, 
55794
  0x20, 0x28, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x70, 0x72, 0x65, 
55795
  0x64, 0x29, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x85, 0xB5, 0xDA, 0x8D, 
55796
  0xE2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x89, 0x1F, 0x01, 0xDA, 0x06, 0xCE, 
55797
  0x80, 0x8F, 0x28, 0x64, 0x65, 0x65, 0x70, 0x3D, 0x20, 0x78, 0x20, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 
55798
  0x69, 0x6B, 0x65, 0x20, 0x60, 0x3D, 0x60, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6D, 0x75, 0x74, 
55799
  0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x28, 0x61, 0x72, 0x72, 0x61, 
55800
  0x79, 0x73, 0x2C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x66, 0x66, 
55801
  0x65, 0x72, 0x73, 0x29, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 
55802
  0x72, 0x65, 0x64, 0x0A, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 
55803
  0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x63, 0x61, 0x6C, 
55804
  0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x4D, 0x75, 0x63, 0x68, 
55805
  0x20, 0x73, 0x6C, 0x6F, 0x77, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x60, 0x3D, 0x60, 
55806
  0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xE3, 0xDA, 0x8D, 0xE5, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55807
  0xDA, 0x04, 0x71, 0x01, 0xDA, 0x06, 0xCE, 0x26, 0x28, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 
55808
  0x3F, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x20, 0x69, 0x66, 0x20, 0x78, 
55809
  0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x6F, 0x6C, 0x65, 0x61, 0x6E, 0x2E, 0xDA, 0x08, 
55810
  0xDA, 0x8D, 0xE6, 0xDA, 0x8D, 0xE9, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0xA1, 
55811
  0x82, 0x5D, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xAD, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 
55812
  0x74, 0x72, 0x69, 0x6D, 0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x65, 
55813
  0x74, 0x29, 0x0A, 0x0A, 0x54, 0x72, 0x69, 0x6D, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 
55814
  0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x77, 0x68, 
55815
  0x69, 0x74, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 
55816
  0x62, 0x79, 0x74, 0x65, 0x20, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 0x65, 0x2E, 0x20, 0x49, 
55817
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x60, 
55818
  0x73, 0x65, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 
55819
  0x2C, 0x20, 0x63, 0x6F, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x72, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 
55820
  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 
55821
  0x65, 0x74, 0x60, 0x20, 0x74, 0x6F, 0x20, 0x62, 0x65, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 
55822
  0x70, 0x61, 0x63, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xEA, 0xDA, 0x8D, 0xEB, 0xD3, 0x03, 0xDA, 
55823
  0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x81, 0x1A, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x28, 0x6D, 0x61, 
55824
  0x74, 0x68, 0x2F, 0x6C, 0x6F, 0x67, 0x31, 0x30, 0x20, 0x78, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 
55825
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x6F, 0x67, 0x20, 0x62, 0x61, 0x73, 
55826
  0x65, 0x20, 0x31, 0x30, 0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 0x87, 0xDA, 
55827
  0x8D, 0xEC, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x8A, 0x24, 0x01, 0xDA, 0x06, 
55828
  0xCE, 0x6B, 0x28, 0x6F, 0x73, 0x2F, 0x70, 0x65, 0x72, 0x6D, 0x2D, 0x69, 0x6E, 0x74, 0x20, 0x62, 
55829
  0x79, 0x74, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x61, 0x20, 0x39, 
55830
  0x2D, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 0x6D, 0x69, 
55831
  0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x6E, 0x64, 
55832
  0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
55833
  0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 
55834
  0x73, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x63, 0x68, 0x6D, 0x6F, 0x64, 0x2E, 0xDA, 0x08, 0xDA, 
55835
  0x8D, 0xED, 0xDA, 0x8D, 0xEE, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x21, 0x80, 0xEA, 
55836
  0x01, 0xDA, 0x06, 0xCE, 0x4D, 0x28, 0x6D, 0x61, 0x74, 0x68, 0x2F, 0x72, 0x61, 0x6E, 0x64, 0x6F, 
55837
  0x6D, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x75, 0x6E, 
55838
  0x69, 0x66, 0x6F, 0x72, 0x6D, 0x6C, 0x79, 0x20, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 
55839
  0x74, 0x65, 0x64, 0x20, 0x72, 0x61, 0x6E, 0x64, 0x6F, 0x6D, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
55840
  0x72, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6E, 0x20, 0x30, 0x20, 0x61, 0x6E, 0x64, 0x20, 
55841
  0x31, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xEF, 0xDA, 0x8D, 0xF0, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55842
  0x00, 0xDA, 0x4C, 0x82, 0x9E, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x57, 0x28, 0x6F, 0x73, 0x2F, 0x70, 
55843
  0x72, 0x6F, 0x63, 0x2D, 0x77, 0x61, 0x69, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x29, 0x0A, 0x0A, 
55844
  0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
55845
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x75, 0x6E, 0x74, 0x69, 0x6C, 0x20, 
55846
  0x74, 0x68, 0x65, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x60, 
55847
  0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2E, 
55848
  0x20, 0x4F, 0x6E, 0x63, 0x65, 0x20, 0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x20, 0x63, 0x6F, 0x6D, 
55849
  0x70, 0x6C, 0x65, 0x74, 0x65, 0x73, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x74, 
55850
  0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x6F, 0x66, 0x20, 
55851
  0x60, 0x70, 0x72, 0x6F, 0x63, 0x60, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 
55852
  0x64, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6F, 0x6E, 0x63, 0x65, 
55853
  0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 0x63, 0x6F, 0x72, 
55854
  0x65, 0x2F, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x2C, 
55855
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x61, 0x69, 0x73, 0x65, 0x20, 0x61, 0x6E, 0x20, 0x65, 
55856
  0x72, 0x72, 0x6F, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x65, 0x6E, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 
55857
  0x69, 0x6E, 0x67, 0x20, 0x73, 0x75, 0x62, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 
55858
  0x20, 0x75, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x6F, 0x73, 0x2F, 0x73, 0x70, 0x61, 0x77, 0x6E, 
55859
  0x60, 0x2C, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 
55860
  0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 
55861
  0x64, 0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x65, 
55862
  0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x76, 0x6F, 0x69, 0x64, 
55863
  0x20, 0x7A, 0x6F, 0x6D, 0x62, 0x69, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x65, 
55864
  0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xF1, 0xDA, 0x8D, 0xF2, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
55865
  0x00, 0xDA, 0x8E, 0xBB, 0x86, 0xFB, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x85, 0x28, 0x66, 0x66, 0x69, 
55866
  0x2F, 0x63, 0x6C, 0x6F, 0x73, 0x65, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x29, 0x0A, 0x0A, 
55867
  0x46, 0x72, 0x65, 0x65, 0x20, 0x61, 0x20, 0x6E, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x6F, 0x62, 
55868
  0x6A, 0x65, 0x63, 0x74, 0x2E, 0x20, 0x44, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 
55869
  0x69, 0x6E, 0x67, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6F, 0x20, 
55870
  0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 
55871
  0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 
55872
  0x75, 0x6E, 0x64, 0x65, 0x66, 0x69, 0x6E, 0x65, 0x64, 0x20, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 
55873
  0x6F, 0x72, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x66, 0x72, 0x65, 0x65, 0x69, 0x6E, 0x67, 
55874
  0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xF3, 0xDA, 0x8D, 0xF4, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 
55875
  0xDA, 0x80, 0xA1, 0x81, 0x62, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x1F, 0x28, 0x73, 0x74, 0x72, 0x69, 
55876
  0x6E, 0x67, 0x2F, 0x66, 0x69, 0x6E, 0x64, 0x2D, 0x61, 0x6C, 0x6C, 0x20, 0x70, 0x61, 0x74, 0x74, 
55877
  0x20, 0x73, 0x74, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x2D, 
55878
  0x69, 0x6E, 0x64, 0x65, 0x78, 0x29, 0x0A, 0x0A, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x73, 
55879
  0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 
55880
  0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x60, 0x70, 
55881
  0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 
55882
  0x73, 0x74, 0x72, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x6E, 
55883
  0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 
55884
  0x64, 0x69, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x70, 
55885
  0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x2E, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 
55886
  0x70, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 
55887
  0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x61, 0x72, 
55888
  0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6E, 0x64, 0x69, 0x76, 0x69, 
55889
  0x64, 0x75, 0x61, 0x6C, 0x6C, 0x79, 0x2C, 0x20, 0x6D, 0x65, 0x61, 0x6E, 0x69, 0x6E, 0x67, 0x20, 
55890
  0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 
55891
  0x6D, 0x61, 0x79, 0x20, 0x63, 0x6F, 0x6E, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x74, 
55892
  0x6F, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x66, 0x6F, 0x75, 0x6E, 0x64, 
55893
  0x20, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6E, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xF5, 0xDA, 
55894
  0x8D, 0xF6, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x39, 0x01, 0xDA, 
55895
  0x06, 0xCE, 0x80, 0xD4, 0x28, 0x78, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x26, 
55896
  0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 0x50, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x61, 
55897
  0x20, 0x66, 0x69, 0x6C, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x20, 0x76, 
55898
  0x61, 0x6C, 0x75, 0x65, 0x20, 0x65, 0x78, 0x70, 0x6C, 0x69, 0x63, 0x69, 0x74, 0x6C, 0x79, 0x20, 
55899
  0x28, 0x6E, 0x6F, 0x20, 0x64, 0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 
55900
  0x69, 0x6E, 0x67, 0x73, 0x29, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 
55901
  0x69, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x20, 0x63, 0x68, 
55902
  0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2E, 0x20, 0x54, 0x68, 0x65, 0x20, 0x76, 0x61, 0x6C, 
55903
  0x75, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x69, 
55904
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 
55905
  0x6D, 0x65, 0x6E, 0x74, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6F, 0x74, 0x68, 
55906
  0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6D, 0x65, 0x20, 
55907
  0x61, 0x73, 0x20, 0x60, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 
55908
  0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x08, 0xDA, 0x8D, 0xF7, 0xDA, 0x8D, 0xF8, 
55909
  0xD3, 0x02, 0xDA, 0x06, 0xCE, 0x30, 0x54, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6F, 
55910
  0x6E, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
55911
  0x72, 0x75, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x70, 0x72, 
55912
  0x6F, 0x67, 0x72, 0x61, 0x6D, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 0x15, 0xDA, 0x8D, 0xF9, 0xD3, 0x03, 
55913
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x4C, 0x81, 0x0C, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC9, 0x28, 
55914
  0x6F, 0x73, 0x2F, 0x65, 0x78, 0x69, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x78, 0x20, 0x66, 
55915
  0x6F, 0x72, 0x63, 0x65, 0x29, 0x0A, 0x0A, 0x45, 0x78, 0x69, 0x74, 0x20, 0x66, 0x72, 0x6F, 0x6D, 
55916
  0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6E, 0x20, 0x65, 
55917
  0x78, 0x69, 0x74, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x74, 
55918
  0x6F, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x78, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 
55919
  0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 0x65, 0x72, 0x2C, 0x20, 0x74, 0x68, 0x65, 
55920
  0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x74, 0x61, 0x74, 0x75, 
55921
  0x73, 0x20, 0x65, 0x71, 0x75, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x61, 0x73, 0x68, 
55922
  0x20, 0x6F, 0x66, 0x20, 0x78, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x63, 0x65, 
55923
  0x60, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x20, 0x77, 0x69, 0x6C, 0x6C, 
55924
  0x20, 0x65, 0x78, 0x69, 0x74, 0x20, 0x69, 0x6D, 0x6D, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x6C, 
55925
  0x79, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6B, 0x69, 0x70, 0x20, 0x63, 0x6C, 0x65, 0x61, 0x6E, 
55926
  0x75, 0x70, 0x20, 0x63, 0x6F, 0x64, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x86, 0x59, 0xDA, 0x8D, 0xFA, 
55927
  0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8F, 0x7C, 0x82, 0x70, 0x01, 0xDA, 0x06, 0xCE, 
55928
  0x81, 0x08, 0x28, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2F, 0x6D, 0x61, 0x78, 0x73, 0x74, 0x61, 0x63, 
55929
  0x6B, 0x20, 0x66, 0x69, 0x62, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 
55930
  0x20, 0x6D, 0x61, 0x78, 0x69, 0x6D, 0x75, 0x6D, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x73, 
55931
  0x69, 0x7A, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x6A, 0x61, 0x6E, 0x65, 0x74, 0x20, 0x76, 0x61, 0x6C, 
55932
  0x75, 0x65, 0x73, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 
55933
  0x61, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x2E, 0x20, 0x57, 0x68, 0x69, 0x6C, 0x65, 0x20, 0x6D, 
55934
  0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
55935
  0x62, 0x65, 0x72, 0x27, 0x73, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x20, 0x69, 0x73, 0x20, 0x6E, 
55936
  0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x75, 0x70, 0x20, 
55937
  0x66, 0x72, 0x6F, 0x6E, 0x74, 0x2C, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 
55938
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 
55939
  0x74, 0x65, 0x64, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 
55940
  0x69, 0x73, 0x20, 0x61, 0x6D, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x77, 0x69, 
55941
  0x6C, 0x6C, 0x20, 0x74, 0x68, 0x72, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x73, 0x74, 0x61, 0x63, 0x6B, 
55942
  0x2D, 0x6F, 0x76, 0x65, 0x72, 0x66, 0x6C, 0x6F, 0x77, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x20, 
55943
  0x69, 0x66, 0x20, 0x6D, 0x6F, 0x72, 0x65, 0x20, 0x6D, 0x65, 0x6D, 0x6F, 0x72, 0x79, 0x20, 0x69, 
55944
  0x73, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x65, 0x64, 0x2E, 0x20, 0xDA, 0x08, 0xDA, 0x8D, 0xFB, 0xDA, 
55945
  0x8D, 0xFC, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x6C, 0x01, 0xDA, 0x06, 
55946
  0xCE, 0x80, 0xDD, 0x28, 0x2D, 0x3E, 0x20, 0x78, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x73, 
55947
  0x29, 0x0A, 0x0A, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x6D, 0x61, 0x63, 
55948
  0x72, 0x6F, 0x2E, 0x20, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x78, 0x20, 0x61, 0x73, 
55949
  0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x20, 0x76, 0x61, 0x6C, 0x75, 
55950
  0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 
55951
  0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x60, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x60, 0x2C, 0x20, 
55952
  0x61, 0x6E, 0x64, 0x20, 0x69, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 
55953
  0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x66, 
55954
  0x6F, 0x72, 0x6D, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x63, 
55955
  0x6F, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x0A, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
55956
  0x73, 0x61, 0x6D, 0x65, 0x20, 0x6D, 0x61, 0x6E, 0x6E, 0x65, 0x72, 0x2C, 0x20, 0x61, 0x6E, 0x64, 
55957
  0x20, 0x73, 0x6F, 0x20, 0x6F, 0x6E, 0x2E, 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6C, 0x20, 0x66, 
55958
  0x6F, 0x72, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x69, 
55959
  0x70, 0x65, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x64, 0x61, 0x74, 0x61, 0x2E, 
55960
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8D, 0xFD, 0xDA, 0x8D, 0xFF, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
55961
  0x03, 0x00, 0xDA, 0x80, 0xA1, 0x81, 0xA2, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x90, 0x28, 0x73, 0x74, 
55962
  0x72, 0x69, 0x6E, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 
55963
  0x20, 0x70, 0x61, 0x74, 0x74, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x73, 0x74, 0x72, 0x29, 
55964
  0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x69, 0x6E, 
55965
  0x73, 0x74, 0x61, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 
55966
  0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 
55967
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x60, 0x73, 0x74, 
55968
  0x72, 0x60, 0x2E, 0x20, 0x4F, 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x70, 0x69, 0x6E, 0x67, 0x20, 
55969
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 
55970
  0x20, 0x62, 0x65, 0x20, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 
55971
  0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 
55972
  0x68, 0x20, 0x69, 0x6E, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x20, 0x73, 0x70, 0x61, 0x6E, 
55973
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 
55974
  0x64, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 
55975
  0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 
55976
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 
55977
  0x69, 0x74, 0x68, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x6F, 0x6E, 0x63, 0x65, 0x20, 
55978
  0x66, 0x6F, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x2C, 0x20, 
55979
  0x61, 0x6E, 0x64, 0x20, 0x73, 0x68, 0x6F, 0x75, 0x6C, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
55980
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x63, 0x74, 0x75, 0x61, 0x6C, 0x20, 0x72, 0x65, 0x70, 
55981
  0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6F, 
55982
  0x20, 0x75, 0x73, 0x65, 0x2E, 0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 
55983
  0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
55984
  0x20, 0x69, 0x66, 0x20, 0x60, 0x70, 0x61, 0x74, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6F, 
55985
  0x75, 0x6E, 0x64, 0x2C, 0x20, 0x6F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 
55986
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 
55987
  0x86, 0xA6, 0xDA, 0x8E, 0x00, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8D, 
55988
  0x22, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xC8, 0x28, 0x65, 0x76, 0x2F, 0x63, 0x68, 0x75, 0x6E, 0x6B, 
55989
  0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D, 0x20, 0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 
55990
  0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x74, 0x69, 0x6D, 0x65, 0x6F, 0x75, 0x74, 0x29, 0x0A, 0x0A, 
55991
  0x53, 0x61, 0x6D, 0x65, 0x20, 0x61, 0x73, 0x20, 0x65, 0x76, 0x2F, 0x72, 0x65, 0x61, 0x64, 0x2C, 
55992
  0x20, 0x62, 0x75, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x72, 0x65, 
55993
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x65, 0x61, 0x72, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6C, 0x65, 
55994
  0x73, 0x73, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x6E, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 
55995
  0x61, 0x72, 0x65, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x49, 
55996
  0x66, 0x20, 0x61, 0x6E, 0x20, 0x65, 0x6E, 0x64, 0x20, 0x6F, 0x66, 0x20, 0x73, 0x74, 0x72, 0x65, 
55997
  0x61, 0x6D, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x61, 0x63, 0x68, 0x65, 0x64, 0x2C, 0x20, 0x77, 
55998
  0x69, 0x6C, 0x6C, 0x20, 0x61, 0x6C, 0x73, 0x6F, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 
55999
  0x65, 0x61, 0x72, 0x6C, 0x79, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 
56000
  0x6F, 0x6C, 0x6C, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x2E, 0xDA, 
56001
  0x08, 0xDA, 0x8E, 0x01, 0xDA, 0x8E, 0x02, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 
56002
  0x86, 0xC8, 0x01, 0xDA, 0x06, 0xCE, 0x5C, 0x28, 0x66, 0x72, 0x65, 0x71, 0x75, 0x65, 0x6E, 0x63, 
56003
  0x69, 0x65, 0x73, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x74, 0x68, 
56004
  0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 0x6F, 0x66, 0x20, 0x6F, 0x63, 0x63, 0x75, 
56005
  0x72, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 
56006
  0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x6E, 0x64, 0x65, 
56007
  0x78, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 
56008
  0x72, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x03, 0xDA, 0x8E, 0x08, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
56009
  0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x83, 0x71, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x96, 0x28, 0x66, 0x66, 
56010
  0x69, 0x2F, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 
56011
  0x69, 0x6E, 0x67, 0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x72, 
56012
  0x65, 0x74, 0x2D, 0x74, 0x79, 0x70, 0x65, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x2D, 0x74, 0x79, 
56013
  0x70, 0x65, 0x73, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x66, 
56014
  0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x73, 0x69, 0x67, 0x6E, 0x61, 0x74, 0x75, 0x72, 
56015
  0x65, 0x20, 0x6F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 
56016
  0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 
56017
  0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x72, 0x61, 0x77, 
56018
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x70, 0x6F, 0x69, 0x6E, 0x74, 0x65, 
56019
  0x72, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8B, 0x06, 0xDA, 0x8E, 0x09, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
56020
  0x03, 0x00, 0xDA, 0x04, 0x85, 0x3A, 0x01, 0xDA, 0x06, 0xCE, 0x2D, 0x57, 0x68, 0x65, 0x72, 0x65, 
56021
  0x20, 0x6E, 0x6F, 0x72, 0x6D, 0x61, 0x6C, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x66, 0x75, 
56022
  0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x20, 0x6F, 0x75, 
56023
  0x74, 0x70, 0x75, 0x74, 0x20, 0x74, 0x6F, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 
56024
  0x0A, 0xDA, 0x8E, 0x0B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x80, 0xF0, 
56025
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x90, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x69, 
56026
  0x6C, 0x6C, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x62, 
56027
  0x79, 0x74, 0x65, 0x29, 0x0A, 0x0A, 0x46, 0x69, 0x6C, 0x6C, 0x20, 0x75, 0x70, 0x20, 0x61, 0x20, 
56028
  0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x79, 0x74, 0x65, 
56029
  0x73, 0x2C, 0x20, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x6F, 
56030
  0x20, 0x30, 0x73, 0x2E, 0x20, 0x44, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x68, 
56031
  0x61, 0x6E, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x27, 
56032
  0x73, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 
56033
  0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 
56034
  0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x0C, 0xDA, 0x8E, 0x0D, 0xD3, 0x04, 
56035
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x81, 0x67, 0x01, 0xDA, 0x06, 0xCE, 0x69, 0x28, 0x77, 
56036
  0x69, 0x74, 0x68, 0x2D, 0x73, 0x79, 0x6D, 0x73, 0x20, 0x73, 0x79, 0x6D, 0x73, 0x20, 0x26, 0x20, 
56037
  0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 
56038
  0x20, 0x60, 0x62, 0x6F, 0x64, 0x79, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x61, 0x63, 
56039
  0x68, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x73, 0x79, 0x6D, 
56040
  0x73, 0x60, 0x20, 0x62, 0x6F, 0x75, 0x6E, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x67, 0x65, 
56041
  0x6E, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x2C, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x20, 
56042
  0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x0E, 0xDA, 
56043
  0x8E, 0x11, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8F, 0x68, 0x01, 0xDA, 0x06, 
56044
  0xCE, 0x80, 0xBE, 0x28, 0x64, 0x65, 0x6C, 0x61, 0x79, 0x20, 0x26, 0x20, 0x66, 0x6F, 0x72, 0x6D, 
56045
  0x73, 0x29, 0x0A, 0x0A, 0x4C, 0x61, 0x7A, 0x69, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 
56046
  0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 
56047
  0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x52, 0x65, 0x74, 
56048
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
56049
  0x74, 0x68, 0x61, 0x74, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 
56050
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 
56051
  0x6C, 0x61, 0x73, 0x74, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x2E, 
56052
  0x20, 0x57, 0x69, 0x6C, 0x6C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x65, 0x76, 0x61, 0x6C, 0x75, 
56053
  0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x6F, 0x6E, 
56054
  0x63, 0x65, 0x2C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x20, 0x6D, 0x65, 0x6D, 
56055
  0x6F, 0x69, 0x7A, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 
56056
  0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x12, 0xDA, 0x8E, 0x16, 0xD3, 0x04, 0xDA, 0x03, 
56057
  0xD2, 0x03, 0x00, 0xDA, 0x04, 0x80, 0x8E, 0x01, 0xDA, 0x06, 0xCE, 0x27, 0x28, 0x2D, 0x3D, 0x20, 
56058
  0x78, 0x20, 0x26, 0x20, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x44, 0x65, 0x63, 0x72, 0x65, 0x6D, 0x65, 
56059
  0x6E, 0x74, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x61, 0x72, 0x20, 0x78, 0x20, 0x62, 0x79, 
56060
  0x20, 0x6E, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x17, 0xDA, 0x8E, 0x19, 0xD3, 0x03, 
56061
  0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0xAA, 0x87, 0xB4, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x17, 
56062
  0x28, 0x70, 0x65, 0x67, 0x2F, 0x72, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x2D, 0x61, 0x6C, 0x6C, 
56063
  0x20, 0x70, 0x65, 0x67, 0x20, 0x73, 0x75, 0x62, 0x73, 0x74, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 
56064
  0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 
56065
  0x73, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 0x61, 0x6C, 0x6C, 0x20, 
56066
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x70, 0x65, 0x67, 0x60, 
56067
  0x20, 0x69, 0x6E, 0x20, 0x60, 0x74, 0x65, 0x78, 0x74, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 
56068
  0x60, 0x73, 0x75, 0x62, 0x73, 0x74, 0x60, 0x2C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x69, 
56069
  0x6E, 0x67, 0x20, 0x61, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
56070
  0x20, 0x54, 0x68, 0x65, 0x20, 0x70, 0x65, 0x67, 0x20, 0x64, 0x6F, 0x65, 0x73, 0x20, 0x6E, 0x6F, 
56071
  0x74, 0x20, 0x6E, 0x65, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x6D, 0x61, 0x6B, 0x65, 0x20, 0x63, 
56072
  0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x64, 0x6F, 0x20, 0x72, 0x65, 
56073
  0x70, 0x6C, 0x61, 0x63, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x73, 
56074
  0x75, 0x62, 0x73, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 
56075
  0x69, 0x6F, 0x6E, 0x2C, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 
56076
  0x63, 0x61, 0x6C, 0x6C, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 
56077
  0x6D, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x66, 0x6F, 
56078
  0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 0x61, 
56079
  0x70, 0x74, 0x75, 0x72, 0x65, 0x73, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x1A, 0xDA, 0x8E, 0x1B, 0xD3, 
56080
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0x98, 0x8C, 0xAE, 0x01, 0xDA, 0x06, 0xCE, 0x5A, 
56081
  0x28, 0x65, 0x76, 0x2F, 0x73, 0x6C, 0x65, 0x65, 0x70, 0x20, 0x73, 0x65, 0x63, 0x29, 0x0A, 0x0A, 
56082
  0x53, 0x75, 0x73, 0x70, 0x65, 0x6E, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 
56083
  0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x62, 0x65, 0x72, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x73, 0x65, 
56084
  0x63, 0x20, 0x73, 0x65, 0x63, 0x6F, 0x6E, 0x64, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 
56085
  0x74, 0x20, 0x62, 0x6C, 0x6F, 0x63, 0x6B, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 
56086
  0x76, 0x65, 0x6E, 0x74, 0x20, 0x6C, 0x6F, 0x6F, 0x70, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x1C, 0xDA, 
56087
  0x8E, 0x1D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xBB, 0x87, 0x42, 0x01, 0xDA, 
56088
  0x06, 0xCE, 0x81, 0xCF, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 
56089
  0x2D, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x29, 0x0A, 0x0A, 0x47, 
56090
  0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 0x66, 0x20, 0x61, 
56091
  0x6C, 0x6C, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 0x6C, 
56092
  0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 
56093
  0x20, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 
56094
  0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x53, 0x6F, 
56095
  0x6D, 0x65, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 
56096
  0x20, 0x6D, 0x61, 0x79, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x73, 0x6F, 0x6D, 0x65, 0x20, 0x46, 
56097
  0x46, 0x49, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 
56098
  0x20, 0x28, 0x66, 0x66, 0x69, 0x2F, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63, 0x2C, 0x20, 0x66, 0x66, 
56099
  0x69, 0x2F, 0x66, 0x72, 0x65, 0x65, 0x2C, 0x20, 0x66, 0x66, 0x69, 0x2F, 0x72, 0x65, 0x61, 0x64, 
56100
  0x2C, 0x20, 0x66, 0x66, 0x69, 0x2F, 0x77, 0x72, 0x69, 0x74, 0x65, 0x2C, 0x20, 0x65, 0x74, 0x63, 
56101
  0x2E, 0x29, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 
56102
  0x72, 0x74, 0x20, 0x61, 0x6E, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x63, 
56103
  0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x54, 0x68, 0x69, 0x73, 
56104
  0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 
56105
  0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x6C, 0x6C, 
56106
  0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 
56107
  0x6E, 0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x20, 0x74, 
56108
  0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 
56109
  0x6F, 0x6E, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 
56110
  0x74, 0x75, 0x72, 0x65, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x20, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 
56111
  0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x73, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x20, 
56112
  0x74, 0x68, 0x65, 0x20, 0x3A, 0x6E, 0x6F, 0x6E, 0x65, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 
56113
  0x67, 0x20, 0x63, 0x6F, 0x6E, 0x76, 0x65, 0x6E, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x77, 0x68, 0x69, 
56114
  0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x68, 0x6F, 0x6C, 
56115
  0x64, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 
56116
  0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x61, 0x74, 0x20, 0x72, 0x75, 0x6E, 0x74, 0x69, 
56117
  0x6D, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x1E, 0xDA, 0x8D, 0x64, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
56118
  0x03, 0x00, 0xDA, 0x04, 0x80, 0xE6, 0x01, 0xDA, 0x06, 0xCE, 0x52, 0x28, 0x69, 0x66, 0x2D, 0x6E, 
56119
  0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x68, 0x65, 
56120
  0x6E, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x65, 0x6C, 0x73, 0x65, 0x29, 0x0A, 0x0A, 0x53, 0x68, 
56121
  0x6F, 0x72, 0x74, 0x68, 0x61, 0x6E, 0x64, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x60, 0x28, 0x69, 0x66, 
56122
  0x20, 0x28, 0x6E, 0x6F, 0x74, 0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x29, 
56123
  0x20, 0x65, 0x6C, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6E, 0x29, 0x60, 0x2E, 0xDA, 0x59, 0xCB, 
56124
  0xDA, 0x08, 0xDA, 0x8E, 0x1F, 0xDA, 0x81, 0xFB, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
56125
  0x04, 0x84, 0x42, 0x01, 0xDA, 0x06, 0xCE, 0x81, 0x77, 0x28, 0x6D, 0x61, 0x70, 0x20, 0x66, 0x20, 
56126
  0x69, 0x6E, 0x64, 0x20, 0x26, 0x20, 0x69, 0x6E, 0x64, 0x73, 0x29, 0x0A, 0x0A, 0x4D, 0x61, 0x70, 
56127
  0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 
56128
  0x6F, 0x76, 0x65, 0x72, 0x20, 0x65, 0x76, 0x65, 0x72, 0x79, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
56129
  0x20, 0x69, 0x6E, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 
56130
  0x74, 0x75, 0x72, 0x65, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x0A, 0x61, 0x6E, 0x64, 0x20, 0x72, 
56131
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6F, 
56132
  0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x73, 0x2C, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6F, 
56133
  0x6E, 0x6C, 0x79, 0x20, 0x69, 0x66, 0x20, 0x6E, 0x6F, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 
56134
  0x20, 0x61, 0x72, 0x65, 0x0A, 0x70, 0x72, 0x6F, 0x76, 0x69, 0x64, 0x65, 0x64, 0x2E, 0x20, 0x4D, 
56135
  0x75, 0x6C, 0x74, 0x69, 0x70, 0x6C, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 
56136
  0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x68, 
56137
  0x61, 0x6E, 0x64, 0x6C, 0x65, 0x64, 0x20, 0x69, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x0A, 0x60, 
56138
  0x69, 0x6E, 0x64, 0x73, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 
56139
  0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x60, 0x66, 
56140
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 
56141
  0x6F, 0x66, 0x20, 0x61, 0x72, 0x69, 0x74, 0x79, 0x0A, 0x6F, 0x6E, 0x65, 0x20, 0x6D, 0x6F, 0x72, 
56142
  0x65, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 
56143
  0x72, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 0x20, 0x20, 0x54, 0x68, 
56144
  0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x72, 0x72, 0x61, 
56145
  0x79, 0x20, 0x68, 0x61, 0x73, 0x0A, 0x61, 0x20, 0x6C, 0x65, 0x6E, 0x67, 0x74, 0x68, 0x20, 0x74, 
56146
  0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x72, 0x74, 
56147
  0x65, 0x73, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x61, 0x6E, 0x64, 
56148
  0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x6F, 0x66, 0x20, 0x60, 0x69, 0x6E, 0x64, 0x73, 0x60, 0x2E, 
56149
  0xDA, 0x08, 0xDA, 0x81, 0xF8, 0xDA, 0x8E, 0x22, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
56150
  0x04, 0x87, 0x70, 0x01, 0xDA, 0x06, 0xCE, 0x3F, 0x28, 0x66, 0x69, 0x6C, 0x65, 0x2F, 0x6C, 0x69, 
56151
  0x6E, 0x65, 0x73, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 
56152
  0x6E, 0x20, 0x61, 0x6E, 0x20, 0x69, 0x74, 0x65, 0x72, 0x61, 0x74, 0x6F, 0x72, 0x20, 0x6F, 0x76, 
56153
  0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6C, 0x69, 0x6E, 0x65, 0x73, 0x20, 0x6F, 0x66, 0x20, 
56154
  0x61, 0x20, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x23, 0xDA, 0x8E, 0x26, 0xD3, 
56155
  0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x90, 0x50, 0x84, 0xE2, 0x01, 0xDA, 0x06, 0xCE, 0x82, 
56156
  0x9B, 0x28, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2F, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x70, 
56157
  0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x6B, 0x65, 0x79, 0x29, 0x0A, 
56158
  0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 
56159
  0x73, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 
56160
  0x20, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x61, 0x6C, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 
56161
  0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x2E, 0x20, 0x49, 
56162
  0x66, 0x20, 0x61, 0x20, 0x6B, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x70, 0x61, 0x73, 0x73, 0x65, 
56163
  0x64, 0x2C, 0x20, 0x6F, 0x6E, 0x6C, 0x79, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x6E, 0x66, 
56164
  0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x74, 
56165
  0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 
56166
  0x72, 0x6E, 0x65, 0x64, 0x2E, 0x20, 0x41, 0x6C, 0x6C, 0x6F, 0x77, 0x65, 0x64, 0x20, 0x6B, 0x65, 
56167
  0x79, 0x73, 0x20, 0x61, 0x72, 0x65, 0x3A, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x64, 0x65, 0x6C, 0x69, 
56168
  0x6D, 0x69, 0x74, 0x65, 0x72, 0x73, 0x20, 0x2D, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x62, 0x79, 
56169
  0x74, 0x65, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
56170
  0x20, 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x6E, 0x65, 
56171
  0x73, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 
56172
  0x75, 0x72, 0x65, 0x2E, 0x20, 0x46, 0x6F, 0x72, 0x20, 0x65, 0x78, 0x61, 0x6D, 0x70, 0x6C, 0x65, 
56173
  0x2C, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 
56174
  0x73, 0x74, 0x61, 0x74, 0x65, 0x20, 0x69, 0x73, 0x20, 0x27, 0x28, 0x5B, 0x22, 0x27, 0x2C, 0x20, 
56175
  0x74, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, 
56176
  0x69, 0x73, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x69, 0x64, 0x64, 0x6C, 0x65, 
56177
  0x20, 0x6F, 0x66, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x73, 0x74, 
56178
  0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x73, 
56179
  0x71, 0x75, 0x61, 0x72, 0x65, 0x20, 0x62, 0x72, 0x61, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x69, 
56180
  0x6E, 0x73, 0x69, 0x64, 0x65, 0x20, 0x70, 0x61, 0x72, 0x65, 0x6E, 0x74, 0x68, 0x65, 0x73, 0x65, 
56181
  0x73, 0x2E, 0x20, 0x43, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 
56182
  0x6F, 0x20, 0x61, 0x75, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x20, 0x52, 0x45, 0x50, 0x4C, 
56183
  0x20, 0x70, 0x72, 0x6F, 0x6D, 0x70, 0x74, 0x2E, 0x0A, 0x0A, 0x2A, 0x20, 0x3A, 0x66, 0x72, 0x61, 
56184
  0x6D, 0x65, 0x73, 0x20, 0x2D, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 
56185
  0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x72, 0x65, 
56186
  0x70, 0x72, 0x65, 0x73, 0x65, 0x6E, 0x74, 0x73, 0x20, 0x61, 0x20, 0x27, 0x66, 0x72, 0x61, 0x6D, 
56187
  0x65, 0x27, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 
56188
  0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x2E, 0x20, 0x46, 0x72, 0x61, 0x6D, 0x65, 0x73, 0x20, 0x63, 
56189
  0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 
56190
  0x6F, 0x6E, 0x20, 0x61, 0x62, 0x6F, 0x75, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, 
56191
  0x72, 0x74, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 
56192
  0x73, 0x69, 0x6F, 0x6E, 0x20, 0x62, 0x65, 0x69, 0x6E, 0x67, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 
56193
  0x64, 0x20, 0x61, 0x73, 0x20, 0x77, 0x65, 0x6C, 0x6C, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 
56194
  0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x78, 
56195
  0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x73, 0x6F, 0x6D, 
56196
  0x65, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2D, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 
56197
  0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0xDA, 0x08, 0xDA, 0x89, 
56198
  0xC1, 0xDA, 0x8E, 0x27, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x95, 0x81, 0x96, 
56199
  0x01, 0xDA, 0x06, 0xCE, 0x82, 0x1C, 0x28, 0x6E, 0x65, 0x74, 0x2F, 0x61, 0x64, 0x64, 0x72, 0x65, 
56200
  0x73, 0x73, 0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x26, 0x6F, 0x70, 
56201
  0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x29, 0x0A, 0x0A, 0x4C, 
56202
  0x6F, 0x6F, 0x6B, 0x20, 0x75, 0x70, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 
56203
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 
56204
  0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x68, 0x6F, 
56205
  0x73, 0x74, 0x6E, 0x61, 0x6D, 0x65, 0x2C, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x2C, 0x20, 0x61, 0x6E, 
56206
  0x64, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x79, 0x70, 
56207
  0x65, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x68, 0x61, 0x6E, 
56208
  0x64, 0x6C, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x62, 0x65, 0x20, 
56209
  0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6F, 0x20, 0x73, 0x65, 0x6E, 0x64, 0x20, 0x64, 0x61, 0x74, 
56210
  0x61, 0x67, 0x72, 0x61, 0x6D, 0x73, 0x20, 0x6F, 0x76, 0x65, 0x72, 0x20, 0x6E, 0x65, 0x74, 0x77, 
56211
  0x6F, 0x72, 0x6B, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6F, 0x75, 0x74, 0x20, 0x65, 0x73, 0x74, 0x61, 
56212
  0x62, 0x6C, 0x69, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 
56213
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x2E, 0x20, 0x4F, 0x6E, 0x20, 0x50, 0x6F, 0x73, 0x69, 0x78, 0x20, 
56214
  0x70, 0x6C, 0x61, 0x74, 0x66, 0x6F, 0x72, 0x6D, 0x73, 0x2C, 0x20, 0x79, 0x6F, 0x75, 0x20, 0x63, 
56215
  0x61, 0x6E, 0x20, 0x75, 0x73, 0x65, 0x20, 0x3A, 0x75, 0x6E, 0x69, 0x78, 0x20, 0x66, 0x6F, 0x72, 
56216
  0x20, 0x68, 0x6F, 0x73, 0x74, 0x20, 0x74, 0x6F, 0x20, 0x63, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 
56217
  0x20, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x75, 0x6E, 0x69, 0x78, 0x20, 0x64, 0x6F, 0x6D, 0x61, 0x69, 
56218
  0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x2C, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 
56219
  0x74, 0x68, 0x65, 0x20, 0x6E, 0x61, 0x6D, 0x65, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 0x76, 0x65, 
56220
  0x6E, 0x20, 0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x6F, 0x72, 0x74, 0x20, 0x61, 0x72, 
56221
  0x67, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x2E, 0x20, 0x4F, 0x6E, 0x20, 0x4C, 0x69, 0x6E, 0x75, 0x78, 
56222
  0x2C, 0x20, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x20, 0x75, 0x6E, 0x69, 0x78, 0x20, 
56223
  0x64, 0x6F, 0x6D, 0x61, 0x69, 0x6E, 0x20, 0x73, 0x6F, 0x63, 0x6B, 0x65, 0x74, 0x73, 0x20, 0x61, 
56224
  0x72, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 
56225
  0x68, 0x20, 0x61, 0x20, 0x6C, 0x65, 0x61, 0x64, 0x69, 0x6E, 0x67, 0x20, 0x27, 0x40, 0x27, 0x20, 
56226
  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x70, 0x6F, 0x72, 
56227
  0x74, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 0x6D, 0x75, 0x6C, 0x74, 0x69, 0x60, 0x20, 0x69, 0x73, 
56228
  0x20, 0x74, 0x72, 0x75, 0x74, 0x68, 0x79, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 
56229
  0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x6C, 0x6C, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 
56230
  0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6D, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, 0x6E, 0x20, 0x61, 
56231
  0x6E, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x6E, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 
56232
  0x6F, 0x66, 0x20, 0x6A, 0x75, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 
56233
  0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x28, 0xDA, 0x8E, 0x29, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
56234
  0x00, 0xDA, 0x04, 0x83, 0xCA, 0x01, 0xDA, 0x06, 0xCE, 0x72, 0x28, 0x73, 0x6F, 0x72, 0x74, 0x2D, 
56235
  0x62, 0x79, 0x20, 0x66, 0x20, 0x69, 0x6E, 0x64, 0x29, 0x0A, 0x0A, 0x53, 0x6F, 0x72, 0x74, 0x73, 
56236
  0x20, 0x60, 0x69, 0x6E, 0x64, 0x60, 0x20, 0x69, 0x6E, 0x2D, 0x70, 0x6C, 0x61, 0x63, 0x65, 0x20, 
56237
  0x62, 0x79, 0x20, 0x63, 0x61, 0x6C, 0x6C, 0x69, 0x6E, 0x67, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6E, 
56238
  0x63, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x60, 0x66, 0x60, 0x20, 0x6F, 0x6E, 0x20, 0x65, 0x61, 0x63, 
56239
  0x68, 0x20, 0x65, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 0x20, 0x61, 0x6E, 0x64, 0x0A, 0x63, 0x6F, 
56240
  0x6D, 0x70, 0x61, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x75, 
56241
  0x6C, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x3C, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 
56242
  0x2A, 0xDA, 0x8C, 0xE2, 0xDA, 0x8D, 0x62, 0xDA, 0x8E, 0x2D, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
56243
  0x00, 0xDA, 0x91, 0x87, 0x80, 0xC9, 0x01, 0xDA, 0x06, 0xCE, 0x58, 0x28, 0x69, 0x6E, 0x74, 0x2F, 
56244
  0x75, 0x36, 0x34, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x29, 0x0A, 0x0A, 0x43, 0x72, 0x65, 0x61, 
56245
  0x74, 0x65, 0x20, 0x61, 0x20, 0x62, 0x6F, 0x78, 0x65, 0x64, 0x20, 0x75, 0x6E, 0x73, 0x69, 0x67, 
56246
  0x6E, 0x65, 0x64, 0x20, 0x36, 0x34, 0x20, 0x62, 0x69, 0x74, 0x20, 0x69, 0x6E, 0x74, 0x65, 0x67, 
56247
  0x65, 0x72, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
56248
  0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x6F, 0x72, 0x20, 0x61, 0x20, 0x6E, 0x75, 0x6D, 0x62, 
56249
  0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x2E, 0xDA, 0x83, 0xFE, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 
56250
  0x03, 0x00, 0xDA, 0x04, 0x80, 0xEB, 0x01, 0xDA, 0x06, 0xCE, 0x5E, 0x28, 0x77, 0x68, 0x65, 0x6E, 
56251
  0x20, 0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 
56252
  0x79, 0x29, 0x0A, 0x0A, 0x45, 0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 
56253
  0x65, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x20, 0x77, 0x68, 0x65, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 
56254
  0x63, 0x6F, 0x6E, 0x64, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x69, 0x73, 0x20, 0x74, 0x72, 0x75, 
56255
  0x65, 0x2E, 0x20, 0x4F, 0x74, 0x68, 0x65, 0x72, 0x77, 0x69, 0x73, 0x65, 0x20, 0x72, 0x65, 0x74, 
56256
  0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 
56257
  0x2F, 0xDA, 0x8E, 0x31, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x80, 0x8F, 0x82, 0x8B, 
56258
  0x01, 0xDA, 0x06, 0xCE, 0x80, 0x87, 0x28, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2F, 0x66, 0x6F, 
56259
  0x72, 0x6D, 0x61, 0x74, 0x2D, 0x61, 0x74, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x61, 
56260
  0x74, 0x20, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x20, 0x26, 0x20, 0x61, 0x72, 0x67, 0x73, 0x29, 
56261
  0x0A, 0x0A, 0x53, 0x6E, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x66, 0x20, 0x6C, 0x69, 0x6B, 0x65, 0x20, 
56262
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x61, 0x6C, 0x69, 0x74, 0x79, 0x20, 0x66, 0x6F, 
56263
  0x72, 0x20, 0x70, 0x72, 0x69, 0x6E, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 
56264
  0x73, 0x20, 0x69, 0x6E, 0x74, 0x6F, 0x20, 0x61, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 
56265
  0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6D, 0x6F, 0x64, 
56266
  0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x2E, 0xDA, 0x08, 0xDA, 
56267
  0x8E, 0x32, 0xDA, 0x8E, 0x33, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x82, 0x3D, 
56268
  0x01, 0xDA, 0x06, 0xCE, 0x4B, 0x28, 0x65, 0x61, 0x63, 0x68, 0x70, 0x20, 0x78, 0x20, 0x64, 0x73, 
56269
  0x20, 0x26, 0x20, 0x62, 0x6F, 0x64, 0x79, 0x29, 0x0A, 0x0A, 0x4C, 0x6F, 0x6F, 0x70, 0x20, 0x6F, 
56270
  0x76, 0x65, 0x72, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x28, 0x6B, 0x65, 0x79, 0x2C, 0x20, 0x76, 
56271
  0x61, 0x6C, 0x75, 0x65, 0x29, 0x20, 0x70, 0x61, 0x69, 0x72, 0x20, 0x69, 0x6E, 0x20, 0x60, 0x64, 
56272
  0x73, 0x60, 0x2E, 0x20, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x6E, 0x69, 0x6C, 0x2E, 
56273
  0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x34, 0xDA, 0x8E, 0x36, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 
56274
  0x03, 0x00, 0xDA, 0x4C, 0x81, 0x24, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0xA6, 0x28, 0x6F, 0x73, 0x2F, 
56275
  0x63, 0x70, 0x75, 0x2D, 0x63, 0x6F, 0x75, 0x6E, 0x74, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x64, 
56276
  0x66, 0x6C, 0x74, 0x29, 0x0A, 0x0A, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6E, 0x20, 0x61, 0x70, 0x70, 
56277
  0x72, 0x6F, 0x78, 0x69, 0x6D, 0x61, 0x74, 0x65, 0x20, 0x6E, 0x75, 0x6D, 0x62, 0x65, 0x72, 0x20, 
56278
  0x6F, 0x66, 0x20, 0x43, 0x50, 0x55, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 
56279
  0x65, 0x20, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 
56280
  0x6F, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x75, 0x73, 0x65, 0x2E, 0x20, 0x49, 0x66, 
56281
  0x20, 0x75, 0x6E, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x74, 0x6F, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 
56282
  0x6E, 0x20, 0x61, 0x70, 0x70, 0x72, 0x6F, 0x78, 0x69, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x2C, 
56283
  0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x20, 0x61, 0x20, 0x64, 
56284
  0x65, 0x66, 0x61, 0x75, 0x6C, 0x74, 0x20, 0x76, 0x61, 0x6C, 0x75, 0x65, 0x20, 0x64, 0x66, 0x6C, 
56285
  0x74, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x37, 0xDA, 0x8E, 0x38, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 
56286
  0x00, 0xDA, 0x04, 0x89, 0xB3, 0x01, 0xDA, 0x06, 0xCE, 0x2E, 0x50, 0x61, 0x74, 0x68, 0x20, 0x6F, 
56287
  0x66, 0x20, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x6F, 0x72, 0x79, 0x20, 0x74, 0x6F, 0x20, 0x6C, 
56288
  0x6F, 0x61, 0x64, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x20, 0x6D, 0x6F, 0x64, 0x75, 0x6C, 
56289
  0x65, 0x73, 0x20, 0x66, 0x72, 0x6F, 0x6D, 0x2E, 0xDA, 0x86, 0x68, 0xCB, 0xDA, 0x08, 0xDA, 0x81, 
56290
  0x25, 0xDA, 0x8E, 0x39, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x8E, 0xDE, 0x81, 0x6B, 
56291
  0x01, 0xDA, 0x06, 0xCE, 0x5B, 0x28, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2F, 0x73, 0x65, 0x74, 0x70, 
56292
  0x72, 0x6F, 0x74, 0x6F, 0x20, 0x74, 0x61, 0x62, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x29, 0x0A, 
56293
  0x0A, 0x53, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6F, 0x74, 0x6F, 0x74, 0x79, 
56294
  0x70, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x2E, 0x20, 0x52, 
56295
  0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6F, 0x72, 0x69, 0x67, 0x69, 
56296
  0x6E, 0x61, 0x6C, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x60, 0x74, 0x61, 0x62, 0x60, 0x2E, 
56297
  0xDA, 0x08, 0xDA, 0x81, 0x9C, 0xDA, 0x8E, 0x3A, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 
56298
  0x80, 0xA1, 0x81, 0x52, 0x01, 0xDA, 0x06, 0xCE, 0x42, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
56299
  0x2F, 0x68, 0x61, 0x73, 0x2D, 0x73, 0x75, 0x66, 0x66, 0x69, 0x78, 0x3F, 0x20, 0x73, 0x66, 0x78, 
56300
  0x20, 0x73, 0x74, 0x72, 0x29, 0x0A, 0x0A, 0x54, 0x65, 0x73, 0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 
56301
  0x74, 0x68, 0x65, 0x72, 0x20, 0x60, 0x73, 0x74, 0x72, 0x60, 0x20, 0x65, 0x6E, 0x64, 0x73, 0x20, 
56302
  0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x73, 0x66, 0x78, 0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x81, 0xF4, 
56303
  0xDA, 0x8E, 0x3B, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x85, 0x1B, 0x01, 0xDA, 
56304
  0x06, 0xCE, 0x7F, 0x28, 0x6A, 0x75, 0x78, 0x74, 0x2A, 0x20, 0x26, 0x20, 0x66, 0x75, 0x6E, 0x73, 
56305
  0x29, 0x0A, 0x0A, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6E, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6A, 
56306
  0x75, 0x78, 0x74, 0x61, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x6F, 0x66, 0x20, 
56307
  0x66, 0x75, 0x6E, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x73, 0x2E, 0x20, 0x49, 0x6E, 0x20, 0x6F, 0x74, 
56308
  0x68, 0x65, 0x72, 0x20, 0x77, 0x6F, 0x72, 0x64, 0x73, 0x2C, 0x0A, 0x60, 0x28, 0x28, 0x6A, 0x75, 
56309
  0x78, 0x74, 0x2A, 0x20, 0x61, 0x20, 0x62, 0x20, 0x63, 0x29, 0x20, 0x78, 0x29, 0x60, 0x20, 0x65, 
56310
  0x76, 0x61, 0x6C, 0x75, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x6F, 0x20, 0x60, 0x5B, 0x28, 0x61, 
56311
  0x20, 0x78, 0x29, 0x20, 0x28, 0x62, 0x20, 0x78, 0x29, 0x20, 0x28, 0x63, 0x20, 0x78, 0x29, 0x5D, 
56312
  0x60, 0x2E, 0xDA, 0x08, 0xDA, 0x8E, 0x3C, 0xDA, 0x8E, 0x40, 0xD3, 0x03, 0xDA, 0x03, 0xD2, 0x03, 
56313
  0x00, 0xDA, 0x8E, 0xD1, 0x82, 0x95, 0x01, 0xDA, 0x06, 0xCE, 0x80, 0x80, 0x28, 0x65, 0x70, 0x72, 
56314
  0x69, 0x6E, 0x74, 0x66, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x26, 0x20, 0x78, 0x73, 0x29, 0x0A, 0x0A, 
56315
  0x50, 0x72, 0x69, 0x6E, 0x74, 0x73, 0x20, 0x6F, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x6F, 
56316
  0x72, 0x6D, 0x61, 0x74, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x69, 0x66, 0x20, 0x77, 0x69, 
56317
  0x74, 0x68, 0x20, 0x60, 0x28, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x2F, 0x66, 0x6F, 0x72, 0x6D, 
56318
  0x61, 0x74, 0x20, 0x66, 0x6D, 0x74, 0x20, 0x3B, 0x78, 0x73, 0x29, 0x60, 0x20, 0x74, 0x6F, 0x20, 
56319
  0x60, 0x28, 0x64, 0x79, 0x6E, 0x20, 0x3A, 0x65, 0x72, 0x72, 0x20, 0x73, 0x74, 0x64, 0x65, 0x72, 
56320
  0x72, 0x29, 0x60, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6C, 
56321
  0x69, 0x6E, 0x67, 0x20, 0x6E, 0x65, 0x77, 0x6C, 0x69, 0x6E, 0x65, 0x2E, 0xDA, 0x08, 0xDA, 0x84, 
56322
  0x60, 0xDA, 0x8E, 0x41, 0xD3, 0x04, 0xDA, 0x03, 0xD2, 0x03, 0x00, 0xDA, 0x04, 0x8D, 0xF8, 0x01, 
56323
  0xDA, 0x06, 0xCE, 0x81, 0x60, 0x28, 0x64, 0x6F, 0x63, 0x20, 0x26, 0x6F, 0x70, 0x74, 0x20, 0x73, 
56324
  0x79, 0x6D, 0x29, 0x0A, 0x0A, 0x53, 0x68, 0x6F, 0x77, 0x73, 0x20, 0x64, 0x6F, 0x63, 0x75, 0x6D, 
56325
  0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 0x68, 0x65, 
56326
  0x20, 0x67, 0x69, 0x76, 0x65, 0x6E, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x6F, 
56327
  0x72, 0x20, 0x63, 0x61, 0x6E, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x61, 0x20, 0x6C, 0x69, 0x73, 
56328
  0x74, 0x20, 0x6F, 0x66, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6C, 0x61, 0x62, 0x6C, 0x65, 0x20, 0x62, 
56329
  0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x2E, 0x0A, 0x49, 0x66, 0x20, 0x60, 0x73, 0x79, 0x6D, 
56330
  0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2C, 0x20, 0x77, 
56331
  0x69, 0x6C, 0x6C, 0x20, 0x6C, 0x6F, 0x6F, 0x6B, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x64, 0x6F, 0x63, 
56332
  0x75, 0x6D, 0x65, 0x6E, 0x74, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x66, 0x6F, 0x72, 0x20, 0x74, 
56333
  0x68, 0x61, 0x74, 0x20, 0x73, 0x79, 0x6D, 0x62, 0x6F, 0x6C, 0x2E, 0x20, 0x49, 0x66, 0x20, 0x60, 
56334
  0x73, 0x79, 0x6D, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 
56335
  0x0A, 0x6F, 0x72, 0x20, 0x69, 0x73, 0x20, 0x6E, 0x6F, 0x74, 0x20, 0x70, 0x72, 0x6F, 0x76, 0x69, 
56336
  0x64, 0x65, 0x64, 0x2C, 0x20, 0x77, 0x69, 0x6C, 0x6C, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x20, 0x61, 
56337
  0x6C, 0x6C, 0x20, 0x6C, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6C, 0x20, 0x61, 0x6E, 0x64, 0x20, 0x64, 
56338
  0x79, 0x6E, 0x61, 0x6D, 0x69, 0x63, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
56339
  0x69, 0x6E, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x65, 
56340
  0x6E, 0x76, 0x69, 0x72, 0x6F, 0x6E, 0x6D, 0x65, 0x6E, 0x74, 0x0A, 0x63, 0x6F, 0x6E, 0x74, 0x61, 
56341
  0x69, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 
56342
  0x67, 0x20, 0x28, 0x61, 0x6C, 0x6C, 0x20, 0x62, 0x69, 0x6E, 0x64, 0x69, 0x6E, 0x67, 0x73, 0x20, 
56343
  0x77, 0x69, 0x6C, 0x6C, 0x20, 0x62, 0x65, 0x20, 0x73, 0x68, 0x6F, 0x77, 0x6E, 0x20, 0x69, 0x66, 
56344
  0x20, 0x6E, 0x6F, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x20, 0x69, 0x73, 0x20, 0x67, 0x69, 
56345
  0x76, 0x65, 0x6E, 0x29, 0x2E, 0xDA, 0x59, 0xCB, 0xDA, 0x08, 0xDA, 0x8E, 0x42, 
56346
  0
56347
};
56348
56349
const unsigned char *janet_core_image = janet_core_image_bytes;
56350
size_t janet_core_image_size = sizeof(janet_core_image_bytes);