1 Question #79 Do you experience joint pain and body aches?

A Chi-square test of independence was conducted to assess the relationship between experiencing joint aches and pain and menopausal status. A statistically significant association was found, X2(df=2)=42.999, p<.00001. Cramer’s V was moderate at V=0.11, 95% CI(0.073, 0.133).


                 Yes                   No Prefer Not to Answer 
                3210                  931                    0 
                <NA> 
                   7 
     status
aches pre-menopause peri-menopause post-menopause
  Yes           328           1421           1461
  No            167            400            364
     status
aches pre-menopause peri-menopause post-menopause
  Yes     0.6626263      0.7803405      0.8005479
  No      0.3373737      0.2196595      0.1994521

    Pearson's Chi-squared test

data:  x
X-squared = 42.999, df = 2, p-value = 0.0000000004602

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1019003 
Confidence interval:
      2.5%      97.5% 
0.07338194 0.13313993 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1             2   
2 0.00000018386 -   
3 0.00000000041 0.14

P value adjustment method: holm 

2 Question #80 Please rate the extent to which the joint pain/aches negatively impact your training

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q79 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 23.515, p =.0000078. Cramer’s V was small at V=0.09, 95% CI(0.055, 0.121).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q79 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 17.776, p=.000138. Cramer’s V was small at V=0.11, 95% CI(0.044, 0.110).


    Never    Rarely Sometimes     Often    Always      <NA> 
       72       805      1481       627       225       938 

 pre-menopause peri-menopause post-menopause           <NA> 
           496           1823           1829              0 
           status
aches_imp   pre-menopause peri-menopause post-menopause
  Never        0.02439024     0.02463054     0.01984942
  Rarely       0.33841463     0.22378607     0.25735797
  Sometimes    0.48170732     0.46586911     0.45242984
  Often        0.10670732     0.21534131     0.19575633
  Always       0.04878049     0.07037298     0.07460643
           status
aches_imp   pre-menopause peri-menopause post-menopause
  Never                 8             35             29
  Rarely              111            318            376
  Sometimes           158            662            661
  Often                35            306            286
  Always               16            100            109

Oftenalways       other 
        852        2358 
             status
achesimp      pre-menopause peri-menopause post-menopause
  Oftenalways            51            406            395
  other                 277           1015           1066

    Pearson's Chi-squared test

data:  x
X-squared = 23.515, df = 2, p-value = 0.000007829

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.08559009 
Confidence interval:
      2.5%      97.5% 
0.05462145 0.12123391 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1         2   
2 0.0000056 -   
3 0.0000382 0.38

P value adjustment method: holm 

      other rarelynever 
       2333         877 
             status
achesimp      pre-menopause peri-menopause post-menopause
  other                 209           1068           1056
  rarelynever           119            353            405

    Pearson's Chi-squared test

data:  x
X-squared = 17.776, df = 2, p-value = 0.000138

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.07441656 
Confidence interval:
      2.5%      97.5% 
0.04451325 0.11013040 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1       2      
2 0.00011 -      
3 0.00520 0.08675

P value adjustment method: holm 

3 Question #81 . Do you have frozen shoulder?

A Chi-square test of independence was conducted to assess the relationship between frozen shoulder and menopausal status. A statistically significant association was found, X2(df=2)=22.605, p=.00015. Cramer’s V was small at V=0.052, 95% CI(0.0339, 0.0741).


                 Yes                   No         I don't know 
                 328                 3598                  222 
Prefer Not to Answer                 <NA> 
                   0                    0 
              status
frozen         pre-menopause peri-menopause post-menopause
  I don't know            36            109             77
  No                     441           1553           1604
  Yes                     19            161            148
              status
frozen         pre-menopause peri-menopause post-menopause
  I don't know    0.07258065     0.05979155     0.04209951
  No              0.88911290     0.85189248     0.87698196
  Yes             0.03830645     0.08831596     0.08091853

    Pearson's Chi-squared test

data:  x
X-squared = 22.605, df = 4, p-value = 0.0001518

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.05220021 
Confidence interval:
      2.5%      97.5% 
0.03388257 0.07406649 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1       2      
2 0.00097 -      
3 0.00313 0.45706

P value adjustment method: holm 

4 Question #82 Please rate the extent to which frozen shoulder negatively impact your training.

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q81 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 4.497, p =.1056.

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q81 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 1.1287, p=.5687.


    Never    Rarely Sometimes     Often    Always      <NA> 
        7        36       140        97        48      3820 
           status
fr_impact   pre-menopause peri-menopause post-menopause
  Never        0.05263158     0.01863354     0.02027027
  Rarely       0.15789474     0.10559006     0.10810811
  Sometimes    0.57894737     0.42857143     0.40540541
  Often        0.21052632     0.30434783     0.29729730
  Always       0.00000000     0.14285714     0.16891892
           status
fr_impact   pre-menopause peri-menopause post-menopause
  Never                 1              3              3
  Rarely                3             17             16
  Sometimes            11             69             60
  Often                 4             49             44
  Always                0             23             25

 pre-menopause peri-menopause post-menopause           <NA> 
            19            161            148              0 

Oftenalways       other 
        145         183 
             status
frozenimp     pre-menopause peri-menopause post-menopause
  Oftenalways             4             72             69
  other                  15             89             79

    Pearson's Chi-squared test

data:  x
X-squared = 4.497, df = 2, p-value = 0.1056

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1170919 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.2293522 

      other rarelynever 
        285          43 
             status
frozenimp     pre-menopause peri-menopause post-menopause
  other                  15            141            129
  rarelynever             4             20             19

    Pearson's Chi-squared test

data:  x
X-squared = 1.1287, df = 2, p-value = 0.5687
             status
frozenimp     pre-menopause peri-menopause post-menopause
  other           16.509146      139.89329      128.59756
  rarelynever      2.490854       21.10671       19.40244

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.0586614 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.1690329 

5 Question #83. Do you have plantar fasciitis?

A Chi-square test of independence was conducted to assess the relationship between plantar fasciitis frozen shoulder and menopausal status. A statistically significant association was found, X2(df=4)=21.506, p=.00025. Cramer’s V was small at V=0.051, 95% CI(0.0328, 0.0728).


        I don't know                   No Prefer not to answer 
                 124                 3489                    1 
                 Yes                 <NA> 
                 534                    0 

   1    2    4 <NA> 
 534 3489  124    0 

I don't know           No          Yes 
         124         3489          534 
              status
plantar        pre-menopause peri-menopause post-menopause
  I don't know            21             70             33
  No                     413           1496           1580
  Yes                     61            257            216
              status
plantar        pre-menopause peri-menopause post-menopause
  I don't know    0.04242424     0.03839824     0.01804265
  No              0.83434343     0.82062534     0.86386003
  Yes             0.12323232     0.14097641     0.11809732

    Pearson's Chi-squared test

data:  x
X-squared = 21.506, df = 4, p-value = 0.0002513

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.05092122 
Confidence interval:
      2.5%      97.5% 
0.03276740 0.07278492 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1    2   
2 0.69 -   
3 0.81 0.13

P value adjustment method: holm 

6 Question #84. Please rate the extent to which the plantar fasciitis negatively impact your training.

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q84 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 7.4466, p =.02415. Cramer’s V was moderate at V=0.11, 95% CI(0.061, 0.206).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q84 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 3.4859, p=.175. Cramer’s V was small at V=0.08, 95% CI(0.000, 0.169).


    Never    Rarely Sometimes     Often    Always      <NA> 
       21       166       222        96        29      3614 
           status
pf_impact   pre-menopause peri-menopause post-menopause
  Never        0.04918033     0.01945525     0.06018519
  Rarely       0.36065574     0.29182879     0.31944444
  Sometimes    0.45901639     0.40856031     0.41203704
  Often        0.08196721     0.22957198     0.14814815
  Always       0.04918033     0.05058366     0.06018519
           status
pf_impact   pre-menopause peri-menopause post-menopause
  Never                 3              5             13
  Rarely               22             75             69
  Sometimes            28            105             89
  Often                 5             59             32
  Always                3             13             13

 pre-menopause peri-menopause post-menopause           <NA> 
            61            257            216              0 

Oftenalways       other 
        125         409 
             status
plantarimp    pre-menopause peri-menopause post-menopause
  Oftenalways             8             72             45
  other                  53            185            171

    Pearson's Chi-squared test

data:  x
X-squared = 7.4466, df = 2, p-value = 0.02415

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1180888 
Confidence interval:
      2.5%      97.5% 
0.06148507 0.20603650 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1     2    
2 0.074 -    
3 0.242 0.180

P value adjustment method: holm 

      other rarelynever 
        347         187 
             status
plantarimp    pre-menopause peri-menopause post-menopause
  other                  36            177            134
  rarelynever            25             80             82

    Pearson's Chi-squared test

data:  x
X-squared = 3.4859, df = 2, p-value = 0.175

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.08079535 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.1687117 

7 Question #85. How often do you alter your training program due to joint pain, frozen shoulder, etc.

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q85 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 10.118, p = .006352. Cramer’s V was small at V=0.06, 95% CI(0.030, 0.091).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q84 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 3.4859, p= .175. Cramer’s V was small at V=0.08, 95% CI(0.000, 0.169).


    Never    Rarely Sometimes     Often    Always      <NA> 
      181      1133      1321       485       175       853 
           status
aches_alter pre-menopause peri-menopause post-menopause
  Never        0.10233918     0.05259563     0.04633983
  Rarely       0.37719298     0.33948087     0.34049698
  Sometimes    0.38304094     0.39412568     0.41168570
  Often        0.10233918     0.16256831     0.14237743
  Always       0.03508772     0.05122951     0.05910007
           status
aches_alter pre-menopause peri-menopause post-menopause
  Never                35             77             69
  Rarely              129            497            507
  Sometimes           131            577            613
  Often                35            238            212
  Always               12             75             88

Oftenalways       other 
        660        2635 
             status
achesimp      pre-menopause peri-menopause post-menopause
  Oftenalways            47            313            300
  other                 295           1151           1189

    Pearson's Chi-squared test

data:  x
X-squared = 10.118, df = 2, p-value = 0.006352

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.05541411 
Confidence interval:
      2.5%      97.5% 
0.02950641 0.09077899 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1      2     
2 0.0057 -     
3 0.0161 0.4354

P value adjustment method: holm 

      other rarelynever 
        347         187 
             status
achesimp      pre-menopause peri-menopause post-menopause
  other                  36            177            134
  rarelynever            25             80             82

    Pearson's Chi-squared test

data:  x
X-squared = 3.4859, df = 2, p-value = 0.175

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.08079535 
Confidence interval:
     2.5%     97.5% 
0.0000000 0.1687117 

8 Question #86. From one workout to the next, how often do you feel fully recovered?

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q86 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 44.517, p<.000001. Cramer’s V was moderate at V=0.10, 95% CI(0.075, 0.135).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q86 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 17.739, p= .00014. Cramer’s V was small at V=0.07, 95% CI(0.039, 0.097)


    Never    Rarely Sometimes     Often    Always      <NA> 
       41       372      1365      2044       326         0 
           status
recover     pre-menopause peri-menopause post-menopause
  Never       0.008064516    0.013165112    0.007107709
  Rarely      0.052419355    0.105869446    0.083652269
  Sometimes   0.298387097    0.366428963    0.300164024
  Often       0.580645161    0.458584750    0.503007108
  Always      0.060483871    0.055951728    0.106068890
           status
recover     pre-menopause peri-menopause post-menopause
  Never                 4             24             13
  Rarely               26            193            153
  Sometimes           148            668            549
  Often               288            836            920
  Always               30            102            194

Oftenalways       other 
       2370        1778 
             status
rec           pre-menopause peri-menopause post-menopause
  Oftenalways           318            938           1114
  other                 178            885            715

    Pearson's Chi-squared test

data:  x
X-squared = 44.517, df = 2, p-value = 0.0000000002155

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1035956 
Confidence interval:
      2.5%      97.5% 
0.07505037 0.13480054 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1           2          
2 0.000001367 -          
3 0.22        0.000000028

P value adjustment method: holm 

      other rarelynever 
       3735         413 
             status
rec           pre-menopause peri-menopause post-menopause
  other                 466           1606           1663
  rarelynever            30            217            166

    Pearson's Chi-squared test

data:  x
X-squared = 17.739, df = 2, p-value = 0.0001406

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.06539596 
Confidence interval:
      2.5%      97.5% 
0.03909832 0.09681374 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1       2      
2 0.00074 -      
3 0.03927 0.01250

P value adjustment method: holm 

9 Question #87. Do you experience urinary incontinence?

A Chi-square test of independence was conducted to assess the relationship between incontinence and menopausal status. A statistically significant association was not found, X2(df=2)=21.699, p=.000019. Cramer’s V was small at V=0.07, 95% CI(0.0454, 0.1038).


                 Yes                   No Prefer Not to Answer 
                1526                 2614                    0 
                <NA> 
                   8 
      status
incont pre-menopause peri-menopause post-menopause
   No            351           1094           1169
   Yes           142            727            657
      status
incont pre-menopause peri-menopause post-menopause
   No      0.7119675      0.6007688      0.6401972
   Yes     0.2880325      0.3992312      0.3598028

    Pearson's Chi-squared test

data:  x
X-squared = 21.699, df = 2, p-value = 0.00001942

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.07239642 
Confidence interval:
      2.5%      97.5% 
0.04536575 0.10380066 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1        2    
2 0.000023 -    
3 0.007    0.016

P value adjustment method: holm 

10 Question #88. What do you believe was the cause of your urinary incontinence?

A Chi-square test of independence was conducted to assess the relationship between menopausal status and Q88 response. A statistically significant association was found, X2(df=2)=107.1, p<.00001. Cramer’s V was moderate at V=0.19, 95% CI(0.153, 0.223).


  1   2   3   4 
508 693 104 221 

   Menopause   Childbirth        Other I don't know         <NA> 
         508          693          104          221         2622 
              status
cause          pre-menopause peri-menopause post-menopause
  Childbirth              90            367            236
  I don't know            34            109             78
  Menopause                9            200            299
  Other                    9             51             44
              status
cause          pre-menopause peri-menopause post-menopause
  Childbirth      0.63380282     0.50481431     0.35920852
  I don't know    0.23943662     0.14993122     0.11872146
  Menopause       0.06338028     0.27510316     0.45509893
  Other           0.06338028     0.07015131     0.06697108

    Pearson's Chi-squared test

data:  x
X-squared = 107.1, df = 6, p-value < 0.00000000000000022

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.1873243 
Confidence interval:
     2.5%     97.5% 
0.1534578 0.2232019 

11 Question #89. Please rate the extent to which urinary incontinence impacts your desire to engage in exercise.

A chi-square goodness-of-fit test was conducted to examine who said “Often/Always” to Q89 were equally distributed across three stages. The results indicated that the observed frequencies differed significantly from the expected frequencies, χ²(2) = 8.3636, p = .01527. Cramer’s V was small at V=0.074, 95% CI(0.039, 0.126).

Additionally, A chi-square goodness-of-fit test was conducted to examine who said “Rarely/Never” to Q89 were equally distributed across three stages. The results indicated that the observed frequencies did not differ significantly from the expected frequencies, χ²(2) = 2.3826, p= .3038.Cramer’s V was small at V=0.04, 95% CI(0.000, 0.091)


    Never    Rarely Sometimes     Often    Always      <NA> 
      492       563       311       124        36      2622 
           status
in_impact   pre-menopause peri-menopause post-menopause
  Never        0.32394366     0.29848693     0.34855403
  Rarely       0.37323944     0.37414030     0.36225266
  Sometimes    0.19014085     0.20082531     0.21004566
  Often        0.08450704     0.10178817     0.05783866
  Always       0.02816901     0.02475928     0.02130898
           status
in_impact   pre-menopause peri-menopause post-menopause
  Never                46            217            229
  Rarely               53            272            238
  Sometimes            27            146            138
  Often                12             74             38
  Always                4             18             14

Oftenalways       other 
        160        1366 
             status
incimp        pre-menopause peri-menopause post-menopause
  Oftenalways            16             92             52
  other                 126            635            605

    Pearson's Chi-squared test

data:  x
X-squared = 8.3636, df = 2, p-value = 0.01527

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.07403208 
Confidence interval:
      2.5%      97.5% 
0.03867997 0.12603885 

    Pairwise comparisons using Pairwise comparison of proportions 

data:  b$num out of b$den 

  1     2    
2 0.750 -    
3 0.515 0.016

P value adjustment method: holm 

      other rarelynever 
        471        1055 
             status
incimp        pre-menopause peri-menopause post-menopause
  other                  43            238            190
  rarelynever            99            489            467

    Pearson's Chi-squared test

data:  x
X-squared = 2.3825, df = 2, p-value = 0.3038

    Two-sided 95% chi-squared confidence interval for the population
    Cramer's V

Sample estimate: 0.03951297 
Confidence interval:
      2.5%      97.5% 
0.00000000 0.09138077 
LS0tDQp0aXRsZTogIkZGTVMgTWFudXNjcmlwdCAzIFN0YXRpc3RpY2FsIEFuYWx5c2lzIg0KYXV0aG9yOiAiIg0KZGF0ZTogIiINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICB0b2NfZmxvYXQ6IHllcw0KICAgIG51bWJlcl9zZWN0aW9uczogeWVzDQogICAgdG9jX2NvbGxhcHNlZDogeWVzDQogICAgY29kZV9mb2xkaW5nOiBoaWRlDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgc21vb3RoX3Njcm9sbDogeWVzDQogICAgdGhlbWU6IGx1bWVuDQogIHBkZl9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICBmaWdfd2lkdGg6IDMNCiAgICBmaWdfaGVpZ2h0OiAzDQogIHdvcmRfZG9jdW1lbnQ6IA0KICAgIHRvYzogeWVzDQogICAgdG9jX2RlcHRoOiA0DQogICAgZmlnX2NhcHRpb246IHllcw0KICAgIGtlZXBfbWQ6IHllcw0KZWRpdG9yX29wdGlvbnM6IA0KICBjaHVua19vdXRwdXRfdHlwZTogaW5saW5lDQotLS0NCg0KYGBge2NzcywgZWNobyA9IEZBTFNFfQ0KI1RPQzo6YmVmb3JlIHsNCiAgY29udGVudDogIlRhYmxlIG9mIENvbnRlbnRzIjsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtc2l6ZTogMS4yZW07DQogIGRpc3BsYXk6IGJsb2NrOw0KICBjb2xvcjogbmF2eTsNCiAgbWFyZ2luLWJvdHRvbTogMTBweDsNCn0NCg0KDQpkaXYjVE9DIGxpIHsgICAgIC8qIHRhYmxlIG9mIGNvbnRlbnQgICovDQogICAgbGlzdC1zdHlsZTp1cHBlci1yb21hbjsNCiAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7DQogICAgYmFja2dyb3VuZC1yZXBlYXQ6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOjA7DQp9DQoNCmgxLnRpdGxlIHsgICAgLyogbGV2ZWwgMSBoZWFkZXIgb2YgdGl0bGUgICovDQogIGZvbnQtc2l6ZTogMjJweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGNvbG9yOiBEYXJrUmVkOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQogIGZvbnQtZmFtaWx5OiAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsNCn0NCg0KaDQuYXV0aG9yIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxNXB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6IHN5c3RlbS11aTsNCiAgY29sb3I6IG5hdnk7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDQuZGF0ZSB7IC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogIGZvbnQtc2l6ZTogMThweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogIGZvbnQtZmFtaWx5OiAiR2lsbCBTYW5zIiwgc2Fucy1zZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQoNCmgxIHsgLyogSGVhZGVyIDEgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDIwcHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDIgeyAvKiBIZWFkZXIgMiAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMThweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogbmF2eTsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMyB7IC8qIEhlYWRlciAzIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxNnB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmg0IHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE0cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCi8qIEFkZCBkb3RzIGFmdGVyIG51bWJlcmVkIGhlYWRlcnMgKi8NCi5oZWFkZXItc2VjdGlvbi1udW1iZXI6OmFmdGVyIHsNCiAgY29udGVudDogIi4iOw0KDQpib2R5IHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQouaGlnaGxpZ2h0bWUgeyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdzsgfQ0KDQpwIHsgYmFja2dyb3VuZC1jb2xvcjp3aGl0ZTsgfQ0KDQp9DQpgYGANCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9Rn0NCg0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGLCBjb21tZW50PU5BLCB3YXJuaW5nPUYsIHJlc3VsdHM9VCwgbWVzc2FnZT1GKQ0KDQpzZXR3ZCgiQzovVXNlcnMvNzVMUFlPVFQvT25lRHJpdmUgLSBXZXN0IENoZXN0ZXIgVW5pdmVyc2l0eSBvZiBQQS9GRk1TIikNCg0KbGlicmFyeShGU0EpDQpsaWJyYXJ5KGRwbHlyKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeShzcGxpdHN0YWNrc2hhcGUpDQpsaWJyYXJ5KHN1bW1hcnl0b29scykNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeSh0aWR5cikNCmxpYnJhcnkoVklNKQ0KbGlicmFyeSh6b28pDQpsaWJyYXJ5KGp0b29scykNCmxpYnJhcnkoYnJvb20pDQpsaWJyYXJ5KHZjZCkNCmxpYnJhcnkodmlzZGF0KQ0KbGlicmFyeShza2ltcikNCmxpYnJhcnkoamFuaXRvcikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ21vZGVscykNCmxpYnJhcnkoZHVubi50ZXN0KQ0KbGlicmFyeShyc3RhdGl4KQ0KbGlicmFyeShEZXNjVG9vbHMpDQpsaWJyYXJ5KGVmZmVjdHNpemUpDQpsaWJyYXJ5KGNvbmZpbnRyKQ0KbGlicmFyeShjaGlzcXVhcmUpDQpsaWJyYXJ5KGZvcmNhdHMpDQpvcHRpb25zKHNjaXBlbj05OTkpDQoNCiN3cmFuZ2xpbmcNCg0KZmlyc3QuZGF0YT1yZWFkLmNzdigiRkZNUyBkZW1vZyB2YXJzLmNzdiIsIGhlYWRlcj1UKQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKFdUS0c8MTgwKQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHN0YXR1cz1jYXNlX3doZW4oTUVOT1NUQVRVUz09MX4icHJlLW1lbm9wYXVzZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5PU1RBVFVTPT0yfiJwZXJpLW1lbm9wYXVzZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICBNRU5PU1RBVFVTPT0zfiJwb3N0LW1lbm9wYXVzZSIsIFRSVUV+TkEpKQ0KDQpmaXJzdC5kYXRhJHN0YXR1cz1mY3RfaW5vcmRlcihmaXJzdC5kYXRhJHN0YXR1cykNCmBgYA0KDQojIFF1ZXN0aW9uICM3OSBEbyB5b3UgZXhwZXJpZW5jZSBqb2ludCBwYWluIGFuZCBib2R5IGFjaGVzPw0KDQoqQSBDaGktc3F1YXJlIHRlc3Qgb2YgaW5kZXBlbmRlbmNlIHdhcyBjb25kdWN0ZWQgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBleHBlcmllbmNpbmcgam9pbnQgYWNoZXMgYW5kIHBhaW4gYW5kIG1lbm9wYXVzYWwgc3RhdHVzLiBBIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2FzIGZvdW5kLCBYMihkZj0yKT00Mi45OTksIHA8LjAwMDAxLiBDcmFtZXIncyBWIHdhcyBtb2RlcmF0ZSBhdCBWPTAuMTEsIDk1JSBDSSgwLjA3MywgMC4xMzMpLioNCg0KYGBge3IgUTc5LCBpbmNsdWRlPVR9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoYWNoZXM9Y2FzZV93aGVuKEFDSEVTPT0xfiJZZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFUz09Mn4iTm8iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVM9PTN+IlByZWZlciBub3QgdG8gYW5zd2VyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJGFjaGVzIDwtIGZhY3RvcihmaXJzdC5kYXRhJGFjaGVzLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIiwgIlByZWZlciBOb3QgdG8gQW5zd2VyIikpDQp0YWJsZShmaXJzdC5kYXRhJGFjaGVzLCB1c2VOQSA9ICJhbHdheXMiKQ0KI1JlbW92ZSBwcmVmZXIgbm90IHRvIGFuc3dlcj0wIGFuZCBtaXNzaW5nPTcNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoQUNIRVM8MykNCg0KZGF0YSRhY2hlcyA8LSBmYWN0b3IoZGF0YSRhY2hlcywgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpDQoNCng9eHRhYnMofmFjaGVzK3N0YXR1cywgZGF0YT1kYXRhKQ0KeA0KcHJvcC50YWJsZSh4LDIpDQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDMyOCwgMTQyMSwgMTQ2MSksDQpkZW49YygzMjgrMTY3LCAxNDIxKzQwMCAsMTQ2MSszNjQpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCmBgYA0KDQojIFF1ZXN0aW9uICM4MCBQbGVhc2UgcmF0ZSB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSBqb2ludCBwYWluL2FjaGVzIG5lZ2F0aXZlbHkgaW1wYWN0IHlvdXIgdHJhaW5pbmcNCg0KKkEgY2hpLXNxdWFyZSBnb29kbmVzcy1vZi1maXQgdGVzdCB3YXMgY29uZHVjdGVkIHRvIGV4YW1pbmUgd2hvIHNhaWQgIk9mdGVuL0Fsd2F5cyIgdG8gUTc5IHdlcmUgZXF1YWxseSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhyZWUgc3RhZ2VzLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JzZXJ2ZWQgZnJlcXVlbmNpZXMgZGlmZmVyZWQgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBleHBlY3RlZCBmcmVxdWVuY2llcywgz4fCsigyKSA9IDIzLjUxNSwgcCA9LjAwMDAwNzguIENyYW1lcidzIFYgd2FzIHNtYWxsIGF0IFY9MC4wOSwgOTUlIENJKDAuMDU1LCAwLjEyMSkuICoNCg0KKkFkZGl0aW9uYWxseSwgQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiUmFyZWx5L05ldmVyIiB0byBRNzkgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gMTcuNzc2LCBwPS4wMDAxMzguIENyYW1lcidzIFYgd2FzIHNtYWxsIGF0IFY9MC4xMSwgOTUlIENJKDAuMDQ0LCAwLjExMCkuKg0KDQpgYGB7ciBRODAsIGluY2x1ZGU9VH0NCg0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogICAgbXV0YXRlKGFjaGVzX2ltcD1jYXNlX3doZW4oQUNIRVNfSU1QQUNUPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFU19JTVBBQ1Q9PTJ+Ik9mdGVuIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIEFDSEVTX0lNUEFDVD09M34iU29tZXRpbWVzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfSU1QQUNUPT00fiJSYXJlbHkiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfSU1QQUNUPT01fiJOZXZlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRhY2hlc19pbXAgPC0gZmFjdG9yKGZpcnN0LmRhdGEkYWNoZXNfaW1wLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTmV2ZXIiLCJSYXJlbHkiLCAiU29tZXRpbWVzIiwgIk9mdGVuIiwiQWx3YXlzIikpDQp0YWJsZShmaXJzdC5kYXRhJGFjaGVzX2ltcCwgdXNlTkEgPSAiYWx3YXlzIikNCnRhYmxlKGZpcnN0LmRhdGEkc3RhdHVzLCB1c2VOQSA9ICJhbHdheXMiKQ0KI1JlbW92ZSBtaXNzaW5nIE49OTM4LCBza2lwIGxvZ2ljDQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKEFDSEVTX0lNUEFDVDw2KQ0KeD14dGFicyh+YWNoZXNfaW1wK3N0YXR1cywgZGF0YT1kYXRhKQ0KcHJvcC50YWJsZSh4LDIpDQp4DQoNCiNvZnRlbiBhbmQgYWx3YXlzLWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQpvZnRlbiA9IGRhdGEgJT4lDQogIG11dGF0ZShhY2hlc2ltcD1jYXNlX3doZW4oQUNIRVNfSU1QQUNUPD0yfiJPZnRlbmFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfSU1QQUNUPjJ+Im90aGVyIikpDQoNCnRhYmxlKG9mdGVuJGFjaGVzaW1wKQ0KeD14dGFicyh+YWNoZXNpbXArc3RhdHVzLCBkYXRhPW9mdGVuKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09Yyg1MSwgNDA2LCAzOTUpLA0KZGVuPWMoNTErMjc3LCA0MDYrMTAxNSwgMzk1KzEwNjYpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCiNuZXZlciBhbmQgcmFyZWx5LWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQpuZXZlciA9IGRhdGEgJT4lDQogIG11dGF0ZShhY2hlc2ltcD1jYXNlX3doZW4oQUNIRVNfSU1QQUNUPj00fiJyYXJlbHluZXZlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfSU1QQUNUPDR+Im90aGVyIikpDQoNCnRhYmxlKG5ldmVyJGFjaGVzaW1wKQ0KeD14dGFicyh+YWNoZXNpbXArc3RhdHVzLCBkYXRhPW5ldmVyKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09YygxMTksIDM1MywgNDA1KSwNCmRlbj1jKDExOSsyMDksIDM1MysxMDY4LCA0MDUrMTA1NiksDQpzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IikNCikNCg0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCg0KYGBgDQoNCiMgUXVlc3Rpb24gIzgxIC4gRG8geW91IGhhdmUgZnJvemVuIHNob3VsZGVyPw0KDQoqQSBDaGktc3F1YXJlIHRlc3Qgb2YgaW5kZXBlbmRlbmNlIHdhcyBjb25kdWN0ZWQgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBmcm96ZW4gc2hvdWxkZXIgYW5kIG1lbm9wYXVzYWwgc3RhdHVzLiBBIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2FzIGZvdW5kLCBYMihkZj0yKT0yMi42MDUsIHA9LjAwMDE1LiBDcmFtZXIncyBWIHdhcyBzbWFsbCBhdCBWPTAuMDUyLCA5NSUgQ0koMC4wMzM5LCAwLjA3NDEpLioNCg0KYGBge3IgUTgxLCBpbmNsdWRlPVR9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoZnJvemVuPWNhc2Vfd2hlbihGUk9aRU49PTF+IlllcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIEZST1pFTj09Mn4iTm8iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOPT00fiJJIGRvbid0IGtub3ciLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOPT0zfiJQcmVmZXIgbm90IHRvIGFuc3dlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRmcm96ZW4gPC0gZmFjdG9yKGZpcnN0LmRhdGEkZnJvemVuLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIiwgIkkgZG9uJ3Qga25vdyIsICJQcmVmZXIgTm90IHRvIEFuc3dlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSRmcm96ZW4sIHVzZU5BID0gImFsd2F5cyIpDQojUmVtb3ZlIG1pc3NpbmcgTj0wLCBQTlRBPTANCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoRlJPWkVOPT0xIHwgRlJPWkVOPT0yIHwgRlJPWkVOPT00KQ0KDQpkYXRhJGZyb3plbiA8LSBhcy5jaGFyYWN0ZXIoZGF0YSRmcm96ZW4pDQoNCng9eHRhYnMofmZyb3plbitzdGF0dXMsIGRhdGE9ZGF0YSkNCngNCnByb3AudGFibGUoeCwyKQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09YygxOSwgMTYxLCAxNDgpLA0KZGVuPWMoMTkrNDQxKzM2LCAxNjErMTU1MysxMDksIDE0OCsxNjA0Kzc3KSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KDQpwYWlyd2lzZS5wcm9wLnRlc3QoeD1iJG51bSwgbj1iJGRlbiwgcC5hZGp1c3QubWV0aG9kID0gImhvbG0iKQ0KDQpgYGANCg0KIyBRdWVzdGlvbiAjODIgUGxlYXNlIHJhdGUgdGhlIGV4dGVudCB0byB3aGljaCBmcm96ZW4gc2hvdWxkZXIgbmVnYXRpdmVseSBpbXBhY3QgeW91ciB0cmFpbmluZy4gDQoNCipBIGNoaS1zcXVhcmUgZ29vZG5lc3Mtb2YtZml0IHRlc3Qgd2FzIGNvbmR1Y3RlZCB0byBleGFtaW5lIHdobyBzYWlkICJPZnRlbi9BbHdheXMiIHRvIFE4MSB3ZXJlIGVxdWFsbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRocmVlIHN0YWdlcy4gVGhlIHJlc3VsdHMgaW5kaWNhdGVkIHRoYXQgdGhlIG9ic2VydmVkIGZyZXF1ZW5jaWVzIGRpZCBub3QgZGlmZmVyIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZXhwZWN0ZWQgZnJlcXVlbmNpZXMsIM+HwrIoMikgPSA0LjQ5NywgcCA9LjEwNTYuICoNCg0KKkFkZGl0aW9uYWxseSwgQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiUmFyZWx5L05ldmVyIiB0byBRODEgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWQgbm90IGRpZmZlciBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gMS4xMjg3LCBwPS41Njg3LiAqDQoNCg0KYGBge3IgUTgyLCBpbmNsdWRlPVR9DQoNCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoZnJfaW1wYWN0PWNhc2Vfd2hlbihGUk9aRU5fSU1QQUNUPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9aRU5fSU1QQUNUPT0yfiJPZnRlbiIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9aRU5fSU1QQUNUPT0zfiJTb21ldGltZXMiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOX0lNUEFDVD09NH4iUmFyZWx5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIEZST1pFTl9JTVBBQ1Q9PTV+Ik5ldmVyIiwgVFJVRX5OQSkpDQpmaXJzdC5kYXRhJGZyX2ltcGFjdCA8LSBmYWN0b3IoZmlyc3QuZGF0YSRmcl9pbXBhY3QsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJOZXZlciIsIlJhcmVseSIsICJTb21ldGltZXMiLCAiT2Z0ZW4iLCJBbHdheXMiKSkNCnRhYmxlKGZpcnN0LmRhdGEkZnJfaW1wYWN0LCB1c2VOQSA9ICJhbHdheXMiKQ0KDQoNCiNSZW1vdmUgbWlzc2luZyBOPTM4MjAsIHNraXAgbG9naWMNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoRlJPWkVOX0lNUEFDVDw2KQ0KeD14dGFicyh+ZnJfaW1wYWN0K3N0YXR1cywgZGF0YT1kYXRhKQ0KcHJvcC50YWJsZSh4LDIpDQp4DQp0YWJsZShkYXRhJHN0YXR1cywgdXNlTkE9ImFsd2F5cyIpDQoNCiNvZnRlbiBhbmQgYWx3YXlzLWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQoNCm9mdGVuID0gZGF0YSAlPiUNCiAgbXV0YXRlKGZyb3plbmltcD1jYXNlX3doZW4oRlJPWkVOX0lNUEFDVDw9Mn4iT2Z0ZW5hbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZST1pFTl9JTVBBQ1Q+Mn4ib3RoZXIiKSkNCg0KdGFibGUob2Z0ZW4kZnJvemVuaW1wKQ0KeD14dGFicyh+ZnJvemVuaW1wK3N0YXR1cywgZGF0YT1vZnRlbikNCngNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KI25ldmVyIGFuZCByYXJlbHktY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCg0KbmV2ZXIgPSBkYXRhICU+JQ0KICBtdXRhdGUoZnJvemVuaW1wPWNhc2Vfd2hlbihGUk9aRU5fSU1QQUNUPj00fiJyYXJlbHluZXZlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPWkVOX0lNUEFDVDw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRmcm96ZW5pbXApDQp4PXh0YWJzKH5mcm96ZW5pbXArc3RhdHVzLCBkYXRhPW5ldmVyKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KcmVzdWx0JGV4cGVjdGVkDQpjaV9jcmFtZXJzdihyZXN1bHQpDQpgYGANCg0KIyBRdWVzdGlvbiAjODMuIERvIHlvdSBoYXZlIHBsYW50YXIgZmFzY2lpdGlzPw0KDQoqQSBDaGktc3F1YXJlIHRlc3Qgb2YgaW5kZXBlbmRlbmNlIHdhcyBjb25kdWN0ZWQgdG8gYXNzZXNzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBwbGFudGFyIGZhc2NpaXRpcyBmcm96ZW4gc2hvdWxkZXIgYW5kIG1lbm9wYXVzYWwgc3RhdHVzLiBBIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgYXNzb2NpYXRpb24gd2FzIGZvdW5kLCBYMihkZj00KT0yMS41MDYsIHA9LjAwMDI1LiBDcmFtZXIncyBWIHdhcyBzbWFsbCBhdCBWPTAuMDUxLCA5NSUgQ0koMC4wMzI4LCAwLjA3MjgpLiAqDQoNCg0KYGBge3IgUTgzfQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHBsYW50YXI9Y2FzZV93aGVuKFBMQU5UQVI9PTF+IlllcyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIFBMQU5UQVI9PTJ+Ik5vIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFBMQU5UQVI9PTR+IkkgZG9uJ3Qga25vdyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSPT0zfiJQcmVmZXIgbm90IHRvIGFuc3dlciIsIFRSVUV+TkEpKQ0KI2ZpcnN0LmRhdGEkcGxhbnRhciA8LSBmYWN0b3IoZmlyc3QuZGF0YSRwbGFudGFyLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxldmVscyA9IGMoIlllcyIsICJObyIsICJJIGRvbid0IGtub3ciLCAiUHJlZmVyIE5vdCB0byBBbnN3ZXIiKSkNCnRhYmxlKGZpcnN0LmRhdGEkcGxhbnRhciwgdXNlTkEgPSAiYWx3YXlzIikNCiNSZW1vdmUgbWlzc2luZyBOPTEsIFBOVEE9MA0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihQTEFOVEFSPT0xIHwgUExBTlRBUj09MiB8IFBMQU5UQVI9PTQpDQoNCnRhYmxlKGRhdGEkUExBTlRBUiwgdXNlTkE9ImFsd2F5cyIpDQp0YWJsZShkYXRhJHBsYW50YXIpDQpkYXRhJHBsYW50YXIgPC0gYXMuY2hhcmFjdGVyKGRhdGEkcGxhbnRhcikNCg0KeD14dGFicyh+cGxhbnRhcitzdGF0dXMsIGRhdGE9ZGF0YSkNCngNCnByb3AudGFibGUoeCwyKQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09Yyg2MSwgMjU3LCAyMTYpLA0KZGVuPWMoNjErMjErNDEzLCAyNTcrMTQ5Nis3MCwgMjE2KzMzKzE1ODApLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCg0KYGBgDQoNCiMgUXVlc3Rpb24gIzg0LiBQbGVhc2UgcmF0ZSB0aGUgZXh0ZW50IHRvIHdoaWNoIHRoZSBwbGFudGFyIGZhc2NpaXRpcyBuZWdhdGl2ZWx5IGltcGFjdCB5b3VyIHRyYWluaW5nLg0KDQoqQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiT2Z0ZW4vQWx3YXlzIiB0byBRODQgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gNy40NDY2LCBwID0uMDI0MTUuIENyYW1lcidzIFYgd2FzIG1vZGVyYXRlIGF0IFY9MC4xMSwgOTUlIENJKDAuMDYxLCAwLjIwNikuICoNCg0KKkFkZGl0aW9uYWxseSwgQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiUmFyZWx5L05ldmVyIiB0byBRODQgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWQgbm90IGRpZmZlciBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gMy40ODU5LCBwPS4xNzUuIENyYW1lcidzIFYgd2FzIHNtYWxsIGF0IFY9MC4wOCwgOTUlIENJKDAuMDAwLCAwLjE2OSkuKg0KDQpgYGB7ciBRODQsIGluY2x1ZGU9VH0NCg0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShwZl9pbXBhY3Q9Y2FzZV93aGVuKFBMQU5UQVJfSU1QQUNUPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSX0lNUEFDVD09Mn4iT2Z0ZW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgUExBTlRBUl9JTVBBQ1Q9PTN+IlNvbWV0aW1lcyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSX0lNUEFDVD09NH4iUmFyZWx5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFBMQU5UQVJfSU1QQUNUPT01fiJOZXZlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRwZl9pbXBhY3QgPC0gZmFjdG9yKGZpcnN0LmRhdGEkcGZfaW1wYWN0LCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiTmV2ZXIiLCJSYXJlbHkiLCAiU29tZXRpbWVzIiwgIk9mdGVuIiwiQWx3YXlzIikpDQp0YWJsZShmaXJzdC5kYXRhJHBmX2ltcGFjdCwgdXNlTkEgPSAiYWx3YXlzIikNCg0KDQojUmVtb3ZlIG1pc3NpbmcgTj0zNjE0LCBza2lwIGxvZ2ljDQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKFBMQU5UQVJfSU1QQUNUPDYpDQp4PXh0YWJzKH5wZl9pbXBhY3Qrc3RhdHVzLCBkYXRhPWRhdGEpDQpwcm9wLnRhYmxlKHgsMikNCngNCnRhYmxlKGRhdGEkc3RhdHVzLCB1c2VOQT0iYWx3YXlzIikNCg0KI29mdGVuIGFuZCBhbHdheXMtY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCm9mdGVuID0gZGF0YSAlPiUNCiAgbXV0YXRlKHBsYW50YXJpbXA9Y2FzZV93aGVuKFBMQU5UQVJfSU1QQUNUPD0yfiJPZnRlbmFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExBTlRBUl9JTVBBQ1Q+Mn4ib3RoZXIiKSkNCg0KdGFibGUob2Z0ZW4kcGxhbnRhcmltcCkNCng9eHRhYnMofnBsYW50YXJpbXArc3RhdHVzLCBkYXRhPW9mdGVuKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09Yyg4LCA3MiwgNDUpLA0KZGVuPWMoOCs1MywgNzIrMTg1LCA0NSsxNzEpLA0Kc3RhZ2U9YygicHJlIiwgInBlcmkiLCAicG9zdCIpDQopDQoNCnBhaXJ3aXNlLnByb3AudGVzdCh4PWIkbnVtLCBuPWIkZGVuLCBwLmFkanVzdC5tZXRob2QgPSAiaG9sbSIpDQoNCiNuZXZlciBhbmQgcmFyZWx5LWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQoNCm5ldmVyID0gZGF0YSAlPiUNCiAgbXV0YXRlKHBsYW50YXJpbXA9Y2FzZV93aGVuKFBMQU5UQVJfSU1QQUNUPj00fiJyYXJlbHluZXZlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUExBTlRBUl9JTVBBQ1Q8NH4ib3RoZXIiKSkNCg0KdGFibGUobmV2ZXIkcGxhbnRhcmltcCkNCng9eHRhYnMofnBsYW50YXJpbXArc3RhdHVzLCBkYXRhPW5ldmVyKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpgYGANCg0KIyBRdWVzdGlvbiAjODUuIEhvdyBvZnRlbiBkbyB5b3UgYWx0ZXIgeW91ciB0cmFpbmluZyBwcm9ncmFtIGR1ZSB0byBqb2ludCBwYWluLCBmcm96ZW4gc2hvdWxkZXIsIGV0Yy4gDQoqQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiT2Z0ZW4vQWx3YXlzIiB0byBRODUgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gMTAuMTE4LCBwID0gLjAwNjM1Mi4gQ3JhbWVyJ3MgViB3YXMgc21hbGwgYXQgVj0wLjA2LCA5NSUgQ0koMC4wMzAsIDAuMDkxKS4gKg0KDQoqQWRkaXRpb25hbGx5LCBBIGNoaS1zcXVhcmUgZ29vZG5lc3Mtb2YtZml0IHRlc3Qgd2FzIGNvbmR1Y3RlZCB0byBleGFtaW5lIHdobyBzYWlkICJSYXJlbHkvTmV2ZXIiIHRvIFE4NCB3ZXJlIGVxdWFsbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRocmVlIHN0YWdlcy4gVGhlIHJlc3VsdHMgaW5kaWNhdGVkIHRoYXQgdGhlIG9ic2VydmVkIGZyZXF1ZW5jaWVzIGRpZCBub3QgZGlmZmVyIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZXhwZWN0ZWQgZnJlcXVlbmNpZXMsIM+HwrIoMikgPSAzLjQ4NTksIHA9IC4xNzUuIENyYW1lcidzIFYgd2FzIHNtYWxsIGF0IFY9MC4wOCwgOTUlIENJKDAuMDAwLCAwLjE2OSkuICoNCg0KDQpgYGB7ciBRODUsIGluY2x1ZGU9VH0NCmZpcnN0LmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUoYWNoZXNfYWx0ZXI9Y2FzZV93aGVuKEFDSEVTX0FMVEVSPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFU19BTFRFUj09Mn4iT2Z0ZW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgQUNIRVNfQUxURVI9PTN+IlNvbWV0aW1lcyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFU19BTFRFUj09NH4iUmFyZWx5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIEFDSEVTX0FMVEVSPT01fiJOZXZlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRhY2hlc19hbHRlciA8LSBmYWN0b3IoZmlyc3QuZGF0YSRhY2hlc19hbHRlciwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5ldmVyIiwiUmFyZWx5IiwgIlNvbWV0aW1lcyIsICJPZnRlbiIsIkFsd2F5cyIpKQ0KdGFibGUoZmlyc3QuZGF0YSRhY2hlc19hbHRlciwgdXNlTkEgPSAiYWx3YXlzIikNCg0KDQojUmVtb3ZlIG1pc3NpbmcgTj04NTMsIHNraXAgbG9naWMNCmRhdGEgPSBmaXJzdC5kYXRhICU+JQ0KICBmaWx0ZXIoQUNIRVNfQUxURVI8NikNCng9eHRhYnMofmFjaGVzX2FsdGVyK3N0YXR1cywgZGF0YT1kYXRhKQ0KcHJvcC50YWJsZSh4LDIpDQp4DQoNCiNvZnRlbiBhbmQgYWx3YXlzLWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQpvZnRlbiA9IGRhdGEgJT4lDQogIG11dGF0ZShhY2hlc2ltcD1jYXNlX3doZW4oQUNIRVNfQUxURVI8PTJ+Ik9mdGVuYWx3YXlzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ0hFU19BTFRFUj4yfiJvdGhlciIpKQ0KDQp0YWJsZShvZnRlbiRhY2hlc2ltcCkNCng9eHRhYnMofmFjaGVzaW1wK3N0YXR1cywgZGF0YT1vZnRlbikNCngNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KYj1kYXRhLmZyYW1lKA0KbnVtPWMoNDcsIDMxMywgMzAwKSwNCmRlbj1jKDQ3KzI5NSwgMzEzKzExNTEsIDMwMCsxMTg5KSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KDQpwYWlyd2lzZS5wcm9wLnRlc3QoeD1iJG51bSwgbj1iJGRlbiwgcC5hZGp1c3QubWV0aG9kID0gImhvbG0iKQ0KDQojbmV2ZXIgYW5kIHJhcmVseS1jb21iaW5lIHJlc3BvbnNlcyBmb3IgeDIgdGVzdA0KDQpuZXZlciA9IGRhdGEgJT4lDQogIG11dGF0ZShhY2hlc2ltcD1jYXNlX3doZW4oUExBTlRBUl9JTVBBQ1Q+PTR+InJhcmVseW5ldmVyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQTEFOVEFSX0lNUEFDVDw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRhY2hlc2ltcCkNCng9eHRhYnMofmFjaGVzaW1wK3N0YXR1cywgZGF0YT1uZXZlcikNCngNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCmBgYA0KDQoNCiMgUXVlc3Rpb24gIzg2LiBGcm9tIG9uZSB3b3Jrb3V0IHRvIHRoZSBuZXh0LCBob3cgb2Z0ZW4gZG8geW91IGZlZWwgZnVsbHkgcmVjb3ZlcmVkPw0KDQoqQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiT2Z0ZW4vQWx3YXlzIiB0byBRODYgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gNDQuNTE3LCBwPC4wMDAwMDEuIENyYW1lcidzIFYgd2FzIG1vZGVyYXRlIGF0IFY9MC4xMCwgOTUlIENJKDAuMDc1LCAwLjEzNSkuKg0KDQoqQWRkaXRpb25hbGx5LCBBIGNoaS1zcXVhcmUgZ29vZG5lc3Mtb2YtZml0IHRlc3Qgd2FzIGNvbmR1Y3RlZCB0byBleGFtaW5lIHdobyBzYWlkICJSYXJlbHkvTmV2ZXIiIHRvIFE4NiB3ZXJlIGVxdWFsbHkgZGlzdHJpYnV0ZWQgYWNyb3NzIHRocmVlIHN0YWdlcy4gVGhlIHJlc3VsdHMgaW5kaWNhdGVkIHRoYXQgdGhlIG9ic2VydmVkIGZyZXF1ZW5jaWVzIGRpZmZlcmVkIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZXhwZWN0ZWQgZnJlcXVlbmNpZXMsIM+HwrIoMikgPSAxNy43MzksIHA9IC4wMDAxNC4gQ3JhbWVyJ3MgViB3YXMgc21hbGwgYXQgVj0wLjA3LCA5NSUgQ0koMC4wMzksIDAuMDk3KSoNCg0KYGBge3IgUTg2fQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHJlY292ZXI9Y2FzZV93aGVuKFJFQ09WRVJZPT0xfiJBbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBSRUNPVkVSWT09Mn4iT2Z0ZW4iLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgUkVDT1ZFUlk9PTN+IlNvbWV0aW1lcyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBSRUNPVkVSWT09NH4iUmFyZWx5IiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIFJFQ09WRVJZPT01fiJOZXZlciIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRyZWNvdmVyIDwtIGZhY3RvcihmaXJzdC5kYXRhJHJlY292ZXIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJOZXZlciIsIlJhcmVseSIsICJTb21ldGltZXMiLCAiT2Z0ZW4iLCJBbHdheXMiKSkNCnRhYmxlKGZpcnN0LmRhdGEkcmVjb3ZlciwgdXNlTkEgPSAiYWx3YXlzIikNCg0KI05vIG1pc3NpbmcgdmFsdWVzIGZvciB0aGlzIHF1ZXN0aW9uDQojZGF0YSA9IGZpcnN0LmRhdGEgJT4lIGZpbHRlcihGUk9aRU5fSU1QQUNUPDYpDQp4PXh0YWJzKH5yZWNvdmVyK3N0YXR1cywgZGF0YT1maXJzdC5kYXRhKQ0KcHJvcC50YWJsZSh4LDIpDQp4DQoNCiNvZnRlbiBhbmQgYWx3YXlzLWNvbWJpbmUgcmVzcG9uc2VzIGZvciB4MiB0ZXN0DQoNCm9mdGVuID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKHJlYz1jYXNlX3doZW4oUkVDT1ZFUlk8PTJ+Ik9mdGVuYWx3YXlzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUNPVkVSWT4yfiJvdGhlciIpKQ0KDQp0YWJsZShvZnRlbiRyZWMpDQp4PXh0YWJzKH5yZWMrc3RhdHVzLCBkYXRhPW9mdGVuKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09YygzMTgsIDkzOCwgMTExNCksDQpkZW49YygzMTgrMTc4LCA5MzgrODg1LCAxMTE0KzcxNCksDQpzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IikNCikNCg0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCg0KI25ldmVyIGFuZCByYXJlbHkNCg0KbmV2ZXIgPSBmaXJzdC5kYXRhICU+JQ0KICBtdXRhdGUocmVjPWNhc2Vfd2hlbihSRUNPVkVSWT49NH4icmFyZWx5bmV2ZXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQ09WRVJZPDR+Im90aGVyIikpDQoNCnRhYmxlKG5ldmVyJHJlYykNCng9eHRhYnMofnJlYytzdGF0dXMsIGRhdGE9bmV2ZXIpDQp4DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmI9ZGF0YS5mcmFtZSgNCm51bT1jKDMwLCAyMTcsIDE2NiksDQpkZW49YygzMCs0NjYsIDIxNysxNjA2LCAxNjYrMTY2MyksDQpzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IikNCikNCg0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCg0KYGBgDQoNCiMgUXVlc3Rpb24gIzg3LiBEbyB5b3UgZXhwZXJpZW5jZSB1cmluYXJ5IGluY29udGluZW5jZT8NCg0KKkEgQ2hpLXNxdWFyZSB0ZXN0IG9mIGluZGVwZW5kZW5jZSB3YXMgY29uZHVjdGVkIHRvIGFzc2VzcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gaW5jb250aW5lbmNlIGFuZCBtZW5vcGF1c2FsIHN0YXR1cy4gQSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGFzc29jaWF0aW9uIHdhcyBub3QgZm91bmQsIFgyKGRmPTIpPTIxLjY5OSwgcD0uMDAwMDE5LiBDcmFtZXIncyBWIHdhcyBzbWFsbCBhdCBWPTAuMDcsIDk1JSBDSSgwLjA0NTQsIDAuMTAzOCkuICoNCg0KYGBge3IgUTg3fQ0KDQpmaXJzdC5kYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgbXV0YXRlKGluY29udD1jYXNlX3doZW4oSU5DT05USU5FTkNFPT0xfiJZZXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRJTkVOQ0U9PTJ+Ik5vIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIElOQ09OVElORU5DRT09M34iUHJlZmVyIG5vdCB0byBhbnN3ZXIiLCBUUlVFfk5BKSkNCmZpcnN0LmRhdGEkaW5jb250IDwtIGZhY3RvcihmaXJzdC5kYXRhJGluY29udCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIlllcyIsICJObyIsICJQcmVmZXIgTm90IHRvIEFuc3dlciIpKQ0KdGFibGUoZmlyc3QuZGF0YSRpbmNvbnQsIHVzZU5BID0gImFsd2F5cyIpDQojUmVtb3ZlIG1pc3NpbmcgTj04LCBJREs9MCwgUE5UQT0wDQpkYXRhID0gZmlyc3QuZGF0YSAlPiUNCiAgZmlsdGVyKGluY29udDwzKQ0KDQpmaXJzdC5kYXRhJGluY29udCA8LSBhcy5jaGFyYWN0ZXIoZmlyc3QuZGF0YSRpbmNvbnQpDQoNCng9eHRhYnMofmluY29udCtzdGF0dXMsIGRhdGE9Zmlyc3QuZGF0YSkNCngNCnByb3AudGFibGUoeCwyKQ0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KDQpiPWRhdGEuZnJhbWUoDQpudW09YygxNDIsIDcyNywgNjU3KSwNCmRlbj1jKDE0MiszNTEsIDcyNysxMDk0LCA2NTcrMTE2OSksDQpzdGFnZT1jKCJwcmUiLCAicGVyaSIsICJwb3N0IikNCikNCg0KcGFpcndpc2UucHJvcC50ZXN0KHg9YiRudW0sIG49YiRkZW4sIHAuYWRqdXN0Lm1ldGhvZCA9ICJob2xtIikNCmBgYA0KDQoNCiMgUXVlc3Rpb24gIzg4LiBXaGF0IGRvIHlvdSBiZWxpZXZlIHdhcyB0aGUgY2F1c2Ugb2YgeW91ciB1cmluYXJ5IGluY29udGluZW5jZT8NCg0KKkEgQ2hpLXNxdWFyZSB0ZXN0IG9mIGluZGVwZW5kZW5jZSB3YXMgY29uZHVjdGVkIHRvIGFzc2VzcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gIG1lbm9wYXVzYWwgc3RhdHVzIGFuZCBRODggcmVzcG9uc2UuIEEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBhc3NvY2lhdGlvbiB3YXMgZm91bmQsIFgyKGRmPTIpPTEwNy4xLCBwPC4wMDAwMS4gQ3JhbWVyJ3MgViB3YXMgbW9kZXJhdGUgYXQgVj0wLjE5LCA5NSUgQ0koMC4xNTMsIDAuMjIzKS4qDQoNCmBgYHtyIFE4OH0NCnRhYmxlKGZpcnN0LmRhdGEkSU5DT05UX0NBVVNFKQ0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShjYXVzZT1jYXNlX3doZW4oSU5DT05UX0NBVVNFPT0xfiJNZW5vcGF1c2UiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfQ0FVU0U9PTJ+IkNoaWxkYmlydGgiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DT05UX0NBVVNFPT0zfiJPdGhlciIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfQ0FVU0U9PTR+IkkgZG9uJ3Qga25vdyIsIFRSVUV+TkEpKQ0KZmlyc3QuZGF0YSRjYXVzZSA8LSBmYWN0b3IoZmlyc3QuZGF0YSRjYXVzZSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk1lbm9wYXVzZSIsICJDaGlsZGJpcnRoIiwgIk90aGVyIiwiSSBkb24ndCBrbm93IikpDQp0YWJsZShmaXJzdC5kYXRhJGNhdXNlLCB1c2VOQSA9ICJhbHdheXMiKQ0KI1JlbW92ZSBtaXNzaW5nIE49MjYyMiwgSURLPTAsIFBOVEE9MA0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihJTkNPTlRfQ0FVU0U8NSkNCg0KZGF0YSRjYXVzZSA8LSBhcy5jaGFyYWN0ZXIoZGF0YSRjYXVzZSkNCg0KeD14dGFicyh+Y2F1c2Urc3RhdHVzLCBkYXRhPWRhdGEpDQp4DQpwcm9weD1wcm9wLnRhYmxlKHgsMikNCnByb3B4DQpyZXN1bHQ9Y2hpc3EudGVzdCh4KQ0KcmVzdWx0DQpjaV9jcmFtZXJzdihyZXN1bHQpDQoNCmdnLmRhdGE9YXMuZGF0YS5mcmFtZShwcm9weCkNCg0KZ2cuZGF0YSRjYXVzZT1mYWN0b3IoZ2cuZGF0YSRjYXVzZSwgDQogICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJNZW5vcGF1c2UiLCAiQ2hpbGRiaXJ0aCIsICJPdGhlciIsIkkgZG9uJ3Qga25vdyIpKQ0KDQpnZ3Bsb3QoZ2cuZGF0YSwgYWVzKHggPSBzdGF0dXMsIHkgPSBGcmVxLCBmaWxsID0gY2F1c2UpKSArDQogIGdlb21fY29sKHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjkpKSArDQogIGdlb21fdGV4dChhZXMobGFiZWwgPSByb3VuZChGcmVxLDIpKSwNCiAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC45KSwgdmp1c3QgPSAtMC4zLCBzaXplID0gMykrDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnQpICsNCiAgbGFicyh4ID0gIk1lbm9wYXVzYWwgU3RhdHVzIiwgeSA9ICJSZWxhdGl2ZSBGcmVxdWVuY3kiLCBmaWxsID0gIkNhdXNlIikgKw0KICB0aGVtZV9idygpDQoNCmdncGxvdChnZy5kYXRhLA0KICAgICAgIGFlcyh4ID0gc3RhdHVzLA0KICAgICAgICAgICB5ID0gRnJlcSwNCiAgICAgICAgICAgZ3JvdXAgPSBjYXVzZSwNCiAgICAgICAgICAgY29sb3IgPSBjYXVzZSkpICsNCiAgZ2VvbV9saW5lKGxpbmV3aWR0aCA9IDEpICsNCiAgZ2VvbV9wb2ludChzaXplID0gMykgKw0KICBnZW9tX3RleHQoDQogICAgYWVzKGxhYmVsID0gcm91bmQoRnJlcSwyKSwgdmp1c3QgPSAtMC41ICApKSArDQogICNzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gRnJlcSkgKw0KICBsYWJzKA0KICAgIHggPSAiTWVub3BhdXNhbCBTdGF0dXMiLA0KICAgIHkgPSAiUmVsYXRpdmUgRnJlcXVlbmN5IiwNCiAgICBjb2xvciA9ICJDYXVzZSINCiAgKSArDQogIHRoZW1lX2J3KCkNCg0KYGBgDQoNCg0KIyBRdWVzdGlvbiAjODkuIFBsZWFzZSByYXRlIHRoZSBleHRlbnQgdG8gd2hpY2ggdXJpbmFyeSBpbmNvbnRpbmVuY2UgaW1wYWN0cyB5b3VyIGRlc2lyZSB0byBlbmdhZ2UgaW4gZXhlcmNpc2UuIA0KDQoqQSBjaGktc3F1YXJlIGdvb2RuZXNzLW9mLWZpdCB0ZXN0IHdhcyBjb25kdWN0ZWQgdG8gZXhhbWluZSB3aG8gc2FpZCAiT2Z0ZW4vQWx3YXlzIiB0byBRODkgd2VyZSBlcXVhbGx5IGRpc3RyaWJ1dGVkIGFjcm9zcyB0aHJlZSBzdGFnZXMuIFRoZSByZXN1bHRzIGluZGljYXRlZCB0aGF0IHRoZSBvYnNlcnZlZCBmcmVxdWVuY2llcyBkaWZmZXJlZCBzaWduaWZpY2FudGx5IGZyb20gdGhlIGV4cGVjdGVkIGZyZXF1ZW5jaWVzLCDPh8KyKDIpID0gOC4zNjM2LCBwID0gLjAxNTI3LiBDcmFtZXIncyBWIHdhcyBzbWFsbCBhdCBWPTAuMDc0LCA5NSUgQ0koMC4wMzksIDAuMTI2KS4qDQoNCipBZGRpdGlvbmFsbHksIEEgY2hpLXNxdWFyZSBnb29kbmVzcy1vZi1maXQgdGVzdCB3YXMgY29uZHVjdGVkIHRvIGV4YW1pbmUgd2hvIHNhaWQgIlJhcmVseS9OZXZlciIgdG8gUTg5IHdlcmUgZXF1YWxseSBkaXN0cmlidXRlZCBhY3Jvc3MgdGhyZWUgc3RhZ2VzLiBUaGUgcmVzdWx0cyBpbmRpY2F0ZWQgdGhhdCB0aGUgb2JzZXJ2ZWQgZnJlcXVlbmNpZXMgZGlkIG5vdCBkaWZmZXIgc2lnbmlmaWNhbnRseSBmcm9tIHRoZSBleHBlY3RlZCBmcmVxdWVuY2llcywgz4fCsigyKSA9IDIuMzgyNiwgcD0gLjMwMzguQ3JhbWVyJ3MgViB3YXMgc21hbGwgYXQgVj0wLjA0LCA5NSUgQ0koMC4wMDAsIDAuMDkxKSAqDQoNCmBgYHtyIFE4OX0NCg0KZmlyc3QuZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIG11dGF0ZShpbl9pbXBhY3Q9Y2FzZV93aGVuKElOQ09OVF9JTVBBQ1Q9PTF+IkFsd2F5cyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgIElOQ09OVF9JTVBBQ1Q9PTJ+Ik9mdGVuIiwgDQogICAgICAgICAgICAgICAgICAgICAgICAgIElOQ09OVF9JTVBBQ1Q9PTN+IlNvbWV0aW1lcyIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICBJTkNPTlRfSU1QQUNUPT00fiJSYXJlbHkiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DT05UX0lNUEFDVD09NX4iTmV2ZXIiLCBUUlVFfk5BKSkNCmZpcnN0LmRhdGEkaW5faW1wYWN0IDwtIGZhY3RvcihmaXJzdC5kYXRhJGluX2ltcGFjdCwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk5ldmVyIiwiUmFyZWx5IiwgIlNvbWV0aW1lcyIsICJPZnRlbiIsIkFsd2F5cyIpKQ0KdGFibGUoZmlyc3QuZGF0YSRpbl9pbXBhY3QsIHVzZU5BID0gImFsd2F5cyIpDQoNCg0KI1JlbW92ZSBtaXNzaW5nIE49MjYyMiwgc2tpcCBsb2dpYw0KZGF0YSA9IGZpcnN0LmRhdGEgJT4lDQogIGZpbHRlcihJTkNPTlRfSU1QQUNUPDYpDQp4PXh0YWJzKH5pbl9pbXBhY3Qrc3RhdHVzLCBkYXRhPWRhdGEpDQpwcm9wLnRhYmxlKHgsMikNCngNCg0KI29mdGVuIGFuZCBhbHdheXMtY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCm9mdGVuID0gZGF0YSAlPiUNCiAgbXV0YXRlKGluY2ltcD1jYXNlX3doZW4oSU5DT05UX0lNUEFDVDw9Mn4iT2Z0ZW5hbHdheXMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOQ09OVF9JTVBBQ1Q+Mn4ib3RoZXIiKSkNCg0KdGFibGUob2Z0ZW4kaW5jaW1wKQ0KeD14dGFicyh+aW5jaW1wK3N0YXR1cywgZGF0YT1vZnRlbikNCngNCnJlc3VsdD1jaGlzcS50ZXN0KHgpDQpyZXN1bHQNCmNpX2NyYW1lcnN2KHJlc3VsdCkNCg0KYj1kYXRhLmZyYW1lKA0KbnVtPWMoMTYsIDkyLCA1MiksDQpkZW49YygxNisxMjYsIDkyKzYzNSwgNTIrNjA1KSwNCnN0YWdlPWMoInByZSIsICJwZXJpIiwgInBvc3QiKQ0KKQ0KDQpwYWlyd2lzZS5wcm9wLnRlc3QoeD1iJG51bSwgbj1iJGRlbiwgcC5hZGp1c3QubWV0aG9kID0gImhvbG0iKQ0KI25ldmVyIGFuZCByYXJlbHktY29tYmluZSByZXNwb25zZXMgZm9yIHgyIHRlc3QNCg0KbmV2ZXIgPSBkYXRhICU+JQ0KICBtdXRhdGUoaW5jaW1wPWNhc2Vfd2hlbihJTkNPTlRfSU1QQUNUPj00fiJyYXJlbHluZXZlciIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5DT05UX0lNUEFDVDw0fiJvdGhlciIpKQ0KDQp0YWJsZShuZXZlciRpbmNpbXApDQp4PXh0YWJzKH5pbmNpbXArc3RhdHVzLCBkYXRhPW5ldmVyKQ0KeA0KcmVzdWx0PWNoaXNxLnRlc3QoeCkNCnJlc3VsdA0KY2lfY3JhbWVyc3YocmVzdWx0KQ0KYGBgDQoNCg==