PGh0bWw+PGhlYWQ+PCEtLSBDb3B5cmlnaHQgMjAwNyBBYXJvbiBXaW5kc29yCiAgICAgCiAgICAgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJvb3N0IFNvZnR3YXJlIExpY2Vuc2UsIFZlcnNpb24gMS4wLgogICAgIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQKICAgICBodHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQpCiAgICAKICAtLT48dGl0bGU+Qm9vc3QgR3JhcGggTGlicmFyeTogUGxhbmFyIENhbm9uaWNhbCBPcmRlcmluZzwvdGl0bGU+CjwvaGVhZD4KPGJvZHkgYWxpbms9IiNmZjAwMDAiIAogICAgICBiZ2NvbG9yPSIjZmZmZmZmIiAKICAgICAgbGluaz0iIzAwMDBlZSIgCiAgICAgIHRleHQ9IiMwMDAwMDAiIAogICAgICB2bGluaz0iIzU1MWE4YiI+IAo8aW1nIHNyYz0iLi4vLi4vLi4vYm9vc3QucG5nIiBhbHQ9IkMrKyBCb29zdCIgaGVpZ2h0PSI4NiIgd2lkdGg9IjI3NyI+IAoKPGJyIGNsZWFyPSIiPgoKPGgxPlBsYW5hciBDYW5vbmljYWwgT3JkZXJpbmc8L2gxPgoKPHByZT50ZW1wbGF0ZSAmbHQ7dHlwZW5hbWUgR3JhcGgsIHR5cGVuYW1lIFBsYW5hckVtYmVkZGluZywgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFZlcnRleEluZGV4TWFwJmd0Owp2b2lkIHBsYW5hcl9jYW5vbmljYWxfb3JkZXJpbmcoY29uc3QgR3JhcGgmYW1wOyBnLCBQbGFuYXJFbWJlZGRpbmcgZW1iZWRkaW5nLCBPdXRwdXRJdGVyYXRvciBvcmRlcmluZywgVmVydGV4SW5kZXhNYXAgdm0pOwo8L3ByZT4KCjxwPgpBIDxpPnBsYW5hciBjYW5vbmljYWwgb3JkZXJpbmc8L2k+IGlzIGFuIG9yZGVyaW5nIDxpPnY8c3ViPjE8L3N1Yj4sIAp2PHN1Yj4yPC9zdWI+LCAuLi4sIHY8c3ViPm48L3N1Yj48L2k+IG9mIHRoZSB2ZXJ0aWNlcyBvZiBhIAo8YSBocmVmPSJtYWtlX21heGltYWxfcGxhbmFyLmh0bWwiPm1heGltYWw8L2E+IAo8YSBocmVmPSJwbGFuYXJfZ3JhcGhzLmh0bWwiPnBsYW5hcjwvYT4gZ3JhcGggaGF2aW5nIHRoZSBwcm9wZXJ0eSB0aGF0LCBmb3IgCmVhY2ggPGk+azwvaT4sIDxpPjMgJmx0Oz0gayAmbHQ7IG48L2k+LCB0aGUgZ3JhcGggaW5kdWNlZCBieSAKPGk+djxzdWI+MTwvc3ViPiwgdjxzdWI+Mjwvc3ViPiwgLi4uLCB2PHN1Yj5rPC9zdWI+PC9pPgo8L3A+PHVsPgo8bGk+aXMgYmljb25uZWN0ZWQgYW5kIGNvbnRhaW5zIHRoZSBlZGdlIDxpPnt2PHN1Yj4xPC9zdWI+LCB2PHN1Yj4yPC9zdWI+fTwvaT4gCm9uIGl0cyBvdXRlciBmYWNlLgo8L2xpPjxsaT5oYXMgYW55IHZlcnRpY2VzIGluIHRoZSByYW5nZSA8aT52PHN1Yj4xPC9zdWI+LCB2PHN1Yj4yPC9zdWI+LCAuLi4sIAp2PHN1Yj5rPC9zdWI+PC9pPiB0aGF0IGFyZSBhZGphY2VudCB0byA8aT52PHN1Yj4oaysxKTwvc3ViPjwvaT4gb24gaXRzIG91dGVyIApmYWNlLCBhbmQgdGhlc2UgdmVydGljZXMgZm9ybSBhIHBhdGggYWxvbmcgdGhlIG91dGVyIGZhY2UuCjwvbGk+PC91bD4KCkxldCA8aT5HPHN1Yj5rPC9zdWI+PC9pPiBiZSB0aGUgZ3JhcGggaW5kdWNlZCBieSB0aGUgZmlyc3QgPGk+azwvaT4gdmVydGljZXMgaW4KdGhlIGNhbm9uaWNhbCBvcmRlcmluZywgYWxvbmcgd2l0aCBhbGwgZWRnZXMgYmV0d2VlbiBhbnkgb2YgdGhlIGZpcnN0IDxpPms8L2k+IAp2ZXJ0aWNlcy4gQWZ0ZXIgPGk+RzxzdWI+azwvc3ViPjwvaT4gaGFzIGJlZW4gZHJhd24sIHRoZSA8aT4oaysxKTwvaT5zdCB2ZXJ0ZXggCmNhbiBiZSBkcmF3biBlYXNpbHkgd2l0aG91dCBlZGdlIGNyb3NzaW5ncywgc2luY2UgaXQncyBhZGphY2VudCBvbmx5IHRvIGEgCmNvbnNlY3V0aXZlIHNlcXVlbmNlIG9mIHZlcnRpY2VzIG9uIHRoZSBvdXRlciBmYWNlIG9mIDxpPkc8c3ViPms8L3N1Yj48L2k+LiAKPHA+CjwvcD48YmxvY2txdW90ZT4KPGNlbnRlcj4KPGltZyBzcmM9Ii4vZmlncy9jYW5vbmljYWxfb3JkZXJpbmcucG5nIj4KPC9jZW50ZXI+CjwvYmxvY2txdW90ZT4KCkEgcGxhbmFyIGNhbm9uaWNhbCBvcmRlcmluZyBleGlzdHMgZm9yIGV2ZXJ5IG1heGltYWwgcGxhbmFyIGdyYXBoIHdpdGggYXQKbGVhc3QgMiB2ZXJ0aWNlcy4gPHR0PnBsYW5hcl9jYW5vbmljYWxfb3JkZXJpbmc8L3R0PiBleHBlY3RzIHRoZSBpbnB1dCBncmFwaAp0byBoYXZlIGF0IGxlYXN0IDIgdmVydGljZXMuCjxwPgoKVGhlIHBsYW5hciBjYW5vbmljYWwgb3JkZXJpbmcgaXMgdXNlZCBhcyBhbiBpbnB1dCBpbiBzb21lIHBsYW5hciBncmFwaCBkcmF3aW5nIAphbGdvcml0aG1zLCBwYXJ0aWN1bGFybHkgdGhvc2UgdGhhdCBjcmVhdGUgYSBzdHJhaWdodCBsaW5lIGVtYmVkZGluZy4gCmRlIEZyYXlzc2VpeCwgUGFjaCwgYW5kIFBvbGxhY2sgCls8YSBocmVmPSIuL2JpYmxpb2dyYXBoeS5odG1sI2RlZnJheXNzZWl4cGFjaHBvbGxhY2s5MCI+NzI8L2E+XSAKZmlyc3QgcHJvdmVkIHRoZSAKZXhpc3RlbmNlIG9mIHN1Y2ggYW4gb3JkZXJpbmcgYW5kIHNob3dlZCBob3cgdG8gY29tcHV0ZSBvbmUgaW4gdGltZSAKPGk+TyhuKTwvaT4gb24gYSBtYXhpbWFsIHBsYW5hciBncmFwaCB3aXRoIDxpPm48L2k+IHZlcnRpY2VzLgoKCjxoMz5Db21wbGV4aXR5PC9oMz4KSWYgdGhlIHZlcnRleCBpbmRleCBtYXAgcHJvdmlkZXMgY29uc3RhbnQtdGltZSBhY2Nlc3MgdG8gaW5kaWNlcywgdGhpcwpmdW5jdGlvbiB0YWtlcyB0aW1lIDxpPk8obiArIG0pPC9pPiBmb3IgYSBwbGFuYXIgZ3JhcGggd2l0aCA8aT5uPC9pPiB2ZXJ0aWNlcyAKYW5kIDxpPm08L2k+IGVkZ2VzLiBOb3RlIHRoYXQgCmluIGEgc2ltcGxlIHBsYW5hciBncmFwaCB3aXRoIDxpPmY8L2k+IGZhY2VzLCA8aT5tPC9pPiBlZGdlcywgYW5kIDxpPm48L2k+IAp2ZXJ0aWNlcywgYm90aCA8aT5mPC9pPiBhbmQgPGk+bTwvaT4gYXJlIDxpPk8obik8L2k+LiAKCjxoMz5XaGVyZSBEZWZpbmVkPC9oMz4KCjxwPgo8YSBocmVmPSIuLi8uLi8uLi9ib29zdC9ncmFwaC9wbGFuYXJfY2Fub25pY2FsX29yZGVyaW5nLmhwcCI+Cjx0dD5ib29zdC9ncmFwaC9wbGFuYXJfY2Fub25pY2FsX29yZGVyaW5nLmhwcDwvdHQ+PC9hPgoKPC9wPjxoMz5QYXJhbWV0ZXJzPC9oMz4KCklOOiA8dHQ+R3JhcGgmYW1wOyBnPC90dD4KCjxibG9ja3F1b3RlPgpBbiB1bmRpcmVjdGVkIGdyYXBoLiBUaGUgZ3JhcGggdHlwZSBtdXN0IGJlIGEgbW9kZWwgb2YgCjxhIGhyZWY9IlZlcnRleEFuZEVkZ2VMaXN0R3JhcGguaHRtbCI+VmVydGV4QW5kRWRnZUxpc3RHcmFwaDwvYT4uClRoZSBncmFwaCBtdXN0Ogo8dWw+CjxsaT5CZSBtYXhpbWFsIHBsYW5hci48L2xpPgo8bGk+SGF2ZSBhdCBsZWFzdCB0d28gdmVydGljZXMuPC9saT4KPC91bD4KPC9ibG9ja3F1b3RlPgoKSU46IDx0dD5QbGFuYXJFbWJlZGRpbmc8L3R0PiAKCjxibG9ja3F1b3RlPgpBIG1vZGVsIG9mIDxhIGhyZWY9IlBsYW5hckVtYmVkZGluZy5odG1sIj5QbGFuYXJFbWJlZGRpbmc8L2E+Lgo8L2Jsb2NrcXVvdGU+CgpJTjogPHR0Pk91dHB1dEl0ZXJhdG9yPC90dD4KCjxibG9ja3F1b3RlPgpBbiBPdXRwdXRJdGVyYXRvciB3aXRoIDx0dD52YWx1ZV90eXBlPC90dD4gZXF1YWwgdG8gCjx0dD5ncmFwaF90cmFpdHMmbHQ7R3JhcGgmZ3Q7Ojp2ZXJ0ZXhfZGVzY3JpcHRvcjwvdHQ+LiBUaGUgY2Fub25pY2FsIG9yZGVyaW5nCndpbGwgYmUgd3JpdHRlbiB0byB0aGlzIGl0ZXJhdG9yLgo8L2Jsb2NrcXVvdGU+CgpJTjogPHR0PlZlcnRleEluZGV4TWFwIHZtPC90dD4KCjxibG9ja3F1b3RlPgpBIDxhIGhyZWY9Ii4uLy4uL3Byb3BlcnR5X21hcC9kb2MvUmVhZGFibGVQcm9wZXJ0eU1hcC5odG1sIj5SZWFkYWJsZSBQcm9wZXJ0eSBNYXAKPC9hPiB0aGF0IG1hcHMgdmVydGljZXMgZnJvbSA8dHQ+ZzwvdHQ+IHRvIGRpc3RpbmN0IGludGVnZXJzIGluIHRoZSByYW5nZSAKPHR0PlswLCBudW1fdmVydGljZXMoZykgKTwvdHQ+PGJyPgo8Yj5EZWZhdWx0PC9iPjogPHR0PmdldCh2ZXJ0ZXhfaW5kZXgsZyk8L3R0Pjxicj4KPC9ibG9ja3F1b3RlPgoKPGgzPkV4YW1wbGU8L2gzPgoKPHA+CjxhIGhyZWY9Ii4uL2V4YW1wbGUvY2Fub25pY2FsX29yZGVyaW5nLmNwcCI+Cjx0dD5leGFtcGxlcy9jYW5vbmljYWxfb3JkZXJpbmcuY3BwPC90dD48L2E+Cgo8L3A+PGgzPlNlZSBBbHNvPC9oMz4KCjxwPgo8YSBocmVmPSJwbGFuYXJfZ3JhcGhzLmh0bWwiPlBsYW5hciBHcmFwaHMgaW4gdGhlIEJvb3N0IEdyYXBoIExpYnJhcnk8L2E+Cgo8YnI+CjwvcD48aHI+CkNvcHlyaWdodCCpIDIwMDcgQWFyb24gV2luZHNvciAoPGEgaHJlZj0ibWFpbHRvOmFhcm9uLndpbmRzb3JAZ21haWwuY29tIj4KYWFyb24ud2luZHNvckBnbWFpbC5jb208L2E+KQogCjwvYm9keT48L2h0bWw+Cg==