# rvm_inherit v0.4 # Template inheritance # # License: GNU GPLv2 or later # # Ruud van Melick # http://vanmelick.com/txp/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTE6InJ2bV9pbmhlcml0IjtzOjc6InZlcnNpb24iO3M6Mzoi MC40IjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2YW4gTWVsaWNrIjtzOjEwOiJhdXRob3Jf dXJpIjtzOjI1OiJodHRwOi8vdmFubWVsaWNrLmNvbS90eHAvIjtzOjExOiJkZXNjcmlwdGlv biI7czoyMDoiVGVtcGxhdGUgaW5oZXJpdGFuY2UiO3M6NDoidHlwZSI7aTowO3M6NDoiaGVs cCI7czoxNTUzMToiCTxwPjxzdHlsZT4KICAgbGkgY29kZSB7Zm9udC13ZWlnaHQ6IGJvbGQ7 fQogICBwcmUge3BhZGRpbmc6IDAuNWVtIDFlbTsgYmFja2dyb3VuZDogI2VlZTsgYm9yZGVy OiAxcHggZGFzaGVkICNjY2M7fQogICBoMSwgaDIsIGgzLCBoMyBjb2RlIHtmb250LWZhbWls eTogc2Fucy1zZXJpZjsgZm9udC13ZWlnaHQ6IGJvbGQ7fQogICBoMSwgaDIsIGgzIHttYXJn aW4tbGVmdDogLTFlbTt9CiAgIGgyLCBoMyB7bWFyZ2luLXRvcDogMmVtO30KICAgbGkgYSBj b2RlIHtmb250LXdlaWdodDogbm9ybWFsO30KICAgY29kZSB7Ym9yZGVyOiAwcHg7IGJhY2tn cm91bmQ6IG5vbmU7fTxiciAvPgo8L3N0eWxlPjwvcD4KCgk8aDEgaWQ9InRvcCI+cnZtX2lu aGVyaXQ8L2gxPgoKCTxwPlRoaXMgcGx1Z2luIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSB0 ZW1wbGF0ZSBpbmhlcml0YW5jZS48L3A+CgoJPHA+UGxlYXNlIHJlcG9ydHMgYnVncyBhbmQg cHJvYmxlbXMgd2l0aCB0aGlzIHBsdWdpbiBpbiA8YSBocmVmPSJodHRwOi8vZm9ydW0udGV4 dHBhdHRlcm4uY29tL3ZpZXd0b3BpYy5waHA/aWQ9NDU1NTIiPnRoaXMgZm9ydW0gdGhyZWFk PC9hPjwvcD4KCgk8aDIgaWQ9ImNvbnRlbnRzIj5Db250ZW50czwvaDI+CgoJPHVsPgoJCTxs aT48YSBocmVmPSIjdGFncyI+VGFnczwvYT4KCTx1bD4KCQk8bGk+PGEgaHJlZj0iI3J2bV9p bmhlcml0Ij48Y29kZT4mbHQ7dHhwOnJ2bV9pbmhlcml0Jmd0OzwvY29kZT48L2E+PC9saT4K CQk8bGk+PGEgaHJlZj0iI3J2bV9ibG9jayI+PGNvZGU+Jmx0O3R4cDpydm1fYmxvY2smZ3Q7 PC9jb2RlPjwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjcnZtX2NoaWxkIj48Y29kZT4mbHQ7 dHhwOnJ2bV9jaGlsZCZndDs8L2NvZGU+PC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNydm1f cGFyZW50Ij48Y29kZT4mbHQ7dHhwOnJ2bV9wYXJlbnQmZ3Q7PC9jb2RlPjwvYT48L2xpPgoJ PC91bD48L2xpPgoJCTxsaT48YSBocmVmPSIjc3RhcnQiPkdldHRpbmcgc3RhcnRlZDwvYT48 L2xpPgoJCTxsaT48YSBocmVmPSIjbmVzdGluZyI+TmVzdGluZyBibG9ja3M8L2E+PC9saT4K CQk8bGk+PGEgaHJlZj0iI211bHRpcGxlIj5SZW5kZXJpbmcgYSBibG9jayBtdWx0aXBsZSB0 aW1lczwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjY2hpbGQiPkNoaWxkcmVuPC9hPjwvbGk+ CgkJPGxpPjxhIGhyZWY9IiNwYXJlbnQiPlBhcmVudHM8L2E+PC9saT4KCTwvdWw+CgoJPGgz IGlkPSJydm1faW5oZXJpdCI+PGNvZGU+Jmx0O3R4cDpydm1faW5oZXJpdCAvJmd0OzwvY29k ZT48L2gzPgoKCTxwPk11c3QgYmUgdXNlZCBhcyBhIGNvbnRhaW5lciB0YWcuIFNob3VsZCBj b250YWluIG9ubHkgPGNvZGU+Jmx0O3R4cDpydm1fYmxvY2smZ3Q7PC9jb2RlPiwgPGNvZGU+ Jmx0O3R4cDpydm1fY2hpbGQmZ3Q7PC9jb2RlPiBhbmQvb3IgPGNvZGU+Jmx0O3R4cDpydm1f cGFyZW50Jmd0OzwvY29kZT4gdGFncywgYWx0aG91Z2ggdGhvc2UgdGFncyBjYW4gb2YgY291 cnNlIGNvbnRhaW4gb3RoZXIgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gdGFncy48 L3A+CgoJPGg0PkF0dHJpYnV0ZXM6PC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPmZvcm09JnF1 b3Q7dGV4dCZxdW90OzwvY29kZT48YnIgLz4KTmFtZSBvZiBhbiBleGlzdGluZyA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBmb3JtIHlvdSB3aXNoIHRvIGluaGVyaXQuPC9saT4K CQk8bGk+PGNvZGU+cGFnZT0mcXVvdDt0ZXh0JnF1b3Q7PC9jb2RlPjxiciAvPgpOYW1lIG9m IGFuIGV4aXN0aW5nIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHBhZ2UgeW91IHdp c2ggdG8gaW5oZXJpdC48L2xpPgoJPC91bD4KCgk8cD5UaGUgPGNvZGU+cGFnZTwvY29kZT4g YW5kIDxjb2RlPmZvcm08L2NvZGU+IGF0dHJpYnV0ZXMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2 ZS4gSWYgbmVpdGhlciBpcyBzZXQgaXQsIDxjb2RlPnBhZ2U8L2NvZGU+IGlzIHNldCB0byAm IzgyMTY7ZGVmYXVsdCYjODIxNzs7PC9wPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8g dG9wPC9hPjwvcD4KCgk8aDMgaWQ9InJ2bV9ibG9jayI+PGNvZGU+Jmx0O3R4cDpydm1fYmxv Y2sgLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5DYW4gYmUgdXNlZCBhcyBhIHNlbGYtY2xvc2lu ZyB0YWcgYW5kIGFzIGEgY29udGFpbmVyIHRhZy48L3A+CgoJPGg0PkF0dHJpYnV0ZXM6PC9o ND4KCgk8dWw+CgkJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KSWRlbnRpZmllciBvZiBhIGJsb2NrIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi4gSWYg bmVpdGhlciA8Y29kZT5jaGlsZDwvY29kZT4gbm9yIDxjb2RlPnBhcmVudDwvY29kZT4gaXMg c2V0LCA8Y29kZT5uYW1lPC9jb2RlPiBkZWZhdWx0cyB0byBhbiBlbXB0eSBzdHJpbmcuIElu IG90aGVyIGNhc2VzLCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gZ3Vlc3MgdGhlIGNvcnJlY3Qg bmFtZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQgd2hlcmUgdGhpcyB0YWcgaXMgdXNlZC48 L2xpPgoJCTxsaT48Y29kZT5jaGlsZD0mcXVvdDtpbnRlZ2VyJnF1b3Q7PC9jb2RlPjxiciAv PgpJZiBzZXQgdG8gPGNvZGU+MTwvY29kZT4gaXQgcmVmZXJlbmNlcyB0aGUgY29udGVudHMg b2YgdGhlIGNoaWxkIGJsb2NrIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi4gSWYgc2V0IHRv IDxjb2RlPjI8L2NvZGU+IGl0IHJlZmVyZW5jZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBncmFu ZGNoaWxkJiM4MjMwOyBldGMuPC9saT4KCQk8bGk+PGNvZGU+cGFyZW50PSZxdW90O2ludGVn ZXImcXVvdDs8L2NvZGU+PGJyIC8+CklmIHNldCB0byA8Y29kZT4xPC9jb2RlPiBpdCByZWZl cmVuY2VzIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrIGluIHRoZSBpbmhlcml0 YW5jZSBjaGFpbi4gSWYgc2V0IHRvIDxjb2RlPjI8L2NvZGU+IGl0IHJlZmVyZW5jZXMgdGhl IGNvbnRlbnRzIG9mIHRoZSBncmFuZHBhcmVudCYjODIzMDsgZXRjLjwvbGk+Cgk8L3VsPgoK CTxwPlRoZSA8Y29kZT5jaGlsZDwvY29kZT4gYW5kIDxjb2RlPnBhcmVudDwvY29kZT4gYXR0 cmlidXRlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOyBhdCBtb3N0IG9ubHkgb25lIG9mIHRo ZW0gbWF5IGJlIHNldC48L3A+CgoJPHA+PGEgaHJlZj0iI3RvcCI+QmFjayB0byB0b3A8L2E+ PC9wPgoKCTxoMyBpZD0icnZtX2NoaWxkIj48Y29kZT4mbHQ7dHhwOnJ2bV9jaGlsZCAvJmd0 OzwvY29kZT48L2gzPgoKCTxwPlNob3VsZCBvbmx5IGJlIHVzZWQgYXMgYSBzZWxmLWNsb3Np bmcgdGFnIGFuZCBpcyBtZXJlbHkgc2hvcnRlciB3YXkgdG8gd3JpdGUgPGNvZGU+Jmx0O3R4 cDpydm1fYmxvY2sgY2hpbGQ9JnF1b3Q7MSZxdW90Oy8mZ3Q7PC9jb2RlPjwvcD4KCgk8aDQ+ QXR0cmlidXRlczo8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+bmFtZT0mcXVvdDt0ZXh0JnF1 b3Q7PC9jb2RlPjxiciAvPgpJZGVudGlmaWVyIG9mIGEgYmxvY2sgaW4gdGhlIGluaGVyaXRh bmNlIGNoYWluLiBJZiBub3Qgc2V0LCBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gZ3Vlc3MgdGhl IGNvcnJlY3QgbmFtZSBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQgd2hlcmUgdGhpcyB0YWcg aXMgdXNlZCAob3IgaXQgZGVmYXVsdHMgdG8gYW4gZW1wdHkgc3RyaW5nKS48L2xpPgoJPC91 bD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+CgoJPGgzIGlkPSJy dm1fY2hpbGQiPjxjb2RlPiZsdDt0eHA6cnZtX3BhcmVudCAvJmd0OzwvY29kZT48L2gzPgoK CTxwPlNob3VsZCBvbmx5IGJlIHVzZWQgYXMgYSBzZWxmLWNsb3NpbmcgdGFnIGFuZCBpcyBt ZXJlbHkgc2hvcnRlciB3YXkgdG8gd3JpdGUgPGNvZGU+Jmx0O3R4cDpydm1fYmxvY2sgcGFy ZW50PSZxdW90OzEmcXVvdDsvJmd0OzwvY29kZT48L3A+CgoJPGg0PkF0dHJpYnV0ZXM6PC9o ND4KCgk8dWw+CgkJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7dGV4dCZxdW90OzwvY29kZT48YnIg Lz4KSWRlbnRpZmllciBvZiBhIGJsb2NrIGluIHRoZSBpbmhlcml0YW5jZSBjaGFpbi4gSWYg bm90IHNldCwgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGd1ZXNzIHRoZSBjb3JyZWN0IG5hbWUg ZGVwZW5kaW5nIG9uIHRoZSBjb250ZXh0IHdoZXJlIHRoaXMgdGFnIGlzIHVzZWQgKG9yIGl0 IGRlZmF1bHRzIHRvIGFuIGVtcHR5IHN0cmluZykuPC9saT4KCTwvdWw+CgoJPHA+PGEgaHJl Zj0iI3RvcCI+QmFjayB0byB0b3A8L2E+PC9wPgoKCTxoMiBpZD0ic3RhcnQiPkdldHRpbmcg c3RhcnRlZDwvaDI+CgoJPHA+VXNpbmcgdGVtcGxhdGUgaW5oZXJpdGFuY2UsIHR3byBvciBt b3JlIHRlbXBsYXRlcyBjYW4gb3JnYW5pemUgdGhlbXNlbHZlcyBpbnRvIGFuIGluaGVyaXRh bmNlIGNoYWluLiBUaGVzZSB0ZW1wbGF0ZXMgY2FuIGJlIDxzcGFuIGNsYXNzPSJjYXBzIj5U WFA8L3NwYW4+IHBhZ2VzIG9yIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IGZvcm1z LiBZb3UgY2FuIG1peCBmb3JtcyBhbmQgcGFnZXMgaW4gYW4gaW5oZXJpdGFuY2UgY2hhaW4u IFRoaXMgcGx1Z2luIHRyZWF0cyB0aGVtIGFzIGlmIHRoZXkgd2VyZSB0aGUgc2FtZS48L3A+ CgoJPHA+SW4gdGhlIGV4YW1wbGVzIGdpdmVuIGhlcmUgSSYjODIxNztsbCBvbmx5IHVzZSA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwYWdlcy4gVGhlc2UgZXhhbXBsZXMgd2Vy ZSBib3Jyb3dlZCBmcm9tIDxhIGhyZWY9Imh0dHA6Ly9kb2NzLm1ha290ZW1wbGF0ZXMub3Jn L2VuL2xhdGVzdC9pbmhlcml0YW5jZS5odG1sIj5NYWtvPC9hPiwgd2hpY2ggaW5zcGlyZWQg bWUgdG8gd3JpdGUgdGhpcyBwbHVnaW4uPC9wPgoKCTxwPlN1cHBvc2UgeW91IGhhdmUgYSA8 c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBwYWdlICYjODIxNjtkZWZhdWx0JiM4MjE3 OyB0aGF0IGNvbnRhaW5zOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7 Ym9keSZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2hlYWRlciZxdW90OyZndDsK ICAgICAgICAgICAgJmx0O3J2bV9ibG9jayBuYW1lPSZxdW90O2hlYWRlciZxdW90OyAvJmd0 OwogICAgICAgICZsdDsvZGl2Jmd0Owo8L2NvZGU+Cjxjb2RlPiAgICAgICAgJmx0O3R4cDpy dm1fYmxvY2smZ3Q7CjwvY29kZT4KPGNvZGU+ICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90 O2Zvb3RlciZxdW90OyZndDsKICAgICAgICAgICAgJmx0O3R4cDpydm1fYmxvY2sgbmFtZT0m cXVvdDtmb290ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICB0aGlzIGlzIHRoZSBmb290 ZXIKICAgICAgICAgICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwogICAgICAgICZsdDsvZGl2 Jmd0OwogICAgJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7CjwvY29kZT48L3ByZT4KCgk8 cD5BbmQgeW91IGhhdmUgYW4gaW5oZXJpdGluZyA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9z cGFuPiBwYWdlICYjODIxNjtkYXVnaHRlciYjODIxNzsgd2hpY2ggY29udGFpbnM6PC9wPgoK PHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9pbmhlcml0IHBhZ2U9JnF1b3Q7ZGVmYXVsdCZxdW90 OyZndDsKICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0 OwogICAgICAgIHRoaXMgaXMgc29tZSBoZWFkZXIgY29udGVudAogICAgJmx0Oy90eHA6cnZt X2Jsb2NrJmd0Owo8L2NvZGU+Cjxjb2RlPiAgICAmbHQ7dHhwOnJ2bV9ibG9jayZndDsKICAg ICAgICB0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuCiAgICAmbHQ7L3R4cDpydm1fYmxvY2sm Z3Q7CiZsdDsvdHhwOnJ2bV9pbmhlcml0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+VGhlIHJl c3VsdCwgd2hlbiB1c2luZyB0aGF0ICYjODIxNjtkYXVnaHRlciYjODIxNzsgdGVtcGxhdGUs IGlzOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7Ym9keSZndDsKICAg ICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICAgICAg dGhpcyBpcyBzb21lIGhlYWRlciBjb250ZW50CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CjwvY29k ZT4KPGNvZGU+ICAgICAgICB0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuCjwvY29kZT4KPGNv ZGU+ICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2Zvb3RlciZxdW90OyZndDsKICAgICAg ICAgICAgdGhpcyBpcyB0aGUgZm9vdGVyCiAgICAgICAgJmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7 L2JvZHkmZ3Q7CiZsdDsvaHRtbCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPkluIHRoaXMgZXhh bXBsZSB0aGUgYm9keSBhbmQgaGVhZGVyIGNvbnRlbnQgb2YgdGhlICYjODIxNjtkYXVnaHRl ciYjODIxNzsgcGFnZSBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBwYXJ0cyBpbiB0aGUg JiM4MjE2O2RlZmF1bHQmIzgyMTc7IHBhZ2UuIE5vdGhpbmcgd2FzIHNwZWNpZmllZCBmb3Ig dGhlICYjODIxNjtmb290ZXImIzgyMTc7IGJsb2NrIGluIHRoZSAmIzgyMTY7ZGF1Z2h0ZXIm IzgyMTc7IHRlbXBsYXRlLCBzbyB0aGF0IHJlbWFpbnMgYXMgaXQgd2FzIGluIHRoZSAmIzgy MTY7ZGVmYXVsdCYjODIxNzsgdGVtcGxhdGUuPC9wPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJh Y2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9Im5lc3RpbmciPk5lc3RpbmcgYmxvY2tzPC9o Mj4KCgk8cD5UaGUgbmFtZWQgYmxvY2tzIGRlZmluZWQgaW4gYW4gaW5oZXJpdGVkIHRlbXBs YXRlIGNhbiBhbHNvIGJlIG5lc3RlZCB3aXRoaW4gb3RoZXIgYmxvY2tzLiBUaGUgbmFtZSBn aXZlbiB0byBlYWNoIGJsb2NrIGlzIGdsb2JhbGx5IGFjY2Vzc2libGUgdmlhIGFueSBpbmhl cml0aW5nIHRlbXBsYXRlLiBXZSBjYW4gYWRkIGEgbmV3IGJsb2NrIHRpdGxlIHRvIG91ciBo ZWFkZXIgYmxvY2sgaW4gdGhlICYjODIxNjtkZWZhdWx0JiM4MjE3OyB0ZW1wbGF0ZTo8L3A+ Cgo8cHJlPjxjb2RlPiZsdDtodG1sJmd0OwogICAgJmx0O2JvZHkmZ3Q7CiAgICAgICAgJmx0 O2RpdiBjbGFzcz0mcXVvdDtoZWFkZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICZsdDt0eHA6 cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICAgICAg Jmx0O2gyJmd0OwogICAgICAgICAgICAgICAgICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9 JnF1b3Q7dGl0bGUmcXVvdDsgLyZndDsKICAgICAgICAgICAgICAgICZsdDsvaDImZ3Q7CiAg ICAgICAgICAgICZsdDsvdHhwOnJ2bV9ibG9jayZndDsKICAgICAgICAmbHQ7L2RpdiZndDsK PC9jb2RlPgo8Y29kZT4gICAgICAgICZsdDt0eHA6cnZtX2Jsb2NrIC8mZ3Q7CjwvY29kZT4K PGNvZGU+ICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2Zvb3RlciZxdW90OyZndDsKICAg ICAgICAgICAgJmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDtmb290ZXImcXVvdDsmZ3Q7 CiAgICAgICAgICAgICAgICB0aGlzIGlzIHRoZSBmb290ZXIKICAgICAgICAgICAgJmx0Oy90 eHA6cnZtX2Jsb2NrJmd0OwogICAgICAgICZsdDsvZGl2Jmd0OwogICAgJmx0Oy9ib2R5Jmd0 OwombHQ7L2h0bWwmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD5UaGUgaW5oZXJpdGluZyB0ZW1w bGF0ZSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IGNhbiBuYW1lIGVpdGhlciBvciBib3RoIG9m IGhlYWRlciBhbmQgdGl0bGUsIHNlcGFyYXRlbHkgb3IgbmVzdGVkIHRoZW1zZWx2ZXM6PC9w PgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9pbmhlcml0IHBhZ2U9JnF1b3Q7ZGVmYXVsdCZx dW90OyZndDsKICAgICZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1b3Q7 Jmd0OwogICAgICAgIHRoaXMgaXMgc29tZSBoZWFkZXIgY29udGVudAogICAgICAgICZsdDt0 eHA6cnZtX3BhcmVudCAvJmd0OwogICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0Owo8L2NvZGU+ Cjxjb2RlPiAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O3RpdGxlJnF1b3Q7Jmd0 OwogICAgICAgIHRoaXMgaXMgdGhlIHRpdGxlCiAgICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7 CjwvY29kZT4KPGNvZGU+ICAgICZsdDt0eHA6cnZtX2Jsb2NrJmd0OwogICAgICAgIHRoaXMg aXMgdGhlIGJvZHkgY29udGVudC4KICAgICZsdDt0eHA6cnZtX2Jsb2NrJmd0OwombHQ7L3R4 cDpydm1faW5oZXJpdCZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPlRoZSByZXN1bHQgd291bGQg YmU6PC9wPgoKPHByZT48Y29kZT4mbHQ7aHRtbCZndDsKICAgICZsdDtib2R5Jmd0OwogICAg ICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICB0 aGlzIGlzIGNvbWUgaGVhZGVyIGNvbnRlbnQKICAgICAgICAgICAgJmx0O2gyJmd0OwogICAg ICAgICAgICAgICAgdGhpcyBpcyB0aGUgdGl0bGUKICAgICAgICAgICAgJmx0Oy9oMiZndDsK ICAgICAgICAmbHQ7L2RpdiZndDsKPC9jb2RlPgo8Y29kZT4gICAgICAgIHRoaXMgaXMgdGhl IGJvZHkgY29udGVudC4KPC9jb2RlPgo8Y29kZT4gICAgICAgICZsdDtkaXYgY2xhc3M9JnF1 b3Q7Zm9vdGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICB0aGlzIGlzIHRoZSBmb290ZXIKICAg ICAgICAmbHQ7L2RpdiZndDsKICAgICZsdDsvYm9keSZndDsKJmx0Oy9odG1sJmd0Owo8L2Nv ZGU+PC9wcmU+CgoJPHA+Tm90ZSB3aGVuIHdlIG92ZXJyb2RlIGhlYWRlciwgd2UgYWRkZWQg YW4gZXh0cmEgPGNvZGU+Jmx0O3R4cDpydm1fcGFyZW50IC8mZ3Q7PC9jb2RlPiBpbiBvcmRl ciB0byBpbnZva2UgdGhlIHBhcmVudOKAmXMgaGVhZGVyIGJsb2NrIGluIGFkZGl0aW9uIHRv IG91ciBvd24uIFRoYXTigJlzIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCA8YSBocmVmPSIj cGFyZW50Ij5iZWxvdzwvYT4uPC9wPgoKCTxwPjxhIGhyZWY9IiN0b3AiPkJhY2sgdG8gdG9w PC9hPjwvcD4KCgk8aDIgaWQ9Im11bHRpcGxlIj5SZW5kZXJpbmcgYSBuYW1lZCBibG9jayBt dWx0aXBsZSB0aW1lczwvaDI+CgoJPHA+WW91IGNhbiB1c2UgbXVsdGlwbGUgYmxvY2tzIHdp dGggdGhlIHNhbWUgbmFtZSB3aXRoaW4gb25lIHRlbXBsYXRlOjwvcD4KCjxwcmU+PGNvZGU+ Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7aGVhZCZndDsKICAgICAgICAmbHQ7dGl0bGUmZ3Q7Jmx0 O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDt0aXRsZSZxdW90OyAvJmd0OyZsdDsvdGl0bGUm Z3Q7CiAgICAmbHQ7L2hlYWQmZ3Q7CiAgICAmbHQ7Ym9keSZndDsKICAgICZsdDt0eHA6cnZt X2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgICZsdDtoMiZndDsm bHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O3RpdGxlJnF1b3Q7IC8mZ3Q7Jmx0Oy9oMiZn dDsKICAgICZsdDsvdHhwOnJ2bV9ibG9jayZndDsKICAgICZsdDsvYm9keSZndDsKJmx0Oy9o dG1sJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+V2hlcmUgYWJvdmUgYW4gaW5oZXJpdGluZyB0 ZW1wbGF0ZSBjYW4gZGVmaW5lIDxjb2RlPiZsdDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7 dGl0bGUmcXVvdDsmZ3Q7PC9jb2RlPiBqdXN0IG9uY2UsIGFuZCBpdCB3aWxsIGJlIHVzZWQg aW4gdGhlIGJhc2UgdGVtcGxhdGUgYm90aCBpbiB0aGUgPGNvZGU+Jmx0O3RpdGxlJmd0Ozwv Y29kZT4gc2VjdGlvbiBhcyB3ZWxsIGFzIHRoZSA8Y29kZT4mbHQ7aDImZ3Q7PC9jb2RlPjxi ciAvPgp0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuPC9wPgoKCTxwPjxhIGhyZWY9IiN0b3Ai PkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9ImNoaWxkIj5DaGlsZHJlbjwvaDI+CgoJ PHA+U29tZXRpbWVzIHlvdSBoYXZlIGFuIGluaGVyaXRhbmNlIGNoYWluIHRoYXQgc3BhbnMg bW9yZSB0aGFuIHR3byB0ZW1wbGF0ZXMuIE9yIG1heWJlIHlvdSBkb27igJl0LCBidXQgeW91 4oCZZCBsaWtlIHRvIGJ1aWxkIHlvdXIgc3lzdGVtIHN1Y2ggdGhhdCBleHRyYSBpbmhlcml0 ZWQgdGVtcGxhdGVzIGNhbiBiZSBpbnNlcnRlZCBpbiB0aGUgbWlkZGxlIG9mIGEgY2hhaW4g d2hlcmUgdGhleSB3b3VsZCBiZSBzbW9vdGhseSBpbnRlZ3JhdGVkLiBJZiBlYWNoIHRlbXBs YXRlIHdhbnRzIHRvIGRlZmluZSBpdHMgbGF5b3V0IGp1c3Qgd2l0aGluIGl0cyBtYWluIGJv ZHksIHlvdSBjYW7igJl0IGp1c3QgY2FsbCA8Y29kZT4mbHQ7dHhwOmJsb2NrIC8mZ3Q7PC9j b2RlPiB0byBnZXQgYXQgdGhlIGluaGVyaXRpbmcgdGVtcGxhdGXigJlzIGJvZHksIHNpbmNl IHRoYXQgaXMgb25seSB0aGUgdG9wbW9zdCBib2R5LiBUbyBnZXQgYXQgdGhlIGJvZHkgb2Yg dGhlIGluaGVyaXRpbmcgdGVtcGxhdGUsIHlvdSB1c2UgPGNvZGU+Jmx0O3R4cDpydm1fY2hp bGQgLyZndDs8L2NvZGU+LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7 Ym9keSZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2hlYWRlciZxdW90OyZndDsK ICAgICAgICAgICAgJmx0O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDtoZWFkZXImcXVvdDsg LyZndDsKICAgICAgICAmbHQ7L2RpdiZndDsKPC9jb2RlPgo8Y29kZT4gICAgICAgICZsdDt0 eHA6cnZtX2NoaWxkIC8mZ3Q7CjwvY29kZT4KPGNvZGU+ICAgICAgICAmbHQ7ZGl2IGNsYXNz PSZxdW90O2Zvb3RlciZxdW90OyZndDsKICAgICAgICAgICAgJmx0O3R4cDpydm1fYmxvY2sg bmFtZT0mcXVvdDtmb290ZXImcXVvdDsmZ3Q7CiAgICAgICAgICAgICAgICB0aGlzIGlzIHRo ZSBmb290ZXIKICAgICAgICAgICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0OwogICAgICAgICZs dDsvZGl2Jmd0OwogICAgJmx0Oy9ib2R5Jmd0OwombHQ7L2h0bWwmZ3Q7CjwvY29kZT48L3By ZT4KCgk8cD5MZXRzIGFsc28gYWRkIGFuIGludGVybWVkaWF0ZSB0ZW1wbGF0ZSBjYWxsZWQg JiM4MjE2O2RhdWdodGVyJiM4MjE3OyB3aGljaCBpbmhlcml0cyBmcm9tIHRoZSAmIzgyMTY7 ZGVmYXVsdCYjODIxNzsgcGFnZTo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2luaGVy aXQgcGFnZT0mcXVvdDtkZWZhdWx0JnF1b3Q7LyZndDsKICAgICZsdDt1bCZndDsKICAgICAg ICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1lPSZxdW90O3Rvb2xiYXImcXVvdDsmZ3Q7CiAgICAg ICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMSZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICZs dDtsaSZndDtzZWxlY3Rpb24gMiZsdDsvbGkmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtz ZWxlY3Rpb24gMyZsdDsvbGkmZ3Q7CiAgICAgICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0Owog ICAgJmx0Oy91bCZndDsKICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bWFpbmxheW91dCZxdW90 OyZndDsKICAgICAgICAmbHQ7dHhwOnJ2bV9jaGlsZCAvJmd0OwogICAgJmx0Oy9kaXYmZ3Q7 CiZsdDsvdHhwOnJ2bV9pbmhlcml0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+QW5kIGZpbmFs bHkgY3JlYXRlIGEgJiM4MjE2O2dyYW5kZGF1Z2h0ZXImIzgyMTc7IHRlbXBsYXRlIHRvIGlu aGVyaXQgZnJvbSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7OjwvcD4KCjxwcmU+PGNvZGU+Jmx0 O3R4cDpydm1faW5oZXJpdCBwYWdlPSZxdW90O2RhdWdodGVyJnF1b3Q7LyZndDsKICAgICZs dDt0eHA6cnZtX2Jsb2NrIG5hbWU9JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgIHRo aXMgaXMgc29tZSBoZWFkZXIgY29udGVudAogICAgJmx0Oy90eHA6cnZtX2Jsb2NrJmd0Owo8 L2NvZGU+Cjxjb2RlPiAgICAmbHQ7dHhwOnJ2bV9ibG9jayZndDsKICAgICAgICB0aGlzIGlz IHRoZSBib2R5IGNvbnRlbnQuCiAgICAmbHQ7L3R4cDpydm1fYmxvY2smZ3Q7CiZsdDsvdHhw OnJ2bV9pbmhlcml0Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+SW4gdGhpcyBzZXR1cCwgZWFj aCBjYWxsIHRvIDxjb2RlPiZsdDt0eHA6cnZtX2NoaWxkIC8mZ3Q7PC9jb2RlPiB3aWxsIHJl bmRlciB0aGUgYm9keSBvZiB0aGUgbmV4dCB0ZW1wbGF0ZSBpbiB0aGUgaW5oZXJpdGFuY2Ug Y2hhaW4gKHdoaWNoIGNhbiBiZSB3cml0dGVuIGFzICYjODIxNjtncmFuZGRhdWdodGVyJiM4 MjE3OyAtJmd0OyAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7IC0mZ3Q7ICYjODIxNjtkZWZhdWx0 JiM4MjE3OykuIFRoZSBvdXRwdXQgd2UgZ2V0IHdvdWxkIGJlOjwvcD4KCjxwcmU+PGNvZGU+ Jmx0O2h0bWwmZ3Q7CiAgICAmbHQ7Ym9keSZndDsKICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZx dW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICAgICAgdGhpcyBpcyBzb21lIGhlYWRlciBj b250ZW50CiAgICAgICAgJmx0Oy9kaXYmZ3Q7CjwvY29kZT4KPGNvZGU+ICAgICAgICAmbHQ7 dWwmZ3Q7CiAgICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMSZsdDsvbGkmZ3Q7CiAg ICAgICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gMiZsdDsvbGkmZ3Q7CiAgICAgICAgICAg ICZsdDtsaSZndDtzZWxlY3Rpb24gMyZsdDsvbGkmZ3Q7CiAgICAgICAgJmx0Oy91bCZndDsK PC9jb2RlPgo8Y29kZT4gICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7bWFpbmxheW91dCZx dW90OyZndDsKICAgICAgICB0aGlzIGlzIHRoZSBib2R5IGNvbnRlbnQuCiAgICAgICAgJmx0 Oy9kaXYmZ3Q7CjwvY29kZT4KPGNvZGU+ICAgICAgICAmbHQ7ZGl2IGNsYXNzPSZxdW90O2Zv b3RlciZxdW90OyZndDsKICAgICAgICAgICAgdGhpcyBpcyB0aGUgZm9vdGVyCiAgICAgICAg Jmx0Oy9kaXYmZ3Q7CiAgICAmbHQ7L2JvZHkmZ3Q7CiZsdDsvaHRtbCZndDsKPC9jb2RlPjwv cHJlPgoKCTxwPlNvIGFib3ZlLCB3ZSBoYXZlIHRoZSA8Y29kZT4mbHQ7aHRtbCZndDs8L2Nv ZGU+LCA8Y29kZT4mbHQ7Ym9keSZndDs8L2NvZGU+IGFuZCBoZWFkZXIvZm9vdGVyIGxheW91 dCBvZiB0aGUgJiM4MjE2O2RlZmF1bHQmIzgyMTc7IHBhZ2UsIHdlIGhhdmUgdGhlIDxjb2Rl PiZsdDt1bCZndDs8L2NvZGU+IGFuZCBtYWlubGF5b3V0IHNlY3Rpb24gb2YgdGhlICYjODIx NjtkYXVnaHRlciYjODIxNzsgcGFnZSwgYW5kIHRoZSBtYWluIGJvZHkgb2YgdGhlICYjODIx NjtncmFuZGRhdWdodGVyJiM4MjE3OyBwYWdlIGFzIHdlbGwgYXMgaXRzIG92ZXJyaWRkZW4g JiM4MjE2O2hlYWRlciYjODIxNzsgYmxvY2suIFRoZSAmIzgyMTY7ZGF1Z2h0ZXImIzgyMTc7 IHRlbXBsYXRlIGlzIGluc2VydGVkIGludG8gdGhlIG1pZGRsZSBvZiB0aGUgY2hhaW4gd2l0 aG91dCAmIzgyMTY7ZGVmYXVsdCYjODIxNzsgdGVtcGxhdGUgaGF2aW5nIHRvIGNoYW5nZSBh bnl0aGluZy4gV2l0aG91dCA8Y29kZT4mbHQ7dHhwOnJ2bV9jaGlsZCZndDs8L2NvZGU+LCBv bmx5IHRoZSBtYWluIGJvZHkgb2YgdGhlICYjODIxNjtncmFuZGRhdWdodGVyJiM4MjE3OyB0 ZW1wbGF0ZSBjb3VsZCBiZSB1c2VkOyB0aGVyZSB3b3VsZCBiZSBubyB3YXkgdG8gY2FsbCB0 aGUgJiM4MjE2O2RhdWdodGVyJiM4MjE3OyBib2R5IGNvbnRlbnQuPC9wPgoKCTxwPjxhIGhy ZWY9IiN0b3AiPkJhY2sgdG8gdG9wPC9hPjwvcD4KCgk8aDIgaWQ9InBhcmVudCI+UGFyZW50 czwvaDI+CgoJPHA+TGV0cyBub3cgbG9vayBhdCBwYXJlbnRzOyB0aGUgb3Bwb3NpdGUgb2Yg Y2hpbGRyZW4uIFRoZSBwYXJlbnQgdGVtcGxhdGUgaXMgdGhlIG9uZSBpbW1lZGlhdGVseSBw cmVjZWRpbmcgdGhlIGN1cnJlbnQgdGVtcGxhdGUuIEJsb2NrcyBjYW4gY2FsbCB1cG9uIHRo ZWlyIG92ZXJyaWRkZW4gdmVyc2lvbnMuIFRoaXMgaXMgbm90IGFzIGhhcmQgYXMgaXQgc291 bmRzLiBMZXRzIG1vZGlmeSB0aGUgJiM4MjE2O2dyYW5kZGF1Z2h0ZXImIzgyMTc7IHRlbXBs YXRlIHRvIGF1Z21lbnQgdGhlIGxpc3Qgb2Ygc2VsZWN0aW9ucyBwcm92aWRlZCBieSB0aGUg JiM4MjE2O3Rvb2xiYXImIzgyMTc7IGJsb2NrIGluIHRoZSAmIzgyMTY7ZGF1Z2h0ZXImIzgy MTc7IHRlbXBsYXRlOjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpydm1faW5oZXJpdCBwYWdl PSZxdW90O2RhdWdodGVyJnF1b3Q7IC8mZ3Q7CiAgICAmbHQ7dHhwOnJ2bV9ibG9jayBuYW1l PSZxdW90O2hlYWRlciZxdW90OyZndDsKICAgICAgICB0aGlzIGlzIHNvbWUgaGVhZGVyIGNv bnRlbnQKICAgICZsdDsvdHhwOnJ2bV9ibG9jayZndDsKPC9jb2RlPgo8Y29kZT4gICAgJmx0 O3R4cDpydm1fYmxvY2sgbmFtZT0mcXVvdDt0b29sYmFyJnF1b3Q7Jmd0OwogICAgICAgICZs dDt0eHA6cnZtX3BhcmVudCAvJmd0OwogICAgICAgICZsdDtsaSZndDtzZWxlY3Rpb24gNCZs dDsvbGkmZ3Q7CiAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiA1Jmx0Oy9saSZndDsKICAg ICZsdDsvdHhwOnJ2bV9ibG9jayZndDsKPC9jb2RlPgo8Y29kZT4gICAgJmx0O3R4cDpydm1f YmxvY2smZ3Q7CiAgICAgICAgdGhpcyBpcyB0aGUgYm9keSBjb250ZW50LgogICAgJmx0Oy90 eHA6cnZtX2Jsb2NrJmd0OwombHQ7L3R4cDpydm1faW5oZXJpdCZndDsKPC9jb2RlPjwvcHJl PgoKCTxwPkFib3ZlLCB3ZSBpbXBsZW1lbnRlZCBhICYjODIxNjt0b29sYmFyJiM4MjE3OyBi bG9jaywgd2hpY2ggaXMgbWVhbnQgdG8gb3ZlcnJpZGUgdGhlIGRlZmluaXRpb24gb2YgdG9v bGJhciB3aXRoaW4gdGhlIGluaGVyaXRlZCB0ZW1wbGF0ZSAmIzgyMTY7Z3JhbmRkYXVnaHRl ciYjODIxNzsuIEhvd2V2ZXIsIHNpbmNlIHdlIHdhbnQgdGhlIGNvbnRlbnQgZnJvbSB0aGF0 IG9mICYjODIxNjtkYXVnaHRlciYjODIxNzsgYXMgd2VsbCwgd2UgY2FsbCBpdCB2aWEgdGhl IDxjb2RlPiZsdDt0eHA6cnZtX3BhcmVudCZndDs8L2NvZGU+IHRhZyB3aGVuZXZlciB3ZSB3 YW50IGl04oCZcyBjb250ZW50LCBpbiB0aGlzIGNhc2UgYmVmb3JlIHdlIGFkZCBvdXIgb3du IHNlbGVjdGlvbnMuIFNvIHRoZSBvdXRwdXQgZm9yIHRoZSB3aG9sZSB0aGluZyBpcyBub3c6 PC9wPgoKPHByZT48Y29kZT4mbHQ7aHRtbCZndDsKICAgICZsdDtib2R5Jmd0OwogICAgICAg ICZsdDtkaXYgY2xhc3M9JnF1b3Q7aGVhZGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICB0aGlz IGlzIHNvbWUgaGVhZGVyIGNvbnRlbnQKICAgICAgICAmbHQ7L2RpdiZndDsKPC9jb2RlPgo8 Y29kZT4gICAgICAgICZsdDt1bCZndDsKICAgICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlv biAxJmx0Oy9saSZndDsKICAgICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiAyJmx0Oy9s aSZndDsKICAgICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiAzJmx0Oy9saSZndDsKICAg ICAgICAgICAgJmx0O2xpJmd0O3NlbGVjdGlvbiA0Jmx0Oy9saSZndDsKICAgICAgICAgICAg Jmx0O2xpJmd0O3NlbGVjdGlvbiA1Jmx0Oy9saSZndDsKICAgICAgICAmbHQ7L3VsJmd0Owo8 L2NvZGU+Cjxjb2RlPiAgICAgICAgJmx0O2RpdiBjbGFzcz0mcXVvdDttYWlubGF5b3V0JnF1 b3Q7Jmd0OwogICAgICAgIHRoaXMgaXMgdGhlIGJvZHkgY29udGVudC4KICAgICAgICAmbHQ7 L2RpdiZndDsKPC9jb2RlPgo8Y29kZT4gICAgICAgICZsdDtkaXYgY2xhc3M9JnF1b3Q7Zm9v dGVyJnF1b3Q7Jmd0OwogICAgICAgICAgICB0aGlzIGlzIHRoZSBmb290ZXIKICAgICAgICAm bHQ7L2RpdiZndDsKICAgICZsdDsvYm9keSZndDsKJmx0Oy9odG1sJmd0Owo8L2NvZGU+PC9w cmU+CgoJPHA+YW5kIHlvdeKAmXJlIG5vdyBhIHRlbXBsYXRlIGluaGVyaXRhbmNlIG5pbmph ITwvcD4KCgk8cD48YSBocmVmPSIjdG9wIj5CYWNrIHRvIHRvcDwvYT48L3A+IjtzOjQ6ImNv ZGUiO3M6MzI2NToiCmlmIChjbGFzc19leGlzdHMoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0 cnknKSkgewoJVHhwOjpnZXQoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKQoJCS0+cmVn aXN0ZXIoJ3J2bV9pbmhlcml0JykKCQktPnJlZ2lzdGVyKCdydm1fYmxvY2snKQoJCS0+cmVn aXN0ZXIoJ3J2bV9jaGlsZCcpCgkJLT5yZWdpc3RlcigncnZtX3BhcmVudCcpOwp9CgpmdW5j dGlvbiBydm1faW5oZXJpdCgkYXR0cywgJHRoaW5nID0gbnVsbCkKewoJc3RhdGljICRzdGFj ayA9IGFycmF5KCk7CgoJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkncGFnZScgPT4gZmFsc2Us CgkJJ2Zvcm0nID0+IGZhbHNlCgkpLCAkYXR0cykpOwoKCSRvdXQgPSAnJzsKCXJ2bV9ibG9j ayhmYWxzZSk7CgoJaWYgKCR0aGluZyAhPT0gbnVsbCkKCXsKCQlwYXJzZSgkdGhpbmcpOwoJ fQoJZWxzZQoJewoJCXRyaWdnZXJfZXJyb3IoJ3J2bV9pbmhlcml0IHNob3VsZCBiZSB1c2Vk IGFzIGEgY29udGFpbmVyIHRhZycpOwoJfQoKCXJ2bV9ibG9jayh0cnVlKTsKCglpZiAoJHBh Z2UgPT09IGZhbHNlIGFuZCAkZm9ybSA9PT0gZmFsc2UpCgl7CgkJJHBhZ2UgPSAnZGVmYXVs dCc7Cgl9CgoJaWYgKCRwYWdlICE9PSBmYWxzZSkKCXsKCQlpZiAoaW5fYXJyYXkoJHBhZ2Us ICRzdGFjaywgdHJ1ZSkpCgkJewoJCQl0cmlnZ2VyX2Vycm9yKCdjaXJjdWxhciBwYWdlIHJl ZmVyZW5jZTogJyAuIGFycmF5X3BvcCgkc3RhY2spIC4gJyBjYWxscyAnIC4gJHBhZ2UpOwoJ CX0KCQllbHNlCgkJewoJCQkkc3RhY2tbXSA9ICRwYWdlOwoKCQkJaWYgKGlzX2NhbGxhYmxl KCdmZXRjaF9wYWdlJykpCgkJCXsKCQkJCSRwYWdlID0gZmV0Y2hfcGFnZSgkcGFnZSk7CgkJ CX0KCQkJZWxzZQoJCQl7CgkJCQkkcGFnZSA9IHNhZmVfZmllbGQoJ3VzZXJfaHRtbCcsJ3R4 cF9wYWdlJywibmFtZT0nIi5kb1NsYXNoKCRwYWdlKS4iJyIpOwoJCQl9CgoJCQkkb3V0ID0g KCRwYWdlID09PSBmYWxzZSA/ICcnIDogcGFyc2UoJHBhZ2UpKTsKCQl9Cgl9CgllbHNlCgl7 CgkJJG91dCA9IHBhcnNlX2Zvcm0oJGZvcm0pOwoJfQoKCXJ2bV9ibG9jayhmYWxzZSk7Cgly ZXR1cm4gJG91dDsKfQoKZnVuY3Rpb24gcnZtX2Jsb2NrKCRhdHRzLCAkdGhpbmcgPSBudWxs KQp7CglzdGF0aWMgJHBhcnNlID0gdHJ1ZTsKCXN0YXRpYyAkY2hhaW4gPSBhcnJheSgpOwoJ c3RhdGljICRjaGlsZHJlbiA9IGFycmF5KCk7CglzdGF0aWMgJHBhcmVudHMgPSBhcnJheSgp OwoJc3RhdGljICRxdWV1ZSA9IGFycmF5KCk7CgoJaWYgKGlzX2Jvb2woJGF0dHMpKQoJewoJ CSRwYXJzZSA9ICRhdHRzOwoJCXJldHVybjsKCX0KCglleHRyYWN0KGxBdHRzKGFycmF5KAoJ CSduYW1lJyA9PiBmYWxzZSwKCQknY2hpbGQnID0+IGZhbHNlLAoJCSdwYXJlbnQnID0+IGZh bHNlCgkpLCAkYXR0cykpOwoKCSRvdXQgPSAnJzsKCglpZiAoJGNoaWxkIG9yICRwYXJlbnQp Cgl7CgkJaWYgKCR0aGluZyAhPT0gbnVsbCkKCQl7CgkJCXRyaWdnZXJfZXJyb3IoJ2lnbm9y aW5nIGNvbnRhaW5lciBjb250ZW50cyBiZWNhdXNlIGNoaWxkIG9yIHBhcmVudCBhdHRyaWJ1 dGUgaXMgc3BlY2lmaWVkJyk7CgkJfQoKCQlpZiAoJG5hbWUgPT09IGZhbHNlKQoJCXsKCQkg CWlmICghZW1wdHkoJHF1ZXVlKSkKCQkgCXsKCQkJCSRuYW1lID0gZW5kKCRxdWV1ZSk7CgkJ CX0KCQkJZWxzZWlmICgkcGFyZW50KQoJCQl7CgkJCQl0cmlnZ2VyX2Vycm9yKCd1c2Ugb2Yg cGFyZW50IGF0dHJpYnV0ZSBpbiBhIHN0YW5kYWxvbmUgYmxvY2sgdGFnIGlzIG5vdCBhbGxv d2VkJyk7CgkJCX0KCQl9Cgl9CgoJaWYgKCRuYW1lID09PSBmYWxzZSkKCXsKCQkkbmFtZSA9 ICcnOwoJfQoKCWlmICgkY2hpbGQgIT09IGZhbHNlKQoJewoJCWlmIChhc3NlcnRfaW50KCRj aGlsZCkgYW5kICRjaGlsZCA+IDApCgkJewoJCQlpZiAoIWlzc2V0KCRjaGlsZHJlblskbmFt ZV0pKQoJCQl7CgkJCQkkY2hpbGRyZW5bJG5hbWVdID0gY291bnQoJGNoYWluWyRuYW1lXSk7 CgkJCX0KCgkJCSRjaGlsZHJlblskbmFtZV0gLT0gJGNoaWxkOwoKCQkJaWYgKGlzc2V0KCRj aGFpblskbmFtZV0pIGFuZCAkY2hpbGRyZW5bJG5hbWVdID49IDApCgkJCXsKCQkJCSR0aGlu ZyA9ICRjaGFpblskbmFtZV1bJGNoaWxkcmVuWyRuYW1lXV07CgkJCQkkb3V0ID0gKCR0aGlu ZyA9PT0gbnVsbCA/ICcnIDogcGFyc2UoJHRoaW5nKSk7CgkJCX0KCQl9Cgl9CgllbHNlaWYg KCRwYXJlbnQgIT09IGZhbHNlKQoJewoJCWlmIChhc3NlcnRfaW50KCRwYXJlbnQpIGFuZCAk cGFyZW50ID4gMCkKCQl7CgkJCWlmICghaXNzZXQoJHBhcmVudHNbJG5hbWVdKSkKCQkJewoJ CQkJJHBhcmVudHNbJG5hbWVdID0gMDsKCQkJfQoKCQkJJHBhcmVudHNbJG5hbWVdICs9ICRw YXJlbnQ7CgoJCQlpZiAoaXNzZXQoJGNoYWluWyRuYW1lXSkgYW5kICRwYXJlbnRzWyRuYW1l XSA8IGNvdW50KCRjaGFpblskbmFtZV0pKQoJCQl7CgkJCQkkdGhpbmcgPSAkY2hhaW5bJG5h bWVdWyRwYXJlbnRzWyRuYW1lXV07CgkJCQkkb3V0ID0gKCR0aGluZyA9PT0gbnVsbCA/ICcn IDogcGFyc2UoJHRoaW5nKSk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQl0cmlnZ2VyX2Vycm9y KCdtaXNzaW5nIHBhcmVudCcpOwoJCQl9CgkJfQoJfQoJZWxzZQoJewoJCSRjaGFpblskbmFt ZV1bXSA9ICR0aGluZzsKCgkJaWYgKCRwYXJzZSkKCQl7CgkJCWlmIChpbl9hcnJheSgkbmFt ZSwgJHF1ZXVlKSkKCQkJewoJCQkJdHJpZ2dlcl9lcnJvcignZG8gbm90IG5lc3QgYmxvY2tz IHdpdGggdGhlIHNhbWUgbmFtZSwgdW5sZXNzIGl0IGlzIGEgcGFyZW50L2NoaWxkIGNvbnN0 cnVjdC4nKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRxdWV1ZVtdID0gJG5hbWU7CgkJCQkk dGhpbmcgPSAkY2hhaW5bJG5hbWVdWzBdOwoJCQkJJG91dCA9ICgkdGhpbmcgPT09IG51bGwg PyAnJyA6IHBhcnNlKCR0aGluZykpOwoJCQkJYXJyYXlfcG9wKCRxdWV1ZSk7CgkJCX0KCgkJ CWFycmF5X3BvcCgkY2hhaW5bJG5hbWVdKTsgIyBuZWVkZWQgaW4gY2FzZSBhIHRlbXBsYXRl IGNvbnRhaW5zIHRoZSBzYW1lIGJsb2NrIG1vcmUgdGhlbiBvbmNlLgoJCX0KCX0KCglyZXR1 cm4gJG91dDsKfQoKZnVuY3Rpb24gcnZtX2NoaWxkKCRhdHRzLCAkdGhpbmcgPSBudWxsKQp7 CgkkYXR0c1snY2hpbGQnXSA9IDE7CglyZXR1cm4gcnZtX2Jsb2NrKCRhdHRzKTsKfQoKZnVu Y3Rpb24gcnZtX3BhcmVudCgkYXR0cywgJHRoaW5nID0gbnVsbCkKewoJJGF0dHNbJ3BhcmVu dCddID0gMTsKCXJldHVybiBydm1fYmxvY2soJGF0dHMpOwp9CiI7czozOiJtZDUiO3M6MzI6 ImYzOTBlMWU4ZTFiZTI3NDUxODAxNzVhM2IxOGZjNDUwIjt9