LyoKICogQ29weXJpZ2h0IDE5OTUgSnVra2EgSWl2b25lbgogKiBDb3B5cmlnaHQgMjAwNSBLaW1tbyBNeWxseXZpcnRhCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQQogKi8KCiNpbmNsdWRlICJjZGxnLmgiCiNpbmNsdWRlICJmaWxlZGxnYnJvd3Nlci5oIgoKLyoKICogV0FSTklORzogRE8gTk9UIENIQU5HRSBUSEUgU0laRSBPRiBUSEUgU1RBTkRBUkQgRElBTE9HIFRFTVBMQVRFUy4KICovCgpMQU5HVUFHRSBMQU5HX0ZJTk5JU0gsIFNVQkxBTkdfREVGQVVMVAoKT1BFTl9GSUxFIERJQUxPRyAzNiwgMjQsIDI3NSwgMTM0ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIkF2YWEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogTFRFWFQgIlRpZWRvc3RvJm5pbWk6IiwgMTA5MCwgNiwgNiwgNzYsIDkKIEVESVRURVhUIGVkdDEsIDYsIDE2LCA5MCwgMTIsIEVTX0FVVE9IU0NST0xMIHwgRVNfT0VNQ09OVkVSVCB8IFdTX0JPUkRFUiB8IFdTX1RBQlNUT1AKIExJU1RCT1ggMTEyMCwgNiwgMzIsIDkwLCA2OCwgTEJTX1NUQU5EQVJEIHwgTEJTX09XTkVSRFJBV0ZJWEVEIHwgTEJTX0hBU1NUUklOR1MgfCBMQlNfRElTQUJMRU5PU0NST0xMIHwgV1NfVEFCU1RPUAogTFRFWFQgIiZIYWtlbWlzdG90OiIsIC0xLCAxMTAsIDYsIDkyLCA5CiBMVEVYVCAiIiwgMTA4OCwgMTEwLCAxOCwgOTIsIDksIFNTX05PUFJFRklYIHwgV1NfR1JPVVAKIExJU1RCT1ggMTEyMSwgMTEwLCAzMiwgOTIsIDY4LCBMQlNfU1RBTkRBUkQgfCBMQlNfT1dORVJEUkFXRklYRUQgfCBMQlNfSEFTU1RSSU5HUyB8IExCU19ESVNBQkxFTk9TQ1JPTEwgfCBXU19UQUJTVE9QCiBMVEVYVCAiJkx1ZXR0ZWxlIHRpZWRvc3RvdCB0eXlwZWl0dORpbjoiLCAxMDg5LCA2LCAxMDQsIDkwLCA5CiBDT01CT0JPWCBjbWIxLCA2LCAxMTQsIDkwLCAzNiwgQ0JTX0RST1BET1dOTElTVCB8IENCU19BVVRPSFNDUk9MTCB8IFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiBMVEVYVCAiJkFzZW1hdDoiLCAxMDkxLCAxMTAsIDEwNCwgOTIsIDkKIENPTUJPQk9YIGNtYjIsIDExMCwgMTE0LCA5MiwgNjgsIENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfU09SVCB8IENCU19IQVNTVFJJTkdTIHwgV1NfQk9SREVSIHwgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKIERFRlBVU0hCVVRUT04gIkF2YWEiLCAxLCAyMDgsIDYsIDU2LCAxNCwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiUGVydXV0YSIsIDIsIDIwOCwgMjQsIDU2LCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImT2hqZSIsIHBzaEhlbHAsIDIwOCwgNDYsIDU2LCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBDSEVDS0JPWCAiJlZhaW4gbHVrdSIsIGNoeDEsIDIwOCwgNjgsIDUwLCAxMiwgQlNfQVVUT0NIRUNLQk9YIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KCgpTQVZFX0ZJTEUgRElBTE9HIDM2LCAyNCwgMjc1LCAxMzQKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiVGFsbGVubmEgbmltZWxs5CIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBMVEVYVCAiVGllZG9zdG8mbmltaToiLCAxMDkwLCA2LCA2LCA3NiwgOQogRURJVFRFWFQgZWR0MSwgNiwgMTYsIDkwLCAxMiwgRVNfQVVUT0hTQ1JPTEwgfCBFU19PRU1DT05WRVJUIHwgV1NfQk9SREVSIHwgV1NfVEFCU1RPUAogTElTVEJPWCAxMTIwLCA2LCAzMiwgOTAsIDY4LCBMQlNfU1RBTkRBUkQgfCBMQlNfT1dORVJEUkFXRklYRUQgfCBMQlNfSEFTU1RSSU5HUyB8IExCU19ESVNBQkxFTk9TQ1JPTEwgfCBXU19UQUJTVE9QCiBMVEVYVCAiJkhha2VtaXN0b3Q6IiwgLTEsIDExMCwgNiwgOTIsIDkKIExURVhUICIiLCAxMDg4LCAxMTAsIDE4LCA5MiwgOSwgU1NfTk9QUkVGSVggfCBXU19HUk9VUAogTElTVEJPWCAxMTIxLCAxMTAsIDMyLCA5MiwgNjgsIExCU19TVEFOREFSRCB8IExCU19PV05FUkRSQVdGSVhFRCB8IExCU19IQVNTVFJJTkdTIHwgTEJTX0RJU0FCTEVOT1NDUk9MTCB8IFdTX1RBQlNUT1AKIExURVhUICJUYWxsZW5uYSB0aWVkb3N0byAmbXVvZG9zc2E6IiwgMTA4OSwgNiwgMTA0LCA5MCwgOQogQ09NQk9CT1ggY21iMSwgNiwgMTE0LCA5MCwgMzYsIENCU19EUk9QRE9XTkxJU1QgfCBDQlNfQVVUT0hTQ1JPTEwgfCBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogTFRFWFQgIiZBc2VtYXQ6IiwgMTA5MSwgMTEwLCAxMDQsIDkyLCA5CiBDT01CT0JPWCBjbWIyLCAxMTAsIDExNCwgOTIsIDY4LCBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX1NPUlQgfCBDQlNfSEFTU1RSSU5HUyB8IFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiBERUZQVVNIQlVUVE9OICJUYWxsZW5uYSIsIDEsIDIwOCwgNiwgNTYsIDE0LCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJQZXJ1dXRhIiwgMiwgMjA4LCAyNCwgNTYsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIiZPaGplIiwgcHNoSGVscCwgMjA4LCA0NiwgNTYsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIENIRUNLQk9YICImVmFpbiBsdWt1IiwgY2h4MSwgMjA4LCA2OCwgNTAsIDEyLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKfQoKClBSSU5UIERJQUxPRyAzNiwgMjQsIDI2NCwgMTM0ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIlR1bG9zdGEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogTFRFWFQgIktpcmpvaXRpbjoiLCAxMDg4LCA2LCA2LCA0MCwgOQogTFRFWFQgIiIsIDEwODksIDYwLCA2LCAxNTAsIDkKIEdST1VQQk9YICJUdWxvc3R1c2FsdWUiLCBncnAxLCA2LCAzMCwgMTYwLCA2NSwgQlNfR1JPVVBCT1gKIFJBRElPQlVUVE9OICImS2Fpa2tpIiwgcmFkMSwgMTYsIDQ1LCA2MCwgMTIKIFJBRElPQlVUVE9OICImVmFsaW50YSIsIHJhZDIsIDE2LCA2MCwgNjAsIDEyCiBSQURJT0JVVFRPTiAiJlNpdnV0IiwgcmFkMywgMTYsIDc1LCA2MCwgMTIKIERFRlBVU0hCVVRUT04gIlR1bG9zdGEiLCAxLCAyMDYsIDYsIDU2LCAxNCwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiUGVydXV0YSIsIDIsIDIwNiwgMjQsIDU2LCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICImQXNldHVrc2V0IiwgcHNoMSwgMjA2LCA0NiwgNTYsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIExURVhUICImTWlzdOQ6IiwgMTA5MCwgNjAsIDgwLCAzMCwgOQogTFRFWFQgIk1pJmhpbjoiLCAxMDkxLCAxMjAsIDgwLCAzMCwgOQogTFRFWFQgIiZUdWxvc3R1c3RhcmtrdXVzOiIsIDEwOTIsIDYsIDEwMCwgNzYsIDkKIENPTUJPQk9YIGNtYjEsIDgwLCAxMDAsIDkyLCA2OCwgQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19BVVRPSFNDUk9MTCB8IENCU19TT1JUIHwgQ0JTX0hBU1NUUklOR1MgfCBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogQ0hFQ0tCT1ggIlR1bG9zdGEgdCZpZWRvc3Rvb24iLCBjaHgxLCAyMCwgMTAwLCA1MCwgMTIsIEJTX0FVVE9DSEVDS0JPWCB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogQ0hFQ0tCT1ggIlRpaXZpc3RldHR5IiwgY2h4MiwgMTYwLCAxMDAsIDUwLCAxMiwgQlNfQVVUT0NIRUNLQk9YIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KCgpQUklOVF9TRVRVUCBESUFMT0cgMzYsIDI0LCAyNjQsIDEzNApTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJLaXJqb2l0dGltZW4gYXNldHVrc2V0IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIEdST1VQQk9YICJLaXJqb2l0aW4iLCBncnAxLCA2LCAxMCwgMTgwLCA2NSwgQlNfR1JPVVBCT1gKIFJBRElPQlVUVE9OICJPJmxldHVza2lyam9pdGluIiwgcmFkMSwgMTYsIDIwLCA4MCwgMTIKIExURVhUICJbZWkgdmFsaXR0dV0iLCAxMDg4LCAzNSwgMzUsIDEyMCwgOQogUkFESU9CVVRUT04gIiZFcml0eWluZW4ga2lyam9pdGluIiwgcmFkMiwgMTYsIDUwLCA4MCwgMTIKIENPTUJPQk9YIGNtYjEsIDM1LCA2NSwgMTQ5LCA2OCwgQ0JTX0RST1BET1dOTElTVCB8IENCU19PV05FUkRSQVdGSVhFRCB8IENCU19BVVRPSFNDUk9MTCB8IENCU19TT1JUIHwgQ0JTX0hBU1NUUklOR1MgfCBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogREVGUFVTSEJVVFRPTiAiT0siLCBJRE9LLCAyMDYsIDYsIDU2LCAxNCwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiUGVydXV0YSIsIElEQ0FOQ0VMLCAyMDYsIDI0LCA1NiwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiJkFzZXR1a3NldC4uLiIsIHBzaDEsIDIwNiwgNDYsIDU2LCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBHUk9VUEJPWCAiU3V1bnRhIiwgZ3JwMiwgNiwgODUsIDEwMCwgNTAsIEJTX0dST1VQQk9YCiBSQURJT0JVVFRPTiAiJlB5c3R5IiwgcmFkMywgNTAsIDEwMCwgNDAsIDEyCiBSQURJT0JVVFRPTiAiJlZhYWthIiwgcmFkNCwgNTAsIDExNSwgNDAsIDEyCiBJQ09OICJMQU5EU0NBUCIsIHN0YzEwLCAxMCwgOTUsIDMyLCAzMgogSUNPTiAiUE9SVFJBSVQiLCBzdGMxMSwgMTAsIDk1LCAzMiwgMzIKIEdST1VQQk9YICJQYXBlcmkiLCBncnAzLCAxMjAsIDg1LCAxODAsIDUwLCBCU19HUk9VUEJPWAogTFRFWFQgIiZLb2tvOiIsIDEwODksIDEzMCwgOTUsIDMwLCA5CiBMVEVYVCAiTOQmaGRlOiIsIDEwOTAsIDEzMCwgMTEwLCAzMCwgOQogQ09NQk9CT1ggY21iMiwgMTU1LCA5NSwgOTIsIDY4LCBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX1NPUlQgfCBDQlNfSEFTU1RSSU5HUyB8IFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCiBDT01CT0JPWCBjbWIzLCAxNTUsIDExMCwgOTIsIDY4LCBDQlNfRFJPUERPV05MSVNUIHwgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgQ0JTX0FVVE9IU0NST0xMIHwgQ0JTX1NPUlQgfCBDQlNfSEFTU1RSSU5HUyB8IFdTX0JPUkRFUiB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCn0KCgpDSE9PU0VfRk9OVCBESUFMT0cgIDEzLCA1NCwgMjY0LCAxNDcKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRm9udGl0IgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKICAgIExURVhUICAgICAgICAgICAiJkZvbnR0aToiLCAgICAgIHN0YzEgLDYsMyw0MCw5CiAgICBDT01CT0JPWCAgICAgICAgY21iMSw2LDEzLDk0LDU0LCAgQ0JTX09XTkVSRFJBV0ZJWEVEIHwgQ0JTX0hBU1NUUklOR1MgfCBDQlNfRElTQUJMRU5PU0NST0xMIHwKICAgICAgICAgICAgICAgICAgICBDQlNfQVVUT0hTQ1JPTEwgfCBDQlNfU09SVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NJTVBMRQogICAgTFRFWFQgICAgICAgICAgICJGb250dGl0Jnl5bGk6Iiwgc3RjMiAsMTA4LDMsNDQsOQogICAgQ09NQk9CT1ggICAgICAgIGNtYjIsMTA4LDEzLDY0LDU0LCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8IENCU19ESVNBQkxFTk9TQ1JPTEwgfAogICAgICAgICAgICAgICAgICAgIFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QIHwgQ0JTX1NJTVBMRQogICAgTFRFWFQgICAgICAgICAgICImS29rbzoiLCAgICAgICAgc3RjMywxNzksMywzMCw5CiAgICBDT01CT0JPWCAgICAgICAgY21iMywxNzksMTMsMzIsNTQsIENCU19PV05FUkRSQVdGSVhFRCB8IENCU19IQVNTVFJJTkdTIHwgQ0JTX0RJU0FCTEVOT1NDUk9MTCB8CiAgICAgICAgICAgICAgICAgICAgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AgfCBDQlNfU0lNUExFIHwgQ0JTX1NPUlQKICAgIERFRlBVU0hCVVRUT04gICAiT0siLElET0ssMjE4LDYsNDAsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiUGVydXV0YSIsICAgICAgIElEQ0FOQ0VMLDIxOCwyMyw0MCwxNCxXU19HUk9VUAogICAgUFVTSEJVVFRPTiAgICAgICImT3RhIGvkeXR09vZuIiwgcHNoMywyMTgsNDAsNDAsMTQsV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiTyZoamUiICwgICAgICAgIHBzaEhlbHAsMjE4LDU3LDQwLDE0LFdTX0dST1VQCiAgICBHUk9VUEJPWCAgICAgICAgIkVmZWt0aXQiLCAgICAgICBncnAxLDYsNzIsODQsMzQsV1NfR1JPVVAKICAgIENIRUNLQk9YCSAgICAiWWxpJnZpaXZhdHR1IiwgIGNoeDEsIDEwLDgyLDUwLDEwLCBCU19BVVRPQ0hFQ0tCT1ggfCBXU19UQUJTVE9QCiAgICBDSEVDS0JPWCAJICAgICJBJmxsZXZpaXZhdHR1IiwgY2h4MiwgMTAsOTQsNTAsMTAsIEJTX0FVVE9DSEVDS0JPWAogICAgTFRFWFQgICAgICAgICAgICJWJuRyaToiLCAgICAgICAgc3RjNCAsNiwxMTAsMzAsOQogICAgQ09NQk9CT1ggICAgICAgIGNtYjQsNiwxMjAsODQsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8CgkJICAgIENCU19BVVRPSFNDUk9MTCB8ICBXU19CT1JERVIgfCBXU19WU0NST0xMIHwgV1NfVEFCU1RPUAogICAgR1JPVVBCT1ggICAgICAgICJO5Hl0ZSIsZ3JwMiw5OCw3MiwxMjAsMzYsV1NfR1JPVVAKICAgIENURVhUICAgICAgICAgICAiQWFCYll5WnoiLHN0YzUsMTAzLDgwLDEwOSwyNCxTU19OT1BSRUZJWCB8IE5PVCBXU19WSVNJQkxFCiAgICBMVEVYVCAgICAgICAgICAgIk1lcmsmaXN09joiLHN0YzcgLDk4LDExNCw4MCw5CiAgICBDT01CT0JPWCAgICAgICAgY21iNSw5OCwxMjQsMTIwLDkwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfSEFTU1RSSU5HUyB8CgkJICAgIENCU19BVVRPSFNDUk9MTCB8ICAgV1NfVlNDUk9MTCB8IFdTX1RBQlNUT1AKfQoKCkNIT09TRV9DT0xPUiBESUFMT0cgMzYsIDI0LCAzMDAsIDE4NQpTVFlMRSBEU19NT0RBTEZSQU1FIHwgV1NfUE9QVVAgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJW5HJpIgpGT05UIDgsICJNUyBTaGVsbCBEbGciCnsKIExURVhUICJQZSZydXN25HJpdDoiLCAgICAgIDEwODgsIDQsICAgIDQsICAxNDAsIDEwCiBMVEVYVCAiJk11b2thdHV0IHbkcml0OiIsICAxMDg5LCA0LCAgIDEwNiwgMTQwLCAxMAogTFRFWFQgIlbkcml8JlRhc2FpbmVuIiwgICAgMTA5MCwgMTUwLCAxNTEsICA0OCwgMTAKIExURVhUICAgIiZQdW46IiwgNzI2IC8qMTA5NCovLDI0OSwxMjYsMjQsMTAKIEVESVRURVhUIDcwNiwgMjc1LDEyNCwyMSwxMiwgV1NfQk9SREVSIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBMVEVYVCAgICImVmlocjoiLDcyNy8qMTA5NSovLDI0OSwxNDAsMjQsMTAKIEVESVRURVhUIDcwNywgMjc1LDEzOCwyMSwxMiwgV1NfQk9SREVSIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBMVEVYVCAgICJTaSZuOiIsNzI4IC8qMTA5NiovLDI0OSwxNTQsMjQsMTAKIEVESVRURVhUIDcwOCwgMjc1LDE1MiwyMSwxMiwgV1NfQk9SREVSIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBMVEVYVCAgIiZT5HZ5OiIgLDcyMyAvKjEwOTEqLywyMDIsMTI2LDIyLDEwCiBFRElUVEVYVCA3MDMsIDIyNiwxMjQsMjEsMTIsIFdTX0JPUkRFUiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogTFRFWFQgICImS3lsbDoiICw3MjQgLyoxMDkyKi8sMjAyLDE0MCwyMiwxMAogRURJVFRFWFQgNzA0LCAyMjYsMTM4LDIxLDEyLCBXU19CT1JERVIgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIExURVhUICAiSyZpcmtrOiIgLDcyNSAvKjEwOTMqLywyMDIsMTU0LDIyLDEwCiBFRElUVEVYVCA3MDUsIDIyNiwxNTIsMjEsMTIsIFdTX0JPUkRFUiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogQ09OVFJPTCAiIiAsNzIwLCJTVEFUSUMiLFNTX1NJTVBMRXxXU19UQUJTVE9QfFdTX0dST1VQLDQsMTQsMTQwLDg2CiBDT05UUk9MICIiICw3MjEsIlNUQVRJQyIsU1NfU0lNUExFfFdTX1RBQlNUT1B8V1NfR1JPVVAsNCwxMTYsMTQwLDI4CiBDT05UUk9MICIiICw3MTAsIlNUQVRJQyIsV1NfQk9SREVSfFNTX1NJTVBMRXxXU19UQUJTVE9QfFdTX0dST1VQLCAxNTIsNCwxMTgsMTE2CiBDT05UUk9MICIiICw3MDIsIlNUQVRJQyIsU1NfU0lNUExFfFdTX1RBQlNUT1B8V1NfR1JPVVAsIDI3OCw0LDgsMTE2CiBDT05UUk9MICIiICw3MDksIlNUQVRJQyIsU1NfU0lNUExFfFdTX1RBQlNUT1B8V1NfR1JPVVAsIDE1MiwxMjQsNDAsMjYKIERFRlBVU0hCVVRUT04gIk9rIiwgIDEsICA0LCAxNjYsIDQ0LCAxNCwgQlNfREVGUFVTSEJVVFRPTiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiUyZ1bGplIiwgMiwgNTIsIDE2NiwgNDQsIDE0LCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIFBVU0hCVVRUT04gIk8maGplIiwgcHNoSGVscCwxMDAsMTY2LCA0NCwgMTQKIFBVU0hCVVRUT04gIiZMaXPk5CB25HJpIiwgICAgICAgICAgICAgIDcxMi8qMTAyNCovLCAxNTIsIDE2NiwgMTQyLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJNJuTkcml0dGVsZSB25HJpID4+IiwgICAgICA3MTkvKjEwMjUqLywgICA0LCAxNTAsIDE0MiwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAgIiZpIiw3MTMsMzAwLDIwMCw0LDE0ICAgLyoganVzdCBhIGR1bW15OiAgJ2knIGlzICBsaWtlICAmaSAgaW4gInNvbCZpZCIgICovCn0KCgpGSU5ERExHT1JEIERJQUxPRyAzNiwgMjQsIDIzNiwgNjIKU1RZTEUgRFNfTU9EQUxGUkFNRSB8IFdTX1BPUFVQIHwgV1NfQ0FQVElPTiB8IFdTX1NZU01FTlUKQ0FQVElPTiAiRXRzaSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBMVEVYVCAiJkV0c2l0dOR25DoiLCAtMSwgNCwgOCwgNDIsIDgKIEVESVRURVhUIGVkdDEsIDQ3LCA3LCAxMjgsIDEyLCBFU19BVVRPSFNDUk9MTCB8IFdTX0JPUkRFUiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogQ0hFQ0tCT1ggIiZLb2tvIHNhbmEiLCBjaHgxLCA0LCAyNiwgMTAwLCAxMiwgQlNfQVVUT0NIRUNLQk9YIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBDSEVDS0JPWCAiS2lyamFpbmsmb2tvIiwgY2h4MiwgNCwgNDIsIDY0LCAxMiwgQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUAogR1JPVVBCT1ggIlN1dW50YSIsIGdycDEsIDEwNywgMjYsIDY4LCAyOAogQ09OVFJPTCAiJlls9nMiLCByYWQxLCAiQlVUVE9OIiwgQlNfQVVUT1JBRElPQlVUVE9OIHwgV1NfQ0hJTEQgfCBXU19WSVNJQkxFIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QLCAxMTEsIDM4LCAzMCwgMTIKIENPTlRST0wgIiZBbGFzIiwgcmFkMiwgIkJVVFRPTiIsIEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0NISUxEIHwgV1NfVklTSUJMRSB8IFdTX1RBQlNUT1AsIDE0OCwgMzgsIDMwLCAxMgoKIERFRlBVU0hCVVRUT04gIkV0c2kgJnNldXJhYXZhIiwgSURPSywgMTgyLCA1LCA1MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiUGVydXV0YSIsIElEQ0FOQ0VMLCAgICAgICAxODIsIDIzLCA1MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAogUFVTSEJVVFRPTiAiTyZoamUiLCBwc2hIZWxwLCAgICAgICAgICAxODIsIDQ1LCA1MCwgMTQsIFdTX0dST1VQIHwgV1NfVEFCU1RPUAp9CgoKUkVQTEFDRURMR09SRCBESUFMT0cgMzYsIDI0LCAyMzAsIDk0ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VCkNBUFRJT04gIktvcnZhYSIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgp7CiBMVEVYVCAiJkV0c2l0dOR25DoiLCAtMSwgNCwgOSwgNDgsIDgKIEVESVRURVhUIGVkdDEsIDU0LCA3LCAxMTQsIDEyLCBFU19BVVRPSFNDUk9MTCB8IFdTX0JPUkRFUiB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogTFRFWFQgIktvJnJ2YXR0YXZhOiIsIC0xLCA0LCAyNiwgNDgsIDgKIEVESVRURVhUIGVkdDIsIDU0LCAyNCwgMTE0LCAxMiwgRVNfQVVUT0hTQ1JPTEwgfCBXU19CT1JERVIgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKIENIRUNLQk9YICImS29rbyBzYW5hIiwgY2h4MSwgNSwgNDYsIDEwNCwgMTIsIEJTX0FVVE9DSEVDS0JPWCB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUAogQ0hFQ0tCT1ggIktpcmphaW5rJm9rbyIsIGNoeDIsIDUsIDYyLCA1OSwgMTIsIEJTX0FVVE9DSEVDS0JPWCB8IFdTX1RBQlNUT1AKCiBERUZQVVNIQlVUVE9OICJFdHNpICZzZXVyYWF2YSIsIElET0ssIDE3NCwgNCwgNTAsIDE0LCBCU19ERUZQVVNIQlVUVE9OIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJLb3J2JmFhIiwgcHNoMSAgICAgICAgICAsIDE3NCwgMjEsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJLb3J2YWEga2EmaWtraSIsIHBzaDIgICAsIDE3NCwgMzgsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJTJnVsamUiLCBJRENBTkNFTCAgICAgICAsIDE3NCwgNTUsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiBQVVNIQlVUVE9OICJPJmhqZSIsIHBzaEhlbHAgICAgICAgICAsIDE3NCwgNzUsIDUwLCAxNCwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCn0KClBSSU5UMzIgRElBTE9HICAzMiwgMzIsIDI4OCwgMTg2ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8CiAgICAgIERTX0NPTlRFWFRIRUxQIHwgRFNfM0RMT09LCkNBUFRJT04gIlR1bG9zdGEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsICAgICAgICAgICAgICAgICAgSURPSywgICAgIDE4MCwxNjQsIDQ4LDE0LCBXU19HUk9VUCB8IEJTX0RFRlBVU0hCVVRUT04KICAgIFBVU0hCVVRUT04gICAgICAiUGVydXV0YSIsICAgICAgICAgICAgIElEQ0FOQ0VMLCAyMzIsMTY0LCA0OCwxNCwgV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiT2gmamUiLCAgICAgICAgICAgICAgIHBzaEhlbHAsICA1MCwgMTYxLCA0OCwxNCwgV1NfR1JPVVAKCiAgICBHUk9VUEJPWCAgICAgICAgIlR1bG9zdGluIiwgICAgICAgICAgICBncnA0LCAgIDgsICA0LCAyNzIsODQsIFdTX0dST1VQCiAgICBDT05UUk9MICAgICAgICAgIiZUdWxvc3RhIHRpZWRvc3Rvb24iLCBjaHgxLCAiQnV0dG9uIixCU19BVVRPQ0hFQ0tCT1ggfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsMjA3LDcwLDcwLDEyCiAgICBQVVNIQlVUVE9OICAgICAgIiZPbWluYWlzdXVkZXQiLCAgICAgICBwc2gyLCAyMTIsIDE3LCAgNjAsMTQsIFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIiZOaW1pOiIsICAgICAgICAgICAgICBzdGM2LCAgMTYsIDIwLCAgMzYsOAogICAgQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21iNCwgIDUyLCAxOCwgMTUyLDE1MixDQlNfRFJPUERPV05MSVNUIHwgQ0JTX1NPUlQgfCBXU19WU0NST0xMIHwgV1NfR1JPVVAgfCBXU19UQUJTVE9QCiAgICBMVEVYVCAgICAgICAgICAgIlRpbGE6IiwgICAgICAgICAgICAgICBzdGM4LCAgMTYsIDM2LCAgMzYsMTAsIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkR1bW15IFN0YXRlIiwgICAgICAgICBzdGMxMiwgNTIsIDM2LCAyMjQsMTAsIFNTX05PUFJFRklYIHwgU1NfTEVGVE5PV09SRFdSQVAKICAgIExURVhUICAgICAgICAgICAiVHl5cHBpOiIsICAgICAgICAgICAgIHN0YzcsICAxNiwgNDgsICAzNiwxMCwgU1NfTk9QUkVGSVgKICAgIExURVhUICAgICAgICAgICAiRHVtbXkgVHlwZSIsICAgICAgICAgIHN0YzExLCA1MiwgNDgsIDIyNCwxMCwgU1NfTk9QUkVGSVggfCBTU19MRUZUTk9XT1JEV1JBUAogICAgTFRFWFQgICAgICAgICAgICJTaWphaW50aToiLCAgICAgICAgICAgc3RjMTAsIDE2LCA2MCwgIDM2LDEwLCBTU19OT1BSRUZJWAogICAgTFRFWFQgICAgICAgICAgICJEdW1teSBMb2NhdGlvbiIsICAgICAgc3RjMTQsIDUyLCA2MCwgMjI0LDEwLCBTU19OT1BSRUZJWCB8IFNTX0xFRlROT1dPUkRXUkFQCiAgICBMVEVYVCAgICAgICAgICAgIktvbW1lbnR0aToiLCAgICAgICAgICBzdGM5LCAgMTYsIDcyLCAgMzYsMTAsIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkR1bW15IFJlbWFyayIsICAgICAgICBzdGMxMywgNTIsIDcyLCAxNTIsMTAsIFNTX05PUFJFRklYIHwgU1NfTEVGVE5PV09SRFdSQVAKCiAgICBHUk9VUEJPWCAgICAgICAgIktvcGlvaXRhIiwgICAgICAgICAgICBncnAyLCAxNjAsIDkyLCAxMjAsNjQsIFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIktvcGlvaWRlbiAmbeTkcuQ6IiwgICBzdGM1LDE2OCwxMDgsNjgsOAogICAgSUNPTiAgICAgICAgICAgICIiLCAgICAgICAgICAgICAgICAgICAgaWNvMywgMTYyLDEyNCwgIDc2LDI0LCBXU19HUk9VUCB8IFNTX0NFTlRFUklNQUdFCiAgICBDT05UUk9MICAgICAgICAgIiZLb2tvYSIsICAgICAgICAgICAgICBjaHgyLCJCdXR0b24iLEJTX0FVVE9DSEVDS0JPWCB8IFdTX0dST1VQIHwgV1NfVEFCU1RPUCwyNDAsMTMwLDM2LDEyCiAgICBFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZHQzLCAyNDAsMTA2LCAgMzIsMTIsIFdTX0dST1VQIHwgRVNfTlVNQkVSCgogICAgR1JPVVBCT1ggICAgICAgICJUdWxvc3RhIGFsdWVlbHRhIiwgICAgZ3JwMSwgICA4LDkyLCAgMTQ0LDY0LCBXU19HUk9VUAogICAgQ09OVFJPTCAgICAgICAgICJLJmFpa2tpIiwgICAgICAgICAgICAgcmFkMSwiQnV0dG9uIixCU19BVVRPUkFESU9CVVRUT04gfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AsMTYsMTA2LDY0LDEyCiAgICBDT05UUk9MICAgICAgICAgIiZTaXZ1dCIsICAgICAgICAgICAgICByYWQzLCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiwxNiwxMjIsMzYsMTIKICAgIENPTlRST0wgICAgICAgICAiJlZhbGludGEiLCAgICAgICAgICAgIHJhZDIsIkJ1dHRvbiIsQlNfQVVUT1JBRElPQlVUVE9OLDE2LDEzOCw2NCwxMgogICAgRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWR0MSwgIDcwLDEyMiwgIDI2LDEyLCBXU19HUk9VUCB8IEVTX05VTUJFUgogICAgRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWR0MiwgMTE4LDEyMiwgIDI2LDEyLCBXU19HUk9VUCB8IEVTX05VTUJFUgogICAgUlRFWFQgICAgICAgICAgICJNJmlzdOQ6IiwgICAgICAgICAgICAgc3RjMiwgIDQ4LDEyNCwgIDIwLDgKICAgIFJURVhUICAgICAgICAgICAiTWkmaGluOiIsICAgICAgICAgICAgIHN0YzMsICA5OCwxMjQsICAyMCw4Cn0KClBSSU5UMzJfU0VUVVAgRElBTE9HICAzMiwgMzIsIDI4OCwgMTc4ClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVSB8CiAgICAgIERTX0NPTlRFWFRIRUxQIHwgRFNfM0RMT09LCkNBUFRJT04gIlR1bG9zdHVrc2VuIEFzZXR1a3NldCIKRk9OVCA4LCAiTVMgU2hlbGwgRGxnIgpCRUdJTgogICAgREVGUFVTSEJVVFRPTiAgICJPSyIsSURPSywxODAsMTU2LDQ4LDE0LFdTX0dST1VQCiAgICBQVVNIQlVUVE9OICAgICAgIlBlcnV1dGEiLElEQ0FOQ0VMLDIzMiwxNTYsNDgsMTQKLyogICAgUFVTSEJVVFRPTiAgICAgICJWZXJra28uLi4iLCBwc2g1LCAyODQsMTU2LDQ4LDE0ICovCgogICAgR1JPVVBCT1ggICAgICAgICJUdWxvc3RpbiIsICAgICAgIGdycDQsICAgOCwgIDQsIDI3Miw4NCwgV1NfR1JPVVAKICAgIFBVU0hCVVRUT04gICAgICAiJk9taW5haXN1dWRldCIsICBwc2gyLCAyMTIsIDE3LCAgNjAsMTQsIFdTX0dST1VQCiAgICBMVEVYVCAgICAgICAgICAgIiZOaW1pOiIsICAgICAgICAgc3RjNiwgIDE2LCAyMCwgIDM2LDgKICAgIENPTUJPQk9YICAgICAgICAgICAgICAgICAgICAgICAgICBjbWIxLCAgNTIsIDE4LCAxNTIsMTUyLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfU09SVCB8IFdTX1ZTQ1JPTEwgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiVGlsYToiLCAgICAgICAgICBzdGM4LCAgMTYsIDM2LCAgMzYsMTAsIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkR1bW15IFN0YXRlIiwgICAgc3RjMTIsIDUyLCAzNiwgMjI0LDEwLCBTU19OT1BSRUZJWCB8IFNTX0xFRlROT1dPUkRXUkFQCiAgICBMVEVYVCAgICAgICAgICAgIlR5eXBwaToiLCAgICAgICAgc3RjNywgIDE2LCA0OCwgIDM2LDEwLCBTU19OT1BSRUZJWAogICAgTFRFWFQgICAgICAgICAgICJEdW1teSBUeXBlIiwgICAgIHN0YzExLCA1MiwgNDgsIDIyNCwxMCwgU1NfTk9QUkVGSVggfCBTU19MRUZUTk9XT1JEV1JBUAogICAgTFRFWFQgICAgICAgICAgICJTaWphaW50aToiLCAgICAgIHN0YzEwLCAxNiwgNjAsICAzNiwxMCwgU1NfTk9QUkVGSVgKICAgIExURVhUICAgICAgICAgICAiRHVtbXkgTG9jYXRpb24iLCBzdGMxNCwgNTIsIDYwLCAyMjQsMTAsIFNTX05PUFJFRklYIHwgU1NfTEVGVE5PV09SRFdSQVAKICAgIExURVhUICAgICAgICAgICAiS29tbWVudHRpOiIsICAgICBzdGM5LCAgMTYsIDcyLCAgMzYsMTAsIFNTX05PUFJFRklYCiAgICBMVEVYVCAgICAgICAgICAgIkR1bW15IFJlbWFyayIsICAgc3RjMTMsIDUyLCA3MiwgMjI0LDEwLCBTU19OT1BSRUZJWCB8IFNTX0xFRlROT1dPUkRXUkFQCgogICAgR1JPVVBCT1ggICAgICAgICJQYXBlcmkiLCAgICAgICAgIGdycDIsICAgOCwgOTIsIDE2NCw1NiwgV1NfR1JPVVAKICAgIExURVhUICAgICAgICAgICAiJktva286IiwgICAgICAgICBzdGMyLCAgMTYsMTA4LCAgMzYsIDgKICAgIENPTUJPQk9YICAgICAgICAgICAgICAgICAgICAgICAgICBjbWIyLCAgNTIsMTA2LCAxMTIsMTEyLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfU09SVCB8IFdTX1ZTQ1JPTEwgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKICAgIExURVhUICAgICAgICAgICAiJkzkaGRlOiIsICAgICAgICBzdGMzLCAgMTYsMTI4LCAgMzYsIDgKICAgIENPTUJPQk9YICAgICAgICAgICAgICAgICAgICAgICAgICBjbWIzLCAgNTIsMTI2LCAxMTIsMTEyLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfU09SVCB8IFdTX1ZTQ1JPTEwgfCBXU19HUk9VUCB8IFdTX1RBQlNUT1AKCiAgICBHUk9VUEJPWCAgICAgICAgIlN1dW50YSIsICAgICAgICAgZ3JwMSwgMTgwLCA5MiwgMTAwLDU2LCBXU19HUk9VUAogICAgSUNPTiAgICAgICAgICAgICIiLCAgICAgICAgICAgICAgIGljbzEsIDE5NSwxMTIsICAxOCwyMCwgV1NfR1JPVVAKICAgIENPTlRST0wgICAgICAgICAiJlB5c3R5IiwgICAgICAgICByYWQxLCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiB8IFdTX0dST1VQIHxXU19UQUJTVE9QLDIyNCwxMDYsNTIsMTIKICAgIENPTlRST0wgICAgICAgICAiViZhYWthIiwgICAgICAgICByYWQyLCJCdXR0b24iLEJTX0FVVE9SQURJT0JVVFRPTiwyMjQsMTI2LDUyLDEyCkVORAoKUEFHRVNFVFVQRExHT1JEIERJQUxPRyAzMiwgMzIsIDI0MCwgMjQwClNUWUxFIERTX01PREFMRlJBTUUgfCBXU19QT1BVUCB8IFdTX1ZJU0lCTEUgfCBXU19DQVBUSU9OIHwgV1NfU1lTTUVOVQpDQVBUSU9OICJTaXZ1biBBc2V0dWtzZXQiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKQkVHSU4KICBDT05UUk9MICAgICAgICAgIiIsICAgICAgICAgICAgIHJjdDEsICJTdGF0aWMiLCBTU19XSElURVJFQ1QsIDgwLCA4LCA4MCwgODAKICBDT05UUk9MICAgICAgICAgIiIsICAgICAgICAgICAgIHJjdDIsICJTdGF0aWMiLCBTU19HUkFZUkVDVCwgMTYwLCAxMiwgNCwgODAKICBDT05UUk9MICAgICAgICAgIiIsICAgICAgICAgICAgIHJjdDMsICJTdGF0aWMiLCBTU19HUkFZUkVDVCwgIDg0LCA4OCwgODAsIDQKICBHUk9VUEJPWCAgICAgICAgIlBhcGVyaSIsICAgICAgIGdycDIsIDgsIDk2LCAyMjQsIDU2LCBCU19HUk9VUEJPWAogIExURVhUICAgICAgICAgICAiJktva286IiwgICAgICAgc3RjMiwgMTYsIDExMiwgMzYsIDgKICBDT01CT0JPWCAgICAgICAgICAgICAgICAgICAgICAgIGNtYjIsIDY0LCAxMTAsIDE2MCwgMTYwLCBDQlNfU0lNUExFfENCU19EUk9QRE9XTnxDQlNfU09SVHxXU19HUk9VUHxXU19UQUJTVE9QfFdTX1ZTQ1JPTEwKICBMVEVYVCAgICAgICAgICAgIiZTefZ0dPY6IiwgICAgIHN0YzMsIDE2LCAxMzIsIDM2LCA4CiAgQ09NQk9CT1ggICAgICAgICAgICAgICAgICAgICAgICBjbWIzLCA2NCwgMTMwLCAxNjAsIDE2MCwgQ0JTX1NJTVBMRXxDQlNfRFJPUERPV058Q0JTX1NPUlR8V1NfR1JPVVB8V1NfVEFCU1RPUHxXU19WU0NST0xMCiAgR1JPVVBCT1ggICAgICAgICJBc2VudG8iLCAgICAgICBncnAxLCA4LCAxNTYsIDY0LCA1NiwgQlNfR1JPVVBCT1gKICBBVVRPUkFESU9CVVRUT04gIlAmeXN0eSIsICAgICAgICByYWQxLCAxNiwgMTcwLCA1MiwgMTIsIEJTX0FVVE9SQURJT0JVVFRPTgogIEFVVE9SQURJT0JVVFRPTiAiViZhYWthIiwgICAgIHJhZDIsIDE2LCAxOTAsIDUyLCAxMiwgQlNfQVVUT1JBRElPQlVUVE9OCiAgR1JPVVBCT1ggICAgICAgICJSZXVuYXQiLCAgICAgICBncnA0LCA4MCwgMTU2LCAxNTIsIDU2LCBCU19HUk9VUEJPWAogIExURVhUICAgICAgICAgICAiJlZhc2VuOiIsICAgICAgc3RjMTUsIDg4LCAxNzIsIDIxLCA4CiAgRURJVFRFWFQgICAgICAgICAgICAgICAgICAgICAgICBlZHQ0LCAxMTEsIDE3MCwgMzksIDEyLCBXU19UQUJTVE9QfFdTX0dST1VQfFdTX0JPUkRFUgogIExURVhUICAgICAgICAgICAiJk9pa2VhOiIsICAgICAgc3RjMTYsIDE1OSwgMTcyLCAyNywgOAogIEVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgZWR0NiwgMTg3LCAxNzAsIDM5LCAxMiwgV1NfVEFCU1RPUHxXU19HUk9VUHxXU19CT1JERVIKICBMVEVYVCAgICAgICAgICAgIiZWYXNlbjoiLCAgICAgIHN0YzE3LCA4OCwgMTkyLCAyMSwgOAogIEVESVRURVhUICAgICAgICAgICAgICAgICAgICAgICAgZWR0NSwgMTExLCAxOTAsIDM5LCAxMiwgV1NfVEFCU1RPUHxXU19HUk9VUHxXU19CT1JERVIKICBMVEVYVCAgICAgICAgICAgIiZQb2hqYToiLCAgICAgIHN0YzE4LCAxNTksIDE5MiwgMjMsIDgKICBFRElUVEVYVCAgICAgICAgICAgICAgICAgICAgICAgIGVkdDcsIDE4NywgMTkwLCAzOSwgMTIsIFdTX1RBQlNUT1B8V1NfR1JPVVB8V1NfQk9SREVSCiAgREVGUFVTSEJVVFRPTiAgICJPSyIsICAgICAgICAgICBJRE9LLCA3MSwgMjIwLCA1MCwgMTQsIEJTX1BVU0hCVVRUT04KICBQVVNIQlVUVE9OICAgICAgIlBlcnV1dGEiLCAgICAgIElEQ0FOQ0VMLCAxMjYsIDIyMCwgNTAsIDE0CiAgUFVTSEJVVFRPTiAgICAgICJUJnVsb3N0aW4uLi4iLCBwc2gzLCAxODQsIDIyMCwgNDgsIDE0CkVORAoKTkVXRklMRU9QRU5PUkQgRElBTE9HIDAsIDAsIDI4MCwgMTY0ClNUWUxFIERTX01PREFMRlJBTUUgfCBEU19DT05URVhUSEVMUCB8IFdTX1ZJU0lCTEUgfCBXU19QT1BVUCB8IFdTX0NBUFRJT04gfCBXU19TWVNNRU5VIHwgV1NfQ0xJUENISUxEUkVOCkNBUFRJT04gIkF2YWEiCkZPTlQgOCwgIk1TIFNoZWxsIERsZyIKewogICAgTFRFWFQJIiZLYW5zaW9zdGE6IixJRENfTE9PS0lOU1RBVElDLDQsNiw0Myw4LCBTU19OT1RJRlkKICAgIENPTUJPQk9YCUlEQ19MT09LSU4sNDksMywxMzIsMTAwLENCU19EUk9QRE9XTkxJU1QgfCBDQlNfT1dORVJEUkFXRklYRUQgfCBDQlNfSEFTU1RSSU5HUyB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgTFRFWFQJIiIgLCBJRENfVE9PTEJBUlNUQVRJQywgMTgxLCAyLCAxMDIsIDE3LCBOT1QgV1NfR1JPVVAgfCBOT1QgV1NfVklTSUJMRQogICAgTElTVEJPWAlJRENfU0hFTExTVEFUSUMsNCwyMCwyNzIsODUsIExCU19TT1JUIHwgTEJTX05PSU5URUdSQUxIRUlHSFQgfCBMQlNfTVVMVElDT0xVTU4gfCBXU19IU0NST0xMIHwgTk9UIFdTX1ZJU0lCTEUKCiAgICBMVEVYVAkiJk5pbWk6IixJRENfRklMRU5BTUVTVEFUSUMsNSwxMTIsNDYsOCwgU1NfTk9USUZZCiAgICBFRElUVEVYVAlJRENfRklMRU5BTUUsNTQsMTEwLDE1NSwxMixFU19BVVRPSFNDUk9MTAoKICAgIExURVhUCSImVHl5cHBpOiIsSURDX0ZJTEVUWVBFU1RBVElDLDUsMTI4LDQyLDgsIFNTX05PVElGWQogICAgQ09NQk9CT1gJSURDX0ZJTEVUWVBFLDU0LDEyNiwxNTUsNTMsQ0JTX0RST1BET1dOTElTVCB8IFdTX1ZTQ1JPTEwgfCBXU19UQUJTVE9QCgogICAgQ09OVFJPTAkiQXZhYSB2YWluICZsdWt1b2lrZXVrc2lsbGEiLElEQ19PUEVOUkVBRE9OTFksIkJ1dHRvbiIsQlNfQVVUT0NIRUNLQk9YIHwgV1NfVEFCU1RPUCw1NCwxNDUsMTAwLDEwCgogICAgREVGUFVTSEJVVFRPTgkiJkF2YWEiLAkJIElET0ssMjIyLDExMCw1MCwxNAogICAgUFVTSEJVVFRPTgkJIlBlcnV1dGEiLAkJIElEQ0FOQ0VMLDIyMiwxMjgsNTAsMTQKICAgIFBVU0hCVVRUT04JCSImT2hqZSIsCQkgcHNoSGVscCwyMjIsMTQ1LDUwLDE0Cn0KClNUUklOR1RBQkxFCnsKICAgIElEU19BQk9VVEJPWCAgICAgICAgICAgICImVGlldG9qYSBGb2xkZXJQaWNrZXItdGVzdGlzdOQiCiAgICBJRFNfRE9DVU1FTlRGT0xERVJTICAgICAiRG9rdW1lbnR0aWthbnNpb3QiCiAgICBJRFNfUEVSU09OQUwgICAgICAgICAgICAiT21hdCB0aWVkb3N0b3QiCiAgICBJRFNfRkFWT1JJVEVTICAgICAgICAgICAiU3Vvc2lraXQiCiAgICBJRFNfUEFUSCAgICAgICAgICAgICAgICAiSuRyamVzdGVsbeRrYW5zaW8iCiAgICBJRFNfREVTS1RPUCAgICAgICAgICAgICAiVHn2cPZ5dOQiCiAgICBJRFNfRk9OVFMgICAgICAgICAgICAgICAiRm9udGl0IgogICAgSURTX01ZQ09NUFVURVIgICAgICAgICAgIk9tYSB0aWV0b2tvbmUiCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19TWVNURU1GT0xERVJTICAgICAgICJK5HJqZXN0ZW3ka2Fuc2lvdCIKICAgIElEU19MT0NBTEhBUkRSSVZFUyAgICAgICJQYWlrYWxsaXNldCBraWludG9sZXZ5dCIKICAgIElEU19GSUxFTk9URk9VTkQgICAgICAgICJUaWVkb3N0b2EgZWkgbPZ5ZHkiCiAgICBJRFNfVkVSSUZZRklMRSAgICAgICAgICAiVmFybWlzdGEsIGV0dOQgdGllZG9zdG9uIG5pbWkgb24gb2lrZWluIgogICAgSURTX0NSRUFURUZJTEUgICAgICAgICAgIlRpZWRvc3RvYSBlaSBvbGUgb2xlbWFzc2EuXG5IYWx1YXRrbyBsdW9kYSBzZW4/IgogICAgSURTX09WRVJXUklURUZJTEUgICAgICAgIlRpZWRvc3RvIG9uIGpvIG9sZW1hc3NhLlxuSGFsdWF0a28geWxpa2lyam9pdGFhIHNlbj8iCiAgICBJRFNfSU5WQUxJRF9GSUxFTkFNRV9USVRMRSAiS2Fuc2lvIHNpc+RsdOTkIGVw5GtlbHBvamEgbWVya2tlauQiCiAgICBJRFNfSU5WQUxJRF9GSUxFTkFNRSAgICAiVGllZG9zdG9uIG5pbWkgZWkgdm9pIHNpc+RsdOTkIG7kaXTkIG1lcmtrZWrkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAvIDogPCA+IHwiCiAgICBJRFNfUEFUSE5PVEVYSVNUSU5HICAgICAiS2Fuc2lvdGEgZWkgb2xlIgogICAgSURTX0ZJTEVOT1RFWElTVElORyAgICAgIlRpZWRvc3RvYSBlaSBvbGUiCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19VUEZPTERFUiAgICAgICAgICJZbGVtcGkga2Fuc2lvIgogICAgSURTX05FV0ZPTERFUiAgICAgICAgIkx1byB1dXNpIGthbnNpbyIKICAgIElEU19MSVNUVklFVyAgICAgICAgICJMaXN0YSIKICAgIElEU19SRVBPUlRWSUVXICAgICAgICJUaWVkb3QiCiAgICBJRFNfVE9ERVNLVE9QICAgICAgICAiVHn2cPZ5dOQiCn0KClNUUklOR1RBQkxFCnsKICAgIFBEMzJfUFJJTlRfVElUTEUgICAgICAgIlR1bG9zdGEiCgogICAgUEQzMl9WQUxVRV9VUkVBREFCTEUgICAgICAgICAgICAgICAgICAiTHVrdWtlbHZvdG9uIG1lcmtpbnTkIgogICAgUEQzMl9JTlZBTElEX1BBR0VfUkFOR0UgICAgICAgICAgICAgICAiQXJ2byBlaSBvbGUgcGFwZXJpZW4gbeTkcuRuIGFsdWVlbGxhLlxuQW5uYSBhcnZvIHbkbGlsdOQgJWQgamEgJWQuIgogICAgUEQzMl9GUk9NX05PVF9BQk9WRV9UTyAgICAgICAgICAgICAgICAiQWx1a3VhcnZvIGVpIHZvaSBvbGxhIHN1dXJlbXBpIGt1aW4gbG9wcHVhcnZvLiIKICAgIFBEMzJfTUFSR0lOU19PVkVSTEFQICAgICAgICAgICAgICAgICAgIk1hcmdpbmFhbGl0IG92YXQgcOTkbGxla+RpbiB0YWkgdWxrb25hIHBhcGVyaW4gYWx1ZWVsdGEuXG5N5ORyaXTkIG1hcmdpbmFhbGl0IHV1ZGVzdGFhbi4iCiAgICBQRDMyX05SX09GX0NPUElFU19FTVBUWSAgICAgICAgICAgICAgICJLb3Bpb2lkZW4gbeTkcuQgdOR5dHl5IGFudGFhLiIKICAgIFBEMzJfVE9PX0xBUkdFX0NPUElFUyAgICAgICAgICAgICAgICAgIlR1bG9zdGluIGVpIHR1ZSBu5GluIG1vbnRhYSBrb3Bpb3RhLlxuVmFsaXRzZSBhcnZvIHbkbGlsdOQgMSBqYSAlZC4iCiAgICBQRDMyX1BSSU5UX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICJUdWxvc3RpbnZpcmhlLiIKICAgIFBEMzJfTk9fREVGQVVMVF9QUklOVEVSICAgICAgICAgICAgICAgIk9sZXR1c3R1bG9zdGludGEgZWkgb2xlIG3k5HJpdGV0dHkuIgogICAgUEQzMl9DQU5UX0ZJTkRfUFJJTlRFUiAgICAgICAgICAgICAgICAiVHVsb3N0aW50YSBlaSBs9nlkeS4iCiAgICBQRDMyX09VVF9PRl9NRU1PUlkgICAgICAgICAgICAgICAgICAgICJNdWlzdGkgbG9wcHUuIgogICAgUEQzMl9HRU5FUklDX0VSUk9SICAgICAgICAgICAgICAgICAgICAiVmlyaGUuIgogICAgUEQzMl9EUklWRVJfVU5LTk9XTiAgICAgICAgICAgICAgICAgICAiVHVudGVtYXRvbiB0dWxvc3RpbmFqdXJpLiIKICAgIFBEMzJfTk9fREVWSUNFUyAgICAgICAgICAgICAgICAgICAgICAgIkpvdHRhIHZvaXNpdCBr5Hl0dOTkIHR1bG9zdGltaWEgdGFpIG11b2thdGEgbmlpZGVuIGFzZXR1a3NpYSwgXApzaW51biB05Hl0eXkgZW5zaW4gYXNlbnRhYSBqb2tpbiB0dWxvc3Rpbi4iCgogICAgUEQzMl9ERUZBVUxUX1BSSU5URVIgICAgICAgICAgICAgICAgICAiT2xldHVzdHVsb3N0aW47ICIKICAgIFBEMzJfTlJfT0ZfRE9DVU1FTlRTX0lOX1FVRVVFICAgICAgICAgIkpvbm9zc2Egb24gJWQgZG9rdW1lbnR0aWEiCiAgICBQRDMyX01BUkdJTlNfSU5fSU5DSEVTICAgICAgICAgICAgICAgICJNYXJnaW5hYWxpdCAodHV1bWluYSkiCiAgICBQRDMyX01BUkdJTlNfSU5fTUlMTElNRVRFUlMgICAgICAgICAgICJNYXJnaW5hYWxpdCAobW0pIgogICAgUEQzMl9NSUxMSU1FVEVSUyAgICAgICAgICAgICAgICAgICAgICAibW0iCgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19SRUFEWSAgICAgICAgICAgICAiVmFsbWlzIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19QQVVTRUQgICAgICAgICAgICAiUHlz5Hl0ZXR0eTsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19FUlJPUiAgICAgICAgICAgICAiVmlyaGU7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfUEVORElOR19ERUxFVElPTiAgIlR1aG91dHVtYXNzYTsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19QQVBFUl9KQU0gICAgICAgICAiUGFwZXJpdHVrb3M7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfUEFQRVJfT1VUICAgICAgICAgIlBhcGVyaSBsb3BwdTsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19NQU5VQUxfRkVFRCAgICAgICAiU3n2dOQgcGFwZXJpIGvkc2luOyAiCiAgICBQRDMyX1BSSU5URVJfU1RBVFVTX1BBUEVSX1BST0JMRU0gICAgICJPbmdlbG1hIHBhcGVyaW4ga2Fuc3NhOyAiCiAgICBQRDMyX1BSSU5URVJfU1RBVFVTX09GRkxJTkUgICAgICAgICAgICJFaSB5aHRleXR05CB0dWxvc3RpbWVlbjsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19JT19BQ1RJVkUgICAgICAgICAiVGllZG9uc2lpcnRvIG1lbmVpbGzk5G47ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfQlVTWSAgICAgICAgICAgICAgIlZhcmF0dHU7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfUFJJTlRJTkcgICAgICAgICAgIlR1bG9zdGFhOyAiCiAgICBQRDMyX1BSSU5URVJfU1RBVFVTX09VVFBVVF9CSU5fRlVMTCAgICJQYXBlcmluIGx1b3Z1dHVzdGFzbyBvbiB05HlubuQ7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfTk9UX0FWQUlMQUJMRSAgICAgIkVpIHNhYXRhdmlsbGE7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfV0FJVElORyAgICAgICAgICAgIk9kb3R0YWE7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfUFJPQ0VTU0lORyAgICAgICAgIkvkc2l0ZWxs5ORuOyAiCiAgICBQRDMyX1BSSU5URVJfU1RBVFVTX0lOSVRJQUxJWklORyAgICAgICJBbHVzdGV0YWFuOyAiCiAgICBQRDMyX1BSSU5URVJfU1RBVFVTX1dBUk1JTkdfVVAgICAgICAgICJM5G1taXRldOTkbjsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19UT05FUl9MT1cgICAgICAgICAiVuRyaWFpbmUgduRoaXNz5DsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19OT19UT05FUiAgICAgICAgICAiRWkgduRyaWFpbmV0dGE7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfUEFHRV9QVU5UICAgICAgICAgIlBhZ2UgcHVudDsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19VU0VSX0lOVEVSVkVOVElPTiAiS+R5dHTkauRuIGtlc2tleXR05G3kOyAiCiAgICBQRDMyX1BSSU5URVJfU1RBVFVTX09VVF9PRl9NRU1PUlkgICAgICJNdWlzdGkgbG9wcHU7ICIKICAgIFBEMzJfUFJJTlRFUl9TVEFUVVNfRE9PUl9PUEVOICAgICAgICAgIlR1bG9zdGltZW4ga2Fuc2kgb24gYXVraTsgIgogICAgUEQzMl9QUklOVEVSX1NUQVRVU19TRVJWRVJfVU5LTk9XTiAgICAiVHVsb3N0aW5wYWx2ZWxpbiB0dW50ZW1hdG9uOyAiCiAgICBQRDMyX1BSSU5URVJfU1RBVFVTX1BPV0VSX1NBVkUgICAgICAgICJWaXJyYW5z5ORzdPZ0aWxhOyAiCn0KClNUUklOR1RBQkxFIC8qIEZvbnQgc3R5bGVzICovCnsKICAgIElEU19GT05UX1JFR1VMQVIgICAgICAgIlRhdmFsbGluZW4iCiAgICBJRFNfRk9OVF9CT0xEICAgICAgICAgICJMaWhhdm9pdHUiCiAgICBJRFNfRk9OVF9JVEFMSUMgICAgICAgICJLdXJzaXZvaXR1IgogICAgSURTX0ZPTlRfQk9MRF9JVEFMSUMgICAiTGloYXZvaXR1IGt1cnNpdm9pdHUiCn0KClNUUklOR1RBQkxFIC8qIENvbG9yIG5hbWVzICovCnsKICAgIElEU19DT0xPUl9CTEFDSyAgICAgIk11c3RhIgogICAgSURTX0NPTE9SX01BUk9PTiAgICAiS2FzdGFuamFucnVza2VhIgogICAgSURTX0NPTE9SX0dSRUVOICAgICAiVmlocmXkIgogICAgSURTX0NPTE9SX09MSVZFICAgICAiT2xpaXZpbnZpaHJl5CIKICAgIElEU19DT0xPUl9OQVZZICAgICAgIkxhaXZhc3RvbnNpbmluZW4iCiAgICBJRFNfQ09MT1JfUFVSUExFICAgICJQdXJwcHVyYSIKICAgIElEU19DT0xPUl9URUFMICAgICAgIlR1cmtvb3NpIgogICAgSURTX0NPTE9SX0dSQVkgICAgICAiSGFybWFhIgogICAgSURTX0NPTE9SX1NJTFZFUiAgICAiSG9wZWEiCiAgICBJRFNfQ09MT1JfUkVEICAgICAgICJQdW5haW5lbiIKICAgIElEU19DT0xPUl9MSU1FICAgICAgIlZhYWxlYW52aWhyZeQiCiAgICBJRFNfQ09MT1JfWUVMTE9XICAgICJLZWx0YWluZW4iCiAgICBJRFNfQ09MT1JfQkxVRSAgICAgICJTaW5pbmVuIgogICAgSURTX0NPTE9SX0ZVQ0hTSUEgICAiVHVtbWFucHVuYWluZW4iCiAgICBJRFNfQ09MT1JfQVFVQSAgICAgICJWYWFsZWFudHVya29vc2kiCiAgICBJRFNfQ09MT1JfV0hJVEUgICAgICJWYWxrb2luZW4iCn0KClNUUklOR1RBQkxFCnsKICAgIElEU19GT05UX1NJWkUgICAiVmFsaXRzZSBmb250aW4ga29rbyB25GxpbHTkICVkIGphICVkIHBpc3RldHTkLiIKICAgIElEU19TQVZFX0JVVFRPTiAiJlRhbGxlbm5hIgogICAgSURTX1NBVkVfSU4gICAgICImS2Fuc2lvb246IgogICAgSURTX1NBVkUgICAgICAgICJUYWxsZW5uYSIKICAgIElEU19TQVZFX0FTICAgICAiVGFsbGVubmEgbmltZWxs5CIKICAgIElEU19PUEVOX0ZJTEUgICAiQXZhYSB0aWVkb3N0byIKfQo=