Jewish Relief Agency
Client Survey 2026
This summary compiles information on survey data collected
anonymously from JRA recipients in 2026. Surveys included demographics
questions, food insecurity questions, and satisfaction questions
regarding JRA services. In January, the survey was sent to 1,800
households.
Demographics
JRA Services
What is your overall satisfaction with the food box you receive from
JRA?
|
|
Total (n)
|
Percentage (%)
|
|
Very satisfied
|
416
|
61.4
|
|
Satisfied
|
248
|
36.6
|
|
Dissatisfied
|
10
|
1.5
|
|
Very dissatisfied
|
4
|
0.6
|
How important is the delivery aspect of JRA’s services?
|
|
Total (n)
|
Percentage (%)
|
|
Absolutely Essential
|
468
|
69.4
|
|
Important
|
205
|
30.4
|
|
Not Important
|
1
|
0.1
|
Because of the relief I receive from JRA services, I am able to save
money to put towards paying my monthly bills
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
360
|
53.9
|
|
Agree
|
258
|
38.6
|
|
Disagree
|
47
|
7.0
|
|
Strongly Disagree
|
3
|
0.4
|
Because of the JRA food box, I am less worried about having enough food
each month.
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
292
|
43.8
|
|
Agree
|
330
|
49.5
|
|
Disagree
|
39
|
5.9
|
|
Strongly Disagree
|
5
|
0.8
|
JRA Services
Because of the JRA food box, I have access to more nutritious food.
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
291
|
44.0
|
|
Agree
|
322
|
48.6
|
|
Disagree
|
48
|
7.3
|
|
Strongly Disagree
|
1
|
0.2
|
Because of a current illness or disability, I am unable to get to a food
store and therefore consider JRA’s services critical.
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
225
|
34.4
|
|
Agree
|
264
|
40.3
|
|
Disagree
|
137
|
20.9
|
|
Strongly Disagree
|
29
|
4.4
|
The food and other supplies delivered by JRA improve the health of the
individuals in my household
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
292
|
44.6
|
|
Agree
|
322
|
49.2
|
|
Disagree
|
37
|
5.7
|
|
Strongly Disagree
|
3
|
0.5
|
Because of the food and other critical supplies delivered by JRA, I am
able to live more independently
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
249
|
38.0
|
|
Agree
|
353
|
53.8
|
|
Disagree
|
52
|
7.9
|
|
Strongly Disagree
|
2
|
0.3
|
Because of JRA’s services, I feel less isolated
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
243
|
37.3
|
|
Agree
|
345
|
52.9
|
|
Disagree
|
61
|
9.4
|
|
Strongly Disagree
|
3
|
0.5
|
I look forward to interacting with the JRA volunteer who delivers my
food
|
|
Total (n)
|
Percentage (%)
|
|
Strongly Agree
|
248
|
38.2
|
|
Agree
|
352
|
54.2
|
|
Disagree
|
47
|
7.2
|
|
Strongly Disagree
|
3
|
0.5
|
Select up to 5 items from the JRA Food Box from the following list that
are your favorite or most helpful.
|
Items
|
Total (n)
|
Percentage (%)
|
|
Toilet paper
|
543
|
72.2
|
|
Dry Beans
|
130
|
17.3
|
|
Cereal
|
243
|
32.3
|
|
Canned tuna
|
340
|
45.2
|
|
Salmon
|
386
|
51.3
|
|
Oatmeal
|
342
|
45.5
|
|
Pasta/noodles
|
401
|
53.3
|
|
Canned soup
|
126
|
16.8
|
|
Nuts
|
419
|
55.7
|
|
Peanut butter
|
204
|
27.1
|
|
Applesauce
|
306
|
40.7
|
|
Canned Beans
|
160
|
21.3
|
|
Canned Fruit
|
347
|
46.1
|
|
Canned Vegetables
|
169
|
22.5
|
|
Dry Soup Mix
|
130
|
17.3
|
|
Oil
|
493
|
65.6
|
|
Mayonaisse
|
347
|
46.1
|
Challenges you may
face
Within the past 12 months, we worried whether our food would run out
before we got money to buy more
|
|
Total (n)
|
Percentage (%)
|
|
Often true
|
214
|
37.2
|
|
Sometimes true
|
277
|
48.2
|
|
Never true
|
84
|
14.6
|
|
Don’t know
|
0
|
0.0
|
Within the past 12 months, the food that we bought just didn’t last and
we didn’t have money to get more
|
|
Total (n)
|
Percentage (%)
|
|
Often true
|
152
|
26.9
|
|
Sometimes true
|
255
|
45.1
|
|
Never true
|
159
|
28.1
|
|
Don’t know
|
0
|
0.0
|
Select up to 5 items from the JRA Food Box from the following list that
are your favorite or most helpful.
|
Items
|
Total (n)
|
Percentage (%)
|
|
Housing costs
|
543
|
72.2
|
|
Utility costs
|
130
|
17.3
|
|
transportation costs
|
243
|
32.3
|
|
Medical expenses
|
340
|
45.2
|
|
Childcare costs
|
386
|
51.3
|
|
Taxes
|
342
|
45.5
|
How often in the last 12 months did you or someone your household visit
a food pantry?
|
|
Total (n)
|
Percentage (%)
|
|
More than once a month
|
128
|
20.6
|
|
Once a month
|
170
|
27.4
|
|
Once every few months
|
68
|
11.0
|
|
Once or twice a year
|
57
|
9.2
|
|
Never
|
198
|
31.9
|
How often in the last 12 months did your household have food delivered
from a pantry other than JRA?
|
|
Total (n)
|
Percentage (%)
|
|
More than once a month
|
45
|
7.3
|
|
Once a month
|
181
|
29.3
|
|
Once every few months
|
23
|
3.7
|
|
Once or twice a year
|
19
|
3.1
|
|
Never
|
350
|
56.6
|
Culture and the
Jewish Community
Do you or anyone in your household identify as Jewish?
|
|
Total (n)
|
Percentage (%)
|
|
Yes
|
344
|
53.7
|
|
No
|
297
|
46.3
|
Does receiving a box of kosher food from JRA make you feel cared for by
the Jewish community?
|
|
Total (n)
|
Percentage (%)
|
|
Yes
|
329
|
97.3
|
|
No
|
9
|
2.7
|
Does receiving special foods for Jewish holidays in the JRA box enable
you to have a more meaningful celebration?
|
|
Total (n)
|
Percentage (%)
|
|
Yes
|
330
|
97.3
|
|
No
|
8
|
2.4
|
|
I do not identify as Jewish
|
1
|
0.3
|
Do you keep a kosher home?
|
|
Total (n)
|
Percentage (%)
|
|
Yes
|
125
|
37.8
|
|
No
|
206
|
62.2
|
Do you or someone currently living in your household identify as a
Holocaust Survivor?
|
|
Total (n)
|
Percentage (%)
|
|
Yes
|
147
|
44.1
|
|
No
|
186
|
55.9
|
Family Friendly Food
Program
Do you receive FF food bag?
|
|
Total (n)
|
Percentage (%)
|
|
Yes
|
230
|
38.6
|
|
No
|
366
|
61.4
|
What is your overall satisfaction with the food provided in the Family
Friendly Food Program/Blue Bag?
|
|
Total (n)
|
Percentage (%)
|
|
Very satisfied
|
151
|
66.2
|
|
Satisfied
|
76
|
33.3
|
|
Dissatisfied
|
0
|
0.0
|
|
Very dissatisfied
|
1
|
0.4
|
Select from the following list your top 4 favorite/helpful items in the
Family Friendly Food Program (Blue Bag).
|
Items
|
Total (n)
|
Percentage (%)
|
|
Peanut butter
|
74
|
9.8
|
|
Jam/jelly
|
111
|
14.8
|
|
Crackers
|
135
|
18
|
|
Pretzels
|
103
|
13.7
|
|
Granola bars
|
67
|
8.9
|
|
Instant oatmeal
|
NA
|
NA
|
|
Fruit cups
|
148
|
19.7
|
|
Cookies
|
49
|
6.5
|
|
Banana chips
|
74
|
9.8
|
What is your overall satisfaction with the food provided in the Family
Friendly Food Program/Blue Bag?
|
|
Total (n)
|
Percentage (%)
|
|
Very satisfied
|
141
|
62.9
|
|
Satisfied
|
64
|
28.6
|
|
Dissatisfied
|
1
|
0.4
|
|
Very dissatisfied
|
0
|
0.0
|
|
I have not received Summer Fresh Produce Boxes yet.
|
18
|
8.0
|
Period Packs
Program
Do you receive the PP orange bag?
|
|
Total (n)
|
Percentage (%)
|
|
Yes
|
180
|
30.3
|
|
No
|
414
|
69.7
|
What is your overall satisfaction with JRA’s Period Packs Program?
|
|
Total (n)
|
Percentage (%)
|
|
Very satisfied
|
145
|
81.5
|
|
Satisfied
|
29
|
16.3
|
|
Dissatisfied
|
4
|
2.2
|
|
Very dissatisfied
|
0
|
0.0
|
Select the statements below that you agree with regarding period
products. Check all that apply.
|
Items
|
Total (n)
|
Percentage (%)
|
|
Worn longer than recommended
|
97
|
53.9
|
|
Asked a friend or classmate
|
39
|
21.7
|
|
asked a stranger
|
16
|
8.9
|
|
Unable to focus
|
6
|
3.3
|
|
Stressed or embarrassed
|
35
|
19.4
|
Select from the following list your top 2 favorite/helpful items in the
Period Products Bag.
|
Items
|
Total (n)
|
Percentage (%)
|
|
Overnight Maxi Pads
|
85
|
47.2
|
|
Regular Maxi Pads w/wings
|
128
|
71.1
|
|
Tampons
|
50
|
27.8
|
|
Pantiliners
|
54
|
30
|
How long do the supplies you receive in the Period Products (Orange) Bag
last?
|
|
Total (n)
|
Percentage (%)
|
|
1 month
|
84
|
47.5
|
|
2 months
|
73
|
41.2
|
|
3 months
|
20
|
11.3
|
LS0tDQp0aXRsZTogIjIwMjYgSlJBIEV4ZWN1dGl2ZSBTdW1tYXJ5Ig0KYXV0aG9yOiAiIg0KZGF0ZTogImByIFN5cy5EYXRlKClgIg0Kb3V0cHV0Og0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICB0b2NfY29sbGFwc2VkOiB5ZXMNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICB0aGVtZTogbHVtZW4NCiAgcGRmX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIGZpZ19jYXB0aW9uOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIGZpZ193aWR0aDogMw0KICAgIGZpZ19oZWlnaHQ6IDMNCiAgd29yZF9kb2N1bWVudDogDQogICAgdG9jOiB5ZXMNCiAgICB0b2NfZGVwdGg6IDQNCiAgICBmaWdfY2FwdGlvbjogeWVzDQogICAga2VlcF9tZDogeWVzDQplZGl0b3Jfb3B0aW9uczogDQogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUNCi0tLQ0KDQpgYGB7Y3NzLCBlY2hvID0gRkFMU0V9DQojVE9DOjpiZWZvcmUgew0KICBjb250ZW50OiAiVGFibGUgb2YgQ29udGVudHMiOw0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1zaXplOiAxLjJlbTsNCiAgZGlzcGxheTogYmxvY2s7DQogIGNvbG9yOiBuYXZ5Ow0KICBtYXJnaW4tYm90dG9tOiAxMHB4Ow0KfQ0KDQoNCmRpdiNUT0MgbGkgeyAgICAgLyogdGFibGUgb2YgY29udGVudCAgKi8NCiAgICBsaXN0LXN0eWxlOnVwcGVyLXJvbWFuOw0KICAgIGJhY2tncm91bmQtaW1hZ2U6bm9uZTsNCiAgICBiYWNrZ3JvdW5kLXJlcGVhdDpub25lOw0KICAgIGJhY2tncm91bmQtcG9zaXRpb246MDsNCn0NCg0KaDEudGl0bGUgeyAgICAvKiBsZXZlbCAxIGhlYWRlciBvZiB0aXRsZSAgKi8NCiAgZm9udC1zaXplOiAyMnB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KfQ0KDQpoNC5hdXRob3IgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICBmb250LXNpemU6IDE1cHg7DQogIGZvbnQtd2VpZ2h0OiBib2xkOw0KICBmb250LWZhbWlseTogc3lzdGVtLXVpOw0KICBjb2xvcjogbmF2eTsNCiAgdGV4dC1hbGlnbjogY2VudGVyOw0KfQ0KDQpoNC5kYXRlIHsgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LXdlaWdodDogYm9sZDsNCiAgZm9udC1mYW1pbHk6ICJHaWxsIFNhbnMiLCBzYW5zLXNlcmlmOw0KICBjb2xvcjogRGFya0JsdWU7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCg0KaDEgeyAvKiBIZWFkZXIgMSAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMjBweDsNCiAgICBmb250LXdlaWdodDogYm9sZDsNCiAgICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgICBjb2xvcjogZGFya3JlZDsNCiAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KfQ0KDQpoMiB7IC8qIEhlYWRlciAyIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBuYXZ5Ow0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQoNCmgzIHsgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE2cHg7DQogICAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KaDQgeyAvKiBIZWFkZXIgNCAtIGFuZCB0aGUgYXV0aG9yIGFuZCBkYXRhIGhlYWRlcnMgdXNlIHRoaXMgdG9vICAqLw0KICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgZm9udC13ZWlnaHQ6IGJvbGQ7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCg0KLyogQWRkIGRvdHMgYWZ0ZXIgbnVtYmVyZWQgaGVhZGVycyAqLw0KLmhlYWRlci1zZWN0aW9uLW51bWJlcjo6YWZ0ZXIgew0KICBjb250ZW50OiAiLiI7DQoNCmJvZHkgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCi5oaWdobGlnaHRtZSB7IGJhY2tncm91bmQtY29sb3I6eWVsbG93OyB9DQoNCnAgeyBiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyB9DQoNCn0NCmBgYA0KDQpgYGB7ciBzZXR1cCwgY29tbWVudD1OQSwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRSwgY29tbWVudD1OQSkNCg0Kc2V0d2QoIkM6L1VzZXJzLzc1TFBZT1RUL09uZURyaXZlIC0gV2VzdCBDaGVzdGVyIFVuaXZlcnNpdHkgb2YgUEEvRGVza3RvcC9KUkEyMDIyIikNCmxpYnJhcnkoZHBseXIpDQpsaWJyYXJ5KHN1bW1hcnl0b29scykNCmxpYnJhcnkocXVlc3Rpb25yKQ0KbGlicmFyeShrYWJsZUV4dHJhKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHNwbGl0c3RhY2tzaGFwZSkNCg0KDQpkYXRhPXJlYWQuY3N2KCJKUkEgZGF0YSB3aXRoIGxhYmVscyAyMDI2LmNzdiIsIGhlYWRlcj1UKQ0KdG90YWxuPW5yb3coZGF0YSkNCnJlc3BvbnNlcmF0ZT1yb3VuZCgxMDAqKHRvdGFsbi8yMzAwKSwgMSkNCmBgYA0KDQoNCiMgSmV3aXNoIFJlbGllZiBBZ2VuY3kgQ2xpZW50IFN1cnZleSAyMDI2DQoNClRoaXMgc3VtbWFyeSBjb21waWxlcyBpbmZvcm1hdGlvbiBvbiBzdXJ2ZXkgZGF0YSBjb2xsZWN0ZWQgYW5vbnltb3VzbHkgZnJvbSBKUkEgcmVjaXBpZW50cyBpbiAyMDI2LiBTdXJ2ZXlzIGluY2x1ZGVkIGRlbW9ncmFwaGljcyBxdWVzdGlvbnMsIGZvb2QgaW5zZWN1cml0eSBxdWVzdGlvbnMsIGFuZCBzYXRpc2ZhY3Rpb24gcXVlc3Rpb25zIHJlZ2FyZGluZyBKUkEgc2VydmljZXMuIEluIEphbnVhcnksIHRoZSBzdXJ2ZXkgd2FzIHNlbnQgdG8gMSw4MDAgaG91c2Vob2xkcy4gIA0KDQoNCg0KYGBge3Igc3VtbWFyeSwgaW5jbHVkZT1GQUxTRX0NCg0KI0hDIEhvbG9jYXVzdD15ZXMgaXMgcmVzcG9uZGVudHMgd2hvIGlkZW50aWZpZWQgYXMgSEMNCkhDID0gZmlsdGVyKGRhdGEsIFEyMz09IlllcyIpDQp0b3RhbEhDPW5yb3coSEMpDQojRmFtaWx5IGZyaWVuZGx5IHN1cnZleXMNCkJCPWZpbHRlcihkYXRhLCBRMjU9PSJZZXMiKQ0KdG90YWxGRj0gbnJvdyhCQikNCiNQUA0KUFA9ZmlsdGVyKGRhdGEsIFEzMT09IlllcyIpDQp0b3RhbFBQPW5yb3coUFApDQpgYGANCg0KDQoNCiMjIERlbW9ncmFwaGljcw0KDQoNCg0KDQpgYGAge3IgZGVtb2d9DQoNCg0KYGBgDQoNCiMjIEpSQSBTZXJ2aWNlcw0KDQpgYGB7ciBRM30NCg0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTNGID0gZmFjdG9yKA0KICAgIFEzLA0KICAgIGxldmVscyA9IGMoIlZlcnkgc2F0aXNmaWVkIiwgIlNhdGlzZmllZCIsICJEaXNzYXRpc2ZpZWQiLCAiVmVyeSBkaXNzYXRpc2ZpZWQiKSkpDQoNCnFjMz10YWJsZShkYXRhJFEzRikNCnFwMz0xMDAqcHJvcC50YWJsZShxYzMpDQoNCnEzPWNiaW5kKHFjMywgcXAzKQ0KDQpxMyAlPiUNCiAga2JsKGRpZ2l0cz0xLGNhcHRpb249IldoYXQgaXMgeW91ciBvdmVyYWxsIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBmb29kIGJveCB5b3UgcmVjZWl2ZSBmcm9tIEpSQT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCiANCg0KYGBge3IgUTR9DQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFE0RiA9IGZhY3RvcigNCiAgICBRNCwNCiAgICBsZXZlbHMgPSBjKCJBYnNvbHV0ZWx5IEVzc2VudGlhbCIsICJJbXBvcnRhbnQiLCAiTm90IEltcG9ydGFudCIpKSkNCg0KcWM0PXRhYmxlKGRhdGEkUTRGKQ0KcXA0PTEwMCpwcm9wLnRhYmxlKHFjNCkNCg0KcTQ9Y2JpbmQocWM0LCBxcDQpDQpxNCAlPiUNCiBrYmwoZGlnaXRzPTEsY2FwdGlvbj0iSG93IGltcG9ydGFudCBpcyB0aGUgZGVsaXZlcnkgYXNwZWN0IG9mIEpSQeKAmXMgc2VydmljZXM/IiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KDQogDQoNCg0KYGBge3IgUTV9DQojIyNRdWVzdGlvbiA1IEJlY2F1c2Ugb2YgdGhlIHJlbGllZiBJIHJlY2VpdmUgZnJvbSBKUkEgc2VydmljZXMsIEkgYW0gYWJsZSB0byBzYXZlIG1vbmV5IHRvIHB1dCAjIyB0b3dhcmRzIHBheWluZyBteSBtb250aGx5IGJpbGxzIg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRNUYgPSBmYWN0b3IoDQogICAgUTUsDQogICAgbGV2ZWxzID0gYygiU3Ryb25nbHkgQWdyZWUiLCAiQWdyZWUiLCAiRGlzYWdyZWUiLCAiU3Ryb25nbHkgRGlzYWdyZWUiKSkpDQoNCnFjNT10YWJsZShkYXRhJFE1RikNCnFwNT0xMDAqcHJvcC50YWJsZShxYzUpDQoNCnE1PWNiaW5kKHFjNSwgcXA1KQ0KcTUgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iQmVjYXVzZSBvZiB0aGUgcmVsaWVmIEkgcmVjZWl2ZSBmcm9tIEpSQSBzZXJ2aWNlcywgSSBhbSBhYmxlIHRvIHNhdmUgbW9uZXkgdG8gcHV0IHRvd2FyZHMgcGF5aW5nIG15IG1vbnRobHkgYmlsbHMiLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCmBgYA0KDQogDQoNCg0KYGBge3IgUTZ9DQoNCiMjQmVjYXVzZSBvZiB0aGUgSlJBIGZvb2QgYm94LCBJIGFtIGxlc3Mgd29ycmllZCBhYm91dCBoYXZpbmcgZW5vdWdoIGZvb2QgZWFjaCBtb250aC4NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFE2RiA9IGZhY3RvcigNCiAgICBRNiwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWM2PXRhYmxlKGRhdGEkUTZGKQ0KcXA2PTEwMCpwcm9wLnRhYmxlKHFjNikNCg0KcTY9Y2JpbmQocWM2LCBxcDYpDQpxNiAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJCZWNhdXNlIG9mIHRoZSBKUkEgZm9vZCBib3gsIEkgYW0gbGVzcyB3b3JyaWVkIGFib3V0IGhhdmluZyBlbm91Z2ggZm9vZCBlYWNoIG1vbnRoLiIsIA0KICAgICAgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KIyMgSlJBIFNlcnZpY2VzDQoNCmBgYHtyIFE3fQ0KDQojI0JlY2F1c2Ugb2YgdGhlIEpSQSBmb29kIGJveCwgSSBoYXZlIGFjY2VzcyB0byBtb3JlIG51dHJpdGlvdXMgZm9vZC4NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFE3RiA9IGZhY3RvcigNCiAgICBRNywNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWM3PXRhYmxlKGRhdGEkUTdGKQ0KcXA3PTEwMCpwcm9wLnRhYmxlKHFjNykNCg0KDQpxNz1jYmluZChxYzcsIHFwNykNCnE3ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkJlY2F1c2Ugb2YgdGhlIEpSQSBmb29kIGJveCwgSSBoYXZlIGFjY2VzcyB0byBtb3JlIG51dHJpdGlvdXMgZm9vZC4iLCANCiAgICAgIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQogDQoNCmBgYHtyIFE4fQ0KDQojIEJlY2F1c2Ugb2YgYSBjdXJyZW50IGlsbG5lc3Mgb3IgZGlzYWJpbGl0eSwgSSBhbSB1bmFibGUgdG8gZ2V0IHRvIGEgZm9vZCBzdG9yZSBhbmQgdGhlcmVmb3JlIGNvbnNpZGVyIEpSQeKAmXMgc2VydmljZXMgY3JpdGljYWwuDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShROEYgPSBmYWN0b3IoDQogICAgUTgsDQogICAgbGV2ZWxzID0gYygiU3Ryb25nbHkgQWdyZWUiLCAiQWdyZWUiLCAiRGlzYWdyZWUiLCAiU3Ryb25nbHkgRGlzYWdyZWUiKSkpDQoNCnFjOD10YWJsZShkYXRhJFE4RikNCnFwOD0xMDAqcHJvcC50YWJsZShxYzgpDQoNCnE4PWNiaW5kKHFjOCwgcXA4KQ0KcTglPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJCZWNhdXNlIG9mIGEgY3VycmVudCBpbGxuZXNzIG9yIGRpc2FiaWxpdHksIEkgYW0gdW5hYmxlIHRvIGdldCB0byBhIGZvb2Qgc3RvcmUgYW5kIHRoZXJlZm9yZSBjb25zaWRlciBKUkHigJlzIHNlcnZpY2VzIGNyaXRpY2FsLiIsDQogICAgICAgIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KIA0KDQpgYGB7ciBROX0NCiMjVGhlIGZvb2QgYW5kIG90aGVyIHN1cHBsaWVzIGRlbGl2ZXJlZCBieSBKUkEgaW1wcm92ZSB0aGUgaGVhbHRoIG9mIHRoZSBpbmRpdmlkdWFscyBpbiBteSBob3VzZWhvbGQuDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShROUYgPSBmYWN0b3IoDQogICAgUTksDQogICAgbGV2ZWxzID0gYygiU3Ryb25nbHkgQWdyZWUiLCAiQWdyZWUiLCAiRGlzYWdyZWUiLCAiU3Ryb25nbHkgRGlzYWdyZWUiKSkpDQpxYzk9dGFibGUoZGF0YSRROUYpDQpxcDk9MTAwKnByb3AudGFibGUocWM5KQ0KDQpxOT1jYmluZChxYzksIHFwOSkNCnE5JT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iVGhlIGZvb2QgYW5kIG90aGVyIHN1cHBsaWVzIGRlbGl2ZXJlZCBieSBKUkEgaW1wcm92ZSB0aGUgaGVhbHRoIG9mIHRoZSBpbmRpdmlkdWFscyBpbiBteSBob3VzZWhvbGQiLA0KICAgICAgICBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoNCiANCg0KDQpgYGB7ciBRMTB9DQojQmVjYXVzZSBvZiB0aGUgZm9vZCBhbmQgb3RoZXIgY3JpdGljYWwgc3VwcGxpZXMgZGVsaXZlcmVkIGJ5IEpSQSwgSSBhbSBhYmxlIHRvIGxpdmUgbW9yZSBpbmRlcGVuZGVudGx5Lg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMTBGID0gZmFjdG9yKA0KICAgIFExMCwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWMxMD10YWJsZShkYXRhJFExMEYpDQpxcDEwPTEwMCpwcm9wLnRhYmxlKHFjMTApDQoNCnExMD1jYmluZChxYzEwLCBxcDEwKQ0KcTEwICU+JQ0KICBrYmwoZGlnaXRzPTEsY2FwdGlvbj0iQmVjYXVzZSBvZiB0aGUgZm9vZCBhbmQgb3RoZXIgY3JpdGljYWwgc3VwcGxpZXMgZGVsaXZlcmVkIGJ5IEpSQSwgSSBhbSBhYmxlIHRvIGxpdmUgbW9yZSBpbmRlcGVuZGVudGx5IiwgDQogICAgICAgICAgICAgIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMTF9DQoNCiNCZWNhdXNlIG9mIEpSQeKAmXMgc2VydmljZXMsIEkgZmVlbCBsZXNzIGlzb2xhdGVkLg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMTFGID0gZmFjdG9yKA0KICAgIFExMSwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCnFjMTE9dGFibGUoZGF0YSRRMTFGKQ0KcXAxMT0xMDAqcHJvcC50YWJsZShxYzExKQ0KDQoNCnExMT1jYmluZChxYzExLCBxcDExKQ0KDQpxMTEgJT4lDQogIGtibChkaWdpdHM9MSxjYXB0aW9uPSJCZWNhdXNlIG9mIEpSQeKAmXMgc2VydmljZXMsIEkgZmVlbCBsZXNzIGlzb2xhdGVkIiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIgKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQoNCmBgYHtyIFExMn0NCiNJIGxvb2sgZm9yd2FyZCB0byBpbnRlcmFjdGluZyB3aXRoIHRoZSBKUkEgdm9sdW50ZWVyIHdobyBkZWxpdmVycyBteSBmb29kLg0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMTJGID0gZmFjdG9yKA0KICAgIFExMiwNCiAgICBsZXZlbHMgPSBjKCJTdHJvbmdseSBBZ3JlZSIsICJBZ3JlZSIsICJEaXNhZ3JlZSIsICJTdHJvbmdseSBEaXNhZ3JlZSIpKSkNCg0KcWMxMj10YWJsZShkYXRhJFExMkYpDQpxcDEyPTEwMCpwcm9wLnRhYmxlKHFjMTIpDQoNCnExMj1jYmluZChxYzEyLCBxcDEyKQ0KcTEyICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkkgbG9vayBmb3J3YXJkIHRvIGludGVyYWN0aW5nIHdpdGggdGhlIEpSQSB2b2x1bnRlZXIgd2hvIGRlbGl2ZXJzIG15IGZvb2QiLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCmBgYA0KDQoNCg0KDQoNCg0KDQpgYGB7ciBRMTN9DQoNCnRvdGFsRkY9bnJvdyhkYXRhKQ0KDQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZSh0cD1jYXNlX3doZW4oZ3JlcGwoIlRvaWxldCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoZHJ5YmVhbnM9Y2FzZV93aGVuKGdyZXBsKCJEcnkgQmVhbnMiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGNlcmVhbD1jYXNlX3doZW4oZ3JlcGwoIkNlcmVhbCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUodHVuYT1jYXNlX3doZW4oZ3JlcGwoIlR1bmEiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHNhbG1vbj1jYXNlX3doZW4oZ3JlcGwoIlNhbG1vbiIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUob2F0bWVhbD1jYXNlX3doZW4oZ3JlcGwoIk9hdG1lYWwiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHBhc3RhPWNhc2Vfd2hlbihncmVwbCgiUGFzdGEiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHNvdXA9Y2FzZV93aGVuKGdyZXBsKCJDYW5uZWQgU291cCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUobnV0cz1jYXNlX3doZW4oZ3JlcGwoIk51dHMiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHBiPWNhc2Vfd2hlbihncmVwbCgiUGVhbnV0IiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lICANCiAgICBtdXRhdGUoYXNhdWNlPWNhc2Vfd2hlbihncmVwbCgiQXBwbGVzYXVjZSIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKGNhbmJlYW5zPWNhc2Vfd2hlbihncmVwbCgiQ2FubmVkIEJlYW5zIiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lICANCiAgICBtdXRhdGUoY2FuZnJ1aXQ9Y2FzZV93aGVuKGdyZXBsKCJDYW5uZWQgRnJ1aXQiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUgIA0KICAgIG11dGF0ZShjYW52ZWc9Y2FzZV93aGVuKGdyZXBsKCJDYW5uZWQgVmVnZXRhYmxlcyIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKGRyeXNvdXA9Y2FzZV93aGVuKGdyZXBsKCJEcnkgU291cCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKG9pbD1jYXNlX3doZW4oZ3JlcGwoIk9pbCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JSAgDQogICAgbXV0YXRlKG1heW89Y2FzZV93aGVuKGdyZXBsKCJNYXlvbm5haXNlIiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkNCg0KdDEzMSA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyR0cCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzIgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkZHJ5YmVhbnMsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTMzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNlcmVhbCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzQgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkdHVuYSwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzUgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkc2FsbW9uLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzNjwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJG9hdG1lYWwsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTM3PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkcGFzdGEsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTM4PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkc291cCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzk8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRudXRzLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzMTA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRwYiwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzExPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkYXNhdWNlLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzMTI8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRjYW5iZWFucywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzEzPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkY2FuZnJ1aXQsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTMxNDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNhbnZlZywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzE1PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkZHJ5c291cCwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxMzE2PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkb2lsLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDEzMTM8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRtYXlvLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KDQpsYWJlbHMxMz1jKCJUb2lsZXQgcGFwZXIiLCAiRHJ5IEJlYW5zIiwgIkNlcmVhbCIsICJDYW5uZWQgdHVuYSIsICJTYWxtb24iLCAiT2F0bWVhbCIsDQogICAgICAgICAgICJQYXN0YS9ub29kbGVzIiwgIkNhbm5lZCBzb3VwIiwgIk51dHMiLCAiUGVhbnV0IGJ1dHRlciIsICJBcHBsZXNhdWNlIiwNCiAgICAgICAgICAgIkNhbm5lZCBCZWFucyIsICJDYW5uZWQgRnJ1aXQiLCAiQ2FubmVkIFZlZ2V0YWJsZXMiLCAiRHJ5IFNvdXAgTWl4IiwgIk9pbCIsICJNYXlvbmFpc3NlIikNCiAgICAgICAgICAgDQogICAgICAgICAgIA0KY291bnRzMTM9Yyh0MTMxJG4gWzJdLCB0MTMyJG4gWzJdLCB0MTMzJG4gWzJdLCB0MTM0JG4gWzJdLCB0MTM1JG4gWzJdLCB0MTM2JG4gWzJdLCB0MTM3JG5bMl0sIHQxMzgkblsyXSwNCiAgICAgICAgICAgdDEzOSRuIFsyXSwgdDEzMTAkbiBbMl0sIHQxMzExJG4gWzJdLCB0MTMxMiRuIFsyXSwgdDEzMTMkbiBbMl0sIHQxMzE0JG4gWzJdLCB0MTMxNSRuWzJdLCB0MTMxNiRuWzJdLCB0MTMxMyRuWzJdKQ0KcGVyY2VudHMxMz1jKHQxMzEkblsyXS90b3RhbEZGLCB0MTMyJG5bMl0vdG90YWxGRiwgDQogICAgICAgICAgICAgdDEzMyRuWzJdL3RvdGFsRkYsIHQxMzQkblsyXS90b3RhbEZGLCANCiAgICAgICAgICAgICB0MTM1JG5bMl0vdG90YWxGRiwgdDEzNiRuWzJdL3RvdGFsRkYsDQogICAgICAgICAgICAgdDEzNyRuWzJdL3RvdGFsRkYsIHQxMzgkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzkkblsyXS90b3RhbEZGLCB0MTMxMCRuWzJdL3RvdGFsRkYsIA0KICAgICAgICAgICAgIHQxMzExJG5bMl0vdG90YWxGRiwgdDEzMTIkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzEzJG5bMl0vdG90YWxGRiwgdDEzMTQkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzE1JG5bMl0vdG90YWxGRiwgdDEzMTYkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQxMzEzJG5bMl0vdG90YWxGRikNCg0KcGVyY2VudHMxMz0xMDAqcm91bmQocGVyY2VudHMxMywgMykNCg0KdGFibGUxMz1hcy5kYXRhLmZyYW1lKGNiaW5kKGxhYmVsczEzLCBjb3VudHMxMywgcGVyY2VudHMxMykpDQoNCnRhYmxlMTMgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iU2VsZWN0IHVwIHRvIDUgaXRlbXMgZnJvbSB0aGUgSlJBIEZvb2QgQm94IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0IHRoYXQgYXJlIHlvdXIgZmF2b3JpdGUgb3IgbW9zdCBoZWxwZnVsLiIsIGNvbC5uYW1lcz1jKCJJdGVtcyIsICJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCmBgYA0KDQojIyBDaGFsbGVuZ2VzIHlvdSBtYXkgZmFjZQ0KDQoNCmBgYHtyIFExNH0NCg0KI1dpdGhpbiB0aGUgcGFzdCAxMiBtb250aHMsIHdlIHdvcnJpZWQgd2hldGhlciBvdXIgZm9vZCB3b3VsZCBydW4gb3V0IGJlZm9yZSB3ZSBnb3QgbW9uZXkgdG8gYnV5IG1vcmUuDQoNCg0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTE0RiA9IGZhY3RvcigNCiAgICBRMTQsDQogICAgbGV2ZWxzID0gYygiT2Z0ZW4gdHJ1ZSIsICJTb21ldGltZXMgdHJ1ZSIsICJOZXZlciB0cnVlIiwgIkRvbid0IGtub3ciKSkpDQoNCnFjMTQ9dGFibGUoZGF0YSRRMTRGKQ0KcXAxND0xMDAqcHJvcC50YWJsZShxYzE0KQ0KDQpxMTQ9Y2JpbmQocWMxNCwgcXAxNCkNCnExNCAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJXaXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzLCB3ZSB3b3JyaWVkIHdoZXRoZXIgb3VyIGZvb2Qgd291bGQgcnVuIG91dCBiZWZvcmUgd2UgZ290IG1vbmV5IHRvIGJ1eSBtb3JlIiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KDQoNCmBgYHtyIFExNX0NCiNXaXRoaW4gdGhlIHBhc3QgMTIgbW9udGhzLCB0aGUgZm9vZCB0aGF0IHdlIGJvdWdodCBqdXN0IGRpZG7igJl0IGxhc3QgYW5kIHdlIGRpZG7igJl0IGhhdmUgbW9uZXkgdG8gZ2V0IG1vcmUuDQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFExNUYgPSBmYWN0b3IoDQogICAgUTE1LA0KICAgIGxldmVscyA9IGMoIk9mdGVuIHRydWUiLCAiU29tZXRpbWVzIHRydWUiLCAiTmV2ZXIgdHJ1ZSIsICJEb24ndCBrbm93IikpKQ0KDQpxYzE1PXRhYmxlKGRhdGEkUTE1RikNCnFwMTU9MTAwKnByb3AudGFibGUocWMxNSkNCg0KDQpxMTU9Y2JpbmQocWMxNSwgcXAxNSkNCnExNSAlPiUNCiAga2JsKGRpZ2l0cz0xLGNhcHRpb249IldpdGhpbiB0aGUgcGFzdCAxMiBtb250aHMsIHRoZSBmb29kIHRoYXQgd2UgYm91Z2h0IGp1c3QgZGlkbuKAmXQgbGFzdCBhbmQgd2UgZGlkbuKAmXQgaGF2ZSBtb25leSB0byBnZXQgbW9yZSIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMTZ9DQojV2hpY2ggb2YgdGhlIGZvbGxvd2luZyBleHBlbnNlcyBoYXMgdGhlIGdyZWF0ZXN0IGltcGFjdCBvbiB5b3VyIGhvdXNlaG9sZOKAmXMgYWJpbGl0eSB0byBidXkgZW5vdWdoIGZvb2Q/DQoNCnRvdGFsRkY9bnJvdyhkYXRhKQ0KDQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShob3VzaW5nPWNhc2Vfd2hlbihncmVwbCgiVG9pbGV0IiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZSh1dGlsaXRpZXM9Y2FzZV93aGVuKGdyZXBsKCJEcnkgQmVhbnMiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHRyYW5zcG89Y2FzZV93aGVuKGdyZXBsKCJDZXJlYWwiLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKG1lZGljYWw9Y2FzZV93aGVuKGdyZXBsKCJUdW5hIiwgUTEzKX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShjaGlsZGNhcmU9Y2FzZV93aGVuKGdyZXBsKCJTYWxtb24iLCBRMTMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKHRheGVzPWNhc2Vfd2hlbihncmVwbCgiT2F0bWVhbCIsIFExMyl+IlllcyIsIFRSVUV+Ik5vIikpDQoNCg0KdDE2MSA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRob3VzaW5nLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDE2MiA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyR1dGlsaXRpZXMsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTYzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJHRyYW5zcG8sIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTY0IDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJG1lZGljYWwsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MTY1IDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNoaWxkY2FyZSwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQxNjYgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkdGF4ZXMsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCg0KbGFiZWxzMTY9YygiSG91c2luZyBjb3N0cyIsICJVdGlsaXR5IGNvc3RzIiwgInRyYW5zcG9ydGF0aW9uIGNvc3RzIiwgIk1lZGljYWwgZXhwZW5zZXMiLA0KICAgICAgICAgICAiQ2hpbGRjYXJlIGNvc3RzIiwgIlRheGVzIikNCiAgICAgICAgICAgDQogICAgICAgICAgIA0KY291bnRzMTY9Yyh0MTYxJG4gWzJdLCB0MTYyJG4gWzJdLCB0MTYzJG4gWzJdLCB0MTY0JG4gWzJdLCB0MTY1JG4gWzJdLCB0MTY2JG4gWzJdKQ0KcGVyY2VudHMxNj1jKHQxNjEkblsyXS90b3RhbEZGLCB0MTYyJG5bMl0vdG90YWxGRiwgDQogICAgICAgICAgICAgdDE2MyRuWzJdL3RvdGFsRkYsIHQxNjQkblsyXS90b3RhbEZGLCANCiAgICAgICAgICAgICB0MTY1JG5bMl0vdG90YWxGRiwgdDE2NiRuWzJdL3RvdGFsRkYpDQoNCnBlcmNlbnRzMTY9MTAwKnJvdW5kKHBlcmNlbnRzMTYsIDMpDQoNCnRhYmxlMTY9YXMuZGF0YS5mcmFtZShjYmluZChsYWJlbHMxNiwgY291bnRzMTYsIHBlcmNlbnRzMTYpKQ0KDQp0YWJsZTE2ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IlNlbGVjdCB1cCB0byA1IGl0ZW1zIGZyb20gdGhlIEpSQSBGb29kIEJveCBmcm9tIHRoZSBmb2xsb3dpbmcgbGlzdCB0aGF0IGFyZSB5b3VyIGZhdm9yaXRlIG9yIG1vc3QgaGVscGZ1bC4iLCBjb2wubmFtZXM9YygiSXRlbXMiLCAiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KDQpgYGANCg0KDQogDQoNCmBgYHtyIFExN30NCiNIb3cgb2Z0ZW4gaW4gdGhlIGxhc3QgMTIgbW9udGhzIGRpZCB5b3Ugb3Igc29tZW9uZSB5b3VyIGhvdXNlaG9sZCB2aXNpdCBhIGZvb2QgcGFudHJ5Pw0KDQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFExN0YgPSBmYWN0b3IoDQogICAgUTE3LA0KICAgIGxldmVscyA9IGMoIk1vcmUgdGhhbiBvbmNlIGEgbW9udGgiLCAiT25jZSBhIG1vbnRoIiwgIk9uY2UgZXZlcnkgZmV3IG1vbnRocyIsIA0KICAgICAgICAgICAgICAgIk9uY2Ugb3IgdHdpY2UgYSB5ZWFyIiwgIk5ldmVyIikpKQ0KDQpxYzE3PXRhYmxlKGRhdGEkUTE3RikNCnFwMTc9MTAwKnByb3AudGFibGUocWMxNykNCg0KDQpxMTc9Y2JpbmQocWMxNywgcXAxNykNCnExNyAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJIb3cgb2Z0ZW4gaW4gdGhlIGxhc3QgMTIgbW9udGhzIGRpZCB5b3Ugb3Igc29tZW9uZSB5b3VyIGhvdXNlaG9sZCB2aXNpdCBhIGZvb2QgcGFudHJ5PyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMTh9DQojSG93IG9mdGVuIGluIHRoZSBsYXN0IDEyIG1vbnRocyBkaWQgeW91ciBob3VzZWhvbGQgaGF2ZSBmb29kIGRlbGl2ZXJlZCBmcm9tIGEgcGFudHJ5IG90aGVyIHRoYW4gSlJBPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTE4RiA9IGZhY3RvcigNCiAgICBRMTgsDQogICAgbGV2ZWxzID0gYygiTW9yZSB0aGFuIG9uY2UgYSBtb250aCIsICJPbmNlIGEgbW9udGgiLCAiT25jZSBldmVyeSBmZXcgbW9udGhzIiwgDQogICAgICAgICAgICAgICAiT25jZSBvciB0d2ljZSBhIHllYXIiLCAiTmV2ZXIiKSkpDQoNCnFjMTg9dGFibGUoZGF0YSRRMThGKQ0KcXAxOD0xMDAqcHJvcC50YWJsZShxYzE4KQ0KDQoNCnExOD1jYmluZChxYzE4LCBxcDE4KQ0KcTE4ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkhvdyBvZnRlbiBpbiB0aGUgbGFzdCAxMiBtb250aHMgZGlkIHlvdXIgaG91c2Vob2xkIGhhdmUgZm9vZCBkZWxpdmVyZWQgZnJvbSBhIHBhbnRyeSBvdGhlciB0aGFuIEpSQT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCg0KYGBgDQoNCiMjIEN1bHR1cmUgYW5kIHRoZSBKZXdpc2ggQ29tbXVuaXR5DQoNCmBgYHtyIFExOX0NCiNEb2VzIHJlY2VpdmluZyBhIGJveCBvZiBrb3NoZXIgZm9vZCBmcm9tIEpSQSBtYWtlIHlvdSBmZWVsIGNhcmVkIGZvciBieSB0aGUgSmV3aXNoIGNvbW11bml0eT8NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFExOUYgPSBmYWN0b3IoDQogICAgUTE5LA0KICAgIGxldmVscyA9IGMoIlllcyIsICJObyIpKSkNCg0KcWMxOT10YWJsZShkYXRhJFExOUYpDQpxcDE5PTEwMCpwcm9wLnRhYmxlKHFjMTkpDQoNCnExOT1jYmluZChxYzE5LCBxcDE5KQ0KcTE5ICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkRvIHlvdSBvciBhbnlvbmUgaW4geW91ciBob3VzZWhvbGQgaWRlbnRpZnkgYXMgSmV3aXNoPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCg0KYGBgDQoNCg0KDQoNCmBgYHtyIFEyMH0NCg0KI0RvZXMgcmVjZWl2aW5nIGEgYm94IG9mIGtvc2hlciBmb29kIGZyb20gSlJBIG1ha2UgeW91IGZlZWwgY2FyZWQgZm9yIGJ5IHRoZSBKZXdpc2ggY29tbXVuaXR5Pw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTIwRiA9IGZhY3RvcigNCiAgICBRMjAsDQogICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpKQ0KDQpxYzIwPXRhYmxlKGRhdGEkUTIwRikNCnFwMjA9MTAwKnByb3AudGFibGUocWMyMCkNCg0KDQpxMjA9Y2JpbmQocWMyMCwgcXAyMCkNCnEyMCAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJEb2VzIHJlY2VpdmluZyBhIGJveCBvZiBrb3NoZXIgZm9vZCBmcm9tIEpSQSBtYWtlIHlvdSBmZWVsIGNhcmVkIGZvciBieSB0aGUgSmV3aXNoIGNvbW11bml0eT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQoNCg0KYGBgDQoNCg0KDQpgYGB7ciBRMjF9DQojRG9lcyByZWNlaXZpbmcgc3BlY2lhbCBmb29kcyBmb3IgSmV3aXNoIGhvbGlkYXlzIGluIHRoZSBKUkEgYm94IGVuYWJsZSB5b3UgdG8gaGF2ZSBhIG1vcmUgbWVhbmluZ2Z1bCBjZWxlYnJhdGlvbj8NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFEyMUYgPSBmYWN0b3IoDQogICAgUTIxLA0KICAgIGxldmVscyA9IGMoIlllcyIsICJObyIsICJJIGRvIG5vdCBpZGVudGlmeSBhcyBKZXdpc2giKSkpDQoNCnFjMjE9dGFibGUoZGF0YSRRMjFGKQ0KcXAyMT0xMDAqcHJvcC50YWJsZShxYzIxKQ0KDQpxMjE9Y2JpbmQocWMyMSwgcXAyMSkNCnEyMSAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJEb2VzIHJlY2VpdmluZyBzcGVjaWFsIGZvb2RzIGZvciBKZXdpc2ggaG9saWRheXMgaW4gdGhlIEpSQSBib3ggZW5hYmxlIHlvdSB0byBoYXZlIGEgbW9yZSBtZWFuaW5nZnVsIGNlbGVicmF0aW9uPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQpgYGB7ciBRMjJ9DQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMjJGID0gZmFjdG9yKA0KICAgIFEyMiwNCiAgICBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iKSkpDQoNCnFjMjI9dGFibGUoZGF0YSRRMjJGKQ0KcXAyMj0xMDAqcHJvcC50YWJsZShxYzIyKQ0KDQpxMjI9Y2JpbmQocWMyMiwgcXAyMikNCnEyMiAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJEbyB5b3Uga2VlcCBhIGtvc2hlciBob21lPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQoNCiANCmBgYHtyIFEyM30NCiNEbyB5b3Ugb3Igc29tZW9uZSBjdXJyZW50bHkgbGl2aW5nIGluIHlvdXIgaG91c2Vob2xkIGlkZW50aWZ5IGFzIGEgSG9sb2NhdXN0IFN1cnZpdm9yPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTIzRiA9IGZhY3RvcigNCiAgICBRMjMsDQogICAgbGV2ZWxzID0gYygiWWVzIiwgIk5vIikpKQ0KDQpxYzIzPXRhYmxlKGRhdGEkUTIzRikNCnFwMjM9MTAwKnByb3AudGFibGUocWMyMykNCg0KcTIzPWNiaW5kKHFjMjMsIHFwMjMpDQpxMjMgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iRG8geW91IG9yIHNvbWVvbmUgY3VycmVudGx5IGxpdmluZyBpbiB5b3VyIGhvdXNlaG9sZCBpZGVudGlmeSBhcyBhIEhvbG9jYXVzdCBTdXJ2aXZvcj8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQojIyBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtDQoNCmBgYHtyIFEyNX0NCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFEyNUYgPSBmYWN0b3IoDQogICAgUTI1LA0KICAgIGxldmVscyA9IGMoIlllcyIsICJObyIpKSkNCg0KcWMyNT10YWJsZShkYXRhJFEyNUYpDQpxcDI1PTEwMCpwcm9wLnRhYmxlKHFjMjUpDQoNCg0KcTI1PWNiaW5kKHFjMjUsIHFwMjUpDQpxMjUgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iRG8geW91IHJlY2VpdmUgRkYgZm9vZCBiYWc/IiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoNCiAgDQoNCg0KYGBge3IgUTI2fQ0KI1doYXQgaXMgeW91ciBvdmVyYWxsIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBmb29kIHByb3ZpZGVkIGluIHRoZSBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtL0JsdWUgQmFnPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTI2RiA9IGZhY3RvcigNCiAgICBRMjYsDQogICAgbGV2ZWxzID0gYygiVmVyeSBzYXRpc2ZpZWQiLCAiU2F0aXNmaWVkIiwgIkRpc3NhdGlzZmllZCIsICJWZXJ5IGRpc3NhdGlzZmllZCIpKSkNCg0KcWMyNj10YWJsZShkYXRhJFEyNkYpDQpxcDI2PTEwMCpwcm9wLnRhYmxlKHFjMjYpDQoNCg0KcTI2PWNiaW5kKHFjMjYsIHFwMjYpDQpxMjYgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iV2hhdCBpcyB5b3VyIG92ZXJhbGwgc2F0aXNmYWN0aW9uIHdpdGggdGhlIGZvb2QgcHJvdmlkZWQgaW4gdGhlIEZhbWlseSBGcmllbmRseSBGb29kIFByb2dyYW0vQmx1ZSBCYWc/IiwgY29sLm5hbWVzPWMoIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoNCg0KDQpgYGB7ciBRMjh9DQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShwYj1jYXNlX3doZW4oZ3JlcGwoIlBlYW51dCIsIFEyOCl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoamFtPWNhc2Vfd2hlbihncmVwbCgiSmFtIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShjcmFja2Vycz1jYXNlX3doZW4oZ3JlcGwoIkNyYWNrZXJzIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShwcmV0emVscz1jYXNlX3doZW4oZ3JlcGwoIlByZXR6ZWxzIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShncmFub2xhPWNhc2Vfd2hlbihncmVwbCgiR3Jhbm9sYSIsIFEyOCl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUob2F0bWVhbD1jYXNlX3doZW4oZ3JlcGwoIk9hdG1lYWwiLCBRMjgpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGZydWl0PWNhc2Vfd2hlbihncmVwbCgiRnJ1aXQiLCBRMjgpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGNvb2tpZXM9Y2FzZV93aGVuKGdyZXBsKCJDb29raWVzIiwgUTI4KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShiYW5hbmE9Y2FzZV93aGVuKGdyZXBsKCJCYW5hbmEiLCBRMjgpfiJZZXMiLCBUUlVFfiJObyIpKSANCg0KDQp0MjgxIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJHBiLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDI4MiA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRqYW0sIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MjgzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJGNyYWNrZXJzLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDI4NCA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRncmFub2xhLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDI4NTwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJG9hdG1lYWwsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0Mjg2PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkZnJ1aXQsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0Mjg3PC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkY29va2llcywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQyODg8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRiYW5hbmEsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCg0KbGFiZWxzMjg9YygiUGVhbnV0IGJ1dHRlciIsICJKYW0vamVsbHkiLCAiQ3JhY2tlcnMiLCANCiAgICAgICAgICAgIlByZXR6ZWxzIiwiR3Jhbm9sYSBiYXJzIiwgIkluc3RhbnQgb2F0bWVhbCIsIA0KICAgICAgICAgICAiRnJ1aXQgY3VwcyIsICJDb29raWVzIiwgIkJhbmFuYSBjaGlwcyIpDQpjb3VudHMyOD1jKHQyODEkblsyXSwgdDI4MiRuWzJdLCB0MjgzJG5bMl0sIHQyODQkblsyXSwgdDI4NSRuWzJdLCB0Mjg2JG4gWzJdLCB0Mjg3JG5bMl0sIHQyODgkblsyXSkNCnBlcmNlbnRzMjg9Yyh0MjgxJG5bMl0vdG90YWxGRiwgdDI4MiRuWzJdL3RvdGFsRkYsIA0KICAgICAgICAgICAgIHQyODMkblsyXS90b3RhbEZGLCB0Mjg0JG5bMl0vdG90YWxGRiwgDQogICAgICAgICAgICAgdDI4NSRuWzJdL3RvdGFsRkYsIHQyODYkblsyXS90b3RhbEZGLA0KICAgICAgICAgICAgIHQyODckblsyXS90b3RhbEZGLCB0Mjg4JG5bMl0vdG90YWxGRikNCg0KcGVyY2VudHMyOD0xMDAqcm91bmQocGVyY2VudHMyOCwgMykNCg0KdGFibGUyOD1hcy5kYXRhLmZyYW1lKGNiaW5kKGxhYmVsczI4LCBjb3VudHMyOCwgcGVyY2VudHMyOCkpDQoNCnRhYmxlMjggJT4lDQogIGtibChjYXB0aW9uPSJTZWxlY3QgZnJvbSB0aGUgZm9sbG93aW5nIGxpc3QgeW91ciB0b3AgNCBmYXZvcml0ZS9oZWxwZnVsIGl0ZW1zIGluIHRoZSBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtIChCbHVlIEJhZykuIiwgY29sLm5hbWVzPWMoIkl0ZW1zIiwgIlRvdGFsIChuKSIsICJQZXJjZW50YWdlICglKSIpKSAlPiUNCiAga2FibGVfY2xhc3NpY18yKGZ1bGxfd2lkdGg9RiwgaHRtbF9mb250PSJDYW1icmlhIikgJT4lDQogICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQoNCg0KYGBge3IgUTI5fQ0KI1doYXQgaXMgeW91ciBvdmVyYWxsIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBmb29kIHByb3ZpZGVkIGluIHRoZSBGYW1pbHkgRnJpZW5kbHkgRm9vZCBQcm9ncmFtL0JsdWUgQmFnPw0KDQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMjlGID0gZmFjdG9yKA0KICAgIFEyOSwNCiAgICBsZXZlbHMgPSBjKCJWZXJ5IHNhdGlzZmllZCIsICJTYXRpc2ZpZWQiLCAiRGlzc2F0aXNmaWVkIiwgIlZlcnkgZGlzc2F0aXNmaWVkIiwNCiAgICAgICAgICAgICAgICJJIGhhdmUgbm90IHJlY2VpdmVkIFN1bW1lciBGcmVzaCBQcm9kdWNlIEJveGVzIHlldC4iKSkpDQpxYzI5PXRhYmxlKGRhdGEkUTI5RikNCnFwMjk9MTAwKnByb3AudGFibGUocWMyOSkNCg0KDQpxMjk9Y2JpbmQocWMyOSwgcXAyOSkNCnEyOSAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJXaGF0IGlzIHlvdXIgb3ZlcmFsbCBzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgZm9vZCBwcm92aWRlZCBpbiB0aGUgRmFtaWx5IEZyaWVuZGx5IEZvb2QgUHJvZ3JhbS9CbHVlIEJhZz8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQojIyBQZXJpb2QgUGFja3MgUHJvZ3JhbQ0KDQpgYGB7ciBRMzF9DQpkYXRhIDwtIGRhdGEgJT4lDQogIG11dGF0ZShRMzFGID0gZmFjdG9yKA0KICAgIFEzMSwNCiAgICBsZXZlbHMgPSBjKCJZZXMiLCAiTm8iKSkpDQoNCnFjMzE9dGFibGUoZGF0YSRRMzFGKQ0KcXAzMT0xMDAqcHJvcC50YWJsZShxYzMxKQ0KDQoNCnEzMT1jYmluZChxYzMxLCBxcDMxKQ0KcTMxICU+JQ0KICBrYmwoZGlnaXRzPTEsIGNhcHRpb249IkRvIHlvdSByZWNlaXZlIHRoZSBQUCBvcmFuZ2UgYmFnPyIsIGNvbC5uYW1lcz1jKCJUb3RhbCAobikiLCAiUGVyY2VudGFnZSAoJSkiKSkgJT4lDQogIGthYmxlX2NsYXNzaWNfMihmdWxsX3dpZHRoPUYsIGh0bWxfZm9udD0iQ2FtYnJpYSIpICU+JQ0KICAgY29sdW1uX3NwZWMoMSwgd2lkdGg9IjMuMGluIikNCmBgYA0KDQoNCmBgYHtyIFEzMn0NCiNXaGF0IGlzIHlvdXIgb3ZlcmFsbCBzYXRpc2ZhY3Rpb24gd2l0aCBKUkHigJlzIFBlcmlvZCBQYWNrcyBQcm9ncmFtPw0KZGF0YSA8LSBkYXRhICU+JQ0KICBtdXRhdGUoUTMyRiA9IGZhY3RvcigNCiAgICBRMzIsDQogICAgbGV2ZWxzID0gYygiVmVyeSBzYXRpc2ZpZWQiLCAiU2F0aXNmaWVkIiwgIkRpc3NhdGlzZmllZCIsICJWZXJ5IGRpc3NhdGlzZmllZCIpKSkNCg0KcWMzMj10YWJsZShkYXRhJFEzMkYpDQpxcDMyPTEwMCpwcm9wLnRhYmxlKHFjMzIpDQoNCg0KcTMyPWNiaW5kKHFjMzIsIHFwMzIpDQpxMzIgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iV2hhdCBpcyB5b3VyIG92ZXJhbGwgc2F0aXNmYWN0aW9uIHdpdGggSlJB4oCZcyBQZXJpb2QgUGFja3MgUHJvZ3JhbT8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQpgYGB7ciBRMzN9DQojU2VsZWN0IHRoZSBzdGF0ZW1lbnRzIGJlbG93IHRoYXQgeW91IGFncmVlIHdpdGggcmVnYXJkaW5nIHBlcmlvZCBwcm9kdWN0cy4gQ2hlY2sgYWxsIHRoYXQgYXBwbHkuDQpGRml0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShsb25nZXI9Y2FzZV93aGVuKGdyZXBsKCJsb25nZXIiLCBRMzMpfiJZZXMiLCBUUlVFfiJObyIpKSAlPiUNCiAgbXV0YXRlKGZyaWVuZD1jYXNlX3doZW4oZ3JlcGwoImZyaWVuZCIsIFEzMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoc3RyYW5nZXI9Y2FzZV93aGVuKGdyZXBsKCJzdHJhbmdlciIsIFEzMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoZm9jdXM9Y2FzZV93aGVuKGdyZXBsKCJmb2N1cyIsIFEzMyl+IlllcyIsIFRSVUV+Ik5vIikpICU+JQ0KICBtdXRhdGUoc3RyZXNzPWNhc2Vfd2hlbihncmVwbCgic3RyZXNzZWQiLCBRMzMpfiJZZXMiLCBUUlVFfiJObyIpKQ0KDQoNCnQzMzEgPC0gcXVlc3Rpb25yOjpmcmVxKEZGaXRlbXMkbG9uZ2VyLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDMzMiA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRmcmllbmQsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MzMzIDwtIHF1ZXN0aW9ucjo6ZnJlcShGRml0ZW1zJHN0cmFuZ2VyLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDMzNCA8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRmb2N1cywgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQzMzU8LSBxdWVzdGlvbnI6OmZyZXEoRkZpdGVtcyRzdHJlc3MsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCg0KbGFiZWxzMzM9YygiV29ybiBsb25nZXIgdGhhbiByZWNvbW1lbmRlZCIsDQogICAgICAgICAgICJBc2tlZCBhIGZyaWVuZCBvciBjbGFzc21hdGUiLA0KICAgICAgICAgICAiYXNrZWQgYSBzdHJhbmdlciIsDQogICAgICAgICAgICJVbmFibGUgdG8gZm9jdXMiLA0KICAgICAgICAgICAiU3RyZXNzZWQgb3IgZW1iYXJyYXNzZWQiKQ0KDQp0b3RhbEZGPTE4MA0KICANCmNvdW50czMzPWModDMzMSRuWzJdLCB0MzMyJG5bMl0sIHQzMzMkblsyXSwgdDMzNCRuWzJdLCB0MzM1JG5bMl0pDQpwZXJjZW50czMzPWModDMzMSRuWzJdL3RvdGFsRkYsIHQzMzIkblsyXS90b3RhbEZGLCANCiAgICAgICAgICAgICB0MzMzJG5bMl0vdG90YWxGRiwgdDMzNCRuWzJdL3RvdGFsRkYsIA0KICAgICAgICAgICAgIHQzMzUkblsyXS90b3RhbEZGKQ0KDQpwZXJjZW50czMzPTEwMCpyb3VuZChwZXJjZW50czMzLCAzKQ0KDQp0YWJsZTMzPWFzLmRhdGEuZnJhbWUoY2JpbmQobGFiZWxzMzMsIGNvdW50czMzLCBwZXJjZW50czMzKSkNCg0KdGFibGUzMyAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJTZWxlY3QgdGhlIHN0YXRlbWVudHMgYmVsb3cgdGhhdCB5b3UgYWdyZWUgd2l0aCByZWdhcmRpbmcgcGVyaW9kIHByb2R1Y3RzLiBDaGVjayBhbGwgdGhhdCBhcHBseS4iLCBjb2wubmFtZXM9YygiSXRlbXMiLCAiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQoNCg0KYGBge3IgUTM0fQ0KDQpQUGl0ZW1zIDwtIGRhdGEgJT4lDQogIG11dGF0ZShvdmVyPWNhc2Vfd2hlbihncmVwbCgiT3Zlcm5pZ2h0IiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShyZWc9Y2FzZV93aGVuKGdyZXBsKCJSZWd1bGFyIiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZSh0YW09Y2FzZV93aGVuKGdyZXBsKCJUYW1wb25zIiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkgJT4lDQogIG11dGF0ZShsaW5lcj1jYXNlX3doZW4oZ3JlcGwoIlBhbnRpbGluZXJzIiwgUTM0KX4iWWVzIiwgVFJVRX4iTm8iKSkNCg0KdDM0MSA8LSBxdWVzdGlvbnI6OmZyZXEoUFBpdGVtcyRvdmVyLCBjdW09RkFMU0UsIHRvdGFsPUZBTFNFKQ0KdDM0MiA8LSBxdWVzdGlvbnI6OmZyZXEoUFBpdGVtcyRyZWcsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQp0MzQzIDwtIHF1ZXN0aW9ucjo6ZnJlcShQUGl0ZW1zJHRhbSwgY3VtPUZBTFNFLCB0b3RhbD1GQUxTRSkNCnQzNDQgPC0gcXVlc3Rpb25yOjpmcmVxKFBQaXRlbXMkbGluZXIsIGN1bT1GQUxTRSwgdG90YWw9RkFMU0UpDQoNCnRvdGFsUFA9MTgwDQoNCmxhYmVsczM0PWMoIk92ZXJuaWdodCBNYXhpIFBhZHMiLCAiUmVndWxhciBNYXhpIFBhZHMgdy93aW5ncyIsICJUYW1wb25zIiwgIlBhbnRpbGluZXJzIikNCmNvdW50czM0PWModDM0MSRuIFsyXSwgdDM0MiRuIFsyXSwgdDM0MyRuIFsyXSwgdDM0NCRuIFsyXSkNCnBlcmNlbnRzMzQ9Yyh0MzQxJG5bMl0vdG90YWxQUCwgdDM0MiRuWzJdL3RvdGFsUFAsIA0KICAgICAgICAgICAgIHQzNDMkblsyXS90b3RhbFBQLCB0MzQ0JG5bMl0vdG90YWxQUCkNCg0KcGVyY2VudHMzND0xMDAqcm91bmQocGVyY2VudHMzNCwgMykNCg0KdGFibGUzND1hcy5kYXRhLmZyYW1lKGNiaW5kKGxhYmVsczM0LCBjb3VudHMzNCwgcGVyY2VudHMzNCkpDQoNCnRhYmxlMzQgJT4lDQogIGtibChkaWdpdHM9MSwgY2FwdGlvbj0iU2VsZWN0IGZyb20gdGhlIGZvbGxvd2luZyBsaXN0IHlvdXIgdG9wIDIgZmF2b3JpdGUvaGVscGZ1bCBpdGVtcyBpbiB0aGUgUGVyaW9kIFByb2R1Y3RzIEJhZy4iLCBjb2wubmFtZXM9YygiSXRlbXMiLCAiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgICBjb2x1bW5fc3BlYygxLCB3aWR0aD0iMy4waW4iKQ0KYGBgDQoJCQ0KDQoNCg0KDQpgYGB7ciBRMzV9DQojSG93IGxvbmcgZG8gdGhlIHN1cHBsaWVzIHlvdSByZWNlaXZlIGluIHRoZSBQZXJpb2QgUHJvZHVjdHMgKE9yYW5nZSkgQmFnIGxhc3Q/DQoNCmRhdGEgPC0gZGF0YSAlPiUNCiAgbXV0YXRlKFEzNUYgPSBmYWN0b3IoDQogICAgUTM1LA0KICAgIGxldmVscyA9IGMoIjEgbW9udGgiLCAiMiBtb250aHMiLCAiMyBtb250aHMiKSkpDQoNCnFjMzU9dGFibGUoZGF0YSRRMzVGKQ0KcXAzNT0xMDAqcHJvcC50YWJsZShxYzM1KQ0KDQpxMzU9Y2JpbmQocWMzNSwgcXAzNSkNCnEzNSAlPiUNCiAga2JsKGRpZ2l0cz0xLCBjYXB0aW9uPSJIb3cgbG9uZyBkbyB0aGUgc3VwcGxpZXMgeW91IHJlY2VpdmUgaW4gdGhlIFBlcmlvZCBQcm9kdWN0cyAoT3JhbmdlKSBCYWcgbGFzdD8iLCBjb2wubmFtZXM9YygiVG90YWwgKG4pIiwgIlBlcmNlbnRhZ2UgKCUpIikpICU+JQ0KICBrYWJsZV9jbGFzc2ljXzIoZnVsbF93aWR0aD1GLCBodG1sX2ZvbnQ9IkNhbWJyaWEiKSAlPiUNCiAgIGNvbHVtbl9zcGVjKDEsIHdpZHRoPSIzLjBpbiIpDQpgYGANCg0KDQoNCg==