Reference, Resources and Data

Nature Protocols volume 8, pages 1494-1512 (2013)

Machine: CentOS Linux 7 on Virtual Box

Starting directory and subdirectory contents

Note that the S_pombe_refTrans.fasta and samples_n_reads_described.txt won’t be used for de novo assembly.

Now the contents are in different working working directory: trinity2

trinity2$ ls -l

-rw-rw-r– 1 ubuntu ubuntu 703222969 Mar 4 23:53 ALL.LEFT.fq

-rw-rw-r– 1 ubuntu ubuntu 703222969 Mar 4 23:54 ALL.RIGHT.fq

-rw-rw-r– 1 ubuntu ubuntu 175846179 Feb 6 2013 Sp.ds.1M.left.fq

-rw-rw-r– 1 ubuntu ubuntu 175846179 Feb 6 2013 Sp.ds.1M.right.fq

-rw-rw-r– 1 ubuntu ubuntu 175736042 Feb 6 2013 Sp.hs.1M.left.fq

-rw-rw-r– 1 ubuntu ubuntu 175736042 Feb 6 2013 Sp.hs.1M.right.fq

-rw-rw-r– 1 ubuntu ubuntu 175741215 Feb 6 2013 Sp.log.1M.left.fq

-rw-rw-r– 1 ubuntu ubuntu 175741215 Feb 6 2013 Sp.log.1M.right.fq

-rw-rw-r– 1 ubuntu ubuntu 175899533 Feb 6 2013 Sp.plat.1M.left.fq

-rw-rw-r– 1 ubuntu ubuntu 175899533 Feb 6 2013 Sp.plat.1M.right.fq

trinity2$ ls -l trinity_out_dir/

-rw-rw-r– 1 ubuntu ubuntu 9882912 Mar 24 21:09 Trinity.fasta

-rw-rw-r– 1 ubuntu ubuntu 414104 Mar 24 21:09 Trinity.fasta.gene_trans_map

-rw-rw-r– 1 ubuntu ubuntu 656 Mar 24 21:09 Trinity.timing

-rw-rw-r– 1 ubuntu ubuntu 411748816 Mar 24 18:18 both.fa

-rw-rw-r– 1 ubuntu ubuntu 0 Mar 24 18:18 both.fa.ok

-rw-rw-r– 1 ubuntu ubuntu 8 Mar 24 18:18 both.fa.read_count

drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 24 18:29 chrysalis

-rw-rw-r– 1 ubuntu ubuntu 15101793 Mar 24 18:23 inchworm.K25.L25.fa

-rw-rw-r– 1 ubuntu ubuntu 0 Mar 24 18:23 inchworm.K25.L25.fa.finished

-rw-rw-r– 1 ubuntu ubuntu 9 Mar 24 18:20 inchworm.kmer_count

drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 24 18:18 insilico_read_normalization

-rw-rw-r– 1 ubuntu ubuntu 971810373 Mar 24 18:19 jellyfish.kmers.fa

-rw-rw-r– 1 ubuntu ubuntu 1863 Mar 24 18:19 jellyfish.kmers.fa.histo

-rw-rw-r– 1 ubuntu ubuntu 0 Mar 24 18:18 left.fa.ok

-rw-rw-r– 1 ubuntu ubuntu 830570 Mar 24 18:29 partitioned_reads.files.list

-rw-rw-r– 1 ubuntu ubuntu 0 Mar 24 18:29 partitioned_reads.files.list.ok

-rw-rw-r– 1 ubuntu ubuntu 2134 Mar 24 18:29 pipeliner.10579.cmds

-rw-rw-r– 1 ubuntu ubuntu 2134 Mar 24 20:54 pipeliner.16726.cmds

drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 24 18:29 read_partitions

-rw-rw-r– 1 ubuntu ubuntu 2944084 Mar 24 18:29 recursive_trinity.cmds

-rw-rw-r– 1 ubuntu ubuntu 2944084 Mar 24 21:09 recursive_trinity.cmds.completed

-rw-rw-r– 1 ubuntu ubuntu 0 Mar 24 18:29 recursive_trinity.cmds.ok

-rw-rw-r– 1 ubuntu ubuntu 0 Mar 24 18:18 right.fa.ok

-rw-rw-r– 1 ubuntu ubuntu 1042464724 Mar 24 18:26 scaffolding_entries.sam

Align and estimate abundance

Running built-in trtinity PERL scripts (using CentOS 7 and working directory: trinity2) to map original reads to the transcripts and use RSEM to do abundance estimates for newly assembled transcripts

trinity2$ align_and_estimate_abundance.pl –prep_reference –seqType fq –est_method RSEM –aln_method bowtie –left Sp.ds.left.fq.gz –right Sp.ds.right.fq.gz –transcripts trinity_out_dir/Trinity.fasta –output_dir Sp_ds

some log readouts

CMD: touch /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie.started

CMD: bowtie-build /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie

Settings:

Output files: "/home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie.*.ebwt"

Line rate: 6 (line is 64 bytes)

Lines per side: 1 (side is 64 bytes)

Offset rate: 5 (one in 32)

FTable chars: 10

Strings: unpacked

Max bucket size: default

Max bucket size, sqrt multiplier: default

Max bucket size, len divisor: 4

Difference-cover sample period: 1024

Endianness: little

Actual local endianness: little

Sanity checking: disabled

Assertions: disabled

Random seed: 0

Sizeofs: void*:8, int:4, long:8, size_t:8

Input files DNA, FASTA:

/home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta

Reading reference sizes Time reading reference sizes: 00:00:01

Calculating joined length Writing header Reserving space for joined string

Joining reference sequences Time to join reference sequences: 00:00:00 bmax according to bmaxDivN setting: 2347743

Using parameters –bmax 1760808 –dcv 1024 Doing ahead-of-time memory usage test Passed! Constructing with these parameters: –bmax 1760808 –dcv 1024

Constructing suffix-array element generator

Building DifferenceCoverSample Building sPrime Building sPrimeOrder V-Sorting samples V-Sorting samples time: 00:00:00 Allocating rank array Ranking v-sort output Ranking v-sort output time: 00:00:01 Invoking Larsson-Sadakane on ranks Invoking Larsson-Sadakane on ranks time: 00:00:00 Sanity-checking and returning

Building samples Reserving space for 12 sample suffixes Generating random suffixes QSorting 12 sample offsets, eliminating duplicates QSorting sample offsets, eliminating duplicates time: 00:00:00

Multikey QSorting 12 samples (Using difference cover) Multikey QSorting samples time: 00:00:00

Calculating bucket sizes

Splitting and merging Splitting and merging time: 00:00:00

Avg bucket size: 9.39098e+06 (target: 1760807) Converting suffix-array elements to index image

Allocating ftab, absorbFtab

Entering Ebwt loop

Getting block 1 of 1 No samples; assembling all-inclusive block Sorting block of length 9390975 for bucket 1 (Using difference cover) Sorting block time: 00:00:03

Returning block of 9390976 for bucket 1

Exited Ebwt loop

fchr[A]: 0 fchr[C]: 2781883 fchr[G]: 4577758 fchr[T]: 6357694 fchr[$]: 9390975

Exiting Ebwt::buildToDisk()

Returning from initFromVector

Wrote 7499008 bytes to primary EBWT file: /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie.1.ebwt

Wrote 1173876 bytes to secondary EBWT file: /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie.2.ebwt

Re-opening _in1 and _in2 as input streams Returning from Ebwt constructor

Headers: len: 9390975 bwtLen: 9390976 sz: 2347744 bwtSz: 2347744 lineRate: 6 linesPerSide: 1 offRate: 5 offMask: 0xffffffe0 isaRate: -1 isaMask: 0xffffffff ftabChars: 10 eftabLen: 20 eftabSz: 80 ftabLen: 1048577 ftabSz: 4194308 offsLen: 293468 offsSz: 1173872 isaLen: 0 isaSz: 0 lineSz: 64 sideSz: 64 sideBwtSz: 56 sideBwtLen: 224 numSidePairs: 20962 numSides: 41924 numLines: 41924 ebwtTotLen: 2683136 ebwtTotSz: 2683136 reverse: 0

Total time for call to driver() for forward index: 00:00:06

Reading reference sizes Time reading reference sizes: 00:00:00

Calculating joined length Writing header Reserving space for joined string

Joining reference sequences Time to join reference sequences: 00:00:01

bmax according to bmaxDivN setting: 2347743

Using parameters –bmax 1760808 –dcv 1024 Doing ahead-of-time memory usage test Passed! Constructing with these parameters: –bmax 1760808 –dcv 1024

Constructing suffix-array element generator

Building DifferenceCoverSample Building sPrime Building sPrimeOrder V-Sorting samples V-Sorting samples time: 00:00:00 Allocating rank array Ranking v-sort output Ranking v-sort output time: 00:00:00 Invoking Larsson-Sadakane on ranks Invoking Larsson-Sadakane on ranks time: 00:00:00 Sanity-checking and returning

Building samples Reserving space for 12 sample suffixes Generating random suffixes QSorting 12 sample offsets, eliminating duplicates QSorting sample offsets, eliminating duplicates time: 00:00:00

Multikey QSorting 12 samples (Using difference cover) Multikey QSorting samples time: 00:00:00

Calculating bucket sizes

Splitting and merging Splitting and merging time: 00:00:00 Avg bucket size: 9.39098e+06 (target: 1760807)

Converting suffix-array elements to index image Allocating ftab, absorbFtab Entering Ebwt loop

Getting block 1 of 1 No samples; assembling all-inclusive block Sorting block of length 9390975 for bucket 1 (Using difference cover) Sorting block time: 00:00:03

Returning block of 9390976 for bucket 1

Exited Ebwt loop

fchr[A]: 0 fchr[C]: 2781883 fchr[G]: 4577758 fchr[T]: 6357694 fchr[$]: 9390975 Exiting Ebwt::buildToDisk() Returning from initFromVector

Wrote 7499008 bytes to primary EBWT file: /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie.rev.1.ebwt

Wrote 1173876 bytes to secondary EBWT file: /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie.rev.2.ebwt

Re-opening _in1 and _in2 as input streams Returning from Ebwt constructor

Headers: len: 9390975 bwtLen: 9390976 sz: 2347744 bwtSz: 2347744 lineRate: 6 linesPerSide: 1 offRate: 5 offMask: 0xffffffe0 isaRate: -1 isaMask: 0xffffffff ftabChars: 10 eftabLen: 20 eftabSz: 80 ftabLen: 1048577 ftabSz: 4194308 offsLen: 293468 offsSz: 1173872 isaLen: 0 isaSz: 0 lineSz: 64 sideSz: 64 sideBwtSz: 56 sideBwtLen: 224 numSidePairs: 20962 numSides: 41924 numLines: 41924 ebwtTotLen: 2683136 ebwtTotSz: 2683136 reverse: 0

Total time for backward call to driver() for mirror index: 00:00:06

CMD: touch /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM.rsem.prepped.started

CMD: rsem-prepare-reference /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM rsem-synthesis-reference-transcripts /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM 0 0 /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta

Transcript Information File is generated!

Group File is generated!

Extracted Sequences File is generated!

rsem-preref /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM.transcripts.fa 1 /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM

Refs.makeRefs finished!

Refs.saveRefs finished!

/home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM.idx.fa is generated! /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM.n2g.idx.fa is generated!

$VAR1 = [ { ‘output_dir’ => ‘Sp_ds’, ‘right’ => ‘/home/bdash/Desktop/trinity2/Sp.ds.1M.right.fq’, ‘left’ => ‘/home/bdash/Desktop/trinity2/Sp.ds.1M.left.fq’ } ];

CMD: set -o pipefail && bowtie -q –all –best –strata -m 300 –chunkmbs 512 -X 800 -S -p 4 /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.bowtie -1 /home/bdash/Desktop/trinity2/Sp.ds.1M.left.fq -2 /home/bdash/Desktop/trinity2/Sp.ds.1M.right.fq | samtools view -F 4 -S -b -o bowtie.bam -

# reads processed: 1000000

# reads with at least one reported alignment: 904300 (90.43%)

# reads that failed to align: 95700 (9.57%)

Reported 1038742 paired-end alignments

CMD: touch bowtie.bam.ok

CMD: rsem-calculate-expression –paired-end -p 4 –no-bam-output –bam bowtie.bam /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM RSEM rsem-parse-alignments /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM RSEM.temp/RSEM RSEM.stat/RSEM bowtie.bam 3 -tag XM

Parsed 1000000 entries

Done!

rsem-build-read-index 32 1 0 RSEM.temp/RSEM_alignable_1.fq RSEM.temp/RSEM_alignable_2.fq

Build Index RSEM.temp/RSEM_alignable_1.fq is Done!

Build Index RSEM.temp/RSEM_alignable_2.fq is Done!

rsem-run-em /home/bdash/Desktop/trinity2/trinity_out_dir/Trinity.fasta.RSEM 3 RSEM RSEM.temp/RSEM RSEM.stat/RSEM -p 4

Refs.loadRefs finished!

Thread 0 : N = 226285, NHit = 259685 Thread 1 : N = 226380, NHit = 259685 Thread 2 : N = 225931, NHit = 259685 Thread 3 : N = 225704, NHit = 259687

EM_init finished!

estimateFromReads, N1 finished.

ROUND = 1, SUM = 904300, bChange = 141.218, totNum = 9249 ROUND = 2, SUM = 904300, bChange = 0.995926, totNum = 1827 ROUND = 3, SUM = 904300.000000001, bChange = 0.950174, totNum = 1740 ROUND = 4, SUM = 904300, bChange = 0.907734, totNum = 1601

…………………………. ………………………… …………………………

ROUND = 988, SUM = 904300, bChange = 0.00389822, totNum = 1

ROUND = 989, SUM = 904300, bChange = 0.0038979, totNum = 1

ROUND = 990, SUM = 904300, bChange = 0.000977773, totNum = 0

Expression Results are written!

Time Used for EM.cpp : 0 h 01 m 20 s

rm -rf RSEM.temp

CMD: touch RSEM.isoforms.results.ok

Run the other pairs as above

Addional files in the directory/subdirectory follwing the above run

trinity2$ ls -l trinity_out_dir/

-rw-rw-r–. 1 bdash bdash 7499008 Mar 24 17:50 Trinity.fasta.bowtie.1.ebwt

-rw-rw-r–. 1 bdash bdash 1173876 Mar 24 17:50 Trinity.fasta.bowtie.2.ebwt

-rw-rw-r–. 1 bdash bdash 83249 Mar 24 17:50 Trinity.fasta.bowtie.3.ebwt

-rw-rw-r–. 1 bdash bdash 2347744 Mar 24 17:50 Trinity.fasta.bowtie.4.ebwt

-rw-rw-r–. 1 bdash bdash 0 Mar 24 17:50 Trinity.fasta.bowtie.ok

-rw-rw-r–. 1 bdash bdash 7499008 Mar 24 17:50 Trinity.fasta.bowtie.rev.1.ebwt

-rw-rw-r–. 1 bdash bdash 1173876 Mar 24 17:50 Trinity.fasta.bowtie.rev.2.ebwt

-rw-rw-r–. 1 bdash bdash 45143 Mar 24 17:50 Trinity.fasta.RSEM.grp

-rw-rw-r–. 1 bdash bdash 9630408 Mar 24 17:50 Trinity.fasta.RSEM.idx.fa

-rw-rw-r–. 1 bdash bdash 9630408 Mar 24 17:50 Trinity.fasta.RSEM.n2g.idx.fa

-rw-rw-r–. 1 bdash bdash 0 Mar 24 17:50 Trinity.fasta.RSEM.rsem.prepped.ok

-rw-rw-r–. 1 bdash bdash 10298243 Mar 24 17:50 Trinity.fasta.RSEM.seq

-rw-rw-r–. 1 bdash bdash 808833 Mar 24 17:50 Trinity.fasta.RSEM.ti

-rw-rw-r–. 1 bdash bdash 9630408 Mar 24 17:50 Trinity.fasta.RSEM.transcripts.fa

ls -l trinity2

drwxrwxr-x. 3 bdash bdash 149 Mar 24 17:58 Sp_ds

drwxrwxr-x. 3 bdash bdash 149 Mar 24 18:11 Sp_hs

drwxrwxr-x. 3 bdash bdash 149 Mar 24 18:28 Sp_log

drwxrwxr-x. 3 bdash bdash 149 Mar 24 18:20 Sp_plat

trinity2]$ ls -l Sp_ds/

-rw-rw-r–. 1 bdash bdash 737366 Mar 24 17:58 RSEM.genes.results

-rw-rw-r–. 1 bdash bdash 771154 Mar 24 17:58 RSEM.isoforms.results

trinity2]$ ls -l Sp_ds/RSEM.stat/

-rw-rw-r–. 1 bdash bdash 135 Mar 24 17:56 RSEM.cnt

-rw-rw-r–. 1 bdash bdash 80229 Mar 24 17:58 RSEM.model

-rw-rw-r–. 1 bdash bdash 325878 Mar 24 17:58 RSEM.theta

Runs for Sp_hs, Sp_plat and Sp_log data will lead to creation of similar directories and contents

Some file readouts

trinity2$ head Sp_ds/RSEM.isoforms.results

transcript_id gene_id length effective_length expected_count TPM FPKM IsoPct

TRINITY_DN0_c0_g1_i1: TRINITY_DN0_c0_g1_i1 1221 957.41 27.00 29.20 31.19 100.00

TRINITY_DN1000_c0_g1_i1 TRINITY_DN1000_c0_g1_i1 571 307.41 8.00 26.94 28.78 100.00

TRINITY_DN1000_c0_g2_i1 TRINITY_DN1000_c0_g2_i1 3590 3326.41 67.00 20.85 22.27 100.00

TRINITY_DN1002_c0_g1_i1 TRINITY_DN1002_c0_g1_i1 333 73.99 1.00 13.99 14.95 100.00

TRINITY_DN1003_c0_g1_i1 TRINITY_DN1003_c0_g1_i1 1868 1604.41 257.00 165.84 177.14 100.00

TRINITY_DN1004_c0_g1_i1 TRINITY_DN1004_c0_g1_i1 3669 3405.41 76.00 23.11 24.68 100.00

TRINITY_DN1005_c0_g1_i1 TRINITY_DN1005_c0_g1_i1 922 658.41 6.00 9.43 10.08 100.00

TRINITY_DN1005_c0_g2_i1 TRINITY_DN1005_c0_g2_i1 424 160.43 0.00 0.00 0.00 0.00

TRINITY_DN1006_c0_g1_i1 TRINITY_DN1006_c0_g1_i1 1295 1031.41 90.00 90.34 96.49 100.00

trinity2]$ head Sp_ds/RSEM.genes.results

*gene_id transcript_id(s) length effective_length expected_count TPM FPKM

TRINITY_DN0_c0_g1_i1 TRINITY_DN0_c0_g1_i1 1221.00 957.41 27.00 29.20 31.19

TRINITY_DN1000_c0_g1_i1 TRINITY_DN1000_c0_g1_i1 571.00 307.41 8.00 26.94 28.78

TRINITY_DN1000_c0_g2_i1 TRINITY_DN1000_c0_g2_i1 3590.00 3326.41 67.00 20.85 22.27

TRINITY_DN1002_c0_g1_i1 TRINITY_DN1002_c0_g1_i1 333.00 73.99 1.00 13.99 14.95

TRINITY_DN1003_c0_g1_i1 TRINITY_DN1003_c0_g1_i1 1868.00 1604.41 257.00 165.84 177.14

TRINITY_DN1004_c0_g1_i1 TRINITY_DN1004_c0_g1_i1 3669.00 3405.41 76.00 23.11 24.68

TRINITY_DN1005_c0_g1_i1 TRINITY_DN1005_c0_g1_i1 922.00 658.41 6.00 9.43 10.08

TRINITY_DN1005_c0_g2_i1 TRINITY_DN1005_c0_g2_i1 424.00 160.43 0.00 0.00 0.00

TRINITY_DN1006_c0_g1_i1 TRINITY_DN1006_c0_g1_i1 1295.00 1031.41 90.00 90.34 96.49

LS0tDQp0aXRsZTogIlRyaW5pdHkgdG9vbHMgKFBhcnQgSUkpIDogRGUgbm92byB0cmFuc2NyaXB0IGFzc2VtYmx5IGFuYWx5c2lzIHVzaW5nIFJTRU0iDQphdXRob3I6ICJCaGFnaXJhdGhpIERhc2giDQpkYXRlOiAiTWFyY2ggMTksIDIwMTkiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyBSZWZlcmVuY2UsIFJlc291cmNlcyBhbmQgRGF0YQ0KDQojIyMgTmF0dXJlIFByb3RvY29scyB2b2x1bWUgOCwgcGFnZXMgMTQ5NC0xNTEyICgyMDEzKQ0KDQojIyMgRGF0YTogaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy90cmluaXR5cm5hc2VxL2ZpbGVzL21pc2MvVHJpbml0eU5hdHVyZVByb3RvY29sVHV0b3JpYWwudGd6DQoNCg0KIyMjIE1hY2hpbmU6IENlbnRPUyBMaW51eCA3IG9uIFZpcnR1YWwgQm94IA0KDQoNCg0KIyMgU3RhcnRpbmcgZGlyZWN0b3J5IGFuZCBzdWJkaXJlY3RvcnkgY29udGVudHMNCg0KTm90ZSB0aGF0IHRoZSAqU19wb21iZV9yZWZUcmFucy5mYXN0YSogYW5kICpzYW1wbGVzX25fcmVhZHNfZGVzY3JpYmVkLnR4dCogd29uJ3QgYmUgdXNlZCBmb3IgZGUgbm92byBhc3NlbWJseS4NCg0KTm93IHRoZSBjb250ZW50cyBhcmUgaW4gZGlmZmVyZW50IHdvcmtpbmcgd29ya2luZyBkaXJlY3Rvcnk6ICp0cmluaXR5MioNCg0KDQojIyMgdHJpbml0eTIkIGxzIC1sDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDcwMzIyMjk2OSBNYXIgIDQgMjM6NTMgQUxMLkxFRlQuZnENCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgNzAzMjIyOTY5IE1hciAgNCAyMzo1NCBBTEwuUklHSFQuZnENCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMTc1ODQ2MTc5IEZlYiAgNiAgMjAxMyBTcC5kcy4xTS5sZWZ0LmZxDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDE3NTg0NjE3OSBGZWIgIDYgIDIwMTMgU3AuZHMuMU0ucmlnaHQuZnENCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMTc1NzM2MDQyIEZlYiAgNiAgMjAxMyBTcC5ocy4xTS5sZWZ0LmZxDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDE3NTczNjA0MiBGZWIgIDYgIDIwMTMgU3AuaHMuMU0ucmlnaHQuZnENCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMTc1NzQxMjE1IEZlYiAgNiAgMjAxMyBTcC5sb2cuMU0ubGVmdC5mcQ0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAxNzU3NDEyMTUgRmViICA2ICAyMDEzIFNwLmxvZy4xTS5yaWdodC5mcQ0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAxNzU4OTk1MzMgRmViICA2ICAyMDEzIFNwLnBsYXQuMU0ubGVmdC5mcQ0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAxNzU4OTk1MzMgRmViICA2ICAyMDEzIFNwLnBsYXQuMU0ucmlnaHQuZnENCg0KDQoNCiMjIyB0cmluaXR5MiQgbHMgLWwgdHJpbml0eV9vdXRfZGlyLw0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICA5ODgyOTEyIE1hciAyNCAyMTowOSBUcmluaXR5LmZhc3RhDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICA0MTQxMDQgTWFyIDI0IDIxOjA5IFRyaW5pdHkuZmFzdGEuZ2VuZV90cmFuc19tYXANCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAgIDY1NiBNYXIgMjQgMjE6MDkgVHJpbml0eS50aW1pbmcNCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgIDQxMTc0ODgxNiBNYXIgMjQgMTg6MTggYm90aC5mYQ0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAgICAwIE1hciAyNCAxODoxOCBib3RoLmZhLm9rDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAgICAgIDggTWFyIDI0IDE4OjE4IGJvdGguZmEucmVhZF9jb3VudA0KDQoqKmRyd3hyd3hyLXggMiB1YnVudHUgdWJ1bnR1ICAgICAgIDQwOTYgTWFyIDI0IDE4OjI5IGNocnlzYWxpcyoqDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgMTUxMDE3OTMgTWFyIDI0IDE4OjIzIGluY2h3b3JtLksyNS5MMjUuZmENCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAgICAgMCBNYXIgMjQgMTg6MjMgaW5jaHdvcm0uSzI1LkwyNS5mYS5maW5pc2hlZA0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAgICA5IE1hciAyNCAxODoyMCBpbmNod29ybS5rbWVyX2NvdW50DQoNCioqZHJ3eHJ3eHIteCAyIHVidW50dSB1YnVudHUgICAgICAgNDA5NiBNYXIgMjQgMTg6MTggaW5zaWxpY29fcmVhZF9ub3JtYWxpemF0aW9uKioNCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgIDk3MTgxMDM3MyBNYXIgMjQgMTg6MTkgamVsbHlmaXNoLmttZXJzLmZhDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAgIDE4NjMgTWFyIDI0IDE4OjE5IGplbGx5ZmlzaC5rbWVycy5mYS5oaXN0bw0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAgICAwIE1hciAyNCAxODoxOCBsZWZ0LmZhLm9rDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICA4MzA1NzAgTWFyIDI0IDE4OjI5IHBhcnRpdGlvbmVkX3JlYWRzLmZpbGVzLmxpc3QNCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAgICAgMCBNYXIgMjQgMTg6MjkgcGFydGl0aW9uZWRfcmVhZHMuZmlsZXMubGlzdC5vaw0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAyMTM0IE1hciAyNCAxODoyOSBwaXBlbGluZXIuMTA1NzkuY21kcw0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAyMTM0IE1hciAyNCAyMDo1NCBwaXBlbGluZXIuMTY3MjYuY21kcw0KDQoqKmRyd3hyd3hyLXggMyB1YnVudHUgdWJ1bnR1ICAgICAgIDQwOTYgTWFyIDI0IDE4OjI5IHJlYWRfcGFydGl0aW9ucyoqDQoNCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgIDI5NDQwODQgTWFyIDI0IDE4OjI5IHJlY3Vyc2l2ZV90cmluaXR5LmNtZHMNCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgMjk0NDA4NCBNYXIgMjQgMjE6MDkgcmVjdXJzaXZlX3RyaW5pdHkuY21kcy5jb21wbGV0ZWQNCg0KLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAgICAgMCBNYXIgMjQgMTg6MjkgcmVjdXJzaXZlX3RyaW5pdHkuY21kcy5vaw0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAgICAwIE1hciAyNCAxODoxOCByaWdodC5mYS5vaw0KDQotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAxMDQyNDY0NzI0IE1hciAyNCAxODoyNiBzY2FmZm9sZGluZ19lbnRyaWVzLnNhbQ0KDQoNCg0KDQojIyBBbGlnbiBhbmQgZXN0aW1hdGUgYWJ1bmRhbmNlDQoNClJ1bm5pbmcgYnVpbHQtaW4gdHJ0aW5pdHkgUEVSTCBzY3JpcHRzICh1c2luZyBDZW50T1MgNyBhbmQgd29ya2luZyBkaXJlY3Rvcnk6IHRyaW5pdHkyKSB0byBtYXAgb3JpZ2luYWwgcmVhZHMgdG8gdGhlIHRyYW5zY3JpcHRzIGFuZCB1c2UgUlNFTSB0byBkbyBhYnVuZGFuY2UgZXN0aW1hdGVzIGZvciBuZXdseSBhc3NlbWJsZWQgdHJhbnNjcmlwdHMgIA0KDQoNCiMjIyB0cmluaXR5MiQgYWxpZ25fYW5kX2VzdGltYXRlX2FidW5kYW5jZS5wbCAtLXByZXBfcmVmZXJlbmNlIC0tc2VxVHlwZSBmcSAtLWVzdF9tZXRob2QgUlNFTSAtLWFsbl9tZXRob2QgYm93dGllIC0tbGVmdCBTcC5kcy5sZWZ0LmZxLmd6ICAtLXJpZ2h0IFNwLmRzLnJpZ2h0LmZxLmd6IC0tdHJhbnNjcmlwdHMgdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEgLS1vdXRwdXRfZGlyIFNwX2RzDQoNCiMjIyMgc29tZSBsb2cgcmVhZG91dHMNCg0KDQpDTUQ6IHRvdWNoIC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuYm93dGllLnN0YXJ0ZWQNCg0KQ01EOiBib3d0aWUtYnVpbGQgL2hvbWUvYmRhc2gvRGVza3RvcC90cmluaXR5Mi90cmluaXR5X291dF9kaXIvVHJpbml0eS5mYXN0YSANCi9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuYm93dGllDQoNClNldHRpbmdzOg0KDQogIE91dHB1dCBmaWxlczogIi9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuYm93dGllLiouZWJ3dCINCiAgDQogIExpbmUgcmF0ZTogNiAobGluZSBpcyA2NCBieXRlcykNCiAgDQogIExpbmVzIHBlciBzaWRlOiAxIChzaWRlIGlzIDY0IGJ5dGVzKQ0KICANCiAgT2Zmc2V0IHJhdGU6IDUgKG9uZSBpbiAzMikNCiAgDQogIEZUYWJsZSBjaGFyczogMTANCiAgDQogIFN0cmluZ3M6IHVucGFja2VkDQogIA0KICBNYXggYnVja2V0IHNpemU6IGRlZmF1bHQNCiAgDQogIE1heCBidWNrZXQgc2l6ZSwgc3FydCBtdWx0aXBsaWVyOiBkZWZhdWx0DQogIA0KICBNYXggYnVja2V0IHNpemUsIGxlbiBkaXZpc29yOiA0DQogIA0KICBEaWZmZXJlbmNlLWNvdmVyIHNhbXBsZSBwZXJpb2Q6IDEwMjQNCiAgDQogIEVuZGlhbm5lc3M6IGxpdHRsZQ0KICANCiAgQWN0dWFsIGxvY2FsIGVuZGlhbm5lc3M6IGxpdHRsZQ0KICANCiAgU2FuaXR5IGNoZWNraW5nOiBkaXNhYmxlZA0KICANCiAgQXNzZXJ0aW9uczogZGlzYWJsZWQNCiAgDQogIFJhbmRvbSBzZWVkOiAwDQogIA0KICBTaXplb2ZzOiB2b2lkKjo4LCBpbnQ6NCwgbG9uZzo4LCBzaXplX3Q6OA0KICANCklucHV0IGZpbGVzIEROQSwgRkFTVEE6DQoNCiAgL2hvbWUvYmRhc2gvRGVza3RvcC90cmluaXR5Mi90cmluaXR5X291dF9kaXIvVHJpbml0eS5mYXN0YQ0KICANClJlYWRpbmcgcmVmZXJlbmNlIHNpemVzDQogIFRpbWUgcmVhZGluZyByZWZlcmVuY2Ugc2l6ZXM6IDAwOjAwOjAxDQogIA0KQ2FsY3VsYXRpbmcgam9pbmVkIGxlbmd0aA0KV3JpdGluZyBoZWFkZXINClJlc2VydmluZyBzcGFjZSBmb3Igam9pbmVkIHN0cmluZw0KDQpKb2luaW5nIHJlZmVyZW5jZSBzZXF1ZW5jZXMNCiAgVGltZSB0byBqb2luIHJlZmVyZW5jZSBzZXF1ZW5jZXM6IDAwOjAwOjAwDQpibWF4IGFjY29yZGluZyB0byBibWF4RGl2TiBzZXR0aW5nOiAyMzQ3NzQzDQoNClVzaW5nIHBhcmFtZXRlcnMgLS1ibWF4IDE3NjA4MDggLS1kY3YgMTAyNA0KICBEb2luZyBhaGVhZC1vZi10aW1lIG1lbW9yeSB1c2FnZSB0ZXN0DQogIFBhc3NlZCEgIENvbnN0cnVjdGluZyB3aXRoIHRoZXNlIHBhcmFtZXRlcnM6IC0tYm1heCAxNzYwODA4IC0tZGN2IDEwMjQNCiAgDQpDb25zdHJ1Y3Rpbmcgc3VmZml4LWFycmF5IGVsZW1lbnQgZ2VuZXJhdG9yDQoNCg0KQnVpbGRpbmcgRGlmZmVyZW5jZUNvdmVyU2FtcGxlDQogIEJ1aWxkaW5nIHNQcmltZQ0KICBCdWlsZGluZyBzUHJpbWVPcmRlcg0KICBWLVNvcnRpbmcgc2FtcGxlcw0KICBWLVNvcnRpbmcgc2FtcGxlcyB0aW1lOiAwMDowMDowMA0KICBBbGxvY2F0aW5nIHJhbmsgYXJyYXkNCiAgUmFua2luZyB2LXNvcnQgb3V0cHV0DQogIFJhbmtpbmcgdi1zb3J0IG91dHB1dCB0aW1lOiAwMDowMDowMQ0KICBJbnZva2luZyBMYXJzc29uLVNhZGFrYW5lIG9uIHJhbmtzDQogIEludm9raW5nIExhcnNzb24tU2FkYWthbmUgb24gcmFua3MgdGltZTogMDA6MDA6MDANCiAgU2FuaXR5LWNoZWNraW5nIGFuZCByZXR1cm5pbmcNCg0KDQpCdWlsZGluZyBzYW1wbGVzDQpSZXNlcnZpbmcgc3BhY2UgZm9yIDEyIHNhbXBsZSBzdWZmaXhlcw0KR2VuZXJhdGluZyByYW5kb20gc3VmZml4ZXMNClFTb3J0aW5nIDEyIHNhbXBsZSBvZmZzZXRzLCBlbGltaW5hdGluZyBkdXBsaWNhdGVzDQpRU29ydGluZyBzYW1wbGUgb2Zmc2V0cywgZWxpbWluYXRpbmcgZHVwbGljYXRlcyB0aW1lOiAwMDowMDowMA0KDQpNdWx0aWtleSBRU29ydGluZyAxMiBzYW1wbGVzDQogIChVc2luZyBkaWZmZXJlbmNlIGNvdmVyKQ0KICBNdWx0aWtleSBRU29ydGluZyBzYW1wbGVzIHRpbWU6IDAwOjAwOjAwDQogIA0KQ2FsY3VsYXRpbmcgYnVja2V0IHNpemVzDQoNClNwbGl0dGluZyBhbmQgbWVyZ2luZw0KICBTcGxpdHRpbmcgYW5kIG1lcmdpbmcgdGltZTogMDA6MDA6MDANCg0KDQpBdmcgYnVja2V0IHNpemU6IDkuMzkwOThlKzA2ICh0YXJnZXQ6IDE3NjA4MDcpDQpDb252ZXJ0aW5nIHN1ZmZpeC1hcnJheSBlbGVtZW50cyB0byBpbmRleCBpbWFnZQ0KDQpBbGxvY2F0aW5nIGZ0YWIsIGFic29yYkZ0YWINCg0KRW50ZXJpbmcgRWJ3dCBsb29wDQoNCkdldHRpbmcgYmxvY2sgMSBvZiAxDQogIE5vIHNhbXBsZXM7IGFzc2VtYmxpbmcgYWxsLWluY2x1c2l2ZSBibG9jaw0KICBTb3J0aW5nIGJsb2NrIG9mIGxlbmd0aCA5MzkwOTc1IGZvciBidWNrZXQgMQ0KICAoVXNpbmcgZGlmZmVyZW5jZSBjb3ZlcikNCiAgU29ydGluZyBibG9jayB0aW1lOiAwMDowMDowMw0KICANClJldHVybmluZyBibG9jayBvZiA5MzkwOTc2IGZvciBidWNrZXQgMQ0KDQpFeGl0ZWQgRWJ3dCBsb29wDQoNCmZjaHJbQV06IDANCmZjaHJbQ106IDI3ODE4ODMNCmZjaHJbR106IDQ1Nzc3NTgNCmZjaHJbVF06IDYzNTc2OTQNCmZjaHJbJF06IDkzOTA5NzUNCg0KRXhpdGluZyBFYnd0OjpidWlsZFRvRGlzaygpDQoNClJldHVybmluZyBmcm9tIGluaXRGcm9tVmVjdG9yDQoNCldyb3RlIDc0OTkwMDggYnl0ZXMgdG8gcHJpbWFyeSBFQldUIGZpbGU6IC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuYm93dGllLjEuZWJ3dA0KDQpXcm90ZSAxMTczODc2IGJ5dGVzIHRvIHNlY29uZGFyeSBFQldUIGZpbGU6IC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuYm93dGllLjIuZWJ3dA0KDQpSZS1vcGVuaW5nIF9pbjEgYW5kIF9pbjIgYXMgaW5wdXQgc3RyZWFtcw0KUmV0dXJuaW5nIGZyb20gRWJ3dCBjb25zdHJ1Y3Rvcg0KDQoNCkhlYWRlcnM6DQogICAgbGVuOiA5MzkwOTc1DQogICAgYnd0TGVuOiA5MzkwOTc2DQogICAgc3o6IDIzNDc3NDQNCiAgICBid3RTejogMjM0Nzc0NA0KICAgIGxpbmVSYXRlOiA2DQogICAgbGluZXNQZXJTaWRlOiAxDQogICAgb2ZmUmF0ZTogNQ0KICAgIG9mZk1hc2s6IDB4ZmZmZmZmZTANCiAgICBpc2FSYXRlOiAtMQ0KICAgIGlzYU1hc2s6IDB4ZmZmZmZmZmYNCiAgICBmdGFiQ2hhcnM6IDEwDQogICAgZWZ0YWJMZW46IDIwDQogICAgZWZ0YWJTejogODANCiAgICBmdGFiTGVuOiAxMDQ4NTc3DQogICAgZnRhYlN6OiA0MTk0MzA4DQogICAgb2Zmc0xlbjogMjkzNDY4DQogICAgb2Zmc1N6OiAxMTczODcyDQogICAgaXNhTGVuOiAwDQogICAgaXNhU3o6IDANCiAgICBsaW5lU3o6IDY0DQogICAgc2lkZVN6OiA2NA0KICAgIHNpZGVCd3RTejogNTYNCiAgICBzaWRlQnd0TGVuOiAyMjQNCiAgICBudW1TaWRlUGFpcnM6IDIwOTYyDQogICAgbnVtU2lkZXM6IDQxOTI0DQogICAgbnVtTGluZXM6IDQxOTI0DQogICAgZWJ3dFRvdExlbjogMjY4MzEzNg0KICAgIGVid3RUb3RTejogMjY4MzEzNg0KICAgIHJldmVyc2U6IDANCiAgICANCiAgICANClRvdGFsIHRpbWUgZm9yIGNhbGwgdG8gZHJpdmVyKCkgZm9yIGZvcndhcmQgaW5kZXg6IDAwOjAwOjA2DQoNClJlYWRpbmcgcmVmZXJlbmNlIHNpemVzDQogIFRpbWUgcmVhZGluZyByZWZlcmVuY2Ugc2l6ZXM6IDAwOjAwOjAwDQogIA0KQ2FsY3VsYXRpbmcgam9pbmVkIGxlbmd0aA0KV3JpdGluZyBoZWFkZXINClJlc2VydmluZyBzcGFjZSBmb3Igam9pbmVkIHN0cmluZw0KDQpKb2luaW5nIHJlZmVyZW5jZSBzZXF1ZW5jZXMNCiAgVGltZSB0byBqb2luIHJlZmVyZW5jZSBzZXF1ZW5jZXM6IDAwOjAwOjAxDQogIA0KYm1heCBhY2NvcmRpbmcgdG8gYm1heERpdk4gc2V0dGluZzogMjM0Nzc0Mw0KDQpVc2luZyBwYXJhbWV0ZXJzIC0tYm1heCAxNzYwODA4IC0tZGN2IDEwMjQNCiAgRG9pbmcgYWhlYWQtb2YtdGltZSBtZW1vcnkgdXNhZ2UgdGVzdA0KICBQYXNzZWQhICBDb25zdHJ1Y3Rpbmcgd2l0aCB0aGVzZSBwYXJhbWV0ZXJzOiAtLWJtYXggMTc2MDgwOCAtLWRjdiAxMDI0DQogIA0KQ29uc3RydWN0aW5nIHN1ZmZpeC1hcnJheSBlbGVtZW50IGdlbmVyYXRvcg0KDQoNCkJ1aWxkaW5nIERpZmZlcmVuY2VDb3ZlclNhbXBsZQ0KICBCdWlsZGluZyBzUHJpbWUNCiAgQnVpbGRpbmcgc1ByaW1lT3JkZXINCiAgVi1Tb3J0aW5nIHNhbXBsZXMNCiAgVi1Tb3J0aW5nIHNhbXBsZXMgdGltZTogMDA6MDA6MDANCiAgQWxsb2NhdGluZyByYW5rIGFycmF5DQogIFJhbmtpbmcgdi1zb3J0IG91dHB1dA0KICBSYW5raW5nIHYtc29ydCBvdXRwdXQgdGltZTogMDA6MDA6MDANCiAgSW52b2tpbmcgTGFyc3Nvbi1TYWRha2FuZSBvbiByYW5rcw0KICBJbnZva2luZyBMYXJzc29uLVNhZGFrYW5lIG9uIHJhbmtzIHRpbWU6IDAwOjAwOjAwDQogIFNhbml0eS1jaGVja2luZyBhbmQgcmV0dXJuaW5nDQoNCkJ1aWxkaW5nIHNhbXBsZXMNClJlc2VydmluZyBzcGFjZSBmb3IgMTIgc2FtcGxlIHN1ZmZpeGVzDQpHZW5lcmF0aW5nIHJhbmRvbSBzdWZmaXhlcw0KUVNvcnRpbmcgMTIgc2FtcGxlIG9mZnNldHMsIGVsaW1pbmF0aW5nIGR1cGxpY2F0ZXMNClFTb3J0aW5nIHNhbXBsZSBvZmZzZXRzLCBlbGltaW5hdGluZyBkdXBsaWNhdGVzIHRpbWU6IDAwOjAwOjAwDQoNCk11bHRpa2V5IFFTb3J0aW5nIDEyIHNhbXBsZXMNCiAgKFVzaW5nIGRpZmZlcmVuY2UgY292ZXIpDQogIE11bHRpa2V5IFFTb3J0aW5nIHNhbXBsZXMgdGltZTogMDA6MDA6MDANCiAgDQpDYWxjdWxhdGluZyBidWNrZXQgc2l6ZXMNCg0KU3BsaXR0aW5nIGFuZCBtZXJnaW5nDQogIFNwbGl0dGluZyBhbmQgbWVyZ2luZyB0aW1lOiAwMDowMDowMA0KQXZnIGJ1Y2tldCBzaXplOiA5LjM5MDk4ZSswNiAodGFyZ2V0OiAxNzYwODA3KQ0KDQpDb252ZXJ0aW5nIHN1ZmZpeC1hcnJheSBlbGVtZW50cyB0byBpbmRleCBpbWFnZQ0KQWxsb2NhdGluZyBmdGFiLCBhYnNvcmJGdGFiDQpFbnRlcmluZyBFYnd0IGxvb3ANCg0KR2V0dGluZyBibG9jayAxIG9mIDENCiAgTm8gc2FtcGxlczsgYXNzZW1ibGluZyBhbGwtaW5jbHVzaXZlIGJsb2NrDQogIFNvcnRpbmcgYmxvY2sgb2YgbGVuZ3RoIDkzOTA5NzUgZm9yIGJ1Y2tldCAxDQogIChVc2luZyBkaWZmZXJlbmNlIGNvdmVyKQ0KICBTb3J0aW5nIGJsb2NrIHRpbWU6IDAwOjAwOjAzDQoNClJldHVybmluZyBibG9jayBvZiA5MzkwOTc2IGZvciBidWNrZXQgMQ0KDQpFeGl0ZWQgRWJ3dCBsb29wDQoNCmZjaHJbQV06IDANCmZjaHJbQ106IDI3ODE4ODMNCmZjaHJbR106IDQ1Nzc3NTgNCmZjaHJbVF06IDYzNTc2OTQNCmZjaHJbJF06IDkzOTA5NzUNCkV4aXRpbmcgRWJ3dDo6YnVpbGRUb0Rpc2soKQ0KUmV0dXJuaW5nIGZyb20gaW5pdEZyb21WZWN0b3INCg0KKipXcm90ZSA3NDk5MDA4IGJ5dGVzIHRvIHByaW1hcnkgRUJXVCBmaWxlOiAvaG9tZS9iZGFzaC9EZXNrdG9wL3RyaW5pdHkyL3RyaW5pdHlfb3V0X2Rpci9UcmluaXR5LmZhc3RhLmJvd3RpZS5yZXYuMS5lYnd0KioNCg0KKipXcm90ZSAxMTczODc2IGJ5dGVzIHRvIHNlY29uZGFyeSBFQldUIGZpbGU6IC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuYm93dGllLnJldi4yLmVid3QqKg0KDQpSZS1vcGVuaW5nIF9pbjEgYW5kIF9pbjIgYXMgaW5wdXQgc3RyZWFtcw0KUmV0dXJuaW5nIGZyb20gRWJ3dCBjb25zdHJ1Y3Rvcg0KDQpIZWFkZXJzOg0KICAgIGxlbjogOTM5MDk3NQ0KICAgIGJ3dExlbjogOTM5MDk3Ng0KICAgIHN6OiAyMzQ3NzQ0DQogICAgYnd0U3o6IDIzNDc3NDQNCiAgICBsaW5lUmF0ZTogNg0KICAgIGxpbmVzUGVyU2lkZTogMQ0KICAgIG9mZlJhdGU6IDUNCiAgICBvZmZNYXNrOiAweGZmZmZmZmUwDQogICAgaXNhUmF0ZTogLTENCiAgICBpc2FNYXNrOiAweGZmZmZmZmZmDQogICAgZnRhYkNoYXJzOiAxMA0KICAgIGVmdGFiTGVuOiAyMA0KICAgIGVmdGFiU3o6IDgwDQogICAgZnRhYkxlbjogMTA0ODU3Nw0KICAgIGZ0YWJTejogNDE5NDMwOA0KICAgIG9mZnNMZW46IDI5MzQ2OA0KICAgIG9mZnNTejogMTE3Mzg3Mg0KICAgIGlzYUxlbjogMA0KICAgIGlzYVN6OiAwDQogICAgbGluZVN6OiA2NA0KICAgIHNpZGVTejogNjQNCiAgICBzaWRlQnd0U3o6IDU2DQogICAgc2lkZUJ3dExlbjogMjI0DQogICAgbnVtU2lkZVBhaXJzOiAyMDk2Mg0KICAgIG51bVNpZGVzOiA0MTkyNA0KICAgIG51bUxpbmVzOiA0MTkyNA0KICAgIGVid3RUb3RMZW46IDI2ODMxMzYNCiAgICBlYnd0VG90U3o6IDI2ODMxMzYNCiAgICByZXZlcnNlOiAwDQogICAgDQpUb3RhbCB0aW1lIGZvciBiYWNrd2FyZCBjYWxsIHRvIGRyaXZlcigpIGZvciBtaXJyb3IgaW5kZXg6IDAwOjAwOjA2DQoNCkNNRDogdG91Y2ggL2hvbWUvYmRhc2gvRGVza3RvcC90cmluaXR5Mi90cmluaXR5X291dF9kaXIvVHJpbml0eS5mYXN0YS5SU0VNLnJzZW0ucHJlcHBlZC5zdGFydGVkDQoNCkNNRDogcnNlbS1wcmVwYXJlLXJlZmVyZW5jZSAgL2hvbWUvYmRhc2gvRGVza3RvcC90cmluaXR5Mi90cmluaXR5X291dF9kaXIvVHJpbml0eS5mYXN0YSAvaG9tZS9iZGFzaC9EZXNrdG9wL3RyaW5pdHkyL3RyaW5pdHlfb3V0X2Rpci9UcmluaXR5LmZhc3RhLlJTRU0NCnJzZW0tc3ludGhlc2lzLXJlZmVyZW5jZS10cmFuc2NyaXB0cyAvaG9tZS9iZGFzaC9EZXNrdG9wL3RyaW5pdHkyL3RyaW5pdHlfb3V0X2Rpci9UcmluaXR5LmZhc3RhLlJTRU0gMCAwIC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGENCg0KVHJhbnNjcmlwdCBJbmZvcm1hdGlvbiBGaWxlIGlzIGdlbmVyYXRlZCENCg0KR3JvdXAgRmlsZSBpcyBnZW5lcmF0ZWQhDQoNCkV4dHJhY3RlZCBTZXF1ZW5jZXMgRmlsZSBpcyBnZW5lcmF0ZWQhDQoNCnJzZW0tcHJlcmVmIC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuUlNFTS50cmFuc2NyaXB0cy5mYSAxIC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuUlNFTQ0KDQpSZWZzLm1ha2VSZWZzIGZpbmlzaGVkIQ0KDQpSZWZzLnNhdmVSZWZzIGZpbmlzaGVkIQ0KDQovaG9tZS9iZGFzaC9EZXNrdG9wL3RyaW5pdHkyL3RyaW5pdHlfb3V0X2Rpci9UcmluaXR5LmZhc3RhLlJTRU0uaWR4LmZhIGlzIGdlbmVyYXRlZCENCi9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuUlNFTS5uMmcuaWR4LmZhIGlzIGdlbmVyYXRlZCENCg0KJFZBUjEgPSBbDQogICAgICAgICAgew0KICAgICAgICAgICAgJ291dHB1dF9kaXInID0+ICdTcF9kcycsDQogICAgICAgICAgICAncmlnaHQnID0+ICcvaG9tZS9iZGFzaC9EZXNrdG9wL3RyaW5pdHkyL1NwLmRzLjFNLnJpZ2h0LmZxJywNCiAgICAgICAgICAgICdsZWZ0JyA9PiAnL2hvbWUvYmRhc2gvRGVza3RvcC90cmluaXR5Mi9TcC5kcy4xTS5sZWZ0LmZxJw0KICAgICAgICAgIH0NCiAgICAgICAgXTsNCiAgICAgICAgDQogICAgICAgIA0KQ01EOiBzZXQgLW8gcGlwZWZhaWwgJiYgYm93dGllIC1xIC0tYWxsIC0tYmVzdCAtLXN0cmF0YSAtbSAzMDAgLS1jaHVua21icyA1MTIgLVggODAwIC1TIC1wIDQgL2hvbWUvYmRhc2gvRGVza3RvcC90cmluaXR5Mi90cmluaXR5X291dF9kaXIvVHJpbml0eS5mYXN0YS5ib3d0aWUgLTEgL2hvbWUvYmRhc2gvRGVza3RvcC90cmluaXR5Mi9TcC5kcy4xTS5sZWZ0LmZxIC0yIC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvU3AuZHMuMU0ucmlnaHQuZnEgfCBzYW10b29scyB2aWV3IC1GIDQgLVMgLWIgLW8gYm93dGllLmJhbSAtDQoNCioqIyByZWFkcyBwcm9jZXNzZWQ6IDEwMDAwMDAqKg0KDQoqKiMgcmVhZHMgd2l0aCBhdCBsZWFzdCBvbmUgcmVwb3J0ZWQgYWxpZ25tZW50OiA5MDQzMDAgKDkwLjQzJSkqKg0KDQoqKiMgcmVhZHMgdGhhdCBmYWlsZWQgdG8gYWxpZ246IDk1NzAwICg5LjU3JSkqKg0KDQoqKlJlcG9ydGVkIDEwMzg3NDIgcGFpcmVkLWVuZCBhbGlnbm1lbnRzKioNCg0KQ01EOiB0b3VjaCBib3d0aWUuYmFtLm9rDQoNCkNNRDogcnNlbS1jYWxjdWxhdGUtZXhwcmVzc2lvbiAgLS1wYWlyZWQtZW5kICAgLXAgNCAgICAtLW5vLWJhbS1vdXRwdXQgLS1iYW0gYm93dGllLmJhbSAvaG9tZS9iZGFzaC9EZXNrdG9wL3RyaW5pdHkyL3RyaW5pdHlfb3V0X2Rpci9UcmluaXR5LmZhc3RhLlJTRU0gUlNFTSANCnJzZW0tcGFyc2UtYWxpZ25tZW50cyAvaG9tZS9iZGFzaC9EZXNrdG9wL3RyaW5pdHkyL3RyaW5pdHlfb3V0X2Rpci9UcmluaXR5LmZhc3RhLlJTRU0gUlNFTS50ZW1wL1JTRU0gUlNFTS5zdGF0L1JTRU0gYm93dGllLmJhbSAzIC10YWcgWE0NCg0KUGFyc2VkIDEwMDAwMDAgZW50cmllcw0KDQpEb25lIQ0KDQpyc2VtLWJ1aWxkLXJlYWQtaW5kZXggMzIgMSAwIFJTRU0udGVtcC9SU0VNX2FsaWduYWJsZV8xLmZxIFJTRU0udGVtcC9SU0VNX2FsaWduYWJsZV8yLmZxDQoNCkJ1aWxkIEluZGV4IFJTRU0udGVtcC9SU0VNX2FsaWduYWJsZV8xLmZxIGlzIERvbmUhDQoNCkJ1aWxkIEluZGV4IFJTRU0udGVtcC9SU0VNX2FsaWduYWJsZV8yLmZxIGlzIERvbmUhDQoNCnJzZW0tcnVuLWVtIC9ob21lL2JkYXNoL0Rlc2t0b3AvdHJpbml0eTIvdHJpbml0eV9vdXRfZGlyL1RyaW5pdHkuZmFzdGEuUlNFTSAzIFJTRU0gUlNFTS50ZW1wL1JTRU0gUlNFTS5zdGF0L1JTRU0gLXAgNA0KDQpSZWZzLmxvYWRSZWZzIGZpbmlzaGVkIQ0KDQpUaHJlYWQgMCA6IE4gPSAyMjYyODUsIE5IaXQgPSAyNTk2ODUNClRocmVhZCAxIDogTiA9IDIyNjM4MCwgTkhpdCA9IDI1OTY4NQ0KVGhyZWFkIDIgOiBOID0gMjI1OTMxLCBOSGl0ID0gMjU5Njg1DQpUaHJlYWQgMyA6IE4gPSAyMjU3MDQsIE5IaXQgPSAyNTk2ODcNCg0KRU1faW5pdCBmaW5pc2hlZCENCg0KZXN0aW1hdGVGcm9tUmVhZHMsIE4xIGZpbmlzaGVkLg0KDQpST1VORCA9IDEsIFNVTSA9IDkwNDMwMCwgYkNoYW5nZSA9IDE0MS4yMTgsIHRvdE51bSA9IDkyNDkNClJPVU5EID0gMiwgU1VNID0gOTA0MzAwLCBiQ2hhbmdlID0gMC45OTU5MjYsIHRvdE51bSA9IDE4MjcNClJPVU5EID0gMywgU1VNID0gOTA0MzAwLjAwMDAwMDAwMSwgYkNoYW5nZSA9IDAuOTUwMTc0LCB0b3ROdW0gPSAxNzQwDQpST1VORCA9IDQsIFNVTSA9IDkwNDMwMCwgYkNoYW5nZSA9IDAuOTA3NzM0LCB0b3ROdW0gPSAxNjAxDQoNCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQoNClJPVU5EID0gOTg4LCBTVU0gPSA5MDQzMDAsIGJDaGFuZ2UgPSAwLjAwMzg5ODIyLCB0b3ROdW0gPSAxDQoNClJPVU5EID0gOTg5LCBTVU0gPSA5MDQzMDAsIGJDaGFuZ2UgPSAwLjAwMzg5NzksIHRvdE51bSA9IDENCg0KUk9VTkQgPSA5OTAsIFNVTSA9IDkwNDMwMCwgYkNoYW5nZSA9IDAuMDAwOTc3NzczLCB0b3ROdW0gPSAwDQoNCioqRXhwcmVzc2lvbiBSZXN1bHRzIGFyZSB3cml0dGVuISoqDQoNClRpbWUgVXNlZCBmb3IgRU0uY3BwIDogMCBoIDAxIG0gMjAgcw0KDQpybSAtcmYgUlNFTS50ZW1wDQoNCkNNRDogdG91Y2ggUlNFTS5pc29mb3Jtcy5yZXN1bHRzLm9rDQoNCg0KDQoNCg0KIyMjIyBSdW4gdGhlIG90aGVyIHBhaXJzIGFzIGFib3ZlDQoNCg0KDQoNCiMjIEFkZGlvbmFsIGZpbGVzIGluIHRoZSBkaXJlY3Rvcnkvc3ViZGlyZWN0b3J5IGZvbGx3aW5nIHRoZSBhYm92ZSBydW4NCg0KDQojIyMjIHRyaW5pdHkyJCBscyAtbCB0cmluaXR5X291dF9kaXIvDQoNCi1ydy1ydy1yLS0uIDEgYmRhc2ggYmRhc2ggIDc0OTkwMDggTWFyIDI0IDE3OjUwIFRyaW5pdHkuZmFzdGEuYm93dGllLjEuZWJ3dA0KDQotcnctcnctci0tLiAxIGJkYXNoIGJkYXNoICAxMTczODc2IE1hciAyNCAxNzo1MCBUcmluaXR5LmZhc3RhLmJvd3RpZS4yLmVid3QNCg0KLXJ3LXJ3LXItLS4gMSBiZGFzaCBiZGFzaCAgICA4MzI0OSBNYXIgMjQgMTc6NTAgVHJpbml0eS5mYXN0YS5ib3d0aWUuMy5lYnd0DQoNCi1ydy1ydy1yLS0uIDEgYmRhc2ggYmRhc2ggIDIzNDc3NDQgTWFyIDI0IDE3OjUwIFRyaW5pdHkuZmFzdGEuYm93dGllLjQuZWJ3dA0KDQotcnctcnctci0tLiAxIGJkYXNoIGJkYXNoICAgICAgICAwIE1hciAyNCAxNzo1MCBUcmluaXR5LmZhc3RhLmJvd3RpZS5vaw0KDQotcnctcnctci0tLiAxIGJkYXNoIGJkYXNoICA3NDk5MDA4IE1hciAyNCAxNzo1MCBUcmluaXR5LmZhc3RhLmJvd3RpZS5yZXYuMS5lYnd0DQoNCi1ydy1ydy1yLS0uIDEgYmRhc2ggYmRhc2ggIDExNzM4NzYgTWFyIDI0IDE3OjUwIFRyaW5pdHkuZmFzdGEuYm93dGllLnJldi4yLmVid3QNCg0KLXJ3LXJ3LXItLS4gMSBiZGFzaCBiZGFzaCAgICA0NTE0MyBNYXIgMjQgMTc6NTAgVHJpbml0eS5mYXN0YS5SU0VNLmdycA0KDQotcnctcnctci0tLiAxIGJkYXNoIGJkYXNoICA5NjMwNDA4IE1hciAyNCAxNzo1MCBUcmluaXR5LmZhc3RhLlJTRU0uaWR4LmZhDQoNCi1ydy1ydy1yLS0uIDEgYmRhc2ggYmRhc2ggIDk2MzA0MDggTWFyIDI0IDE3OjUwIFRyaW5pdHkuZmFzdGEuUlNFTS5uMmcuaWR4LmZhDQoNCi1ydy1ydy1yLS0uIDEgYmRhc2ggYmRhc2ggICAgICAgIDAgTWFyIDI0IDE3OjUwIFRyaW5pdHkuZmFzdGEuUlNFTS5yc2VtLnByZXBwZWQub2sNCg0KLXJ3LXJ3LXItLS4gMSBiZGFzaCBiZGFzaCAxMDI5ODI0MyBNYXIgMjQgMTc6NTAgVHJpbml0eS5mYXN0YS5SU0VNLnNlcQ0KDQotcnctcnctci0tLiAxIGJkYXNoIGJkYXNoICAgODA4ODMzIE1hciAyNCAxNzo1MCBUcmluaXR5LmZhc3RhLlJTRU0udGkNCg0KLXJ3LXJ3LXItLS4gMSBiZGFzaCBiZGFzaCAgOTYzMDQwOCBNYXIgMjQgMTc6NTAgVHJpbml0eS5mYXN0YS5SU0VNLnRyYW5zY3JpcHRzLmZhDQoNCg0KDQojIyMgbHMgLWwgdHJpbml0eTINCg0KZHJ3eHJ3eHIteC4gMyBiZGFzaCBiZGFzaCAgICAgICAxNDkgTWFyIDI0IDE3OjU4IFNwX2RzDQoNCmRyd3hyd3hyLXguIDMgYmRhc2ggYmRhc2ggICAgICAgMTQ5IE1hciAyNCAxODoxMSBTcF9ocw0KDQpkcnd4cnd4ci14LiAzIGJkYXNoIGJkYXNoICAgICAgIDE0OSBNYXIgMjQgMTg6MjggU3BfbG9nDQoNCmRyd3hyd3hyLXguIDMgYmRhc2ggYmRhc2ggICAgICAgMTQ5IE1hciAyNCAxODoyMCBTcF9wbGF0DQoNCg0KDQp0cmluaXR5Ml0kIGxzIC1sIFNwX2RzLw0KDQoNCioqLXJ3LXJ3LXItLS4gMSBiZGFzaCBiZGFzaCAgICA3MzczNjYgTWFyIDI0IDE3OjU4IFJTRU0uZ2VuZXMucmVzdWx0cyoqDQoNCioqLXJ3LXJ3LXItLS4gMSBiZGFzaCBiZGFzaCAgICA3NzExNTQgTWFyIDI0IDE3OjU4IFJTRU0uaXNvZm9ybXMucmVzdWx0cyoqDQoNCg0KDQp0cmluaXR5Ml0kIGxzIC1sIFNwX2RzL1JTRU0uc3RhdC8NCg0KLXJ3LXJ3LXItLS4gMSBiZGFzaCBiZGFzaCAgICAxMzUgTWFyIDI0IDE3OjU2IFJTRU0uY250DQoNCi1ydy1ydy1yLS0uIDEgYmRhc2ggYmRhc2ggIDgwMjI5IE1hciAyNCAxNzo1OCBSU0VNLm1vZGVsDQoNCi1ydy1ydy1yLS0uIDEgYmRhc2ggYmRhc2ggMzI1ODc4IE1hciAyNCAxNzo1OCBSU0VNLnRoZXRhDQoNCg0KDQojIyMjIFJ1bnMgZm9yIFNwX2hzLCBTcF9wbGF0IGFuZCBTcF9sb2cgZGF0YSB3aWxsIGxlYWQgdG8gY3JlYXRpb24gb2Ygc2ltaWxhciBkaXJlY3RvcmllcyBhbmQgY29udGVudHMNCg0KDQoNCg0KIyMgU29tZSBmaWxlIHJlYWRvdXRzDQoNCiMjIyB0cmluaXR5MiQgaGVhZCBTcF9kcy9SU0VNLmlzb2Zvcm1zLnJlc3VsdHMNCg0KDQp0cmFuc2NyaXB0X2lkCSAgICAgICAgZ2VuZV9pZAlsZW5ndGgJICAgICAgICBlZmZlY3RpdmVfbGVuZ3RoCWV4cGVjdGVkX2NvdW50CVRQTQlGUEtNCUlzb1BjdA0KDQpUUklOSVRZX0ROMF9jMF9nMV9pMToJVFJJTklUWV9ETjBfYzBfZzFfaTEJICAgICAgICAxMjIxCSAgICAgICAgOTU3LjQxCTI3LjAwCTI5LjIwCTMxLjE5CTEwMC4wMA0KDQpUUklOSVRZX0ROMTAwMF9jMF9nMV9pMQlUUklOSVRZX0ROMTAwMF9jMF9nMV9pMQkgICAgICAgIDU3MQkgICAgICAgIDMwNy40MQk4LjAwCTI2Ljk0CTI4Ljc4CTEwMC4wMA0KDQpUUklOSVRZX0ROMTAwMF9jMF9nMl9pMQlUUklOSVRZX0ROMTAwMF9jMF9nMl9pMQkgICAgICAgIDM1OTAJICAgICAgICAzMzI2LjQxCTY3LjAwCTIwLjg1CTIyLjI3CTEwMC4wMA0KDQpUUklOSVRZX0ROMTAwMl9jMF9nMV9pMQlUUklOSVRZX0ROMTAwMl9jMF9nMV9pMQkgICAgICAgIDMzMwkgICAgICAgIDczLjk5CTEuMDAJMTMuOTkJMTQuOTUJMTAwLjAwDQoNClRSSU5JVFlfRE4xMDAzX2MwX2cxX2kxCVRSSU5JVFlfRE4xMDAzX2MwX2cxX2kxCSAgICAgICAgMTg2OAkgICAgICAgIDE2MDQuNDEJMjU3LjAwCTE2NS44NAkxNzcuMTQJMTAwLjAwDQoNClRSSU5JVFlfRE4xMDA0X2MwX2cxX2kxCVRSSU5JVFlfRE4xMDA0X2MwX2cxX2kxCSAgICAgICAgMzY2OQkgICAgICAgIDM0MDUuNDEJNzYuMDAJMjMuMTEJMjQuNjgJMTAwLjAwDQoNClRSSU5JVFlfRE4xMDA1X2MwX2cxX2kxCVRSSU5JVFlfRE4xMDA1X2MwX2cxX2kxCSAgICAgICAgOTIyCSAgICAgICAgNjU4LjQxCTYuMDAJOS40MwkxMC4wOAkxMDAuMDANCg0KVFJJTklUWV9ETjEwMDVfYzBfZzJfaTEJVFJJTklUWV9ETjEwMDVfYzBfZzJfaTEJICAgICAgICA0MjQJICAgICAgICAxNjAuNDMJMC4wMAkwLjAwCTAuMDAJMC4wMA0KDQpUUklOSVRZX0ROMTAwNl9jMF9nMV9pMQlUUklOSVRZX0ROMTAwNl9jMF9nMV9pMQkgICAgICAgIDEyOTUJICAgICAgICAxMDMxLjQxCTkwLjAwCTkwLjM0CTk2LjQ5CTEwMC4wMA0KDQoNCg0KDQojIyMgdHJpbml0eTJdJCBoZWFkIFNwX2RzL1JTRU0uZ2VuZXMucmVzdWx0cyANCg0KKmdlbmVfaWQJICAgICAgICAgICAgICAgIHRyYW5zY3JpcHRfaWQocykJbGVuZ3RoCWVmZmVjdGl2ZV9sZW5ndGgJZXhwZWN0ZWRfY291bnQJVFBNCUZQS00NCg0KVFJJTklUWV9ETjBfYzBfZzFfaTEJVFJJTklUWV9ETjBfYzBfZzFfaTEJMTIyMS4wMAkgICAgICAgIDk1Ny40MQkgICAgICAgIDI3LjAwCSAgICAgICAgMjkuMjAJMzEuMTkNCg0KVFJJTklUWV9ETjEwMDBfYzBfZzFfaTEJVFJJTklUWV9ETjEwMDBfYzBfZzFfaTEJNTcxLjAwCSAgICAgICAgMzA3LjQxCSAgICAgICAgOC4wMAkgICAgICAgIDI2Ljk0CTI4Ljc4DQoNClRSSU5JVFlfRE4xMDAwX2MwX2cyX2kxCVRSSU5JVFlfRE4xMDAwX2MwX2cyX2kxCTM1OTAuMDAJICAgICAgICAzMzI2LjQxCSAgICAgICAgNjcuMDAJICAgICAgICAyMC44NQkyMi4yNw0KDQpUUklOSVRZX0ROMTAwMl9jMF9nMV9pMQlUUklOSVRZX0ROMTAwMl9jMF9nMV9pMQkzMzMuMDAJICAgICAgICA3My45OQkgICAgICAgIDEuMDAJICAgICAgICAxMy45OQkxNC45NQ0KDQpUUklOSVRZX0ROMTAwM19jMF9nMV9pMQlUUklOSVRZX0ROMTAwM19jMF9nMV9pMQkxODY4LjAwCSAgICAgICAgMTYwNC40MQkgICAgICAgIDI1Ny4wMAkgICAgICAgIDE2NS44NAkxNzcuMTQNCg0KVFJJTklUWV9ETjEwMDRfYzBfZzFfaTEJVFJJTklUWV9ETjEwMDRfYzBfZzFfaTEJMzY2OS4wMAkgICAgICAgIDM0MDUuNDEJICAgICAgICA3Ni4wMAkgICAgICAgIDIzLjExCTI0LjY4DQoNClRSSU5JVFlfRE4xMDA1X2MwX2cxX2kxCVRSSU5JVFlfRE4xMDA1X2MwX2cxX2kxCTkyMi4wMAkgICAgICAgIDY1OC40MQkgICAgICAgIDYuMDAJICAgICAgICA5LjQzCTEwLjA4DQoNClRSSU5JVFlfRE4xMDA1X2MwX2cyX2kxCVRSSU5JVFlfRE4xMDA1X2MwX2cyX2kxCTQyNC4wMAkgICAgICAgIDE2MC40MwkgICAgICAgIDAuMDAJICAgICAgICAwLjAwCTAuMDANCg0KVFJJTklUWV9ETjEwMDZfYzBfZzFfaTEJVFJJTklUWV9ETjEwMDZfYzBfZzFfaTEJMTI5NS4wMAkgICAgICAgIDEwMzEuNDEJICAgICAgICA5MC4wMAkgICAgICAgIDkwLjM0CTk2LjQ5DQoNCg0KDQoNCg0KDQoNCg0KDQoNCg==