/pidgin/main: 56d191003b34: facebook: Port from sslconn to Gio
Mike Ruprecht <[email protected]> Fri, 30 Sep 2016 10:52:02 -0400
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Q2hhbmdlc2V0OiA1NmQxOTEwMDNiMzQ4NDVmNWRiYzI3YjgyZGVmYTY2NWI2NDRmZGQ1CkF1dGhv cjoJIE1pa2UgUnVwcmVjaHQgPGNtYWlrdUBnbWFpbC5jb20+CkRhdGU6CSAyMDE2LTA5LTE1IDEz OjMxIC0wNTAwCkJyYW5jaDoJIGRlZmF1bHQKVVJMOiBodHRwczovL2hnLnBpZGdpbi5pbS9waWRn aW4vbWFpbi9yZXYvNTZkMTkxMDAzYjM0CgpEZXNjcmlwdGlvbjoKCmZhY2Vib29rOiBQb3J0IGZy b20gc3NsY29ubiB0byBHaW8KClRoaXMgcGF0Y2ggcG9ydHMgdXNhZ2Ugb2YgbGlicHVycGxlJ3Mg c3NsY29ubi5bY2hdIHRvIG5hdGl2ZSBHaW8uClRoZXJlIGlzIHBvdGVudGlhbCB0byBpbXByb3Zl IHRoaXMgYnkgYWxsb3dpbmcgZm9yIE1xdHRNZXNzYWdlcyB0bwp1c2UgZXh0ZXJuYWwgYnl0ZXMg d2l0aG91dCBjb3B5aW5nIChwcm92aWRlZCB0aGV5J3JlIGNvbnN1bWVkIHNvb24KZW5vdWdoKSBh bmQgdG8gInN0ZWFsIiB0aGUgYnl0ZXMgZnJvbSBhIE1xdHRNZXNzYWdlIGZvciBzZW5kaW5nLgpV bmZvcnR1bmF0ZWx5IEdCeXRlQXJyYXkgZG9lc24ndCBoYXZlIGFsbCB0aGUgbWVtb3J5IG1hbmFn ZW1lbnQgQVBJCkdCeXRlcyBoYXMuCgpkaWZmc3RhdDoKCiBsaWJwdXJwbGUvcHJvdG9jb2xzL2Zh Y2Vib29rL2ZhY2Vib29rLmMgfCAgICA0ICstCiBsaWJwdXJwbGUvcHJvdG9jb2xzL2ZhY2Vib29r L21xdHQuYyAgICAgfCAgMzM0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIGxpYnB1 cnBsZS9wcm90b2NvbHMvZmFjZWJvb2svbXF0dC5oICAgICB8ICAgMTcgLQogMyBmaWxlcyBjaGFu Z2VkLCAxOTggaW5zZXJ0aW9ucygrKSwgMTU3IGRlbGV0aW9ucygtKQoKZGlmZnMgKHRydW5jYXRl ZCBmcm9tIDUzNSB0byAzMDAgbGluZXMpOgoKZGlmZiAtLWdpdCBhL2xpYnB1cnBsZS9wcm90b2Nv bHMvZmFjZWJvb2svZmFjZWJvb2suYyBiL2xpYnB1cnBsZS9wcm90b2NvbHMvZmFjZWJvb2svZmFj ZWJvb2suYwotLS0gYS9saWJwdXJwbGUvcHJvdG9jb2xzL2ZhY2Vib29rL2ZhY2Vib29rLmMKKysr IGIvbGlicHVycGxlL3Byb3RvY29scy9mYWNlYm9vay9mYWNlYm9vay5jCkBAIC0zMzIsOCArMzMy LDggQEAgZmJfY2JfYXBpX2Vycm9yKEZiQXBpICphcGksIEdFcnJvciAqZXJybwogCiAJZ2MgPSBm Yl9kYXRhX2dldF9jb25uZWN0aW9uKGZhdGEpOwogCi0JaWYgKGVycm9yLT5kb21haW4gPT0gRkJf TVFUVF9TU0xfRVJST1IpIHsKLQkJcHVycGxlX2Nvbm5lY3Rpb25fc3NsX2Vycm9yKGdjLCBlcnJv ci0+Y29kZSk7CisJaWYgKGVycm9yLT5kb21haW4gPT0gR19JT19FUlJPUikgeworCQlwdXJwbGVf Y29ubmVjdGlvbl9nX2Vycm9yKGdjLCBlcnJvcik7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdp dCBhL2xpYnB1cnBsZS9wcm90b2NvbHMvZmFjZWJvb2svbXF0dC5jIGIvbGlicHVycGxlL3Byb3Rv Y29scy9mYWNlYm9vay9tcXR0LmMKLS0tIGEvbGlicHVycGxlL3Byb3RvY29scy9mYWNlYm9vay9t cXR0LmMKKysrIGIvbGlicHVycGxlL3Byb3RvY29scy9mYWNlYm9vay9tcXR0LmMKQEAgLTI4LDcg KzI4LDggQEAKICNpbmNsdWRlICJhY2NvdW50LmgiCiAjaW5jbHVkZSAiZXZlbnRsb29wLmgiCiAj aW5jbHVkZSAiZ2xpYmNvbXBhdC5oIgotI2luY2x1ZGUgInNzbGNvbm4uaCIKKyNpbmNsdWRlICJw dXJwbGUtZ2lvLmgiCisjaW5jbHVkZSAicXVldWVkb3V0cHV0c3RyZWFtLmgiCiAKICNpbmNsdWRl ICJtYXJzaGFsLmgiCiAjaW5jbHVkZSAibXF0dC5oIgpAQCAtMzcsMTcgKzM4LDE3IEBACiBzdHJ1 Y3QgX0ZiTXF0dFByaXZhdGUKIHsKIAlQdXJwbGVDb25uZWN0aW9uICpnYzsKLQlQdXJwbGVTc2xD b25uZWN0aW9uICpnc2M7CisJR0lPU3RyZWFtICpjb25uOworCUdCdWZmZXJlZElucHV0U3RyZWFt ICppbnB1dDsKKwlQdXJwbGVRdWV1ZWRPdXRwdXRTdHJlYW0gKm91dHB1dDsKKwlHQ2FuY2VsbGFi bGUgKmNhbmNlbGxhYmxlOwogCWdib29sZWFuIGNvbm5lY3RlZDsKIAlndWludDE2IG1pZDsKIAog CUdCeXRlQXJyYXkgKnJidWY7Ci0JR0J5dGVBcnJheSAqd2J1ZjsKIAlnc2l6ZSByZW16OwogCiAJ Z2ludCB0ZXY7Ci0JZ2ludCByZXY7Ci0JZ2ludCB3ZXY7CiB9OwogCiBzdHJ1Y3QgX0ZiTXF0dE1l c3NhZ2VQcml2YXRlCkBAIC02NSw2ICs2Niw4IEBAIHN0cnVjdCBfRmJNcXR0TWVzc2FnZVByaXZh dGUKIEdfREVGSU5FX1RZUEUoRmJNcXR0LCBmYl9tcXR0LCBHX1RZUEVfT0JKRUNUKTsKIEdfREVG SU5FX1RZUEUoRmJNcXR0TWVzc2FnZSwgZmJfbXF0dF9tZXNzYWdlLCBHX1RZUEVfT0JKRUNUKTsK IAorc3RhdGljIHZvaWQgZmJfbXF0dF9yZWFkX3BhY2tldChGYk1xdHQgKm1xdHQpOworCiBzdGF0 aWMgdm9pZAogZmJfbXF0dF9kaXNwb3NlKEdPYmplY3QgKm9iaikKIHsKQEAgLTczLDcgKzc2LDYg QEAgZmJfbXF0dF9kaXNwb3NlKEdPYmplY3QgKm9iaikKIAogCWZiX21xdHRfY2xvc2UobXF0dCk7 CiAJZ19ieXRlX2FycmF5X2ZyZWUocHJpdi0+cmJ1ZiwgVFJVRSk7Ci0JZ19ieXRlX2FycmF5X2Zy ZWUocHJpdi0+d2J1ZiwgVFJVRSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjEsNyArMTYzLDYg QEAgZmJfbXF0dF9pbml0KEZiTXF0dCAqbXF0dCkKIAltcXR0LT5wcml2ID0gcHJpdjsKIAogCXBy aXYtPnJidWYgPSBnX2J5dGVfYXJyYXlfbmV3KCk7Ci0JcHJpdi0+d2J1ZiA9IGdfYnl0ZV9hcnJh eV9uZXcoKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTIwNSwxOCArMjA2LDYgQEAgZmJfbXF0dF9l cnJvcl9xdWFyayh2b2lkKQogCXJldHVybiBxOwogfQogCi1HUXVhcmsKLWZiX21xdHRfc3NsX2Vy cm9yX3F1YXJrKHZvaWQpCi17Ci0Jc3RhdGljIEdRdWFyayBxID0gMDsKLQotCWlmIChHX1VOTElL RUxZKHEgPT0gMCkpIHsKLQkJcSA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nKCJmYi1tcXR0 LXNzbC1lcnJvci1xdWFyayIpOwotCX0KLQotCXJldHVybiBxOwotfQotCiBGYk1xdHQgKgogZmJf bXF0dF9uZXcoUHVycGxlQ29ubmVjdGlvbiAqZ2MpCiB7CkBAIC0yNDAsMzMgKzIyOSw0NyBAQCBm Yl9tcXR0X2Nsb3NlKEZiTXF0dCAqbXF0dCkKIAlnX3JldHVybl9pZl9mYWlsKEZCX0lTX01RVFQo bXF0dCkpOwogCXByaXYgPSBtcXR0LT5wcml2OwogCi0JaWYgKHByaXYtPndldiA+IDApIHsKLQkJ cHVycGxlX2lucHV0X3JlbW92ZShwcml2LT53ZXYpOwotCQlwcml2LT53ZXYgPSAwOwotCX0KLQot CWlmIChwcml2LT5yZXYgPiAwKSB7Ci0JCXB1cnBsZV9pbnB1dF9yZW1vdmUocHJpdi0+cmV2KTsK LQkJcHJpdi0+cmV2ID0gMDsKLQl9Ci0KIAlpZiAocHJpdi0+dGV2ID4gMCkgewogCQlwdXJwbGVf dGltZW91dF9yZW1vdmUocHJpdi0+dGV2KTsKIAkJcHJpdi0+dGV2ID0gMDsKIAl9CiAKLQlpZiAo cHJpdi0+Z3NjICE9IE5VTEwpIHsKLQkJcHVycGxlX3NzbF9jbG9zZShwcml2LT5nc2MpOwotCQlw cml2LT5nc2MgPSBOVUxMOworCWlmIChwcml2LT5jYW5jZWxsYWJsZSAhPSBOVUxMKSB7CisJCWdf Y2FuY2VsbGFibGVfY2FuY2VsKHByaXYtPmNhbmNlbGxhYmxlKTsKKwkJZ19jbGVhcl9vYmplY3Qo JnByaXYtPmNhbmNlbGxhYmxlKTsKIAl9CiAKLQlpZiAocHJpdi0+d2J1Zi0+bGVuID4gMCkgewot CQlmYl91dGlsX2RlYnVnX3dhcm5pbmcoIkNsb3Npbmcgd2l0aCB1bndyaXR0ZW4gZGF0YSIpOwor CWlmIChwcml2LT5jb25uICE9IE5VTEwpIHsKKwkJcHVycGxlX2dpb19ncmFjZWZ1bF9jbG9zZShw cml2LT5jb25uLAorCQkJCUdfSU5QVVRfU1RSRUFNKHByaXYtPmlucHV0KSwKKwkJCQlHX09VVFBV VF9TVFJFQU0ocHJpdi0+b3V0cHV0KSk7CisJCWdfY2xlYXJfb2JqZWN0KCZwcml2LT5pbnB1dCk7 CisJCWdfY2xlYXJfb2JqZWN0KCZwcml2LT5vdXRwdXQpOworCQlnX2NsZWFyX29iamVjdCgmcHJp di0+Y29ubik7CiAJfQogCiAJcHJpdi0+Y29ubmVjdGVkID0gRkFMU0U7CiAJZ19ieXRlX2FycmF5 X3NldF9zaXplKHByaXYtPnJidWYsIDApOwotCWdfYnl0ZV9hcnJheV9zZXRfc2l6ZShwcml2LT53 YnVmLCAwKTsKK30KKworc3RhdGljIHZvaWQKK2ZiX21xdHRfdGFrZV9lcnJvcihGYk1xdHQgKm1x dHQsIEdFcnJvciAqZXJyLCBjb25zdCBnY2hhciAqcHJlZml4KQoreworCWlmIChnX2Vycm9yX21h dGNoZXMoZXJyLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpIHsKKwkJLyogUmV0 dXJuIGFzIGNhbmNlbGxlZCBtZWFucyB0aGUgY29ubmVjdGlvbiBpcyBjbG9zaW5nICovCisJCWdf ZXJyb3JfZnJlZShlcnIpOworCQlyZXR1cm47CisJfQorCisJLyogTm93IHdlIGNhbiBjaGVjayBm b3IgcHJvZ3JhbW1pbmcgZXJyb3JzICovCisJZ19yZXR1cm5faWZfZmFpbChGQl9JU19NUVRUKG1x dHQpKTsKKworCWlmIChwcmVmaXggIT0gTlVMTCkgeworCQlnX3ByZWZpeF9lcnJvcigmZXJyLCAi JXM6ICIsIHByZWZpeCk7CisJfQorCisJZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1xdHQsICJlcnJv ciIsIGVycik7CisJZ19lcnJvcl9mcmVlKGVycik7CiB9CiAKIHZvaWQKQEAgLTM0NCw3NCArMzQ3 LDEzMCBAQCBmYl9tcXR0X3BpbmcoRmJNcXR0ICptcXR0KQogfQogCiBzdGF0aWMgdm9pZAotZmJf bXF0dF9jYl9yZWFkKGdwb2ludGVyIGRhdGEsIGdpbnQgZmQsIFB1cnBsZUlucHV0Q29uZGl0aW9u IGNvbmQpCitmYl9tcXR0X2NiX2ZpbGwoR09iamVjdCAqc291cmNlLCBHQXN5bmNSZXN1bHQgKnJl cywgZ3BvaW50ZXIgZGF0YSkKK3sKKwlHQnVmZmVyZWRJbnB1dFN0cmVhbSAqaW5wdXQgPSBHX0JV RkZFUkVEX0lOUFVUX1NUUkVBTShzb3VyY2UpOworCUZiTXF0dCAqbXF0dCA9IGRhdGE7CisJZ3Nz aXplIHJldDsKKwlHRXJyb3IgKmVyciA9IE5VTEw7CisKKwlyZXQgPSBnX2J1ZmZlcmVkX2lucHV0 X3N0cmVhbV9maWxsX2ZpbmlzaChpbnB1dCwgcmVzLCAmZXJyKTsKKworCWlmIChyZXQgPCAxKSB7 CisJCWlmIChyZXQgPT0gMCkgeworCQkJZXJyID0gZ19lcnJvcl9uZXdfbGl0ZXJhbChHX0lPX0VS Uk9SLAorCQkJCQlHX0lPX0VSUk9SX0NPTk5FQ1RJT05fQ0xPU0VELAorCQkJCQlfKCJDb25uZWN0 aW9uIGNsb3NlZCIpKTsKKwkJfQorCisJCWZiX21xdHRfdGFrZV9lcnJvcihtcXR0LCBlcnIsIF8o IkZhaWxlZCB0byByZWFkIGZpeGVkIGhlYWRlciIpKTsKKwkJcmV0dXJuOworCX0KKworCWZiX21x dHRfcmVhZF9wYWNrZXQobXF0dCk7Cit9CisKK3N0YXRpYyB2b2lkCitmYl9tcXR0X2NiX3JlYWRf cGFja2V0KEdPYmplY3QgKnNvdXJjZSwgR0FzeW5jUmVzdWx0ICpyZXMsIGdwb2ludGVyIGRhdGEp CiB7CiAJRmJNcXR0ICptcXR0ID0gZGF0YTsKKwlGYk1xdHRQcml2YXRlICpwcml2OworCWdzc2l6 ZSByZXQ7CiAJRmJNcXR0TWVzc2FnZSAqbXNnOwotCUZiTXF0dFByaXZhdGUgKnByaXYgPSBtcXR0 LT5wcml2OwotCWdpbnQgcmVzOwotCWd1aW50IG11bHQ7Ci0JZ3VpbnQ4IGJ1ZlsxMDI0XTsKLQln dWludDggYnl0ZTsKLQlnc2l6ZSBzaXplOwotCWdzc2l6ZSByaXplOworCUdFcnJvciAqZXJyID0g TlVMTDsKIAotCWlmIChwcml2LT5yZW16IDwgMSkgewotCQkvKiBSZXNldCB0aGUgcmVhZCBidWZm ZXIgKi8KLQkJZ19ieXRlX2FycmF5X3NldF9zaXplKHByaXYtPnJidWYsIDApOworCXJldCA9IGdf aW5wdXRfc3RyZWFtX3JlYWRfZmluaXNoKEdfSU5QVVRfU1RSRUFNKHNvdXJjZSksIHJlcywgJmVy cik7CiAKLQkJcmVzID0gcHVycGxlX3NzbF9yZWFkKHByaXYtPmdzYywgJmJ5dGUsIHNpemVvZiBi eXRlKTsKLQkJZ19ieXRlX2FycmF5X2FwcGVuZChwcml2LT5yYnVmLCAmYnl0ZSwgc2l6ZW9mIGJ5 dGUpOwotCi0JCWlmIChyZXMgIT0gc2l6ZW9mIGJ5dGUpIHsKLQkJCWZiX21xdHRfZXJyb3IobXF0 dCwgRkJfTVFUVF9FUlJPUl9HRU5FUkFMLAotCQkJICAgICAgICAgICAgICBfKCJGYWlsZWQgdG8g cmVhZCBmaXhlZCBoZWFkZXIiKSk7Ci0JCQlyZXR1cm47CisJaWYgKHJldCA8IDEpIHsKKwkJaWYg KHJldCA9PSAwKSB7CisJCQllcnIgPSBnX2Vycm9yX25ld19saXRlcmFsKEdfSU9fRVJST1IsCisJ CQkJCUdfSU9fRVJST1JfQ09OTkVDVElPTl9DTE9TRUQsCisJCQkJCV8oIkNvbm5lY3Rpb24gY2xv c2VkIikpOwogCQl9CiAKLQkJbXVsdCA9IDE7Ci0KLQkJZG8gewotCQkJcmVzID0gcHVycGxlX3Nz bF9yZWFkKHByaXYtPmdzYywgJmJ5dGUsIHNpemVvZiBieXRlKTsKLQkJCWdfYnl0ZV9hcnJheV9h cHBlbmQocHJpdi0+cmJ1ZiwgJmJ5dGUsIHNpemVvZiBieXRlKTsKLQotCQkJaWYgKHJlcyAhPSBz aXplb2YgYnl0ZSkgewotCQkJCWZiX21xdHRfZXJyb3IobXF0dCwgRkJfTVFUVF9FUlJPUl9HRU5F UkFMLAotCQkJCSAgICAgICAgICAgICAgXygiRmFpbGVkIHRvIHJlYWQgcGFja2V0IHNpemUiKSk7 Ci0JCQkJcmV0dXJuOwotCQkJfQotCi0JCQlwcml2LT5yZW16ICs9IChieXRlICYgMTI3KSAqIG11 bHQ7Ci0JCQltdWx0ICo9IDEyODsKLQkJfSB3aGlsZSAoKGJ5dGUgJiAxMjgpICE9IDApOworCQlm Yl9tcXR0X3Rha2VfZXJyb3IobXF0dCwgZXJyLCBfKCJGYWlsZWQgdG8gcmVhZCBwYWNrZXQgZGF0 YSIpKTsKKwkJcmV0dXJuOwogCX0KIAorCXByaXYgPSBtcXR0LT5wcml2OworCXByaXYtPnJlbXog LT0gcmV0OworCiAJaWYgKHByaXYtPnJlbXogPiAwKSB7Ci0JCXNpemUgPSBNSU4ocHJpdi0+cmVt eiwgc2l6ZW9mIGJ1Zik7Ci0JCXJpemUgPSBwdXJwbGVfc3NsX3JlYWQocHJpdi0+Z3NjLCBidWYs IHNpemUpOworCQlnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKEdfSU5QVVRfU1RSRUFNKHNvdXJj ZSksCisJCQkJcHJpdi0+cmJ1Zi0+ZGF0YSArCisJCQkJcHJpdi0+cmJ1Zi0+bGVuIC0gcHJpdi0+ cmVteiwgcHJpdi0+cmVteiwKKwkJCQlHX1BSSU9SSVRZX0RFRkFVTFQsIHByaXYtPmNhbmNlbGxh YmxlLAorCQkJCWZiX21xdHRfY2JfcmVhZF9wYWNrZXQsIG1xdHQpOworCQlyZXR1cm47CisJfQog Ci0JCWlmIChyaXplIDwgMSkgewotCQkJZmJfbXF0dF9lcnJvcihtcXR0LCBGQl9NUVRUX0VSUk9S X0dFTkVSQUwsCi0JCQkgICAgICAgICAgICAgIF8oIkZhaWxlZCB0byByZWFkIHBhY2tldCBkYXRh IikpOwotCQkJcmV0dXJuOworCW1zZyA9IGZiX21xdHRfbWVzc2FnZV9uZXdfYnl0ZXMocHJpdi0+ cmJ1Zik7CisKKwlpZiAoR19VTkxJS0VMWShtc2cgPT0gTlVMTCkpIHsKKwkJZmJfbXF0dF9lcnJv cihtcXR0LCBGQl9NUVRUX0VSUk9SX0dFTkVSQUwsCisJCSAgICAgICAgICAgICAgXygiRmFpbGVk IHRvIHBhcnNlIG1lc3NhZ2UiKSk7CisJCXJldHVybjsKKwl9CisKKwlmYl9tcXR0X3JlYWQobXF0 dCwgbXNnKTsKKwlnX29iamVjdF91bnJlZihtc2cpOworCisJLyogUmVhZCBhbm90aGVyIHBhY2tl dCBpZiBjb25uZWN0aW9uIHdhc24ndCByZXNldCBpbiBmYl9tcXR0X3JlYWQoKSAqLworCWlmIChm Yl9tcXR0X2Nvbm5lY3RlZChtcXR0LCBGQUxTRSkpIHsKKwkJZmJfbXF0dF9yZWFkX3BhY2tldCht cXR0KTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCitmYl9tcXR0X3JlYWRfcGFja2V0KEZiTXF0dCAq bXF0dCkKK3sKKwlGYk1xdHRQcml2YXRlICpwcml2ID0gbXF0dC0+cHJpdjsKKwljb25zdCBndWlu dDggY29uc3QgKmJ1ZjsKKwlnc2l6ZSBjb3VudCA9IDA7CisJZ3NpemUgcG9zOworCWd1aW50IG11 bHQgPSAxOworCWd1aW50OCBieXRlOworCWdzaXplIHNpemUgPSAwOworCisJYnVmID0gZ19idWZm ZXJlZF9pbnB1dF9zdHJlYW1fcGVla19idWZmZXIocHJpdi0+aW5wdXQsICZjb3VudCk7CisKKwkv KiBTdGFydCBhdCAxIHRvIHNraXAgdGhlIGZpcnN0IGJ5dGUgKi8KKwlwb3MgPSAxOworCisJZG8g eworCQlpZiAocG9zID49IGNvdW50KSB7CisJCQkvKiBOb3QgZW5vdWdoIGRhdGEgeWV0LCB0cnkg YWdhaW4gbGF0ZXIgKi8KKwkJCXNpemUgPSAwOworCQkJYnJlYWs7CiAJCX0KIAotCQlnX2J5dGVf YXJyYXlfYXBwZW5kKHByaXYtPnJidWYsIGJ1Ziwgcml6ZSk7Ci0JCXByaXYtPnJlbXogLT0gcml6 ZTsKLQl9CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpD b21taXRzIG1haWxpbmcgbGlzdApDb21taXRzQHBpZGdpbi5pbQpodHRwczovL3BpZGdpbi5pbS9j Z2ktYmluL21haWxtYW4vbGlzdGluZm8vY29tbWl0cw==