# Name: soo_page_numbers v0.4.2 # Type: Admin/Client side plugin # Article list nav and page count widgets # Author: Jeff Soo # URL: http://ipsedixit.net/txp/ # 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: # ..................................................................... YToxMTp7czo0OiJuYW1lIjtzOjE2OiJzb29fcGFnZV9udW1iZXJzIjtzOjY6ImF1dGhvciI7 czo4OiJKZWZmIFNvbyI7czoxMDoiYXV0aG9yX3VyaSI7czoyNToiaHR0cDovL2lwc2VkaXhp dC5uZXQvdHhwLyI7czo3OiJ2ZXJzaW9uIjtzOjU6IjAuNC4yIjtzOjExOiJkZXNjcmlwdGlv biI7czozOToiQXJ0aWNsZSBsaXN0IG5hdiBhbmQgcGFnZSBjb3VudCB3aWRnZXRzIjtzOjQ6 ImhlbHAiO3M6OTM3MDoiPGgxPnNvb19wYWdlX251bWJlcnM8L2gxPgoKPHA+VGhpcyBpcyBh IHBsdWdpbiBmb3IgPGEgaHJlZj0iaHR0cDovL3RleHRwYXR0ZXJuLmNvbSI+VGV4dHBhdHRl cm48L2E+LiBJdCBkaXNwbGF5cyBjdXN0b21pc2FibGUgbmF2aWdhdGlvbiB3aWRnZXRzIGZv ciBhcnRpY2xlIGxpc3QgcGFnZXMuPC9wPgoKPHVsPgoJPGxpPjxhIGhyZWY9Imh0dHBzOi8v Zm9ydW0udGV4dHBhdHRlcm4uaW8vdmlld3RvcGljLnBocD9pZD0zMTIxNyI+U3VwcG9ydCBm b3J1bSB0b3BpYzwvYT48L2xpPgoJPGxpPjxhIGhyZWY9Imh0dHA6Ly9pcHNlZGl4aXQubmV0 L3R4cC84Ni9zb29fcGFnZV9udW1iZXJzIj5BdXRob3Igc2l0ZTwvYT48L2xpPgoJPGxpPjxh IGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9qc29vL3Nvb19wYWdlX251bWJlcnMiPkdpdEh1 YjwvYT48L2xpPgo8L3VsPgoKPGRpdiBpZD0idG9jIj4KCjxoMj5Db250ZW50czwvaDI+Cgo8 dWw+Cgk8bGk+PGEgaHJlZj0iI292ZXJ2aWV3Ij5PdmVydmlldzwvYT48L2xpPgoJPGxpPjxh IGhyZWY9IiN0YWdzIj5UYWdzPC9hPgoJPHVsPgoJCTxsaT48YSBocmVmPSIjc29vX3BhZ2Vf bGlua3MiPnNvb19wYWdlX2xpbmtzPC9hPjwvbGk+CgkJPGxpPjxhIGhyZWY9IiNzb29fcGFn ZV9jb3VudCI+c29vX3BhZ2VfY291bnQ8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3Nvb19w cmV2X3BhZ2UiPnNvb19wcmV2X3BhZ2U8L2E+PC9saT4KCTwvdWw+PC9saT4KCTxsaT48YSBo cmVmPSIjaGlzdG9yeSI+SGlzdG9yeTwvYT48L2xpPgo8L3VsPgoKPC9kaXY+Cgo8aDIgaWQ9 Im92ZXJ2aWV3Ij5PdmVydmlldzwvaDI+Cgo8cD5EaXNwbGF5IHBhZ2UgbmF2aWdhdGlvbiB3 aWRnZXRzIGFuZCBpbmZvcm1hdGlvbiBmb3IgYXJ0aWNsZSBsaXN0IHBhZ2VzLiAoSW5zcGly ZWQgYnkgPGNvZGU+cnN4X3BhZ2VfbnVtYmVyPC9jb2RlPiwgYW4gb2xkIHBsdWdpbiBmcm9t IFR4cCYjODIxNztzIGVhcmx5IGRheXMuKTwvcD4KCjxwPlZlcnNpb24gMC4zLjAgaW5jbHVk ZXMgYSBUZXh0cGFjayB0byBsb2NhbGl6ZSBwcmUtZm9ybWF0dGVkIHRleHQgb3V0cHV0IHN1 Y2ggYXMgJiM4MjIwO1BhZ2Uge2N1cnJlbnR9IG9mIHt0b3RhbH0mIzgyMjE7LiBDdXJyZW50 bHkgaW5jbHVkZXMgMjEgbGFuZ3VhZ2VzLjwvcD4KCjxwPk5COiBWZXJzaW9uIDAuNC4wIGRp ZCBhd2F5IHdpdGggdGhlIHJlcXVpcmVtZW50IGZvciBhbiBleHRlcm5hbCBsaWJyYXJ5IHBs dWdpbiwgYnV0IGJ5IG1vdmluZyB0byBuYXRpdmUgVHhwIDxzcGFuIGNsYXNzPSJjYXBzIj5V Ukk8L3NwYW4+IGhhbmRsaW5nIHRoaXMgY2hhbmdlZCBiZWhhdmlvciBvbiBzaXRlcyB3aXRo IGN1c3RvbSA8c3BhbiBjbGFzcz0iY2FwcyI+VVJJPC9zcGFuPiBzY2hlbWVzLiAwLjQuMSBy ZXN0b3JlcyB0aGF0IGJlaGF2aW9yLiBOb3RlIHRoYXQgdGhlIDxjb2RlPnA8L2NvZGU+IChp bWFnZSBJRCkgcXVlcnkgcGFyYW1ldGVyIGlzIG5vdCBwcmVzZXJ2ZWQ7IHRoaXMgaXMgaW50 ZW50aW9uYWwuPC9wPgoKPHA+PHNwYW4gY2xhc3M9Indhcm5pbmciPk5vdGU6PC9zcGFuPiBJ ZiB5b3UgaGF2ZSBtb3JlIHRoYW4gb25lIHBhZ2luYXRpb24tY2FwYWJsZSB0YWcgb24gdGhl IHBhZ2UgKDxjb2RlPmFydGljbGU8L2NvZGU+IGlmIG5vdCA8Y29kZT5zdGF0dXM9JnF1b3Q7 c3RpY2t5JnF1b3Q7PC9jb2RlPiwgb3IgYW55IG9mIDxjb2RlPmltYWdlczwvY29kZT4sIDxj b2RlPmZpbGVfZG93bmxvYWRfbGlzdDwvY29kZT4sIG9yIDxjb2RlPmxpbmtsaXN0PC9jb2Rl PiBpZiBib3RoIDxjb2RlPmxpbWl0PC9jb2RlPiBhbmQgPGNvZGU+cGFnZWJ5PC9jb2RlPiBh cmUgc2V0KSA8c3Ryb25nPnNvb19wYWdlX251bWJlcnM8L3N0cm9uZz4gd2lsbCB0YWtlIGl0 cyB2YWx1ZXMgZnJvbSB0aGUgZmlyc3Qgc3VjaCB0YWcuIFRoaXMgaXMgdHJ1ZSBubyBtYXR0 ZXIgd2hlcmUgeW91IHB1dCBhbnkgPHN0cm9uZz5zb29fcGFnZV9udW1iZXJzPC9zdHJvbmc+ IHRhZ3MuPC9wPgoKPGgyIGlkPSJ0YWdzIj5UYWdzPC9oMj4KCjxoMyBpZD0ic29vX3BhZ2Vf bGlua3MiPnNvb19wYWdlX2xpbmtzPC9oMz4KCjxwPkRpc3BsYXkgYSAmIzgyMjA7R29vZ2xl LXN0eWxlJiM4MjIxOyBwYWdlIG5hdmlnYXRpb24gd2lkZ2V0LCBpLmUuLCBhIGdyb3VwIG9m IG51bWJlcmVkIGxpbmtzIHJlcHJlc2VudGluZyBwYWdlcy48L3A+Cgo8cHJlPiZsdDt0eHA6 c29vX3BhZ2VfbGlua3MgLyZndDs8L3ByZT4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4K CTxsaT48Y29kZT5wbGFjZWhvbGRlcjwvY29kZT4gPGVtPih0ZXh0KTwvZW0+IDxzcGFuIGNs YXNzPSJkZWZhdWx0Ij5kZWZhdWx0PC9zcGFuPiA8Y29kZT4mYW1wO2hlbGxpcDs8L2NvZGU+ PGJyIC8+ClRleHQgdG8gcGxhY2Ugb24gZWl0aGVyIGVuZCBvZiB0aGUgY2VudHJhbCBwYWdl IHJhbmdlICh3aGVuIHRoZXJlIGFyZSBtYW55IHBhZ2VzKTwvbGk+Cgk8bGk+PGNvZGU+d2lu ZG93X3NpemU8L2NvZGU+IDxlbT4oaW50ZWdlcik8L2VtPiA8c3BhbiBjbGFzcz0iZGVmYXVs dCI+ZGVmYXVsdDwvc3Bhbj4gPGNvZGU+NTwvY29kZT48YnIgLz4KU2l6ZSBvZiBjZW50cmFs IHBhZ2UgcmFuZ2U8L2xpPgoJPGxpPjxjb2RlPnNob3dhbHdheXM8L2NvZGU+IDxlbT4oYm9v bGVhbik8L2VtPiA8c3BhbiBjbGFzcz0iZGVmYXVsdCI+ZGVmYXVsdDwvc3Bhbj4gPGNvZGU+ MDwvY29kZT48YnIgLz4KV2hldGhlciBvciBub3QgdG8gc2hvdyBhbnl0aGluZyB3aGVuIHRo ZSBsaXN0IGlzIGEgc2luZ2xlIHBhZ2U8L2xpPgoJPGxpPjxjb2RlPmFjdGl2ZV9jbGFzczwv Y29kZT4gPGVtPig8c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gY2xhc3MpPC9lbT4g PHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IDxjb2RlPmhlcmU8L2NvZGU+ PGJyIC8+CkNsYXNzIGZvciB0aGUgY3VycmVudCBwYWdlIG51bWJlciYjODIxNztzIHRhZyAo dGhlIDxjb2RlPmJyZWFrPC9jb2RlPiB0YWcsIGlmIGFueSwgb3RoZXJ3aXNlIDxjb2RlPnNw YW48L2NvZGU+KTwvbGk+Cgk8bGk+PGNvZGU+d3JhcHRhZzwvY29kZT4gPGVtPih0ZXh0KTwv ZW0+IDxzcGFuIGNsYXNzPSJkZWZhdWx0Ij5kZWZhdWx0PC9zcGFuPiBlbXB0eTxiciAvPgo8 c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwvc3Bhbj4gdGFnIG5hbWUgKG5vIGJyYWNrZXRzKSB0 byB3cmFwIHRoZSBvdXRwdXQ8L2xpPgoJPGxpPjxjb2RlPmNsYXNzPC9jb2RlPiA8ZW0+KHRl eHQpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IGVtcHR5PGJy IC8+CjxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvc3RydWN0L2dsb2Jh bC5odG1sI2FkZWYtY2xhc3MiIHRpdGxlPSJzIj48c3BhbiBjbGFzcz0iY2FwcyI+SFRNTDwv c3Bhbj4gY2xhc3MgbmFtZTwvYT4gZm9yIHRoZSA8Y29kZT53cmFwdGFnPC9jb2RlPi48L2xp PgoJPGxpPjxjb2RlPmh0bWxfaWQ8L2NvZGU+IDxlbT4odGV4dCk8L2VtPiA8c3BhbiBjbGFz cz0iZGVmYXVsdCI+ZGVmYXVsdDwvc3Bhbj4gZW1wdHk8YnIgLz4KPGEgaHJlZj0iaHR0cDov L3d3dy53My5vcmcvVFIvaHRtbDQwMS9zdHJ1Y3QvZ2xvYmFsLmh0bWwjYWRlZi1pZCI+PHNw YW4gY2xhc3M9ImNhcHMiPkhUTUw8L3NwYW4+IGlkPC9hPiBmb3IgdGhlIDxjb2RlPndyYXB0 YWc8L2NvZGU+LjwvbGk+Cgk8bGk+PGNvZGU+YnJlYWs8L2NvZGU+IDxlbT4obWl4ZWQpPC9l bT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IGVtcHR5PGJyIC8+Cjxz cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiB0YWcgbmFtZSAobm8gYnJhY2tldHMpIHRv IHdyYXAgb3IgdGV4dCB0byBwbGFjZSBiZXR3ZWVuIGFkamFjZW50IHBhZ2UgbnVtYmVycy4g SWYgPGNvZGU+d3JhcHRhZzwvY29kZT4gYW5kIDxjb2RlPmJyZWFrPC9jb2RlPiBhcmUgc2V0 LCA8Y29kZT5icmVhazwvY29kZT4gaXMgYXNzdW1lZCB0byBiZSBhIHRhZyBuYW1lLiBPdGhl cndpc2UgaXQgaXMgdHJlYXRlZCBhcyB0ZXh0IChzbyBkb24mIzgyMTc7dCB1c2UgPGNvZGU+ YnJlYWs9JnF1b3Q7YnImcXVvdDs8L2NvZGU+KS48L2xpPgo8L3VsPgoKPGgzIGlkPSJzb29f cGFnZV9jb3VudCI+c29vX3BhZ2VfY291bnQ8L2gzPgoKPHByZT4mbHQ7dHhwOnNvb19wYWdl X2NvdW50IC8mZ3Q7PC9wcmU+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8bGk+PGNv ZGU+Zm9ybWF0PC9jb2RlPiA8ZW0+KGZvcm1hdCBzdHJpbmcpPC9lbT4gPHNwYW4gY2xhc3M9 ImRlZmF1bHQiPmRlZmF1bHQ8L3NwYW4+IDxjb2RlPiAmcXVvdDt7cHJldn0gUGFnZSB7Y3Vy cmVudH0gb2Yge3RvdGFsfSB7bmV4dH0mcXVvdDsgPC9jb2RlPjxiciAvPgpUYWcgd2lsbCBv dXRwdXQgdGhpcyBzdHJpbmcgKGluIHlvdXIgbGFuZ3VhZ2UsIGlmIGFtb25nIHRoZSAyMSBp bmNsdWRlZCkgYWZ0ZXIgcmVwbGFjaW5nIDxjb2RlPntwcmV2fTwvY29kZT4sIDxjb2RlPntu ZXh0fTwvY29kZT4sIDxjb2RlPntmaXJzdH08L2NvZGU+LCBhbmQgPGNvZGU+e2xhc3R9PC9j b2RlPiB3aXRoIGxpbmtzLCBhbmQgPGNvZGU+e2N1cnJlbnR9PC9jb2RlPiBhbmQgPGNvZGU+ e3RvdGFsfTwvY29kZT4gd2l0aCBwYWdlIG51bWJlcnM8L2xpPgoJPGxpPjxjb2RlPnByZXY8 L2NvZGU+IDxlbT4odGV4dCk8L2VtPiA8c3BhbiBjbGFzcz0iZGVmYXVsdCI+ZGVmYXVsdDwv c3Bhbj4gPGNvZGU+JmFtcDtsYXF1bzs8L2NvZGU+ICgmbGFxdW87KTxiciAvPgpMaW5rIHRl eHQgZm9yIHRoZSA8Y29kZT57cHJldn08L2NvZGU+IGxpbms8L2xpPgoJPGxpPjxjb2RlPm5l eHQ8L2NvZGU+IDxlbT4odGV4dCk8L2VtPiA8c3BhbiBjbGFzcz0iZGVmYXVsdCI+ZGVmYXVs dDwvc3Bhbj4gPGNvZGU+JmFtcDtyYXF1bzs8L2NvZGU+ICgmcmFxdW87KTxiciAvPgpMaW5r IHRleHQgZm9yIHRoZSA8Y29kZT57bmV4dH08L2NvZGU+IGxpbms8L2xpPgoJPGxpPjxjb2Rl PmZpcnN0PC9jb2RlPiA8ZW0+KHRleHQpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1bHQiPmRl ZmF1bHQ8L3NwYW4+IDxjb2RlPnwmYW1wO2xhcXVvOzwvY29kZT4gKHwmbGFxdW87KTxiciAv PgpMaW5rIHRleHQgZm9yIHRoZSA8Y29kZT57Zmlyc3R9PC9jb2RlPiBsaW5rPC9saT4KCTxs aT48Y29kZT5sYXN0PC9jb2RlPiA8ZW0+KHRleHQpPC9lbT4gPHNwYW4gY2xhc3M9ImRlZmF1 bHQiPmRlZmF1bHQ8L3NwYW4+IDxjb2RlPiZhbXA7cmFxdW87fDwvY29kZT4gKCZyYXF1bzt8 KTxiciAvPgpMaW5rIHRleHQgZm9yIHRoZSA8Y29kZT57bGFzdH08L2NvZGU+IGxpbms8L2xp PgoJPGxpPjxjb2RlPnNob3dhbHdheXM8L2NvZGU+IDxlbT4oYm9vbGVhbik8L2VtPiA8c3Bh biBjbGFzcz0iZGVmYXVsdCI+ZGVmYXVsdDwvc3Bhbj4gPGNvZGU+MDwvY29kZT48YnIgLz4K V2hldGhlciBvciBub3QgdG8gc2hvdyA8Y29kZT57cHJldn08L2NvZGU+IGFuZCA8Y29kZT57 bmV4dH08L2NvZGU+IG9uIHRoZSBmaXJzdCBhbmQgbGFzdCBwYWdlcywgcmVzcGVjdGl2ZWx5 LCBvciBhbnl0aGluZyBhdCBhbGwgd2hlbiB0aGUgbGlzdCBpcyBhIHNpbmdsZSBwYWdlPC9s aT4KCTxsaT48Y29kZT53cmFwdGFnPC9jb2RlPiA8ZW0+KDxzcGFuIGNsYXNzPSJjYXBzIj5Y SFRNTDwvc3Bhbj4gdGFnIG5hbWUsIG5vIGJyYWNrZXRzKTwvZW0+IG9wdGlvbmFsIHRhZyB0 byB3cmFwIHRoZSBvdXRwdXQ8L2xpPgo8L3VsPgoKPGgzIGlkPSJzb29fcHJldl9wYWdlIj5z b29fcHJldl9wYWdlLCBzb29fbmV4dF9wYWdlPC9oMz4KCjxwPlNob3J0Y3V0cyBmb3IgPGNv ZGU+c29vX3BhZ2VfY291bnQ8L2NvZGU+IHdoZW4gYWxsIHlvdSB3YW50IGlzIGEgc2luZ2xl IGxpbmsuIEZvciBleGFtcGxlLCA8Y29kZT5zb29fcHJldl9wYWdlPC9jb2RlPiBpcyBhIHNo b3J0Y3V0IGZvciA8Y29kZT4mbHQ7dHhwOnNvb19wYWdlX2NvdW50IGZvcm1hdD0mcXVvdDt7 cHJldn0mcXVvdDsgLyZndDs8L2NvZGU+LjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjxw PkluIGFkZGl0aW9uIHRvIDxjb2RlPnNvb19wYWdlX2NvdW50PC9jb2RlPiBhdHRyaWJ1dGVz LCBlYWNoIG9mIHRoZXNlIHRhZ3MgYWxzbyBhY2NlcHRzIGEgPGNvZGU+dGV4dDwvY29kZT4g YXR0cmlidXRlIGZvciBzZXR0aW5nIHRoZSBsaW5rIHRleHQuIFRoZSBmb2xsb3dpbmcgdGFn cyBhcmUgZXF1aXZhbGVudDo8L3A+Cgo8cHJlPiZsdDt0eHA6c29vX25leHRfcGFnZSB0ZXh0 PSZxdW90O05leHQmcXVvdDsgLyZndDsKJmx0O3R4cDpzb29fcGFnZV9jb3VudCBmb3JtYXQ9 JnF1b3Q7e25leHR9JnF1b3Q7IG5leHQ9JnF1b3Q7TmV4dCZxdW90OyAvJmd0OzwvcHJlPgoK PGgyIGlkPSJoaXN0b3J5Ij5WZXJzaW9uIEhpc3Rvcnk8L2gyPgoKPGgzPjAuNC4yICgyMDIw LTAzLTA5KTwvaDM+Cgo8dWw+Cgk8bGk+Rml4ZWQgbG9uZ3N0YW5kaW5nIGJ1ZyB0aGF0IHVz ZWQgdG8gYmUgaGFybWxlc3MgYnV0IHR1cm5lZCBsZXRoYWwgaW4gVHhwIDQuOC4wPC9saT4K PC91bD4KCjxoMz4wLjQuMSAoMjAxNy0wMy0xMCk8L2gzPgoKPHVsPgoJPGxpPk5ldyA8c3Bh biBjbGFzcz0iY2FwcyI+VVJJPC9zcGFuPiBoYW5kbGluZyBhbGdvcml0aG0sIHJldmVydGlu ZyB0byB2ZXJzaW9uIDAuMyBiZWhhdmlvciwgYnV0IGFzIGEgZnJlZXN0YW5kaW5nIHBsdWdp bjwvbGk+CjwvdWw+Cgo8aDM+MC40LjAgKDIwMTctMDMtMDQpPC9oMz4KCjx1bD4KCTxsaT5S ZWZhY3RvcmVkIHRvIGVsaW1pbmF0ZSB0aGUgcmVxdWlyZW1lbnQgZm9yIGFuIGV4dGVybmFs IGxpYnJhcnkgcGx1Z2luLiAoTkI6IHRoaXMgbWVhbnMsIGludGVyIGFsaWEsIHRoYXQgdGhl IDxjb2RlPnA8L2NvZGU+IChpbWFnZSBJRCkgcXVlcnkgcGFyYW1ldGVyIGlzIG5vIGxvbmdl ciBwcmVzZXJ2ZWQgaW4gcGFnZSBsaW5rcy4pPC9saT4KPC91bD4KCjxoMz4wLjMuMiAoMjAx Ny0wMi0xNSk8L2gzPgoKPHVsPgoJPGxpPlRleHRwYXR0ZXJuIDQuNiBjb21wYXRpYmlsaXR5 IHVwZGF0ZTwvbGk+CjwvdWw+Cgo8aDM+MC4zLjEgKDIwMTItMDEtMjcpPC9oMz4KCjx1bD4K CTxsaT48Y29kZT5zb29fcGFnZV9jb3VudDwvY29kZT4gKGhlbmNlIGFsc28gPGNvZGU+c29v X3ByZXZfcGFnZTwvY29kZT4gYW5kIDxjb2RlPnNvb19uZXh0X3BhZ2U8L2NvZGU+KSBub3cg cHJlc2VydmUgbm9uLVR4cCBxdWVyeSBwYXJhbXMgZm9yICYjODIyMDtuZXh0JiM4MjIxOyBh bmQgJiM4MjIwO3ByZXYmIzgyMjE7IGxpbmtzLjwvbGk+CjwvdWw+Cgo8aDM+MC4zLjAgKDIw MTEtMDEtMTgpPC9oMz4KCjx1bD4KCTxsaT5QbHVnaW4gbm93IGluY2x1ZGVzIGEgVGV4dHBh Y2sgdG8gbG9jYWxpemUgcHJlLWZvcm1hdHRlZCB0ZXh0IG91dHB1dCBzdWNoIGFzICYjODIy MDtQYWdlIHtjdXJyZW50fSBvZiB7dG90YWx9JiM4MjIxOy4gQ3VycmVudGx5IGluY2x1ZGVz IDIxIGxhbmd1YWdlcy48L2xpPgo8L3VsPgoKPGgzPjAuMi43ICgyMDEwLTAyLTExKTwvaDM+ Cgo8dWw+Cgk8bGk+Rml4ZWQgVGV4dHBhdHRlcm4gbm90aWNlIGFib3V0IG5vbi1leGlzdGVu dCBhdHRyaWJ1dGUgd2hlbiB1c2luZyA8Y29kZT5zb29fcHJldl9wYWdlPC9jb2RlPiBvciA8 Y29kZT5zb29fbmV4dF9wYWdlPC9jb2RlPiAoZnVuY3Rpb25hbGl0eSBub3QgYWZmZWN0ZWQp PC9saT4KPC91bD4KCjxoMz4wLjIuNiAoMjAwOS0xMS0yMyk8L2gzPgoKPHVsPgoJPGxpPjxj b2RlPnNvb19wYWdlX2xpbmtzPC9jb2RlPiBub3cgcmVzdG9yZXMgdGhlIDxjb2RlPiYjMzk7 cGcmIzM5OzwvY29kZT4gcXVlcnkgcGFyYW1ldGVyIHRvIGl0cyBpbml0aWFsIHN0YXRlLCB0 byBhdm9pZCBjb25mbGljdHMgd2l0aCBvdGhlciBjb250ZXh0LWRlcGVuZGVudCBwbHVnaW5z PC9saT4KPC91bD4KCjxoMz4wLjIuNSAoMjAwOS0xMC0yMSk8L2gzPgoKPHVsPgoJPGxpPk5l dyBhdHRyaWJ1dGVzIGFuZCBzaG9ydGN1dCB0YWdzIGZvciA8Y29kZT5zb29fcGFnZV9jb3Vu dDwvY29kZT48L2xpPgo8L3VsPgoKPGgzPjAuMi40ICgyMDA5LTA3LTE2KTwvaDM+Cgo8dWw+ Cgk8bGk+Rml4ZWQgPGNvZGU+c2hvd2Fsd2F5czwvY29kZT4gYnVnIHdoZW4gYW4gYXJ0aWNs ZSBsaXN0IHJldHVybnMgMCBwYWdlcyAoZS5nLiBlbXB0eSBjYXRlZ29yeSk8L2xpPgo8L3Vs PgoKPGgzPjAuMi4zICgyMDA5LTA3LTA5KTwvaDM+Cgo8dWw+Cgk8bGk+SW1wcm92ZWQgY29u dGV4dCBjaGVjayB0byBwcmV2ZW50IHJhdyB0YWcgb3V0cHV0PC9saT4KPC91bD4KCjxoMz4w LjIuMiAoMjAwOS0wNy0wOSk8L2gzPgoKPHVsPgoJPGxpPldoZW4gYm90aCA8Y29kZT53cmFw dGFnPC9jb2RlPiBhbmQgPGNvZGU+YnJlYWs8L2NvZGU+IGFyZSBzZXQsIG5vbi1saW5rZWQg dGV4dCBpdGVtcyAoaS5lLiwgY3VycmVudCBwYWdlIG51bWJlciBvciBwbGFjZWhvbGRlciB0 ZXh0KSBhcmUgbm8gbG9uZ2VyIHdyYXBwZWQgaW4gPGNvZGU+c3BhbjwvY29kZT4gdGFncywg YW5kIDxjb2RlPmFjdGl2ZV9jbGFzczwvY29kZT4gaXMgYXBwbGllZCB0byB0aGUgPGNvZGU+ YnJlYWs8L2NvZGU+IGVsZW1lbnQgY29udGFpbmluZyB0aGUgY3VycmVudCBwYWdlIG51bWJl ci48L2xpPgoJPGxpPkJvdGggdGFncyBub3cgZG8gYSBjb250ZXh0IGNoZWNrIGFuZCBzaG93 IG5vdGhpbmcgaWYgdGhlIHBhZ2UgaXMgbm90IGFuIGFydGljbGUgbGlzdDwvbGk+CjwvdWw+ Cgo8aDM+MC4yLjEgKDIwMDktMDctMDcpPC9oMz4KCjx1bD4KCTxsaT5DaGFuZ2VkIGZpbGUg bmFtZSBhbmQgb25lIHRhZyBuYW1lPC9saT4KCTxsaT5UaGUgPGNvZGU+c2hvd2Fsd2F5czwv Y29kZT4gYXR0cmlidXRlIG9mIDxjb2RlPnNvb19wYWdlX2NvdW50PC9jb2RlPiBub3cgYWxz byBhZmZlY3RzIG91dHB1dCB3aGVuIHRoZSBhcnRpY2xlIGxpc3QgaXMgb25seSBvbmUgcGFn ZTwvbGk+Cgk8bGk+PGNvZGU+c29vX3BhZ2VfbGlua3M8L2NvZGU+IGhhcyBhbHNvIGJlZW4g Z2l2ZW4gdGhlIDxjb2RlPnNob3dhbHdheXM8L2NvZGU+IGF0dHJpYnV0ZTwvbGk+Cgk8bGk+ U2NyYXBwZWQgPGNvZGU+c29vX2FydGljbGVfY291bnQ8L2NvZGU+LCB3aGljaCB3YXMgaW5o ZXJlbnRseSBidWdneSAoYXMgaXMgdGhlIDxjb2RlPnJzeF90b19vZjwvY29kZT4gaXQgd2Fz IGJhc2VkIG9uKTwvbGk+CjwvdWw+Cgo8aDM+MC4yICgyMDA5LTA1LTIyKTwvaDM+Cgo8cD5O b3QgcHVibGljbHkgcmVsZWFzZWQuIENvZGUgb3ZlcmhhdWwsIGZpeGVkIHRvIHdvcmsgd2l0 aCBhbnkgcXVlcnkgc3RyaW5nPC9wPgoKPGgzPjAuMSAoYWdlcyBhZ28pPC9oMz4KCjxwPk5v dCBwdWJsaWNseSByZWxlYXNlZCwgbm90IHZlcnkgZ29vZCBlaXRoZXIsIGp1c3QgYSBzb3Jy eSBoYWNrIG9mIHdoYXQgd2FzIHByb2JhYmx5IGEgcXVpY2sgb25lLW9mZiBwbHVnaW4gdG8g YmVnaW4gd2l0aCAoaXQgd2FzIGVhcmx5IGRheXMgZm9yIFR4cCkuPC9wPiI7czo0OiJjb2Rl IjtzOjU1Mjg6IgppZihjbGFzc19leGlzdHMoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnkn KSkgewogICAgVHhwOjpnZXQoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKQogICAgICAg IC0+cmVnaXN0ZXIoJ3Nvb19wYWdlX2xpbmtzJykKICAgICAgICAtPnJlZ2lzdGVyKCdzb29f cGFnZV9jb3VudCcpCiAgICAgICAgLT5yZWdpc3Rlcignc29vX3ByZXZfcGFnZScpCiAgICAg ICAgLT5yZWdpc3Rlcignc29vX25leHRfcGFnZScpCiAgICAgICAgOwp9CgppZiAoIEB0eHBp bnRlcmZhY2UgPT0gJ2FkbWluJyApIHsKICAgIGFkZF9wcml2cygncGx1Z2luX2xpZmVjeWNs ZS5zb29fcGFnZV9udW1iZXJzJywnMSwyJyk7CiAgICByZWdpc3Rlcl9jYWxsYmFjaygnc29v X3BhZ2VfbnVtYmVyc19saWZlY3ljbGUnLCAncGx1Z2luX2xpZmVjeWNsZS5zb29fcGFnZV9u dW1iZXJzJyk7Cn0KCi8vIGRlbGV0ZSB0aGUgVGV4dHBhY2sKLy8gTm90ZTogY2FsbGJhY2tf ZXZlbnQoKSBkb2VzIG5vdCBkaXNwbGF5IG1lc3NhZ2UgZnJvbSBsaWZlY3ljbGUgY2FsbGJh Y2tzCmZ1bmN0aW9uIHNvb19wYWdlX251bWJlcnNfbGlmZWN5Y2xlICgkZXZlbnQsICRzdGVw KQp7CiAgICBpZiAoc3Vic3RyKCRldmVudCwgc3RybGVuKCdwbHVnaW5fbGlmZWN5Y2xlLicp KSA9PT0gJ3Nvb19wYWdlX251bWJlcnMnICYmICRzdGVwID09PSAnZGVsZXRlZCcpIHsKICAg ICAgICBzYWZlX2RlbGV0ZSgndHhwX2xhbmcnLCAiZXZlbnQgPSAnc29vX3BhZ2VfbnVtYmVy cyciKTsKICAgIH0KfQoKLy8gbG9hZCB0aGUgVGV4dHBhY2sKaWYgKEB0eHBpbnRlcmZhY2Ug PT0gJ2FkbWluJykgewogICAgaWYgKCRzb29fcGFnZV9udW1iZXJzX3RleHRwYWNrID0gbG9h ZF9sYW5nX2V2ZW50KCdzb29fcGFnZV9udW1iZXJzJykpIHsKICAgICAgICBnbG9iYWwgJHRl eHRhcnJheTsKICAgICAgICAkdGV4dGFycmF5ICs9ICRzb29fcGFnZV9udW1iZXJzX3RleHRw YWNrOwogICAgICAgIHVuc2V0KCRzb29fcGFnZV9udW1iZXJzX3RleHRwYWNrKTsKICAgIH0K fQoKZnVuY3Rpb24gc29vX3BhZ2VfbGlua3MgKCRhdHRzKQp7CiAgICBleHRyYWN0KGxBdHRz KGFycmF5KAogICAgICAgICdwbGFjZWhvbGRlcicgICA9PiAgJyZoZWxsaXA7JywKICAgICAg ICAnd2luZG93X3NpemUnICAgPT4gIDUsCiAgICAgICAgJ2FjdGl2ZV9jbGFzcycgID0+ICAn aGVyZScsCiAgICAgICAgJ3dyYXB0YWcnICAgICAgID0+ICAnJywKICAgICAgICAnY2xhc3Mn ICAgICAgICAgPT4gICcnLAogICAgICAgICdodG1sX2lkJyAgICAgICA9PiAgJycsCiAgICAg ICAgJ2JyZWFrJyAgICAgICAgID0+ICAnJywKICAgICAgICAnc2hvd2Fsd2F5cycgICAgPT4g IGZhbHNlLAogICAgKSwgJGF0dHMpKTsKCiAgICBnbG9iYWwgJHRoaXNwYWdlOwoKICAgIGlm ICghIGlzX2FycmF5KCR0aGlzcGFnZSkpIHsKICAgICAgICByZXR1cm4gX3Nvb19wYWdlX251 bWJlcnNfc2Vjb25kcGFzcyhfX0ZVTkNUSU9OX18sICRhdHRzKTsKICAgIH0KCiAgICBpZiAo ISAkc2hvd2Fsd2F5cyBhbmQgJHRoaXNwYWdlWydudW1QYWdlcyddIDw9IDEpIHJldHVybjsK CiAgICAkbnVtUGFnZXMgPSAkdGhpc3BhZ2VbJ251bVBhZ2VzJ107CiAgICAkcGcgPSAkdGhp c3BhZ2VbJ3BnJ107CgogICAgJHdfc3RhcnQgPSBtYXgoMSwKICAgICAgICBtaW4oJHBnIC0g Zmxvb3IoJHdpbmRvd19zaXplIC8gMiksICRudW1QYWdlcyAtICR3aW5kb3dfc2l6ZSArIDEp KTsKICAgICR3X2VuZCA9IG1pbigkd19zdGFydCArICR3aW5kb3dfc2l6ZSAtIDEsICRudW1Q YWdlcyk7CgogICAgJHBncyA9IGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgKICAgICAgICBh cnJheSgxKSwgcmFuZ2UoJHdfc3RhcnQsICR3X2VuZCksIGFycmF5KCRudW1QYWdlcykKICAg ICkpOwoKICAgICRicmVha190ZXh0ID0gJHdyYXB0YWcgPyAnJyA6ICRicmVhazsKICAgICR0 ZXh0X3RhZyA9ICggJGJyZWFrIGFuZCAkd3JhcHRhZyApID8gJycgOiAnc3Bhbic7CiAgICAk YWN0aXZlX2NsYXNzID0gJGFjdGl2ZV9jbGFzcyA/ICIgY2xhc3M9XCIkYWN0aXZlX2NsYXNz XCIiIDogJyc7CgogICAgd2hpbGUgKCRwZ3MpIHsKICAgICAgICAkbiA9IGFycmF5X3NoaWZ0 KCRwZ3MpOwogICAgICAgICRmaWxsID0gJHBncyA/ICggJHBnc1swXSA+ICRuICsgMSA/ICRw bGFjZWhvbGRlciA6ICRicmVha190ZXh0ICkgOiAnJzsKICAgICAgICBpZiAoICRuID09ICRw ZyApIHsKICAgICAgICAgICAgJGl0ZW1zW10gPSAkdGV4dF90YWcgPyB0YWcoJG4sICR0ZXh0 X3RhZywgJGFjdGl2ZV9jbGFzcykgOiAkbjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAkdXJpID0gX3Nvb19wYWdlX251bWJlcnNfdXJpKCRuKTsKICAgICAgICAgICAgJGl0ZW1z W10gPSBocmVmKCRuLCAkdXJpLCAnIHRpdGxlPSInLmdUeHQoJ3BhZ2UnKS5zcC4kbi4nIicp OwogICAgICAgIH0KICAgICAgICBpZiAoJG4gPCAkbnVtUGFnZXMgYW5kICRmaWxsKSB7CiAg ICAgICAgICAgICRpdGVtc1tdID0gJHRleHRfdGFnID8gdGFnKCRmaWxsLCAkdGV4dF90YWcp IDogJGZpbGw7CiAgICAgICAgfQogICAgfQogICAgaWYgKGlzc2V0KCRpdGVtcykpIHsKICAg ICAgICByZXR1cm4gJHdyYXB0YWcgPyBzdHJfcmVwbGFjZSgiPCRicmVhaz4kcGc8IiwKICAg ICAgICAgICAgIjwkYnJlYWskYWN0aXZlX2NsYXNzPiRwZzwiLAogICAgICAgICAgICBkb1dy YXAoJGl0ZW1zLCAkd3JhcHRhZywgJGJyZWFrLCAkY2xhc3MsICcnLCAnJywgJycsICRodG1s X2lkKSkKICAgICAgICAgICAgOiBpbXBsb2RlKCRicmVha190ZXh0ID8gJycgOiBuLCAkaXRl bXMpOwogICAgfQp9CgpmdW5jdGlvbiBzb29fcGFnZV9jb3VudCAoJGF0dHMpCnsKICAgIGV4 dHJhY3QobEF0dHMoYXJyYXkoCiAgICAgICAgJ2Zvcm1hdCcgICAgICAgID0+ICBnVHh0KCdz b29fcGFnZV9jb3VudCcpLAogICAgICAgICdwcmV2JyAgICAgICAgICA9PiAgJyZsYXF1bzsn LAogICAgICAgICduZXh0JyAgICAgICAgICA9PiAgJyZyYXF1bzsnLAogICAgICAgICdmaXJz dCcgICAgICAgICA9PiAgJ3wmbGFxdW87JywKICAgICAgICAnbGFzdCcgICAgICAgICAgPT4g ICcmcmFxdW87fCcsCiAgICAgICAgJ3Nob3dhbHdheXMnICAgID0+ICBmYWxzZSwKICAgICAg ICAnd3JhcHRhZycgICAgICAgPT4gICcnLAogICAgKSwgJGF0dHMpKTsKCiAgICBnbG9iYWwg JHRoaXNwYWdlOwoKICAgIGlmICghIGlzX2FycmF5KCR0aGlzcGFnZSkpIHsKICAgICAgICBy ZXR1cm4gX3Nvb19wYWdlX251bWJlcnNfc2Vjb25kcGFzcyhfX0ZVTkNUSU9OX18sICRhdHRz KTsKICAgIH0KCiAgICBpZiAoISAkc2hvd2Fsd2F5cyAmJiAkdGhpc3BhZ2VbJ251bVBhZ2Vz J10gPD0gMSkgcmV0dXJuOwoKICAgICRudW1QYWdlcyA9ICR0aGlzcGFnZVsnbnVtUGFnZXMn XTsKICAgICRwZyA9ICR0aGlzcGFnZVsncGcnXTsKCiAgICBpZiAoJHBnID4gMSkgewogICAg ICAgICRmaXJzdCA9IGhyZWYoJGZpcnN0LCBfc29vX3BhZ2VfbnVtYmVyc191cmkoMSksICcg dGl0bGU9IicuZ1R4dCgncGFnZScpLicgMSInKTsKICAgICAgICAkcHJldiA9IGhyZWYoJHBy ZXYsIF9zb29fcGFnZV9udW1iZXJzX3VyaSgkcGcgLSAxKSwgJyB0aXRsZT0iJy5nVHh0KCdw cmV2JykuJyInICk7CiAgICB9IGVsc2VpZiAoISAkc2hvd2Fsd2F5cykgJGZpcnN0ID0gJHBy ZXYgPSAnJzsKCiAgICBpZiAoICRwZyA8ICRudW1QYWdlcyApIHsKICAgICAgICAkbGFzdCA9 IGhyZWYoJGxhc3QsIF9zb29fcGFnZV9udW1iZXJzX3VyaSgkbnVtUGFnZXMpLCAnIHRpdGxl PSInLmdUeHQoJ3BhZ2UnKS5zcC4kbnVtUGFnZXMuJyInKTsKICAgICAgICAkbmV4dCA9IGhy ZWYoJG5leHQsIF9zb29fcGFnZV9udW1iZXJzX3VyaSgkcGcgKyAxKSwgJyB0aXRsZT0iJy5n VHh0KCduZXh0JykuJyInICk7CiAgICB9CiAgICBlbHNlaWYgKCEgJHNob3dhbHdheXMpICRs YXN0ID0gJG5leHQgPSAnJzsKCiAgICAkb3V0ID0gc3RyX3JlcGxhY2UoCiAgICAgICAgYXJy YXkoJ3twcmV2fScsICd7bmV4dH0nLCAne2ZpcnN0fScsICd7bGFzdH0nLCAne2N1cnJlbnR9 JywgJ3t0b3RhbH0nKSwKICAgICAgICBhcnJheSgkcHJldiwgJG5leHQsICRmaXJzdCwgJGxh c3QsICRwZywgJG51bVBhZ2VzKSwgJGZvcm1hdCk7CiAgICByZXR1cm4gJHdyYXB0YWcgPyB0 YWcoJG91dCwgJHdyYXB0YWcpIDogJG91dDsKfQoKZnVuY3Rpb24gc29vX3ByZXZfcGFnZSAo JGF0dHMpCnsKICAgIGlmIChpc3NldCgkYXR0c1sndGV4dCddKSkgewogICAgICAgICRhdHRz WydwcmV2J10gPSAkYXR0c1sndGV4dCddOwogICAgICAgIHVuc2V0KCRhdHRzWyd0ZXh0J10p OwogICAgfQogICAgJGF0dHNbJ2Zvcm1hdCddID0gJ3twcmV2fSc7CiAgICByZXR1cm4gc29v X3BhZ2VfY291bnQoJGF0dHMpOwp9CgpmdW5jdGlvbiBzb29fbmV4dF9wYWdlICgkYXR0cykK ewogICAgaWYgKGlzc2V0KCRhdHRzWyd0ZXh0J10pKSB7CiAgICAgICAgJGF0dHNbJ25leHQn XSA9ICRhdHRzWyd0ZXh0J107CiAgICAgICAgdW5zZXQoJGF0dHNbJ3RleHQnXSk7CiAgICB9 CiAgICAkYXR0c1snZm9ybWF0J10gPSAne25leHR9JzsKICAgIHJldHVybiBzb29fcGFnZV9j b3VudCgkYXR0cyk7Cn0KCmZ1bmN0aW9uIF9zb29fcGFnZV9udW1iZXJzX3NlY29uZHBhc3Mg KCRmdW5jLCAkYXR0cykKewovLyBpbiBjYXNlICRmdW5jJ3MgYXNzb2NpYXRlZCB0YWcgY29t ZXMgYmVmb3JlIGFuIGFydGljbGUgdGFnLAovLyB0aGlzIHJ1bnMgdGhlIHRhZyBhZ2FpbiBk dXJpbmcgdGV4dHBhdHRlcm4oKSdzIHNlY29uZCBwYXJzZSgpIHBhc3MKICAgIGdsb2JhbCAk cHJldGV4dDsKICAgIGlmICgkcHJldGV4dFsnc2Vjb25kcGFzcyddKSByZXR1cm47IC8vIHlv dSBvbmx5IGxpdmUgdHdpY2UKICAgIGZvcmVhY2ggKCRhdHRzIGFzICRrID0+ICR2KQogICAg ICAgICRhW10gPSAkayAuICc9IicgLiAkdiAuICciICc7CiAgICByZXR1cm4gIjx0eHA6JGZ1 bmMgIi4oaXNzZXQoJGEpID8gaW1wbG9kZSgnJywgJGEpIDogJycgKS4nLz4nOwp9CgpmdW5j dGlvbiBfc29vX3BhZ2VfbnVtYmVyc191cmkoJHBnKQp7CiAgICBzdGF0aWMgJGJhc2VVcmks ICRxUGFyYW1zOwoKICAgIGlmIChlbXB0eSgkYmFzZVVyaSkpIHsKICAgICAgICAkYmFzZVVy aSA9IHByZWdfcmVwbGFjZSAoJyUoLispXD8uKyUnLCAnJDEnLCAkX1NFUlZFUlsnUkVRVUVT VF9VUkknXSk7CiAgICAgICAgJHFQYXJhbXMgPSBhcnJheSgpOwogICAgICAgIHBhcnNlX3N0 cigkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10sICRxUGFyYW1zKTsKICAgICAgICB1bnNldCgk cVBhcmFtc1sncCddKTsKICAgIH0KCiAgICBpZiAoJHBnID4gMSkgewogICAgICAgICRxUGFy YW1zWydwZyddID0gJHBnOwogICAgfSBlbHNlIHsKICAgICAgICB1bnNldCgkcVBhcmFtc1sn cGcnXSk7CiAgICB9CiAgICBpZiAoZW1wdHkoJHFQYXJhbXMpKSB7CiAgICAgICAgcmV0dXJu ICRiYXNlVXJpOwogICAgfQogICAgcmV0dXJuICRiYXNlVXJpLic/Jy5odHRwX2J1aWxkX3F1 ZXJ5KCRxUGFyYW1zLCAnJywgJyZhbXA7Jyk7Cn0KIjtzOjQ6InR5cGUiO3M6MToiMSI7czo1 OiJmbGFncyI7czoxOiIyIjtzOjU6Im9yZGVyIjtzOjE6IjUiO3M6MzoibWQ1IjtzOjMyOiI1 ZmYzMjU3YWFiMmI5NzcxZTEwN2MwMGUxMmJlMGE3ZCI7fQ==