PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPmJ6aXAyIGFuZCBsaWJiemlwMiwgdmVyc2lvbiAxLjAuNTwvdGl0bGU+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNjkuMSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+LyogQ29sb3VyczoKIzc0MjQwZiAgZGFyayBicm93biAgICAgIGgxLCBoMiwgaDMsIGg0CiMzMzY2OTkgIG1lZGl1bSBibHVlICAgICBsaW5rcwojMzM5OTk5ICB0dXJxdW9pc2UgICAgICAgbGluayBob3ZlciBjb2xvdXIKIzIwMjAyMCAgYWxtb3N0IGJsYWNrICAgIGdlbmVyYWwgdGV4dAojNzYxNTk2ICBwdXJwbGUgICAgICAgICAgbWQ1c3VtIHRleHQKIzYyNjI2MiAgZGFyayBncmF5ICAgICAgIHByZSBib3JkZXIKI2VlZWVlZSAgdmVyeSBsaWdodCBncmF5IHByZSBiYWNrZ3JvdW5kCiNmMmYyZjkgIHZlcnkgbGlnaHQgYmx1ZSBuYXYgdGFibGUgYmFja2dyb3VuZAojMzM2NmNjICBtZWRpdW0gYmx1ZSAgICAgbmF2IHRhYmxlIGJvcmRlcgoqLwoKYSwgYTpsaW5rLCBhOnZpc2l0ZWQsIGE6YWN0aXZlIHsgY29sb3I6ICMzMzY2OTk7IH0KYTpob3ZlciB7IGNvbG9yOiAjMzM5OTk5OyB9Cgpib2R5IHsgZm9udDogODAlLzEyNiUgc2Fucy1zZXJpZjsgfQpoMSwgaDIsIGgzLCBoNCB7IGNvbG9yOiAjNzQyNDBmOyB9CgpkdCB7IGNvbG9yOiAjMzM2Njk5OyBmb250LXdlaWdodDogYm9sZCB9CmRkIHsgCiBtYXJnaW4tbGVmdDogMS41ZW07IAogcGFkZGluZy1ib3R0b206IDAuOGVtOwp9CgovKiAtLSBydWxlciAtLSAqLwpkaXYuaHJfYmx1ZSB7IAogIGhlaWdodDogIDNweDsgCiAgYmFja2dyb3VuZDojZmZmZmZmIHVybCgiL2ltYWdlcy9ocl9ibHVlLnBuZyIpIHJlcGVhdC14OyB9CmRpdi5ocl9ibHVlIGhyIHsgZGlzcGxheTpub25lOyB9CgovKiByZWxlYXNlIHN0eWxlcyAqLwojcmVsZWFzZSBwIHsgbWFyZ2luLXRvcDogMC40ZW07IH0KI3JlbGVhc2UgLm1kNXN1bSB7IGNvbG9yOiAjNzYxNTk2OyB9CgoKLyogLS0tLS0tIHN0eWxlcyBmb3IgZG9jc3xtYW51YWxzfGhvd3RvIC0tLS0tLSAqLwovKiAtLSBsaXN0cyAtLSAqLwp1bCAgeyAKIG1hcmdpbjogICAgIDBweCA0cHggMTZweCAxNnB4OwogcGFkZGluZzogICAgMHB4OwogbGlzdC1zdHlsZTogdXJsKCIvaW1hZ2VzL2xpLWJsdWUucG5nIik7IAp9CnVsIGxpIHsgCiBtYXJnaW4tYm90dG9tOiAxMHB4Owp9CnVsIHVsCXsgCiBsaXN0LXN0eWxlLXR5cGU6ICBub25lOyAKIGxpc3Qtc3R5bGUtaW1hZ2U6IG5vbmU7IAogbWFyZ2luLWxlZnQ6ICAgICAgMHB4OyAKfQoKLyogaGVhZGVyIC8gZm9vdGVyIG5hdiB0YWJsZXMgKi8KdGFibGUubmF2IHsKIGJvcmRlcjogICAgIHNvbGlkIDFweCAjMzM2NmNjOwogYmFja2dyb3VuZDogI2YyZjJmOTsKIGJhY2tncm91bmQtY29sb3I6ICNmMmYyZjk7CiBtYXJnaW4tYm90dG9tOiAwLjVlbTsKfQovKiBkb24ndCBoYXZlIHVuZGVybGluZWQgbGlua3MgaW4gY2h1bmtlZCBuYXYgbWVudXMgKi8KdGFibGUubmF2IGEgeyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KdGFibGUubmF2IGE6aG92ZXIgeyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQp0YWJsZS5uYXYgdGQgeyBmb250LXNpemU6IDg1JTsgfQoKY29kZSwgdHQsIHByZSB7IGZvbnQtc2l6ZTogMTIwJTsgfQpjb2RlLCB0dCB7IGNvbG9yOiAjNzYxNTk2OyB9CgpkaXYubGl0ZXJhbGxheW91dCwgcHJlLnByb2dyYW1saXN0aW5nLCBwcmUuc2NyZWVuIHsKIGNvbG9yOiAgICAgICMwMDAwMDA7CiBwYWRkaW5nOiAgICAwLjVlbTsKIGJhY2tncm91bmQ6ICNlZWVlZWU7CiBib3JkZXI6ICAgICAxcHggc29saWQgIzYyNjI2MjsKIGJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CiBtYXJnaW46IDRweCAwcHggNHB4IDBweDsgCn0KPC9zdHlsZT4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+PGRpdiBjbGFzcz0iYm9vayIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPgo8ZGl2Pgo8ZGl2PjxoMSBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1c2VybWFuIj48L2E+YnppcDIgYW5kIGxpYmJ6aXAyLCB2ZXJzaW9uIDEuMC41PC9oMT48L2Rpdj4KPGRpdj48aDIgY2xhc3M9InN1YnRpdGxlIj5BIHByb2dyYW0gYW5kIGxpYnJhcnkgZm9yIGRhdGEgY29tcHJlc3Npb248L2gyPjwvZGl2Pgo8ZGl2PjxkaXYgY2xhc3M9ImF1dGhvcmdyb3VwIj48ZGl2IGNsYXNzPSJhdXRob3IiPgo8aDMgY2xhc3M9ImF1dGhvciI+CjxzcGFuIGNsYXNzPSJmaXJzdG5hbWUiPkp1bGlhbjwvc3Bhbj4gPHNwYW4gY2xhc3M9InN1cm5hbWUiPlNld2FyZDwvc3Bhbj4KPC9oMz4KPGRpdiBjbGFzcz0iYWZmaWxpYXRpb24iPjxzcGFuIGNsYXNzPSJvcmduYW1lIj5odHRwOi8vd3d3LmJ6aXAub3JnPGJyPjwvc3Bhbj48L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+CjxkaXY+PHAgY2xhc3M9InJlbGVhc2VpbmZvIj5WZXJzaW9uIDEuMC41IG9mIDEwIERlY2VtYmVyIDIwMDc8L3A+PC9kaXY+CjxkaXY+PHAgY2xhc3M9ImNvcHlyaWdodCI+Q29weXJpZ2h0IKkgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQ8L3A+PC9kaXY+CjxkaXY+PGRpdiBjbGFzcz0ibGVnYWxub3RpY2UiPgo8YSBuYW1lPSJpZDI0OTk4MzMiPjwvYT48cD5UaGlzIHByb2dyYW0sIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LCB0aGUKICBhc3NvY2lhdGVkIGxpYnJhcnkgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4sIGFuZAogIGFsbCBkb2N1bWVudGF0aW9uLCBhcmUgY29weXJpZ2h0IKkgMTk5Ni0yMDA3IEp1bGlhbiBTZXdhcmQuCiAgQWxsIHJpZ2h0cyByZXNlcnZlZC48L3A+CjxwPlJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgKICBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZQogIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZQogICBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlCiAgIGZvbGxvd2luZyBkaXNjbGFpbWVyLjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+VGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlCiAgIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsCiAgIHNvZnR3YXJlLiAgSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlIGluIGEgcHJvZHVjdCwgYW4KICAgYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQogICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+QWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZAogICBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsCiAgIHNvZnR3YXJlLjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+VGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8KICAgZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQKICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgIkFTIElTIiBBTkQgQU5ZCiAgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCiAgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECiAgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAogIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECiAgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAogIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HCiAgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuPC9wPgo8cD5QQVRFTlRTOiBUbyB0aGUgYmVzdCBvZiBteSBrbm93bGVkZ2UsCiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBhbmQKIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGRvIG5vdCB1c2UgYW55IHBhdGVudGVkCiBhbGdvcml0aG1zLiAgSG93ZXZlciwgSSBkbyBub3QgaGF2ZSB0aGUgcmVzb3VyY2VzIHRvIGNhcnJ5CiBvdXQgYSBwYXRlbnQgc2VhcmNoLiAgVGhlcmVmb3JlIEkgY2Fubm90IGdpdmUgYW55IGd1YXJhbnRlZSBvZgogdGhlIGFib3ZlIHN0YXRlbWVudC4KIDwvcD4KPC9kaXY+PC9kaXY+CjwvZGl2Pgo8aHI+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b2MiPgo8cD48Yj5UYWJsZSBvZiBDb250ZW50czwvYj48L3A+CjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSIjaW50cm8iPjEuIEludHJvZHVjdGlvbjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSIjdXNpbmciPjIuIEhvdyB0byB1c2UgYnppcDI8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNuYW1lIj4yLjEuIE5BTUU8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNzeW5vcHNpcyI+Mi4yLiBTWU5PUFNJUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2Rlc2NyaXB0aW9uIj4yLjMuIERFU0NSSVBUSU9OPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjb3B0aW9ucyI+Mi40LiBPUFRJT05TPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbWVtb3J5LW1hbmFnZW1lbnQiPjIuNS4gTUVNT1JZIE1BTkFHRU1FTlQ8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNyZWNvdmVyaW5nIj4yLjYuIFJFQ09WRVJJTkcgREFUQSBGUk9NIERBTUFHRUQgRklMRVM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNwZXJmb3JtYW5jZSI+Mi43LiBQRVJGT1JNQU5DRSBOT1RFUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2NhdmVhdHMiPjIuOC4gQ0FWRUFUUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2F1dGhvciI+Mi45LiBBVVRIT1I8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSIjbGlicHJvZyI+My4gClByb2dyYW1taW5nIHdpdGggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4KPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjdG9wLWxldmVsIj4zLjEuIFRvcC1sZXZlbCBzdHJ1Y3R1cmU8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNsbC1zdW1tYXJ5Ij4zLjEuMS4gTG93LWxldmVsIHN1bW1hcnk8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNobC1zdW1tYXJ5Ij4zLjEuMi4gSGlnaC1sZXZlbCBzdW1tYXJ5PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjdXRpbC1mbnMtc3VtbWFyeSI+My4xLjMuIFV0aWxpdHkgZnVuY3Rpb25zIHN1bW1hcnk8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2Vyci1oYW5kbGluZyI+My4yLiBFcnJvciBoYW5kbGluZzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2xvdy1sZXZlbCI+My4zLiBMb3ctbGV2ZWwgaW50ZXJmYWNlPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpjb21wcmVzcy1pbml0Ij4zLjMuMS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpDb21wcmVzcyI+My4zLjIuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpDb21wcmVzcy1lbmQiPjMuMy4zLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcy1pbml0Ij4zLjMuNC4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MiPjMuMy41LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzLWVuZCI+My4zLjYuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2hsLWludGVyZmFjZSI+My40LiBIaWdoLWxldmVsIGludGVyZmFjZTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZG9wZW4iPjMuNC4xLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZCI+My40LjIuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWRnZXR1bnVzZWQiPjMuNC4zLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkY2xvc2UiPjMuNC40LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiendyaXRlb3BlbiI+My40LjUuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVPcGVuPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGUiPjMuNC42LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGVjbG9zZSI+My40LjcuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNlbWJlZCI+My40LjguIEhhbmRsaW5nIGVtYmVkZGVkIGNvbXByZXNzZWQgZGF0YSBzdHJlYW1zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjc3RkLXJkd3IiPjMuNC45LiBTdGFuZGFyZCBmaWxlLXJlYWRpbmcvd3JpdGluZyBjb2RlPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN1dGlsLWZucyI+My41LiBVdGlsaXR5IGZ1bmN0aW9uczwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6YnVmZnRvYnVmZmNvbXByZXNzIj4zLjUuMS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpidWZmdG9idWZmZGVjb21wcmVzcyI+My41LjIuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8L2RsPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN6bGliLWNvbXBhdCI+My42LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWI8L2NvZGU+IGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjc3RkaW8tZnJlZSI+My43LiBVc2luZyB0aGUgbGlicmFyeSBpbiBhIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c3RkaW88L2NvZGU+LWZyZWUgZW52aXJvbm1lbnQ8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGRpby1ieWUiPjMuNy4xLiBHZXR0aW5nIHJpZCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2NyaXRpY2FsLWVycm9yIj4zLjcuMi4gQ3JpdGljYWwgZXJyb3IgaGFuZGxpbmc8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3dpbi1kbGwiPjMuOC4gTWFraW5nIGEgV2luZG93cyBETEw8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSIjbWlzYyI+NC4gTWlzY2VsbGFuZWE8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNsaW1pdHMiPjQuMS4gTGltaXRhdGlvbnMgb2YgdGhlIGNvbXByZXNzZWQgZmlsZSBmb3JtYXQ8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNwb3J0LWlzc3VlcyI+NC4yLiBQb3J0YWJpbGl0eSBpc3N1ZXM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNidWdzIj40LjMuIFJlcG9ydGluZyBidWdzPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjcGFja2FnZSI+NC40LiBEaWQgeW91IGdldCB0aGUgcmlnaHQgcGFja2FnZT88L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNyZWFkaW5nIj40LjUuIEZ1cnRoZXIgUmVhZGluZzwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8L2RsPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY2hhcHRlciIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iaW50cm8iPjwvYT4xLqBJbnRyb2R1Y3Rpb248L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzCnVzaW5nIHRoZSBCdXJyb3dzLVdoZWVsZXIgYmxvY2stc29ydGluZyB0ZXh0IGNvbXByZXNzaW9uCmFsZ29yaXRobSwgYW5kIEh1ZmZtYW4gY29kaW5nLiAgQ29tcHJlc3Npb24gaXMgZ2VuZXJhbGx5CmNvbnNpZGVyYWJseSBiZXR0ZXIgdGhhbiB0aGF0IGFjaGlldmVkIGJ5IG1vcmUgY29udmVudGlvbmFsCkxaNzcvTFo3OC1iYXNlZCBjb21wcmVzc29ycywgYW5kIGFwcHJvYWNoZXMgdGhlIHBlcmZvcm1hbmNlIG9mCnRoZSBQUE0gZmFtaWx5IG9mIHN0YXRpc3RpY2FsIGNvbXByZXNzb3JzLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYnVpbHQgb24gdG9wIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+LCBhIGZsZXhpYmxlIGxpYnJhcnkgZm9yCmhhbmRsaW5nIGNvbXByZXNzZWQgZGF0YSBpbiB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0LiAgVGhpcyBtYW51YWwKZGVzY3JpYmVzIGJvdGggaG93IHRvIHVzZSB0aGUgcHJvZ3JhbSBhbmQgaG93IHRvIHdvcmsgd2l0aCB0aGUKbGlicmFyeSBpbnRlcmZhY2UuICBNb3N0IG9mIHRoZSBtYW51YWwgaXMgZGV2b3RlZCB0byB0aGlzCmxpYnJhcnksIG5vdCB0aGUgcHJvZ3JhbSwgd2hpY2ggaXMgZ29vZCBuZXdzIGlmIHlvdXIgaW50ZXJlc3QgaXMKb25seSBpbiB0aGUgcHJvZ3JhbS48L3A+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48YSBocmVmPSIjdXNpbmciPkhvdyB0byB1c2UgYnppcDI8L2E+IGRlc2NyaWJlcyBob3cgdG8gdXNlCiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPjsgdGhpcyBpcyB0aGUgb25seSBwYXJ0CiB5b3UgbmVlZCB0byByZWFkIGlmIHlvdSBqdXN0IHdhbnQgdG8ga25vdyBob3cgdG8gb3BlcmF0ZSB0aGUKIHByb2dyYW0uPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48YSBocmVmPSIjbGlicHJvZyI+UHJvZ3JhbW1pbmcgd2l0aCBsaWJiemlwMjwvYT4gZGVzY3JpYmVzIHRoZQogcHJvZ3JhbW1pbmcgaW50ZXJmYWNlcyBpbiBkZXRhaWwsIGFuZDwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGEgaHJlZj0iI21pc2MiPk1pc2NlbGxhbmVhPC9hPiByZWNvcmRzIHNvbWUKIG1pc2NlbGxhbmVvdXMgbm90ZXMgd2hpY2ggSSB0aG91Z2h0IG91Z2h0IHRvIGJlIHJlY29yZGVkCiBzb21ld2hlcmUuPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjaGFwdGVyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1c2luZyI+PC9hPjIuoEhvdyB0byB1c2UgYnppcDI8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b2MiPgo8cD48Yj5UYWJsZSBvZiBDb250ZW50czwvYj48L3A+CjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI25hbWUiPjIuMS4gTkFNRTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3N5bm9wc2lzIj4yLjIuIFNZTk9QU0lTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjZGVzY3JpcHRpb24iPjIuMy4gREVTQ1JJUFRJT048L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNvcHRpb25zIj4yLjQuIE9QVElPTlM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNtZW1vcnktbWFuYWdlbWVudCI+Mi41LiBNRU1PUlkgTUFOQUdFTUVOVDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3JlY292ZXJpbmciPjIuNi4gUkVDT1ZFUklORyBEQVRBIEZST00gREFNQUdFRCBGSUxFUzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BlcmZvcm1hbmNlIj4yLjcuIFBFUkZPUk1BTkNFIE5PVEVTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjY2F2ZWF0cyI+Mi44LiBDQVZFQVRTPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjYXV0aG9yIj4yLjkuIEFVVEhPUjwvYT48L3NwYW4+PC9kdD4KPC9kbD4KPC9kaXY+CjxwPlRoaXMgY2hhcHRlciBjb250YWlucyBhIGNvcHkgb2YgdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IG1hbiBwYWdlLCBhbmQgbm90aGluZwplbHNlLjwvcD4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0ibmFtZSI+PC9hPjIuMS6gTkFNRTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IC0gYSBibG9jay1zb3J0aW5nIGZpbGUKICBjb21wcmVzc29yLCB2MS4wLjQ8L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpjYXQ8L2NvZGU+IC0KICAgZGVjb21wcmVzc2VzIGZpbGVzIHRvIHN0ZG91dDwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IC0KICAgcmVjb3ZlcnMgZGF0YSBmcm9tIGRhbWFnZWQgYnppcDIgZmlsZXM8L3A+PC9saT4KPC91bD48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InN5bm9wc2lzIj48L2E+Mi4yLqBTWU5PUFNJUzwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImJ1bGxldCI+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBbCiAgLWNkZmtxc3R2elZMMTIzNDU2Nzg5IF0gWyBmaWxlbmFtZXMgLi4uICBdPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1bnppcDI8L2NvZGU+IFsKICAtZmt2c1ZMIF0gWyBmaWxlbmFtZXMgLi4uICBdPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6Y2F0PC9jb2RlPiBbIC1zIF0gWwogIGZpbGVuYW1lcyAuLi4gIF08L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPgogIGZpbGVuYW1lPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJkZXNjcmlwdGlvbiI+PC9hPjIuMy6gREVTQ1JJUFRJT048L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzCnVzaW5nIHRoZSBCdXJyb3dzLVdoZWVsZXIgYmxvY2sgc29ydGluZyB0ZXh0IGNvbXByZXNzaW9uCmFsZ29yaXRobSwgYW5kIEh1ZmZtYW4gY29kaW5nLiAgQ29tcHJlc3Npb24gaXMgZ2VuZXJhbGx5CmNvbnNpZGVyYWJseSBiZXR0ZXIgdGhhbiB0aGF0IGFjaGlldmVkIGJ5IG1vcmUgY29udmVudGlvbmFsCkxaNzcvTFo3OC1iYXNlZCBjb21wcmVzc29ycywgYW5kIGFwcHJvYWNoZXMgdGhlIHBlcmZvcm1hbmNlIG9mCnRoZSBQUE0gZmFtaWx5IG9mIHN0YXRpc3RpY2FsIGNvbXByZXNzb3JzLjwvcD4KPHA+VGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGFyZSBkZWxpYmVyYXRlbHkgdmVyeSBzaW1pbGFyIHRvCnRob3NlIG9mIEdOVSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmd6aXA8L2NvZGU+LCBidXQgdGhleSBhcmUKbm90IGlkZW50aWNhbC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGV4cGVjdHMgYSBsaXN0IG9mCmZpbGUgbmFtZXMgdG8gYWNjb21wYW55IHRoZSBjb21tYW5kLWxpbmUgZmxhZ3MuICBFYWNoIGZpbGUgaXMKcmVwbGFjZWQgYnkgYSBjb21wcmVzc2VkIHZlcnNpb24gb2YgaXRzZWxmLCB3aXRoIHRoZSBuYW1lCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3JpZ2luYWxfbmFtZS5iejI8L2NvZGU+LiAgRWFjaApjb21wcmVzc2VkIGZpbGUgaGFzIHRoZSBzYW1lIG1vZGlmaWNhdGlvbiBkYXRlLCBwZXJtaXNzaW9ucywgYW5kLAp3aGVuIHBvc3NpYmxlLCBvd25lcnNoaXAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgb3JpZ2luYWwsIHNvIHRoYXQKdGhlc2UgcHJvcGVydGllcyBjYW4gYmUgY29ycmVjdGx5IHJlc3RvcmVkIGF0IGRlY29tcHJlc3Npb24gdGltZS4KRmlsZSBuYW1lIGhhbmRsaW5nIGlzIG5haXZlIGluIHRoZSBzZW5zZSB0aGF0IHRoZXJlIGlzIG5vCm1lY2hhbmlzbSBmb3IgcHJlc2VydmluZyBvcmlnaW5hbCBmaWxlIG5hbWVzLCBwZXJtaXNzaW9ucywKb3duZXJzaGlwcyBvciBkYXRlcyBpbiBmaWxlc3lzdGVtcyB3aGljaCBsYWNrIHRoZXNlIGNvbmNlcHRzLCBvcgpoYXZlIHNlcmlvdXMgZmlsZSBuYW1lIGxlbmd0aCByZXN0cmljdGlvbnMsIHN1Y2ggYXMKTVMtRE9TLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gd2lsbCBieSBkZWZhdWx0IG5vdApvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMuICBJZiB5b3Ugd2FudCB0aGlzIHRvIGhhcHBlbiwgc3BlY2lmeQp0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZjwvY29kZT4gZmxhZy48L3A+CjxwPklmIG5vIGZpbGUgbmFtZXMgYXJlIHNwZWNpZmllZCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gY29tcHJlc3NlcyBmcm9tIHN0YW5kYXJkCmlucHV0IHRvIHN0YW5kYXJkIG91dHB1dC4gIEluIHRoaXMgY2FzZSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCBkZWNsaW5lIHRvIHdyaXRlCmNvbXByZXNzZWQgb3V0cHV0IHRvIGEgdGVybWluYWwsIGFzIHRoaXMgd291bGQgYmUgZW50aXJlbHkKaW5jb21wcmVoZW5zaWJsZSBhbmQgdGhlcmVmb3JlIHBvaW50bGVzcy48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gKG9yCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLWQ8L2NvZGU+KSBkZWNvbXByZXNzZXMgYWxsCnNwZWNpZmllZCBmaWxlcy4gIEZpbGVzIHdoaWNoIHdlcmUgbm90IGNyZWF0ZWQgYnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCBiZSBkZXRlY3RlZCBhbmQKaWdub3JlZCwgYW5kIGEgd2FybmluZyBpc3N1ZWQuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGF0dGVtcHRzIHRvIGd1ZXNzIHRoZQpmaWxlbmFtZSBmb3IgdGhlIGRlY29tcHJlc3NlZCBmaWxlIGZyb20gdGhhdCBvZiB0aGUgY29tcHJlc3NlZApmaWxlIGFzIGZvbGxvd3M6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZS5iejIgPC9jb2RlPgogIGJlY29tZXMKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lPC9jb2RlPjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZS5ieiA8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWU8L2NvZGU+PC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLnRiejI8L2NvZGU+CiAgYmVjb21lcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmlsZW5hbWUudGFyPC9jb2RlPjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5maWxlbmFtZS50YnogPC9jb2RlPgogIGJlY29tZXMKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZpbGVuYW1lLnRhcjwvY29kZT48L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YW55b3RoZXJuYW1lIDwvY29kZT4KICBiZWNvbWVzCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hbnlvdGhlcm5hbWUub3V0PC9jb2RlPjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5JZiB0aGUgZmlsZSBkb2VzIG5vdCBlbmQgaW4gb25lIG9mIHRoZSByZWNvZ25pc2VkIGVuZGluZ3MsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4udGJ6MjwvY29kZT4gb3IKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4udGJ6PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gY29tcGxhaW5zIHRoYXQgaXQgY2Fubm90Cmd1ZXNzIHRoZSBuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlLCBhbmQgdXNlcyB0aGUgb3JpZ2luYWwgbmFtZQp3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Lm91dDwvY29kZT4gYXBwZW5kZWQuPC9wPgo8cD5BcyB3aXRoIGNvbXByZXNzaW9uLCBzdXBwbHlpbmcgbm8gZmlsZW5hbWVzIGNhdXNlcwpkZWNvbXByZXNzaW9uIGZyb20gc3RhbmRhcmQgaW5wdXQgdG8gc3RhbmRhcmQgb3V0cHV0LjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiB3aWxsIGNvcnJlY3RseQpkZWNvbXByZXNzIGEgZmlsZSB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0d28gb3IgbW9yZQpjb21wcmVzc2VkIGZpbGVzLiAgVGhlIHJlc3VsdCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUKY29ycmVzcG9uZGluZyB1bmNvbXByZXNzZWQgZmlsZXMuICBJbnRlZ3JpdHkgdGVzdGluZwooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdDwvY29kZT4pIG9mIGNvbmNhdGVuYXRlZCBjb21wcmVzc2VkCmZpbGVzIGlzIGFsc28gc3VwcG9ydGVkLjwvcD4KPHA+WW91IGNhbiBhbHNvIGNvbXByZXNzIG9yIGRlY29tcHJlc3MgZmlsZXMgdG8gdGhlIHN0YW5kYXJkCm91dHB1dCBieSBnaXZpbmcgdGhlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWM8L2NvZGU+IGZsYWcuCk11bHRpcGxlIGZpbGVzIG1heSBiZSBjb21wcmVzc2VkIGFuZCBkZWNvbXByZXNzZWQgbGlrZSB0aGlzLiAgVGhlCnJlc3VsdGluZyBvdXRwdXRzIGFyZSBmZWQgc2VxdWVudGlhbGx5IHRvIHN0ZG91dC4gIENvbXByZXNzaW9uIG9mCm11bHRpcGxlIGZpbGVzIGluIHRoaXMgbWFubmVyIGdlbmVyYXRlcyBhIHN0cmVhbSBjb250YWluaW5nCm11bHRpcGxlIGNvbXByZXNzZWQgZmlsZSByZXByZXNlbnRhdGlvbnMuICBTdWNoIGEgc3RyZWFtIGNhbiBiZQpkZWNvbXByZXNzZWQgY29ycmVjdGx5IG9ubHkgYnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdmVyc2lvbiAwLjkuMCBvciBsYXRlci4KRWFybGllciB2ZXJzaW9ucyBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsCnN0b3AgYWZ0ZXIgZGVjb21wcmVzc2luZyB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgc3RyZWFtLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gKG9yCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLWRjPC9jb2RlPikgZGVjb21wcmVzc2VzIGFsbApzcGVjaWZpZWQgZmlsZXMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHdpbGwgcmVhZCBhcmd1bWVudHMKZnJvbSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpJUDI8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaSVA8L2NvZGU+LCBpbiB0aGF0IG9yZGVyLCBhbmQgd2lsbApwcm9jZXNzIHRoZW0gYmVmb3JlIGFueSBhcmd1bWVudHMgcmVhZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuClRoaXMgZ2l2ZXMgYSBjb252ZW5pZW50IHdheSB0byBzdXBwbHkgZGVmYXVsdCBhcmd1bWVudHMuPC9wPgo8cD5Db21wcmVzc2lvbiBpcyBhbHdheXMgcGVyZm9ybWVkLCBldmVuIGlmIHRoZSBjb21wcmVzc2VkCmZpbGUgaXMgc2xpZ2h0bHkgbGFyZ2VyIHRoYW4gdGhlIG9yaWdpbmFsLiAgRmlsZXMgb2YgbGVzcyB0aGFuCmFib3V0IG9uZSBodW5kcmVkIGJ5dGVzIHRlbmQgdG8gZ2V0IGxhcmdlciwgc2luY2UgdGhlIGNvbXByZXNzaW9uCm1lY2hhbmlzbSBoYXMgYSBjb25zdGFudCBvdmVyaGVhZCBpbiB0aGUgcmVnaW9uIG9mIDUwIGJ5dGVzLgpSYW5kb20gZGF0YSAoaW5jbHVkaW5nIHRoZSBvdXRwdXQgb2YgbW9zdCBmaWxlIGNvbXByZXNzb3JzKSBpcwpjb2RlZCBhdCBhYm91dCA4LjA1IGJpdHMgcGVyIGJ5dGUsIGdpdmluZyBhbiBleHBhbnNpb24gb2YgYXJvdW5kCjAuNSUuPC9wPgo8cD5BcyBhIHNlbGYtY2hlY2sgZm9yIHlvdXIgcHJvdGVjdGlvbiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gdXNlcyAzMi1iaXQgQ1JDcyB0byBtYWtlCnN1cmUgdGhhdCB0aGUgZGVjb21wcmVzc2VkIHZlcnNpb24gb2YgYSBmaWxlIGlzIGlkZW50aWNhbCB0byB0aGUKb3JpZ2luYWwuICBUaGlzIGd1YXJkcyBhZ2FpbnN0IGNvcnJ1cHRpb24gb2YgdGhlIGNvbXByZXNzZWQgZGF0YSwKYW5kIGFnYWluc3QgdW5kZXRlY3RlZCBidWdzIGluCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IChob3BlZnVsbHkgdmVyeSB1bmxpa2VseSkuClRoZSBjaGFuY2VzIG9mIGRhdGEgY29ycnVwdGlvbiBnb2luZyB1bmRldGVjdGVkIGlzIG1pY3Jvc2NvcGljLAphYm91dCBvbmUgY2hhbmNlIGluIGZvdXIgYmlsbGlvbiBmb3IgZWFjaCBmaWxlIHByb2Nlc3NlZC4gIEJlCmF3YXJlLCB0aG91Z2gsIHRoYXQgdGhlIGNoZWNrIG9jY3VycyB1cG9uIGRlY29tcHJlc3Npb24sIHNvIGl0CmNhbiBvbmx5IHRlbGwgeW91IHRoYXQgc29tZXRoaW5nIGlzIHdyb25nLiAgSXQgY2FuJ3QgaGVscCB5b3UKcmVjb3ZlciB0aGUgb3JpZ2luYWwgdW5jb21wcmVzc2VkIGRhdGEuICBZb3UgY2FuIHVzZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gdG8gdHJ5IHRvIHJlY292ZXIKZGF0YSBmcm9tIGRhbWFnZWQgZmlsZXMuPC9wPgo8cD5SZXR1cm4gdmFsdWVzOiAwIGZvciBhIG5vcm1hbCBleGl0LCAxIGZvciBlbnZpcm9ubWVudGFsCnByb2JsZW1zIChmaWxlIG5vdCBmb3VuZCwgaW52YWxpZCBmbGFncywgSS9PIGVycm9ycywgZXRjLiksIDIKdG8gaW5kaWNhdGUgYSBjb3JydXB0IGNvbXByZXNzZWQgZmlsZSwgMyBmb3IgYW4gaW50ZXJuYWwKY29uc2lzdGVuY3kgZXJyb3IgKGVnLCBidWcpIHdoaWNoIGNhdXNlZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB0byBwYW5pYy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJvcHRpb25zIj48L2E+Mi40LqBPUFRJT05TPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48ZGw+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tYyAtLXN0ZG91dDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkNvbXByZXNzIG9yIGRlY29tcHJlc3MgdG8gc3RhbmRhcmQKICBvdXRwdXQuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZCAtLWRlY29tcHJlc3M8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5Gb3JjZSBkZWNvbXByZXNzaW9uLgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnVuemlwMjwvY29kZT4gYW5kCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemNhdDwvY29kZT4gYXJlIHJlYWxseSB0aGUgc2FtZQogIHByb2dyYW0sIGFuZCB0aGUgZGVjaXNpb24gYWJvdXQgd2hhdCBhY3Rpb25zIHRvIHRha2UgaXMgZG9uZSBvbgogIHRoZSBiYXNpcyBvZiB3aGljaCBuYW1lIGlzIHVzZWQuICBUaGlzIGZsYWcgb3ZlcnJpZGVzIHRoYXQKICBtZWNoYW5pc20sIGFuZCBmb3JjZXMgYnppcDIgdG8gZGVjb21wcmVzcy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi16IC0tY29tcHJlc3M8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5UaGUgY29tcGxlbWVudCB0bwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWQ8L2NvZGU+OiBmb3JjZXMgY29tcHJlc3Npb24sCiAgcmVnYXJkbGVzcyBvZiB0aGUgaW52b2thdGlvbiBuYW1lLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXQgLS10ZXN0PC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+Q2hlY2sgaW50ZWdyaXR5IG9mIHRoZSBzcGVjaWZpZWQgZmlsZShzKSwgYnV0CiAgZG9uJ3QgZGVjb21wcmVzcyB0aGVtLiAgVGhpcyByZWFsbHkgcGVyZm9ybXMgYSB0cmlhbAogIGRlY29tcHJlc3Npb24gYW5kIHRocm93cyBhd2F5IHRoZSByZXN1bHQuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZiAtLWZvcmNlPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+CjxwPkZvcmNlIG92ZXJ3cml0ZSBvZiBvdXRwdXQgZmlsZXMuICBOb3JtYWxseSwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB3aWxsIG5vdCBvdmVyd3JpdGUKICBleGlzdGluZyBvdXRwdXQgZmlsZXMuICBBbHNvIGZvcmNlcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRvIGJyZWFrIGhhcmQgbGlua3MgdG8KICBmaWxlcywgd2hpY2ggaXQgb3RoZXJ3aXNlIHdvdWxkbid0IGRvLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gbm9ybWFsbHkgZGVjbGluZXMKICB0byBkZWNvbXByZXNzIGZpbGVzIHdoaWNoIGRvbid0IGhhdmUgdGhlIGNvcnJlY3QgbWFnaWMgaGVhZGVyCiAgYnl0ZXMuIElmIGZvcmNlZCAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZjwvY29kZT4pLAogIGhvd2V2ZXIsIGl0IHdpbGwgcGFzcyBzdWNoIGZpbGVzIHRocm91Z2ggdW5tb2RpZmllZC4gVGhpcyBpcwogIGhvdyBHTlUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nemlwPC9jb2RlPiBiZWhhdmVzLjwvcD4KPC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1rIC0ta2VlcDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPktlZXAgKGRvbid0IGRlbGV0ZSkgaW5wdXQgZmlsZXMgZHVyaW5nCiAgY29tcHJlc3Npb24gb3IgZGVjb21wcmVzc2lvbi48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1zIC0tc21hbGw8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD4KPHA+UmVkdWNlIG1lbW9yeSB1c2FnZSwgZm9yIGNvbXByZXNzaW9uLAogIGRlY29tcHJlc3Npb24gYW5kIHRlc3RpbmcuICBGaWxlcyBhcmUgZGVjb21wcmVzc2VkIGFuZCB0ZXN0ZWQKICB1c2luZyBhIG1vZGlmaWVkIGFsZ29yaXRobSB3aGljaCBvbmx5IHJlcXVpcmVzIDIuNSBieXRlcyBwZXIKICBibG9jayBieXRlLiAgVGhpcyBtZWFucyBhbnkgZmlsZSBjYW4gYmUgZGVjb21wcmVzc2VkIGluIDIzMDBrCiAgb2YgbWVtb3J5LCBhbGJlaXQgYXQgYWJvdXQgaGFsZiB0aGUgbm9ybWFsIHNwZWVkLjwvcD4KPHA+RHVyaW5nIGNvbXByZXNzaW9uLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1zPC9jb2RlPgogIHNlbGVjdHMgYSBibG9jayBzaXplIG9mIDIwMGssIHdoaWNoIGxpbWl0cyBtZW1vcnkgdXNlIHRvIGFyb3VuZAogIHRoZSBzYW1lIGZpZ3VyZSwgYXQgdGhlIGV4cGVuc2Ugb2YgeW91ciBjb21wcmVzc2lvbiByYXRpby4gIEluCiAgc2hvcnQsIGlmIHlvdXIgbWFjaGluZSBpcyBsb3cgb24gbWVtb3J5ICg4IG1lZ2FieXRlcyBvciBsZXNzKSwKICB1c2UgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tczwvY29kZT4gZm9yIGV2ZXJ5dGhpbmcuICBTZWUKICA8YSBocmVmPSIjbWVtb3J5LW1hbmFnZW1lbnQiPk1FTU9SWSBNQU5BR0VNRU5UPC9hPiBiZWxvdy48L3A+CjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tcSAtLXF1aWV0PC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+U3VwcHJlc3Mgbm9uLWVzc2VudGlhbCB3YXJuaW5nIG1lc3NhZ2VzLgogIE1lc3NhZ2VzIHBlcnRhaW5pbmcgdG8gSS9PIGVycm9ycyBhbmQgb3RoZXIgY3JpdGljYWwgZXZlbnRzCiAgd2lsbCBub3QgYmUgc3VwcHJlc3NlZC48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi12IC0tdmVyYm9zZTwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlZlcmJvc2UgbW9kZSAtLSBzaG93IHRoZSBjb21wcmVzc2lvbiByYXRpbyBmb3IKICBlYWNoIGZpbGUgcHJvY2Vzc2VkLiAgRnVydGhlcgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXY8L2NvZGU+J3MgaW5jcmVhc2UgdGhlIHZlcmJvc2l0eQogIGxldmVsLCBzcGV3aW5nIG91dCBsb3RzIG9mIGluZm9ybWF0aW9uIHdoaWNoIGlzIHByaW1hcmlseSBvZgogIGludGVyZXN0IGZvciBkaWFnbm9zdGljIHB1cnBvc2VzLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LUwgLS1saWNlbnNlIC1WIC0tdmVyc2lvbjwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkRpc3BsYXkgdGhlIHNvZnR3YXJlIHZlcnNpb24sIGxpY2Vuc2UgdGVybXMgYW5kCiAgY29uZGl0aW9ucy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0xPC9jb2RlPiAob3IKIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1mYXN0PC9jb2RlPikgdG8KIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LTk8L2NvZGU+IChvcgogPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tYmVzdDwvY29kZT4pPC9zcGFuPjwvZHQ+CjxkZD48cD5TZXQgdGhlIGJsb2NrIHNpemUgdG8gMTAwIGssIDIwMCBrIC4uLiAgOTAwIGsKICB3aGVuIGNvbXByZXNzaW5nLiAgSGFzIG5vIGVmZmVjdCB3aGVuIGRlY29tcHJlc3NpbmcuICBTZWUgPGEgaHJlZj0iI21lbW9yeS1tYW5hZ2VtZW50Ij5NRU1PUlkgTUFOQUdFTUVOVDwvYT4gYmVsb3cuICBUaGUKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tZmFzdDwvY29kZT4gYW5kCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLWJlc3Q8L2NvZGU+IGFsaWFzZXMgYXJlIHByaW1hcmlseQogIGZvciBHTlUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nemlwPC9jb2RlPiBjb21wYXRpYmlsaXR5LgogIEluIHBhcnRpY3VsYXIsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1mYXN0PC9jb2RlPiBkb2Vzbid0CiAgbWFrZSB0aGluZ3Mgc2lnbmlmaWNhbnRseSBmYXN0ZXIuICBBbmQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi0tYmVzdDwvY29kZT4gbWVyZWx5IHNlbGVjdHMgdGhlCiAgZGVmYXVsdCBiZWhhdmlvdXIuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tLTwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlRyZWF0cyBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgYXMgZmlsZSBuYW1lcywKICBldmVuIGlmIHRoZXkgc3RhcnQgd2l0aCBhIGRhc2guICBUaGlzIGlzIHNvIHlvdSBjYW4gaGFuZGxlCiAgZmlsZXMgd2l0aCBuYW1lcyBiZWdpbm5pbmcgd2l0aCBhIGRhc2gsIGZvciBleGFtcGxlOgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIgLS0KICAtbXlmaWxlbmFtZTwvY29kZT4uPC9wPjwvZGQ+CjxkdD4KPHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1yZXBldGl0aXZlLWZhc3Q8L2NvZGU+LCA8L3NwYW4+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LS1yZXBldGl0aXZlLWJlc3Q8L2NvZGU+PC9zcGFuPgo8L2R0Pgo8ZGQ+PHA+VGhlc2UgZmxhZ3MgYXJlIHJlZHVuZGFudCBpbiB2ZXJzaW9ucyAwLjkuNSBhbmQKICBhYm92ZS4gIFRoZXkgcHJvdmlkZWQgc29tZSBjb2Fyc2UgY29udHJvbCBvdmVyIHRoZSBiZWhhdmlvdXIgb2YKICB0aGUgc29ydGluZyBhbGdvcml0aG0gaW4gZWFybGllciB2ZXJzaW9ucywgd2hpY2ggd2FzIHNvbWV0aW1lcwogIHVzZWZ1bC4gIDAuOS41IGFuZCBhYm92ZSBoYXZlIGFuIGltcHJvdmVkIGFsZ29yaXRobSB3aGljaAogIHJlbmRlcnMgdGhlc2UgZmxhZ3MgaXJyZWxldmFudC48L3A+PC9kZD4KPC9kbD48L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9Im1lbW9yeS1tYW5hZ2VtZW50Ij48L2E+Mi41LqBNRU1PUlkgTUFOQUdFTUVOVDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGNvbXByZXNzZXMgbGFyZ2UKZmlsZXMgaW4gYmxvY2tzLiAgVGhlIGJsb2NrIHNpemUgYWZmZWN0cyBib3RoIHRoZSBjb21wcmVzc2lvbgpyYXRpbyBhY2hpZXZlZCwgYW5kIHRoZSBhbW91bnQgb2YgbWVtb3J5IG5lZWRlZCBmb3IgY29tcHJlc3Npb24KYW5kIGRlY29tcHJlc3Npb24uICBUaGUgZmxhZ3MgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tMTwvY29kZT4KdGhyb3VnaCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi05PC9jb2RlPiBzcGVjaWZ5IHRoZSBibG9jawpzaXplIHRvIGJlIDEwMCwwMDAgYnl0ZXMgdGhyb3VnaCA5MDAsMDAwIGJ5dGVzICh0aGUgZGVmYXVsdCkKcmVzcGVjdGl2ZWx5LiAgQXQgZGVjb21wcmVzc2lvbiB0aW1lLCB0aGUgYmxvY2sgc2l6ZSB1c2VkIGZvcgpjb21wcmVzc2lvbiBpcyByZWFkIGZyb20gdGhlIGhlYWRlciBvZiB0aGUgY29tcHJlc3NlZCBmaWxlLCBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiB0aGVuIGFsbG9jYXRlcyBpdHNlbGYKanVzdCBlbm91Z2ggbWVtb3J5IHRvIGRlY29tcHJlc3MgdGhlIGZpbGUuICBTaW5jZSBibG9jayBzaXplcyBhcmUKc3RvcmVkIGluIGNvbXByZXNzZWQgZmlsZXMsIGl0IGZvbGxvd3MgdGhhdCB0aGUgZmxhZ3MKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tMTwvY29kZT4gdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tOTwvY29kZT4gYXJlIGlycmVsZXZhbnQgdG8gYW5kIHNvCmlnbm9yZWQgZHVyaW5nIGRlY29tcHJlc3Npb24uPC9wPgo8cD5Db21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiByZXF1aXJlbWVudHMsIGluIGJ5dGVzLCBjYW4gYmUKZXN0aW1hdGVkIGFzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkNvbXByZXNzaW9uOiAgIDQwMGsgKyAoIDggeCBibG9jayBzaXplICkKCkRlY29tcHJlc3Npb246IDEwMGsgKyAoIDQgeCBibG9jayBzaXplICksIG9yCiAgICAgICAgICAgICAgIDEwMGsgKyAoIDIuNSB4IGJsb2NrIHNpemUgKTwvcHJlPgo8cD5MYXJnZXIgYmxvY2sgc2l6ZXMgZ2l2ZSByYXBpZGx5IGRpbWluaXNoaW5nIG1hcmdpbmFsCnJldHVybnMuICBNb3N0IG9mIHRoZSBjb21wcmVzc2lvbiBjb21lcyBmcm9tIHRoZSBmaXJzdCB0d28gb3IKdGhyZWUgaHVuZHJlZCBrIG9mIGJsb2NrIHNpemUsIGEgZmFjdCB3b3J0aCBiZWFyaW5nIGluIG1pbmQgd2hlbgp1c2luZyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBvbiBzbWFsbCBtYWNoaW5lcy4KSXQgaXMgYWxzbyBpbXBvcnRhbnQgdG8gYXBwcmVjaWF0ZSB0aGF0IHRoZSBkZWNvbXByZXNzaW9uIG1lbW9yeQpyZXF1aXJlbWVudCBpcyBzZXQgYXQgY29tcHJlc3Npb24gdGltZSBieSB0aGUgY2hvaWNlIG9mIGJsb2NrCnNpemUuPC9wPgo8cD5Gb3IgZmlsZXMgY29tcHJlc3NlZCB3aXRoIHRoZSBkZWZhdWx0IDkwMGsgYmxvY2sgc2l6ZSwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiB3aWxsIHJlcXVpcmUgYWJvdXQgMzcwMAprYnl0ZXMgdG8gZGVjb21wcmVzcy4gIFRvIHN1cHBvcnQgZGVjb21wcmVzc2lvbiBvZiBhbnkgZmlsZSBvbiBhCjQgbWVnYWJ5dGUgbWFjaGluZSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idW56aXAyPC9jb2RlPiBoYXMKYW4gb3B0aW9uIHRvIGRlY29tcHJlc3MgdXNpbmcgYXBwcm94aW1hdGVseSBoYWxmIHRoaXMgYW1vdW50IG9mCm1lbW9yeSwgYWJvdXQgMjMwMCBrYnl0ZXMuICBEZWNvbXByZXNzaW9uIHNwZWVkIGlzIGFsc28gaGFsdmVkLApzbyB5b3Ugc2hvdWxkIHVzZSB0aGlzIG9wdGlvbiBvbmx5IHdoZXJlIG5lY2Vzc2FyeS4gIFRoZSByZWxldmFudApmbGFnIGlzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LXM8L2NvZGU+LjwvcD4KPHA+SW4gZ2VuZXJhbCwgdHJ5IGFuZCB1c2UgdGhlIGxhcmdlc3QgYmxvY2sgc2l6ZSBtZW1vcnkKY29uc3RyYWludHMgYWxsb3csIHNpbmNlIHRoYXQgbWF4aW1pc2VzIHRoZSBjb21wcmVzc2lvbiBhY2hpZXZlZC4KQ29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gc3BlZWQgYXJlIHZpcnR1YWxseSB1bmFmZmVjdGVkIGJ5CmJsb2NrIHNpemUuPC9wPgo8cD5Bbm90aGVyIHNpZ25pZmljYW50IHBvaW50IGFwcGxpZXMgdG8gZmlsZXMgd2hpY2ggZml0IGluIGEKc2luZ2xlIGJsb2NrIC0tIHRoYXQgbWVhbnMgbW9zdCBmaWxlcyB5b3UnZCBlbmNvdW50ZXIgdXNpbmcgYQpsYXJnZSBibG9jayBzaXplLiAgVGhlIGFtb3VudCBvZiByZWFsIG1lbW9yeSB0b3VjaGVkIGlzCnByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgZmlsZSwgc2luY2UgdGhlIGZpbGUgaXMgc21hbGxlcgp0aGFuIGEgYmxvY2suICBGb3IgZXhhbXBsZSwgY29tcHJlc3NpbmcgYSBmaWxlIDIwLDAwMCBieXRlcyBsb25nCndpdGggdGhlIGZsYWcgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tOTwvY29kZT4gd2lsbCBjYXVzZSB0aGUKY29tcHJlc3NvciB0byBhbGxvY2F0ZSBhcm91bmQgNzYwMGsgb2YgbWVtb3J5LCBidXQgb25seSB0b3VjaAo0MDBrICsgMjAwMDAgKiA4ID0gNTYwIGtieXRlcyBvZiBpdC4gIFNpbWlsYXJseSwgdGhlIGRlY29tcHJlc3Nvcgp3aWxsIGFsbG9jYXRlIDM3MDBrIGJ1dCBvbmx5IHRvdWNoIDEwMGsgKyAyMDAwMCAqIDQgPSAxODAKa2J5dGVzLjwvcD4KPHA+SGVyZSBpcyBhIHRhYmxlIHdoaWNoIHN1bW1hcmlzZXMgdGhlIG1heGltdW0gbWVtb3J5IHVzYWdlCmZvciBkaWZmZXJlbnQgYmxvY2sgc2l6ZXMuICBBbHNvIHJlY29yZGVkIGlzIHRoZSB0b3RhbCBjb21wcmVzc2VkCnNpemUgZm9yIDE0IGZpbGVzIG9mIHRoZSBDYWxnYXJ5IFRleHQgQ29tcHJlc3Npb24gQ29ycHVzCnRvdGFsbGluZyAzLDE0MSw2MjIgYnl0ZXMuICBUaGlzIGNvbHVtbiBnaXZlcyBzb21lIGZlZWwgZm9yIGhvdwpjb21wcmVzc2lvbiB2YXJpZXMgd2l0aCBibG9jayBzaXplLiAgVGhlc2UgZmlndXJlcyB0ZW5kIHRvCnVuZGVyc3RhdGUgdGhlIGFkdmFudGFnZSBvZiBsYXJnZXIgYmxvY2sgc2l6ZXMgZm9yIGxhcmdlciBmaWxlcywKc2luY2UgdGhlIENvcnB1cyBpcyBkb21pbmF0ZWQgYnkgc21hbGxlciBmaWxlcy48L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gICAgICAgIENvbXByZXNzICAgRGVjb21wcmVzcyAgIERlY29tcHJlc3MgICBDb3JwdXMKRmxhZyAgICAgdXNhZ2UgICAgICB1c2FnZSAgICAgICAtcyB1c2FnZSAgICAgU2l6ZQoKIC0xICAgICAgMTIwMGsgICAgICAgNTAwayAgICAgICAgIDM1MGsgICAgICA5MTQ3MDQKIC0yICAgICAgMjAwMGsgICAgICAgOTAwayAgICAgICAgIDYwMGsgICAgICA4Nzc3MDMKIC0zICAgICAgMjgwMGsgICAgICAxMzAwayAgICAgICAgIDg1MGsgICAgICA4NjAzMzgKIC00ICAgICAgMzYwMGsgICAgICAxNzAwayAgICAgICAgMTEwMGsgICAgICA4NDY4OTkKIC01ICAgICAgNDQwMGsgICAgICAyMTAwayAgICAgICAgMTM1MGsgICAgICA4NDUxNjAKIC02ICAgICAgNTIwMGsgICAgICAyNTAwayAgICAgICAgMTYwMGsgICAgICA4Mzg2MjYKIC03ICAgICAgNjEwMGsgICAgICAyOTAwayAgICAgICAgMTg1MGsgICAgICA4MzQwOTYKIC04ICAgICAgNjgwMGsgICAgICAzMzAwayAgICAgICAgMjEwMGsgICAgICA4Mjg2NDIKIC05ICAgICAgNzYwMGsgICAgICAzNzAwayAgICAgICAgMjM1MGsgICAgICA4Mjg2NDI8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InJlY292ZXJpbmciPjwvYT4yLjYuoFJFQ09WRVJJTkcgREFUQSBGUk9NIERBTUFHRUQgRklMRVM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBjb21wcmVzc2VzIGZpbGVzIGluCmJsb2NrcywgdXN1YWxseSA5MDBrYnl0ZXMgbG9uZy4gIEVhY2ggYmxvY2sgaXMgaGFuZGxlZAppbmRlcGVuZGVudGx5LiAgSWYgYSBtZWRpYSBvciB0cmFuc21pc3Npb24gZXJyb3IgY2F1c2VzIGEKbXVsdGktYmxvY2sgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiBmaWxlIHRvIGJlY29tZQpkYW1hZ2VkLCBpdCBtYXkgYmUgcG9zc2libGUgdG8gcmVjb3ZlciBkYXRhIGZyb20gdGhlIHVuZGFtYWdlZApibG9ja3MgaW4gdGhlIGZpbGUuPC9wPgo8cD5UaGUgY29tcHJlc3NlZCByZXByZXNlbnRhdGlvbiBvZiBlYWNoIGJsb2NrIGlzIGRlbGltaXRlZCBieQphIDQ4LWJpdCBwYXR0ZXJuLCB3aGljaCBtYWtlcyBpdCBwb3NzaWJsZSB0byBmaW5kIHRoZSBibG9jawpib3VuZGFyaWVzIHdpdGggcmVhc29uYWJsZSBjZXJ0YWludHkuICBFYWNoIGJsb2NrIGFsc28gY2FycmllcwppdHMgb3duIDMyLWJpdCBDUkMsIHNvIGRhbWFnZWQgYmxvY2tzIGNhbiBiZSBkaXN0aW5ndWlzaGVkIGZyb20KdW5kYW1hZ2VkIG9uZXMuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAycmVjb3ZlcjwvY29kZT4gaXMgYSBzaW1wbGUKcHJvZ3JhbSB3aG9zZSBwdXJwb3NlIGlzIHRvIHNlYXJjaCBmb3IgYmxvY2tzIGluCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LmJ6MjwvY29kZT4gZmlsZXMsIGFuZCB3cml0ZSBlYWNoIGJsb2NrCm91dCBpbnRvIGl0cyBvd24gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiBmaWxlLiAgWW91CmNhbiB0aGVuIHVzZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC10PC9jb2RlPiB0byB0ZXN0CnRoZSBpbnRlZ3JpdHkgb2YgdGhlIHJlc3VsdGluZyBmaWxlcywgYW5kIGRlY29tcHJlc3MgdGhvc2Ugd2hpY2gKYXJlIHVuZGFtYWdlZC48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDJyZWNvdmVyPC9jb2RlPiB0YWtlcyBhCnNpbmdsZSBhcmd1bWVudCwgdGhlIG5hbWUgb2YgdGhlIGRhbWFnZWQgZmlsZSwgYW5kIHdyaXRlcyBhCm51bWJlciBvZiBmaWxlcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnJlYzAwMDFmaWxlLmJ6MjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+cmVjMDAwMmZpbGUuYnoyPC9jb2RlPiwgZXRjLCBjb250YWluaW5nCnRoZSBleHRyYWN0ZWQgYmxvY2tzLiAgVGhlIG91dHB1dCBmaWxlbmFtZXMgYXJlIGRlc2lnbmVkIHNvIHRoYXQKdGhlIHVzZSBvZiB3aWxkY2FyZHMgaW4gc3Vic2VxdWVudCBwcm9jZXNzaW5nIC0tIGZvciBleGFtcGxlLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyIC1kYyByZWMqZmlsZS5iejIgJmd0OwpyZWNvdmVyZWRfZGF0YTwvY29kZT4gLS0gbGlzdHMgdGhlIGZpbGVzIGluIHRoZSBjb3JyZWN0Cm9yZGVyLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IHNob3VsZCBiZSBvZgptb3N0IHVzZSBkZWFsaW5nIHdpdGggbGFyZ2UgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPgpmaWxlcywgYXMgdGhlc2Ugd2lsbCBjb250YWluIG1hbnkgYmxvY2tzLiAgSXQgaXMgY2xlYXJseSBmdXRpbGUKdG8gdXNlIGl0IG9uIGRhbWFnZWQgc2luZ2xlLWJsb2NrIGZpbGVzLCBzaW5jZSBhIGRhbWFnZWQgYmxvY2sKY2Fubm90IGJlIHJlY292ZXJlZC4gIElmIHlvdSB3aXNoIHRvIG1pbmltaXNlIGFueSBwb3RlbnRpYWwgZGF0YQpsb3NzIHRocm91Z2ggbWVkaWEgb3IgdHJhbnNtaXNzaW9uIGVycm9ycywgeW91IG1pZ2h0IGNvbnNpZGVyCmNvbXByZXNzaW5nIHdpdGggYSBzbWFsbGVyIGJsb2NrIHNpemUuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icGVyZm9ybWFuY2UiPjwvYT4yLjcuoFBFUkZPUk1BTkNFIE5PVEVTPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhlIHNvcnRpbmcgcGhhc2Ugb2YgY29tcHJlc3Npb24gZ2F0aGVycyB0b2dldGhlciBzaW1pbGFyCnN0cmluZ3MgaW4gdGhlIGZpbGUuICBCZWNhdXNlIG9mIHRoaXMsIGZpbGVzIGNvbnRhaW5pbmcgdmVyeSBsb25nCnJ1bnMgb2YgcmVwZWF0ZWQgc3ltYm9scywgbGlrZSAiYWFiYWFiYWFiYWFiIC4uLiIgIChyZXBlYXRlZApzZXZlcmFsIGh1bmRyZWQgdGltZXMpIG1heSBjb21wcmVzcyBtb3JlIHNsb3dseSB0aGFuIG5vcm1hbC4KVmVyc2lvbnMgMC45LjUgYW5kIGFib3ZlIGZhcmUgbXVjaCBiZXR0ZXIgdGhhbiBwcmV2aW91cyB2ZXJzaW9ucwppbiB0aGlzIHJlc3BlY3QuICBUaGUgcmF0aW8gYmV0d2VlbiB3b3JzdC1jYXNlIGFuZCBhdmVyYWdlLWNhc2UKY29tcHJlc3Npb24gdGltZSBpcyBpbiB0aGUgcmVnaW9uIG9mIDEwOjEuICBGb3IgcHJldmlvdXMKdmVyc2lvbnMsIHRoaXMgZmlndXJlIHdhcyBtb3JlIGxpa2UgMTAwOjEuICBZb3UgY2FuIHVzZSB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tdnZ2djwvY29kZT4gb3B0aW9uIHRvIG1vbml0b3IgcHJvZ3Jlc3MKaW4gZ3JlYXQgZGV0YWlsLCBpZiB5b3Ugd2FudC48L3A+CjxwPkRlY29tcHJlc3Npb24gc3BlZWQgaXMgdW5hZmZlY3RlZCBieSB0aGVzZQpwaGVub21lbmEuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB1c3VhbGx5IGFsbG9jYXRlcwpzZXZlcmFsIG1lZ2FieXRlcyBvZiBtZW1vcnkgdG8gb3BlcmF0ZSBpbiwgYW5kIHRoZW4gY2hhcmdlcyBhbGwKb3ZlciBpdCBpbiBhIGZhaXJseSByYW5kb20gZmFzaGlvbi4gIFRoaXMgbWVhbnMgdGhhdCBwZXJmb3JtYW5jZSwKYm90aCBmb3IgY29tcHJlc3NpbmcgYW5kIGRlY29tcHJlc3NpbmcsIGlzIGxhcmdlbHkgZGV0ZXJtaW5lZCBieQp0aGUgc3BlZWQgYXQgd2hpY2ggeW91ciBtYWNoaW5lIGNhbiBzZXJ2aWNlIGNhY2hlIG1pc3Nlcy4KQmVjYXVzZSBvZiB0aGlzLCBzbWFsbCBjaGFuZ2VzIHRvIHRoZSBjb2RlIHRvIHJlZHVjZSB0aGUgbWlzcwpyYXRlIGhhdmUgYmVlbiBvYnNlcnZlZCB0byBnaXZlIGRpc3Byb3BvcnRpb25hdGVseSBsYXJnZQpwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMuICBJIGltYWdpbmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gd2lsbCBwZXJmb3JtIGJlc3Qgb24KbWFjaGluZXMgd2l0aCB2ZXJ5IGxhcmdlIGNhY2hlcy48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJjYXZlYXRzIj48L2E+Mi44LqBDQVZFQVRTPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+SS9PIGVycm9yIG1lc3NhZ2VzIGFyZSBub3QgYXMgaGVscGZ1bCBhcyB0aGV5IGNvdWxkIGJlLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiB0cmllcyBoYXJkIHRvIGRldGVjdCBJL08KZXJyb3JzIGFuZCBleGl0IGNsZWFubHksIGJ1dCB0aGUgZGV0YWlscyBvZiB3aGF0IHRoZSBwcm9ibGVtIGlzCnNvbWV0aW1lcyBzZWVtIHJhdGhlciBtaXNsZWFkaW5nLjwvcD4KPHA+VGhpcyBtYW51YWwgcGFnZSBwZXJ0YWlucyB0byB2ZXJzaW9uIDEuMC41IG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+LiAgQ29tcHJlc3NlZCBkYXRhIGNyZWF0ZWQgYnkKdGhpcyB2ZXJzaW9uIGlzIGVudGlyZWx5IGZvcndhcmRzIGFuZCBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIHRoZQpwcmV2aW91cyBwdWJsaWMgcmVsZWFzZXMsIHZlcnNpb25zIDAuMXBsMiwgMC45LjAgYW5kIDAuOS41LCAxLjAuMCwKMS4wLjEsIDEuMC4yIGFuZCAxLjAuMywgYnV0IHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb246IDAuOS4wIGFuZAphYm92ZSBjYW4gY29ycmVjdGx5IGRlY29tcHJlc3MgbXVsdGlwbGUgY29uY2F0ZW5hdGVkIGNvbXByZXNzZWQgZmlsZXMuCjAuMXBsMiBjYW5ub3QgZG8gdGhpczsgaXQgd2lsbCBzdG9wIGFmdGVyIGRlY29tcHJlc3NpbmcganVzdCB0aGUgZmlyc3QKZmlsZSBpbiB0aGUgc3RyZWFtLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IHZlcnNpb25zCnByaW9yIHRvIDEuMC4yIHVzZWQgMzItYml0IGludGVnZXJzIHRvIHJlcHJlc2VudCBiaXQgcG9zaXRpb25zIGluCmNvbXByZXNzZWQgZmlsZXMsIHNvIGl0IGNvdWxkIG5vdCBoYW5kbGUgY29tcHJlc3NlZCBmaWxlcyBtb3JlCnRoYW4gNTEyIG1lZ2FieXRlcyBsb25nLiAgVmVyc2lvbnMgMS4wLjIgYW5kIGFib3ZlIHVzZSA2NC1iaXQgaW50cwpvbiBzb21lIHBsYXRmb3JtcyB3aGljaCBzdXBwb3J0IHRoZW0gKEdOVSBzdXBwb3J0ZWQgdGFyZ2V0cywgYW5kCldpbmRvd3MpLiBUbyBlc3RhYmxpc2ggd2hldGhlciBvciBub3QKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMnJlY292ZXI8L2NvZGU+IHdhcyBidWlsdCB3aXRoIHN1Y2gKYSBsaW1pdGF0aW9uLCBydW4gaXQgd2l0aG91dCBhcmd1bWVudHMuIEluIGFueSBldmVudCB5b3UgY2FuCmJ1aWxkIHlvdXJzZWxmIGFuIHVubGltaXRlZCB2ZXJzaW9uIGlmIHlvdSBjYW4gcmVjb21waWxlIGl0IHdpdGgKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5NYXliZVVJbnQ2NDwvY29kZT4gc2V0IHRvIGJlIGFuCnVuc2lnbmVkIDY0LWJpdCBpbnRlZ2VyLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImF1dGhvciI+PC9hPjIuOS6gQVVUSE9SPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+SnVsaWFuIFNld2FyZCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5qc2V3YXJkQGJ6aXAub3JnPC9jb2RlPjwvcD4KPHA+VGhlIGlkZWFzIGVtYm9kaWVkIGluCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGFyZSBkdWUgdG8gKGF0IGxlYXN0KSB0aGUKZm9sbG93aW5nIHBlb3BsZTogTWljaGFlbCBCdXJyb3dzIGFuZCBEYXZpZCBXaGVlbGVyIChmb3IgdGhlCmJsb2NrIHNvcnRpbmcgdHJhbnNmb3JtYXRpb24pLCBEYXZpZCBXaGVlbGVyIChhZ2FpbiwgZm9yIHRoZQpIdWZmbWFuIGNvZGVyKSwgUGV0ZXIgRmVud2ljayAoZm9yIHRoZSBzdHJ1Y3R1cmVkIGNvZGluZyBtb2RlbCBpbgp0aGUgb3JpZ2luYWwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwPC9jb2RlPiwgYW5kIG1hbnkKcmVmaW5lbWVudHMpLCBhbmQgQWxpc3RhaXIgTW9mZmF0LCBSYWRmb3JkIE5lYWwgYW5kIElhbiBXaXR0ZW4KKGZvciB0aGUgYXJpdGhtZXRpYyBjb2RlciBpbiB0aGUgb3JpZ2luYWwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwPC9jb2RlPikuICBJIGFtIG11Y2ggaW5kZWJ0ZWQgZm9yCnRoZWlyIGhlbHAsIHN1cHBvcnQgYW5kIGFkdmljZS4gIFNlZSB0aGUgbWFudWFsIGluIHRoZSBzb3VyY2UKZGlzdHJpYnV0aW9uIGZvciBwb2ludGVycyB0byBzb3VyY2VzIG9mIGRvY3VtZW50YXRpb24uICBDaHJpc3RpYW4Kdm9uIFJvcXVlcyBlbmNvdXJhZ2VkIG1lIHRvIGxvb2sgZm9yIGZhc3RlciBzb3J0aW5nIGFsZ29yaXRobXMsCnNvIGFzIHRvIHNwZWVkIHVwIGNvbXByZXNzaW9uLiAgQmVsYSBMdWJraW4gZW5jb3VyYWdlZCBtZSB0bwppbXByb3ZlIHRoZSB3b3JzdC1jYXNlIGNvbXByZXNzaW9uIHBlcmZvcm1hbmNlLiAgCkRvbm5hIFJvYmluc29uIFhNTGlzZWQgdGhlIGRvY3VtZW50YXRpb24uCk1hbnkgcGVvcGxlIHNlbnQKcGF0Y2hlcywgaGVscGVkIHdpdGggcG9ydGFiaWxpdHkgcHJvYmxlbXMsIGxlbnQgbWFjaGluZXMsIGdhdmUKYWR2aWNlIGFuZCB3ZXJlIGdlbmVyYWxseSBoZWxwZnVsLjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjaGFwdGVyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJsaWJwcm9nIj48L2E+My6gClByb2dyYW1taW5nIHdpdGggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4KPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0idG9jIj4KPHA+PGI+VGFibGUgb2YgQ29udGVudHM8L2I+PC9wPgo8ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiN0b3AtbGV2ZWwiPjMuMS4gVG9wLWxldmVsIHN0cnVjdHVyZTwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2xsLXN1bW1hcnkiPjMuMS4xLiBMb3ctbGV2ZWwgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2hsLXN1bW1hcnkiPjMuMS4yLiBIaWdoLWxldmVsIHN1bW1hcnk8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiN1dGlsLWZucy1zdW1tYXJ5Ij4zLjEuMy4gVXRpbGl0eSBmdW5jdGlvbnMgc3VtbWFyeTwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjZXJyLWhhbmRsaW5nIj4zLjIuIEVycm9yIGhhbmRsaW5nPC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjbG93LWxldmVsIj4zLjMuIExvdy1sZXZlbCBpbnRlcmZhY2U8L2E+PC9zcGFuPjwvZHQ+CjxkZD48ZGw+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiemNvbXByZXNzLWluaXQiPjMuMy4xLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekNvbXByZXNzIj4zLjMuMi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekNvbXByZXNzLWVuZCI+My4zLjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpEZWNvbXByZXNzLWluaXQiPjMuMy40LiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6RGVjb21wcmVzcyI+My4zLjUuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiekRlY29tcHJlc3MtZW5kIj4zLjMuNi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzRW5kPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjaGwtaW50ZXJmYWNlIj4zLjQuIEhpZ2gtbGV2ZWwgaW50ZXJmYWNlPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkb3BlbiI+My40LjEuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpyZWFkIj4zLjQuMi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6cmVhZGdldHVudXNlZCI+My40LjMuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNienJlYWRjbG9zZSI+My40LjQuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2J6d3JpdGVvcGVuIj4zLjQuNS4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZU9wZW48L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZSI+My40LjYuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnp3cml0ZWNsb3NlIj4zLjQuNy4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPjwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2VtYmVkIj4zLjQuOC4gSGFuZGxpbmcgZW1iZWRkZWQgY29tcHJlc3NlZCBkYXRhIHN0cmVhbXM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNzdGQtcmR3ciI+My40LjkuIFN0YW5kYXJkIGZpbGUtcmVhZGluZy93cml0aW5nIGNvZGU8L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3V0aWwtZm5zIj4zLjUuIFV0aWxpdHkgZnVuY3Rpb25zPC9hPjwvc3Bhbj48L2R0Pgo8ZGQ+PGRsPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnpidWZmdG9idWZmY29tcHJlc3MiPjMuNS4xLiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNiemJ1ZmZ0b2J1ZmZkZWNvbXByZXNzIj4zLjUuMi4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT48L2E+PC9zcGFuPjwvZHQ+CjwvZGw+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3psaWItY29tcGF0Ij4zLjYuIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+emxpYjwvY29kZT4gY29tcGF0aWJpbGl0eSBmdW5jdGlvbnM8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNzdGRpby1mcmVlIj4zLjcuIFVzaW5nIHRoZSBsaWJyYXJ5IGluIGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT4tZnJlZSBlbnZpcm9ubWVudDwvYT48L3NwYW4+PC9kdD4KPGRkPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI3N0ZGlvLWJ5ZSI+My43LjEuIEdldHRpbmcgcmlkIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c3RkaW88L2NvZGU+PC9hPjwvc3Bhbj48L2R0Pgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjY3JpdGljYWwtZXJyb3IiPjMuNy4yLiBDcml0aWNhbCBlcnJvciBoYW5kbGluZzwvYT48L3NwYW4+PC9kdD4KPC9kbD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjd2luLWRsbCI+My44LiBNYWtpbmcgYSBXaW5kb3dzIERMTDwvYT48L3NwYW4+PC9kdD4KPC9kbD4KPC9kaXY+CjxwPlRoaXMgY2hhcHRlciBkZXNjcmliZXMgdGhlIHByb2dyYW1taW5nIGludGVyZmFjZSB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPi48L3A+CjxwPkZvciBnZW5lcmFsIGJhY2tncm91bmQgaW5mb3JtYXRpb24sIHBhcnRpY3VsYXJseSBhYm91dAptZW1vcnkgdXNlIGFuZCBwZXJmb3JtYW5jZSBhc3BlY3RzLCB5b3UnZCBiZSB3ZWxsIGFkdmlzZWQgdG8gcmVhZAo8YSBocmVmPSIjdXNpbmciPkhvdyB0byB1c2UgYnppcDI8L2E+IGFzIHdlbGwuPC9wPgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJ0b3AtbGV2ZWwiPjwvYT4zLjEuoFRvcC1sZXZlbCBzdHJ1Y3R1cmU8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiBpcyBhIGZsZXhpYmxlCmxpYnJhcnkgZm9yIGNvbXByZXNzaW5nIGFuZCBkZWNvbXByZXNzaW5nIGRhdGEgaW4gdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRhdGEgZm9ybWF0LiAgQWx0aG91Z2gKcGFja2FnZWQgYXMgYSBzaW5nbGUgZW50aXR5LCBpdCBoZWxwcyB0byByZWdhcmQgdGhlIGxpYnJhcnkgYXMKdGhyZWUgc2VwYXJhdGUgcGFydHM6IHRoZSBsb3cgbGV2ZWwgaW50ZXJmYWNlLCBhbmQgdGhlIGhpZ2ggbGV2ZWwKaW50ZXJmYWNlLCBhbmQgc29tZSB1dGlsaXR5IGZ1bmN0aW9ucy48L3A+CjxwPlRoZSBzdHJ1Y3R1cmUgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiemlwMjwvY29kZT4ncyBpbnRlcmZhY2VzIGlzIHNpbWlsYXIKdG8gdGhhdCBvZiBKZWFuLWxvdXAgR2FpbGx5J3MgYW5kIE1hcmsgQWRsZXIncyBleGNlbGxlbnQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij56bGliPC9jb2RlPiBsaWJyYXJ5LjwvcD4KPHA+QWxsIGV4dGVybmFsbHkgdmlzaWJsZSBzeW1ib2xzIGhhdmUgbmFtZXMgYmVnaW5uaW5nCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyXzwvY29kZT4uICBUaGlzIGlzIG5ldyBpbiB2ZXJzaW9uCjEuMC4gIFRoZSBpbnRlbnRpb24gaXMgdG8gbWluaW1pc2UgcG9sbHV0aW9uIG9mIHRoZSBuYW1lc3BhY2VzIG9mCmxpYnJhcnkgY2xpZW50cy48L3A+CjxwPlRvIHVzZSBhbnkgcGFydCBvZiB0aGUgbGlicmFyeSwgeW91IG5lZWQgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4jaW5jbHVkZSAmbHQ7YnpsaWIuaCZndDs8L2NvZGU+CmludG8geW91ciBzb3VyY2VzLjwvcD4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImxsLXN1bW1hcnkiPjwvYT4zLjEuMS6gTG93LWxldmVsIHN1bW1hcnk8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGlzIGludGVyZmFjZSBwcm92aWRlcyBzZXJ2aWNlcyBmb3IgY29tcHJlc3NpbmcgYW5kCmRlY29tcHJlc3NpbmcgZGF0YSBpbiBtZW1vcnkuICBUaGVyZSdzIG5vIHByb3Zpc2lvbiBmb3IgZGVhbGluZwp3aXRoIGZpbGVzLCBzdHJlYW1zIG9yIGFueSBvdGhlciBJL08gbWVjaGFuaXNtcywganVzdCBzdHJhaWdodAptZW1vcnktdG8tbWVtb3J5IHdvcmsuICBJbiBmYWN0LCB0aGlzIHBhcnQgb2YgdGhlIGxpYnJhcnkgY2FuIGJlCmNvbXBpbGVkIHdpdGhvdXQgaW5jbHVzaW9uIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c3RkaW8uaDwvY29kZT4sIHdoaWNoIG1heSBiZSBoZWxwZnVsCmZvciBlbWJlZGRlZCBhcHBsaWNhdGlvbnMuPC9wPgo8cD5UaGUgbG93LWxldmVsIHBhcnQgb2YgdGhlIGxpYnJhcnkgaGFzIG5vIGdsb2JhbCB2YXJpYWJsZXMKYW5kIGlzIHRoZXJlZm9yZSB0aHJlYWQtc2FmZS48L3A+CjxwPlNpeCByb3V0aW5lcyBtYWtlIHVwIHRoZSBsb3cgbGV2ZWwgaW50ZXJmYWNlOgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LCBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0VuZDwvY29kZT4gZm9yCmNvbXByZXNzaW9uLCBhbmQgYSBjb3JyZXNwb25kaW5nIHRyaW8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4gZm9yCmRlY29tcHJlc3Npb24uICBUaGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qSW5pdDwvY29kZT4KZnVuY3Rpb25zIGFsbG9jYXRlIG1lbW9yeSBmb3IgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBhbmQgZG8Kb3RoZXIgaW5pdGlhbGlzYXRpb25zLCB3aGlsc3QgdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KkVuZDwvY29kZT4gZnVuY3Rpb25zIGNsb3NlIGRvd24Kb3BlcmF0aW9ucyBhbmQgcmVsZWFzZSBtZW1vcnkuPC9wPgo8cD5UaGUgcmVhbCB3b3JrIGlzIGRvbmUgYnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4uICBUaGVzZQpjb21wcmVzcyBhbmQgZGVjb21wcmVzcyBkYXRhIGZyb20gYSB1c2VyLXN1cHBsaWVkIGlucHV0IGJ1ZmZlciB0bwphIHVzZXItc3VwcGxpZWQgb3V0cHV0IGJ1ZmZlci4gIFRoZXNlIGJ1ZmZlcnMgY2FuIGJlIGFueSBzaXplOwphcmJpdHJhcnkgcXVhbnRpdGllcyBvZiBkYXRhIGFyZSBoYW5kbGVkIGJ5IG1ha2luZyByZXBlYXRlZCBjYWxscwp0byB0aGVzZSBmdW5jdGlvbnMuICBUaGlzIGlzIGEgZmxleGlibGUgbWVjaGFuaXNtIGFsbG93aW5nIGEKY29uc3VtZXItcHVsbCBzdHlsZSBvZiBhY3Rpdml0eSwgb3IgcHJvZHVjZXItcHVzaCwgb3IgYSBtaXh0dXJlCm9mIGJvdGguPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImhsLXN1bW1hcnkiPjwvYT4zLjEuMi6gSGlnaC1sZXZlbCBzdW1tYXJ5PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhpcyBpbnRlcmZhY2UgcHJvdmlkZXMgc29tZSBoYW5keSB3cmFwcGVycyBhcm91bmQgdGhlCmxvdy1sZXZlbCBpbnRlcmZhY2UgdG8gZmFjaWxpdGF0ZSByZWFkaW5nIGFuZCB3cml0aW5nCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGZvcm1hdCBmaWxlcwooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4uYnoyPC9jb2RlPiBmaWxlcykuICBUaGUgcm91dGluZXMKcHJvdmlkZSBob29rcyB0byBmYWNpbGl0YXRlIHJlYWRpbmcgZmlsZXMgaW4gd2hpY2ggdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRhdGEgc3RyZWFtIGlzIGVtYmVkZGVkCndpdGhpbiBzb21lIGxhcmdlci1zY2FsZSBmaWxlIHN0cnVjdHVyZSwgb3Igd2hlcmUgdGhlcmUgYXJlCm11bHRpcGxlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGRhdGEgc3RyZWFtcwpjb25jYXRlbmF0ZWQgZW5kLXRvLWVuZC48L3A+CjxwPkZvciByZWFkaW5nIGZpbGVzLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+IGFuZCAKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb2RlPiBhcmUKc3VwcGxpZWQuICBGb3Igd3JpdGluZyBmaWxlcywKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZU9wZW48L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUZpbmlzaDwvY29kZT4gYXJlCmF2YWlsYWJsZS48L3A+CjxwPkFzIHdpdGggdGhlIGxvdy1sZXZlbCBsaWJyYXJ5LCBubyBnbG9iYWwgdmFyaWFibGVzIGFyZSB1c2VkCnNvIHRoZSBsaWJyYXJ5IGlzIHBlciBzZSB0aHJlYWQtc2FmZS4gIEhvd2V2ZXIsIGlmIEkvTyBlcnJvcnMKb2NjdXIgd2hpbHN0IHJlYWRpbmcgb3Igd3JpdGluZyB0aGUgdW5kZXJseWluZyBjb21wcmVzc2VkIGZpbGVzLAp5b3UgbWF5IGhhdmUgdG8gY29uc3VsdCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmVycm5vPC9jb2RlPiB0bwpkZXRlcm1pbmUgdGhlIGNhdXNlIG9mIHRoZSBlcnJvci4gIEluIHRoYXQgY2FzZSwgeW91J2QgbmVlZCBhIEMKbGlicmFyeSB3aGljaCBjb3JyZWN0bHkgc3VwcG9ydHMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5lcnJubzwvY29kZT4gaW4gYSBtdWx0aXRocmVhZGVkCmVudmlyb25tZW50LjwvcD4KPHA+VG8gbWFrZSB0aGUgbGlicmFyeSBhIGxpdHRsZSBzaW1wbGVyIGFuZCBtb3JlIHBvcnRhYmxlLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZU9wZW48L2NvZGU+IHJlcXVpcmUgeW91IHRvCnBhc3MgdGhlbSBmaWxlIGhhbmRsZXMgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+RklMRSo8L2NvZGU+cykKd2hpY2ggaGF2ZSBwcmV2aW91c2x5IGJlZW4gb3BlbmVkIGZvciByZWFkaW5nIG9yIHdyaXRpbmcKcmVzcGVjdGl2ZWx5LiAgVGhhdCBhdm9pZHMgcG9ydGFiaWxpdHkgcHJvYmxlbXMgYXNzb2NpYXRlZCB3aXRoCmZpbGUgb3BlcmF0aW9ucyBhbmQgZmlsZSBhdHRyaWJ1dGVzLCB3aGlsc3Qgbm90IGJlaW5nIG11Y2ggb2YgYW4KaW1wb3NpdGlvbiBvbiB0aGUgcHJvZ3JhbW1lci48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRpbC1mbnMtc3VtbWFyeSI+PC9hPjMuMS4zLqBVdGlsaXR5IGZ1bmN0aW9ucyBzdW1tYXJ5PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+Rm9yIHZlcnkgc2ltcGxlIG5lZWRzLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+IGFyZQpwcm92aWRlZC4gIFRoZXNlIGNvbXByZXNzIGRhdGEgaW4gbWVtb3J5IGZyb20gb25lIGJ1ZmZlciB0bwphbm90aGVyIGJ1ZmZlciBpbiBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsLiAgWW91IHNob3VsZCBhc3Nlc3MKd2hldGhlciB0aGVzZSBmdW5jdGlvbnMgZnVsZmlsbCB5b3VyIG1lbW9yeS10by1tZW1vcnkKY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiByZXF1aXJlbWVudHMgYmVmb3JlIGludmVzdGluZyBlZmZvcnQgaW4KdW5kZXJzdGFuZGluZyB0aGUgbW9yZSBnZW5lcmFsIGJ1dCBtb3JlIGNvbXBsZXggbG93LWxldmVsCmludGVyZmFjZS48L3A+CjxwPllvc2hpb2thIFRzdW5lbwooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50c3VuZW9AcnIuaWlqNHUub3IuanA8L2NvZGU+KSBoYXMKY29udHJpYnV0ZWQgc29tZSBmdW5jdGlvbnMgdG8gZ2l2ZSBiZXR0ZXIKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij56bGliPC9jb2RlPiBjb21wYXRpYmlsaXR5LiAgVGhlc2UKZnVuY3Rpb25zIGFyZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iem9wZW48L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ienJlYWQ8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iendyaXRlPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpmbHVzaDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Y2xvc2U8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemVycm9yPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpsaWJWZXJzaW9uPC9jb2RlPi4gIFlvdSBtYXkgZmluZAp0aGVzZSBmdW5jdGlvbnMgbW9yZSBjb252ZW5pZW50IGZvciBzaW1wbGUgZmlsZSByZWFkaW5nIGFuZAp3cml0aW5nLCB0aGFuIHRob3NlIGluIHRoZSBoaWdoLWxldmVsIGludGVyZmFjZS4gIFRoZXNlIGZ1bmN0aW9ucwphcmUgbm90ICh5ZXQpIG9mZmljaWFsbHkgcGFydCBvZiB0aGUgbGlicmFyeSwgYW5kIGFyZSBtaW5pbWFsbHkKZG9jdW1lbnRlZCBoZXJlLiAgSWYgdGhleSBicmVhaywgeW91IGdldCB0byBrZWVwIGFsbCB0aGUgcGllY2VzLgpJIGhvcGUgdG8gZG9jdW1lbnQgdGhlbSBwcm9wZXJseSB3aGVuIHRpbWUgcGVybWl0cy48L3A+CjxwPllvc2hpb2thIGFsc28gY29udHJpYnV0ZWQgbW9kaWZpY2F0aW9ucyB0byBhbGxvdyB0aGUKbGlicmFyeSB0byBiZSBidWlsdCBhcyBhIFdpbmRvd3MgRExMLjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJlcnItaGFuZGxpbmciPjwvYT4zLjIuoEVycm9yIGhhbmRsaW5nPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+VGhlIGxpYnJhcnkgaXMgZGVzaWduZWQgdG8gcmVjb3ZlciBjbGVhbmx5IGluIGFsbApzaXR1YXRpb25zLCBpbmNsdWRpbmcgdGhlIHdvcnN0LWNhc2Ugc2l0dWF0aW9uIG9mIGRlY29tcHJlc3NpbmcKcmFuZG9tIGRhdGEuICBJJ20gbm90IDEwMCUgc3VyZSB0aGF0IGl0IGNhbiBhbHdheXMgZG8gdGhpcywgc28KeW91IG1pZ2h0IHdhbnQgdG8gYWRkIGEgc2lnbmFsIGhhbmRsZXIgdG8gY2F0Y2ggc2VnbWVudGF0aW9uCnZpb2xhdGlvbnMgZHVyaW5nIGRlY29tcHJlc3Npb24gaWYgeW91IGFyZSBmZWVsaW5nIGVzcGVjaWFsbHkKcGFyYW5vaWQuICBJIHdvdWxkIGJlIGludGVyZXN0ZWQgaW4gaGVhcmluZyBtb3JlIGFib3V0IHRoZQpyb2J1c3RuZXNzIG9mIHRoZSBsaWJyYXJ5IHRvIGNvcnJ1cHRlZCBjb21wcmVzc2VkIGRhdGEuPC9wPgo8cD5WZXJzaW9uIDEuMC4zIG1vcmUgcm9idXN0IGluIHRoaXMgcmVzcGVjdCB0aGFuIGFueQpwcmV2aW91cyB2ZXJzaW9uLiAgSW52ZXN0aWdhdGlvbnMgd2l0aCBWYWxncmluZCAoYSB0b29sIGZvciBkZXRlY3RpbmcKcHJvYmxlbXMgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCkgaW5kaWNhdGUKdGhhdCwgYXQgbGVhc3QgZm9yIHRoZSBmZXcgZmlsZXMgSSB0ZXN0ZWQsIGFsbCBzaW5nbGUtYml0IGVycm9ycwppbiB0aGUgZGVjb21wcmVzc2VkIGRhdGEgYXJlIGNhdWdodCBwcm9wZXJseSwgd2l0aCBubwpzZWdtZW50YXRpb24gZmF1bHRzLCBubyB1c2VzIG9mIHVuaW5pdGlhbGlzZWQgZGF0YSwgbm8gb3V0IG9mCnJhbmdlIHJlYWRzIG9yIHdyaXRlcywgYW5kIG5vIGluZmluaXRlIGxvb3BpbmcgaW4gdGhlIGRlY29tcHJlc3Nvci4KU28gaXQncyBjZXJ0YWlubHkgcHJldHR5IHJvYnVzdCwgYWx0aG91Z2gKSSB3b3VsZG4ndCBjbGFpbSBpdCB0byBiZSB0b3RhbGx5IGJvbWJwcm9vZi48L3A+CjxwPlRoZSBmaWxlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpsaWIuaDwvY29kZT4gY29udGFpbnMKYWxsIGRlZmluaXRpb25zIG5lZWRlZCB0byB1c2UgdGhlIGxpYnJhcnkuICBJbiBwYXJ0aWN1bGFyLCB5b3UKc2hvdWxkIGRlZmluaXRlbHkgbm90IGluY2x1ZGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemxpYl9wcml2YXRlLmg8L2NvZGU+LjwvcD4KPHA+SW4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemxpYi5oPC9jb2RlPiwgdGhlIHZhcmlvdXMKcmV0dXJuIHZhbHVlcyBhcmUgZGVmaW5lZC4gIFRoZSBmb2xsb3dpbmcgbGlzdCBpcyBub3QgaW50ZW5kZWQgYXMKYW4gZXhoYXVzdGl2ZSBkZXNjcmlwdGlvbiBvZiB0aGUgY2lyY3Vtc3RhbmNlcyBpbiB3aGljaCBhIGdpdmVuCnZhbHVlIG1heSBiZSByZXR1cm5lZCAtLSB0aG9zZSBkZXNjcmlwdGlvbnMgYXJlIGdpdmVuIGxhdGVyLgpSYXRoZXIsIGl0IGlzIGludGVuZGVkIHRvIGNvbnZleSB0aGUgcm91Z2ggbWVhbmluZyBvZiBlYWNoIHJldHVybgp2YWx1ZS4gIFRoZSBmaXJzdCBmaXZlIGFjdGlvbnMgYXJlIG5vcm1hbCBhbmQgbm90IGludGVuZGVkIHRvCmRlbm90ZSBhbiBlcnJvciBzaXR1YXRpb24uPC9wPgo8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+VGhlIHJlcXVlc3RlZCBhY3Rpb24gd2FzIGNvbXBsZXRlZAogICBzdWNjZXNzZnVsbHkuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9SVU5fT0ssIEJaX0ZMVVNIX09LLAogICAgQlpfRklOSVNIX09LPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+SW4gCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LCB0aGUgcmVxdWVzdGVkCiAgIGZsdXNoL2ZpbmlzaC9ub3RoaW5nLXNwZWNpYWwgYWN0aW9uIHdhcyBjb21wbGV0ZWQKICAgc3VjY2Vzc2Z1bGx5LjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkNvbXByZXNzaW9uIG9mIGRhdGEgd2FzIGNvbXBsZXRlZCwgb3IgdGhlCiAgIGxvZ2ljYWwgc3RyZWFtIGVuZCB3YXMgZGV0ZWN0ZWQgZHVyaW5nCiAgIGRlY29tcHJlc3Npb24uPC9wPjwvZGQ+CjwvZGw+PC9kaXY+CjxwPlRoZSBmb2xsb3dpbmcgcmV0dXJuIHZhbHVlcyBpbmRpY2F0ZSBhbiBlcnJvciBvZiBzb21lCmtpbmQuPC9wPgo8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0NPTkZJR19FUlJPUjwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkluZGljYXRlcyB0aGF0IHRoZSBsaWJyYXJ5IGhhcyBiZWVuIGltcHJvcGVybHkKICAgY29tcGlsZWQgb24geW91ciBwbGF0Zm9ybSAtLSBhIG1ham9yIGNvbmZpZ3VyYXRpb24gZXJyb3IuCiAgIFNwZWNpZmljYWxseSwgaXQgbWVhbnMgdGhhdAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNpemVvZihjaGFyKTwvY29kZT4sCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKHNob3J0KTwvY29kZT4gYW5kCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKGludCk8L2NvZGU+IGFyZSBub3QgMSwgMiBhbmQKICAgNCByZXNwZWN0aXZlbHksIGFzIHRoZXkgc2hvdWxkIGJlLiAgTm90ZSB0aGF0IHRoZSBsaWJyYXJ5CiAgIHNob3VsZCBzdGlsbCB3b3JrIHByb3Blcmx5IG9uIDY0LWJpdCBwbGF0Zm9ybXMgd2hpY2ggZm9sbG93CiAgIHRoZSBMUDY0IHByb2dyYW1taW5nIG1vZGVsIC0tIHRoYXQgaXMsIHdoZXJlCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKGxvbmcpPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zaXplb2Yodm9pZCopPC9jb2RlPiBhcmUgOC4gIFVuZGVyCiAgIExQNjQsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c2l6ZW9mKGludCk8L2NvZGU+IGlzIHN0aWxsIDQsCiAgIHNvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+LCB3aGljaCBkb2Vzbid0CiAgIHVzZSB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5sb25nPC9jb2RlPiB0eXBlLCBpcwogICBPSy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+V2hlbiB1c2luZyB0aGUgbGlicmFyeSwgaXQgaXMgaW1wb3J0YW50IHRvIGNhbGwKICAgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgY29ycmVjdCBzZXF1ZW5jZSBhbmQgd2l0aCBkYXRhIHN0cnVjdHVyZXMKICAgKGJ1ZmZlcnMgZXRjKSBpbiB0aGUgY29ycmVjdCBzdGF0ZXMuCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGNoZWNrcyBhcyBtdWNoIGFzIGl0CiAgIGNhbiB0byBlbnN1cmUgdGhpcyBpcyBoYXBwZW5pbmcsIGFuZCByZXR1cm5zCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRVJST1I8L2NvZGU+IGlmIG5vdC4KICAgQ29kZSB3aGljaCBjb21wbGllcyBwcmVjaXNlbHkgd2l0aCB0aGUgZnVuY3Rpb24gc2VtYW50aWNzLCBhcwogICBkZXRhaWxlZCBiZWxvdywgc2hvdWxkIG5ldmVyIHJlY2VpdmUgdGhpcyB2YWx1ZTsgc3VjaCBhbiBldmVudAogICBkZW5vdGVzIGJ1Z2d5IGNvZGUgd2hpY2ggeW91IHNob3VsZAogICBpbnZlc3RpZ2F0ZS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1BBUkFNX0VSUk9SPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgd2hlbiBhIHBhcmFtZXRlciB0byBhIGZ1bmN0aW9uIGNhbGwgaXMKICAgb3V0IG9mIHJhbmdlIG9yIG90aGVyd2lzZSBtYW5pZmVzdGx5IGluY29ycmVjdC4gIEFzIHdpdGgKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4sIHRoaXMKICAgZGVub3RlcyBhIGJ1ZyBpbiB0aGUgY2xpZW50IGNvZGUuICBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbgogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1BBUkFNX0VSUk9SPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4gaXMgYSBiaXQKICAgaGF6eSwgYnV0IHN0aWxsIHdvcnRoIG1ha2luZy48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlJldHVybmVkIHdoZW4gYSByZXF1ZXN0IHRvIGFsbG9jYXRlIG1lbW9yeQogICBmYWlsZWQuICBOb3RlIHRoYXQgdGhlIHF1YW50aXR5IG9mIG1lbW9yeSBuZWVkZWQgdG8gZGVjb21wcmVzcwogICBhIHN0cmVhbSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bnRpbCB0aGUgc3RyZWFtJ3MgaGVhZGVyIGhhcwogICBiZWVuIHJlYWQuICBTbwogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IGFuZAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IG1heSByZXR1cm4KICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NRU1fRVJST1I8L2NvZGU+IGV2ZW4gdGhvdWdoIHNvbWUKICAgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBoYXMgYmVlbiByZWFkLiAgVGhlIHNhbWUgaXMgbm90IHRydWUKICAgZm9yIGNvbXByZXNzaW9uOyBvbmNlCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPiBvcgogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4gaGF2ZQogICBzdWNjZXNzZnVsbHkgY29tcGxldGVkLAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4gY2Fubm90CiAgIG9jY3VyLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfREFUQV9FUlJPUjwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlJldHVybmVkIHdoZW4gYSBkYXRhIGludGVncml0eSBlcnJvciBpcwogICBkZXRlY3RlZCBkdXJpbmcgZGVjb21wcmVzc2lvbi4gIE1vc3QgaW1wb3J0YW50bHksIHRoaXMgbWVhbnMKICAgd2hlbiBzdG9yZWQgYW5kIGNvbXB1dGVkIENSQ3MgZm9yIHRoZSBkYXRhIGRvIG5vdCBtYXRjaC4gIFRoaXMKICAgdmFsdWUgaXMgYWxzbyByZXR1cm5lZCB1cG9uIGRldGVjdGlvbiBvZiBhbnkgb3RoZXIgYW5vbWFseSBpbgogICB0aGUgY29tcHJlc3NlZCBkYXRhLjwvcD48L2RkPgo8ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfREFUQV9FUlJPUl9NQUdJQzwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPkFzIGEgc3BlY2lhbCBjYXNlIG9mCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfREFUQV9FUlJPUjwvY29kZT4sIGl0IGlzCiAgIHNvbWV0aW1lcyB1c2VmdWwgdG8ga25vdyB3aGVuIHRoZSBjb21wcmVzc2VkIHN0cmVhbSBkb2VzIG5vdAogICBzdGFydCB3aXRoIHRoZSBjb3JyZWN0IG1hZ2ljIGJ5dGVzICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPidCJyAnWicKICAgJ2gnPC9jb2RlPikuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9JT19FUlJPUjwvY29kZT48L3NwYW4+PC9kdD4KPGRkPjxwPlJldHVybmVkIGJ5CiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gYW5kCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGU8L2NvZGU+IHdoZW4gdGhlcmUgaXMgYW4KICAgZXJyb3IgcmVhZGluZyBvciB3cml0aW5nIGluIHRoZSBjb21wcmVzc2VkIGZpbGUsIGFuZCBieQogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRPcGVuPC9jb2RlPiBhbmQKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZU9wZW48L2NvZGU+IGZvciBhdHRlbXB0cwogICB0byB1c2UgYSBmaWxlIGZvciB3aGljaCB0aGUgZXJyb3IgaW5kaWNhdG9yICh2aXosCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmVycm9yKGYpPC9jb2RlPikgaXMgc2V0LiAgT24KICAgcmVjZWlwdCBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0lPX0VSUk9SPC9jb2RlPiwgdGhlCiAgIGNhbGxlciBzaG91bGQgY29uc3VsdCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmVycm5vPC9jb2RlPgogICBhbmQvb3IgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5wZXJyb3I8L2NvZGU+IHRvIGFjcXVpcmUKICAgb3BlcmF0aW5nLXN5c3RlbSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICAgcHJvYmxlbS48L3A+PC9kZD4KPGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1VORVhQRUNURURfRU9GPC9jb2RlPjwvc3Bhbj48L2R0Pgo8ZGQ+PHA+UmV0dXJuZWQgYnkKICAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aGVuIHRoZQogICBjb21wcmVzc2VkIGZpbGUgZmluaXNoZXMgYmVmb3JlIHRoZSBsb2dpY2FsIGVuZCBvZiBzdHJlYW0gaXMKICAgZGV0ZWN0ZWQuPC9wPjwvZGQ+CjxkdD48c3BhbiBjbGFzcz0idGVybSI+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PVVRCVUZGX0ZVTEw8L2NvZGU+PC9zcGFuPjwvZHQ+CjxkZD48cD5SZXR1cm5lZCBieQogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZDb21wcmVzczwvY29kZT4gYW5kCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkRlY29tcHJlc3M8L2NvZGU+IHRvCiAgIGluZGljYXRlIHRoYXQgdGhlIG91dHB1dCBkYXRhIHdpbGwgbm90IGZpdCBpbnRvIHRoZSBvdXRwdXQKICAgYnVmZmVyIHByb3ZpZGVkLjwvcD48L2RkPgo8L2RsPjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0ibG93LWxldmVsIj48L2E+My4zLqBMb3ctbGV2ZWwgaW50ZXJmYWNlPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6Y29tcHJlc3MtaW5pdCI+PC9hPjMuMy4xLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgewogIGNoYXIgKm5leHRfaW47CiAgdW5zaWduZWQgaW50IGF2YWlsX2luOwogIHVuc2lnbmVkIGludCB0b3RhbF9pbl9sbzMyOwogIHVuc2lnbmVkIGludCB0b3RhbF9pbl9oaTMyOwoKICBjaGFyICpuZXh0X291dDsKICB1bnNpZ25lZCBpbnQgYXZhaWxfb3V0OwogIHVuc2lnbmVkIGludCB0b3RhbF9vdXRfbG8zMjsKICB1bnNpZ25lZCBpbnQgdG90YWxfb3V0X2hpMzI7CgogIHZvaWQgKnN0YXRlOwoKICB2b2lkICooKmJ6YWxsb2MpKHZvaWQgKixpbnQsaW50KTsKICB2b2lkICgqYnpmcmVlKSh2b2lkICosdm9pZCAqKTsKICB2b2lkICpvcGFxdWU7Cn0gYnpfc3RyZWFtOwoKaW50IEJaMl9iekNvbXByZXNzSW5pdCAoIGJ6X3N0cmVhbSAqc3RybSwgCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tTaXplMTAwaywgCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmVyYm9zaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdvcmtGYWN0b3IgKTs8L3ByZT4KPHA+UHJlcGFyZXMgZm9yIGNvbXByZXNzaW9uLiAgVGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiBzdHJ1Y3R1cmUgaG9sZHMgYWxsCmRhdGEgcGVydGFpbmluZyB0byB0aGUgY29tcHJlc3Npb24gYWN0aXZpdHkuICBBCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiBzdHJ1Y3R1cmUgc2hvdWxkIGJlCmFsbG9jYXRlZCBhbmQgaW5pdGlhbGlzZWQgcHJpb3IgdG8gdGhlIGNhbGwuICBUaGUgZmllbGRzIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiBjb21wcmlzZSB0aGUgZW50aXJldHkKb2YgdGhlIHVzZXItdmlzaWJsZSBkYXRhLiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGF0ZTwvY29kZT4KaXMgYSBwb2ludGVyIHRvIHRoZSBwcml2YXRlIGRhdGEgc3RydWN0dXJlcyByZXF1aXJlZCBmb3IKY29tcHJlc3Npb24uPC9wPgo8cD5DdXN0b20gbWVtb3J5IGFsbG9jYXRvcnMgYXJlIHN1cHBvcnRlZCwgdmlhIGZpZWxkcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6YWxsb2M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZnJlZTwvY29kZT4sIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4uICBUaGUgdmFsdWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vcGFxdWU8L2NvZGU+IGlzIHBhc3NlZCB0byBhcyB0aGUgZmlyc3QKYXJndW1lbnQgdG8gYWxsIGNhbGxzIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYzwvY29kZT4KYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiwgYnV0IGlzIG90aGVyd2lzZQppZ25vcmVkIGJ5IHRoZSBsaWJyYXJ5LiAgVGhlIGNhbGwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jICgKb3BhcXVlLCBuLCBtICk8L2NvZGU+IGlzIGV4cGVjdGVkIHRvIHJldHVybiBhIHBvaW50ZXIKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5wPC9jb2RlPiB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm4gKgptPC9jb2RlPiBieXRlcyBvZiBtZW1vcnksIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZnJlZSAoCm9wYXF1ZSwgcCApPC9jb2RlPiBzaG91bGQgZnJlZSB0aGF0IG1lbW9yeS48L3A+CjxwPklmIHlvdSBkb24ndCB3YW50IHRvIHVzZSBhIGN1c3RvbSBtZW1vcnkgYWxsb2NhdG9yLCBzZXQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemFsbG9jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemZyZWU8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm9wYXF1ZTwvY29kZT4gdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5OVUxMPC9jb2RlPiwgYW5kIHRoZSBsaWJyYXJ5IHdpbGwgdGhlbgp1c2UgdGhlIHN0YW5kYXJkIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bWFsbG9jPC9jb2RlPiAvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZnJlZTwvY29kZT4gcm91dGluZXMuPC9wPgo8cD5CZWZvcmUgY2FsbGluZwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4sIGZpZWxkcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6YWxsb2M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZnJlZTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+b3BhcXVlPC9jb2RlPiBzaG91bGQgYmUgZmlsbGVkCmFwcHJvcHJpYXRlbHksIGFzIGp1c3QgZGVzY3JpYmVkLiAgVXBvbiByZXR1cm4sIHRoZSBpbnRlcm5hbApzdGF0ZSB3aWxsIGhhdmUgYmVlbiBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpc2VkLCBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9pbl9sbzMyPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9pbl9oaTMyPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXRfbG8zMjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfb3V0X2hpMzI8L2NvZGU+IHdpbGwgaGF2ZSBiZWVuCnNldCB0byB6ZXJvLiAgVGhlc2UgZm91ciBmaWVsZHMgYXJlIHVzZWQgYnkgdGhlIGxpYnJhcnkgdG8gaW5mb3JtCnRoZSBjYWxsZXIgb2YgdGhlIHRvdGFsIGFtb3VudCBvZiBkYXRhIHBhc3NlZCBpbnRvIGFuZCBvdXQgb2YgdGhlCmxpYnJhcnksIHJlc3BlY3RpdmVseS4gIFlvdSBzaG91bGQgbm90IHRyeSB0byBjaGFuZ2UgdGhlbS4gIEFzIG9mCnZlcnNpb24gMS4wLCA2NC1iaXQgY291bnRzIGFyZSBtYWludGFpbmVkLCBldmVuIG9uIDMyLWJpdApwbGF0Zm9ybXMsIHVzaW5nIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPl9oaTMyPC9jb2RlPgpmaWVsZHMgdG8gc3RvcmUgdGhlIHVwcGVyIDMyIGJpdHMgb2YgdGhlIGNvdW50LiAgU28sIGZvciBleGFtcGxlLAp0aGUgdG90YWwgYW1vdW50IG9mIGRhdGEgaW4gaXMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4odG90YWxfaW5faGkzMgombHQ7Jmx0OyAzMikgKyB0b3RhbF9pbl9sbzMyPC9jb2RlPi48L3A+CjxwPlBhcmFtZXRlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJsb2NrU2l6ZTEwMGs8L2NvZGU+CnNwZWNpZmllcyB0aGUgYmxvY2sgc2l6ZSB0byBiZSB1c2VkIGZvciBjb21wcmVzc2lvbi4gIEl0IHNob3VsZApiZSBhIHZhbHVlIGJldHdlZW4gMSBhbmQgOSBpbmNsdXNpdmUsIGFuZCB0aGUgYWN0dWFsIGJsb2NrIHNpemUKdXNlZCBpcyAxMDAwMDAgeCB0aGlzIGZpZ3VyZS4gIDkgZ2l2ZXMgdGhlIGJlc3QgY29tcHJlc3Npb24gYnV0CnRha2VzIG1vc3QgbWVtb3J5LjwvcD4KPHA+UGFyYW1ldGVyIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyYm9zaXR5PC9jb2RlPiBzaG91bGQKYmUgc2V0IHRvIGEgbnVtYmVyIGJldHdlZW4gMCBhbmQgNCBpbmNsdXNpdmUuICAwIGlzIHNpbGVudCwgYW5kCmdyZWF0ZXIgbnVtYmVycyBnaXZlIGluY3JlYXNpbmdseSB2ZXJib3NlIG1vbml0b3JpbmcvZGVidWdnaW5nCm91dHB1dC4gIElmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIGNvbXBpbGVkIHdpdGgKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tREJaX05PX1NURElPPC9jb2RlPiwgbm8gc3VjaCBvdXRwdXQKd2lsbCBhcHBlYXIgZm9yIGFueSB2ZXJib3NpdHkgc2V0dGluZy48L3A+CjxwPlBhcmFtZXRlciA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPndvcmtGYWN0b3I8L2NvZGU+CmNvbnRyb2xzIGhvdyB0aGUgY29tcHJlc3Npb24gcGhhc2UgYmVoYXZlcyB3aGVuIHByZXNlbnRlZCB3aXRoCndvcnN0IGNhc2UsIGhpZ2hseSByZXBldGl0aXZlLCBpbnB1dCBkYXRhLiAgSWYgY29tcHJlc3Npb24gcnVucwppbnRvIGRpZmZpY3VsdGllcyBjYXVzZWQgYnkgcmVwZXRpdGl2ZSBkYXRhLCB0aGUgbGlicmFyeSBzd2l0Y2hlcwpmcm9tIHRoZSBzdGFuZGFyZCBzb3J0aW5nIGFsZ29yaXRobSB0byBhIGZhbGxiYWNrIGFsZ29yaXRobS4gIFRoZQpmYWxsYmFjayBpcyBzbG93ZXIgdGhhbiB0aGUgc3RhbmRhcmQgYWxnb3JpdGhtIGJ5IHBlcmhhcHMgYQpmYWN0b3Igb2YgdGhyZWUsIGJ1dCBhbHdheXMgYmVoYXZlcyByZWFzb25hYmx5LCBubyBtYXR0ZXIgaG93IGJhZAp0aGUgaW5wdXQuPC9wPgo8cD5Mb3dlciB2YWx1ZXMgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij53b3JrRmFjdG9yPC9jb2RlPgpyZWR1Y2UgdGhlIGFtb3VudCBvZiBlZmZvcnQgdGhlIHN0YW5kYXJkIGFsZ29yaXRobSB3aWxsIGV4cGVuZApiZWZvcmUgcmVzb3J0aW5nIHRvIHRoZSBmYWxsYmFjay4gIFlvdSBzaG91bGQgc2V0IHRoaXMgcGFyYW1ldGVyCmNhcmVmdWxseTsgdG9vIGxvdywgYW5kIG1hbnkgaW5wdXRzIHdpbGwgYmUgaGFuZGxlZCBieSB0aGUKZmFsbGJhY2sgYWxnb3JpdGhtIGFuZCBzbyBjb21wcmVzcyByYXRoZXIgc2xvd2x5LCB0b28gaGlnaCwgYW5kCnlvdXIgYXZlcmFnZS10by13b3JzdCBjYXNlIGNvbXByZXNzaW9uIHRpbWVzIGNhbiBiZWNvbWUgdmVyeQpsYXJnZS4gIFRoZSBkZWZhdWx0IHZhbHVlIG9mIDMwIGdpdmVzIHJlYXNvbmFibGUgYmVoYXZpb3VyIG92ZXIgYQp3aWRlIHJhbmdlIG9mIGNpcmN1bXN0YW5jZXMuPC9wPgo8cD5BbGxvd2FibGUgdmFsdWVzIHJhbmdlIGZyb20gMCB0byAyNTAgaW5jbHVzaXZlLiAgMCBpcyBhCnNwZWNpYWwgY2FzZSwgZXF1aXZhbGVudCB0byB1c2luZyB0aGUgZGVmYXVsdCB2YWx1ZSBvZiAzMC48L3A+CjxwPk5vdGUgdGhhdCB0aGUgY29tcHJlc3NlZCBvdXRwdXQgZ2VuZXJhdGVkIGlzIHRoZSBzYW1lCnJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvciBub3QgdGhlIGZhbGxiYWNrIGFsZ29yaXRobSBpcwp1c2VkLjwvcD4KPHA+QmUgYXdhcmUgYWxzbyB0aGF0IHRoaXMgcGFyYW1ldGVyIG1heSBkaXNhcHBlYXIgZW50aXJlbHkgaW4KZnV0dXJlIHZlcnNpb25zIG9mIHRoZSBsaWJyYXJ5LiAgSW4gcHJpbmNpcGxlIGl0IHNob3VsZCBiZQpwb3NzaWJsZSB0byBkZXZpc2UgYSBnb29kIHdheSB0byBhdXRvbWF0aWNhbGx5IGNob29zZSB3aGljaAphbGdvcml0aG0gdG8gdXNlLiAgU3VjaCBhIG1lY2hhbmlzbSB3b3VsZCByZW5kZXIgdGhlIHBhcmFtZXRlcgpvYnNvbGV0ZS48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgc3RybSBpcyBOVUxMIAogIG9yIGJsb2NrU2l6ZSAmbHQ7IDEgb3IgYmxvY2tTaXplICZndDsgOQogIG9yIHZlcmJvc2l0eSAmbHQ7IDAgb3IgdmVyYm9zaXR5ICZndDsgNAogIG9yIHdvcmtGYWN0b3IgJmx0OyAwIG9yIHdvcmtGYWN0b3IgJmd0OyAyNTAKQlpfTUVNX0VSUk9SIAogIGlmIG5vdCBlbm91Z2ggbWVtb3J5IGlzIGF2YWlsYWJsZQpCWl9PSyAKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpDb21wcmVzcwogIGlmIEJaX09LIGlzIHJldHVybmVkCiAgbm8gc3BlY2lmaWMgYWN0aW9uIG5lZWRlZCBpbiBjYXNlIG9mIGVycm9yPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpDb21wcmVzcyI+PC9hPjMuMy4yLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6Q29tcHJlc3MgKCBiel9zdHJlYW0gKnN0cm0sIGludCBhY3Rpb24gKTs8L3ByZT4KPHA+UHJvdmlkZXMgbW9yZSBpbnB1dCBhbmQvb3Igb3V0cHV0IGJ1ZmZlciBzcGFjZSBmb3IgdGhlCmxpYnJhcnkuICBUaGUgY2FsbGVyIG1haW50YWlucyBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMsIGFuZApjYWxscyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiB0byB0cmFuc2ZlcgpkYXRhIGJldHdlZW4gdGhlbS48L3A+CjxwPkJlZm9yZSBlYWNoIGNhbGwgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pbjwvY29kZT4gc2hvdWxkIHBvaW50IGF0IHRoZSBkYXRhCnRvIGJlIGNvbXByZXNzZWQsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF2YWlsX2luPC9jb2RlPgpzaG91bGQgaW5kaWNhdGUgaG93IG1hbnkgYnl0ZXMgdGhlIGxpYnJhcnkgbWF5IHJlYWQuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfaW48L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgpvZiBieXRlcyBpdCBoYXMgcmVhZC48L3A+CjxwPlNpbWlsYXJseSwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4gc2hvdWxkCnBvaW50IHRvIGEgYnVmZmVyIGluIHdoaWNoIHRoZSBjb21wcmVzc2VkIGRhdGEgaXMgdG8gYmUgcGxhY2VkLAp3aXRoIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfb3V0PC9jb2RlPiBpbmRpY2F0aW5nIGhvdwptdWNoIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHVwZGF0ZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X291dDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfb3V0PC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9vdXQ8L2NvZGU+IHRvIHJlZmxlY3QgdGhlIG51bWJlcgpvZiBieXRlcyBvdXRwdXQuPC9wPgo8cD5Zb3UgbWF5IHByb3ZpZGUgYW5kIHJlbW92ZSBhcyBsaXR0bGUgb3IgYXMgbXVjaCBkYXRhIGFzIHlvdQpsaWtlIG9uIGVhY2ggY2FsbCBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi4gIEluIHRoZSBsaW1pdCwKaXQgaXMgYWNjZXB0YWJsZSB0byBzdXBwbHkgYW5kIHJlbW92ZSBkYXRhIG9uZSBieXRlIGF0IGEgdGltZSwKYWx0aG91Z2ggdGhpcyB3b3VsZCBiZSB0ZXJyaWJseSBpbmVmZmljaWVudC4gIFlvdSBzaG91bGQgYWx3YXlzCmVuc3VyZSB0aGF0IGF0IGxlYXN0IG9uZSBieXRlIG9mIG91dHB1dCBzcGFjZSBpcyBhdmFpbGFibGUgYXQKZWFjaCBjYWxsLjwvcD4KPHA+QSBzZWNvbmQgcHVycG9zZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiBpcyB0byByZXF1ZXN0IGEKY2hhbmdlIG9mIG1vZGUgb2YgdGhlIGNvbXByZXNzZWQgc3RyZWFtLjwvcD4KPHA+Q29uY2VwdHVhbGx5LCBhIGNvbXByZXNzZWQgc3RyZWFtIGNhbiBiZSBpbiBvbmUgb2YgZm91cgpzdGF0ZXM6IElETEUsIFJVTk5JTkcsIEZMVVNISU5HIGFuZCBGSU5JU0hJTkcuICBCZWZvcmUKaW5pdGlhbGlzYXRpb24KKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPikgYW5kIGFmdGVyCnRlcm1pbmF0aW9uICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPiksCmEgc3RyZWFtIGlzIHJlZ2FyZGVkIGFzIElETEUuPC9wPgo8cD5VcG9uIGluaXRpYWxpc2F0aW9uCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4pLCB0aGUgc3RyZWFtCmlzIHBsYWNlZCBpbiB0aGUgUlVOTklORyBzdGF0ZS4gIFN1YnNlcXVlbnQgY2FsbHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gc2hvdWxkIHBhc3MKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9SVU48L2NvZGU+IGFzIHRoZSByZXF1ZXN0ZWQgYWN0aW9uOwpvdGhlciBhY3Rpb25zIGFyZSBpbGxlZ2FsIGFuZCB3aWxsIHJlc3VsdCBpbgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPi48L3A+CjxwPkF0IHNvbWUgcG9pbnQsIHRoZSBjYWxsaW5nIHByb2dyYW0gd2lsbCBoYXZlIHByb3ZpZGVkIGFsbAp0aGUgaW5wdXQgZGF0YSBpdCB3YW50cyB0by4gIEl0IHdpbGwgdGhlbiB3YW50IHRvIGZpbmlzaCB1cCAtLSBpbgplZmZlY3QsIGFza2luZyB0aGUgbGlicmFyeSB0byBwcm9jZXNzIGFueSBkYXRhIGl0IG1pZ2h0IGhhdmUKYnVmZmVyZWQgaW50ZXJuYWxseS4gIEluIHRoaXMgc3RhdGUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHdpbGwgbm8gbG9uZ2VyCmF0dGVtcHQgdG8gcmVhZCBkYXRhIGZyb20KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiwgYnV0IGl0IHdpbGwgd2FudCB0bwp3cml0ZSBkYXRhIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9vdXQ8L2NvZGU+LiAgQmVjYXVzZQp0aGUgb3V0cHV0IGJ1ZmZlciBzdXBwbGllZCBieSB0aGUgdXNlciBjYW4gYmUgYXJiaXRyYXJpbHkgc21hbGwsCnRoZSBmaW5pc2hpbmctdXAgb3BlcmF0aW9uIGNhbm5vdCBuZWNlc3NhcmlseSBiZSBkb25lIHdpdGggYQpzaW5nbGUgY2FsbCBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi48L3A+CjxwPkluc3RlYWQsIHRoZSBjYWxsaW5nIHByb2dyYW0gcGFzc2VzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiBhcyBhbiBhY3Rpb24gdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4uICBUaGlzIGNoYW5nZXMKdGhlIHN0cmVhbSdzIHN0YXRlIHRvIEZJTklTSElORy4gIEFueSByZW1haW5pbmcgaW5wdXQgKGllLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfaW5bMCAuLiBhdmFpbF9pbi0xXTwvY29kZT4pIGlzCmNvbXByZXNzZWQgYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBvdXRwdXQgYnVmZmVyLiAgVG8gZG8gdGhpcywKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gbXVzdCBiZSBjYWxsZWQKcmVwZWF0ZWRseSB1bnRpbCBhbGwgdGhlIG91dHB1dCBoYXMgYmVlbiBjb25zdW1lZC4gIEF0IHRoYXQKcG9pbnQsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHJldHVybnMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPiwgYW5kIHRoZSBzdHJlYW0ncwpzdGF0ZSBpcyBzZXQgYmFjayB0byBJRExFLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPiBzaG91bGQgdGhlbiBiZQpjYWxsZWQuPC9wPgo8cD5KdXN0IHRvIG1ha2Ugc3VyZSB0aGUgY2FsbGluZyBwcm9ncmFtIGRvZXMgbm90IGNoZWF0LCB0aGUKbGlicmFyeSBtYWtlcyBhIG5vdGUgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4KYXQgdGhlIHRpbWUgb2YgdGhlIGZpcnN0IGNhbGwgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gd2hpY2ggaGFzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRklOSVNIPC9jb2RlPiBhcyBhbiBhY3Rpb24gKGllLCBhdAp0aGUgdGltZSB0aGUgcHJvZ3JhbSBoYXMgYW5ub3VuY2VkIGl0cyBpbnRlbnRpb24gdG8gbm90IHN1cHBseQphbnkgbW9yZSBpbnB1dCkuICBCeSBjb21wYXJpbmcgdGhpcyB2YWx1ZSB3aXRoIHRoYXQgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9pbjwvY29kZT4gb3ZlciBzdWJzZXF1ZW50IGNhbGxzCnRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+LCB0aGUgbGlicmFyeQpjYW4gZGV0ZWN0IGFueSBhdHRlbXB0cyB0byBzbGlwIGluIG1vcmUgZGF0YSB0byBjb21wcmVzcy4gIEFueQpjYWxscyBmb3Igd2hpY2ggdGhpcyBpcyBkZXRlY3RlZCB3aWxsIHJldHVybgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VSUk9SPC9jb2RlPi4gIFRoaXMKaW5kaWNhdGVzIGEgcHJvZ3JhbW1pbmcgbWlzdGFrZSB3aGljaCBzaG91bGQgYmUgY29ycmVjdGVkLjwvcD4KPHA+SW5zdGVhZCBvZiBhc2tpbmcgdG8gZmluaXNoLCB0aGUgY2FsbGluZyBwcm9ncmFtIG1heSBhc2sKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gdG8gdGFrZSBhbGwgdGhlCnJlbWFpbmluZyBpbnB1dCwgY29tcHJlc3MgaXQgYW5kIHRlcm1pbmF0ZSB0aGUgY3VycmVudAooQnVycm93cy1XaGVlbGVyKSBjb21wcmVzc2lvbiBibG9jay4gIFRoaXMgY291bGQgYmUgdXNlZnVsIGZvcgplcnJvciBjb250cm9sIHB1cnBvc2VzLiAgVGhlIG1lY2hhbmlzbSBpcyBhbmFsb2dvdXMgdG8gdGhhdCBmb3IKZmluaXNoaW5nOiBjYWxsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+CndpdGggYW4gYWN0aW9uIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRkxVU0g8L2NvZGU+LApyZW1vdmUgb3V0cHV0IGRhdGEsIGFuZCBwZXJzaXN0IHdpdGggdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfRkxVU0g8L2NvZGU+IGFjdGlvbiB1bnRpbCB0aGUgdmFsdWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9SVU48L2NvZGU+IGlzIHJldHVybmVkLiAgQXMgd2l0aApmaW5pc2hpbmcsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+CmRldGVjdHMgYW55IGF0dGVtcHQgdG8gcHJvdmlkZSBtb3JlIGlucHV0IGRhdGEgb25jZSB0aGUgZmx1c2ggaGFzCmJlZ3VuLjwvcD4KPHA+T25jZSB0aGUgZmx1c2ggaXMgY29tcGxldGUsIHRoZSBzdHJlYW0gcmV0dXJucyB0byB0aGUKbm9ybWFsIFJVTk5JTkcgc3RhdGUuPC9wPgo8cD5UaGlzIGFsbCBzb3VuZHMgcHJldHR5IGNvbXBsZXgsIGJ1dCBpc24ndCByZWFsbHkuICBIZXJlJ3MgYQp0YWJsZSB3aGljaCBzaG93cyB3aGljaCBhY3Rpb25zIGFyZSBhbGxvd2FibGUgaW4gZWFjaCBzdGF0ZSwgd2hhdAphY3Rpb24gd2lsbCBiZSB0YWtlbiwgd2hhdCB0aGUgbmV4dCBzdGF0ZSBpcywgYW5kIHdoYXQgdGhlCm5vbi1lcnJvciByZXR1cm4gdmFsdWVzIGFyZS4gIE5vdGUgdGhhdCB5b3UgY2FuJ3QgZXhwbGljaXRseSBhc2sKd2hhdCBzdGF0ZSB0aGUgc3RyZWFtIGlzIGluLCBidXQgbm9yIGRvIHlvdSBuZWVkIHRvIC0tIGl0IGNhbiBiZQppbmZlcnJlZCBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4uPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+SURMRS9hbnkKICBJbGxlZ2FsLiAgSURMRSBzdGF0ZSBvbmx5IGV4aXN0cyBhZnRlciBCWjJfYnpDb21wcmVzc0VuZCBvcgogIGJlZm9yZSBCWjJfYnpDb21wcmVzc0luaXQuCiAgUmV0dXJuIHZhbHVlID0gQlpfU0VRVUVOQ0VfRVJST1IKClJVTk5JTkcvQlpfUlVOCiAgQ29tcHJlc3MgZnJvbSBuZXh0X2luIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUuCiAgTmV4dCBzdGF0ZSA9IFJVTk5JTkcKICBSZXR1cm4gdmFsdWUgPSBCWl9SVU5fT0sKClJVTk5JTkcvQlpfRkxVU0gKICBSZW1lbWJlciBjdXJyZW50IHZhbHVlIG9mIG5leHRfaW4uIENvbXByZXNzIGZyb20gbmV4dF9pbgogIHRvIG5leHRfb3V0IGFzIG11Y2ggYXMgcG9zc2libGUsIGJ1dCBkbyBub3QgYWNjZXB0IGFueSBtb3JlIGlucHV0LgogIE5leHQgc3RhdGUgPSBGTFVTSElORwogIFJldHVybiB2YWx1ZSA9IEJaX0ZMVVNIX09LCgpSVU5OSU5HL0JaX0ZJTklTSAogIFJlbWVtYmVyIGN1cnJlbnQgdmFsdWUgb2YgbmV4dF9pbi4gQ29tcHJlc3MgZnJvbSBuZXh0X2luCiAgdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgYnV0IGRvIG5vdCBhY2NlcHQgYW55IG1vcmUgaW5wdXQuCiAgTmV4dCBzdGF0ZSA9IEZJTklTSElORwogIFJldHVybiB2YWx1ZSA9IEJaX0ZJTklTSF9PSwoKRkxVU0hJTkcvQlpfRkxVU0gKICBDb21wcmVzcyBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwgCiAgYnV0IGRvIG5vdCBhY2NlcHQgYW55IG1vcmUgaW5wdXQuCiAgSWYgYWxsIHRoZSBleGlzdGluZyBpbnB1dCBoYXMgYmVlbiB1c2VkIHVwIGFuZCBhbGwgY29tcHJlc3NlZAogIG91dHB1dCBoYXMgYmVlbiByZW1vdmVkCiAgICBOZXh0IHN0YXRlID0gUlVOTklORzsgUmV0dXJuIHZhbHVlID0gQlpfUlVOX09LCiAgZWxzZQogICAgTmV4dCBzdGF0ZSA9IEZMVVNISU5HOyBSZXR1cm4gdmFsdWUgPSBCWl9GTFVTSF9PSwoKRkxVU0hJTkcvb3RoZXIgICAgIAogIElsbGVnYWwuCiAgUmV0dXJuIHZhbHVlID0gQlpfU0VRVUVOQ0VfRVJST1IKCkZJTklTSElORy9CWl9GSU5JU0gKICBDb21wcmVzcyBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQgYXMgbXVjaCBhcyBwb3NzaWJsZSwKICBidXQgdG8gbm90IGFjY2VwdCBhbnkgbW9yZSBpbnB1dC4gIAogIElmIGFsbCB0aGUgZXhpc3RpbmcgaW5wdXQgaGFzIGJlZW4gdXNlZCB1cCBhbmQgYWxsIGNvbXByZXNzZWQKICBvdXRwdXQgaGFzIGJlZW4gcmVtb3ZlZAogICAgTmV4dCBzdGF0ZSA9IElETEU7IFJldHVybiB2YWx1ZSA9IEJaX1NUUkVBTV9FTkQKICBlbHNlCiAgICBOZXh0IHN0YXRlID0gRklOSVNISU5HOyBSZXR1cm4gdmFsdWUgPSBCWl9GSU5JU0hfT0sKCkZJTklTSElORy9vdGhlcgogIElsbGVnYWwuCiAgUmV0dXJuIHZhbHVlID0gQlpfU0VRVUVOQ0VfRVJST1I8L3ByZT4KPHA+VGhhdCBzdGlsbCBsb29rcyBjb21wbGljYXRlZD8gIFdlbGwsIGZhaXIgZW5vdWdoLiAgVGhlCnVzdWFsIHNlcXVlbmNlIG9mIGNhbGxzIGZvciBjb21wcmVzc2luZyBhIGxvYWQgb2YgZGF0YSBpczo8L3A+CjxkaXYgY2xhc3M9Im9yZGVyZWRsaXN0Ij48b2wgdHlwZT0iMSI+CjxsaT48cD5HZXQgc3RhcnRlZCB3aXRoCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LjwvcD48L2xpPgo8bGk+PHA+U2hvdmVsIGRhdGEgaW4gYW5kIHNobHVycCBvdXQgaXRzIGNvbXByZXNzZWQgZm9ybQogIHVzaW5nIHplcm8gb3IgbW9yZSBjYWxscyBvZgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHdpdGggYWN0aW9uID0KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1JVTjwvY29kZT4uPC9wPjwvbGk+CjxsaT48cD5GaW5pc2ggdXAuIFJlcGVhdGVkbHkgY2FsbAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IHdpdGggYWN0aW9uID0KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX0ZJTklTSDwvY29kZT4sIGNvcHlpbmcgb3V0IHRoZQogIGNvbXByZXNzZWQgb3V0cHV0LCB1bnRpbAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gaXMKICByZXR1cm5lZC48L3A+PC9saT4KPGxpPjxwPkNsb3NlIHVwIGFuZCBnbyBob21lLiAgQ2FsbAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NFbmQ8L2NvZGU+LjwvcD48L2xpPgo8L29sPjwvZGl2Pgo8cD5JZiB0aGUgZGF0YSB5b3Ugd2FudCB0byBjb21wcmVzcyBmaXRzIGludG8geW91ciBpbnB1dApidWZmZXIgYWxsIGF0IG9uY2UsIHlvdSBjYW4gc2tpcCB0aGUgY2FsbHMgb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzcyAoIC4uLiwgQlpfUlVOICk8L2NvZGU+CmFuZCBqdXN0IGRvIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzICggLi4uLCBCWl9GSU5JU0gKKTwvY29kZT4gY2FsbHMuPC9wPgo8cD5BbGwgcmVxdWlyZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCBieQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4uICBUaGUKY29tcHJlc3Npb24gbGlicmFyeSBjYW4gYWNjZXB0IGFueSBkYXRhIGF0IGFsbCAob2J2aW91c2x5KS4gIFNvCnlvdSBzaG91bGRuJ3QgZ2V0IGFueSBlcnJvciByZXR1cm4gdmFsdWVzIGZyb20gdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3M8L2NvZGU+IGNhbGxzLiAgSWYgeW91CmRvLCB0aGV5IHdpbGwgYmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TRVFVRU5DRV9FUlJPUjwvY29kZT4sIGFuZCBpbmRpY2F0ZQphIGJ1ZyBpbiB5b3VyIHByb2dyYW1taW5nLjwvcD4KPHA+VHJpdmlhbCBvdGhlciBwb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SCiAgaWYgc3RybSBpcyBOVUxMLCBvciBzdHJtLSZndDtzIGlzIE5VTEw8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiekNvbXByZXNzLWVuZCI+PC9hPjMuMy4zLqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzRW5kPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6Q29tcHJlc3NFbmQgKCBiel9zdHJlYW0gKnN0cm0gKTs8L3ByZT4KPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBjb21wcmVzc2lvbgpzdHJlYW0uPC9wPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0mZ3Q7cyBpcyBOVUxMCkJaX09LICAgICAgICAgICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiekRlY29tcHJlc3MtaW5pdCI+PC9hPjMuMy40LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NJbml0PC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6RGVjb21wcmVzc0luaXQgKCBiel9zdHJlYW0gKnN0cm0sIGludCB2ZXJib3NpdHksIGludCBzbWFsbCApOzwvcHJlPgo8cD5QcmVwYXJlcyBmb3IgZGVjb21wcmVzc2lvbi4gIEFzIHdpdGgKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LCBhCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ynpfc3RyZWFtPC9jb2RlPiByZWNvcmQgc2hvdWxkIGJlCmFsbG9jYXRlZCBhbmQgaW5pdGlhbGlzZWQgYmVmb3JlIHRoZSBjYWxsLiAgRmllbGRzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnphbGxvYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpmcmVlPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5vcGFxdWU8L2NvZGU+IHNob3VsZCBiZSBzZXQgaWYgYSBjdXN0b20KbWVtb3J5IGFsbG9jYXRvciBpcyByZXF1aXJlZCwgb3IgbWFkZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk5VTEw8L2NvZGU+IGZvciB0aGUgbm9ybWFsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bWFsbG9jPC9jb2RlPiAvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZnJlZTwvY29kZT4gcm91dGluZXMuICBVcG9uIHJldHVybiwgdGhlCmludGVybmFsIHN0YXRlIHdpbGwgaGF2ZSBiZWVuIGluaXRpYWxpc2VkLCBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij50b3RhbF9pbjwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dG90YWxfb3V0PC9jb2RlPiB3aWxsIGJlIHplcm8uPC9wPgo8cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVyCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyYm9zaXR5PC9jb2RlPiwgc2VlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Q29tcHJlc3NJbml0PC9jb2RlPi48L3A+CjxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c21hbGw8L2NvZGU+IGlzIG5vbnplcm8sIHRoZQpsaWJyYXJ5IHdpbGwgdXNlIGFuIGFsdGVybmF0aXZlIGRlY29tcHJlc3Npb24gYWxnb3JpdGhtIHdoaWNoCnVzZXMgbGVzcyBtZW1vcnkgYnV0IGF0IHRoZSBjb3N0IG9mIGRlY29tcHJlc3NpbmcgbW9yZSBzbG93bHkKKHJvdWdobHkgc3BlYWtpbmcsIGhhbGYgdGhlIHNwZWVkLCBidXQgdGhlIG1heGltdW0gbWVtb3J5CnJlcXVpcmVtZW50IGRyb3BzIHRvIGFyb3VuZCAyMzAwaykuICBTZWUgPGEgaHJlZj0iI3VzaW5nIj5Ib3cgdG8gdXNlIGJ6aXAyPC9hPgpmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBtZW1vcnkgbWFuYWdlbWVudC48L3A+CjxwPk5vdGUgdGhhdCB0aGUgYW1vdW50IG9mIG1lbW9yeSBuZWVkZWQgdG8gZGVjb21wcmVzcyBhCnN0cmVhbSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bnRpbCB0aGUgc3RyZWFtJ3MgaGVhZGVyIGhhcyBiZWVuCnJlYWQsIHNvIGV2ZW4gaWYKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT4gc3VjY2VlZHMsIGEKc3Vic2VxdWVudCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+CmNvdWxkIGZhaWwgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4uPC9wPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX0NPTkZJR19FUlJPUgogIGlmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIG1pcy1jb21waWxlZApCWl9QQVJBTV9FUlJPUgogIGlmICggc21hbGwgIT0gMCAmYW1wOyZhbXA7IHNtYWxsICE9IDEgKQogIG9yICh2ZXJib3NpdHkgJmx0OzsgMCB8fCB2ZXJib3NpdHkgJmd0OyA0KQpCWl9NRU1fRVJST1IKICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGlzIGF2YWlsYWJsZTwvcHJlPgo8cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaMl9iekRlY29tcHJlc3MKICBpZiBCWl9PSyB3YXMgcmV0dXJuZWQKICBubyBzcGVjaWZpYyBhY3Rpb24gcmVxdWlyZWQgaW4gY2FzZSBvZiBlcnJvcjwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6RGVjb21wcmVzcyI+PC9hPjMuMy41LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpEZWNvbXByZXNzICggYnpfc3RyZWFtICpzdHJtICk7PC9wcmU+CjxwPlByb3ZpZGVzIG1vcmUgaW5wdXQgYW5kL291dCBvdXRwdXQgYnVmZmVyIHNwYWNlIGZvciB0aGUKbGlicmFyeS4gIFRoZSBjYWxsZXIgbWFpbnRhaW5zIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycywgYW5kIHVzZXMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiB0byB0cmFuc2ZlcgpkYXRhIGJldHdlZW4gdGhlbS48L3A+CjxwPkJlZm9yZSBlYWNoIGNhbGwgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uZXh0X2luPC9jb2RlPiBzaG91bGQgcG9pbnQgYXQgdGhlCmNvbXByZXNzZWQgZGF0YSwgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfaW48L2NvZGU+CnNob3VsZCBpbmRpY2F0ZSBob3cgbWFueSBieXRlcyB0aGUgbGlicmFyeSBtYXkgcmVhZC4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiB1cGRhdGVzCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9pbjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXZhaWxfaW48L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX2luPC9jb2RlPiB0byByZWZsZWN0IHRoZSBudW1iZXIKb2YgYnl0ZXMgaXQgaGFzIHJlYWQuPC9wPgo8cD5TaW1pbGFybHksIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmV4dF9vdXQ8L2NvZGU+IHNob3VsZApwb2ludCB0byBhIGJ1ZmZlciBpbiB3aGljaCB0aGUgdW5jb21wcmVzc2VkIG91dHB1dCBpcyB0byBiZQpwbGFjZWQsIHdpdGggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9vdXQ8L2NvZGU+CmluZGljYXRpbmcgaG93IG11Y2ggb3V0cHV0IHNwYWNlIGlzIGF2YWlsYWJsZS4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzczwvY29kZT4gdXBkYXRlcwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm5leHRfb3V0PC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdmFpbF9vdXQ8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnRvdGFsX291dDwvY29kZT4gdG8gcmVmbGVjdCB0aGUgbnVtYmVyCm9mIGJ5dGVzIG91dHB1dC48L3A+CjxwPllvdSBtYXkgcHJvdmlkZSBhbmQgcmVtb3ZlIGFzIGxpdHRsZSBvciBhcyBtdWNoIGRhdGEgYXMgeW91Cmxpa2Ugb24gZWFjaCBjYWxsIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4uICBJbiB0aGUgbGltaXQsCml0IGlzIGFjY2VwdGFibGUgdG8gc3VwcGx5IGFuZCByZW1vdmUgZGF0YSBvbmUgYnl0ZSBhdCBhIHRpbWUsCmFsdGhvdWdoIHRoaXMgd291bGQgYmUgdGVycmlibHkgaW5lZmZpY2llbnQuICBZb3Ugc2hvdWxkIGFsd2F5cwplbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgYnl0ZSBvZiBvdXRwdXQgc3BhY2UgaXMgYXZhaWxhYmxlIGF0CmVhY2ggY2FsbC48L3A+CjxwPlVzZSBvZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3M8L2NvZGU+IGlzCnNpbXBsZXIgdGhhbgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPi48L3A+CjxwPllvdSBzaG91bGQgcHJvdmlkZSBpbnB1dCBhbmQgcmVtb3ZlIG91dHB1dCBhcyBkZXNjcmliZWQKYWJvdmUsIGFuZCByZXBlYXRlZGx5IGNhbGwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzPC9jb2RlPiB1bnRpbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+IGlzIHJldHVybmVkLgpBcHBlYXJhbmNlIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4KZGVub3RlcyB0aGF0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4KaGFzIGRldGVjdGVkIHRoZSBsb2dpY2FsIGVuZCBvZiB0aGUgY29tcHJlc3NlZCBzdHJlYW0uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4gd2lsbCBub3QKcHJvZHVjZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+IHVudGlsIGFsbApvdXRwdXQgZGF0YSBoYXMgYmVlbiBwbGFjZWQgaW50byB0aGUgb3V0cHV0IGJ1ZmZlciwgc28gb25jZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+IGFwcGVhcnMsIHlvdSBhcmUKZ3VhcmFudGVlZCB0byBoYXZlIGF2YWlsYWJsZSBhbGwgdGhlIGRlY29tcHJlc3NlZCBvdXRwdXQsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvZGU+IGNhbiBzYWZlbHkKYmUgY2FsbGVkLjwvcD4KPHA+SWYgY2FzZSBvZiBhbiBlcnJvciByZXR1cm4gdmFsdWUsIHlvdSBzaG91bGQgY2FsbAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekRlY29tcHJlc3NFbmQ8L2NvZGU+IHRvIGNsZWFuIHVwCmFuZCByZWxlYXNlIG1lbW9yeS48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0mZ3Q7cyBpcyBOVUxMCiAgb3Igc3RybS0mZ3Q7YXZhaWxfb3V0ICZsdDsgMQpCWl9EQVRBX0VSUk9SCiAgaWYgYSBkYXRhIGludGVncml0eSBlcnJvciBpcyBkZXRlY3RlZCBpbiB0aGUgY29tcHJlc3NlZCBzdHJlYW0KQlpfREFUQV9FUlJPUl9NQUdJQwogIGlmIHRoZSBjb21wcmVzc2VkIHN0cmVhbSBkb2Vzbid0IGJlZ2luIHdpdGggdGhlIHJpZ2h0IG1hZ2ljIGJ5dGVzCkJaX01FTV9FUlJPUgogIGlmIHRoZXJlIHdhc24ndCBlbm91Z2ggbWVtb3J5IGF2YWlsYWJsZQpCWl9TVFJFQU1fRU5ECiAgaWYgdGhlIGxvZ2ljYWwgZW5kIG9mIHRoZSBkYXRhIHN0cmVhbSB3YXMgZGV0ZWN0ZWQgYW5kIGFsbAogIG91dHB1dCBpbiBoYXMgYmVlbiBjb25zdW1lZCwgZWcgcy0tJmd0O2F2YWlsX291dCAmZ3Q7IDAKQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPHA+QWxsb3dhYmxlIG5leHQgYWN0aW9uczo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWjJfYnpEZWNvbXByZXNzCiAgaWYgQlpfT0sgd2FzIHJldHVybmVkCkJaMl9iekRlY29tcHJlc3NFbmQKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiekRlY29tcHJlc3MtZW5kIj48L2E+My4zLjYuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekRlY29tcHJlc3NFbmQgKCBiel9zdHJlYW0gKnN0cm0gKTs8L3ByZT4KPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYSBkZWNvbXByZXNzaW9uCnN0cmVhbS48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfUEFSQU1fRVJST1IKICBpZiBzdHJtIGlzIE5VTEwgb3Igc3RybS0mZ3Q7cyBpcyBOVUxMCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICBOb25lLjwvcHJlPgo8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImhsLWludGVyZmFjZSI+PC9hPjMuNC6gSGlnaC1sZXZlbCBpbnRlcmZhY2U8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGlzIGludGVyZmFjZSBwcm92aWRlcyBmdW5jdGlvbnMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGZpbGVzLiAgRmlyc3QsIHNvbWUKZ2VuZXJhbCBwb2ludHMuPC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+QWxsIG9mIHRoZSBmdW5jdGlvbnMgdGFrZSBhbgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+aW50KjwvY29kZT4gZmlyc3QgYXJndW1lbnQsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPi4gIEFmdGVyIGVhY2ggY2FsbCwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IHNob3VsZCBiZSBjb25zdWx0ZWQKICBmaXJzdCB0byBkZXRlcm1pbmUgdGhlIG91dGNvbWUgb2YgdGhlIGNhbGwuICBJZgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gaXMKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPiwgdGhlIGNhbGwgY29tcGxldGVkCiAgc3VjY2Vzc2Z1bGx5LCBhbmQgb25seSB0aGVuIHNob3VsZCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQogIGZ1bmN0aW9uIChpZiBhbnkpIGJlIGNvbnN1bHRlZC4gIElmCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpcwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfSU9fRVJST1I8L2NvZGU+LCB0aGVyZSB3YXMgYW4KICBlcnJvciByZWFkaW5nL3dyaXRpbmcgdGhlIHVuZGVybHlpbmcgY29tcHJlc3NlZCBmaWxlLCBhbmQgeW91CiAgc2hvdWxkIHRoZW4gY29uc3VsdCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmVycm5vPC9jb2RlPiAvCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5wZXJyb3I8L2NvZGU+IHRvIGRldGVybWluZSB0aGUgY2F1c2UKICBvZiB0aGUgZGlmZmljdWx0eS4gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4KICBtYXkgYWxzbyBiZSBzZXQgdG8gdmFyaW91cyBvdGhlciB2YWx1ZXM7IHByZWNpc2UgZGV0YWlscyBhcmUKICBnaXZlbiBvbiBhIHBlci1mdW5jdGlvbiBiYXNpcyBiZWxvdy48L3A+PC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gaW5kaWNhdGVzCiAgYW4gZXJyb3IgKGllLCBhbnl0aGluZyBleGNlcHQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPiBhbmQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+KSwgeW91IHNob3VsZAogIGltbWVkaWF0ZWx5IGNhbGwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4gKG9yCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPiwgZGVwZW5kaW5nIG9uCiAgd2hldGhlciB5b3UgYXJlIGF0dGVtcHRpbmcgdG8gcmVhZCBvciB0byB3cml0ZSkgdG8gZnJlZSB1cCBhbGwKICByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdHJlYW0uICBPbmNlIGFuIGVycm9yIGhhcyBiZWVuCiAgaW5kaWNhdGVkLCBiZWhhdmlvdXIgb2YgYWxsIGNhbGxzIGV4Y2VwdAogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPgogICg8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlQ2xvc2U8L2NvZGU+KSBpcwogIHVuZGVmaW5lZC4gIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0ICgxKQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT4gc2hvdWxkIGJlIGNoZWNrZWQKICBhZnRlciBlYWNoIGNhbGwsIGFuZCAoMikgaWYKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGluZGljYXRlcyBhbiBlcnJvciwKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4KICAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPikgc2hvdWxkIHRoZW4KICBiZSBjYWxsZWQgdG8gY2xlYW4gdXAuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5GSUxFKjwvY29kZT4gYXJndW1lbnRzCiAgcGFzc2VkIHRvIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+IC8KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT4gc2hvdWxkIGJlIHNldAogIHRvIGJpbmFyeSBtb2RlLiAgTW9zdCBVbml4IHN5c3RlbXMgd2lsbCBkbyB0aGlzIGJ5IGRlZmF1bHQsIGJ1dAogIG90aGVyIHBsYXRmb3JtcywgaW5jbHVkaW5nIFdpbmRvd3MgYW5kIE1hYywgd2lsbCBub3QuICBJZiB5b3UKICBvbWl0IHRoaXMsIHlvdSBtYXkgZW5jb3VudGVyIHByb2JsZW1zIHdoZW4gbW92aW5nIGNvZGUgdG8gbmV3CiAgcGxhdGZvcm1zLjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+TWVtb3J5IGFsbG9jYXRpb24gcmVxdWVzdHMgYXJlIGhhbmRsZWQgYnkKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPm1hbGxvYzwvY29kZT4gLwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZnJlZTwvY29kZT4uICBBdCBwcmVzZW50IHRoZXJlIGlzIG5vCiAgZmFjaWxpdHkgZm9yIHVzZXItZGVmaW5lZCBtZW1vcnkgYWxsb2NhdG9ycyBpbiB0aGUgZmlsZSBJL08KICBmdW5jdGlvbnMgKGNvdWxkIGVhc2lseSBiZSBhZGRlZCwgdGhvdWdoKS48L3A+PC9saT4KPC91bD48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6cmVhZG9wZW4iPjwvYT4zLjQuMS6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiB2b2lkIEJaRklMRTsKCkJaRklMRSAqQloyX2J6UmVhZE9wZW4oIGludCAqYnplcnJvciwgRklMRSAqZiwgCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB2ZXJib3NpdHksIGludCBzbWFsbCwKICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdW51c2VkLCBpbnQgblVudXNlZCApOzwvcHJlPgo8cD5QcmVwYXJlIHRvIHJlYWQgY29tcHJlc3NlZCBkYXRhIGZyb20gZmlsZSBoYW5kbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mPC9jb2RlPi4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mPC9jb2RlPiBzaG91bGQgcmVmZXIgdG8gYSBmaWxlIHdoaWNoCmhhcyBiZWVuIG9wZW5lZCBmb3IgcmVhZGluZywgYW5kIGZvciB3aGljaCB0aGUgZXJyb3IgaW5kaWNhdG9yCig8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZlcnJvcihmKTwvY29kZT4paXMgbm90IHNldC4gIElmCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+c21hbGw8L2NvZGU+IGlzIDEsIHRoZSBsaWJyYXJ5IHdpbGwgdHJ5CnRvIGRlY29tcHJlc3MgdXNpbmcgbGVzcyBtZW1vcnksIGF0IHRoZSBleHBlbnNlIG9mIHNwZWVkLjwvcD4KPHA+Rm9yIHJlYXNvbnMgZXhwbGFpbmVkIGJlbG93LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+IHdpbGwgZGVjb21wcmVzcyB0aGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uVW51c2VkPC9jb2RlPiBieXRlcyBzdGFydGluZyBhdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnVudXNlZDwvY29kZT4sIGJlZm9yZSBzdGFydGluZyB0byByZWFkCmZyb20gdGhlIGZpbGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mPC9jb2RlPi4gIEF0IG1vc3QKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NQVhfVU5VU0VEPC9jb2RlPiBieXRlcyBtYXkgYmUKc3VwcGxpZWQgbGlrZSB0aGlzLiAgSWYgdGhpcyBmYWNpbGl0eSBpcyBub3QgcmVxdWlyZWQsIHlvdSBzaG91bGQKcGFzcyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPk5VTEw8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjA8L2NvZGU+IGZvcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnVudXNlZDwvY29kZT4gYW5kCm48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPlVudXNlZDwvY29kZT4gcmVzcGVjdGl2ZWx5LjwvcD4KPHA+Rm9yIHRoZSBtZWFuaW5nIG9mIHBhcmFtZXRlcnMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zbWFsbDwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dmVyYm9zaXR5PC9jb2RlPiwgc2VlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0luaXQ8L2NvZGU+LjwvcD4KPHA+VGhlIGFtb3VudCBvZiBtZW1vcnkgbmVlZGVkIHRvIGRlY29tcHJlc3MgYSBmaWxlIGNhbm5vdCBiZQpkZXRlcm1pbmVkIHVudGlsIHRoZSBmaWxlJ3MgaGVhZGVyIGhhcyBiZWVuIHJlYWQuICBTbyBpdCBpcwpwb3NzaWJsZSB0aGF0IDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZE9wZW48L2NvZGU+CnJldHVybnMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PSzwvY29kZT4gYnV0IGEgc3Vic2VxdWVudApjYWxsIG9mIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gd2lsbCByZXR1cm4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NRU1fRVJST1I8L2NvZGU+LjwvcD4KPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9DT05GSUdfRVJST1IKICBpZiB0aGUgbGlicmFyeSBoYXMgYmVlbiBtaXMtY29tcGlsZWQKQlpfUEFSQU1fRVJST1IKICBpZiBmIGlzIE5VTEwKICBvciBzbWFsbCBpcyBuZWl0aGVyIDAgbm9yIDEKICBvciAoIHVudXNlZCA9PSBOVUxMICZhbXA7JmFtcDsgblVudXNlZCAhPSAwICkKICBvciAoIHVudXNlZCAhPSBOVUxMICZhbXA7JmFtcDsgISgwICZsdDs9IG5VbnVzZWQgJmx0Oz0gQlpfTUFYX1VOVVNFRCkgKQpCWl9JT19FUlJPUgogIGlmIGZlcnJvcihmKSBpcyBub256ZXJvCkJaX01FTV9FUlJPUgogIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlCkJaX09LCiAgb3RoZXJ3aXNlLjwvcHJlPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPlBvaW50ZXIgdG8gYW4gYWJzdHJhY3QgQlpGSUxFCiAgaWYgYnplcnJvciBpcyBCWl9PSwpOVUxMCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6UmVhZAogIGlmIGJ6ZXJyb3IgaXMgQlpfT0sKQloyX2J6Q2xvc2UKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJienJlYWQiPjwvYT4zLjQuMi6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6UmVhZCAoIGludCAqYnplcnJvciwgQlpGSUxFICpiLCB2b2lkICpidWYsIGludCBsZW4gKTs8L3ByZT4KPHA+UmVhZHMgdXAgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5sZW48L2NvZGU+Cih1bmNvbXByZXNzZWQpIGJ5dGVzIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmI8L2NvZGU+IGludG8gdGhlIGJ1ZmZlcgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ1ZjwvY29kZT4uICBJZiB0aGUgcmVhZCB3YXMKc3VjY2Vzc2Z1bCwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiBpcyBzZXQgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9PSzwvY29kZT4gYW5kIHRoZSBudW1iZXIgb2YgYnl0ZXMKcmVhZCBpcyByZXR1cm5lZC4gIElmIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0gd2FzIGRldGVjdGVkLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IHdpbGwgYmUgc2V0IHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4sIGFuZCB0aGUgbnVtYmVyIG9mCmJ5dGVzIHJlYWQgaXMgcmV0dXJuZWQuICBBbGwgb3RoZXIKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPiB2YWx1ZXMgZGVub3RlIGFuCmVycm9yLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiB3aWxsIHN1cHBseQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxlbjwvY29kZT4gYnl0ZXMsIHVubGVzcyB0aGUgbG9naWNhbApzdHJlYW0gZW5kIGlzIGRldGVjdGVkIG9yIGFuIGVycm9yIG9jY3Vycy4gIEJlY2F1c2Ugb2YgdGhpcywgaXQKaXMgcG9zc2libGUgdG8gZGV0ZWN0IHRoZSBzdHJlYW0gZW5kIGJ5IG9ic2VydmluZyB3aGVuIHRoZSBudW1iZXIKb2YgYnl0ZXMgcmV0dXJuZWQgaXMgbGVzcyB0aGFuIHRoZSBudW1iZXIgcmVxdWVzdGVkLgpOZXZlcnRoZWxlc3MsIHRoaXMgaXMgcmVnYXJkZWQgYXMgaW5hZHZpc2FibGU7IHlvdSBzaG91bGQgaW5zdGVhZApjaGVjayA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+IGFmdGVyIGV2ZXJ5IGNhbGwKYW5kIHdhdGNoIG91dCBmb3IKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9TVFJFQU1fRU5EPC9jb2RlPi48L3A+CjxwPkludGVybmFsbHksIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4KY29waWVzIGRhdGEgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIGluIGNodW5rcyBvZiBzaXplCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTUFYX1VOVVNFRDwvY29kZT4gYnl0ZXMgYmVmb3JlCmRlY29tcHJlc3NpbmcgaXQuICBJZiB0aGUgZmlsZSBjb250YWlucyBtb3JlIGJ5dGVzIHRoYW4gc3RyaWN0bHkKbmVlZGVkIHRvIHJlYWNoIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gd2lsbCBhbG1vc3QgY2VydGFpbmx5CnJlYWQgc29tZSBvZiB0aGUgdHJhaWxpbmcgZGF0YSBiZWZvcmUgc2lnbmFsbGluZwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NFUVVFTkNFX0VORDwvY29kZT4uICBUbyBjb2xsZWN0IHRoZQpyZWFkIGJ1dCB1bnVzZWQgZGF0YSBvbmNlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU0VRVUVOQ0VfRU5EPC9jb2RlPiBoYXMgYXBwZWFyZWQsCmNhbGwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb2RlPgppbW1lZGlhdGVseSBiZWZvcmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+LjwvcD4KPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9QQVJBTV9FUlJPUgogIGlmIGIgaXMgTlVMTCBvciBidWYgaXMgTlVMTCBvciBsZW4gJmx0OyAwCkJaX1NFUVVFTkNFX0VSUk9SCiAgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6V3JpdGVPcGVuCkJaX0lPX0VSUk9SCiAgaWYgdGhlcmUgaXMgYW4gZXJyb3IgcmVhZGluZyBmcm9tIHRoZSBjb21wcmVzc2VkIGZpbGUKQlpfVU5FWFBFQ1RFRF9FT0YKICBpZiB0aGUgY29tcHJlc3NlZCBmaWxlIGVuZGVkIGJlZm9yZSAKICB0aGUgbG9naWNhbCBlbmQtb2Ytc3RyZWFtIHdhcyBkZXRlY3RlZApCWl9EQVRBX0VSUk9SCiAgaWYgYSBkYXRhIGludGVncml0eSBlcnJvciB3YXMgZGV0ZWN0ZWQgaW4gdGhlIGNvbXByZXNzZWQgc3RyZWFtCkJaX0RBVEFfRVJST1JfTUFHSUMKICBpZiB0aGUgc3RyZWFtIGRvZXMgbm90IGJlZ2luIHdpdGggdGhlIHJlcXVpc2l0ZSBoZWFkZXIgYnl0ZXMgCiAgKGllLCBpcyBub3QgYSBiemlwMiBkYXRhIGZpbGUpLiAgVGhpcyBpcyByZWFsbHkgCiAgYSBzcGVjaWFsIGNhc2Ugb2YgQlpfREFUQV9FUlJPUi4KQlpfTUVNX0VSUk9SCiAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSB3YXMgYXZhaWxhYmxlCkJaX1NUUkVBTV9FTkQKICBpZiB0aGUgbG9naWNhbCBlbmQgb2Ygc3RyZWFtIHdhcyBkZXRlY3RlZC4KQlpfT0sKICBvdGhlcndpc2UuPC9wcmU+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+bnVtYmVyIG9mIGJ5dGVzIHJlYWQKICBpZiBiemVycm9yIGlzIEJaX09LIG9yIEJaX1NUUkVBTV9FTkQKdW5kZWZpbmVkCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29sbGVjdCBkYXRhIGZyb20gYnVmLCB0aGVuIEJaMl9ielJlYWQgb3IgQloyX2J6UmVhZENsb3NlCiAgaWYgYnplcnJvciBpcyBCWl9PSwpjb2xsZWN0IGRhdGEgZnJvbSBidWYsIHRoZW4gQloyX2J6UmVhZENsb3NlIG9yIEJaMl9ielJlYWRHZXRVbnVzZWQKICBpZiBiemVycm9yIGlzIEJaX1NFUVVFTkNFX0VORApCWjJfYnpSZWFkQ2xvc2UKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJienJlYWRnZXR1bnVzZWQiPjwvYT4zLjQuMy6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkIEJaMl9ielJlYWRHZXRVbnVzZWQoIGludCogYnplcnJvciwgQlpGSUxFICpiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiogdW51c2VkLCBpbnQqIG5VbnVzZWQgKTs8L3ByZT4KPHA+UmV0dXJucyBkYXRhIHdoaWNoIHdhcyByZWFkIGZyb20gdGhlIGNvbXByZXNzZWQgZmlsZSBidXQKd2FzIG5vdCBuZWVkZWQgdG8gZ2V0IHRvIHRoZSBsb2dpY2FsIGVuZC1vZi1zdHJlYW0uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KnVudXNlZDwvY29kZT4gaXMgc2V0IHRvIHRoZSBhZGRyZXNzIG9mCnRoZSBkYXRhLCBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qblVudXNlZDwvY29kZT4gdG8gdGhlCm51bWJlciBvZiBieXRlcy4gIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Km5VbnVzZWQ8L2NvZGU+IHdpbGwKYmUgc2V0IHRvIGEgdmFsdWUgYmV0d2VlbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjA8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01BWF9VTlVTRUQ8L2NvZGU+IGluY2x1c2l2ZS48L3A+CjxwPlRoaXMgZnVuY3Rpb24gbWF5IG9ubHkgYmUgY2FsbGVkIG9uY2UKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPiBoYXMgc2lnbmFsbGVkCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gYnV0IGJlZm9yZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRDbG9zZTwvY29kZT4uPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SCiAgaWYgYiBpcyBOVUxMCiAgb3IgdW51c2VkIGlzIE5VTEwgb3IgblVudXNlZCBpcyBOVUxMCkJaX1NFUVVFTkNFX0VSUk9SCiAgaWYgQlpfU1RSRUFNX0VORCBoYXMgbm90IGJlZW4gc2lnbmFsbGVkCiAgb3IgaWYgYiB3YXMgb3BlbmVkIHdpdGggQloyX2J6V3JpdGVPcGVuCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6UmVhZENsb3NlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnpyZWFkY2xvc2UiPjwvYT4zLjQuNC6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+PC9oMz48L2Rpdj48L2Rpdj48L2Rpdj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnZvaWQgQloyX2J6UmVhZENsb3NlICggaW50ICpiemVycm9yLCBCWkZJTEUgKmIgKTs8L3ByZT4KPHA+UmVsZWFzZXMgYWxsIG1lbW9yeSBwZXJ0YWluaW5nIHRvIHRoZSBjb21wcmVzc2VkIGZpbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iPC9jb2RlPi4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+IGRvZXMgbm90IGNhbGwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mY2xvc2U8L2NvZGU+IG9uIHRoZSB1bmRlcmx5aW5nIGZpbGUKaGFuZGxlLCBzbyB5b3Ugc2hvdWxkIGRvIHRoYXQgeW91cnNlbGYgaWYgYXBwcm9wcmlhdGUuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZENsb3NlPC9jb2RlPiBzaG91bGQgYmUgY2FsbGVkCnRvIGNsZWFuIHVwIGFmdGVyIGFsbCBlcnJvciBzaXR1YXRpb25zLjwvcD4KPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9TRVFVRU5DRV9FUlJPUgogIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9iek9wZW5Xcml0ZQpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8cD5BbGxvd2FibGUgbmV4dCBhY3Rpb25zOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPm5vbmU8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiendyaXRlb3BlbiI+PC9hPjMuNC41LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlT3BlbjwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpGSUxFICpCWjJfYnpXcml0ZU9wZW4oIGludCAqYnplcnJvciwgRklMRSAqZiwgCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmxvY2tTaXplMTAwaywgaW50IHZlcmJvc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCB3b3JrRmFjdG9yICk7PC9wcmU+CjxwPlByZXBhcmUgdG8gd3JpdGUgY29tcHJlc3NlZCBkYXRhIHRvIGZpbGUgaGFuZGxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZjwvY29kZT4gc2hvdWxkIHJlZmVyIHRvIGEgZmlsZSB3aGljaApoYXMgYmVlbiBvcGVuZWQgZm9yIHdyaXRpbmcsIGFuZCBmb3Igd2hpY2ggdGhlIGVycm9yIGluZGljYXRvcgooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZXJyb3IoZik8L2NvZGU+KWlzIG5vdCBzZXQuPC9wPgo8cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJsb2NrU2l6ZTEwMGs8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnZlcmJvc2l0eTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+d29ya0ZhY3RvcjwvY29kZT4sIHNlZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzSW5pdDwvY29kZT4uPC9wPgo8cD5BbGwgcmVxdWlyZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCBhdCB0aGlzIHN0YWdlLCBzbyBpZiB0aGUKY2FsbCBjb21wbGV0ZXMgc3VjY2Vzc2Z1bGx5LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX01FTV9FUlJPUjwvY29kZT4gY2Fubm90IGJlIHNpZ25hbGxlZApieSBhIHN1YnNlcXVlbnQgY2FsbCB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPi48L3A+CjxwPlBvc3NpYmxlIGFzc2lnbm1lbnRzIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnplcnJvcjwvY29kZT46PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgZiBpcyBOVUxMCiAgb3IgYmxvY2tTaXplMTAwayAmbHQ7IDEgb3IgYmxvY2tTaXplMTAwayAmZ3Q7IDkKQlpfSU9fRVJST1IKICBpZiBmZXJyb3IoZikgaXMgbm9uemVybwpCWl9NRU1fRVJST1IKICBpZiBpbnN1ZmZpY2llbnQgbWVtb3J5IGlzIGF2YWlsYWJsZQpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPlBvaW50ZXIgdG8gYW4gYWJzdHJhY3QgQlpGSUxFCiAgaWYgYnplcnJvciBpcyBCWl9PSwpOVUxMCiAgb3RoZXJ3aXNlPC9wcmU+CjxwPkFsbG93YWJsZSBuZXh0IGFjdGlvbnM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QloyX2J6V3JpdGUKICBpZiBiemVycm9yIGlzIEJaX09LCiAgKHlvdSBjb3VsZCBnbyBkaXJlY3RseSB0byBCWjJfYnpXcml0ZUNsb3NlLCBidXQgdGhpcyB3b3VsZCBiZSBwcmV0dHkgcG9pbnRsZXNzKQpCWjJfYnpXcml0ZUNsb3NlCiAgb3RoZXJ3aXNlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iYnp3cml0ZSI+PC9hPjMuNC42LqA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkIEJaMl9ieldyaXRlICggaW50ICpiemVycm9yLCBCWkZJTEUgKmIsIHZvaWQgKmJ1ZiwgaW50IGxlbiApOzwvcHJlPgo8cD5BYnNvcmJzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGVuPC9jb2RlPiBieXRlcyBmcm9tIHRoZQpidWZmZXIgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5idWY8L2NvZGU+LCBldmVudHVhbGx5IHRvIGJlCmNvbXByZXNzZWQgYW5kIHdyaXR0ZW4gdG8gdGhlIGZpbGUuPC9wPgo8cD5Qb3NzaWJsZSBhc3NpZ25tZW50cyB0bwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6ZXJyb3I8L2NvZGU+OjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX1BBUkFNX0VSUk9SCiAgaWYgYiBpcyBOVUxMIG9yIGJ1ZiBpcyBOVUxMIG9yIGxlbiAmbHQ7IDAKQlpfU0VRVUVOQ0VfRVJST1IKICBpZiBiIHdhcyBvcGVuZWQgd2l0aCBCWjJfYnpSZWFkT3BlbgpCWl9JT19FUlJPUgogIGlmIHRoZXJlIGlzIGFuIGVycm9yIHdyaXRpbmcgdGhlIGNvbXByZXNzZWQgZmlsZS4KQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJiendyaXRlY2xvc2UiPjwvYT4zLjQuNy6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZUNsb3NlPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj52b2lkIEJaMl9ieldyaXRlQ2xvc2UoIGludCAqYnplcnJvciwgQlpGSUxFKiBmLAogICAgICAgICAgICAgICAgICAgICAgIGludCBhYmFuZG9uLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX2luLAogICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX291dCApOwoKdm9pZCBCWjJfYnpXcml0ZUNsb3NlNjQoIGludCAqYnplcnJvciwgQlpGSUxFKiBmLAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFiYW5kb24sCiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQqIG5ieXRlc19pbl9sbzMyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfaW5faGkzMiwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogbmJ5dGVzX291dF9sbzMyLAogICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBuYnl0ZXNfb3V0X2hpMzIgKTs8L3ByZT4KPHA+Q29tcHJlc3NlcyBhbmQgZmx1c2hlcyB0byB0aGUgY29tcHJlc3NlZCBmaWxlIGFsbCBkYXRhIHNvCmZhciBzdXBwbGllZCBieSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ieldyaXRlPC9jb2RlPi4KVGhlIGxvZ2ljYWwgZW5kLW9mLXN0cmVhbSBtYXJrZXJzIGFyZSBhbHNvIHdyaXR0ZW4sIHNvIHN1YnNlcXVlbnQKY2FsbHMgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpXcml0ZTwvY29kZT4gYXJlCmlsbGVnYWwuICBBbGwgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tcHJlc3NlZCBmaWxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YjwvY29kZT4gaXMgcmVsZWFzZWQuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmZsdXNoPC9jb2RlPiBpcyBjYWxsZWQgb24gdGhlCmNvbXByZXNzZWQgZmlsZSwgYnV0IGl0IGlzIG5vdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZjbG9zZTwvY29kZT4nZC48L3A+CjxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4gaXMKY2FsbGVkIHRvIGNsZWFuIHVwIGFmdGVyIGFuIGVycm9yLCB0aGUgb25seSBhY3Rpb24gaXMgdG8gcmVsZWFzZQp0aGUgbWVtb3J5LiAgVGhlIGxpYnJhcnkgcmVjb3JkcyB0aGUgZXJyb3IgY29kZXMgaXNzdWVkIGJ5CnByZXZpb3VzIGNhbGxzLCBzbyB0aGlzIHNpdHVhdGlvbiB3aWxsIGJlIGRldGVjdGVkIGF1dG9tYXRpY2FsbHkuClRoZXJlIGlzIG5vIGF0dGVtcHQgdG8gY29tcGxldGUgdGhlIGNvbXByZXNzaW9uIG9wZXJhdGlvbiwgbm9yIHRvCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZmZsdXNoPC9jb2RlPiB0aGUgY29tcHJlc3NlZCBmaWxlLiAgWW91CmNhbiBmb3JjZSB0aGlzIGJlaGF2aW91ciB0byBoYXBwZW4gZXZlbiBpbiB0aGUgY2FzZSBvZiBubyBlcnJvciwKYnkgcGFzc2luZyBhIG5vbnplcm8gdmFsdWUgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hYmFuZG9uPC9jb2RlPi48L3A+CjxwPklmIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmJ5dGVzX2luPC9jb2RlPiBpcyBub24tbnVsbCwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qbmJ5dGVzX2luPC9jb2RlPiB3aWxsIGJlIHNldCB0byBiZSB0aGUKdG90YWwgdm9sdW1lIG9mIHVuY29tcHJlc3NlZCBkYXRhIGhhbmRsZWQuICBTaW1pbGFybHksCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bmJ5dGVzX291dDwvY29kZT4gd2lsbCBiZSBzZXQgdG8gdGhlCnRvdGFsIHZvbHVtZSBvZiBjb21wcmVzc2VkIGRhdGEgd3JpdHRlbi4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGgKb2xkZXIgdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnksCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTwvY29kZT4gb25seSB5aWVsZHMgdGhlCmxvd2VyIDMyIGJpdHMgb2YgdGhlc2UgY291bnRzLiAgVXNlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6V3JpdGVDbG9zZTY0PC9jb2RlPiBpZiB5b3Ugd2FudAp0aGUgZnVsbCA2NCBiaXQgY291bnRzLiAgVGhlc2UgdHdvIGZ1bmN0aW9ucyBhcmUgb3RoZXJ3aXNlCmFic29sdXRlbHkgaWRlbnRpY2FsLjwvcD4KPHA+UG9zc2libGUgYXNzaWdubWVudHMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemVycm9yPC9jb2RlPjo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5CWl9TRVFVRU5DRV9FUlJPUgogIGlmIGIgd2FzIG9wZW5lZCB3aXRoIEJaMl9ielJlYWRPcGVuCkJaX0lPX0VSUk9SCiAgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd3JpdGluZyB0aGUgY29tcHJlc3NlZCBmaWxlCkJaX09LCiAgb3RoZXJ3aXNlPC9wcmU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0iZW1iZWQiPjwvYT4zLjQuOC6gSGFuZGxpbmcgZW1iZWRkZWQgY29tcHJlc3NlZCBkYXRhIHN0cmVhbXM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5UaGUgaGlnaC1sZXZlbCBsaWJyYXJ5IGZhY2lsaXRhdGVzIHVzZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkYXRhIHN0cmVhbXMgd2hpY2ggZm9ybQpzb21lIHBhcnQgb2YgYSBzdXJyb3VuZGluZywgbGFyZ2VyIGRhdGEgc3RyZWFtLjwvcD4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPkZvciB3cml0aW5nLCB0aGUgbGlicmFyeSB0YWtlcyBhbiBvcGVuIGZpbGUgaGFuZGxlLAogIHdyaXRlcyBjb21wcmVzc2VkIGRhdGEgdG8gaXQsCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZmx1c2g8L2NvZGU+ZXMgaXQgYnV0IGRvZXMgbm90CiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mY2xvc2U8L2NvZGU+IGl0LiAgVGhlIGNhbGxpbmcKICBhcHBsaWNhdGlvbiBjYW4gd3JpdGUgaXRzIG93biBkYXRhIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlCiAgY29tcHJlc3NlZCBkYXRhIHN0cmVhbSwgdXNpbmcgdGhhdCBzYW1lIGZpbGUgaGFuZGxlLjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+UmVhZGluZyBpcyBtb3JlIGNvbXBsZXgsIGFuZCB0aGUgZmFjaWxpdGllcyBhcmUgbm90IGFzCiAgZ2VuZXJhbCBhcyB0aGV5IGNvdWxkIGJlIHNpbmNlIGdlbmVyYWxpdHkgaXMgaGFyZCB0byByZWNvbmNpbGUKICB3aXRoIGVmZmljaWVuY3kuICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWQ8L2NvZGU+CiAgcmVhZHMgZnJvbSB0aGUgY29tcHJlc3NlZCBmaWxlIGluIGJsb2NrcyBvZiBzaXplCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWl9NQVhfVU5VU0VEPC9jb2RlPiBieXRlcywgYW5kIGluCiAgZG9pbmcgc28gcHJvYmFibHkgd2lsbCBvdmVyc2hvb3QgdGhlIGxvZ2ljYWwgZW5kIG9mIGNvbXByZXNzZWQKICBzdHJlYW0uICBUbyByZWNvdmVyIHRoaXMgZGF0YSBvbmNlIGRlY29tcHJlc3Npb24gaGFzIGVuZGVkLAogIGNhbGwgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkR2V0VW51c2VkPC9jb2RlPiBhZnRlcgogIHRoZSBsYXN0IGNhbGwgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkPC9jb2RlPgogICh0aGUgb25lIHJldHVybmluZwogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4pIGJ1dCBiZWZvcmUKICBjYWxsaW5nCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkQ2xvc2U8L2NvZGU+LjwvcD48L2xpPgo8L3VsPjwvZGl2Pgo8cD5UaGlzIG1lY2hhbmlzbSBtYWtlcyBpdCBlYXN5IHRvIGRlY29tcHJlc3MgbXVsdGlwbGUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gc3RyZWFtcyBwbGFjZWQgZW5kLXRvLWVuZC4KQXMgdGhlIGVuZCBvZiBvbmUgc3RyZWFtLCB3aGVuCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZDwvY29kZT4gcmV0dXJucwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUkVBTV9FTkQ8L2NvZGU+LCBjYWxsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6UmVhZEdldFVudXNlZDwvY29kZT4gdG8gY29sbGVjdAp0aGUgdW51c2VkIGRhdGEgKGNvcHkgaXQgaW50byB5b3VyIG93biBidWZmZXIgc29tZXdoZXJlKS4gIFRoYXQKZGF0YSBmb3JtcyB0aGUgc3RhcnQgb2YgdGhlIG5leHQgY29tcHJlc3NlZCBzdHJlYW0uICBUbyBzdGFydAp1bmNvbXByZXNzaW5nIHRoYXQgbmV4dCBzdHJlYW0sIGNhbGwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpSZWFkT3BlbjwvY29kZT4gYWdhaW4sIGZlZWRpbmcgaW4KdGhlIHVudXNlZCBkYXRhIHZpYSB0aGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij51bnVzZWQ8L2NvZGU+IC8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5uVW51c2VkPC9jb2RlPiBwYXJhbWV0ZXJzLiAgS2VlcCBkb2luZwp0aGlzIHVudGlsIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfU1RSRUFNX0VORDwvY29kZT4gcmV0dXJuCmNvaW5jaWRlcyB3aXRoIHRoZSBwaHlzaWNhbCBlbmQgb2YgZmlsZQooPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZW9mKGYpPC9jb2RlPikuICBJbiB0aGlzIHNpdHVhdGlvbgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9ielJlYWRHZXRVbnVzZWQ8L2NvZGU+IHdpbGwgb2YKY291cnNlIHJldHVybiBubyBkYXRhLjwvcD4KPHA+VGhpcyBzaG91bGQgZ2l2ZSBzb21lIGZlZWwgZm9yIGhvdyB0aGUgaGlnaC1sZXZlbCBpbnRlcmZhY2UKY2FuIGJlIHVzZWQuICBJZiB5b3UgcmVxdWlyZSBleHRyYSBmbGV4aWJpbGl0eSwgeW91J2xsIGhhdmUgdG8KYml0ZSB0aGUgYnVsbGV0IGFuZCBnZXQgdG8gZ3JpcHMgd2l0aCB0aGUgbG93LWxldmVsCmludGVyZmFjZS48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0ic3RkLXJkd3IiPjwvYT4zLjQuOS6gU3RhbmRhcmQgZmlsZS1yZWFkaW5nL3dyaXRpbmcgY29kZTwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkhlcmUncyBob3cgeW91J2Qgd3JpdGUgZGF0YSB0byBhIGNvbXByZXNzZWQgZmlsZTo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5GSUxFKiAgIGY7CkJaRklMRSogYjsKaW50ICAgICBuQnVmOwpjaGFyICAgIGJ1ZlsgLyogd2hhdGV2ZXIgc2l6ZSB5b3UgbGlrZSAqLyBdOwppbnQgICAgIGJ6ZXJyb3I7CmludCAgICAgbldyaXR0ZW47CgpmID0gZm9wZW4gKCAibXlmaWxlLmJ6MiIsICJ3IiApOwppZiAoICFmICkgewogLyogaGFuZGxlIGVycm9yICovCn0KYiA9IEJaMl9ieldyaXRlT3BlbiggJmFtcDtiemVycm9yLCBmLCA5ICk7CmlmIChiemVycm9yICE9IEJaX09LKSB7CiBCWjJfYnpXcml0ZUNsb3NlICggYiApOwogLyogaGFuZGxlIGVycm9yICovCn0KCndoaWxlICggLyogY29uZGl0aW9uICovICkgewogLyogZ2V0IGRhdGEgdG8gd3JpdGUgaW50byBidWYsIGFuZCBzZXQgbkJ1ZiBhcHByb3ByaWF0ZWx5ICovCiBuV3JpdHRlbiA9IEJaMl9ieldyaXRlICggJmFtcDtiemVycm9yLCBiLCBidWYsIG5CdWYgKTsKIGlmIChiemVycm9yID09IEJaX0lPX0VSUk9SKSB7IAogICBCWjJfYnpXcml0ZUNsb3NlICggJmFtcDtiemVycm9yLCBiICk7CiAgIC8qIGhhbmRsZSBlcnJvciAqLwogfQp9CgpCWjJfYnpXcml0ZUNsb3NlKCAmYW1wO2J6ZXJyb3IsIGIgKTsKaWYgKGJ6ZXJyb3IgPT0gQlpfSU9fRVJST1IpIHsKIC8qIGhhbmRsZSBlcnJvciAqLwp9PC9wcmU+CjxwPkFuZCB0byByZWFkIGZyb20gYSBjb21wcmVzc2VkIGZpbGU6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+RklMRSogICBmOwpCWkZJTEUqIGI7CmludCAgICAgbkJ1ZjsKY2hhciAgICBidWZbIC8qIHdoYXRldmVyIHNpemUgeW91IGxpa2UgKi8gXTsKaW50ICAgICBiemVycm9yOwppbnQgICAgIG5Xcml0dGVuOwoKZiA9IGZvcGVuICggIm15ZmlsZS5iejIiLCAiciIgKTsKaWYgKCAhZiApIHsKICAvKiBoYW5kbGUgZXJyb3IgKi8KfQpiID0gQloyX2J6UmVhZE9wZW4gKCAmYW1wO2J6ZXJyb3IsIGYsIDAsIE5VTEwsIDAgKTsKaWYgKCBiemVycm9yICE9IEJaX09LICkgewogIEJaMl9ielJlYWRDbG9zZSAoICZhbXA7YnplcnJvciwgYiApOwogIC8qIGhhbmRsZSBlcnJvciAqLwp9CgpiemVycm9yID0gQlpfT0s7CndoaWxlICggYnplcnJvciA9PSBCWl9PSyAmYW1wOyZhbXA7IC8qIGFyYml0cmFyeSBvdGhlciBjb25kaXRpb25zICovKSB7CiAgbkJ1ZiA9IEJaMl9ielJlYWQgKCAmYW1wO2J6ZXJyb3IsIGIsIGJ1ZiwgLyogc2l6ZSBvZiBidWYgKi8gKTsKICBpZiAoIGJ6ZXJyb3IgPT0gQlpfT0sgKSB7CiAgICAvKiBkbyBzb21ldGhpbmcgd2l0aCBidWZbMCAuLiBuQnVmLTFdICovCiAgfQp9CmlmICggYnplcnJvciAhPSBCWl9TVFJFQU1fRU5EICkgewogICBCWjJfYnpSZWFkQ2xvc2UgKCAmYW1wO2J6ZXJyb3IsIGIgKTsKICAgLyogaGFuZGxlIGVycm9yICovCn0gZWxzZSB7CiAgIEJaMl9ielJlYWRDbG9zZSAoICZhbXA7YnplcnJvciwgYiApOwp9PC9wcmU+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0idXRpbC1mbnMiPjwvYT4zLjUuoFV0aWxpdHkgZnVuY3Rpb25zPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6YnVmZnRvYnVmZmNvbXByZXNzIj48L2E+My41LjEuoDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6QnVmZlRvQnVmZkNvbXByZXNzPC9jb2RlPjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgQloyX2J6QnVmZlRvQnVmZkNvbXByZXNzKCBjaGFyKiAgICAgICAgIGRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCogZGVzdExlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciogICAgICAgICBzb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgc291cmNlTGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIGJsb2NrU2l6ZTEwMGssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgdmVyYm9zaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgIHdvcmtGYWN0b3IgKTs8L3ByZT4KPHA+QXR0ZW1wdHMgdG8gY29tcHJlc3MgdGhlIGRhdGEgaW4gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zb3VyY2VbMAouLiBzb3VyY2VMZW4tMV08L2NvZGU+IGludG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kZXN0WzAgLi4gKmRlc3RMZW4tMV08L2NvZGU+LiAgSWYgdGhlCmRlc3RpbmF0aW9uIGJ1ZmZlciBpcyBiaWcgZW5vdWdoLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipkZXN0TGVuPC9jb2RlPiBpcyBzZXQgdG8gdGhlIHNpemUgb2YKdGhlIGNvbXByZXNzZWQgZGF0YSwgYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT0s8L2NvZGU+CmlzIHJldHVybmVkLiAgSWYgdGhlIGNvbXByZXNzZWQgZGF0YSB3b24ndCBmaXQsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KmRlc3RMZW48L2NvZGU+IGlzIHVuY2hhbmdlZCwgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfT1VUQlVGRl9GVUxMPC9jb2RlPiBpcwpyZXR1cm5lZC48L3A+CjxwPkNvbXByZXNzaW9uIGluIHRoaXMgbWFubmVyIGlzIGEgb25lLXNob3QgZXZlbnQsIGRvbmUgd2l0aCBhCnNpbmdsZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24uICBUaGUgcmVzdWx0aW5nIGNvbXByZXNzZWQgZGF0YSBpcyBhCmNvbXBsZXRlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGZvcm1hdCBkYXRhCnN0cmVhbS4gIFRoZXJlIGlzIG5vIG1lY2hhbmlzbSBmb3IgbWFraW5nIGFkZGl0aW9uYWwgY2FsbHMgdG8KcHJvdmlkZSBleHRyYSBpbnB1dCBkYXRhLiAgSWYgeW91IHdhbnQgdGhhdCBraW5kIG9mIG1lY2hhbmlzbSwKdXNlIHRoZSBsb3ctbGV2ZWwgaW50ZXJmYWNlLjwvcD4KPHA+Rm9yIHRoZSBtZWFuaW5nIG9mIHBhcmFtZXRlcnMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ibG9ja1NpemUxMDBrPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPndvcmtGYWN0b3I8L2NvZGU+LCBzZWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LjwvcD4KPHA+VG8gZ3VhcmFudGVlIHRoYXQgdGhlIGNvbXByZXNzZWQgZGF0YSB3aWxsIGZpdCBpbiBpdHMKYnVmZmVyLCBhbGxvY2F0ZSBhbiBvdXRwdXQgYnVmZmVyIG9mIHNpemUgMSUgbGFyZ2VyIHRoYW4gdGhlCnVuY29tcHJlc3NlZCBkYXRhLCBwbHVzIHNpeCBodW5kcmVkIGV4dHJhIGJ5dGVzLjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT4Kd2lsbCBub3Qgd3JpdGUgZGF0YSBhdCBvciBiZXlvbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5kZXN0WypkZXN0TGVuXTwvY29kZT4sIGV2ZW4gaW4gY2FzZSBvZgpidWZmZXIgb3ZlcmZsb3cuPC9wPgo8cD5Qb3NzaWJsZSByZXR1cm4gdmFsdWVzOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaX0NPTkZJR19FUlJPUgogIGlmIHRoZSBsaWJyYXJ5IGhhcyBiZWVuIG1pcy1jb21waWxlZApCWl9QQVJBTV9FUlJPUgogIGlmIGRlc3QgaXMgTlVMTCBvciBkZXN0TGVuIGlzIE5VTEwKICBvciBibG9ja1NpemUxMDBrICZsdDsgMSBvciBibG9ja1NpemUxMDBrICZndDsgOQogIG9yIHZlcmJvc2l0eSAmbHQ7IDAgb3IgdmVyYm9zaXR5ICZndDsgNAogIG9yIHdvcmtGYWN0b3IgJmx0OyAwIG9yIHdvcmtGYWN0b3IgJmd0OyAyNTAKQlpfTUVNX0VSUk9SCiAgaWYgaW5zdWZmaWNpZW50IG1lbW9yeSBpcyBhdmFpbGFibGUgCkJaX09VVEJVRkZfRlVMTAogIGlmIHRoZSBzaXplIG9mIHRoZSBjb21wcmVzc2VkIGRhdGEgZXhjZWVkcyAqZGVzdExlbgpCWl9PSwogIG90aGVyd2lzZTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDIiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9ImJ6YnVmZnRvYnVmZmRlY29tcHJlc3MiPjwvYT4zLjUuMi6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmRGVjb21wcmVzczwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+aW50IEJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzKCBjaGFyKiAgICAgICAgIGRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50KiBkZXN0TGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIqICAgICAgICAgc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAgc291cmNlTGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgc21hbGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICB2ZXJib3NpdHkgKTs8L3ByZT4KPHA+QXR0ZW1wdHMgdG8gZGVjb21wcmVzcyB0aGUgZGF0YSBpbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNvdXJjZVswCi4uIHNvdXJjZUxlbi0xXTwvY29kZT4gaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlc3RbMCAuLiAqZGVzdExlbi0xXTwvY29kZT4uICBJZiB0aGUKZGVzdGluYXRpb24gYnVmZmVyIGlzIGJpZyBlbm91Z2gsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+KmRlc3RMZW48L2NvZGU+IGlzIHNldCB0byB0aGUgc2l6ZSBvZgp0aGUgdW5jb21wcmVzc2VkIGRhdGEsIGFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09LPC9jb2RlPgppcyByZXR1cm5lZC4gIElmIHRoZSBjb21wcmVzc2VkIGRhdGEgd29uJ3QgZml0LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPipkZXN0TGVuPC9jb2RlPiBpcyB1bmNoYW5nZWQsIGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX09VVEJVRkZfRlVMTDwvY29kZT4gaXMKcmV0dXJuZWQuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNvdXJjZTwvY29kZT4gaXMgYXNzdW1lZCB0byBob2xkCmEgY29tcGxldGUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZm9ybWF0IGRhdGEKc3RyZWFtLgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPiB0cmllcwp0byBkZWNvbXByZXNzIHRoZSBlbnRpcmV0eSBvZiB0aGUgc3RyZWFtIGludG8gdGhlIG91dHB1dApidWZmZXIuPC9wPgo8cD5Gb3IgdGhlIG1lYW5pbmcgb2YgcGFyYW1ldGVycwo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnNtYWxsPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+LCBzZWUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT4uPC9wPgo8cD5CZWNhdXNlIHRoZSBjb21wcmVzc2lvbiByYXRpbyBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGNhbm5vdApiZSBrbm93biBpbiBhZHZhbmNlLCB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBndWFyYW50ZWUgdGhhdCB0aGUKb3V0cHV0IGJ1ZmZlciB3aWxsIGJlIGJpZyBlbm91Z2guICBZb3UgbWF5IG9mIGNvdXJzZSBtYWtlCmFycmFuZ2VtZW50cyBpbiB5b3VyIGNvZGUgdG8gcmVjb3JkIHRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQKZGF0YSwgYnV0IHN1Y2ggYSBtZWNoYW5pc20gaXMgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzCmxpYnJhcnkuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPgp3aWxsIG5vdCB3cml0ZSBkYXRhIGF0IG9yIGJleW9uZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmRlc3RbKmRlc3RMZW5dPC9jb2RlPiwgZXZlbiBpbiBjYXNlIG9mCmJ1ZmZlciBvdmVyZmxvdy48L3A+CjxwPlBvc3NpYmxlIHJldHVybiB2YWx1ZXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+QlpfQ09ORklHX0VSUk9SCiAgaWYgdGhlIGxpYnJhcnkgaGFzIGJlZW4gbWlzLWNvbXBpbGVkCkJaX1BBUkFNX0VSUk9SCiAgaWYgZGVzdCBpcyBOVUxMIG9yIGRlc3RMZW4gaXMgTlVMTAogIG9yIHNtYWxsICE9IDAgJmFtcDsmYW1wOyBzbWFsbCAhPSAxCiAgb3IgdmVyYm9zaXR5ICZsdDsgMCBvciB2ZXJib3NpdHkgJmd0OyA0CkJaX01FTV9FUlJPUgogIGlmIGluc3VmZmljaWVudCBtZW1vcnkgaXMgYXZhaWxhYmxlIApCWl9PVVRCVUZGX0ZVTEwKICBpZiB0aGUgc2l6ZSBvZiB0aGUgY29tcHJlc3NlZCBkYXRhIGV4Y2VlZHMgKmRlc3RMZW4KQlpfREFUQV9FUlJPUgogIGlmIGEgZGF0YSBpbnRlZ3JpdHkgZXJyb3Igd2FzIGRldGVjdGVkIGluIHRoZSBjb21wcmVzc2VkIGRhdGEKQlpfREFUQV9FUlJPUl9NQUdJQwogIGlmIHRoZSBjb21wcmVzc2VkIGRhdGEgZG9lc24ndCBiZWdpbiB3aXRoIHRoZSByaWdodCBtYWdpYyBieXRlcwpCWl9VTkVYUEVDVEVEX0VPRgogIGlmIHRoZSBjb21wcmVzc2VkIGRhdGEgZW5kcyB1bmV4cGVjdGVkbHkKQlpfT0sKICBvdGhlcndpc2U8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJ6bGliLWNvbXBhdCI+PC9hPjMuNi6gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij56bGliPC9jb2RlPiBjb21wYXRpYmlsaXR5IGZ1bmN0aW9uczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPllvc2hpb2thIFRzdW5lbyBoYXMgY29udHJpYnV0ZWQgc29tZSBmdW5jdGlvbnMgdG8gZ2l2ZQpiZXR0ZXIgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij56bGliPC9jb2RlPiBjb21wYXRpYmlsaXR5LgpUaGVzZSBmdW5jdGlvbnMgYXJlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6b3BlbjwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6cmVhZDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6d3JpdGU8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemZsdXNoPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpjbG9zZTwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6ZXJyb3I8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iemxpYlZlcnNpb248L2NvZGU+LiAgVGhlc2UKZnVuY3Rpb25zIGFyZSBub3QgKHlldCkgb2ZmaWNpYWxseSBwYXJ0IG9mIHRoZSBsaWJyYXJ5LiAgSWYgdGhleQpicmVhaywgeW91IGdldCB0byBrZWVwIGFsbCB0aGUgcGllY2VzLiAgTmV2ZXJ0aGVsZXNzLCBJIHRoaW5rCnRoZXkgd29yayBvay48L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHZvaWQgQlpGSUxFOwoKY29uc3QgY2hhciAqIEJaMl9iemxpYlZlcnNpb24gKCB2b2lkICk7PC9wcmU+CjxwPlJldHVybnMgYSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgbGlicmFyeSB2ZXJzaW9uLjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkJaRklMRSAqIEJaMl9iem9wZW4gICggY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSApOwpCWkZJTEUgKiBCWjJfYnpkb3BlbiAoIGludCAgICAgICAgZmQsICAgIGNvbnN0IGNoYXIgKm1vZGUgKTs8L3ByZT4KPHA+T3BlbnMgYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi5iejI8L2NvZGU+IGZpbGUgZm9yCnJlYWRpbmcgb3Igd3JpdGluZywgdXNpbmcgZWl0aGVyIGl0cyBuYW1lIG9yIGEgcHJlLWV4aXN0aW5nIGZpbGUKZGVzY3JpcHRvci4gIEFuYWxvZ291cyB0byA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZvcGVuPC9jb2RlPgphbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZG9wZW48L2NvZGU+LjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmludCBCWjJfYnpyZWFkICAoIEJaRklMRSogYiwgdm9pZCogYnVmLCBpbnQgbGVuICk7CmludCBCWjJfYnp3cml0ZSAoIEJaRklMRSogYiwgdm9pZCogYnVmLCBpbnQgbGVuICk7PC9wcmU+CjxwPlJlYWRzL3dyaXRlcyBkYXRhIGZyb20vdG8gYSBwcmV2aW91c2x5IG9wZW5lZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaRklMRTwvY29kZT4uICBBbmFsb2dvdXMgdG8KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVhZDwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZndyaXRlPC9jb2RlPi48L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5pbnQgIEJaMl9iemZsdXNoICggQlpGSUxFKiBiICk7CnZvaWQgQloyX2J6Y2xvc2UgKCBCWkZJTEUqIGIgKTs8L3ByZT4KPHA+Rmx1c2hlcy9jbG9zZXMgYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaRklMRTwvY29kZT4uCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6Zmx1c2g8L2NvZGU+IGRvZXNuJ3QgYWN0dWFsbHkgZG8KYW55dGhpbmcuICBBbmFsb2dvdXMgdG8gPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mZmx1c2g8L2NvZGU+CmFuZCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmZjbG9zZTwvY29kZT4uPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgY2hhciAqIEJaMl9iemVycm9yICggQlpGSUxFICpiLCBpbnQgKmVycm51bSApPC9wcmU+CjxwPlJldHVybnMgYSBzdHJpbmcgZGVzY3JpYmluZyB0aGUgbW9yZSByZWNlbnQgZXJyb3Igc3RhdHVzIG9mCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YjwvY29kZT4sIGFuZCBhbHNvIHNldHMKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4qZXJybnVtPC9jb2RlPiB0byBpdHMgbnVtZXJpY2FsCnZhbHVlLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InN0ZGlvLWZyZWUiPjwvYT4zLjcuoFVzaW5nIHRoZSBsaWJyYXJ5IGluIGEgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT4tZnJlZSBlbnZpcm9ubWVudDwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJzdGRpby1ieWUiPjwvYT4zLjcuMS6gR2V0dGluZyByaWQgb2YgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5zdGRpbzwvY29kZT48L2gzPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5JbiBhIGRlZXBseSBlbWJlZGRlZCBhcHBsaWNhdGlvbiwgeW91IG1pZ2h0IHdhbnQgdG8gdXNlCmp1c3QgdGhlIG1lbW9yeS10by1tZW1vcnkgZnVuY3Rpb25zLiAgWW91IGNhbiBkbyB0aGlzCmNvbnZlbmllbnRseSBieSBjb21waWxpbmcgdGhlIGxpYnJhcnkgd2l0aCBwcmVwcm9jZXNzb3Igc3ltYm9sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTk9fU1RESU88L2NvZGU+IGRlZmluZWQuICBEb2luZyB0aGlzCmdpdmVzIHlvdSBhIGxpYnJhcnkgY29udGFpbmluZyBvbmx5IHRoZSBmb2xsb3dpbmcgZWlnaHQKZnVuY3Rpb25zOjwvcD4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0luaXQ8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekNvbXByZXNzPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpDb21wcmVzc0VuZDwvY29kZT4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpEZWNvbXByZXNzSW5pdDwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzczwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QloyX2J6RGVjb21wcmVzc0VuZDwvY29kZT4KPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5CWjJfYnpCdWZmVG9CdWZmQ29tcHJlc3M8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaMl9iekJ1ZmZUb0J1ZmZEZWNvbXByZXNzPC9jb2RlPjwvcD4KPHA+V2hlbiBjb21waWxlZCBsaWtlIHRoaXMsIGFsbCBmdW5jdGlvbnMgd2lsbCBpZ25vcmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij52ZXJib3NpdHk8L2NvZGU+IHNldHRpbmdzLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJjcml0aWNhbC1lcnJvciI+PC9hPjMuNy4yLqBDcml0aWNhbCBlcnJvciBoYW5kbGluZzwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnppcDI8L2NvZGU+IGNvbnRhaW5zIGEgbnVtYmVyCm9mIGludGVybmFsIGFzc2VydGlvbiBjaGVja3Mgd2hpY2ggc2hvdWxkLCBuZWVkbGVzcyB0byBzYXksIG5ldmVyCmJlIGFjdGl2YXRlZC4gIE5ldmVydGhlbGVzcywgaWYgYW4gYXNzZXJ0aW9uIHNob3VsZCBmYWlsLApiZWhhdmlvdXIgZGVwZW5kcyBvbiB3aGV0aGVyIG9yIG5vdCB0aGUgbGlicmFyeSB3YXMgY29tcGlsZWQgd2l0aAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX05PX1NURElPPC9jb2RlPiBzZXQuPC9wPgo8cD5Gb3IgYSBub3JtYWwgY29tcGlsZSwgYW4gYXNzZXJ0aW9uIGZhaWx1cmUgeWllbGRzIHRoZQptZXNzYWdlOjwvcD4KPGRpdiBjbGFzcz0iYmxvY2txdW90ZSI+PGJsb2NrcXVvdGUgY2xhc3M9ImJsb2NrcXVvdGUiPgo8cD5iemlwMi9saWJiemlwMjogaW50ZXJuYWwgZXJyb3IgbnVtYmVyIE4uPC9wPgo8cD5UaGlzIGlzIGEgYnVnIGluIGJ6aXAyL2xpYmJ6aXAyLCAxLjAuNSBvZiAxMCBEZWNlbWJlciAyMDA3LgpQbGVhc2UgcmVwb3J0IGl0IHRvIG1lIGF0OiBqc2V3YXJkQGJ6aXAub3JnLiAgSWYgdGhpcyBoYXBwZW5lZAp3aGVuIHlvdSB3ZXJlIHVzaW5nIHNvbWUgcHJvZ3JhbSB3aGljaCB1c2VzIGxpYmJ6aXAyIGFzIGEKY29tcG9uZW50LCB5b3Ugc2hvdWxkIGFsc28gcmVwb3J0IHRoaXMgYnVnIHRvIHRoZSBhdXRob3IocykKb2YgdGhhdCBwcm9ncmFtLiAgUGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHJlcG9ydCB0aGlzIGJ1ZzsKdGltZWx5IGFuZCBhY2N1cmF0ZSBidWcgcmVwb3J0cyBldmVudHVhbGx5IGxlYWQgdG8gaGlnaGVyCnF1YWxpdHkgc29mdHdhcmUuICBUaGFua3MuICBKdWxpYW4gU2V3YXJkLCAxMCBEZWNlbWJlciAyMDA3Lgo8L3A+CjwvYmxvY2txdW90ZT48L2Rpdj4KPHA+d2hlcmUgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5OPC9jb2RlPiBpcyBzb21lIGVycm9yIGNvZGUKbnVtYmVyLiAgSWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5OID09IDEwMDc8L2NvZGU+LCBpdCBhbHNvCnByaW50cyBzb21lIGV4dHJhIHRleHQgYWR2aXNpbmcgdGhlIHJlYWRlciB0aGF0IHVucmVsaWFibGUgbWVtb3J5CmlzIG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBpbnRlcm5hbCBlcnJvciAxMDA3LiAoVGhpcyBpcyBhCmZyZXF1ZW50bHktb2JzZXJ2ZWQtcGhlbm9tZW5vbiB3aXRoIHZlcnNpb25zIDEuMC4wLzEuMC4xKS48L3A+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZXhpdCgzKTwvY29kZT4gaXMgdGhlbgpjYWxsZWQuPC9wPgo8cD5Gb3IgYSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnN0ZGlvPC9jb2RlPi1mcmVlIGxpYnJhcnksCmFzc2VydGlvbiBmYWlsdXJlcyByZXN1bHQgaW4gYSBjYWxsIHRvIGEgZnVuY3Rpb24gZGVjbGFyZWQKYXM6PC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ZXh0ZXJuIHZvaWQgYnpfaW50ZXJuYWxfZXJyb3IgKCBpbnQgZXJyY29kZSApOzwvcHJlPgo8cD5UaGUgcmVsZXZhbnQgY29kZSBpcyBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIuICBZb3Ugc2hvdWxkCnN1cHBseSBzdWNoIGEgZnVuY3Rpb24uPC9wPgo8cD5JbiBlaXRoZXIgY2FzZSwgb25jZSBhbiBhc3NlcnRpb24gZmFpbHVyZSBoYXMgb2NjdXJyZWQsIGFueQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6X3N0cmVhbTwvY29kZT4gcmVjb3JkcyBpbnZvbHZlZCBjYW4KYmUgcmVnYXJkZWQgYXMgaW52YWxpZC4gIFlvdSBzaG91bGQgbm90IGF0dGVtcHQgdG8gcmVzdW1lIG5vcm1hbApvcGVyYXRpb24gd2l0aCB0aGVtLjwvcD4KPHA+WW91IG1heSwgb2YgY291cnNlLCBjaGFuZ2UgY3JpdGljYWwgZXJyb3IgaGFuZGxpbmcgdG8gc3VpdAp5b3VyIG5lZWRzLiAgQXMgSSBzYWlkIGFib3ZlLCBjcml0aWNhbCBlcnJvcnMgaW5kaWNhdGUgYnVncyBpbgp0aGUgbGlicmFyeSBhbmQgc2hvdWxkIG5vdCBvY2N1ci4gIEFsbCAibm9ybWFsIiBlcnJvciBzaXR1YXRpb25zCmFyZSBpbmRpY2F0ZWQgdmlhIGVycm9yIHJldHVybiBjb2RlcyBmcm9tIGZ1bmN0aW9ucywgYW5kIGNhbiBiZQpyZWNvdmVyZWQgZnJvbS48L3A+CjwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0id2luLWRsbCI+PC9hPjMuOC6gTWFraW5nIGEgV2luZG93cyBETEw8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5FdmVyeXRoaW5nIHJlbGF0ZWQgdG8gV2luZG93cyBoYXMgYmVlbiBjb250cmlidXRlZCBieQpZb3NoaW9rYSBUc3VuZW8KKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+dHN1bmVvQHJyLmlpajR1Lm9yLmpwPC9jb2RlPiksIHNvCnlvdSBzaG91bGQgc2VuZCB5b3VyIHF1ZXJpZXMgdG8gaGltIChidXQgcGVyaGFwcyBDYzogbWUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+anNld2FyZEBiemlwLm9yZzwvY29kZT4pLjwvcD4KPHA+TXkgdmFndWUgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRvIGRvIGlzOiB1c2luZyBWaXN1YWwgQysrCjUuMCwgb3BlbiB0aGUgcHJvamVjdCBmaWxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+bGliYnoyLmRzcDwvY29kZT4sIGFuZCBidWlsZC4gIFRoYXQncwphbGwuPC9wPgo8cD5JZiB5b3UgY2FuJ3Qgb3BlbiB0aGUgcHJvamVjdCBmaWxlIGZvciBzb21lIHJlYXNvbiwgbWFrZSBhCm5ldyBvbmUsIG5hbWluZyB0aGVzZSBmaWxlczoKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5ibG9ja3NvcnQuYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnpsaWIuYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Y29tcHJlc3MuYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Y3JjdGFibGUuYzwvY29kZT4sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVjb21wcmVzcy5jPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5odWZmbWFuLmM8L2NvZGU+LAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnJhbmR0YWJsZS5jPC9jb2RlPiBhbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5saWJiejIuZGVmPC9jb2RlPi4gIFlvdSB3aWxsIGFsc28gbmVlZAp0byBuYW1lIHRoZSBoZWFkZXIgZmlsZXMgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemxpYi5oPC9jb2RlPgphbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemxpYl9wcml2YXRlLmg8L2NvZGU+LjwvcD4KPHA+SWYgeW91IGRvbid0IHVzZSBWQysrLCB5b3UgbWF5IG5lZWQgdG8gZGVmaW5lIHRoZQpwcm9wcm9jZXNzb3Igc3ltYm9sCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+X1dJTjMyPC9jb2RlPi48L3A+CjxwPkZpbmFsbHksIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGxsdGVzdC5jPC9jb2RlPiBpcyBhCnNhbXBsZSBwcm9ncmFtIHVzaW5nIHRoZSBETEwuICBJdCBoYXMgYSBwcm9qZWN0IGZpbGUsCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGxsdGVzdC5kc3A8L2NvZGU+LjwvcD4KPHA+SWYgeW91IGp1c3Qgd2FudCBhIG1ha2VmaWxlIGZvciBWaXN1YWwgQywgaGF2ZSBhIGxvb2sgYXQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5tYWtlZmlsZS5tc2M8L2NvZGU+LjwvcD4KPHA+QmUgYXdhcmUgdGhhdCBpZiB5b3UgY29tcGlsZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBpdHNlbGYgb24gV2luMzIsIHlvdSBtdXN0CnNldCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1VOSVg8L2NvZGU+IHRvIDAgYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTENDV0lOMzI8L2NvZGU+IHRvIDEsIGluIHRoZSBmaWxlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIuYzwvY29kZT4sIGJlZm9yZSBjb21waWxpbmcuCk90aGVyd2lzZSB0aGUgcmVzdWx0aW5nIGJpbmFyeSB3b24ndCB3b3JrIGNvcnJlY3RseS48L3A+CjxwPkkgaGF2ZW4ndCB0cmllZCBhbnkgb2YgdGhpcyBzdHVmZiBteXNlbGYsIGJ1dCBpdCBhbGwgbG9va3MKcGxhdXNpYmxlLjwvcD4KPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjaGFwdGVyIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJtaXNjIj48L2E+NC6gTWlzY2VsbGFuZWE8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8ZGl2IGNsYXNzPSJ0b2MiPgo8cD48Yj5UYWJsZSBvZiBDb250ZW50czwvYj48L3A+CjxkbD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2xpbWl0cyI+NC4xLiBMaW1pdGF0aW9ucyBvZiB0aGUgY29tcHJlc3NlZCBmaWxlIGZvcm1hdDwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3BvcnQtaXNzdWVzIj40LjIuIFBvcnRhYmlsaXR5IGlzc3VlczwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI2J1Z3MiPjQuMy4gUmVwb3J0aW5nIGJ1Z3M8L2E+PC9zcGFuPjwvZHQ+CjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNwYWNrYWdlIj40LjQuIERpZCB5b3UgZ2V0IHRoZSByaWdodCBwYWNrYWdlPzwvYT48L3NwYW4+PC9kdD4KPGR0PjxzcGFuIGNsYXNzPSJzZWN0MSI+PGEgaHJlZj0iI3JlYWRpbmciPjQuNS4gRnVydGhlciBSZWFkaW5nPC9hPjwvc3Bhbj48L2R0Pgo8L2RsPgo8L2Rpdj4KPHA+VGhlc2UgYXJlIGp1c3Qgc29tZSByYW5kb20gdGhvdWdodHMgb2YgbWluZS4gIFlvdXIgbWlsZWFnZQptYXkgdmFyeS48L3A+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9ImxpbWl0cyI+PC9hPjQuMS6gTGltaXRhdGlvbnMgb2YgdGhlIGNvbXByZXNzZWQgZmlsZSBmb3JtYXQ8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTEuMC5YPC9jb2RlPiwKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4wLjkuNTwvY29kZT4gYW5kCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+MC45LjA8L2NvZGU+IHVzZSBleGFjdGx5IHRoZSBzYW1lIGZpbGUKZm9ybWF0IGFzIHRoZSBvcmlnaW5hbCB2ZXJzaW9uLAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuMTwvY29kZT4uICBUaGlzIGRlY2lzaW9uIHdhcwptYWRlIGluIHRoZSBpbnRlcmVzdHMgb2Ygc3RhYmlsaXR5LiAgQ3JlYXRpbmcgeWV0IGFub3RoZXIKaW5jb21wYXRpYmxlIGNvbXByZXNzZWQgZmlsZSBmb3JtYXQgd291bGQgY3JlYXRlIGZ1cnRoZXIKY29uZnVzaW9uIGFuZCBkaXNydXB0aW9uIGZvciB1c2Vycy48L3A+CjxwPk5ldmVydGhlbGVzcywgdGhpcyBpcyBub3QgYSBwYWlubGVzcyBkZWNpc2lvbi4gIERldmVsb3BtZW50Cndvcmsgc2luY2UgdGhlIHJlbGVhc2Ugb2YKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMi0wLjE8L2NvZGU+IGluIEF1Z3VzdCAxOTk3IGhhcwpzaG93biBjb21wbGV4aXRpZXMgaW4gdGhlIGZpbGUgZm9ybWF0IHdoaWNoIHNsb3cgZG93bgpkZWNvbXByZXNzaW9uIGFuZCwgaW4gcmV0cm9zcGVjdCwgYXJlIHVubmVjZXNzYXJ5LiAgVGhlc2UKYXJlOjwvcD4KPGRpdiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iYnVsbGV0Ij4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoZSBydW4tbGVuZ3RoIGVuY29kZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBvZiB0aGUKICAgY29tcHJlc3Npb24gdHJhbnNmb3JtYXRpb25zLCBpcyBlbnRpcmVseSBpcnJlbGV2YW50LiAgVGhlCiAgIG9yaWdpbmFsIHB1cnBvc2Ugd2FzIHRvIHByb3RlY3QgdGhlIHNvcnRpbmcgYWxnb3JpdGhtIGZyb20gdGhlCiAgIHZlcnkgd29yc3QgY2FzZSBpbnB1dDogYSBzdHJpbmcgb2YgcmVwZWF0ZWQgc3ltYm9scy4gIEJ1dAogICBhbGdvcml0aG0gc3RlcHMgUTZhIGFuZCBRNmIgaW4gdGhlIG9yaWdpbmFsIEJ1cnJvd3MtV2hlZWxlcgogICB0ZWNobmljYWwgcmVwb3J0IChTUkMtMTI0KSBzaG93IGhvdyByZXBlYXRzIGNhbiBiZSBoYW5kbGVkCiAgIHdpdGhvdXQgZGlmZmljdWx0eSBpbiBibG9jayBzb3J0aW5nLjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CjxwPlRoZSByYW5kb21pc2F0aW9uIG1lY2hhbmlzbSBkb2Vzbid0IHJlYWxseSBuZWVkIHRvIGJlCiAgIHRoZXJlLiAgVWRpIE1hbmJlciBhbmQgR2VuZSBNeWVycyBwdWJsaXNoZWQgYSBzdWZmaXggYXJyYXkKICAgY29uc3RydWN0aW9uIGFsZ29yaXRobSBhIGZldyB5ZWFycyBiYWNrLCB3aGljaCBjYW4gYmUgZW1wbG95ZWQKICAgdG8gc29ydCBhbnkgYmxvY2ssIG5vIG1hdHRlciBob3cgcmVwZXRpdGl2ZSwgaW4gTyhOIGxvZyBOKQogICB0aW1lLiAgU3Vic2VxdWVudCB3b3JrIGJ5IEt1bmloaWtvIFNhZGFrYW5lIGhhcyBwcm9kdWNlZCBhCiAgIGRlcml2YXRpdmUgTyhOIChsb2cgTileMikgYWxnb3JpdGhtIHdoaWNoIHVzdWFsbHkgb3V0cGVyZm9ybXMKICAgdGhlIE1hbmJlci1NeWVycyBhbGdvcml0aG0uPC9wPgo8cD5JIGNvdWxkIGhhdmUgY2hhbmdlZCB0byBTYWRha2FuZSdzIGFsZ29yaXRobSwgYnV0IEkgZmluZAogICBpdCB0byBiZSBzbG93ZXIgdGhhbiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPidzCiAgIGV4aXN0aW5nIGFsZ29yaXRobSBmb3IgbW9zdCBpbnB1dHMsIGFuZCB0aGUgcmFuZG9taXNhdGlvbgogICBtZWNoYW5pc20gcHJvdGVjdHMgYWRlcXVhdGVseSBhZ2FpbnN0IGJhZCBjYXNlcy4gIEkgZGlkbid0CiAgIHRoaW5rIGl0IHdhcyBhIGdvb2QgdHJhZGVvZmYgdG8gbWFrZS4gIFBhcnRseSB0aGlzIGlzIGR1ZSB0bwogICB0aGUgZmFjdCB0aGF0IEkgd2FzIG5vdCBmbG9vZGVkIHdpdGggZW1haWwgY29tcGxhaW50cyBhYm91dAogICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuMTwvY29kZT4ncyBwZXJmb3JtYW5jZSBvbgogICByZXBldGl0aXZlIGRhdGEsIHNvIHBlcmhhcHMgaXQgaXNuJ3QgYSBwcm9ibGVtIGZvciByZWFsCiAgIGlucHV0cy48L3A+CjxwPlByb2JhYmx5IHRoZSBiZXN0IGxvbmctdGVybSBzb2x1dGlvbiwgYW5kIHRoZSBvbmUgSSBoYXZlCiAgIGluY29ycG9yYXRlZCBpbnRvIDAuOS41IGFuZCBhYm92ZSwgaXMgdG8gdXNlIHRoZSBleGlzdGluZwogICBzb3J0aW5nIGFsZ29yaXRobSBpbml0aWFsbHksIGFuZCBmYWxsIGJhY2sgdG8gYSBPKE4gKGxvZyBOKV4yKQogICBhbGdvcml0aG0gaWYgdGhlIHN0YW5kYXJkIGFsZ29yaXRobSBnZXRzIGludG8KICAgZGlmZmljdWx0aWVzLjwvcD4KPC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPjxwPlRoZSBjb21wcmVzc2VkIGZpbGUgZm9ybWF0IHdhcyBuZXZlciBkZXNpZ25lZCB0byBiZQogICBoYW5kbGVkIGJ5IGEgbGlicmFyeSwgYW5kIEkgaGF2ZSBoYWQgdG8ganVtcCB0aG91Z2ggc29tZSBob29wcwogICB0byBwcm9kdWNlIGFuIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBkZWNvbXByZXNzaW9uLiAgSXQncwogICBhIGJpdCBoYWlyeS4gIFRyeSBwYXNzaW5nCiAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+ZGVjb21wcmVzcy5jPC9jb2RlPiB0aHJvdWdoIHRoZSBDCiAgIHByZXByb2Nlc3NvciBhbmQgeW91J2xsIHNlZSB3aGF0IEkgbWVhbi4gIE11Y2ggb2YgdGhpcwogICBjb21wbGV4aXR5IGNvdWxkIGhhdmUgYmVlbiBhdm9pZGVkIGlmIHRoZSBjb21wcmVzc2VkIHNpemUgb2YKICAgZWFjaCBibG9jayBvZiBkYXRhIHdhcyByZWNvcmRlZCBpbiB0aGUgZGF0YSBzdHJlYW0uPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5BbiBBZGxlci0zMiBjaGVja3N1bSwgcmF0aGVyIHRoYW4gYSBDUkMzMiBjaGVja3N1bSwKICAgd291bGQgYmUgZmFzdGVyIHRvIGNvbXB1dGUuPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPkl0IHdvdWxkIGJlIGZhaXIgdG8gc2F5IHRoYXQgdGhlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGZvcm1hdCB3YXMgZnJvemVuIGJlZm9yZSBJCnByb3Blcmx5IGFuZCBmdWxseSB1bmRlcnN0b29kIHRoZSBwZXJmb3JtYW5jZSBjb25zZXF1ZW5jZXMgb2YKZG9pbmcgc28uPC9wPgo8cD5JbXByb3ZlbWVudHMgd2hpY2ggSSB3YXMgYWJsZSB0byBpbmNvcnBvcmF0ZSBpbnRvIDAuOS4wLApkZXNwaXRlIHVzaW5nIHRoZSBzYW1lIGZpbGUgZm9ybWF0LCBhcmU6PC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+U2luZ2xlIGFycmF5IGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnZlcnNlIEJXVC4gIFRoaXMKICBzaWduaWZpY2FudGx5IHNwZWVkcyB1cCBkZWNvbXByZXNzaW9uLCBwcmVzdW1hYmx5IGJlY2F1c2UgaXQKICByZWR1Y2VzIHRoZSBudW1iZXIgb2YgY2FjaGUgbWlzc2VzLjwvcD48L2xpPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+PHA+RmFzdGVyIGludmVyc2UgTVRGIHRyYW5zZm9ybSBmb3IgbGFyZ2UgTVRGIHZhbHVlcy4KICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBub3Rpb24gb2Ygc2xpZGluZyBibG9ja3MKICBvZiB2YWx1ZXMuPC9wPjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyLTAuOS4wPC9jb2RlPiBub3cgcmVhZHMKICBhbmQgd3JpdGVzIGZpbGVzIHdpdGggPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5mcmVhZDwvY29kZT4KICBhbmQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5md3JpdGU8L2NvZGU+OyB2ZXJzaW9uIDAuMSB1c2VkCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5wdXRjPC9jb2RlPiBhbmQKICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmdldGM8L2NvZGU+LiAgRHVoISAgV2VsbCwgeW91IGxpdmUKICBhbmQgbGVhcm4uPC9wPjwvbGk+CjwvdWw+PC9kaXY+CjxwPkZ1cnRoZXIgYWhlYWQsIGl0IHdvdWxkIGJlIG5pY2UgdG8gYmUgYWJsZSB0byBkbyByYW5kb20KYWNjZXNzIGludG8gZmlsZXMuICBUaGlzIHdpbGwgcmVxdWlyZSBzb21lIGNhcmVmdWwgZGVzaWduIG9mCmNvbXByZXNzZWQgZmlsZSBmb3JtYXRzLjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InBvcnQtaXNzdWVzIj48L2E+NC4yLqBQb3J0YWJpbGl0eSBpc3N1ZXM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2Pgo8cD5BZnRlciBzb21lIGNvbnNpZGVyYXRpb24sIEkgaGF2ZSBkZWNpZGVkIG5vdCB0byB1c2UgR05VCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YXV0b2NvbmY8L2NvZGU+IHRvIGNvbmZpZ3VyZSAwLjkuNSBvcgoxLjAuPC9wPgo8cD48Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmF1dG9jb25mPC9jb2RlPiwgYWRtaXJhYmxlIGFuZAp3b25kZXJmdWwgdGhvdWdoIGl0IGlzLCBtYWlubHkgYXNzaXN0cyB3aXRoIHBvcnRhYmlsaXR5IHByb2JsZW1zCmJldHdlZW4gVW5peC1saWtlIHBsYXRmb3Jtcy4gIEJ1dAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBkb2Vzbid0IGhhdmUgbXVjaCBpbiB0aGUKd2F5IG9mIHBvcnRhYmlsaXR5IHByb2JsZW1zIG9uIFVuaXg7IG1vc3Qgb2YgdGhlIGRpZmZpY3VsdGllcwphcHBlYXIgd2hlbiBwb3J0aW5nIHRvIHRoZSBNYWMsIG9yIHRvIE1pY3Jvc29mdCdzIG9wZXJhdGluZwpzeXN0ZW1zLiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5hdXRvY29uZjwvY29kZT4gZG9lc24ndCBoZWxwCmluIHRob3NlIGNhc2VzLCBhbmQgYnJpbmdzIGluIGEgd2hvbGUgbG9hZCBvZiBuZXcKY29tcGxleGl0eS48L3A+CjxwPk1vc3QgcGVvcGxlIHNob3VsZCBiZSBhYmxlIHRvIGNvbXBpbGUgdGhlIGxpYnJhcnkgYW5kCnByb2dyYW0gdW5kZXIgVW5peCBzdHJhaWdodCBvdXQtb2YtdGhlLWJveCwgc28gdG8gc3BlYWssCmVzcGVjaWFsbHkgaWYgeW91IGhhdmUgYSB2ZXJzaW9uIG9mIEdOVSBDIGF2YWlsYWJsZS48L3A+CjxwPlRoZXJlIGFyZSBhIGNvdXBsZSBvZgo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPl9faW5saW5lX188L2NvZGU+IGRpcmVjdGl2ZXMgaW4gdGhlCmNvZGUuICBHTlUgQyAoPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5nY2M8L2NvZGU+KSBzaG91bGQgYmUKYWJsZSB0byBoYW5kbGUgdGhlbS4gIElmIHlvdSdyZSBub3QgdXNpbmcgR05VIEMsIHlvdXIgQyBjb21waWxlcgpzaG91bGRuJ3Qgc2VlIHRoZW0gYXQgYWxsLiAgSWYgeW91ciBjb21waWxlciBkb2VzLCBmb3Igc29tZQpyZWFzb24sIHNlZSB0aGVtIGFuZCBkb2Vzbid0IGxpa2UgdGhlbSwganVzdAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPiNkZWZpbmU8L2NvZGU+Cjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+X19pbmxpbmVfXzwvY29kZT4gdG8gYmUKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4vKiAqLzwvY29kZT4uICBPbmUgZWFzeSB3YXkgdG8gZG8gdGhpcwppcyB0byBjb21waWxlIHdpdGggdGhlIGZsYWcKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tRF9faW5saW5lX189PC9jb2RlPiwgd2hpY2ggc2hvdWxkIGJlCnVuZGVyc3Rvb2QgYnkgbW9zdCBVbml4IGNvbXBpbGVycy48L3A+CjxwPklmIHlvdSBzdGlsbCBoYXZlIGRpZmZpY3VsdGllcywgdHJ5IGNvbXBpbGluZyB3aXRoIHRoZQptYWNybyA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1NUUklDVF9BTlNJPC9jb2RlPiBkZWZpbmVkLgpUaGlzIHNob3VsZCBlbmFibGUgeW91IHRvIGJ1aWxkIHRoZSBsaWJyYXJ5IGluIGEgc3RyaWN0bHkgQU5TSQpjb21wbGlhbnQgZW52aXJvbm1lbnQuICBCdWlsZGluZyB0aGUgcHJvZ3JhbSBpdHNlbGYgbGlrZSB0aGlzIGlzCmRhbmdlcm91cyBhbmQgbm90IHN1cHBvcnRlZCwgc2luY2UgeW91IHJlbW92ZQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPidzIGNoZWNrcyBhZ2FpbnN0CmNvbXByZXNzaW5nIGRpcmVjdG9yaWVzLCBzeW1ib2xpYyBsaW5rcywgZGV2aWNlcywgYW5kIG90aGVyCm5vdC1yZWFsbHktYS1maWxlIGVudGl0aWVzLiAgVGhpcyBjb3VsZCBjYXVzZSBmaWxlc3lzdGVtCmNvcnJ1cHRpb24hPC9wPgo8cD5PbmUgb3RoZXIgdGhpbmc6IGlmIHlvdSBjcmVhdGUgYQo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiBiaW5hcnkgZm9yIHB1YmxpYyBkaXN0cmlidXRpb24sCnBsZWFzZSBjb25zaWRlciBsaW5raW5nIGl0IHN0YXRpY2FsbHkgKDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Z2NjCi1zdGF0aWM8L2NvZGU+KS4gIFRoaXMgYXZvaWRzIGFsbCBzb3J0cyBvZiBsaWJyYXJ5LXZlcnNpb24KaXNzdWVzIHRoYXQgb3RoZXJzIG1heSBlbmNvdW50ZXIgbGF0ZXIgb24uPC9wPgo8cD5JZiB5b3UgYnVpbGQgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gb24KV2luMzIsIHlvdSBtdXN0IHNldCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPkJaX1VOSVg8L2NvZGU+IHRvIDAKYW5kIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+QlpfTENDV0lOMzI8L2NvZGU+IHRvIDEsIGluIHRoZQpmaWxlIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDIuYzwvY29kZT4sIGJlZm9yZSBjb21waWxpbmcuCk90aGVyd2lzZSB0aGUgcmVzdWx0aW5nIGJpbmFyeSB3b24ndCB3b3JrIGNvcnJlY3RseS48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0MSIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIiBzdHlsZT0iY2xlYXI6IGJvdGgiPgo8YSBuYW1lPSJidWdzIj48L2E+NC4zLqBSZXBvcnRpbmcgYnVnczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPkkgdHJpZWQgcHJldHR5IGhhcmQgdG8gbWFrZSBzdXJlCjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGlzIGJ1ZyBmcmVlLCBib3RoIGJ5CmRlc2lnbiBhbmQgYnkgdGVzdGluZy4gIEhvcGVmdWxseSB5b3UnbGwgbmV2ZXIgbmVlZCB0byByZWFkIHRoaXMKc2VjdGlvbiBmb3IgcmVhbC48L3A+CjxwPk5ldmVydGhlbGVzcywgaWYgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gZGllcwp3aXRoIGEgc2VnbWVudGF0aW9uIGZhdWx0LCBhIGJ1cyBlcnJvciBvciBhbiBpbnRlcm5hbCBhc3NlcnRpb24KZmFpbHVyZSwgaXQgd2lsbCBhc2sgeW91IHRvIGVtYWlsIG1lIGEgYnVnIHJlcG9ydC4gIEV4cGVyaWVuY2UgZnJvbQp5ZWFycyBvZiBmZWVkYmFjayBvZiBiemlwMiB1c2VycyBpbmRpY2F0ZXMgdGhhdCBhbG1vc3QgYWxsIHRoZXNlCnByb2JsZW1zIGNhbiBiZSB0cmFjZWQgdG8gZWl0aGVyIGNvbXBpbGVyIGJ1Z3Mgb3IgaGFyZHdhcmUKcHJvYmxlbXMuPC9wPgo8ZGl2IGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJidWxsZXQiPgo8bGkgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogZGlzYyI+CjxwPlJlY29tcGlsZSB0aGUgcHJvZ3JhbSB3aXRoIG5vIG9wdGltaXNhdGlvbiwgYW5kCiAgc2VlIGlmIGl0IHdvcmtzLiAgQW5kL29yIHRyeSBhIGRpZmZlcmVudCBjb21waWxlci4gIEkgaGVhcmQgYWxsCiAgc29ydHMgb2Ygc3RvcmllcyBhYm91dCB2YXJpb3VzIGZsYXZvdXJzIG9mIEdOVSBDIChhbmQgb3RoZXIKICBjb21waWxlcnMpIGdlbmVyYXRpbmcgYmFkIGNvZGUgZm9yCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4sIGFuZCBJJ3ZlIHJ1biBhY3Jvc3MgdHdvCiAgc3VjaCBleGFtcGxlcyBteXNlbGYuPC9wPgo8cD4yLjcuWCB2ZXJzaW9ucyBvZiBHTlUgQyBhcmUga25vd24gdG8gZ2VuZXJhdGUgYmFkIGNvZGUKICBmcm9tIHRpbWUgdG8gdGltZSwgYXQgaGlnaCBvcHRpbWlzYXRpb24gbGV2ZWxzLiAgSWYgeW91IGdldAogIHByb2JsZW1zLCB0cnkgdXNpbmcgdGhlIGZsYWdzCiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tTzI8L2NvZGU+CiAgPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij4tZm9taXQtZnJhbWUtcG9pbnRlcjwvY29kZT4KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPi1mbm8tc3RyZW5ndGgtcmVkdWNlPC9jb2RlPi4gIFlvdQogIHNob3VsZCBzcGVjaWZpY2FsbHkgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+bm90PC9lbT48L3NwYW4+IHVzZQogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+LWZ1bnJvbGwtbG9vcHM8L2NvZGU+LjwvcD4KPHA+WW91IG1heSBub3RpY2UgdGhhdCB0aGUgTWFrZWZpbGUgcnVucyBzaXggdGVzdHMgYXMgcGFydAogIG9mIHRoZSBidWlsZCBwcm9jZXNzLiAgSWYgdGhlIHByb2dyYW0gcGFzc2VzIGFsbCBvZiB0aGVzZSwgaXQncwogIGEgcHJldHR5IGdvb2QgKGJ1dCBub3QgMTAwJSkgaW5kaWNhdGlvbiB0aGF0IHRoZSBjb21waWxlciBoYXMKICBkb25lIGl0cyBqb2IgY29ycmVjdGx5LjwvcD4KPC9saT4KPGxpIHN0eWxlPSJsaXN0LXN0eWxlLXR5cGU6IGRpc2MiPgo8cD5JZiA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPgogIGNyYXNoZXMgcmFuZG9tbHksIGFuZCB0aGUgY3Jhc2hlcyBhcmUgbm90IHJlcGVhdGFibGUsIHlvdSBtYXkKICBoYXZlIGEgZmxha3kgbWVtb3J5IHN1YnN5c3RlbS4KICA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmJ6aXAyPC9jb2RlPiByZWFsbHkgaGFtbWVycyB5b3VyCiAgbWVtb3J5IGhpZXJhcmNoeSwgYW5kIGlmIGl0J3MgYSBiaXQgbWFyZ2luYWwsIHlvdSBtYXkgZ2V0IHRoZXNlCiAgcHJvYmxlbXMuICBEaXR0byBpZiB5b3VyIGRpc2sgb3IgSS9PIHN1YnN5c3RlbSBpcyBzbG93bHkKICBmYWlsaW5nLiAgWXVwLCB0aGlzIHJlYWxseSBkb2VzIGhhcHBlbi48L3A+CjxwPlRyeSB1c2luZyBhIGRpZmZlcmVudCBtYWNoaW5lIG9mIHRoZSBzYW1lIHR5cGUsIGFuZCBzZWUKICBpZiB5b3UgY2FuIHJlcGVhdCB0aGUgcHJvYmxlbS48L3A+CjwvbGk+CjxsaSBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBkaXNjIj48cD5UaGlzIGlzbid0IHJlYWxseSBhIGJ1ZywgYnV0IC4uLiBJZgogIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IHRlbGxzIHlvdSB5b3VyIGZpbGUgaXMKICBjb3JydXB0ZWQgb24gZGVjb21wcmVzc2lvbiwgYW5kIHlvdSBvYnRhaW5lZCB0aGUgZmlsZSB2aWEgRlRQLAogIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgdGhhdCB5b3UgZm9yZ290IHRvIHRlbGwgRlRQIHRvIGRvIGEKICBiaW5hcnkgbW9kZSB0cmFuc2Zlci4gIFRoYXQgYWJzb2x1dGVseSB3aWxsIGNhdXNlIHRoZSBmaWxlIHRvCiAgYmUgbm9uLWRlY29tcHJlc3NpYmxlLiAgWW91J2xsIGhhdmUgdG8gdHJhbnNmZXIgaXQKICBhZ2Fpbi48L3A+PC9saT4KPC91bD48L2Rpdj4KPHA+SWYgeW91J3ZlIGluY29ycG9yYXRlZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmxpYmJ6aXAyPC9jb2RlPiBpbnRvIHlvdXIgb3duIHByb2dyYW0KYW5kIGFyZSBnZXR0aW5nIHByb2JsZW1zLCBwbGVhc2UsIHBsZWFzZSwgcGxlYXNlLCBjaGVjayB0aGF0IHRoZQpwYXJhbWV0ZXJzIHlvdSBhcmUgcGFzc2luZyBpbiBjYWxscyB0byB0aGUgbGlicmFyeSwgYXJlIGNvcnJlY3QsCmFuZCBpbiBhY2NvcmRhbmNlIHdpdGggd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIGlzIGFsbG93YWJsZS4KSSBoYXZlIHRyaWVkIHRvIG1ha2UgdGhlIGxpYnJhcnkgcm9idXN0IGFnYWluc3Qgc3VjaCBwcm9ibGVtcywKYnV0IEknbSBzdXJlIEkgaGF2ZW4ndCBzdWNjZWVkZWQuPC9wPgo8cD5GaW5hbGx5LCBpZiB0aGUgYWJvdmUgY29tbWVudHMgZG9uJ3QgaGVscCwgeW91J2xsIGhhdmUgdG8Kc2VuZCBtZSBhIGJ1ZyByZXBvcnQuICBOb3csIGl0J3MganVzdCBhbWF6aW5nIGhvdyBtYW55IHBlb3BsZQp3aWxsIHNlbmQgbWUgYSBidWcgcmVwb3J0IHNheWluZyBzb21ldGhpbmcgbGlrZTo8L3A+CjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5iemlwMiBjcmFzaGVkIHdpdGggc2VnbWVudGF0aW9uIGZhdWx0IG9uIG15IG1hY2hpbmU8L3ByZT4KPHA+YW5kIGFic29sdXRlbHkgbm90aGluZyBlbHNlLiAgTmVlZGxlc3MgdG8gc2F5LCBhIHN1Y2ggYQpyZXBvcnQgaXMgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+dG90YWxseSwgdXR0ZXJseSwgY29tcGxldGVseSBhbmQKY29tcHJlaGVuc2l2ZWx5IDEwMCUgdXNlbGVzczsgYSB3YXN0ZSBvZiB5b3VyIHRpbWUsIG15IHRpbWUsIGFuZApuZXQgYmFuZHdpZHRoPC9lbT48L3NwYW4+LiAgV2l0aCBubyBkZXRhaWxzIGF0IGFsbCwgdGhlcmUncyBubyB3YXkKSSBjYW4gcG9zc2libHkgYmVnaW4gdG8gZmlndXJlIG91dCB3aGF0IHRoZSBwcm9ibGVtIGlzLjwvcD4KPHA+VGhlIHJ1bGVzIG9mIHRoZSBnYW1lIGFyZTogZmFjdHMsIGZhY3RzLCBmYWN0cy4gIERvbid0IG9taXQKdGhlbSBiZWNhdXNlICJvaCwgdGhleSB3b24ndCBiZSByZWxldmFudCIuICBBdCB0aGUgYmFyZQptaW5pbXVtOjwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPk1hY2hpbmUgdHlwZS4gIE9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbi4gIApFeGFjdCB2ZXJzaW9uIG9mIGJ6aXAyIChkbyBiemlwMiAtVikuICAKRXhhY3QgdmVyc2lvbiBvZiB0aGUgY29tcGlsZXIgdXNlZC4gIApGbGFncyBwYXNzZWQgdG8gdGhlIGNvbXBpbGVyLjwvcHJlPgo8cD5Ib3dldmVyLCB0aGUgbW9zdCBpbXBvcnRhbnQgc2luZ2xlIHRoaW5nIHRoYXQgd2lsbCBoZWxwIG1lCmlzIHRoZSBmaWxlIHRoYXQgeW91IHdlcmUgdHJ5aW5nIHRvIGNvbXByZXNzIG9yIGRlY29tcHJlc3MgYXQgdGhlCnRpbWUgdGhlIHByb2JsZW0gaGFwcGVuZWQuICBXaXRob3V0IHRoYXQsIG15IGFiaWxpdHkgdG8gZG8KYW55dGhpbmcgbW9yZSB0aGFuIHNwZWN1bGF0ZSBhYm91dCB0aGUgY2F1c2UsIGlzIGxpbWl0ZWQuPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdDEiIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj4KPGEgbmFtZT0icGFja2FnZSI+PC9hPjQuNC6gRGlkIHlvdSBnZXQgdGhlIHJpZ2h0IHBhY2thZ2U/PC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KPHA+PGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT4gaXMgYSByZXNvdXJjZSBob2cuCkl0IHNvYWtzIHVwIGxhcmdlIGFtb3VudHMgb2YgQ1BVIGN5Y2xlcyBhbmQgbWVtb3J5LiAgQWxzbywgaXQKZ2l2ZXMgdmVyeSBsYXJnZSBsYXRlbmNpZXMuICBJbiB0aGUgd29yc3QgY2FzZSwgeW91IGNhbiBmZWVkIG1hbnkKbWVnYWJ5dGVzIG9mIHVuY29tcHJlc3NlZCBkYXRhIGludG8gdGhlIGxpYnJhcnkgYmVmb3JlIGdldHRpbmcKYW55IGNvbXByZXNzZWQgb3V0cHV0LCBzbyB0aGlzIHByb2JhYmx5IHJ1bGVzIG91dCBhcHBsaWNhdGlvbnMKcmVxdWlyaW5nIGludGVyYWN0aXZlIGJlaGF2aW91ci48L3A+CjxwPlRoZXNlIGFyZW4ndCBmYXVsdHMgb2YgbXkgaW1wbGVtZW50YXRpb24sIEkgaG9wZSwgYnV0IG1vcmUKYW4gaW50cmluc2ljIHByb3BlcnR5IG9mIHRoZSBCdXJyb3dzLVdoZWVsZXIgdHJhbnNmb3JtCih1bmZvcnR1bmF0ZWx5KS4gIE1heWJlIHRoaXMgaXNuJ3Qgd2hhdCB5b3Ugd2FudC48L3A+CjxwPklmIHlvdSB3YW50IGEgY29tcHJlc3NvciBhbmQvb3IgbGlicmFyeSB3aGljaCBpcyBmYXN0ZXIsCnVzZXMgbGVzcyBtZW1vcnkgYnV0IGdldHMgcHJldHR5IGdvb2QgY29tcHJlc3Npb24sIGFuZCBoYXMKbWluaW1hbCBsYXRlbmN5LCBjb25zaWRlciBKZWFuLWxvdXAgR2FpbGx5J3MgYW5kIE1hcmsgQWRsZXIncwp3b3JrLCA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPnpsaWItMS4yLjE8L2NvZGU+IGFuZAo8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPmd6aXAtMS4yLjQ8L2NvZGU+LiAgTG9vayBmb3IgdGhlbSBhdCAKPGEgaHJlZj0iaHR0cDovL3d3dy56bGliLm9yZyIgdGFyZ2V0PSJfdG9wIj5odHRwOi8vd3d3LnpsaWIub3JnPC9hPiBhbmQgCjxhIGhyZWY9Imh0dHA6Ly93d3cuZ3ppcC5vcmciIHRhcmdldD0iX3RvcCI+aHR0cDovL3d3dy5nemlwLm9yZzwvYT4KcmVzcGVjdGl2ZWx5LjwvcD4KPHA+Rm9yIHNvbWV0aGluZyBmYXN0ZXIgYW5kIGxpZ2h0ZXIgc3RpbGwsIHlvdSBtaWdodCB0cnkgTWFya3VzIEYKWCBKIE9iZXJodW1lcidzIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+TFpPPC9jb2RlPiByZWFsLXRpbWUKY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5LCBhdCAKPGEgaHJlZj0iaHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2UiIHRhcmdldD0iX3RvcCI+aHR0cDovL3d3dy5vYmVyaHVtZXIuY29tL29wZW5zb3VyY2U8L2E+LjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3QxIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+CjxhIG5hbWU9InJlYWRpbmciPjwvYT40LjUuoEZ1cnRoZXIgUmVhZGluZzwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CjxwPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+YnppcDI8L2NvZGU+IGlzIG5vdCByZXNlYXJjaAp3b3JrLCBpbiB0aGUgc2Vuc2UgdGhhdCBpdCBkb2Vzbid0IHByZXNlbnQgYW55IG5ldyBpZGVhcy4KUmF0aGVyLCBpdCdzIGFuIGVuZ2luZWVyaW5nIGV4ZXJjaXNlIGJhc2VkIG9uIGV4aXN0aW5nCmlkZWFzLjwvcD4KPHA+Rm91ciBkb2N1bWVudHMgZGVzY3JpYmUgZXNzZW50aWFsbHkgYWxsIHRoZSBpZGVhcyBiZWhpbmQKPGNvZGUgY2xhc3M9ImNvbXB1dGVyb3V0cHV0Ij5iemlwMjwvY29kZT46PC9wPgo8ZGl2IGNsYXNzPSJsaXRlcmFsbGF5b3V0Ij48cD5NaWNoYWVsoEJ1cnJvd3OgYW5koEQuoEouoFdoZWVsZXI6PGJyPgqgoCJBoGJsb2NrLXNvcnRpbmegbG9zc2xlc3OgZGF0YaBjb21wcmVzc2lvbqBhbGdvcml0aG0iPGJyPgqgoKAxMHRooE1heaAxOTk0LqA8YnI+CqCgoERpZ2l0YWygU1JDoFJlc2VhcmNooFJlcG9ydKAxMjQuPGJyPgqgoKBmdHA6Ly9mdHAuZGlnaXRhbC5jb20vcHViL0RFQy9TUkMvcmVzZWFyY2gtcmVwb3J0cy9TUkMtMTI0LnBzLmd6PGJyPgqgoKBJZqB5b3WgaGF2ZaB0cm91YmxloGZpbmRpbmegaXQsoHRyeaBzZWFyY2hpbmegYXSgdGhlPGJyPgqgoKBOZXegWmVhbGFuZKBEaWdpdGFsoExpYnJhcnksoGh0dHA6Ly93d3cubnpkbC5vcmcuPGJyPgo8YnI+CkRhbmllbKBTLqBIaXJzY2hiZXJnoGFuZKBEZWJyYaBBLqBMZUxld2VyPGJyPgqgoCJFZmZpY2llbnSgRGVjb2Rpbmegb2agUHJlZml4oENvZGVzIjxicj4KoKCgQ29tbXVuaWNhdGlvbnOgb2agdGhloEFDTSygQXByaWygMTk5MCygVm9soDMzLKBOdW1iZXKgNC48YnI+CqCgoFlvdaBtaWdodKBiZaBhYmxloHRvoGdldKBhbqBlbGVjdHJvbmljoGNvcHmgb2agdGhpczxicj4KoKCgZnJvbaB0aGWgQUNNoERpZ2l0YWygTGlicmFyeS48YnI+Cjxicj4KRGF2aWSgSi6gV2hlZWxlcjxicj4KoKCgUHJvZ3JhbaBicmVkMy5joGFuZKBhY2NvbXBhbnlpbmegZG9jdW1lbnSgYnJlZDMucHMuPGJyPgqgoKBUaGlzoGNvbnRhaW5zoHRoZaBpZGVhoGJlaGluZKB0aGWgbXVsdGktdGFibGWgSHVmZm1hbqBjb2Rpbmegc2NoZW1lLjxicj4KoKCgZnRwOi8vZnRwLmNsLmNhbS5hYy51ay91c2Vycy9kanczLzxicj4KPGJyPgpKb26gTC6gQmVudGxleaBhbmSgUm9iZXJ0oFNlZGdld2ljazxicj4KoKAiRmFzdKBBbGdvcml0aG1zoGZvcqBTb3J0aW5noGFuZKBTZWFyY2hpbmegU3RyaW5ncyI8YnI+CqCgoEF2YWlsYWJsZaBmcm9toFNlZGdld2ljaydzoHdlYqBwYWdlLDxicj4KoKCgd3d3LmNzLnByaW5jZXRvbi5lZHUvfnJzPGJyPgo8L3A+PC9kaXY+CjxwPlRoZSBmb2xsb3dpbmcgcGFwZXIgZ2l2ZXMgdmFsdWFibGUgYWRkaXRpb25hbCBpbnNpZ2h0cyBpbnRvCnRoZSBhbGdvcml0aG0sIGJ1dCBpcyBub3QgaW1tZWRpYXRlbHkgdGhlIGJhc2lzIG9mIGFueSBjb2RlIHVzZWQKaW4gYnppcDIuPC9wPgo8ZGl2IGNsYXNzPSJsaXRlcmFsbGF5b3V0Ij48cD5QZXRlcqBGZW53aWNrOjxicj4KoKCgQmxvY2ugU29ydGluZ6BUZXh0oENvbXByZXNzaW9uPGJyPgqgoKBQcm9jZWVkaW5nc6BvZqB0aGWgMTl0aKBBdXN0cmFsYXNpYW6gQ29tcHV0ZXKgU2NpZW5jZaBDb25mZXJlbmNlLDxicj4KoKCgoKBNZWxib3VybmUsoEF1c3RyYWxpYS6goEphbqAzMaAtoEZlYqAyLKAxOTk2Ljxicj4KoKCgZnRwOi8vZnRwLmNzLmF1Y2tsYW5kLmFjLm56L3B1Yi9wZXRlci1mL0FDU0M5NnBhcGVyLnBzPC9wPjwvZGl2Pgo8cD5LdW5paGlrbyBTYWRha2FuZSdzIHNvcnRpbmcgYWxnb3JpdGhtLCBtZW50aW9uZWQgYWJvdmUsIGlzCmF2YWlsYWJsZSBmcm9tOjwvcD4KPGRpdiBjbGFzcz0ibGl0ZXJhbGxheW91dCI+PHA+aHR0cDovL25hb21pLmlzLnMudS10b2t5by5hYy5qcC9+c2FkYS9wYXBlcnMvU2FkYTk4Yi5wcy5nejxicj4KPC9wPjwvZGl2Pgo8cD5UaGUgTWFuYmVyLU15ZXJzIHN1ZmZpeCBhcnJheSBjb25zdHJ1Y3Rpb24gYWxnb3JpdGhtIGlzCmRlc2NyaWJlZCBpbiBhIHBhcGVyIGF2YWlsYWJsZSBmcm9tOjwvcD4KPGRpdiBjbGFzcz0ibGl0ZXJhbGxheW91dCI+PHA+aHR0cDovL3d3dy5jcy5hcml6b25hLmVkdS9wZW9wbGUvZ2VuZS9QQVBFUlMvc3VmZml4LnBzPGJyPgo8L3A+PC9kaXY+CjxwPkZpbmFsbHksIHRoZSBmb2xsb3dpbmcgcGFwZXJzIGRvY3VtZW50IHNvbWUKaW52ZXN0aWdhdGlvbnMgSSBtYWRlIGludG8gdGhlIHBlcmZvcm1hbmNlIG9mIHNvcnRpbmcKYW5kIGRlY29tcHJlc3Npb24gYWxnb3JpdGhtczo8L3A+CjxkaXYgY2xhc3M9ImxpdGVyYWxsYXlvdXQiPjxwPkp1bGlhbqBTZXdhcmQ8YnI+CqCgoE9uoHRoZaBQZXJmb3JtYW5jZaBvZqBCV1SgU29ydGluZ6BBbGdvcml0aG1zPGJyPgqgoKBQcm9jZWVkaW5nc6BvZqB0aGWgSUVFRaBEYXRhoENvbXByZXNzaW9uoENvbmZlcmVuY2WgMjAwMDxicj4KoKCgoKBTbm93YmlyZCygVXRhaC6goDI4LTMwoE1hcmNooDIwMDAuPGJyPgo8YnI+Ckp1bGlhbqBTZXdhcmQ8YnI+CqCgoFNwYWNlLXRpbWWgVHJhZGVvZmZzoGluoHRoZaBJbnZlcnNloEItV6BUcmFuc2Zvcm08YnI+CqCgoFByb2NlZWRpbmdzoG9moHRoZaBJRUVFoERhdGGgQ29tcHJlc3Npb26gQ29uZmVyZW5jZaAyMDAxPGJyPgqgoKCgoFNub3diaXJkLKBVdGFoLqCgMjctMjmgTWFyY2igMjAwMS48YnI+CjwvcD48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2JvZHk+CjwvaHRtbD4K