<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>51901</bug_id>
          
          <creation_ts>2011-01-04 15:00:40 -0800</creation_ts>
          <short_desc>Add back/forward encoding and decoding to WebKit2</short_desc>
          <delta_ts>2011-01-04 15:29:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>329245</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 15:00:40 -0800</bug_when>
    <thetext>Add back/forward encoding and decoding to WebKit2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329246</commentid>
    <comment_count>1</comment_count>
      <attachid>77936</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 15:03:49 -0800</bug_when>
    <thetext>Created attachment 77936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329251</commentid>
    <comment_count>2</comment_count>
      <attachid>77936</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-01-04 15:20:39 -0800</bug_when>
    <thetext>Comment on attachment 77936
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=77936&amp;action=review

&gt; WebKit2/WebProcess/WebPage/EncoderAdapter.cpp:41
&gt; +    return vector;

I like reserveCapacity before the append, if it makes it not allocate extra buffer space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329254</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-04 15:29:21 -0800</bug_when>
    <thetext>Committed r75020: &lt;http://trac.webkit.org/changeset/75020&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77936</attachid>
            <date>2011-01-04 15:03:49 -0800</date>
            <delta_ts>2011-01-04 15:20:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51901-20110104150348.patch</filename>
            <type>text/plain</type>
            <size>39122</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3NTAxNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTEtMDEtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBi
YWNrL2ZvcndhcmQgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIFdlYktpdDIKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxOTAxCisKKyAgICAgICAgKiBX
ZWJDb3JlLmV4cC5pbjogRXhwb3J0IGZ1bmN0aW9ucyB1c2VkIGluIFdlYktpdDIuCisKKyAgICAg
ICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJ
dGVtOjplbmNvZGVCYWNrRm9yd2FyZFRyZWUpOiBVc2UgcmVmZXJlbmNlcyBpbnN0ZWFkIG9mIHBv
aW50ZXJzLgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmVuY29kZUJhY2tGb3J3YXJk
VHJlZU5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpkZWNvZGVC
YWNrRm9yd2FyZFRyZWUpOiBEaXR0by4KKyAgICAgICAgKiBoaXN0b3J5L0hpc3RvcnlJdGVtLmg6
IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5jb2RlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpkZWNvZGUpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhOjplbmNvZGVGb3JCYWNrRm9yd2FyZCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6OmRlY29kZUZvckJhY2tGb3J3YXJk
KTogRGl0dG8uCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oOiBEaXR0by4K
KwogMjAxMS0wMS0wNCAgTWFydGluIFJvYmluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3NTAx
NCkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE5Myw2ICsx
OTMsNyBAQCBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVtMThyZWNvcmRJbml0aWFsCiBfX1pON1dl
YkNvcmUxMUhpc3RvcnlJdGVtMThzZXRMYXN0VmlzaXRlZFRpbWVFZAogX19aTjdXZWJDb3JlMTFI
aXN0b3J5SXRlbTIwc2V0T3JpZ2luYWxVUkxTdHJpbmdFUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUxMUhpc3RvcnlJdGVtMjBzZXRUcmFuc2llbnRQcm9wZXJ0eUVSS04zV1RGNlN0cmluZ0VQ
MTFvYmpjX29iamVjdAorX19aTjdXZWJDb3JlMTFIaXN0b3J5SXRlbTIxZGVjb2RlQmFja0Zvcndh
cmRUcmVlRVJLTjNXVEY2U3RyaW5nRVM0X1M0X1JOUzFfN0RlY29kZXJFCiBfX1pON1dlYkNvcmUx
MUhpc3RvcnlJdGVtMjJtZXJnZUF1dG9Db21wbGV0ZUhpbnRzRVBTMF8KIF9fWk43V2ViQ29yZTEx
SGlzdG9yeUl0ZW02c2V0VVJMRVJLTlNfNEtVUkxFCiBfX1pON1dlYkNvcmUxMUhpc3RvcnlJdGVt
N3Zpc2l0ZWRFUktOM1dURjZTdHJpbmdFZE5TXzE4VmlzaXRDb3VudEJlaGF2aW9yRQpAQCAtMzQw
LDggKzM0MSw4IEBAIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yOGNyZWF0ZUZyb20KIF9f
Wk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yOWFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
RVJLUzBfUktOM1dURjZTdHJpbmdFUzZfYgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjMy
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktTMF9SS04zV1RGNlN0cmluZ0VTNl9i
CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNDBzZXREb21haW5SZWxheGF0aW9uRm9yYmlk
ZGVuRm9yVVJMU2NoZW1lRWJSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlP
cmlnaW42Y3JlYXRlRVJLTlNfNEtVUkxFaQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZj
cmVhdGVFUktOM1dURjZTdHJpbmdFUzRfaQorX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZj
cmVhdGVFUktOU180S1VSTEVpCiBfX1pON1dlYkNvcmUxNUFyY2hpdmVSZXNvdXJjZTZjcmVhdGVF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVSS05TXzRLVVJMRVJLTlMxXzZT
dHJpbmdFU0FfU0FfUktOU18xNlJlc291cmNlUmVzcG9uc2VFCiBfX1pON1dlYkNvcmUxNURPTVdy
YXBwZXJXb3JsZDE1dW5yZWdpc3RlcldvcmxkRXYKIF9fWk43V2ViQ29yZTE1RE9NV3JhcHBlcldv
cmxkRDFFdgpAQCAtOTY2LDYgKzk2Nyw3IEBAIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtMTRh
bHRlcm5hdGVUaXQKIF9fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtMTVsYXN0VmlzaXRlZFRpbWVF
dgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xN29yaWdpbmFsVVJMU3RyaW5nRXYKIF9fWk5L
N1dlYkNvcmUxMUhpc3RvcnlJdGVtMjBnZXRUcmFuc2llbnRQcm9wZXJ0eUVSS04zV1RGNlN0cmlu
Z0UKK19fWk5LN1dlYkNvcmUxMUhpc3RvcnlJdGVtMjFlbmNvZGVCYWNrRm9yd2FyZFRyZWVFUk4z
V1RGN0VuY29kZXJFCiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTN1cmxFdgogX19aTks3V2Vi
Q29yZTExSGlzdG9yeUl0ZW00Y29weUV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTRpY29u
RXYKSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9oaXN0b3J5L0hpc3RvcnlJdGVtLmNwcAkocmV2aXNpb24gNzUwMTQpCisrKyBXZWJD
b3JlL2hpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjUsNTkgKzYy
NSw1OSBAQCB2b2lkIEhpc3RvcnlJdGVtOjpzZXRSZWRpcmVjdFVSTHMoUGFzc093CiAgICAgbV9y
ZWRpcmVjdFVSTHMgPSByZWRpcmVjdFVSTHM7CiB9CiAKLXZvaWQgSGlzdG9yeUl0ZW06OmVuY29k
ZUJhY2tGb3J3YXJkVHJlZShFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAordm9pZCBIaXN0b3J5SXRl
bTo6ZW5jb2RlQmFja0ZvcndhcmRUcmVlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAg
ZW5jb2Rlci0+ZW5jb2RlVUludDMyKGJhY2tGb3J3YXJkVHJlZUVuY29kaW5nVmVyc2lvbik7Cisg
ICAgZW5jb2Rlci5lbmNvZGVVSW50MzIoYmFja0ZvcndhcmRUcmVlRW5jb2RpbmdWZXJzaW9uKTsK
IAogICAgIGVuY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUoZW5jb2Rlcik7CiB9CiAKLXZvaWQgSGlz
dG9yeUl0ZW06OmVuY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUoRW5jb2RlciogZW5jb2RlcikgY29u
c3QKK3ZvaWQgSGlzdG9yeUl0ZW06OmVuY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1fY2hpbGRyZW4uc2l6ZSgpOwot
ICAgIGVuY29kZXItPmVuY29kZVVJbnQ2NChzaXplKTsKKyAgICBlbmNvZGVyLmVuY29kZVVJbnQ2
NChzaXplKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBjb25zdCBIaXN0b3J5SXRlbSYgY2hpbGQgPSAqbV9jaGlsZHJlbltpXTsKIAotICAgICAgICBl
bmNvZGVyLT5lbmNvZGVTdHJpbmcoY2hpbGQubV9vcmlnaW5hbFVSTFN0cmluZyk7CisgICAgICAg
IGVuY29kZXIuZW5jb2RlU3RyaW5nKGNoaWxkLm1fb3JpZ2luYWxVUkxTdHJpbmcpOwogCi0gICAg
ICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhjaGlsZC5tX3VybFN0cmluZyk7CisgICAgICAgIGVu
Y29kZXIuZW5jb2RlU3RyaW5nKGNoaWxkLm1fdXJsU3RyaW5nKTsKIAogICAgICAgICBjaGlsZC5l
bmNvZGVCYWNrRm9yd2FyZFRyZWVOb2RlKGVuY29kZXIpOwogICAgIH0KIAotICAgIGVuY29kZXIt
PmVuY29kZUludDY0KG1fZG9jdW1lbnRTZXF1ZW5jZU51bWJlcik7CisgICAgZW5jb2Rlci5lbmNv
ZGVJbnQ2NChtX2RvY3VtZW50U2VxdWVuY2VOdW1iZXIpOwogCiAgICAgc2l6ZSA9IG1fZG9jdW1l
bnRTdGF0ZS5zaXplKCk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDY0KHNpemUpOworICAgIGVu
Y29kZXIuZW5jb2RlVUludDY0KHNpemUpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcobV9kb2N1bWVudFN0YXRlW2ld
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVTdHJpbmcobV9kb2N1bWVudFN0YXRlW2ldKTsKIAot
ICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhtX2Zvcm1Db250ZW50VHlwZSk7CisgICAgZW5jb2Rl
ci5lbmNvZGVTdHJpbmcobV9mb3JtQ29udGVudFR5cGUpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2Rl
Qm9vbChtX2Zvcm1EYXRhKTsKKyAgICBlbmNvZGVyLmVuY29kZUJvb2wobV9mb3JtRGF0YSk7CiAg
ICAgaWYgKG1fZm9ybURhdGEpCiAgICAgICAgIG1fZm9ybURhdGEtPmVuY29kZUZvckJhY2tGb3J3
YXJkKGVuY29kZXIpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2RlSW50NjQobV9pdGVtU2VxdWVuY2VO
dW1iZXIpOworICAgIGVuY29kZXIuZW5jb2RlSW50NjQobV9pdGVtU2VxdWVuY2VOdW1iZXIpOwog
Ci0gICAgZW5jb2Rlci0+ZW5jb2RlU3RyaW5nKG1fb3JpZ2luYWxVUkxTdHJpbmcpOworICAgIGVu
Y29kZXIuZW5jb2RlU3RyaW5nKG1fb3JpZ2luYWxVUkxTdHJpbmcpOwogCi0gICAgZW5jb2Rlci0+
ZW5jb2RlU3RyaW5nKG1fcmVmZXJyZXIpOworICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKG1fcmVm
ZXJyZXIpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIobV9zY3JvbGxQb2ludC54KCkpOwot
ICAgIGVuY29kZXItPmVuY29kZUludDMyKG1fc2Nyb2xsUG9pbnQueSgpKTsKKyAgICBlbmNvZGVy
LmVuY29kZUludDMyKG1fc2Nyb2xsUG9pbnQueCgpKTsKKyAgICBlbmNvZGVyLmVuY29kZUludDMy
KG1fc2Nyb2xsUG9pbnQueSgpKTsKIAotICAgIGVuY29kZXItPmVuY29kZUJvb2wobV9zdGF0ZU9i
amVjdCk7CisgICAgZW5jb2Rlci5lbmNvZGVCb29sKG1fc3RhdGVPYmplY3QpOwogICAgIGlmICht
X3N0YXRlT2JqZWN0KSB7CiAjaWYgIVVTRShWOCkKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlQnl0
ZXMobV9zdGF0ZU9iamVjdC0+ZGF0YSgpLmRhdGEoKSwgbV9zdGF0ZU9iamVjdC0+ZGF0YSgpLnNp
emUoKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlQnl0ZXMobV9zdGF0ZU9iamVjdC0+ZGF0YSgp
LmRhdGEoKSwgbV9zdGF0ZU9iamVjdC0+ZGF0YSgpLnNpemUoKSk7CiAjZWxzZQotICAgICAgICBl
bmNvZGVyLT5lbmNvZGVTdHJpbmcobV9zdGF0ZU9iamVjdC0+dG9XaXJlU3RyaW5nKCkpOworICAg
ICAgICBlbmNvZGVyLmVuY29kZVN0cmluZyhtX3N0YXRlT2JqZWN0LT50b1dpcmVTdHJpbmcoKSk7
CiAjZW5kaWYKICAgICB9CiAKLSAgICBlbmNvZGVyLT5lbmNvZGVTdHJpbmcobV90YXJnZXQpOwor
ICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKG1fdGFyZ2V0KTsKIH0KIAogc3RydWN0IERlY29kZVJl
Y3Vyc2lvblN0YWNrRWxlbWVudCB7CkBAIC02OTMsMTMgKzY5MywxMyBAQCBzdHJ1Y3QgRGVjb2Rl
UmVjdXJzaW9uU3RhY2tFbGVtZW50IHsKICAgICB9CiB9OwogCi1QYXNzUmVmUHRyPEhpc3RvcnlJ
dGVtPiBIaXN0b3J5SXRlbTo6ZGVjb2RlQmFja0ZvcndhcmRUcmVlKGNvbnN0IFN0cmluZyYgdG9w
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvcFRpdGxlLCBjb25zdCBTdHJpbmcmIHRvcE9yaWdp
bmFsVVJMU3RyaW5nLCBEZWNvZGVyKiBkZWNvZGVyKQorUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4g
SGlzdG9yeUl0ZW06OmRlY29kZUJhY2tGb3J3YXJkVHJlZShjb25zdCBTdHJpbmcmIHRvcFVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiB0b3BUaXRsZSwgY29uc3QgU3RyaW5nJiB0b3BPcmlnaW5hbFVS
TFN0cmluZywgRGVjb2RlciYgZGVjb2RlcikKIHsKICAgICAvLyBTaW5jZSB0aGUgZGF0YSBzdHJl
YW0gaXMgbm90IHRydXN0ZWQsIHRoZSBkZWNvZGUgaGFzIHRvIGJlIG5vbi1yZWN1cnNpdmUuCiAg
ICAgLy8gV2UgZG9uJ3Qgd2FudCBiYWQgZGF0YSB0byBjYXVzZSBhIHN0YWNrIG92ZXJmbG93Lgog
CiAgICAgdWludDMyX3QgdmVyc2lvbjsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih2
ZXJzaW9uKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDMyKHZlcnNpb24pKQogICAgICAg
ICByZXR1cm4gMDsKICAgICBpZiAodmVyc2lvbiAhPSBiYWNrRm9yd2FyZFRyZWVFbmNvZGluZ1Zl
cnNpb24pCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzE4LDE1ICs3MTgsMTUgQEAgcmVjdXJzZToK
ICAgICB0aXRsZSA9IFN0cmluZygpOwogCiAgICAgdWludDY0X3Qgc2l6ZTsKLSAgICBpZiAoIWRl
Y29kZXItPmRlY29kZVVJbnQ2NChzaXplKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlVUludDY0
KHNpemUpKQogICAgICAgICByZXR1cm4gMDsKICAgICBzaXplX3QgaTsKICAgICBSZWZQdHI8SGlz
dG9yeUl0ZW0+IGNoaWxkOwogICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcob3JpZ2luYWxVUkxTdHJpbmcpKQorICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlU3RyaW5nKG9yaWdpbmFsVVJMU3RyaW5nKSkKICAgICAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKHVybFN0
cmluZykpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcodXJsU3RyaW5nKSkKICAg
ICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIHJlY3Vyc2lvblN0YWNrLmFwcGVuZChEZWNv
ZGVSZWN1cnNpb25TdGFja0VsZW1lbnQobm9kZS5yZWxlYXNlKCksIGksIHNpemUpKTsKQEAgLTcz
NiwyMyArNzM2LDIzIEBAIHJlc3VtZToKICAgICAgICAgbm9kZS0+bV9jaGlsZHJlbi5hcHBlbmQo
Y2hpbGQucmVsZWFzZSgpKTsKICAgICB9CiAKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDY0
KG5vZGUtPm1fZG9jdW1lbnRTZXF1ZW5jZU51bWJlcikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUludDY0KG5vZGUtPm1fZG9jdW1lbnRTZXF1ZW5jZU51bWJlcikpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoc2l6ZSkpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZVVJbnQ2NChzaXplKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZm9yIChpID0g
MDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBTdHJpbmcgc3RhdGU7Ci0gICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKHN0YXRlKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZVN0cmluZyhzdGF0ZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgbm9kZS0+bV9k
b2N1bWVudFN0YXRlLmFwcGVuZChzdGF0ZSk7CiAgICAgfQogCi0gICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVTdHJpbmcobm9kZS0+bV9mb3JtQ29udGVudFR5cGUpKQorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGVTdHJpbmcobm9kZS0+bV9mb3JtQ29udGVudFR5cGUpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIGJvb2wgaGFzRm9ybURhdGE7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVCb29sKGhh
c0Zvcm1EYXRhKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbChoYXNGb3JtRGF0YSkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIGlmIChoYXNGb3JtRGF0YSkgewogICAgICAgICBub2RlLT5t
X2Zvcm1EYXRhID0gRm9ybURhdGE6OmRlY29kZUZvckJhY2tGb3J3YXJkKGRlY29kZXIpOwpAQCAt
NzYwLDQxICs3NjAsNDEgQEAgcmVzdW1lOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJbnQ2NChub2RlLT5tX2l0ZW1TZXF1ZW5jZU51bWJl
cikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUludDY0KG5vZGUtPm1faXRlbVNlcXVlbmNlTnVt
YmVyKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0cmlu
Zyhub2RlLT5tX29yaWdpbmFsVVJMU3RyaW5nKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlU3Ry
aW5nKG5vZGUtPm1fb3JpZ2luYWxVUkxTdHJpbmcpKQogICAgICAgICByZXR1cm4gMDsKIAotICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlU3RyaW5nKG5vZGUtPm1fcmVmZXJyZXIpKQorICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGVTdHJpbmcobm9kZS0+bV9yZWZlcnJlcikpCiAgICAgICAgIHJldHVybiAw
OwogCiAgICAgaW50MzJfdCB4OwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoeCkpCisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUludDMyKHgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBp
bnQzMl90IHk7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJbnQzMih5KSkKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlSW50MzIoeSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIG5vZGUtPm1fc2Ny
b2xsUG9pbnQgPSBJbnRQb2ludCh4LCB5KTsKIAogICAgIGJvb2wgaGFzU3RhdGVPYmplY3Q7Ci0g
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVCb29sKGhhc1N0YXRlT2JqZWN0KSkKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlQm9vbChoYXNTdGF0ZU9iamVjdCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmIChoYXNTdGF0ZU9iamVjdCkgewogI2lmICFVU0UoVjgpCiAgICAgICAgIFZlY3Rvcjx1aW50
OF90PiBieXRlczsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVCeXRlcyhieXRlcykpCisg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVCeXRlcyhieXRlcykpCiAgICAgICAgICAgICByZXR1
cm4gMDsKICAgICAgICAgbm9kZS0+bV9zdGF0ZU9iamVjdCA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6YWRvcHQoYnl0ZXMpOwogI2Vsc2UKICAgICAgICAgU3RyaW5nIHN0cmluZzsKLSAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcoc3RyaW5nKSkKKyAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZVN0cmluZyhzdHJpbmcpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIG5v
ZGUtPm1fc3RhdGVPYmplY3QgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZUZyb21XaXJl
KHN0cmluZyk7CiAjZW5kaWYKICAgICB9CiAKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVN0cmlu
Zyhub2RlLT5tX3RhcmdldCkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVN0cmluZyhub2RlLT5t
X3RhcmdldCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gU2ltdWxhdGUgcmVjdXJzaW9u
IHdpdGggb3VyIG93biBzdGFjay4KSW5kZXg6IFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCShyZXZpc2lvbiA3
NTAxNCkKKysrIFdlYkNvcmUvaGlzdG9yeS9IaXN0b3J5SXRlbS5oCSh3b3JraW5nIGNvcHkpCkBA
IC04OCw4ICs4OCw4IEBAIHB1YmxpYzogCiAKICAgICBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBj
b3B5KCkgY29uc3Q7CiAKLSAgICB2b2lkIGVuY29kZUJhY2tGb3J3YXJkVHJlZShFbmNvZGVyKikg
Y29uc3Q7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SGlzdG9yeUl0ZW0+IGRlY29kZUJhY2tGb3J3
YXJkVHJlZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiBvcmlnaW5hbFVSTFN0cmluZywgRGVjb2RlciopOworICAgIHZvaWQgZW5jb2Rl
QmFja0ZvcndhcmRUcmVlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
aXN0b3J5SXRlbT4gZGVjb2RlQmFja0ZvcndhcmRUcmVlKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMU3RyaW5nLCBE
ZWNvZGVyJik7CiAKICAgICBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVVJMU3RyaW5nKCkgY29uc3Q7
CiAgICAgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcoKSBjb25zdDsKQEAgLTIyNiw4ICsyMjYsOCBA
QCBwcml2YXRlOgogCiAgICAgSGlzdG9yeUl0ZW0qIGZpbmRUYXJnZXRJdGVtKCk7CiAKLSAgICB2
b2lkIGVuY29kZUJhY2tGb3J3YXJkVHJlZU5vZGUoRW5jb2RlciopIGNvbnN0OwotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEhpc3RvcnlJdGVtPiBkZWNvZGVCYWNrRm9yd2FyZFRyZWVOb2RlKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVVJMU3RyaW5nLCBEZWNvZGVyKik7CisgICAgdm9pZCBlbmNvZGVCYWNrRm9yd2FyZFRy
ZWVOb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxIaXN0b3J5SXRl
bT4gZGVjb2RlQmFja0ZvcndhcmRUcmVlTm9kZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFVSTFN0cmluZywgRGVjb2Rl
ciYpOwogCiAgICAgLyogV2hlbiBhZGRpbmcgbmV3IG1lbWJlciB2YXJpYWJsZXMgdG8gdGhpcyBj
bGFzcywgcGxlYXNlIG5vdGlmeSB0aGUgUXQgdGVhbS4KICAgICAgKiBxdC9IaXN0b3J5SXRlbVF0
LmNwcCBjb250YWlucyBjb2RlIHRvIHNlcmlhbGl6ZSBoaXN0b3J5IGl0ZW1zLgpJbmRleDogV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCShyZXZpc2lvbiA3NTAxNCkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOSwz
MiArMzI5LDMyIEBAIHZvaWQgRm9ybURhdGE6OnJlbW92ZUdlbmVyYXRlZEZpbGVzSWZOZWUKICAg
ICBtX2hhc0dlbmVyYXRlZEZpbGVzID0gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGVuY29kZShF
bmNvZGVyKiBlbmNvZGVyLCBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCitzdGF0aWMg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihlbGVtZW50Lm1fdHlwZSk7CisgICAg
ZW5jb2Rlci5lbmNvZGVVSW50MzIoZWxlbWVudC5tX3R5cGUpOwogCiAgICAgc3dpdGNoIChlbGVt
ZW50Lm1fdHlwZSkgewogICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjpkYXRhOgotICAgICAgICBl
bmNvZGVyLT5lbmNvZGVCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihlbGVt
ZW50Lm1fZGF0YS5kYXRhKCkpLCBlbGVtZW50Lm1fZGF0YS5zaXplKCkpOworICAgICAgICBlbmNv
ZGVyLmVuY29kZUJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGVsZW1lbnQu
bV9kYXRhLmRhdGEoKSksIGVsZW1lbnQubV9kYXRhLnNpemUoKSk7CiAgICAgICAgIHJldHVybjsK
IAogICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkRmlsZToKLSAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlU3RyaW5nKGVsZW1lbnQubV9maWxlbmFtZSk7Ci0gICAgICAgIGVuY29kZXItPmVu
Y29kZUJvb2woZWxlbWVudC5tX3Nob3VsZEdlbmVyYXRlRmlsZSk7CisgICAgICAgIGVuY29kZXIu
ZW5jb2RlU3RyaW5nKGVsZW1lbnQubV9maWxlbmFtZSk7CisgICAgICAgIGVuY29kZXIuZW5jb2Rl
Qm9vbChlbGVtZW50Lm1fc2hvdWxkR2VuZXJhdGVGaWxlKTsKICNpZiBFTkFCTEUoQkxPQikKLSAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50NjQoZWxlbWVudC5tX2ZpbGVTdGFydCk7Ci0gICAgICAg
IGVuY29kZXItPmVuY29kZUludDY0KGVsZW1lbnQubV9maWxlTGVuZ3RoKTsKLSAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRG91YmxlKGVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1l
KTsKKyAgICAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChlbGVtZW50Lm1fZmlsZVN0YXJ0KTsKKyAg
ICAgICAgZW5jb2Rlci5lbmNvZGVJbnQ2NChlbGVtZW50Lm1fZmlsZUxlbmd0aCk7CisgICAgICAg
IGVuY29kZXIuZW5jb2RlRG91YmxlKGVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25U
aW1lKTsKICNlbHNlCi0gICAgICAgIGVuY29kZXItPmVuY29kZUludDY0KDApOwotICAgICAgICBl
bmNvZGVyLT5lbmNvZGVJbnQ2NCgwKTsKLSAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKDAp
OworICAgICAgICBlbmNvZGVyLmVuY29kZUludDY0KDApOworICAgICAgICBlbmNvZGVyLmVuY29k
ZUludDY0KDApOworICAgICAgICBlbmNvZGVyLmVuY29kZURvdWJsZSgwKTsKICNlbmRpZgogICAg
ICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoQkxPQikKICAgICBjYXNlIEZvcm1EYXRhRWxlbWVu
dDo6ZW5jb2RlZEJsb2I6Ci0gICAgICAgIGVuY29kZXItPmVuY29kZVN0cmluZyhlbGVtZW50Lm1f
YmxvYlVSTC5zdHJpbmcoKSk7CisgICAgICAgIGVuY29kZXIuZW5jb2RlU3RyaW5nKGVsZW1lbnQu
bV9ibG9iVVJMLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAgICAgfQpAQCAt
MzYyLDcgKzM2Miw3IEBAIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyKiBlbmNvZGVyLCBjb24K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotc3RhdGljIGJvb2wgZGVjb2RlKERlY29k
ZXIqIGRlY29kZXIsIEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCkKK3N0YXRpYyBib29sIGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyLCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgdWlu
dDMyX3QgdHlwZSA9IGVsZW1lbnQubV90eXBlOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXIqIGRlY29kZXIsIEZvcgogICAgIGNhc2UgRm9ybURhdGFFbGVt
ZW50OjpkYXRhOiB7CiAgICAgICAgIGVsZW1lbnQubV90eXBlID0gRm9ybURhdGFFbGVtZW50Ojpk
YXRhOwogICAgICAgICBWZWN0b3I8dWludDhfdD4gZGF0YTsKLSAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGVCeXRlcyhkYXRhKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJ5dGVzKGRh
dGEpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBzaXplX3Qgc2l6ZSA9IGRh
dGEuc2l6ZSgpOwogICAgICAgICBlbGVtZW50Lm1fZGF0YS5yZXNpemUoc2l6ZSk7CkBAIC0zODAs
MjIgKzM4MCwyMiBAQCBzdGF0aWMgYm9vbCBkZWNvZGUoRGVjb2RlciogZGVjb2RlciwgRm9yCiAK
ICAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6ZW5jb2RlZEZpbGU6IHsKICAgICAgICAgZWxlbWVu
dC5tX3R5cGUgPSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRGaWxlOwotICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZVN0cmluZyhlbGVtZW50Lm1fZmlsZW5hbWUpKQorICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlU3RyaW5nKGVsZW1lbnQubV9maWxlbmFtZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlQm9vbChlbGVtZW50Lm1fc2hv
dWxkR2VuZXJhdGVGaWxlKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woZWxlbWVu
dC5tX3Nob3VsZEdlbmVyYXRlRmlsZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGludDY0X3QgZmlsZVN0YXJ0OwotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDY0
KGZpbGVTdGFydCkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVJbnQ2NChmaWxlU3RhcnQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoZmlsZVN0YXJ0IDwgMCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaW50NjRfdCBmaWxlTGVuZ3RoOwot
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDY0KGZpbGVMZW5ndGgpKQorICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlSW50NjQoZmlsZUxlbmd0aCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIGlmIChmaWxlTGVuZ3RoIDwgZmlsZVN0YXJ0KQogICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICBkb3VibGUgZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGlt
ZTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUoZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSkpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVEb3VibGUoZXhwZWN0ZWRG
aWxlTW9kaWZpY2F0aW9uVGltZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAjaWYgRU5B
QkxFKEJMT0IpCiAgICAgICAgIGVsZW1lbnQubV9maWxlU3RhcnQgPSBmaWxlU3RhcnQ7CkBAIC00
MDksNyArNDA5LDcgQEAgc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIqIGRlY29kZXIsIEZvcgog
ICAgIGNhc2UgRm9ybURhdGFFbGVtZW50OjplbmNvZGVkQmxvYjoKICAgICAgICAgZWxlbWVudC5t
X3R5cGUgPSBGb3JtRGF0YUVsZW1lbnQ6OmVuY29kZWRCbG9iOwogICAgICAgICBTdHJpbmcgYmxv
YlVSTFN0cmluZzsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVTdHJpbmcoYmxvYlVSTFN0
cmluZykpCisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVTdHJpbmcoYmxvYlVSTFN0cmluZykp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGVsZW1lbnQubV9ibG9iVVJMID0g
S1VSTChLVVJMKCksIGJsb2JVUkxTdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQx
OSwzOCArNDE5LDM4IEBAIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyKiBkZWNvZGVyLCBGb3IK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgRm9ybURhdGE6OmVuY29kZUZvckJhY2tGb3J3
YXJkKEVuY29kZXIqIGVuY29kZXIpIGNvbnN0Cit2b2lkIEZvcm1EYXRhOjplbmNvZGVGb3JCYWNr
Rm9yd2FyZChFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXItPmVuY29kZUJv
b2wobV9hbHdheXNTdHJlYW0pOworICAgIGVuY29kZXIuZW5jb2RlQm9vbChtX2Fsd2F5c1N0cmVh
bSk7CiAKLSAgICBlbmNvZGVyLT5lbmNvZGVCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVp
bnQ4X3QqPihtX2JvdW5kYXJ5LmRhdGEoKSksIG1fYm91bmRhcnkuc2l6ZSgpKTsKKyAgICBlbmNv
ZGVyLmVuY29kZUJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fYm91bmRh
cnkuZGF0YSgpKSwgbV9ib3VuZGFyeS5zaXplKCkpOwogCiAgICAgc2l6ZV90IHNpemUgPSBtX2Vs
ZW1lbnRzLnNpemUoKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50NjQoc2l6ZSk7CisgICAgZW5j
b2Rlci5lbmNvZGVVSW50NjQoc2l6ZSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCiAgICAgICAgIGVuY29kZShlbmNvZGVyLCBtX2VsZW1lbnRzW2ldKTsKIAotICAgIGVu
Y29kZXItPmVuY29kZUJvb2wobV9oYXNHZW5lcmF0ZWRGaWxlcyk7CisgICAgZW5jb2Rlci5lbmNv
ZGVCb29sKG1faGFzR2VuZXJhdGVkRmlsZXMpOwogCi0gICAgZW5jb2Rlci0+ZW5jb2RlQm9vbCht
X2lkZW50aWZpZXIpOworICAgIGVuY29kZXIuZW5jb2RlQm9vbChtX2lkZW50aWZpZXIpOwogfQog
Ci1QYXNzUmVmUHRyPEZvcm1EYXRhPiBGb3JtRGF0YTo6ZGVjb2RlRm9yQmFja0ZvcndhcmQoRGVj
b2RlciogZGVjb2RlcikKK1Bhc3NSZWZQdHI8Rm9ybURhdGE+IEZvcm1EYXRhOjpkZWNvZGVGb3JC
YWNrRm9yd2FyZChEZWNvZGVyJiBkZWNvZGVyKQogewogICAgIFJlZlB0cjxGb3JtRGF0YT4gZGF0
YSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKIAotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlQm9vbChk
YXRhLT5tX2Fsd2F5c1N0cmVhbSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUJvb2woZGF0YS0+
bV9hbHdheXNTdHJlYW0pKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFZlY3Rvcjx1aW50OF90
PiBib3VuZGFyeTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZUJ5dGVzKGJvdW5kYXJ5KSkKKyAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlQnl0ZXMoYm91bmRhcnkpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICBzaXplX3Qgc2l6ZSA9IGJvdW5kYXJ5LnNpemUoKTsKICAgICBkYXRhLT5tX2JvdW5kYXJ5
LnJlc2l6ZShzaXplKTsKICAgICBtZW1jcHkoZGF0YS0+bV9ib3VuZGFyeS5kYXRhKCksIGJvdW5k
YXJ5LmRhdGEoKSwgc2l6ZSk7CiAKICAgICB1aW50NjRfdCBlbGVtZW50c1NpemU7Ci0gICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVVSW50NjQoZWxlbWVudHNTaXplKSkKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlVUludDY0KGVsZW1lbnRzU2l6ZSkpCiAgICAgICAgIHJldHVybiAwOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudHNTaXplOyArK2kpIHsKICAgICAgICAgRm9ybURhdGFF
bGVtZW50IGVsZW1lbnQ7CkBAIC00NTksMTAgKzQ1OSwxMCBAQCBQYXNzUmVmUHRyPEZvcm1EYXRh
PiBGb3JtRGF0YTo6ZGVjb2RlRm9yCiAgICAgICAgIGRhdGEtPm1fZWxlbWVudHMuYXBwZW5kKGVs
ZW1lbnQpOwogICAgIH0KIAotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlQm9vbChkYXRhLT5tX2hh
c0dlbmVyYXRlZEZpbGVzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlQm9vbChkYXRhLT5tX2hh
c0dlbmVyYXRlZEZpbGVzKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZUludDY0KGRhdGEtPm1faWRlbnRpZmllcikpCisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUludDY0KGRhdGEtPm1faWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0
dXJuIGRhdGEucmVsZWFzZSgpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1E
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJ
KHJldmlzaW9uIDc1MDE0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMSw4ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxGb3JtRGF0YT4gZGVlcENvcHkoKSBjb25zdDsKICAgICB+Rm9ybURhdGEoKTsKIAotICAgIHZv
aWQgZW5jb2RlRm9yQmFja0ZvcndhcmQoRW5jb2RlciopIGNvbnN0OwotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZvcm1EYXRhPiBkZWNvZGVGb3JCYWNrRm9yd2FyZChEZWNvZGVyKik7CisgICAgdm9p
ZCBlbmNvZGVGb3JCYWNrRm9yd2FyZChFbmNvZGVyJikgY29uc3Q7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8Rm9ybURhdGE+IGRlY29kZUZvckJhY2tGb3J3YXJkKERlY29kZXImKTsKIAogICAgIHZv
aWQgYXBwZW5kRGF0YShjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QpOwogICAgIHZvaWQgYXBwZW5k
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoLCBib29sIHNob3VsZEdlbmVyYXRlRmlsZSA9IGZh
bHNlKTsKSW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hh
bmdlTG9nCShyZXZpc2lvbiA3NTAxNikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTEtMDEtMDQgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZCBiYWNrL2ZvcndhcmQgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHRvIFdlYktpdDIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxOTAxCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IHNvdXJjZSBmaWxlcy4KKyAgICAgICAgKiBX
ZWJLaXQyLnBybzogRGl0dG8uCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOiBEaXR0by4KKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6IERpdHRvLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcDogQWRkZWQuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmg6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5oOiBBZGRlZC4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OnVwZGF0ZUJhY2tGb3J3YXJkSXRlbSk6IEFkZGVkIGNvZGUgdG8gZW5j
b2RlIHRoZSBiYWNrL2ZvcndhcmQKKyAgICAgICAgdHJlZSBhbmQgc2VuZCBpdCBhbG9uZy4gVGhl
IGNvZGUgdG8gZGVjb2RlIG5lZWRzIHRvIHdhaXQgb24gQnJhZHkncworICAgICAgICBjdXJyZW50
IHByb2plY3QuCisKIDIwMTEtMDEtMDQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0Mi9H
TlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiA3NTAxNCkKKysrIFdlYktpdDIvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTQwMCw4ICs0MDAsMTIgQEAgbGliV2ViS2l0Ml9sYV9TT1VSQ0VTID0gXAogCVdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJLaXRNYWluLmNwcCBcCiAJV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1
bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCBcCiAJV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Q2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmggXAorCVdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L0RlY29kZXJBZGFwdGVyLmNwcCBcCisJV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2Rl
ckFkYXB0ZXIuaCBcCiAJV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3Bw
IFwKIAlXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIFwKKwlXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5jcHAgXAorCVdlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmggXAogCVdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcCBcCiAJV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuaCBcCiAJV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZFBhZ2VPdmVy
bGF5LmNwcCBcCkluZGV4OiBXZWJLaXQyL1dlYktpdDIucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dDIvV2ViS2l0Mi5wcm8JKHJldmlzaW9uIDc1MDE0KQorKysgV2ViS2l0Mi9XZWJLaXQyLnBybwko
d29ya2luZyBjb3B5KQpAQCAtNjMyLDcgKzYzMiw5IEBAIFNPVVJDRVMgKz0gXAogICAgIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgXAog
ICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwIFwKICAg
ICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ2h1bmtlZFVwZGF0ZURyYXdpbmdBcmVhLmNwcCBcCisgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0RlY29kZXJBZGFwdGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBcCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJB
ZGFwdGVyLmNwcCBcCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBc
CiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL1BhZ2VPdmVybGF5LmNwcCBcCiAgICAgV2ViUHJvY2Vz
cy9XZWJQYWdlL1RpbGVkRHJhd2luZ0FyZWEuY3BwIFwKSW5kZXg6IFdlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA3NTAxNCkKKysrIFdlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiAr
MjcyLDEwIEBACiAJCTkzNUVFQkE0MTI3NzYxRDYwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzNUVFQjkyMTI3NzYxNUQwMDMzMjJCOCAvKiBJbmplY3RlZEJ1bmRsZUJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCAqLzsgfTsKIAkJOTM5MUYyQ0ExMjFCNjc5QTAwRUJGN0U4IC8qIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzkxRjI4NDEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbSAqLzsgfTsKIAkJOTM5MUYyQ0IxMjFCNjdBRDAwRUJGN0U4IC8qIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzOTFGMjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmggKi87IH07CisJCTkzRkM2N0JEMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNv
ZGVyQWRhcHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0ZDNjc5RDEyRDNDQzc0MDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuY3BwICovOyB9
OworCQk5M0ZDNjdCRTEyRDNDQ0YyMDBBNjA2MTAgLyogRGVjb2RlckFkYXB0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkM2NzlFMTJEM0NDNzQw
MEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5oICovOyB9OworCQk5M0ZDNjdCRjEyRDNDQ0YyMDBB
NjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNGQzY3OUYxMkQzQ0M3NDAwQTYwNjEwIC8qIEVuY29kZXJBZGFw
dGVyLmNwcCAqLzsgfTsKKwkJOTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEwIC8qIEVuY29kZXJBZGFw
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0ZD
NjdBMDEyRDNDQzc0MDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuaCAqLzsgfTsKIAkJQkMwMDky
RjcxMTU4MzdBMzAwRTBBRTJBIC8qIFJ1bkxvb3BNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzAwOTJGNTExNTgzN0EzMDBFMEFFMkEgLyogUnVu
TG9vcE1hYy5tbSAqLzsgfTsKIAkJQkMwMDkyRjgxMTU4MzdBMzAwRTBBRTJBIC8qIFdvcmtRdWV1
ZU1hYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzAwOTJGNjExNTgzN0EzMDBFMEFFMkEgLyogV29ya1F1ZXVlTWFjLmNwcCAqLzsgfTsKIAkJQkMw
MzJENzUxMEY0Mzc4RDAwNThDMTVBIC8qIFdlYkNocm9tZUNsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMwMzJENjAxMEY0Mzc4RDAwNThDMTVB
IC8qIFdlYkNocm9tZUNsaWVudC5oICovOyB9OwpAQCAtOTQ5LDYgKzk1MywxMCBAQAogCQk5MzVF
RUI5ODEyNzc2MTZEMDAzMzIyQjggLyogV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRl
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxRjI4MzEyMUIzOEY1MDBFQkY3
RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
OTNGQzY3OUQxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlY29kZXJBZGFwdGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGQzY3OUUxMkQzQ0M3NDAwQTYwNjEwIC8qIERlY29kZXJB
ZGFwdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZXJBZGFwdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRkM2NzlGMTJEM0NDNzQwMEE2MDYx
MCAvKiBFbmNvZGVyQWRhcHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFbmNvZGVyQWRhcHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
RkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBFbmNvZGVyQWRhcHRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFbmNvZGVyQWRhcHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzJENUQ3RjEyMzZDQkE4MDBBODhCMTUgLyogV2ViU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzAwOTJGNTExNTgz
N0EzMDBFMEFFMkEgLyogUnVuTG9vcE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFJ1bkxvb3BNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDMDA5MkY2MTE1ODM3QTMwMEUwQUUyQSAvKiBXb3JrUXVldWVNYWMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya1F1ZXVlTWFjLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODUsOCArMTg5MywxMiBAQAogCQkJCUJDOTYzRDZDMTEzREQx
OTUwMDU3NEJFMiAvKiBtYWMgKi8sCiAJCQkJQkM1RjdCQjIxMTgyMzc2QzAwNTJDMDJDIC8qIENo
dW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5jcHAgKi8sCiAJCQkJQkM1RjdCQjMxMTgyMzc2QzAwNTJD
MDJDIC8qIENodW5rZWRVcGRhdGVEcmF3aW5nQXJlYS5oICovLAorCQkJCTkzRkM2NzlEMTJEM0ND
NzQwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5jcHAgKi8sCisJCQkJOTNGQzY3OUUxMkQzQ0M3
NDAwQTYwNjEwIC8qIERlY29kZXJBZGFwdGVyLmggKi8sCiAJCQkJQkM4NDUyQTUxMTYyQzgwOTAw
Q0FCOUI1IC8qIERyYXdpbmdBcmVhLmNwcCAqLywKIAkJCQlCQzg0NTJBNjExNjJDODA5MDBDQUI5
QjUgLyogRHJhd2luZ0FyZWEuaCAqLywKKwkJCQk5M0ZDNjc5RjEyRDNDQzc0MDBBNjA2MTAgLyog
RW5jb2RlckFkYXB0ZXIuY3BwICovLAorCQkJCTkzRkM2N0EwMTJEM0NDNzQwMEE2MDYxMCAvKiBF
bmNvZGVyQWRhcHRlci5oICovLAogCQkJCTFBOTBDMUYzMTI2NEZENzEwMDNFNDRENCAvKiBGaW5k
Q29udHJvbGxlci5jcHAgKi8sCiAJCQkJMUE5MEMxRjIxMjY0RkQ3MTAwM0U0NEQ0IC8qIEZpbmRD
b250cm9sbGVyLmggKi8sCiAJCQkJMEY1MjY1QjExMUREMzc2ODAwMDZEMzNDIC8qIExheWVyQmFj
a2VkRHJhd2luZ0FyZWEuY3BwICovLApAQCAtMjgyNCw2ICsyODM2LDggQEAKIAkJCQlCQ0NGNkFD
QTEyQzkxRjU5MDA4RjlDMzUgLyogV0tJbWFnZUNHLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0FD
MTExRjEyQzkyQzFGMDBCMDhFRUUgLyogV2ViRGF0YWJhc2VNYW5hZ2VyUHJveHlDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRkM2N0JFMTJEM0NDRjIwMEE2MDYxMCAvKiBEZWNv
ZGVyQWRhcHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTNGQzY3QzAxMkQzQ0NGMjAwQTYwNjEw
IC8qIEVuY29kZXJBZGFwdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTVFNERBNDEyRDNCRDNE
MDA5OUEyQkIgLyogVGV4dENoZWNrZXJTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0zMjU0LDYgKzMyNjgs
OCBAQAogCQkJCUJDQ0Y2QUMyMTJDOTFGMzQwMDhGOUMzNSAvKiBXS0ltYWdlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDQ0Y2QUM5MTJDOTFGNTkwMDhGOUMzNSAvKiBXS0ltYWdlQ0cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkNBQzExMjAxMkM5MkMxRjAwQjA4RUVFIC8qIFdlYkRhdGFiYXNl
TWFuYWdlclByb3h5Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTkzRkM2N0JEMTJEM0ND
RjIwMEE2MDYxMCAvKiBEZWNvZGVyQWRhcHRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk5M0ZD
NjdCRjEyRDNDQ0YyMDBBNjA2MTAgLyogRW5jb2RlckFkYXB0ZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9EZWNvZGVyQWRhcHRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIkRlY29kZXJBZGFwdGVyLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0RlY29kZXJBZGFwdGVyOjpEZWNvZGVyQWRhcHRl
cihjb25zdCB1aW50OF90KiBidWZmZXIsIHNpemVfdCBidWZmZXJTaXplKQorICAgIDogbV9kZWNv
ZGVyKGJ1ZmZlciwgYnVmZmVyU2l6ZSkKK3sKK30KKworYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVj
b2RlQnl0ZXMoVmVjdG9yPHVpbnQ4X3Q+JiBieXRlcykKK3sKKyAgICByZXR1cm4gbV9kZWNvZGVy
LmRlY29kZUJ5dGVzKGJ5dGVzKTsKK30KKworYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlQm9v
bChib29sJiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUJvb2wodmFsdWUp
OworfQorCitib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVVSW50MzIodWludDMyX3QmIHZhbHVl
KQoreworICAgIHJldHVybiBtX2RlY29kZXIuZGVjb2RlVUludDMyKHZhbHVlKTsKK30KKworYm9v
bCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlVUludDY0KHVpbnQ2NF90JiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gbV9kZWNvZGVyLmRlY29kZVVJbnQ2NCh2YWx1ZSk7Cit9CisKK2Jvb2wgRGVjb2RlckFk
YXB0ZXI6OmRlY29kZUludDMyKGludDMyX3QmIHZhbHVlKQoreworICAgIHJldHVybiBtX2RlY29k
ZXIuZGVjb2RlSW50MzIodmFsdWUpOworfQorCitib29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVJ
bnQ2NChpbnQ2NF90JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gbV9kZWNvZGVyLmRlY29kZUludDY0
KHZhbHVlKTsKK30KKworYm9vbCBEZWNvZGVyQWRhcHRlcjo6ZGVjb2RlRmxvYXQoZmxvYXQmIHZh
bHVlKQoreworICAgIHJldHVybiBtX2RlY29kZXIuZGVjb2RlRmxvYXQodmFsdWUpOworfQorCiti
b29sIERlY29kZXJBZGFwdGVyOjpkZWNvZGVEb3VibGUoZG91YmxlJiB2YWx1ZSkKK3sKKyAgICBy
ZXR1cm4gbV9kZWNvZGVyLmRlY29kZURvdWJsZSh2YWx1ZSk7Cit9CisKK2Jvb2wgRGVjb2RlckFk
YXB0ZXI6OmRlY29kZVN0cmluZyhTdHJpbmcmIHZhbHVlKQoreworICAgIHJldHVybiBtX2RlY29k
ZXIuZGVjb2RlKHZhbHVlKTsKK30KKworfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuY3BwCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9EZWNvZGVyQWRhcHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RlY29kZXJBZGFwdGVyLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9EZWNvZGVyQWRhcHRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBEZWNvZGVyQWRhcHRlcl9oCisjZGVmaW5lIERlY29kZXJBZGFw
dGVyX2gKKworI2luY2x1ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgorI2luY2x1ZGUgPHd0Zi9EZWNv
ZGVyLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIERlY29kZXJBZGFwdGVyIDogcHVibGljIERlY29kZXIgeworcHVibGljOgorICAgIERl
Y29kZXJBZGFwdGVyKGNvbnN0IHVpbnQ4X3QqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlclNpemUpOwor
Citwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVCeXRlcyhWZWN0b3I8dWludDhfdD4m
KTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlQm9vbChib29sJik7CisgICAgdmlydHVhbCBib29s
IGRlY29kZVVJbnQzMih1aW50MzJfdCYpOworICAgIHZpcnR1YWwgYm9vbCBkZWNvZGVVSW50NjQo
dWludDY0X3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlSW50MzIoaW50MzJfdCYpOworICAg
IHZpcnR1YWwgYm9vbCBkZWNvZGVJbnQ2NChpbnQ2NF90Jik7CisgICAgdmlydHVhbCBib29sIGRl
Y29kZUZsb2F0KGZsb2F0Jik7CisgICAgdmlydHVhbCBib29sIGRlY29kZURvdWJsZShkb3VibGUm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgZGVjb2RlU3RyaW5nKFN0cmluZyYpOworCisgICAgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyIG1fZGVjb2RlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYgLy8gRGVjb2RlckFkYXB0ZXJfaAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRGVjb2RlckFkYXB0ZXIuaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVk
OiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvRW5jb2RlckFkYXB0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJFbmNvZGVyQWRhcHRlci5oIgorCisjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitF
bmNvZGVyQWRhcHRlcjo6RW5jb2RlckFkYXB0ZXIoKQorICAgIDogbV9lbmNvZGVyKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2Rlcjo6Y3JlYXRlKDApKQoreworfQorCitWZWN0b3I8dWludDhfdD4gRW5j
b2RlckFkYXB0ZXI6OmRhdGEoKSBjb25zdAoreworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3I7
CisgICAgdmVjdG9yLmFwcGVuZChtX2VuY29kZXItPmJ1ZmZlcigpLCBtX2VuY29kZXItPmJ1ZmZl
clNpemUoKSk7CisgICAgcmV0dXJuIHZlY3RvcjsKK30KKwordm9pZCBFbmNvZGVyQWRhcHRlcjo6
ZW5jb2RlQnl0ZXMoY29uc3QgdWludDhfdCogYnl0ZXMsIHNpemVfdCBzaXplKQoreworICAgIG1f
ZW5jb2Rlci0+ZW5jb2RlQnl0ZXMoYnl0ZXMsIHNpemUpOworfQorCit2b2lkIEVuY29kZXJBZGFw
dGVyOjplbmNvZGVCb29sKGJvb2wgdmFsdWUpCit7CisgICAgbV9lbmNvZGVyLT5lbmNvZGVCb29s
KHZhbHVlKTsKK30KKwordm9pZCBFbmNvZGVyQWRhcHRlcjo6ZW5jb2RlVUludDMyKHVpbnQzMl90
IHZhbHVlKQoreworICAgIG1fZW5jb2Rlci0+ZW5jb2RlVUludDMyKHZhbHVlKTsKK30KKwordm9p
ZCBFbmNvZGVyQWRhcHRlcjo6ZW5jb2RlVUludDY0KHVpbnQ2NF90IHZhbHVlKQoreworICAgIG1f
ZW5jb2Rlci0+ZW5jb2RlVUludDY0KHZhbHVlKTsKK30KKwordm9pZCBFbmNvZGVyQWRhcHRlcjo6
ZW5jb2RlSW50MzIoaW50MzJfdCB2YWx1ZSkKK3sKKyAgICBtX2VuY29kZXItPmVuY29kZUludDMy
KHZhbHVlKTsKK30KKwordm9pZCBFbmNvZGVyQWRhcHRlcjo6ZW5jb2RlSW50NjQoaW50NjRfdCB2
YWx1ZSkKK3sKKyAgICBtX2VuY29kZXItPmVuY29kZUludDY0KHZhbHVlKTsKK30KKwordm9pZCBF
bmNvZGVyQWRhcHRlcjo6ZW5jb2RlRmxvYXQoZmxvYXQgdmFsdWUpCit7CisgICAgbV9lbmNvZGVy
LT5lbmNvZGVGbG9hdCh2YWx1ZSk7Cit9CisKK3ZvaWQgRW5jb2RlckFkYXB0ZXI6OmVuY29kZURv
dWJsZShkb3VibGUgdmFsdWUpCit7CisgICAgbV9lbmNvZGVyLT5lbmNvZGVEb3VibGUodmFsdWUp
OworfQorCit2b2lkIEVuY29kZXJBZGFwdGVyOjplbmNvZGVTdHJpbmcoY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3sKKyAgICBtX2VuY29kZXItPmVuY29kZSh2YWx1ZSk7Cit9CisKK30KClByb3BlcnR5
IGNoYW5nZXMgb246IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0VuY29kZXJBZGFwdGVyLmNw
cApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9FbmNvZGVyQWRhcHRlci5oCShyZXZpc2lvbiAwKQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFkYXB0ZXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRW5jb2RlckFkYXB0ZXJf
aAorI2RlZmluZSBFbmNvZGVyQWRhcHRlcl9oCisKKyNpbmNsdWRlIDx3dGYvRW5jb2Rlci5oPgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgQ29yZUlQQyB7CisgICAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOworfQorCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworY2xhc3MgRW5jb2RlckFkYXB0ZXIgOiBwdWJsaWMgRW5jb2RlciB7Citw
dWJsaWM6CisgICAgRW5jb2RlckFkYXB0ZXIoKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBkYXRh
KCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGVuY29kZUJ5dGVzKGNvbnN0
IHVpbnQ4X3QqLCBzaXplX3QpOworICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVCb29sKGJvb2wpOwor
ICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVVSW50MzIodWludDMyX3QpOworICAgIHZpcnR1YWwgdm9p
ZCBlbmNvZGVVSW50NjQodWludDY0X3QpOworICAgIHZpcnR1YWwgdm9pZCBlbmNvZGVJbnQzMihp
bnQzMl90KTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlSW50NjQoaW50NjRfdCk7CisgICAgdmly
dHVhbCB2b2lkIGVuY29kZUZsb2F0KGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5jb2RlRG91
YmxlKGRvdWJsZSk7CisgICAgdmlydHVhbCB2b2lkIGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKKworICAgIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+IG1fZW5jb2RlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRW5jb2RlckFkYXB0ZXJfaAoK
UHJvcGVydHkgY2hhbmdlcyBvbjogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRW5jb2RlckFk
YXB0ZXIuaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRl
eDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmNwcAkocmV2aXNpb24gNzUwMTQpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgiCiAKKyNpbmNs
dWRlICJFbmNvZGVyQWRhcHRlci5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5o
IgpAQCAtODcsOCArODgsMTIgQEAgc3RhdGljIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRJdGVtKEhp
c3RvcgogICAgIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nID0gaXRlbS0+dXJsU3RyaW5nKCk7CiAg
ICAgY29uc3QgU3RyaW5nJiB0aXRsZSA9IGl0ZW0tPnRpdGxlKCk7CiAKLSAgICAvLyBGSVhNRTog
UGFzcyB0aGUgZW5jb2RlZCBiYWNrRm9yd2FyZERhdGEgdG8gdGhlIG1lc3NhZ2UgaGVyZS4KLSAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3NQcm94eTo6QWRkQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCwgb3JpZ2luYWxVUkxTdHJpbmcs
IHVybFN0cmluZywgdGl0bGUsIFZlY3Rvcjx1aW50OF90PigpKSwgMCk7CisgICAgLy8gRklYTUU6
IFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIHdvcmsgZm9yIHRvcCBsZXZlbCBiYWNrL2ZvcndhcmQg
aXRlbXMuCisgICAgLy8gVGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgcHJvYmFibHkgdG8gYXJy
YW5nZSBmb3IgdGhpcyBlbnRpcmUgZnVuY3Rpb24gdG8gb25seSBiZSBjYWxsZWQgYnkgdG9wIGxl
dmUgYmFjay9mb3J3YXJkIGl0ZW1zLgorICAgIEVuY29kZXJBZGFwdGVyIGVuY29kZXI7CisgICAg
aXRlbS0+ZW5jb2RlQmFja0ZvcndhcmRUcmVlKGVuY29kZXIpOworCisgICAgV2ViUHJvY2Vzczo6
c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkFk
ZEJhY2tGb3J3YXJkSXRlbShpdGVtSUQsIG9yaWdpbmFsVVJMU3RyaW5nLCB1cmxTdHJpbmcsIHRp
dGxlLCBlbmNvZGVyLmRhdGEoKSksIDApOwogfQogCiBzdGF0aWMgdm9pZCBXSzJOb3RpZnlIaXN0
b3J5SXRlbUNoYW5nZWQoSGlzdG9yeUl0ZW0qIGl0ZW0pCkluZGV4OiBXZWJLaXQyL3dpbi9XZWJL
aXQyLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkocmV2
aXNpb24gNzUwMTQpCisrKyBXZWJLaXQyL3dpbi9XZWJLaXQyLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTM2Niw2ICsxMzY2LDE0IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcRGVjb2RlckFkYXB0ZXIu
Y3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cV2ViUHJvY2Vzc1xXZWJQYWdlXERlY29kZXJBZGFwdGVyLmgiCisJCQkJCT4KKwkJCQk8L0Zp
bGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2Vc
RHJhd2luZ0FyZWEuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtMTM3NCw2ICsxMzgyLDE0
IEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxXZWJQcm9jZXNzXFdlYlBhZ2VcRW5jb2RlckFkYXB0ZXIuY3BwIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cV2ViUHJvY2Vzc1xXZWJQYWdl
XEVuY29kZXJBZGFwdGVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxXZWJQcm9jZXNzXFdlYlBhZ2VcRmluZENvbnRyb2xsZXIuY3BwIgog
CQkJCQk+CiAJCQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="69181"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>