# Name: smd_style v0.2 # Type: Client side plugin # Stylesheet switcher # Author: Stef Dawson # URL: http://stefdawson.com/ # Recommended load order: 5 # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjk6InNtZF9zdHlsZSI7czo2OiJhdXRob3IiO3M6MTE6IlN0 ZWYgRGF3c29uIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIyOiJodHRwOi8vc3RlZmRhd3Nvbi5j b20vIjtzOjc6InZlcnNpb24iO3M6MzoiMC4yIjtzOjExOiJkZXNjcmlwdGlvbiI7czoxOToi U3R5bGVzaGVldCBzd2l0Y2hlciI7czo0OiJoZWxwIjtzOjIzNjQxOiI8ZGl2IGlkPSJzbWRf aGVscCI+DQoNCgk8aDE+c21kX3N0eWxlPC9oMT4NCg0KCTxwPk1hbmFnZSB5b3VyIGFsdGVy bmF0ZSBzdHlsZXNoZWV0cyBhbmQgKG9wdGlvbmFsbHkpIHN3aXRjaCBiZXR3ZWVuIHRoZW0g dmlhIEphdmFzY3JpcHQuPC9wPg0KDQoJPHA+RmVhdHVyZXM6PC9wPg0KDQoJPHVsPg0KCQk8 bGk+UHJvdmlkZSBhIGxpc3Qgb2Ygc3R5bGUgc2hlZXQgbmFtZXMgZGVyaXZlZCBmcm9tOg0K CTx1bD4NCgkJPGxpPmEgZ2l2ZW4gbGlzdDwvbGk+DQoJCTxsaT5hbnkgYXJ0aWNsZSBmaWVs ZDwvbGk+DQoJCTxsaT5hIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2NvZGU+PC9s aT4NCgkJPGxpPmEgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4gdmFyaWFibGU8L2xp Pg0KCQk8bGk+c29tZSBjb21iaW5hdGlvbiBvZiB0aGUgYWJvdmU8L2xpPg0KCTwvdWw+PC9s aT4NCgkJPGxpPlVzZSBlaXRoZXIgdGhlIGJ1aWx0LWluIHN0eWxlc2hlZXQgc3dpdGNoaW5n IGFiaWxpdHkgb2YgbW9kZXJuIGJyb3dzZXJzIG9yIHRoZSBwbHVnaW4mIzgyMTc7cyBqYXZh c2NyaXB0IHN3aXRjaGVyPC9saT4NCgkJPGxpPlN0b3JlcyBjdXJyZW50IHN0eWxlIGluIGEg Y29va2llIGFuZCBjYW4gYmUgaW5zdHJ1Y3RlZCB0byBsb2FkIHRoYXQgc3R5bGUgZmlyc3Qg b24gc3Vic2VxdWVudCBwYWdlczwvbGk+DQoJCTxsaT5Db21wYXRpYmxlIHdpdGggPHNwYW4g Y2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gc3R5bGVzaGVldHMsICYjODIxNjtyZWFsJiM4MjE3 OyBzdHlsZXNoZWV0cyBhbmQgdGhlIHJ2bV9jc3MgcGx1Z2luPC9saT4NCgkJPGxpPk9wdGlv bmFsbHkgYnVpbGQgeW91ciBvd24gc3R5bGVzaGVldCBzeW50YXggdmlhIGEgZm9ybS9jb250 YWluZXI8L2xpPg0KCQk8bGk+UHV0IDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHRh Z3MgaW5zaWRlIHlvdXIgc3R5bGVzaGVldHMgaWYgeW91IHdpc2ggKHJlcXVpcmVzIDxzcGFu IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+LXN0eWxlIHNoZWV0IHByb2Nlc3NpbmcsIGkuZSBy ZWFsX3NoZWV0cyBtdXN0IGJlIG9mZik8L2xpPg0KCTwvdWw+DQoNCgk8aDIgY2xhc3M9ImF1 dGhvciI+QXV0aG9yPC9oMj4NCg0KCTxwPjxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNv bS9jb21tZW50Rm9ybSI+U3RlZiBEYXdzb248L2E+PC9wPg0KDQoJPGgyIGNsYXNzPSJpbnN0 YWxsIj5JbnN0YWxsYXRpb24gLyBVbmluc3RhbGxhdGlvbjwvaDI+DQoNCgk8cD5Eb3dubG9h ZCB0aGUgcGx1Z2luIGZyb20gZWl0aGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXh0cGF0dGVybi5v cmcvcGx1Z2lucy8xMDI0L3NtZF9zdHlsZSI+dGV4dHBhdHRlcm4ub3JnPC9hPiwgb3IgdGhl IDxhIGhyZWY9Imh0dHA6Ly9zdGVmZGF3c29uLmNvbS9zdyI+c29mdHdhcmUgcGFnZTwvYT4s IHBhc3RlIHRoZSBjb2RlIGludG8gdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+ IEFkbWluIC0mZ3Q7IFBsdWdpbnMgcGFuZSwgaW5zdGFsbCBhbmQgZW5hYmxlIHRoZSBwbHVn aW4uIFZpc2l0IHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL3Zp ZXd0b3BpYy5waHA/aWQ9Mjg1OTIiPmZvcnVtIHRocmVhZDwvYT4gZm9yIG1vcmUgaW5mbyBh bmQgdG8gcmVwb3J0IHRoZSBzdWNjZXNzIChvciBvdGhlcndpc2UpIG9mIHRoaXMgcGx1Z2lu LjwvcD4NCg0KCTxwPlRvIHVuaW5zdGFsbCwgc2ltcGx5IGRlbGV0ZSBmcm9tIHRoZSBBZG1p biAtJmd0OyBQbHVnaW5zIHBhZ2UuPC9wPg0KDQoJPGgyIGNsYXNzPSJ1c2FnZSI+VXNhZ2U8 L2gyPg0KDQoJPHA+VGhlcmUgYXJlIHR3byB0YWdzIGF2YWlsYWJsZTogb25lIGZvciB1c2Ug aW4gdGhlIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29kZT4gb2YgeW91ciBwYWdlIHRvIHNldCB1 cCB0aGUgYWx0ZXJuYXRlIHN0eWxlcywgYW5kIHRoZSBvdGhlciBjYW4gb3B0aW9uYWxseSBh ZGQgYSBqYXZhc2NyaXB0IHN0eWxlc2hlZXQgc3dpdGNoZXIgdG8gdGhlIHBhZ2UsIHdoZXJl dmVyIHlvdSB3YW50IGl0IHRvIGFwcGVhci48L3A+DQoNCgk8aDMgaWQ9InNtZF9zdHlsZSI+ c21kX3N0eWxlPC9oMz4NCg0KCTxwIGNsYXNzPSJ0YWctc3VtbWFyeSI+U29tZXdoZXJlIGlu IHlvdXIgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IDxjb2RlPiZsdDtoZWFkJmd0 OzwvY29kZT4gdGFnLCBhZGQgYSBjYWxsIHRvIDxjb2RlPnNtZF9zdHlsZTwvY29kZT4gdG8g aW5jbHVkZSBhIGxpc3Qgb2YgYWx0ZXJuYXRlIHN0eWxlc2hlZXRzLiBVc2UgdGhlIGZvbGxv d2luZyBhdHRyaWJ1dGVzIHRvIGN1c3RvbWlzZSB0aGUgb3V0cHV0OjwvcD4NCg0KCTxoNCBj bGFzcz0iYXR0cyAiPkF0dHJpYnV0ZXM8L2g0Pg0KDQoJPHVsPg0KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPnNoZWV0czwvc3Bhbj4gOiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHN0 eWxlc2hlZXRzIHRvIGluY2x1ZGUuIFRoZXNlIGFyZSB0aGVpciA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiBuYW1lcyBhcyBnaXZlbiBvbiB0aGUgUHJlc2VudGF0aW9uLSZndDtT dHlsZXMgdGFiLiBTZWUgPGEgaHJlZj0iI3NoZWV0bmFtZXMiPnNoZWV0IG5hbWVzPC9hPiBm b3IgbW9yZTwvbGk+DQoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+Zm9ybTwvc3Bhbj4gOiB0 aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gZm9ybSBpbiB3aGljaCB0byBidWls ZCB5b3VyIG93biA8Y29kZT4mbHQ7bGluayZndDs8L2NvZGU+IHRhZ3MuIFNlZSA8YSBocmVm PSIjcmVwbGFjZW1lbnRzIj5yZXBsYWNlbWVudCB0YWdzPC9hPi4gSWYgbm90IHNwZWNpZmll ZCAoYW5kIG5vIGNvbnRhaW5lciBpcyB1c2VkKSBhIHN0YW5kYXJkIDxzcGFuIGNsYXNzPSJj YXBzIj5YSFRNTDwvc3Bhbj4gbGluayB3aWxsIGJlIG91dHB1dDwvbGk+DQoJCTxsaT48c3Bh biBjbGFzcz0iYXRubSI+dXNlX2RlZmF1bHQ8L3NwYW4+IDogdGhlIGxpc3Qgb2Ygc3R5bGVz aGVldHMgZ2l2ZW4gaW4gdGhlIDxjb2RlPnNoZWV0czwvY29kZT4gcGFyYW1ldGVyIGRvZXMg bm90IHVzdWFsbHkgY29udGFpbiB0aGUgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IHN0eWxlc2hl ZXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWN0aW9uLiBUaGlzIGFsbG93cyB5b3UgdG8gYWx3 YXlzIGluY2x1ZGUgYSAmIzgyMTY7Z2xvYmFsJiM4MjE3OyBzaGVldCB3aXRoIGNvcmUgcnVs ZXMgaW4gaXQgYW5kIGhhdmUgdGhlIGFsdGVybmF0ZXMgb3ZlcnJpZGUvZmlsbCBpbiB0aGUg Z2Fwcy4gSWYsIGhvd2V2ZXIsIHlvdSB3aXNoIHNtZF9zdHlsZSB0byBvdXRwdXQgdGhlIGRl ZmF1bHQgc3R5bGVzaGVldCBzbyB5b3UgZG9uJiM4MjE3O3QgaGF2ZSB0byBkbyBpdCBlbHNl d2hlcmUsIHNwZWNpZnkgPGNvZGU+dXNlX2RlZmF1bHQ9JnF1b3Q7MSZxdW90OzwvY29kZT48 L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnByb21vdGVfcmVjZW50PC9zcGFuPiA6 IERldGVybWluZSB3aGF0IHRvIGRvIHdoZW4gdGhlIHBhZ2UgbG9hZHMgYW5kIHRoZSB2aXNp dG9yIGhhcyBhbHJlYWR5IHN3aXRjaGVkIHRvIGFuIGFsdGVybmF0ZSBzdHlsZXNoZWV0LiBU aGlzIGNhbiBiZSB1c2VmdWwgdG8gdHJ5IGFuZCBoZWxwIHByZXZlbnQgJiM4MjE2O2ZsYXNo ZXMgb2YgdW5zdHlsZWQgY29udGVudCYjODIxNzsgaW4gZ29vZCBicm93c2Vycy4gQ2FuIHRh a2Ugb25lIG9mIHRocmVlIHZhbHVlczoNCgk8dWw+DQoJCTxsaT48Y29kZT4wPC9jb2RlPiA6 IGRvIG5vdGhpbmcsIGkuZS4gc2hlZXRzIGFyZSBhbHdheXMgbG9hZGVkIGluIHRoZSBnaXZl biBvcmRlcjwvbGk+DQoJCTxsaT48Y29kZT4xPC9jb2RlPiAodGhlIGRlZmF1bHQpIDogYW55 IHN0eWxlIHNoZWV0IHRoYXQgaGFzIGJlZW4gY2hvc2VuIGJ5IHRoZSB2aXNpdG9yIHdpbGwg YmUgbG9hZGVkIGFzIHNvb24gYXMgcG9zc2libGUgPHN0cm9uZz5hZnRlcjwvc3Ryb25nPiBh bnkgY29yZSBzaGVldHMgKGkuZS4gc2hlZXRzIHRoYXQgeW91IHdhbnQgdG8gYmUgbm9uLWFs dGVybmF0ZSkuIFRodXMgaWYgeW91IGhhdmUgMiAmIzgyMTY7Y29yZSYjODIxNzsgc2hlZXRz IGFuZCB0aGUgdmlzaXRvciBjaG9vc2VzIHRoZSBhbHRlcm5hdGUgc2hlZXQgdGhhdCB1c2Vk IHRvIGJlICM0IGluIHRoZSBsaXN0LCBpdCB3aWxsIG5vdyBiZSBsb2FkZWQgM3JkPC9saT4N CgkJPGxpPjxjb2RlPjI8L2NvZGU+IDogYW55IHN0eWxlIHNoZWV0IHRoYXQgaGFzIGJlZW4g Y2hvc2VuIGJ5IHRoZSB2aXNpdG9yIHdpbGwgYmUgbG9hZGVkIGZpcnN0LCBpLmUuIHRoZSBj aG9zZW4gc2hlZXQgd2lsbCA8ZW0+YWx3YXlzPC9lbT4gYmUgcHJvbW90ZWQgdG8gdGhlICMx IHNsb3Q8L2xpPg0KCTwvdWw+PC9saT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5za2lw PC9zcGFuPiA6IGluIHRoZSBsaXN0IG9mIHNoZWV0cywgc2tpcCB0aGlzIG51bWJlciBvZiBz aGVldHMgYmVmb3JlIHN0YXJ0aW5nIHRvIGxhYmVsIHRoZW0gYXMgJiM4MjE2O2FsdGVybmF0 ZSYjODIxNzsuIFRoZSBzcGVjaWFsIGRlZmF1bHQgc2V0dGluZyBvZiA8Y29kZT5hdXRvPC9j b2RlPiBiZWhhdmVzIHRodXM6DQoJPHVsPg0KCQk8bGk+aWYgPGNvZGU+dXNlX2RlZmF1bHQ9 JnF1b3Q7MSZxdW90OzwvY29kZT4sIHRoZSBmaXJzdCBzaGVldCBpbiB0aGUgbGlzdCB3aWxs IGJlIHNraXBwZWQgKGkuZS4gd2lsbCBhbHdheXMgYmUgYSB0cnVlIHN0eWxlc2hlZXQpLiBF cXVpdmFsZW50IHRvIDxjb2RlPnNraXA9JnF1b3Q7MSZxdW90OzwvY29kZT48L2xpPg0KCQk8 bGk+aWYgPGNvZGU+dXNlX2RlZmF1bHQ9JnF1b3Q7MCZxdW90OzwvY29kZT4gdGhlIGZpcnN0 IHNoZWV0IGluIHRoZSBsaXN0IHdpbGwgYmUgYW4gYWx0ZXJuYXRlIHN0eWxlc2hlZXQgKGku ZS4gZXF1aXZhbGVudCB0byA8Y29kZT5za2lwPSZxdW90OzAmcXVvdDs8L2NvZGU+KTwvbGk+ DQoJPC91bD48L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnNraXBfdGl0bGVzPC9z cGFuPiA6IGluIHRoZSBsaXN0IG9mIHNoZWV0cywgc2tpcCB0aGlzIG51bWJlciBvZiBzaGVl dHMgYmVmb3JlIHN0YXJ0aW5nIHRvIGFkZCA8Y29kZT50aXRsZTwvY29kZT4gYXR0cmlidXRl cy4gVGhlIHNwZWNpYWwgZGVmYXVsdCBzZXR0aW5nIG9mIDxjb2RlPmF1dG88L2NvZGU+IHdv cmtzIHRoZSBzYW1lIGFzIGZvciB0aGUgPGNvZGU+c2tpcDwvY29kZT4gYXR0cmlidXRlLiBO b3RlIHRoYXQgc29tZSBjb21iaW5hdGlvbnMgb2Ygc2tpcC9za2lwX3RpdGxlIGFyZSBub3Qg cGVybWl0dGVkIGJ5IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gc3BlY2lm aWNhdGlvbiBzbyBhcmUgZGlzYWxsb3dlZC4gU2VlIDxhIGhyZWY9IiNza2lwcGluZyI+c2tp cHBpbmc8L2E+IGZvciBtb3JlIGRldGFpbHM8L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0 bm0iPnNob3dfZW1wdHk8L3NwYW4+IDogYnkgZGVmYXVsdCwgaWYgYW55IGZpZWxkIChlLmcu IGEgY3VzdG9tIGZpZWxkKSBoYXMgbm8gdmFsdWUgYXNzaWduZWQgdG8gaXQgYW5kIHlvdSB0 cnkgdG8gcmVhZCBhIHNoZWV0IG5hbWUsIHRoZSBmaWVsZCB3aWxsIGJlIGlnbm9yZWQuIFNl dHRpbmcgdGhpcyB0byA8Y29kZT4xPC9jb2RlPiB3aWxsIGluY2x1ZGUgYSBzdHlsZXNoZWV0 IHdpdGggdGhlIG5hbWUgb2YgdGhlIGZpZWxkIGl0c2VsZi4gU2VlIDxhIGhyZWY9IiNlZzUi PkV4YW1wbGUgNTwvYT4gZm9yIGEgcHJhY3RpY2FsIGFwcGxpY2F0aW9uIG9mIHRoaXM8L2xp Pg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPnJlYWxfc2hlZXRzPC9zcGFuPiA6IG5vcm1h bGx5LCBzdGFuZGFyZCA8Y29kZT5jc3MucGhwP249c2hlZXRfbmFtZTwvY29kZT4gcmVmZXJl bmNlcyBhcmUgb3V0cHV0LiBJZiB5b3UgcHJlZmVyICYjODIxNjtyZWFsJiM4MjE3OyBzdHls ZXNoZWV0IGZpbGVuYW1lIHJlZmVyZW5jZXMsIHNldCB0aGlzIGF0dHJpYnV0ZSB0byA8Y29k ZT4xPC9jb2RlPi4gTm90ZSB5b3Ugd2lsbCBoYXZlIHRvIGVuc3VyZSB0aGF0IHRoZSBzdHls ZXNoZWV0IGZpbGVzIHJlYWxseSBleGlzdCBvbiB5b3VyIHNlcnZlciBpbiB0aGUgZ2l2ZW4g ZGlyZWN0b3J5IChzZWUgPGNvZGU+c2hlZXRzX2RpcjwvY29kZT4pPC9saT4NCgkJPGxpPjxz cGFuIGNsYXNzPSJhdG5tIj5zaGVldHNfZGlyPC9zcGFuPiA6IGxvY2F0aW9uIChyZWxhdGl2 ZSB0byB0aGUgcm9vdCBvZiB5b3VyIHRleHRwYXR0ZXJuIGluc3RhbGxhdGlvbikgd2hlcmUg eW91ciBzdHlsZXNoZWV0cyBhcmUgdG8gYmUgZm91bmQgaWYgdXNpbmcgPGNvZGU+cmVhbF9z aGVldHM9JnF1b3Q7MSZxdW90OzwvY29kZT4uIElmIHlvdSBoYXZlIHRoZSBydm1fY3NzIHBs dWdpbiBpbnN0YWxsZWQgaXQgd2lsbCBkZWZhdWx0IHRvIHRoZSBkaXJlY3Rvcnkgc3BlY2lm aWVkIGluIEFkbWluIC0mZ3Q7IFByZWZlcmVuY2VzIC0mZ3Q7IEFkdmFuY2VkIC0mZ3Q7IFN0 eWxlIGRpcmVjdG9yeTwvbGk+DQoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+cGFyc2VfdGFn czwvc3Bhbj4gOiBpZiB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHB1dCA8c3BhbiBjbGFzcz0i Y2FwcyI+VFhQPC9zcGFuPiB0YWdzIGluc2lkZSB5b3VyIHN0eWxlIHNoZWV0cyBhbmQgaGF2 ZSB0aGVtIHBhcnNlZCwgeW91IG5vdyBjYW4uIFNldCB0aGlzIGF0dHJpYnV0ZSB0byA8Y29k ZT4xPC9jb2RlPiB0byBlbmFibGUgdGFnIHBhcnNpbmcuIE5vdGUgdGhhdCB0aGlzIG9ubHkg d29ya3MgaWYgPGNvZGU+cmVhbF9zdHlsZXM9JnF1b3Q7MCZxdW90OzwvY29kZT4gIGJlY2F1 c2UgdGhlcmUmIzgyMTc7cyBubyB3YXkgZm9yIFRleHRwYXR0ZXJuIHRvIGludGVyY2VwdCBh IGRpcmVjdCBjYWxsIHRvIGEgc3R5bGVzaGVldDwvbGk+DQoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+ZGVsaW08L3NwYW4+IDogdGhlIGRlbGltaXRlciB0byB1c2UgYmV0d2VlbiA8Y29k ZT5zaGVldHM8L2NvZGU+LiBEZWZhdWx0IGlzIHRoZSBjb21tYSAoPGNvZGU+LDwvY29kZT4p PC9saT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5wYXJhbV9kZWxpbTwvc3Bhbj4gOiB0 aGUgZGVsaW1pdGVyIHRvIHVzZSBiZXR3ZWVuIGFkZGl0aW9uYWwgc2hlZXQgaW5mb3JtYXRp b24uIERlZmF1bHQgaXMgdGhlIGNvbG9uICg8Y29kZT46PC9jb2RlPik8L2xpPg0KCTwvdWw+ DQoNCgk8aDMgaWQ9InNoZWV0bmFtZXMiPlNoZWV0IG5hbWVzPC9oMz4NCg0KCTxwPldoZW4g dXNpbmcgdGhlIDxjb2RlPnNoZWV0czwvY29kZT4gYXR0cmlidXRlLCBpZiB5b3UgcHJlY2Vk ZSBhbnkgc2hlZXQgbmFtZSB3aXRoIGEgPGNvZGU+PzwvY29kZT4gdGhlIDxzcGFuIGNsYXNz PSJjYXBzIj5UWFA8L3NwYW4+IGVudmlyb25tZW50IHdpbGwgYmUgc2VhcmNoZWQgZm9yIGEg bWF0Y2hpbmcgbG9jYXRpb24uIEZvciBleGFtcGxlLCA8Y29kZT5zaGVldHM9JnF1b3Q7Y29y ZSwgP2N1c3RvbTMmcXVvdDs8L2NvZGU+IHdvdWxkIGxvYWQgY29yZS5jc3MgYW5kIHRoZW4g bG9vayBpbiB0aGUgY3VzdG9tMyBmaWVsZCBmb3IgYSBmdXJ0aGVyIGxpc3Qgb2Ygc3R5bGVz aGVldHMgdG8gbG9hZC4gVGhlIG9yZGVyIGluIHdoaWNoIHRoZSBsb2NhdGlvbnMgYXJlIHNl YXJjaGVkIGlzOiAxKSBBcnRpY2xlIGZpZWxkczsgMikgPGNvZGU+Jmx0O3R4cDp2YXJpYWJs ZSAvJmd0OzwvY29kZT47IDMpIFRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFuPi4g SWYgYSA8Y29kZT4/PC9jb2RlPiB2YWx1ZSBpcyBzdXBwbGllZCBhbmQgYSBzdWl0YWJsZSBs b2NhdGlvbiBjYW5ub3QgYmUgZm91bmQsIHRoZSB2YWx1ZSB5b3UgZ2F2ZSB3aWxsIGJlIHVz ZWQgdmVyYmF0aW0uPC9wPg0KDQoJPHA+WW91IG1heSBhbHNvIHNwZWNpZnkgdXAgdG8gdHdv IGFkZGl0aW9uYWwgcGllY2VzIG9mIGluZm9ybWF0aW9uIGluIGVhY2ggc2hlZXQgZGVmaW5p dGlvbjogMSkgdGhlIHNoZWV0JiM4MjE3O3MgJiM4MjIwO3ByZXR0eSBuYW1lJiM4MjIxOyB0 aGF0IHBlb3BsZSB3aWxsIHNlZSwgYW5kIDIpIGl0cyBtZWRpYSB0eXBlICh1c3VhbGx5IDxj b2RlPnNjcmVlbjwvY29kZT4pLiBUbyBkbyB0aGlzLCBzZXBhcmF0ZSB0aGUgdmFsdWVzIHdp dGggY29sb25zICh1bmxlc3MgY2hhbmdlZCB2aWEgdGhlIDxjb2RlPnBhcmFtX2RlbGltPC9j b2RlPiBhdHRyaWJ1dGUpIGxpa2UgdGhpczo8L3A+DQoNCjxwcmUgY2xhc3M9ImJsb2NrIj48 Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3N0eWxlIHVzZV9kZWZhdWx0PSZxdW90 OzEmcXVvdDsNCiAgICAgc2hlZXRzPSZxdW90O2NvcmUsIGNhdHM6Q2F0cyBvZiB0aGUgd29y bGQsIHByaW50ZXI6UHJpbnQgbGF5b3V0OnByaW50JnF1b3Q7IC8mZ3Q7DQo8L2NvZGU+PC9w cmU+DQoNCgk8cD5UaGF0IHdvdWxkIG91dHB1dCBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUg Zm9sbG93aW5nOjwvcD4NCg0KPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9j ayI+Jmx0O2xpbmsgcmVsPSZxdW90O3N0eWxlc2hlZXQmcXVvdDsgdHlwZT0mcXVvdDt0ZXh0 L2NzcyZxdW90OyBtZWRpYT0mcXVvdDtzY3JlZW4mcXVvdDsNCiAgICAgdGl0bGU9JnF1b3Q7 ZGVmYXVsdCZxdW90OyBocmVmPSZxdW90O2h0dHA6Ly9zaXRlLmNvbS90ZXh0cGF0dGVybi9j c3MucGhwP249ZGVmYXVsdCZxdW90OyAvJmd0Ow0KJmx0O2xpbmsgcmVsPSZxdW90O2FsdGVy bmF0ZSBzdHlsZXNoZWV0JnF1b3Q7IHR5cGU9JnF1b3Q7dGV4dC9jc3MmcXVvdDsgbWVkaWE9 JnF1b3Q7c2NyZWVuJnF1b3Q7DQogICAgIHRpdGxlPSZxdW90O2Zsb3dlcnMmcXVvdDsgaHJl Zj0mcXVvdDtodHRwOi8vc2l0ZS5jb20vdGV4dHBhdHRlcm4vY3NzLnBocD9uPWZsb3dlcnMm cXVvdDsgLyZndDsNCiZsdDtsaW5rIHJlbD0mcXVvdDthbHRlcm5hdGUgc3R5bGVzaGVldCZx dW90OyB0eXBlPSZxdW90O3RleHQvY3NzJnF1b3Q7IG1lZGlhPSZxdW90O3NjcmVlbiZxdW90 Ow0KICAgICB0aXRsZT0mcXVvdDtDYXRzIG9mIHRoZSB3b3JsZCZxdW90OyBocmVmPSZxdW90 O2h0dHA6Ly9zaXRlLmNvbS90ZXh0cGF0dGVybi9jc3MucGhwP249Y2F0cyZxdW90OyAvJmd0 Ow0KJmx0O2xpbmsgcmVsPSZxdW90O2FsdGVybmF0ZSBzdHlsZXNoZWV0JnF1b3Q7IHR5cGU9 JnF1b3Q7dGV4dC9jc3MmcXVvdDsgbWVkaWE9JnF1b3Q7cHJpbnQmcXVvdDsNCiAgICAgdGl0 bGU9JnF1b3Q7UHJpbnQgbGF5b3V0JnF1b3Q7IGhyZWY9JnF1b3Q7aHR0cDovL3NpdGUuY29t L3RleHRwYXR0ZXJuL2Nzcy5waHA/bj1wcmludGVyJnF1b3Q7IC8mZ3Q7DQo8L2NvZGU+PC9w cmU+DQoNCgk8aDMgaWQ9InJlcGxhY2VtZW50cyI+UmVwbGFjZW1lbnQgdGFnczwvaDM+DQoN Cgk8cD5JZiB5b3UgZG9uJiM4MjE3O3QgbGlrZSB0aGUgc3RhbmRhcmQgb3V0cHV0IG9yIHdp c2ggdG8gZmFzaGlvbiB5b3VyIG93biA8Y29kZT4mbHQ7bGluayZndDs8L2NvZGU+IHRhZ3Mg dGhlbiB5b3UgY2FuIHNwZWNpZnkgY29udGFpbmVyIGNvbnRlbnQgb3IgYSA8Y29kZT5mb3Jt PC9jb2RlPiB3aXRoIHdoaWNoIHRvIHByb2Nlc3MgdGhlIHJlc3VsdHMuIFRoZXJlIGFyZSBy ZXBsYWNlbWVudCB2YXJpYWJsZXMgeW91IGNhbiBlbXBsb3kgd2l0aGluIHlvdXIgbGF5b3V0 IHRvIGluc2VydCB0aGUgcmVsZXZhbnQgY29udGVudCBmb3IgZWFjaCBzdHlsZXNoZWV0Ojwv cD4NCg0KCTx1bD4NCgkJPGxpPjxjb2RlPntzbWRfc3R5bGVfbmFtZX08L2NvZGU+IDogdGhl IHN0eWxlc2hlZXQgbmFtZSBhcyBnaXZlbiBpbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlRY UDwvc3Bhbj4gU3R5bGVzIHRhYjwvbGk+DQoJCTxsaT48Y29kZT57c21kX3N0eWxlX3VybH08 L2NvZGU+IDogdGhlIGNvbXBsZXRlIDxzcGFuIGNsYXNzPSJjYXBzIj5VUkw8L3NwYW4+ICg8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPi1zdHlsZSBvciAmIzgyMTY7cmVhbCYjODIx NzsgZGVwZW5kaW5nIG9uIHRoZSA8Y29kZT5yZWFsX3NoZWV0czwvY29kZT4gYXR0cmlidXRl KTwvbGk+DQoJCTxsaT48Y29kZT57c21kX3N0eWxlX21lZGlhfTwvY29kZT4gOiB0aGUgdHlw ZSBvZiBzdHlsZXNoZWV0IChlLmcuIHNjcmVlbiwgcHJpbnQmIzgyMzA7KTwvbGk+DQoJCTxs aT48Y29kZT57c21kX3N0eWxlX3JlbH08L2NvZGU+IDogdGhlIHN0eWxlc2hlZXQgcmVsYXRp b25zaGlwIChlaXRoZXIgJiM4MjE2O3N0eWxlc2hlZXQmIzgyMTc7IG9yICYjODIxNjthbHRl cm5hdGUgc3R5bGVzaGVldCYjODIxNzspPC9saT4NCgkJPGxpPjxjb2RlPntzbWRfc3R5bGVf dGl0bGV9PC9jb2RlPiA6IHRoZSBodW1hbi1mcmllbmRseSB0aXRsZSB5b3UgaGF2ZSBhc3Np Z25lZCB0byB0aGUgc3R5ZWxzaGVldC4gSWYgbm90IHNwZWNpZmllZCwgaXQgZGVmYXVsdHMg dG8gdGhlIHN0eWxlc2hlZXQgbmFtZTwvbGk+DQoJCTxsaT48Y29kZT57c21kX3N0eWxlX2Nv dW50ZXJ9PC9jb2RlPiA6IHRoZSBjdXJyZW50IHN0eWxlc2hlZXQgbnVtYmVyIGJlaW5nIHBy b2Nlc3NlZDwvbGk+DQoJCTxsaT48Y29kZT57c21kX3N0eWxlX3RvdGFsfTwvY29kZT4gOiB0 aGUgdG90YWwgbnVtYmVyIG9mIHN0eWxlc2hlZXRzIGluIHRoZSBsaXN0PC9saT4NCgk8L3Vs Pg0KDQoJPGgzIGlkPSJza2lwcGluZyI+U2tpcHBpbmc8L2gzPg0KDQoJPHA+VGhlIDxzcGFu IGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiBzcGVjaWZpY2F0aW9uIGFsbG93cyBmb3IgdGhy ZWUgdHlwZXMgb2Ygc3R5bGVzaGVldDo8L3A+DQoNCgk8dWw+DQoJCTxsaT5QZXJzaXN0ZW50 IDogb25lcyB0aGF0IGFyZSBmb3JjZWQgb24gdGhlIHVzZXIgdW5sZXNzIHRoZXkgY2hvb3Nl IDxlbT5ObyBTdHlsZXM8L2VtPiBmcm9tIHRoZWlyIGJyb3dzZXIgbWVudTwvbGk+DQoJCTxs aT5QcmVmZXJyZWQgOiBvbmVzIHRoYXQgYXJlIGFsd2F5cyBsb2FkZWQgYnV0IGNhbiBiZSBz d2FwcGVkIG91dCBmb3Igb3RoZXJzPC9saT4NCgkJPGxpPkFsdGVybmF0ZSA6IG9uZXMgdGhh dCBhcmUgbm90IGxvYWRlZCBieSBkZWZhdWx0IGJ1dCBjYW4gYmUgc3dpdGNoZWQgaW4gYW5k IG91dCBmcmVlbHkgYnkgdGhlIHVzZXI8L2xpPg0KCTwvdWw+DQoNCgk8cD5XaXRoIGEgY29t YmluYXRpb24gb2YgPGNvZGU+dXNlX2RlZmF1bHQ8L2NvZGU+LCA8Y29kZT5za2lwPC9jb2Rl PiBhbmQgPGNvZGU+c2tpcF90aXRsZTwvY29kZT4geW91IGNhbiBvZmZlciBhbnkgb2YgdGhl c2UgdHlwZXMuIFNvbWUgY29tYmluYXRpb25zIG9mIDxjb2RlPnNraXA8L2NvZGU+IGFuZCA8 Y29kZT5za2lwX3RpdGxlPC9jb2RlPiBhcmUgbm90IHBlcm1pdHRlZCBiZWNhdXNlIHRoZXkg d291bGQgcmVuZGVyIGlsbGVnYWwgPHNwYW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IChl LmcuIHRoZSBjYXNlIHdoZW4geW91IGhhdmUgYW4gYWx0ZXJuYXRlIHN0eWxlc2hlZXQgd2l0 aG91dCBhIHRpdGxlKS48L3A+DQoNCgk8cD5UbyB0cnkgYW5kIG1ha2UgaXQgYSBsaXR0bGUg ZWFzaWVyIHRvIHZpc3VhbGlzZSwgaGVyZSBpcyBhIHRhYmxlIHRoYXQgc2hvd3Mgd2hpY2gg b2YgdGhlIHN0eWxlc2hlZXQgZmxhdm91cnMgYXJlIHNlcnZlZCB3aXRoIHZhcnlpbmcgdmFs dWVzIG9mIHRoZXNlIGF0dHJpYnV0ZXMuIEFzc3VtaW5nIHlvdSBoYXZlIHR3byBzdHlsZXNo ZWV0cyBsYWJlbGxlZCBBIGFuZCBCLCBzaGVldCBBIHdpbGwgYmUgc2V0IHRvIG9uZSBvZiB0 aGUgZm9sbG93aW5nIGZsYXZvdXJzOjwvcD4NCg0KCTx0YWJsZT4NCgkJPHRyPg0KCQkJPHRk PiZuYnNwOyA8L3RkPg0KCQkJPHRkPjxzdHJvbmc+c2tpcD0wPC9zdHJvbmc+IDwvdGQ+DQoJ CQk8dGQ+PHN0cm9uZz5za2lwPTE8L3N0cm9uZz4gPC90ZD4NCgkJPC90cj4NCgkJPHRyPg0K CQkJPHRkPiA8c3Ryb25nPnNraXBfdGl0bGU9MDwvc3Ryb25nPiA8L3RkPg0KCQkJPHRkPiBB bHRlcm5hdGUgPC90ZD4NCgkJCTx0ZD4gUHJlZmVycmVkIDwvdGQ+DQoJCTwvdHI+DQoJCTx0 cj4NCgkJCTx0ZD4gPHN0cm9uZz5za2lwX3RpdGxlPTE8L3N0cm9uZz4gPC90ZD4NCgkJCTx0 ZD4gKGRpc2FsbG93ZWQpIEFsdGVybmF0ZSA8L3RkPg0KCQkJPHRkPiBQZXJzaXN0ZW50IDwv dGQ+DQoJCTwvdHI+DQoJPC90YWJsZT4NCg0KCTxwPlRoZSBzYW1lIGxvZ2ljIGFwcGxpZXMg aWYgdXNpbmcgdGhlIDxjb2RlPmF1dG88L2NvZGU+IHBhcmFtZXRlciBhbmQvb3IgdGhlIDxj b2RlPnVzZV9kZWZhdWx0PC9jb2RlPiBhdHRyaWJ1dGUuIFRoZSBmaXJzdCBzaGVldCBpbiB0 aGUgbGlzdCB3aWxsIGJlY29tZSBvbmUgb2YgdGhvc2UgZmxhdm91cnMgb2YgU3R5bGVzaGVl dCB3aGVyZSB0aGUgdmFsdWVzIG9mIDxjb2RlPnNraXA8L2NvZGU+IGFuZCA8Y29kZT5za2lw X3RpdGxlPC9jb2RlPiBpbnRlcnNlY3QuIElmIHVzaW5nIHZhbHVlcyBvZiAmIzgyMTY7TiYj ODIxNzsgb3IgbW9yZSwgdGhlIGZpcnN0ICYjODIxNjtOJiM4MjE3OyBzaGVldHMgYmVjb21l IHRob3NlIHBhcnRpY3VsYXIgZmxhdm91cnMuPC9wPg0KDQoJPGgzIGlkPSJzbWRfc3R5bGVz d2l0Y2giPnNtZF9zdHlsZXN3aXRjaDwvaDM+DQoNCgk8cCBjbGFzcz0icmVxdWlyZXMiPlJl cXVpcmVzIGpRdWVyeSB0byBiZSBsb2FkZWQgb24geW91ciBwYWdlLCBiZWZvcmUgdGhlIGNh bGwgdG8gc21kX3N0eWxlc3dpdGNoLiBUZXN0ZWQgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24g KDEuMi42IGFzIG9mIHRoaXMgd3JpdGluZykuPC9wPg0KDQoJPHA+T24gaXRzIG93biB0aGUg PGEgaHJlZj0iI3NtZF9zdHlsZSI+c21kX3N0eWxlPC9hPiB0YWcgZ2l2ZXMgdGhlIHZpc2l0 b3IgdGhlIGFiaWxpdHkgdG8gc3dpdGNoIHN0eWxlcyB2aWEgdGhlICYjODIxNjtWaWV3IGFs dGVybmF0ZSBzdHlsZXNoZWV0JiM4MjE3OyBmYWNpbGl0eSBvZiBtb2Rlcm4gYnJvd3NlcnMu IElmIHlvdSB3aXNoIHRvIG9mZmVyIHRoZW0gYSB3YXkgb2YgaW5zdGFudGFuZW91c2x5IHN3 aXRjaGluZyAoYW5kIHJlbWVtYmVyaW5nKSB0aGUgY2hvc2VuIHRoZW1lIGZyb20gd2l0aGlu IHlvdXIgY29udGVudCwgdXNlIDxjb2RlPnNtZF9zdHlsZXN3aXRjaDwvY29kZT4gc29tZXdo ZXJlIGluIHRoZSBmbG93IG9mIHlvdXIgcGFnZSB0byBpbnNlcnQgYSBzdHlsZXNoZWV0IHN3 aXRjaGVyLiBJdCBjYW4gYmUgY3VzdG9taXNlZCBhcyBmb2xsb3dzOjwvcD4NCg0KCTxoNCBj bGFzcz0iYXR0cyAiPkF0dHJpYnV0ZXM8L2g0Pg0KDQoJPHVsPg0KCQk8bGk+PHNwYW4gY2xh c3M9ImF0bm0iPndyYXB0YWc8L3NwYW4+IDogc3RhbmRhcmQgKFgpSFRNTCB0YWcgdG8gd3Jh cCB0aGUgZW50aXJlIHN3aXRjaGVyIHdpdGguIERlZmF1bHQgaXMgPGNvZGU+dWw8L2NvZGU+ LiBJZiB5b3UgZG8gbm90IHNwZWNpZnkgdGhpcyBhdHRyaWJ1dGUgeW91X211c3RfIGNyZWF0 ZSB5b3VyIG93biBjb250YWluZXIgc29tZXdoZXJlIGVsc2UgaW4gdGhlIHBhZ2U8L2xpPg0K CQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmNsYXNzPC9zcGFuPiA6IDxzcGFuIGNsYXNzPSJj YXBzIj5DU1M8L3NwYW4+IGNsYXNzIHRvIGFwcGx5IHRvIHRoZSB3cmFwdGFnLiBEZWZhdWx0 IGlzIDxjb2RlPnNtZF9zd2l0Y2hlcjwvY29kZT4uIElmIHlvdSBoYXZlIG5vdCBzcGVjaWZp ZWQgYSA8Y29kZT53cmFwdGFnPC9jb2RlPiwgeW91ciBvd24gY29udGFpbmVyIG11c3QgYmUg Z2l2ZW4gdGhpcyBjbGFzcyBuYW1lIHNvIHRoZSBzd2l0Y2hlciBjYW4gYmUgaW5zZXJ0ZWQ8 L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmJyZWFrPC9zcGFuPiA6IHN0YW5kYXJk IChYKUhUTUwgdGFnIHRvIHdyYXAgZWFjaCBzdHlsZXNoZWV0IG5hbWUgYW5kIGxpbmsgd2l0 aC4gRGVmYXVsdCBpcyA8Y29kZT5saTwvY29kZT4uIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90 IGhhdmUgdG8gb3BlcmF0ZSBhcyBhIGNvbnRhaW5lciB0YWcgKHNlZSB0aGUgPGNvZGU+YnJl YWtfaXNfdGFnPC9jb2RlPiBhdHRyaWJ1dGUpPC9saT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJh dG5tIj5icmVha19pc190YWc8L3NwYW4+IDogaWYgdGhlIDxjb2RlPmJyZWFrPC9jb2RlPiBh dHRyaWJ1dGUgaXMgYSB0YWcsIHRoaXMgc2hvdWxkIGJlIHNldCB0byA8Y29kZT4xPC9jb2Rl PiAod2hpY2ggaXQgaXMgYnkgZGVmYXVsdCkuIElmIHlvdSB3aXNoIHRvIHVzZSBzb21ldGhp bmcgZWxzZSBiZXR3ZWVuIGVhY2ggc3R5bGVzaGVldCBuYW1lIChlLmcuIDxjb2RlPmJyZWFr PSZxdW90OyB8ICZxdW90OzwvY29kZT4pIHNldCB0aGlzIHRvIDxjb2RlPjA8L2NvZGU+PC9s aT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5saW5rY2xhc3M8L3NwYW4+IDogPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgdG8gYXBwbHkgdG8gZWFjaCBzdHlsZXNo ZWV0IGxpbmsuIERlZmF1bHQgaXMgPGNvZGU+c21kX3N0eWxlc3dpdGNoPC9jb2RlPjwvbGk+ DQoJCTxsaT48c3BhbiBjbGFzcz0iYXRubSI+YWN0aXZlY2xhc3M8L3NwYW4+IDogPHNwYW4g Y2xhc3M9ImNhcHMiPkNTUzwvc3Bhbj4gY2xhc3MgdG8gaW5kaWNhdGUgdGhlIGN1cnJlbnRs eSBzZWxlY3RlZCBzdHlsZXNoZWV0IGxpbmsuIERlZmF1bHQgaXMgPGNvZGU+c21kX2N1cnJz dHlsZTwvY29kZT48L2xpPg0KCQk8bGk+PHNwYW4gY2xhc3M9ImF0bm0iPmFsdF9vbmx5PC9z cGFuPiA6IGlmIHNldCB0byA8Y29kZT4xPC9jb2RlPiB3aWxsIG9ubHkgb2ZmZXIgc3R5bGVz aGVldHMgd2l0aCBhIHJlbCB0aGF0IGluY2x1ZGVzICYjODIxNjthbHRlcm5hdGUmIzgyMTc7 IGluIHRoZSBsaXN0LiBUaGUgZGVmYXVsdCBiZWhhdmlvdXIgKDxjb2RlPjA8L2NvZGU+KSBp cyB0byBsaXN0IGFsbCBzdHlsZXNoZWV0cyBvbiB0aGUgcGFnZSB0aGF0IGNvbnRhaW4gYSAm IzgyMTY7dGl0bGUmIzgyMTc7IGF0dHJpYnV0ZTwvbGk+DQoJCTxsaT48c3BhbiBjbGFzcz0i YXRubSI+c29ydDwvc3Bhbj4gOiBzZXQgdG8gPGNvZGU+MTwvY29kZT4gKHRoZSBkZWZhdWx0 KSB0byBzb3J0IHRoZSBzdHlsZXNoZWV0cyBpbiBhbHBoYWJldGljYWwgb3JkZXIuIElmIHNl dCB0byAwLCB0aGUgbW9zdCByZWNlbnRseSB1c2VkIHN0eWxlc2hlZXQgd2lsbCBiZSBzaG93 biBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdDwvbGk+DQoJCTxsaT48c3BhbiBjbGFzcz0iYXRu bSI+Y2FzZV9zZW5zaXRpdmU8L3NwYW4+IDogd2hldGhlciB0aGUgPGNvZGU+c29ydDwvY29k ZT4gaXMgY2FzZSBzZW5zaXRpdmUgKDxjb2RlPjE8L2NvZGU+KSBvciBub3QgKDxjb2RlPjA8 L2NvZGU+KS4gRGVmYXVsdCBpcyAwPC9saT4NCgkJPGxpPjxzcGFuIGNsYXNzPSJhdG5tIj5l eHBpcnk8L3NwYW4+IDogbnVtYmVyIG9mIGRheXMgYWZ0ZXIgd2hpY2ggdGhlIGNvb2tpZSB0 aGF0IGhvbGRzIHRoZSBjdXJyZW50IHN0eWxlc2hlZXQgcmVtYWlucyB2YWxpZC4gRGVmYXVs dCBpcyA8Y29kZT43PC9jb2RlPiBkYXlzPC9saT4NCgk8L3VsPg0KDQoJPHA+VGhlIHN0eWxl c2hlZXQgc3dpdGNoZXIgdGhhdCBpcyBpbnNlcnRlZCBhdCB0aGUgZ2l2ZW4gbG9jYXRpb24g Y29uc2lzdHMgb2YgYW4gYW5jaG9yIHRhZyB3aXRoIGEgbGluayB0byB0aGUgbmV3IHN0eWxl c2hlZXQuIFRoZSB0ZXh0IHdpdGhpbiB0aGUgYW5jaG9yIGlzIHRoZSBzdHlsZXNoZWV0IHRp dGxlIChpZiBzdXBwbGllZCkgb3IgaXRzIG5hbWUgaWYgbm90LiBOb3RlIHRoYXQgdGhlIHN3 aXRjaGVyIHdpbGwgcGljayB1cCA8ZW0+YWxsIHN0eWxlc2hlZXRzIHRoYXQgaGF2ZSBhIHRp dGxlIGF0dHJpYnV0ZTwvZW0+IHNvIGlmIGFueSBvZiB5b3VyIG90aGVyIHN0eWxlc2hlZXRz IG5vdCBjb250cm9sbGVkIGJ5IHRoZSBwbHVnaW4gaGF2ZSB0aXRsZXMsIHRoZXkgd2lsbCBi ZSBpbmNsdWRlZCBhcyB3ZWxsLiBUaGlzIGNvdWxkIGJlIGNvbnNpZGVyZWQgYSBmZWF0dXJl KCEpPC9wPg0KDQoJPHA+SWYgeW91IGFyZSBhIG5lYXRuZXNzIGJ1ZmYgYW5kIHByZWZlciB0 aGF0IGFsbCBqYXZhc2NyaXB0IGdvZXMgaW4gdGhlIDxjb2RlPiZsdDtoZWFkJmd0OzwvY29k ZT4sIHVzaW5nIDxjb2RlPndyYXB0YWc9JnF1b3Q7JnF1b3Q7PC9jb2RlPiB3aWxsIGFsbG93 IHlvdSB0byBpbnNlcnQgdGhlIDxjb2RlPiZsdDt0eHA6c21kX3N0eWxlc3dpdGNoIC8mZ3Q7 PC9jb2RlPiB0YWcgaW4gdGhlIGhlYWQgb2YgeW91ciBkb2N1bWVudCB3aGlsZSBsb2NhdGlu ZyB5b3VyIHN3aXRjaGluZyBjb250YWluZXIgZWxzZXdoZXJlLjwvcD4NCg0KCTxoMj5FeGFt cGxlczwvaDI+DQoNCgk8aDMgaWQ9ImVnMSI+RXhhbXBsZSAxPC9oMz4NCg0KPHByZSBjbGFz cz0iYmxvY2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfc3R5bGUNCiAgICAg c2hlZXRzPSZxdW90O3llbGxvdywgZ3JlZW4sIGJyb3duLCBibHVlLCBwaW5rLCBibGFjayZx dW90OyAvJmd0Ow0KJmx0O3R4cDpzbWRfc3R5bGVzd2l0Y2ggd3JhcHRhZz0mcXVvdDsmcXVv dDsgLyZndDsNCjwvY29kZT48L3ByZT4NCg0KCTxwPlNvbWV3aGVyZSBmdXJ0aGVyIGRvd24g dGhlIHBhZ2UgeW91IHdvdWxkIGhhdmUgdG8gYWRkOjwvcD4NCg0KPHByZSBjbGFzcz0iYmxv Y2siPjxjb2RlIGNsYXNzPSJibG9jayI+Jmx0O3VsIGNsYXNzPSZxdW90O3NtZF9zd2l0Y2hl ciZxdW90OyZndDsmbHQ7L3VsJmd0Ow0KPC9jb2RlPjwvcHJlPg0KDQoJPHA+VGhhdCB3aWxs IGFkZCBzaXggYWx0ZXJuYXRlIHN0eWxlc2hlZXRzIHRvIHRoZSBwYWdlIGFuZCBhZGQgYSBz d2l0Y2hlciB3aGVyZXZlciB5b3VyIDxjb2RlPiZsdDt1bCZndDs8L2NvZGU+IGFwcGVhcnMg b24gdGhlIHBhZ2UuIEEgZmV3IG1vZGlmaWNhdGlvbnMgYXJlIHBvc3NpYmxlOjwvcD4NCg0K CTx1bD4NCgkJPGxpPndpdGggcnZtX2NzcyBpbnN0YWxsZWQsIGFkZGluZyA8Y29kZT5yZWFs X3NoZWV0cz0mcXVvdDsxJnF1b3Q7PC9jb2RlPiB0byB0aGUgPGNvZGU+c21kX3N0eWxlPC9j b2RlPiB0YWcgd291bGQgY2hhbmdlIHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJMPC9zcGFu PnMgdG8gJiM4MjE2O3JlYWwmIzgyMTc7IDxzcGFuIGNsYXNzPSJjYXBzIj5DU1M8L3NwYW4+ IGZpbGUgcGF0aHM8L2xpPg0KCQk8bGk+YWRkaW5nIDxjb2RlPnVzZV9kZWZhdWx0PSZxdW90 OzEmcXVvdDs8L2NvZGU+IHdpbGwgYWRkIHRoZSBjdXJyZW50IHNlY3Rpb24mIzgyMTc7cyBz dHlsZXNoZWV0IHRvIHRoZSBsaXN0IGFzIHdlbGwuIElmIGl0IGhhcHBlbnMgdG8gYmUgdGhl IHNhbWUgYXMgb25lIG9mIHRoZSBvbmVzIGluIHRoZSBsaXN0IGFscmVhZHksIGl0IHdpbGwg b25seSBiZSB1c2VkIG9uY2U8L2xpPg0KCQk8bGk+YWRkaW5nIDxjb2RlPnNraXA9JnF1b3Q7 MiZxdW90OzwvY29kZT4gd2lsbCBjYXVzZSB0aGUgJiM4MjE2O3llbGxvdyYjODIxNzsgYW5k ICYjODIxNjtncmVlbiYjODIxNzsgc2hlZXRzIHRvIGJlIHN0YXRpYyAobm9uLWFsdGVybmF0 ZSk8L2xpPg0KCQk8bGk+dXNpbmcgPGNvZGU+cHJvbW90ZV9yZWNlbnQ8L2NvZGU+IHdpbGwg Y2hhbmdlIHRoZSBsb2FkIG9yZGVyIGFzIGZvbGxvd3M6DQoJPHVsPg0KCQk8bGk+PGNvZGU+ MDwvY29kZT4gOiBsb2FkIG9yZGVyIHdpbGwgYWx3YXlzIGJlIHllbGxvdywgZ3JlZW4sIGJy b3duLCBibHVlLCBwaW5rLCBibGFjazwvbGk+DQoJCTxsaT48Y29kZT4xPC9jb2RlPiA6IHBy b21vdGUgdGhlIGNob3NlbiBzaGVldCB1cCB0aGUgbGlzdC4gV2l0aCA8Y29kZT51c2VfZGVm YXVsdD0mcXVvdDsxJnF1b3Q7IHNraXA9JnF1b3Q7MiZxdW90OzwvY29kZT4sIGlmIHRoZSB2 aXNpdG9yIGNob3NlICYjODIxNjtwaW5rJiM4MjE3OyBhcyB0aGVpciB0aGVtZSBhbmQgcmVm cmVzaGVkIHRoZSBwYWdlLCB0aGUgbG9hZCBvcmRlciB3b3VsZCBiZTogeWVsbG93LCBwaW5r LCBncmVlbiwgYnJvd24sIGJsdWUsIGJsYWNrICh5ZWxsb3cgYW5kIHBpbmsgd291bGQgYmUg bGlzdGVkIGFzICYjODIyMDtzdGF0aWMmIzgyMjE7IHN0eWxlc2hlZXRzKTwvbGk+DQoJCTxs aT48Y29kZT4yPC9jb2RlPiA6IGZvcmNlIHdoaWNoZXZlciBzaGVldCB3YXMgbW9zdCByZWNl bnRseSBjaG9zZW4gdG8gYmUgdGhlIGZpcnN0IGxvYWRlZC4gQWdhaW4sIGlmIHRoZSB2aXNp dG9yIGNob3NlICYjODIxNjtwaW5rJiM4MjE3OyBhcyB0aGVpciBwcmVmZXJyZWQgc2hlZXQg YW5kIHJlZnJlc2hlZCB0aGUgcGFnZSwgdGhlIGxvYWQgb3JkZXIgd291bGQgYmUgcGluaywg eWVsbG93LCBncmVlbiwgYnJvd24sIGJsdWUsIGJsYWNrIChwaW5rIGFuZCB5ZWxsb3cgd291 bGQgYmUgc3RhdGljIHNoZWV0cyk8L2xpPg0KCTwvdWw+PC9saT4NCgk8L3VsPg0KDQoJPGgz IGlkPSJlZzIiPkV4YW1wbGUgMjwvaDM+DQoNCgk8cD5UbyBzZXQgdXAgdGhlIG5hbWVzIG9m IHRoZSBzdHlsZXNoZWV0cyB5b3Ugd2FudCB0byBpbmNsdWRlIGluIGEgPGNvZGU+Jmx0O3R4 cDp2YXJpYWJsZSAvJmd0OzwvY29kZT4gdHJ5IHRoaXM6PC9wPg0KDQo8cHJlIGNsYXNzPSJi bG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhwOnZhcmlhYmxlIG5hbWU9JnF1b3Q7 YWx0X3N0eWxlcyZxdW90Ow0KICAgICB2YWx1ZT0mcXVvdDtnaXJsczpHaXJseSB0aGVtZSwg Ym95czpMYWRzIG9ubHkmcXVvdDsgLyZndDsNCiZsdDt0eHA6c21kX3N0eWxlIHNoZWV0cz0m cXVvdDs/YWx0X3N0eWxlcyZxdW90OyAvJmd0Ow0KPC9jb2RlPjwvcHJlPg0KDQoJPGgzIGlk PSJlZzMiPkV4YW1wbGUgMzwvaDM+DQoNCgk8cD5HcmFiIHRoZSBkZWZhdWx0IHNoZWV0LCB0 aGUgJiM4MjIwO2ZpeGVkJiM4MjIxOyBzaGVldCAoYW5kIG1ha2UgdGhlbSBib3RoICYjODIx NjtzdGF0aWMmIzgyMTc7KSB0aGVuIGxvb2sgaW4gdGhlIGN1c3RvbSBmaWVsZCBsYWJlbGxl ZCA8Y29kZT5hbHRfc3R5bGVzPC9jb2RlPiBhbmQgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukw8L3NwYW4+IHZhcmlhYmxlIDxjb2RlPm15dGhlbWU8L2NvZGU+IGZvciBtb3JlIHNoZWV0 IGRlZmluaXRpb25zLjwvcD4NCg0KPHByZSBjbGFzcz0iYmxvY2siPjxjb2RlIGNsYXNzPSJi bG9jayI+Jmx0O3R4cDpzbWRfc3R5bGUgc2hlZXRzPSZxdW90O2ZpeGVkLCA/YWx0X3N0eWxl cywgP215dGhlbWUmcXVvdDsNCiAgICAgdXNlX2RlZmF1bHQ9JnF1b3Q7MSZxdW90OyBza2lw PSZxdW90OzImcXVvdDsgLyZndDsNCjwvY29kZT48L3ByZT4NCg0KCTxwPk5vdGUgdGhhdCBu byBkaXN0aW5jdGlvbiBpcyBtYWRlIHdoZXJlIHRvIGZpbmQgdGhlIHZhcmlhYmxlcywgdGhl eSBhcmUganVzdCBjaGVja2VkIGluIG9yZGVyIGFuZCB0aGUgZmlyc3Qgb25lIGl0IGZpbmRz IHRoYXQgbWF0Y2hlcyAoaWYgYXQgYWxsKSB3aWxsIGJlIHVzZWQuIFRodXMgaWYgeW91IGhh ZCBhIGN1c3RvbSBmaWVsZCBsYWJlbGxlZCA8Y29kZT5hbHRfc3R5bGVzPC9jb2RlPiBhbmQg c29tZW9uZSBwdXQgPGNvZGU+c2l0ZS5jb20vbXlfcGFnZT9hbHRfc3R5bGVzPXR3byx0aHJl ZSxmb3VyPC9jb2RlPiBvbiB0aGUgPHNwYW4gY2xhc3M9ImNhcHMiPlVSTDwvc3Bhbj4sIHlv dSB3b3VsZCBzdGlsbCBoYXZlIHRoZW0gcmVhZCBmcm9tIHRoZSBjdXN0b20gZmllbGQgYmVj YXVzZSBpdCBpcyAmIzgyMTY7aGlnaGVyJiM4MjE3OyBpbiB0aGUgaGllcmFyY2h5LiBPbmUg Y2F2ZWF0IGlzIHRoYXQgaWYgdGhlIGN1c3RvbSBmaWVsZCBpcyBlbXB0eSwgdGhlIG5leHQg cGxhY2UgaW4gdGhlIGxpc3QgaXMgY2hlY2tlZCB1bnRpbCBhbGwgbG9jYXRpb25zIGFyZSBl eGhhdXN0ZWQsIHRob3VnaCB5b3UgY2FuIGlnbm9yZSBlbXB0eSBmaWVsZHMgd2l0aCA8Y29k ZT5zaG93X2VtcHR5PSZxdW90OzAmcXVvdDs8L2NvZGU+LjwvcD4NCg0KCTxoMyBpZD0iZWc0 Ij5FeGFtcGxlIDQ8L2gzPg0KDQoJPHA+Rm9yIGEgbm9uLTxzcGFuIGNsYXNzPSJjYXBzIj5Y SFRNTDwvc3Bhbj4gPHNwYW4gY2xhc3M9ImNhcHMiPkRURDwvc3Bhbj4geW91IG1heSBuZWVk IHRvIGRyb3AgdGhlIHRyYWlsaW5nIDxjb2RlPi88L2NvZGU+IG9uIHRoZSA8Y29kZT4mbHQ7 bGluayZndDs8L2NvZGU+IGVsZW1lbnRzLCBzbyB5b3UgY291bGQgZG8gdGhpczo8L3A+DQoN CjxwcmUgY2xhc3M9ImJsb2NrIj48Y29kZSBjbGFzcz0iYmxvY2siPiZsdDt0eHA6c21kX3N0 eWxlIHNoZWV0cz0mcXVvdDtibHVlLCByZWQsIGdyZWVuJnF1b3Q7Jmd0Ow0KICZsdDtsaW5r IHJlbD0mcXVvdDt7c21kX3N0eWxlX3JlbH0mcXVvdDsgdHlwZT0mcXVvdDt0ZXh0L2NzcyZx dW90Ow0KICAgICBtZWRpYT0mcXVvdDt7c21kX3N0eWxlX21lZGlhfSZxdW90OyBocmVmPSZx dW90O3tzbWRfc3R5bGVfdXJsfSZxdW90Ow0KICAgICB0aXRsZT0mcXVvdDt7c21kX3N0eWxl X3RpdGxlfSZxdW90OyZndDsNCiZsdDsvdHhwOnNtZF9zdHlsZSZndDsNCjwvY29kZT48L3By ZT4NCg0KCTxoMyBpZD0iZWc1Ij5FeGFtcGxlIDU8L2gzPg0KDQoJPHA+VGhlIDxjb2RlPnNo b3dfZW1wdHk8L2NvZGU+IGF0dHJpYnV0ZSBzZWVtcyBmYWlybHkgcG9pbnRsZXNzIG9uIHRo ZSBzdXJmYWNlLCBidXQgaW1hZ2luZSB0aGlzIHNjZW5hcmlvOiB5b3Ugc2V0IHVwIGEgY3Vz dG9tIGZpZWxkIGNhbGxlZCA8Y29kZT5kZWZhdWx0X3N0eWxlPC9jb2RlPi4gV2hlbiBhdXRo b3JpbmcgYXJ0aWNsZXMsIHBlb3BsZSBjYW4gaW5zZXJ0IHRoZSBuYW1lIG9mIGEgc3R5bGVz aGVldCBpbiB0aGVyZSB0byBzdHlsZSB0aGUgcGFnZSB3aXRoLiBCdXQgaWYgdGhleSBsZWF2 ZSBpdCBibGFuayB5b3UgY291bGQgZW5zdXJlIHRoZSBwYWdlIHJlbmRlcnMgd2l0aCBhdCBs ZWFzdCA8ZW0+c29tZTwvZW0+IGRlZmF1bHQgY29udGVudCBieSBjcmVhdGluZyBhIHN0eWxl c2hlZXQgY2FsbGVkICYjODIyMDtkZWZhdWx0X3N0eWxlJiM4MjIxOyAoaS5lLiB0aGUgc2Ft ZSBuYW1lIGFzIHRoZSBjdXN0b20gZmllbGQpIGFuZCB1c2luZyBhIHRhZyBsaWtlIHRoaXM6 PC9wPg0KDQo8cHJlIGNsYXNzPSJibG9jayI+PGNvZGUgY2xhc3M9ImJsb2NrIj4mbHQ7dHhw OnNtZF9zdHlsZSBzaGVldHM9JnF1b3Q7P2RlZmF1bHRfc3R5bGUmcXVvdDsNCiAgICAgc2hv d19lbXB0eT0mcXVvdDsxJnF1b3Q7IC8mZ3Q7DQo8L2NvZGU+PC9wcmU+DQoNCgk8cD5JZiB0 aGUgY3VzdG9tIGZpZWxkIGlzIGVtcHR5LCB0aGUgcGx1Z2luIGNvbnZlcnRzIHRoZSByZXF1 ZXN0IHRvIDxjb2RlPiZsdDt0eHA6c21kX3N0eWxlIHNoZWV0cz0mcXVvdDtkZWZhdWx0X3N0 eWxlJnF1b3Q7IC8mZ3Q7PC9jb2RlPi48L3A+DQoNCgk8aDMgaWQ9ImVnNiI+RXhhbXBsZSA2 PC9oMz4NCg0KCTxwPlRhZyBwYXJzaW5nLjwvcD4NCg0KPHByZSBjbGFzcz0iYmxvY2siPjxj b2RlIGNsYXNzPSJibG9jayI+Jmx0O3R4cDpzbWRfc3R5bGUgc2hlZXRzPSZxdW90O2ZpcnN0 LCBzZWNvbmQsIHRoaXJkJnF1b3Q7DQogICAgIHBhcnNlX3RhZ3M9JnF1b3Q7MSZxdW90OyAv Jmd0Ow0KPC9jb2RlPjwvcHJlPg0KDQoJPHA+SWYgb25lIG9mIHlvdXIgc3R5bGVzaGVldHMg Y29udGFpbmVkIHRoZSBmb2xsb3dpbmc6PC9wPg0KDQo8cHJlIGNsYXNzPSJibG9jayI+PGNv ZGUgY2xhc3M9ImJsb2NrIj4uZmlsbGVyIHsNCiAgIGJhY2tncm91bmQ6dXJsKCZsdDt0eHA6 c2l0ZV91cmwgLyZndDtpbWFnZXMvYmcuanBnKTsNCiAgIGNvbG9yOnJlZDsNCn0NCjwvY29k ZT48L3ByZT4NCg0KCTxwPlRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiB0YWcg d291bGQgYmUgcmVwbGFjZWQgd2l0aCB0aGUgY29udGVudHMgYmVmb3JlIGJlaW5nIHNlcnZl ZC4gVGhpcyBkb2VzIGhhdmUgYSBwZXJmb3JtYW5jZSBwZW5hbHR5IGFzIHRoZSBzdHlsZXNo ZWV0IGlzIGZldGNoZWQgYW5kIHBhcnNlZCwgYnV0IGNhbiBiZSB2ZXJ5IHVzZWZ1bC4gWW91 IG1heSB1c2UgPGNvZGU+Jmx0O3R4cDpwaHAmZ3Q7Jmx0Oy90eHA6cGhwJmd0OzwvY29kZT4g dGFncyBpbiB0aGUgc3R5bGVzaGVldCBhcyBsb25nIGFzIHRoZSBhZG1pbiBwcmVmZXJlbmNl IHRvIGFsbG93IHBhZ2UgbGV2ZWwgPHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gaXMg ZW5hYmxlZC4gTWFueSB0aGFua3MgdG8gYWtva3NraXMgZm9yIHNvbWUgb2YgdGhlIGNvZGUg ZnJvbSBha29fY3NzUGFyc2UgdGhhdCBlbmFibGVzIHRoaXMgZmVhdHVyZS48L3A+DQoNCgk8 aDIgY2xhc3M9ImNoYW5nZWxvZyI+Q2hhbmdlbG9nPC9oMj4NCg0KCTx1bD4NCgkJPGxpPjEy IE9jdCAwOCB8IDAuMSB8IEluaXRpYWwgcmVsZWFzZTwvbGk+DQoJCTxsaT4xOCBPY3QgMDgg fCAwLjIgfCBBZGRlZCA8Y29kZT5wYXJzZV90YWdzPC9jb2RlPiAodGhhbmtzIGFrb2tza2lz IC8gam9obnN0ZXBoZW5zKSA7IGFkZGVkIDxjb2RlPnNraXBfdGl0bGU8L2NvZGU+IDsgZml4 ZWQgaW52YWxpZCBsaW5rIHRhZ3MgOyA8Y29kZT5yZWFsX3NoZWV0czwvY29kZT4gbm93IHdv cmsgd2l0aG91dCBhIGZvcm0vY29udGFpbmVyPC9saT4NCgk8L3VsPg0KDQo8L2Rpdj4KPCEt LSAtLS0gQkVHSU4gUExVR0lOIENTUyAtLS0gLS0+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ DQojc21kX2hlbHAgeyBsaW5lLWhlaWdodDoxLjMgO30NCiNzbWRfaGVscCBjb2RlIHsgZm9u dC13ZWlnaHQ6Ym9sZDsgZm9udDogMTA1JS8xMzAlICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIs IG1vbm9zcGFjZTsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZDQzt9DQojc21kX2hlbHAgY29k ZS5ibG9jayB7IGZvbnQtd2VpZ2h0Om5vcm1hbDsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsg YmFja2dyb3VuZC1jb2xvcjogI2YwZTY4YzsgZGlzcGxheTpibG9jazsgbWFyZ2luOjEwcHgg MTBweCAyMHB4OyBwYWRkaW5nOjEwcHg7IH0NCiNzbWRfaGVscCBhOmxpbmssICNzbWRfaGVs cCBhOnZpc2l0ZWQgeyBjb2xvcjogYmx1ZTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3Jk ZXItYm90dG9tOiAxcHggc29saWQgYmx1ZTsgcGFkZGluZy1ib3R0b206MXB4O30NCiNzbWRf aGVscCBhOmhvdmVyLCAjc21kX2hlbHAgYTphY3RpdmUgeyBjb2xvcjogYmx1ZTsgdGV4dC1k ZWNvcmF0aW9uOiBub25lOyBib3JkZXItYm90dG9tOiAycHggc29saWQgYmx1ZTsgcGFkZGlu Zy1ib3R0b206MXB4O30NCiNzbWRfaGVscCBoMSB7IGNvbG9yOiAjMzY5OyBmb250OiAyMHB4 IEdlb3JnaWEsIHNhbnMtc2VyaWY7IG1hcmdpbjogMDsgdGV4dC1hbGlnbjogY2VudGVyOyB9 DQojc21kX2hlbHAgaDIgeyBib3JkZXItYm90dG9tOiAxcHggc29saWQgYmxhY2s7IHBhZGRp bmc6MTBweCAwIDA7IGNvbG9yOiAjMzY5OyBmb250OiAxN3B4IEdlb3JnaWEsIHNhbnMtc2Vy aWY7IH0NCiNzbWRfaGVscCBoMyB7IGNvbG9yOiAjNjkzOyBmb250OiBib2xkIDEycHggQXJp YWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjogMTBweCAwIDA7 dGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTt9DQojc21kX2hlbHAgaDQgeyBmb250OiBib2xk IDExcHggQXJpYWwsIHNhbnMtc2VyaWY7IGxldHRlci1zcGFjaW5nOiAxcHg7IG1hcmdpbjog MTBweCAwIDAgO3RleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0NCiNzbWRfaGVscCAuYXRu bSB7IGZvbnQtd2VpZ2h0OmJvbGQ7IH0NCiNzbWRfaGVscCAubWFuZCB7IGJhY2tncm91bmQ6 I2VlZTsgYm9yZGVyOjFweCBkb3R0ZWQgIzk5OTsgfQ0KI3NtZF9oZWxwIC5yZXF1aXJlcyB7 Y29sb3I6cmVkO30NCiNzbWRfaGVscCB0YWJsZSB7d2lkdGg6MTAwJTsgdGV4dC1hbGlnbjpj ZW50ZXI7IHBhZGRpbmctYm90dG9tOjFlbTt9DQojc21kX2hlbHAgdGQsICNzbWRfaGVscCB0 aCB7Ym9yZGVyOjFweCBzb2xpZCAjOTk5OyBwYWRkaW5nOi41ZW0gMDt9DQo8L3N0eWxlPgo8 IS0tIC0tLSBFTkQgUExVR0lOIENTUyAtLS0gLS0+IjtzOjQ6ImNvZGUiO3M6NzI1NDoiLy8g c21kX3N0eWxlIGJ5IFN0ZWYgRGF3c29uDQoNCi8vIFNoYW1lbGVzc2x5IHN0b2xlbiBmcm9t IGFrb19jc3NQYXJzZSAodGhhbmtzISkNCmlmIChAdHhwaW50ZXJmYWNlPT09ImNzcyIgJiYg Z3BzKCdzbWRfc3R5bGVwYXJzZScpID09IDEpIHsNCglnbG9iYWwgJHByZWZzOw0KCSRzaGVl dCA9IChncHMoJ24nKSk7DQoJaWYgKCRzaGVldCkgew0KCQkkY3NzID0gc2FmZV9maWVsZCgn Y3NzJywndHhwX2NzcycsIm5hbWU9JyIuZG9TbGFzaCgkc2hlZXQpLiInIik7DQoJCWlmICgk Y3NzKSB7DQoJCQkkY3NzID0gYmFzZTY0X2RlY29kZSgkY3NzKTsNCgkJCSRjc3MgPSBwYXJz ZSgkY3NzKTsNCgkJCSRjc3MgPSAoJHByZWZzWydhbGxvd19wYWdlX3BocF9zY3JpcHRpbmcn XSkgPyBldmFsU3RyaW5nKCRjc3MpIDogJGNzczsNCgkJCWhlYWRlcignQ29udGVudC10eXBl OiB0ZXh0L2NzcycpOw0KCQkJZWNobygkY3NzKTsNCgkJCWV4aXQoKTsNCgkJfQ0KCX0NCn0N Cg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpmdW5jdGlvbiBzbWRfc3R5bGUoJGF0 dHMsICR0aGluZykgew0KCWdsb2JhbCAkcHJldGV4dCwgJHRoaXNhcnRpY2xlLCAkcHJlZnMs ICR2YXJpYWJsZTsNCg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJh eSgNCgkJJ3NoZWV0cycgPT4gJycsDQoJCSdmb3JtJyA9PiAnJywNCgkJJ3VzZV9kZWZhdWx0 JyA9PiAnMCcsIC8vIDA9bm87IDE9eWVzIGFzIHByaW1hcnkgc2hlZXQNCgkJJ3Byb21vdGVf cmVjZW50JyA9PiAnMScsIC8vIDA9cmV0YWluIG9yZGVyOyAxPXByb21vdGUgdXNlZCBzaGVl dHMgYnV0IGhvbm91ciBjb3JlIHNoZWV0czsgMj1wcm9tb3RlIGF0IGFsbCBjb3N0cw0KCQkn c2tpcCcgPT4gJ2F1dG8nLA0KCQknc2tpcF90aXRsZScgPT4gJ2F1dG8nLA0KCQknc2hvd19l bXB0eScgPT4gJzAnLA0KCQkncmVhbF9zaGVldHMnID0+ICcwJywgLy8gMD1ubzsgMT15ZXMN CgkJJ3NoZWV0c19kaXInID0+IEAkcHJlZnNbJ3J2bV9jc3NfZGlyJ10sDQoJCSdwYXJzZV90 YWdzJyA9PiAnMCcsDQoJCSdkZWxpbScgPT4gJywnLA0KCQkncGFyYW1kZWxpbScgPT4gJzon LA0KCQknZGVidWcnID0+ICcwJywNCgkpLCAkYXR0cykpOw0KDQoJJG91dCA9IGFycmF5KCk7 DQoJJHN0eWxlcyA9IGRvX2xpc3QoJHNoZWV0cywgJGRlbGltKTsNCgkkZXhwc3R5bGVzID0g YXJyYXkoKTsNCglmb3JlYWNoICgkc3R5bGVzIGFzICRpZHggPT4gJG9wdCkgew0KCQlpZiAo c3RycG9zKCRvcHQsICI/IikgPT09IDApIHsNCgkJCSRvcHQgPSBzdWJzdHIoc3RydG9sb3dl cigkb3B0KSwgMSk7DQoJCQkkdG1wYSA9IGFycmF5KCk7DQoJCQlpZiAoaXNzZXQoJHByZXRl eHRbJG9wdF0pICYmICRwcmV0ZXh0WyRvcHRdICE9ICIiKSB7DQoJCQkJJHRtcGEgPSBkb19s aXN0KCRwcmV0ZXh0WyRvcHRdLCAkZGVsaW0pOw0KCQkJCSRleHBzdHlsZXMgPSBhcnJheV9t ZXJnZSgkZXhwc3R5bGVzLCAkdG1wYSk7DQoJCQl9IGVsc2UgaWYgKGlzc2V0KCR0aGlzYXJ0 aWNsZVskb3B0XSkgJiYgJHRoaXNhcnRpY2xlWyRvcHRdICE9ICIiKSB7DQoJCQkJJHRtcGEg PSBkb19saXN0KCR0aGlzYXJ0aWNsZVskb3B0XSwgJGRlbGltKTsNCgkJCQkkZXhwc3R5bGVz ID0gYXJyYXlfbWVyZ2UoJGV4cHN0eWxlcywgJHRtcGEpOw0KCQkJfSBlbHNlIGlmIChpc3Nl dCgkdmFyaWFibGVbJG9wdF0pICYmICR2YXJpYWJsZVskb3B0XSAhPSAiIikgew0KCQkJCSR0 bXBhID0gZG9fbGlzdCgkdmFyaWFibGVbJG9wdF0sICRkZWxpbSk7DQoJCQkJJGV4cHN0eWxl cyA9IGFycmF5X21lcmdlKCRleHBzdHlsZXMsICR0bXBhKTsNCgkJCX0gZWxzZSBpZiAoaXNz ZXQoJF9HRVRbJG9wdF0pICYmICRfR0VUWyRvcHRdICE9ICIiKSB7DQoJCQkJJHRtcGEgPSBk b19saXN0KGdwcygkb3B0KSwgJGRlbGltKTsNCgkJCQkkZXhwc3R5bGVzID0gYXJyYXlfbWVy Z2UoJGV4cHN0eWxlcywgJHRtcGEpOw0KCQkJfSBlbHNlIGlmICgkc2hvd19lbXB0eSkgew0K CQkJCSRleHBzdHlsZXNbXSA9ICRvcHQ7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkZXhwc3R5 bGVzW10gPSAkb3B0Ow0KCQl9DQoJfQ0KCSRzdHlsZXMgPSAkZXhwc3R5bGVzOw0KDQoJJHNr aXAgPSAoJHNraXA9PSJhdXRvIikgPyAkdXNlX2RlZmF1bHQgOiAkc2tpcDsNCgkkc2tpcF90 aXRsZSA9ICgkc2tpcF90aXRsZT09ImF1dG8iKSA/ICR1c2VfZGVmYXVsdCA6ICRza2lwX3Rp dGxlOw0KCSRza2lwX3RpdGxlID0gKCRza2lwPT0wKSA/IDAgOiAkc2tpcF90aXRsZTsNCglp ZiAoJHVzZV9kZWZhdWx0ID4gMCkgew0KCQkkZGVmYXVsdCA9IHNhZmVfcm93KCdjc3MnLCAn dHhwX3NlY3Rpb24nLCAibmFtZSA9ICciLmRvU2xhc2goJHByZXRleHRbJ3MnXSkuIiciLCAk ZGVidWcpOw0KCQlhcnJheV91bnNoaWZ0KCRzdHlsZXMsICRkZWZhdWx0Wydjc3MnXSk7DQoJ fQ0KDQoJLy8gSWYgYSBwcmV2aW91cyBzdHlsZSBoYXMgYmVlbiBjaG9zZW4sIG1vdmUgaXQg dG8gdGhlIGZyb250IG9mIHRoZSBsaXN0IChpZiByZXF1ZXN0ZWQpLg0KCS8vIFRoaXMgZm9y Y2VzIGdvb2QgYnJvd3NlcnMgdG8gJ2ZsYXNoJyBsZXNzIHdoZW4gY2hhbmdpbmcgcGFnZXMN CgkkY29va2llc3R5bGUgPSBjcygic21kX3N0eWxlIik7DQoJaWYgKCRwcm9tb3RlX3JlY2Vu dCAmJiAkY29va2llc3R5bGUpIHsNCgkJJHJlamlnID0gYXJyYXkoKTsNCgkJZm9yZWFjaCAo JHN0eWxlcyBhcyAkaWR4ID0+ICRzdHlsZSkgew0KCQkJaWYgKCgkaWR4IDwgJHNraXApICYm ICRwcm9tb3RlX3JlY2VudCA9PSAxKSB7DQoJCQkJJHJlamlnW10gPSAkc3R5bGU7DQoJCQkJ Y29udGludWU7DQoJCQl9DQoJCQlpZiAoc3RycG9zKCRzdHlsZSwgJGNvb2tpZXN0eWxlKSAh PT0gZmFsc2UpIHsNCgkJCQkkcmVqaWdbXSA9ICRzdHlsZTsNCgkJCQlicmVhazsNCgkJCX0N CgkJfQ0KCQkkc3R5bGVzID0gYXJyYXlfbWVyZ2UoJHJlamlnLCAkc3R5bGVzKTsNCgkJJHN0 eWxlcyA9IGFycmF5X3VuaXF1ZSgkc3R5bGVzKTsNCgl9DQoNCglpZiAoJGRlYnVnKSB7DQoJ CWVjaG8gIisrIFNUWUxFUyArKyI7DQoJCWRtcCgkc3R5bGVzKTsNCgl9DQoJJHN0eWxlY250 ID0gMTsNCgkkbnVtX3N0eWxlcyA9IGNvdW50KCRzdHlsZXMpOw0KCWZvcmVhY2ggKCRzdHls ZXMgYXMgJHN0eWxlKSB7DQoJCSRzdHlsZW9wdHMgPSBkb19saXN0KCRzdHlsZSwgJHBhcmFt ZGVsaW0pOw0KCQkkbmFtZSA9IChjb3VudCgkc3R5bGVvcHRzKSA+PSAxKSA/ICRzdHlsZW9w dHNbMF0gOiAnJzsNCgkJJHRpdGxlID0gKCRzdHlsZWNudCA+ICRza2lwIHx8ICRzdHlsZWNu dCA+ICRza2lwX3RpdGxlKSA/ICgoY291bnQoJHN0eWxlb3B0cykgPj0gMikgPyAkc3R5bGVv cHRzWzFdIDogJG5hbWUpIDogJyc7DQoJCSRtZWRpYSA9IChjb3VudCgkc3R5bGVvcHRzKSA+ PSAzKSA/ICRzdHlsZW9wdHNbMl0gOiAnc2NyZWVuJzsNCgkJJHJlbCA9ICgoJHN0eWxlY250 ID4gJHNraXApID8gImFsdGVybmF0ZSAiIDogJycpIC4gInN0eWxlc2hlZXQiOw0KCQkkdXJs ID0gaHUuICgoJHJlYWxfc2hlZXRzICYmICRzaGVldHNfZGlyKSA/ICRzaGVldHNfZGlyIC4g Jy8nIC5zdHJ0b2xvd2VyKHNhbml0aXplRm9yVXJsKCRuYW1lKSkuICcuY3NzJyA6ICd0ZXh0 cGF0dGVybi9jc3MucGhwP249Jy4kbmFtZSAuICgoJHBhcnNlX3RhZ3MpID8gYS4nc21kX3N0 eWxlcGFyc2U9MScgOiAnJykpOw0KLyoNCgkJaWYgKCRwYXJzZV90YWdzKSB7DQoJCQkkdXJs IC49ICgoc3RycG9zKCR1cmwsICc/JykgPT09IGZhbHNlKSA/ICc/JyA6IGEpIC4gJ3NtZF9z dHlsZXBhcnNlPTEnOw0KCQl9DQoqLw0KCQkvLyBNYWtlIHVwIHRoZSByZXBsYWNlbWVudCBh cnJheQ0KCQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoDQoJCQkJJ3tzbWRfc3R5bGVfbmFtZX0n ID0+ICRuYW1lLA0KCQkJCSd7c21kX3N0eWxlX3VybH0nID0+ICR1cmwsDQoJCQkJJ3tzbWRf c3R5bGVfbWVkaWF9JyA9PiAkbWVkaWEsDQoJCQkJJ3tzbWRfc3R5bGVfcmVsfScgPT4gJHJl bCwNCgkJCQkne3NtZF9zdHlsZV90aXRsZX0nID0+ICR0aXRsZSwNCgkJCQkne3NtZF9zdHls ZV9jb3VudGVyfScgPT4gJHN0eWxlY250LA0KCQkJCSd7c21kX3N0eWxlX3RvdGFsfScgPT4g JG51bV9zdHlsZXMsDQoJCSk7DQoNCgkJaWYgKCRkZWJ1Zykgew0KCQkJZWNobyAiKysgUkVQ TEFDRU1FTlRTICsrIjsNCgkJCWRtcCgkcmVwbGFjZW1lbnRzKTsNCgkJfQ0KDQoJCSRvdXRb XSA9ICgkdGhpbmcpID8gcGFyc2Uoc3RydHIoJHRoaW5nLCAkcmVwbGFjZW1lbnRzKSkgOiAo DQoJCQkJCSgkZm9ybSkgPyBzdHJ0cihwYXJzZV9mb3JtKCRmb3JtKSwgJHJlcGxhY2VtZW50 cykgOiAoDQoJCQkJCSgkcmVhbF9zaGVldHMgfHwgJHBhcnNlX3RhZ3MpID8gJzxsaW5rIHJl bD0iJy4kcmVsLiciJy4gKCgkdGl0bGUpID8gJyB0aXRsZT0iJy4kdGl0bGUuJyInIDogJycp IC4nIGhyZWY9IicuJHVybC4nIiBtZWRpYT0iJy4kbWVkaWEuJyIgdHlwZT0idGV4dC9jc3Mi IC8+JyA6DQoJCQkJCWNzcyhhcnJheSgNCgkJCQkJCSJmb3JtYXQiID0+ICJsaW5rIiwNCgkJ CQkJCSJtZWRpYSIgPT4gJG1lZGlhLA0KCQkJCQkJIm4iID0+ICRuYW1lLA0KCQkJCQkJInJl bCIgPT4gJHJlbCwNCgkJCQkJCSJ0aXRsZSIgPT4gJHRpdGxlLA0KCQkJCQkJKSkNCgkJCQkJ KSk7DQoNCgkJJHN0eWxlY250Kys7DQoJfQ0KDQoJcmV0dXJuIGpvaW4oIlxuIiwgJG91dCk7 DQp9DQoNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLy8gSmF2YXNjcmlwdCBzdHls ZSBzd2l0Y2hlcg0KZnVuY3Rpb24gc21kX3N0eWxlc3dpdGNoKCRhdHRzLCAkdGhpbmcpIHsN Cg0KCS8vIFBsdWdpbiBvcHRpb25zDQoJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJJ3dyYXB0 YWcnID0+ICd1bCcsDQoJCSdjbGFzcycgPT4gJ3NtZF9zd2l0Y2hlcicsDQoJCSdicmVhaycg PT4gJ2xpJywNCgkJJ2JyZWFrX2lzX3RhZycgPT4gJzEnLA0KCQknbGlua2NsYXNzJyA9PiAn c21kX3N0eWxlc3dpdGNoJywNCgkJJ2FjdGl2ZWNsYXNzJyA9PiAnc21kX2N1cnJzdHlsZScs DQoJCSdhbHRfb25seScgPT4gJzAnLCAvLyAwPU5vOyAxPVllcywgb25seSBzaG93IGFsdGVy bmF0ZSBzdHlsZXNoZWV0cw0KCQknc29ydCcgPT4gJzEnLCAvLyAwPU5vOyAxPVllcw0KCQkn Y2FzZV9zZW5zaXRpdmUnID0+ICcwJywNCgkJJ2V4cGlyeScgPT4gJzcnLCAvLyBJbiBkYXlz DQoJCSdkZWJ1ZycgPT4gJzAnLA0KCSksICRhdHRzKSk7DQoNCgkvLyBNYWtlIHN1cmUgdGhl cmUgYXJlIGFsd2F5cyBqUXVlcnkgZWxlbWVudHMgdG8gc3dpbmcgb2ZmLCB0aHVzIGF2b2lk aW5nIGpzIGVycm9ycw0KCSRjbGFzcyA9ICh0cmltKCRjbGFzcyk9PSIiKSA/ICJzbWRfc3dp dGNoZXIiIDogJGNsYXNzOw0KCSRsaW5rY2xhc3MgPSAodHJpbSgkbGlua2NsYXNzKT09IiIp ID8gJ3NtZF9zdHlsZXN3aXRjaCcgOiAkbGlua2NsYXNzOw0KCSRzdHlsZW1hdGNoID0gKCgk YWx0X29ubHkpID8gJ2FsdGVybmF0ZSAnIDogJycpLidzdHlsZSc7DQoNCgkkb3V0ID0gYXJy YXkoKTsNCglpZiAoJHdyYXB0YWcpIHsNCgkJJG91dFtdID0gJzwnLiR3cmFwdGFnLicgY2xh c3M9IicuJGNsYXNzLiciPjwvJy4kd3JhcHRhZy4nPic7DQoJfQ0KCSRvdXRbXSA9IDw8PEVP SlMNCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii90ZXh0cGF0dGVybi90 ZXh0cGF0dGVybi5qcyI+PC9zY3JpcHQ+DQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw dCI+DQpqUXVlcnkoZnVuY3Rpb24oKSB7DQoJdmFyIHNtZF9zdHlsZXMgPSBbXTsNCgl2YXIg YWN0X2NsYXNzID0gJyc7DQoJalF1ZXJ5KCdsaW5rW0ByZWwqPXskc3R5bGVtYXRjaH1dW0B0 aXRsZV0nKS5lYWNoKGZ1bmN0aW9uKGlkKSB7DQoJCWlmICh0aGlzLmRpc2FibGVkID09IHRy dWUpIHsNCgkJCWFjdF9jbGFzcyA9ICcnOw0KCQl9IGVsc2Ugew0KCQkJYWN0X2NsYXNzID0g IiB7JGFjdGl2ZWNsYXNzfSI7DQoJCX0NCgkJc21kX3N0eWxlcy5wdXNoKCc8YSByZWw9Iicr dGhpcy5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykrJyIgaHJlZj0iJyt0aGlzLmdldEF0dHJpYnV0 ZSgnaHJlZicpKyciIGNsYXNzPSJ7JGxpbmtjbGFzc30nK2FjdF9jbGFzcysnIj4nK3RoaXMu Z2V0QXR0cmlidXRlKCd0aXRsZScpKyc8L2E+Jyk7DQoJfSk7DQoNCglpZiAoeyRzb3J0fT09 MSkgew0KCQlzbWRfc3R5bGVzID0gKHskY2FzZV9zZW5zaXRpdmV9PT0wKQ0KCQkJPyBzbWRf c3R5bGVzLnNvcnQoZnVuY3Rpb24oYSxiKSB7DQoJCQkJdmFyIHggPSBhLnRvTG93ZXJDYXNl KCk7DQoJCQkJdmFyIHkgPSBiLnRvTG93ZXJDYXNlKCk7DQoJCQkJcmV0dXJuICgoeCA8IHkp ID8gLTEgOiAoKHggPiB5KSA/IDEgOiAwKSk7DQoJCQkJfSkNCgkJCTogc21kX3N0eWxlcy5z b3J0KCk7DQoJfQ0KCWpRdWVyeSgnLnskY2xhc3N9JykuYXBwZW5kKA0KCQkoKHskYnJlYWtf aXNfdGFnfT09MCkNCgkJCT8gc21kX3N0eWxlcy5qb2luKCJ7JGJyZWFrfSIpDQoJCQk6ICI8 eyRicmVha30+IitzbWRfc3R5bGVzLmpvaW4oIjwveyRicmVha30+PHskYnJlYWt9PiIpKyI8 L3skYnJlYWt9PiINCgkJKQ0KCSk7DQoNCglqUXVlcnkoJy57JGxpbmtjbGFzc30nKS5jbGlj ayhmdW5jdGlvbigpIHsNCgkJalF1ZXJ5KCcueyRsaW5rY2xhc3N9JykuZWFjaChmdW5jdGlv bigpIHsNCgkJCWpRdWVyeSh0aGlzKS5yZW1vdmVDbGFzcygieyRhY3RpdmVjbGFzc30iKTsN CgkJfSk7DQoJCXN3aXRjaFN0eWxlc2hlZXQodGhpcy5nZXRBdHRyaWJ1dGUoInJlbCIpKTsN CgkJalF1ZXJ5KHRoaXMpLmFkZENsYXNzKCJ7JGFjdGl2ZWNsYXNzfSIpOw0KCQlyZXR1cm4g ZmFsc2U7DQoJfSk7DQoJdmFyIGN1cnJTdHlsZSA9IGdldENvb2tpZSgnc21kX3N0eWxlJyk7 DQoJaWYgKGN1cnJTdHlsZSkgew0KCQlzd2l0Y2hTdHlsZXNoZWV0KGN1cnJTdHlsZSk7DQoJ fQ0KfSk7DQovLyBTd2l0Y2ggdG8gdGhlIGdpdmVuIHN0eWxlc2hlZXQNCmZ1bmN0aW9uIHN3 aXRjaFN0eWxlc2hlZXQoc3R5bGVyZWYpIHsNCglqUXVlcnkoJ2xpbmtbQHJlbCo9c3R5bGVd W0B0aXRsZV0nKS5lYWNoKGZ1bmN0aW9uKGlkKSB7DQoJCXRoaXMuZGlzYWJsZWQgPSB0cnVl Ow0KCQlpZiAodGhpcy5nZXRBdHRyaWJ1dGUoJ3RpdGxlJykgPT0gc3R5bGVyZWYpIHRoaXMu ZGlzYWJsZWQgPSBmYWxzZTsNCgl9KTsNCglzZXRDb29raWUoJ3NtZF9zdHlsZScsIHN0eWxl cmVmLCB7JGV4cGlyeX0pOw0KfQ0KPC9zY3JpcHQ+DQpFT0pTOw0KDQoJcmV0dXJuIGpvaW4o IlxuIiwgJG91dCk7DQp9IjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJmbGFncyI7czoxOiIw IjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6MzoibWQ1IjtzOjMyOiJkNjJhZjM4NzcyZGQwM2Vm ZGUwMTZkYjJiZjViMWE2MiI7fQ==