<?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>138841</bug_id>
          
          <creation_ts>2014-11-18 11:41:50 -0800</creation_ts>
          <short_desc>Removed the custom allocator for ListHashSet nodes</short_desc>
          <delta_ts>2014-11-18 15:05:49 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>benjamin</cc>
    
    <cc>kling</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1049544</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-18 11:41:50 -0800</bug_when>
    <thetext>Removed the custom allocator for ListHashSet nodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049563</commentid>
    <comment_count>1</comment_count>
      <attachid>241806</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-18 12:55:51 -0800</bug_when>
    <thetext>Created attachment 241806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049595</commentid>
    <comment_count>2</comment_count>
      <attachid>241813</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-18 14:25:58 -0800</bug_when>
    <thetext>Created attachment 241813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049596</commentid>
    <comment_count>3</comment_count>
      <attachid>241813</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-11-18 14:33:02 -0800</bug_when>
    <thetext>Comment on attachment 241813
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1049610</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-11-18 15:05:49 -0800</bug_when>
    <thetext>Committed r176290: &lt;http://trac.webkit.org/changeset/176290&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241806</attachid>
            <date>2014-11-18 12:55:51 -0800</date>
            <delta_ts>2014-11-18 14:25:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138841-20141118125603.patch</filename>
            <type>text/plain</type>
            <size>34330</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzYyNzQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTExLTE4ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCB0aGUgY3VzdG9tIGFsbG9jYXRvciBm
b3IgTGlzdEhhc2hTZXQgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzODg0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGJtYWxsb2MgaXMgZmFzdCwgc28gd2UgZG9uJ3QgbmVlZCBhIGN1c3RvbSBh
bGxvY2F0b3IuCisKKyAgICAgICAgVGhlIE1hbGxvY0JlbmNoIHRlc3QgZm9yIGxpbmtlZCBsaXN0
IG5vZGUgYWxsb2NhdGlvbiAobGlzdF9hbGxvY2F0ZSkgaXMKKyAgICAgICAgNC4wOVggZmFzdGVy
IGluIGJtYWxsb2MgdGhhbiBUQ01hbGxvYy4gQWxzbywgSSB3cm90ZSBhIHN0cmVzcyB0ZXN0IHRv
CisgICAgICAgIGFkZC9yZW1vdmUgbGluayBlbGVtZW50cywgd2hpY2ggbW9kaWZ5IGEgTGlzdEhh
c2hTZXQgb24gaW5zZXJ0aW9uIGFuZAorICAgICAgICByZW1vdmFsLCBhbmQgaXQgd2FzIDElIGZh
c3RlciAvIGluIHRoZSBub2lzZSB3aXRoIGJtYWxsb2MgZW5hYmxlZC4KKworICAgICAgICAqIHd0
Zi9MaXN0SGFzaFNldC5oOgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGU6Okxpc3RIYXNo
U2V0Tm9kZSk6CisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0VHJhbnNsYXRvcjo6dHJhbnNsYXRl
KToKKyAgICAgICAgKFdURjo6VT46Okxpc3RIYXNoU2V0KToKKyAgICAgICAgKFdURjo6PSk6Cisg
ICAgICAgIChXVEY6OlU+Ojpzd2FwKToKKyAgICAgICAgKFdURjo6VT46On5MaXN0SGFzaFNldCk6
CisgICAgICAgIChXVEY6OlU+OjpzaXplKToKKyAgICAgICAgKFdURjo6VT46OmNhcGFjaXR5KToK
KyAgICAgICAgKFdURjo6VT46OmlzRW1wdHkpOgorICAgICAgICAoV1RGOjpVPjo6Zmlyc3QpOgor
ICAgICAgICAoV1RGOjpVPjo6cmVtb3ZlRmlyc3QpOgorICAgICAgICAoV1RGOjpVPjo6dGFrZUZp
cnN0KToKKyAgICAgICAgKFdURjo6VT46Omxhc3QpOgorICAgICAgICAoV1RGOjpVPjo6cmVtb3Zl
TGFzdCk6CisgICAgICAgIChXVEY6OlU+Ojp0YWtlTGFzdCk6CisgICAgICAgIChXVEY6OlU+Ojpj
b250YWlucyk6CisgICAgICAgIChXVEY6OlU+OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpVPjo6
Y2xlYXIpOgorICAgICAgICAoV1RGOjpVPjo6dW5saW5rKToKKyAgICAgICAgKFdURjo6VT46OnVu
bGlua0FuZERlbGV0ZSk6CisgICAgICAgIChXVEY6OlU+OjphcHBlbmROb2RlKToKKyAgICAgICAg
KFdURjo6VT46OnByZXBlbmROb2RlKToKKyAgICAgICAgKFdURjo6VT46Omluc2VydE5vZGVCZWZv
cmUpOgorICAgICAgICAoV1RGOjpVPjo6ZGVsZXRlQWxsTm9kZXMpOgorICAgICAgICAoV1RGOjpM
aXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6Okxpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcjo6YWxsb2NhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6OmRlYWxsb2Nh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6OnBv
b2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6OnBh
c3RQb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TGlzdEhhc2hTZXROb2RlQWxsb2NhdG9y
OjppblBvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGU6Om9wZXJh
dG9yIG5ldyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0Tm9kZTo6ZGVzdHJv
eSk6IERlbGV0ZWQuCisKIDIwMTQtMTEtMTggIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0
bG9vay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb21waWxlIGVycm9ycyB3aGVuIEdTdHJl
YW1lciBpcyBlbmFibGVkLgpJbmRleDogU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCShyZXZpc2lvbiAxNzYwMjYp
CisrKyBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwy
MiArMzgsMjAgQEAgbmFtZXNwYWNlIFdURiB7CiAvLyBndWFyYW50ZWVkIHNhZmUgYWdhaW5zdCBt
dXRhdGlvbiBvZiB0aGUgTGlzdEhhc2hTZXQsIGV4Y2VwdCBmb3IKIC8vIHJlbW92YWwgb2YgdGhl
IGl0ZW0gY3VycmVudGx5IHBvaW50ZWQgdG8gYnkgYSBnaXZlbiBpdGVyYXRvci4KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucz4gY2xhc3MgTGlzdEhhc2hTZXQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgTGlzdEhhc2hTZXQ7CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIEhhc2hBcmc+IGNs
YXNzIExpc3RIYXNoU2V0SXRlcmF0b3I7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENv
bnN0SXRlcmF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFy
Zz4gY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I7CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0cnVjdCBM
aXN0SGFzaFNldE5vZGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnM7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yOwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMjU2LCB0eXBl
bmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoPiBjbGFz
cyBMaXN0SGFzaFNldCB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFz
aEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaD4gY2xhc3MgTGlzdEhh
c2hTZXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKLSAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGU7Ci0gICAg
dHlwZWRlZiBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5
PiBOb2RlQWxsb2NhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBO
b2RlOwogCiAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPE5vZGUqPiBOb2RlVHJhaXRzOwogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczxIYXNoQXJnPiBOb2RlSGFzaDsKQEAg
LTY0LDkgKzYyLDkgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZhbHVlQXJnIFZh
bHVlVHlwZTsKIAotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZVR5cGUsIGlu
bGluZUNhcGFjaXR5LCBIYXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0
Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBjb25zdF9p
dGVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVl
VHlwZSwgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+OworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJ
dGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZz4gY29uc3RfaXRlcmF0b3I7Cisg
ICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hB
cmc+OwogCiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVy
c2VfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRl
cmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CkBAIC0xNTUsMTExICsxNTMsMjIgQEAgcHJp
dmF0ZToKICAgICBIYXNoVGFibGU8Tm9kZSosIE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvciwgTm9k
ZUhhc2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFpdHM+IG1faW1wbDsKICAgICBOb2RlKiBtX2hlYWQ7
CiAgICAgTm9kZSogbV90YWlsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlQWxsb2NhdG9yPiBt
X2FsbG9jYXRvcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IGNsYXNzIExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvciB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0KIHB1YmxpYzoKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxW
YWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldE5v
ZGVBbGxvY2F0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5PiBOb2RlQWxsb2NhdG9yOwotCi0g
ICAgTGlzdEhhc2hTZXROb2RlQWxsb2NhdG9yKCkgCi0gICAgICAgIDogbV9mcmVlTGlzdChwb29s
KCkpCi0gICAgICAgICwgbV9pc0RvbmVXaXRoSW5pdGlhbEZyZWVMaXN0KGZhbHNlKQotICAgIHsg
Ci0gICAgICAgIG1lbXNldChtX3Bvb2wucG9vbCwgMCwgc2l6ZW9mKG1fcG9vbC5wb29sKSk7Ci0g
ICAgfQotCi0gICAgTm9kZSogYWxsb2NhdGUoKQotICAgIHsgCi0gICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1fZnJlZUxpc3Q7Ci0KLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZhc3RNYWxsb2Moc2l6ZW9mKE5vZGUpKSk7Ci0KLSAgICAg
ICAgQVNTRVJUKCFyZXN1bHQtPm1faXNBbGxvY2F0ZWQpOwotCi0gICAgICAgIE5vZGUqIG5leHQg
PSByZXN1bHQtPm1fbmV4dDsKLSAgICAgICAgQVNTRVJUKCFuZXh0IHx8ICFuZXh0LT5tX2lzQWxs
b2NhdGVkKTsKLSAgICAgICAgaWYgKCFuZXh0ICYmICFtX2lzRG9uZVdpdGhJbml0aWFsRnJlZUxp
c3QpIHsKLSAgICAgICAgICAgIG5leHQgPSByZXN1bHQgKyAxOwotICAgICAgICAgICAgaWYgKG5l
eHQgPT0gcGFzdFBvb2woKSkgewotICAgICAgICAgICAgICAgIG1faXNEb25lV2l0aEluaXRpYWxG
cmVlTGlzdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChpblBvb2wobmV4dCkpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVCghbmV4dC0+bV9pc0FsbG9jYXRlZCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9mcmVlTGlzdCA9IG5leHQ7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0KLSAgICB2b2lkIGRlYWxsb2NhdGUoTm9kZSogbm9kZSkgCi0gICAgewotICAg
ICAgICBpZiAoaW5Qb29sKG5vZGUpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgbm9k
ZS0+bV9pc0FsbG9jYXRlZCA9IGZhbHNlOwotI2VuZGlmCi0gICAgICAgICAgICBub2RlLT5tX25l
eHQgPSBtX2ZyZWVMaXN0OwotICAgICAgICAgICAgbV9mcmVlTGlzdCA9IG5vZGU7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmYXN0RnJlZShub2RlKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgTm9kZSogcG9vbCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPE5vZGUqPihtX3Bvb2wucG9vbCk7IH0KLSAgICBOb2RlKiBwYXN0UG9vbCgpIHsgcmV0dXJu
IHBvb2woKSArIG1fcG9vbFNpemU7IH0KLSAgICBib29sIGluUG9vbChOb2RlKiBub2RlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG5vZGUgPj0gcG9vbCgpICYmIG5vZGUgPCBwYXN0UG9vbCgpOwot
ICAgIH0KLQotICAgIE5vZGUqIG1fZnJlZUxpc3Q7Ci0gICAgYm9vbCBtX2lzRG9uZVdpdGhJbml0
aWFsRnJlZUxpc3Q7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtX3Bvb2xTaXplID0gaW5saW5l
Q2FwYWNpdHk7Ci0gICAgdW5pb24gewotICAgICAgICBjaGFyIHBvb2xbc2l6ZW9mKE5vZGUpICog
bV9wb29sU2l6ZV07Ci0gICAgICAgIGRvdWJsZSBmb3JBbGlnbm1lbnQ7Ci0gICAgfSBtX3Bvb2w7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlIHsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZUFs
bG9jYXRvcjxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGVBbGxvY2F0b3I7Ci0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIExpc3RIYXNoU2V0Tm9kZShUJiYgdmFsdWUpCiAgICAg
ICAgIDogbV92YWx1ZShzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKQogICAgICAgICAsIG1fcHJldigw
KQogICAgICAgICAsIG1fbmV4dCgwKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX2lzQWxs
b2NhdGVkKHRydWUpCi0jZW5kaWYKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgTm9kZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKLSAgICB9Ci0gICAgdm9pZCBkZXN0cm95KE5vZGVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKLSAgICB7Ci0gICAgICAgIHRoaXMtPn5MaXN0SGFzaFNldE5v
ZGUoKTsKLSAgICAgICAgYWxsb2NhdG9yLT5kZWFsbG9jYXRlKHRoaXMpOwotICAgIH0KLQogICAg
IFZhbHVlQXJnIG1fdmFsdWU7CiAgICAgTGlzdEhhc2hTZXROb2RlKiBtX3ByZXY7CiAgICAgTGlz
dEhhc2hTZXROb2RlKiBtX25leHQ7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBtX2lzQWxs
b2NhdGVkOwotI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3Qg
TGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9ucyB7CkBAIC0yNjgsMTUgKzE3NywxNSBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlzdEhhCiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIEhhc2hB
cmc+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVB
cmcsIHR5cGVuYW1lIEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3IgewogcHJpdmF0
ZToKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eSwgSGFz
aEFyZz4gTGlzdEhhc2hTZXRUeXBlOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxW
YWx1ZUFyZywgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYg
TGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFy
Zz4gY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldE5vZGU8VmFsdWVBcmcs
IGlubGluZUNhcGFjaXR5PiBOb2RlOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8VmFsdWVBcmcs
IEhhc2hBcmc+IExpc3RIYXNoU2V0VHlwZTsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0
b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRD
b25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPiBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICB0eXBlZGVmIFZhbHVlQXJn
IFZhbHVlVHlwZTsKIAotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFyZywgaW5s
aW5lQ2FwYWNpdHksIEhhc2hBcmc+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1
ZUFyZywgSGFzaEFyZz47CiAKICAgICBMaXN0SGFzaFNldEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNo
U2V0VHlwZSogc2V0LCBOb2RlKiBwb3NpdGlvbikgOiBtX2l0ZXJhdG9yKHNldCwgcG9zaXRpb24p
IHsgfQogCkBAIC0zMTUsMTYgKzIyNCwxNiBAQCBwcml2YXRlOgogICAgIGNvbnN0X2l0ZXJhdG9y
IG1faXRlcmF0b3I7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRl
cmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmc+IGNs
YXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvciB7CiBwcml2YXRlOgotICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBMaXN0SGFzaFNldFR5
cGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBpbmxpbmVDYXBh
Y2l0eSwgSGFzaEFyZz4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRl
cmF0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBjb25zdF9pdGVyYXRvcjsK
LSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5v
ZGU7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz4gTGlzdEhhc2hT
ZXRUeXBlOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFy
Zz4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVB
cmcsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2Rl
PFZhbHVlQXJnPiBOb2RlOwogICAgIHR5cGVkZWYgVmFsdWVBcmcgVmFsdWVUeXBlOwogCi0gICAg
ZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFy
Zz47Ci0gICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVBcmcsIGlubGlu
ZUNhcGFjaXR5LCBIYXNoQXJnPjsKKyAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXQ8VmFsdWVB
cmcsIEhhc2hBcmc+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVl
QXJnLCBIYXNoQXJnPjsKIAogICAgIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcihjb25zdCBMaXN0
SGFzaFNldFR5cGUqIHNldCwgTm9kZSogcG9zaXRpb24pCiAgICAgICAgIDogbV9zZXQoc2V0KQpA
QCAtMzkzLDg2ICszMDIsODMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KIHN0
cnVjdCBMaXN0SGFzaFNldFRyYW5zbGF0b3IgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6
aGFzaChrZXkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9u
czo6ZXF1YWwoYS0+bV92YWx1ZSwgYik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVComIGxvY2F0aW9uLCBV
JiYga2V5LCBjb25zdCBWJiBhbGxvY2F0b3IpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQqJiBsb2NhdGlvbiwg
VSYmIGtleSwgViYmKQogICAgIHsKLSAgICAgICAgbG9jYXRpb24gPSBuZXcgKGFsbG9jYXRvcikg
VChzdGQ6OmZvcndhcmQ8VT4oa2V5KSk7CisgICAgICAgIGxvY2F0aW9uID0gbmV3IFQoc3RkOjpm
b3J3YXJkPFU+KGtleSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Okxpc3RIYXNoU2V0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxpc3RIYXNoU2V0KCkKICAgICA6IG1f
aGVhZCgwKQogICAgICwgbV90YWlsKDApCi0gICAgLCBtX2FsbG9jYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVBbGxvY2F0b3I+KCkpCiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Okxpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46
Okxpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKICAgICA6IG1faGVhZCgwKQog
ICAgICwgbV90YWlsKDApCi0gICAgLCBtX2FsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPE5vZGVB
bGxvY2F0b3I+KCkpCiB7CiAgICAgZm9yIChhdXRvIGl0ID0gb3RoZXIuYmVnaW4oKSwgZW5kID0g
b3RoZXIuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgYWRkKCppdCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlu
bGluZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT4mIExpc3RIYXNoU2V0PFQsIGlu
bGluZUNhcGFjaXR5LCBVPjo6b3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT4m
IExpc3RIYXNoU2V0PFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQog
ewogICAgIExpc3RIYXNoU2V0IHRtcChvdGhlcik7CiAgICAgc3dhcCh0bXApOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHks
IFU+Ojpzd2FwKExpc3RIYXNoU2V0JiBvdGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6c3dhcChMaXN0SGFzaFNldCYg
b3RoZXIpCiB7CiAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsKICAgICBzdGQ6OnN3YXAo
bV9oZWFkLCBvdGhlci5tX2hlYWQpOwogICAgIHN0ZDo6c3dhcChtX3RhaWwsIG90aGVyLm1fdGFp
bCk7Ci0gICAgbV9hbGxvY2F0b3Iuc3dhcChvdGhlci5tX2FsbG9jYXRvcik7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGlu
ZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46On5MaXN0SGFzaFNldCgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIExpc3RIYXNoU2V0PFQsIFU+Ojp+
TGlzdEhhc2hTZXQoKQogewogICAgIGRlbGV0ZUFsbE5vZGVzKCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBpbnQg
TGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpzaXplKCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgaW50IExpc3RIYXNoU2V0PFQsIFU+Ojpz
aXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBp
bnQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpjYXBhY2l0eSgpIGNvbnN0Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGludCBMaXN0SGFzaFNldDxU
LCBVPjo6Y2FwYWNpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsg
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgVT4KLWlubGluZSBib29sIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXNF
bXB0eSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGJv
b2wgTGlzdEhhc2hTZXQ8VCwgVT46OmlzRW1wdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2lt
cGwuaXNFbXB0eSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6Zmlyc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGlu
ZSBUJiBMaXN0SGFzaFNldDxULCBVPjo6Zmlyc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0eSgp
KTsKICAgICByZXR1cm4gbV9oZWFkLT5tX3ZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OnJlbW92ZUZpcnN0KCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3Zl
Rmlyc3QoKQogewogICAgIHRha2VGaXJzdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1pbmxpbmUgVCBMaXN0SGFzaFNldDxU
LCBpbmxpbmVDYXBhY2l0eSwgVT46OnRha2VGaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgoraW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVT46OnRha2VGaXJzdCgpCiB7CiAg
ICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIGF1dG8gaXQgPSBtX2ltcGwuZmluZChtX2hlYWQp
OwpAQCAtNDg0LDM1ICszOTAsMzUgQEAgaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2Fw
YWNpdHksIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBjb25zdCBUJiBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgY29uc3QgVCYgTGlzdEhhc2hTZXQ8VCwgVT46OmZp
cnN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1faGVh
ZC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5
LCBVPjo6bGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIFQm
IExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAg
ICAgcmV0dXJuIG1fdGFpbC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIGNvbnN0IFQmIExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6bGFzdCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1fdGFpbC0+
bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHks
IFU+OjpyZW1vdmVMYXN0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citpbmxp
bmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlTGFzdCgpCiB7CiAgICAgdGFrZUxhc3Qo
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBVPgotaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojp0YWtl
TGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIFQgTGlzdEhh
c2hTZXQ8VCwgVT46OnRha2VMYXN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAg
YXV0byBpdCA9IG1faW1wbC5maW5kKG1fdGFpbCk7CkBAIC01MjQsOCArNDMwLDggQEAgaW5saW5l
IFQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
VT4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6ZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KK2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpmaW5kKGNvbnN0IFZh
bHVlVHlwZSYgdmFsdWUpIC0+IGl0ZXJhdG9yCiB7CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1w
bGF0ZSBmaW5kPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1faW1wbC5l
bmQoKSkKQEAgLTUzMyw4ICs0MzksOCBAQCBpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0CiAgICAgcmV0dXJuIG1ha2VJdGVyYXRvcigqaXQpOyAKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIGF1
dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpmaW5kKGNvbnN0IFZhbHVlVHlw
ZSYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgoraW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmZpbmQoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0g
bV9pbXBsLnRlbXBsYXRlIGZpbmQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsKICAgICBpZiAoaXQg
PT0gbV9pbXBsLmVuZCgpKQpAQCAtNTQ4LDkgKzQ1NCw5IEBAIHN0cnVjdCBMaXN0SGFzaFNldFRy
YW5zbGF0b3JBZGFwdGVyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBUcmFuc2xh
dG9yOjplcXVhbChhLT5tX3ZhbHVlLCBiKTsgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWVUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvcj4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgaW5s
aW5lQ2FwYWNpdHksIFU+OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSAtPiBpdGVyYXRvcgoraW5saW5l
IGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgLT4g
aXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8TGlzdEhhc2hT
ZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKICAgICBpZiAoaXQg
PT0gbV9pbXBsLmVuZCgpKQpAQCAtNTU4LDkgKzQ2NCw5IEBAIGlubGluZSBhdXRvIExpc3RIYXNo
U2V0PFZhbHVlVHlwZSwgaW5saW4KICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCppdCk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBVPgordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBVPgogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci1pbmxpbmUgYXV0byBMaXN0
SGFzaFNldDxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBVPjo6ZmluZChjb25zdCBUJiB2YWx1
ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVl
VHlwZSwgVT46OmZpbmQoY29uc3QgVCYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7
CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1wbGF0ZSBmaW5kPExpc3RIYXNoU2V0VHJhbnNsYXRv
ckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1faW1wbC5l
bmQoKSkKQEAgLTU2OCw0MSArNDc0LDQxIEBAIGlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVl
VHlwZSwgaW5saW4KICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IoKml0KTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IFU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLWlubGluZSBib29sIExpc3RIYXNo
U2V0PFZhbHVlVHlwZSwgaW5saW5lQ2FwYWNpdHksIFU+Ojpjb250YWlucyhjb25zdCBUJiB2YWx1
ZSkgY29uc3QKK2lubGluZSBib29sIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmNvbnRhaW5z
KGNvbnN0IFQmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29u
dGFpbnM8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVl
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBVPgotaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojpj
b250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIExpc3RIYXNoU2V0PFQsIFU+Ojpjb250YWlucyhj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgY29udGFpbnM8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNl
dDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBB
ZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CithdXRvIExpc3RIYXNo
U2V0PFQsIFU+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1
ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRl
IGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKICAgICAgICAgYXBwZW5kTm9kZSgqcmVzdWx0Lml0ZXJhdG9yKTsKICAgICByZXR1
cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRk
KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CithdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphZGQoVmFsdWVUeXBlJiYgdmFsdWUp
IC0+IEFkZFJlc3VsdAogewotICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxC
YXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjpt
b3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICBhcHBlbmROb2RlKCpyZXN1bHQuaXRlcmF0b3IpOwogICAgIHJldHVybiBBZGRSZXN1bHQobWFr
ZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWF1
dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjphcHBlbmRPck1vdmVUb0xhc3Qo
Y29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgorYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYXN0
KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewotICAgIGF1dG8gcmVzdWx0
ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG1fYWxsb2NhdG9y
LmdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5z
bGF0b3I+KHZhbHVlLCBudWxscHRyKTsKICAgICBOb2RlKiBub2RlID0gKnJlc3VsdC5pdGVyYXRv
cjsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICB1bmxpbmsobm9kZSk7CkBA
IC02MTEsMTAgKzUxNywxMCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBV
Pjo6CiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciks
IHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBh
Y2l0eSwgVT46OmFwcGVuZE9yTW92ZVRvTGFzdChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVz
dWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYXV0byBMaXN0SGFzaFNldDxU
LCBVPjo6YXBwZW5kT3JNb3ZlVG9MYXN0KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+
KFdURjo6bW92ZSh2YWx1ZSksIG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1ZSksIG51
bGxwdHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0ZXJhdG9yOwogICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHVubGluayhub2RlKTsKQEAgLTYyMywxMCArNTI5LDEw
IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoKICAgICByZXR1cm4g
QWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cHJlcGVu
ZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYXV0byBMaXN0SGFzaFNldDxULCBVPjo6cHJl
cGVuZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7
Ci0gICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2
YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBs
YXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG51bGxwdHIpOwogICAgIE5vZGUqIG5vZGUg
PSAqcmVzdWx0Lml0ZXJhdG9yOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
IHVubGluayhub2RlKTsKQEAgLTYzNSwxMCArNTQxLDEwIEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwg
aW5saW5lQ2FwYWNpdHksIFU+OjoKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigq
cmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cHJlcGVuZE9yTW92ZVRvRmlyc3QoVmFsdWVUeXBl
JiYgdmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
K2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0ZpcnN0KFZhbHVlVHlwZSYm
IHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0
ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1ZSksIG1fYWxsb2NhdG9yLmdldCgp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+
KFdURjo6bW92ZSh2YWx1ZSksIG51bGxwdHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0
ZXJhdG9yOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHVubGluayhub2Rl
KTsKQEAgLTY0NywzOCArNTUzLDM4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNp
dHksIFU+OjoKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJh
dG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIGlubGlu
ZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUs
IGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShj
b25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKSAt
PiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQoYmVmb3JlVmFsdWUp
LCBuZXdWYWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+
OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgVmFsdWVUeXBlJiYg
bmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
K2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJl
Zm9yZVZhbHVlLCBWYWx1ZVR5cGUmJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0
dXJuIGluc2VydEJlZm9yZShmaW5kKGJlZm9yZVZhbHVlKSwgV1RGOjptb3ZlKG5ld1ZhbHVlKSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZv
cmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46
Omluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4g
QWRkUmVzdWx0CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VU
cmFuc2xhdG9yPihuZXdWYWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShp
dC5ub2RlKCksICpyZXN1bHQuaXRlcmF0b3IpOwogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0
ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWF1dG8g
TGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3Ig
aXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+CithdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoaXRl
cmF0b3IgaXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZShu
ZXdWYWx1ZSksIG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50
ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZShuZXdWYWx1ZSksIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShp
dC5ub2RlKCksICpyZXN1bHQuaXRlcmF0b3IpOwogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0
ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGlu
ZSBib29sIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cmVtb3ZlKGl0ZXJhdG9y
IGl0KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIExpc3RI
YXNoU2V0PFQsIFU+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7CiAgICAgaWYgKGl0ID09IGVuZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02ODcsMTQgKzU5MywxNCBAQCBpbmxpbmUgYm9v
bCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlu
bGluZSBib29sIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cmVtb3ZlKGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5s
aW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQogewogICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBM
aXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmNsZWFyKCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6Y2xlYXIo
KQogewogICAgIGRlbGV0ZUFsbE5vZGVzKCk7CiAgICAgbV9pbXBsLmNsZWFyKCk7IApAQCAtNzAy
LDggKzYwOCw4IEBAIGlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXQKICAg
ICBtX3RhaWwgPSAwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBV
Pjo6dW5saW5rKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
dm9pZCBMaXN0SGFzaFNldDxULCBVPjo6dW5saW5rKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFu
b2RlLT5tX3ByZXYpIHsKICAgICAgICAgQVNTRVJUKG5vZGUgPT0gbV9oZWFkKTsKQEAgLTcyMiwx
NSArNjI4LDE1IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoKICAg
ICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojp1bmxpbmtB
bmREZWxldGUoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2
b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojp1bmxpbmtBbmREZWxldGUoTm9kZSogbm9kZSkKIHsKICAg
ICB1bmxpbmsobm9kZSk7Ci0gICAgbm9kZS0+ZGVzdHJveShtX2FsbG9jYXRvci5nZXQoKSk7Cisg
ICAgZGVsZXRlIG5vZGU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHks
IFU+OjphcHBlbmROb2RlKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgordm9pZCBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kTm9kZShOb2RlKiBub2RlKQogewog
ICAgIG5vZGUtPm1fcHJldiA9IG1fdGFpbDsKICAgICBub2RlLT5tX25leHQgPSAwOwpAQCAtNzQ2
LDggKzY1Miw4IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoKICAg
ICBtX3RhaWwgPSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5
LCBVPjo6cHJlcGVuZE5vZGUoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Cit2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kTm9kZShOb2RlKiBub2RlKQog
ewogICAgIG5vZGUtPm1fcHJldiA9IDA7CiAgICAgbm9kZS0+bV9uZXh0ID0gbV9oZWFkOwpAQCAt
NzYwLDggKzY2Niw4IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoK
ICAgICBtX2hlYWQgPSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6aW5zZXJ0Tm9kZUJlZm9yZShOb2RlKiBiZWZvcmVOb2RlLCBOb2RlKiBuZXdOb2Rl
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwg
VT46Omluc2VydE5vZGVCZWZvcmUoTm9kZSogYmVmb3JlTm9kZSwgTm9kZSogbmV3Tm9kZSkKIHsK
ICAgICBpZiAoIWJlZm9yZU5vZGUpCiAgICAgICAgIHJldHVybiBhcHBlbmROb2RlKG5ld05vZGUp
OwpAQCAtNzc2LDI0ICs2ODIsMjQgQEAgdm9pZCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0
eSwgVT46OgogICAgICAgICBtX2hlYWQgPSBuZXdOb2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0
PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6ZGVsZXRlQWxsTm9kZXMoKQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OmRlbGV0ZUFsbE5vZGVz
KCkKIHsKICAgICBpZiAoIW1faGVhZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChOb2Rl
KiBub2RlID0gbV9oZWFkLCAqbmV4dCA9IG1faGVhZC0+bV9uZXh0OyBub2RlOyBub2RlID0gbmV4
dCwgbmV4dCA9IG5vZGUgPyBub2RlLT5tX25leHQgOiAwKQotICAgICAgICBub2RlLT5kZXN0cm95
KG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAgZGVsZXRlIG5vZGU7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBh
dXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6bWFrZUl0ZXJhdG9yKE5vZGUq
IHBvc2l0aW9uKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
K2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjptYWtlSXRlcmF0b3IoTm9kZSogcG9zaXRp
b24pIC0+IGl0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvc2l0aW9uKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBVPgotaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjptYWtl
Q29uc3RJdGVyYXRvcihOb2RlKiBwb3NpdGlvbikgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxU
LCBVPjo6bWFrZUNvbnN0SXRlcmF0b3IoTm9kZSogcG9zaXRpb24pIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCiB7IAogICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3NpdGlvbik7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzYyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNC0xMS0xOCAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZWQgdGhlIGN1c3Rv
bSBhbGxvY2F0b3IgZm9yIExpc3RIYXNoU2V0IG5vZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VzIG9mIExpc3RIYXNoU2V0IG5vIGxvbmdlciBu
ZWVkIHRvIGRlY2xhcmUgYW4gaW5saW5lIGNhcGFjaXR5LAorICAgICAgICBzaW5jZSB0aGF0IHdh
cyBvbmx5IHVzZWQgdG8gc3BlY2lmeSB0aGUgY2FwYWNpdHkgb2YgdGhlIGN1c3RvbSBhbGxvY2F0
b3IuCisKKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5oOgorICAgICAgICAqIGRvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmg6Cisg
ICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKwogMjAx
NC0xMS0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgaU9TIGJ1aWxkIGZpeApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAxNzYwMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IERPTU5hbWVkRmxvd0hhc2hGdW5jdGlvbnM7
CiAgICAgc3RydWN0IERPTU5hbWVkRmxvd0hhc2hUcmFuc2xhdG9yOwogCi0gICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiwgMSwgRE9NTmFtZWRGbG93SGFzaEZ1
bmN0aW9ucz4gRE9NTmFtZWRGbG93U2V0OworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRy
PFdlYktpdE5hbWVkRmxvdz4sIERPTU5hbWVkRmxvd0hhc2hGdW5jdGlvbnM+IERPTU5hbWVkRmxv
d1NldDsKICAgICBleHBsaWNpdCBET01OYW1lZEZsb3dDb2xsZWN0aW9uKGNvbnN0IFZlY3RvcjxX
ZWJLaXROYW1lZEZsb3cqPiYpOwogICAgIERPTU5hbWVkRmxvd1NldCBtX25hbWVkRmxvd3M7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAkocmV2aXNpb24g
MTc2MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBEb2N1bWVudCYgbV9k
b2N1bWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7
Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiwgMTY+IG1fcXVldWVkRXZlbnRzOworICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxFdmVudD4+IG1fcXVldWVkRXZlbnRzOwogICAgIEhhc2hTZXQ8
Tm9kZSo+IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOwogICAgIGJvb2wgbV9pc0Nsb3Nl
ZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDE3NjAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsK
ICAgICBVcGRhdGVGbGFnIG1fcGVuZGluZ1VwZGF0ZVR5cGU7CiAKLSAgICB0eXBlZGVmIExpc3RI
YXNoU2V0PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OworICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSo+IFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDsK
ICAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQgbV9zdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZXM7CiAKICAgICBTdHJpbmcgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTc2MDI2
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBOYW1lZEZsb3dIYXNo
RnVuY3Rpb25zOwogICAgIHN0cnVjdCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcjsKIAotICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8V2ViS2l0TmFtZWRGbG93KiwgMSwgTmFtZWRGbG93SGFzaEZ1bmN0
aW9ucz4gTmFtZWRGbG93U2V0OworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8V2ViS2l0TmFtZWRG
bG93KiwgTmFtZWRGbG93SGFzaEZ1bmN0aW9ucz4gTmFtZWRGbG93U2V0OwogCiAgICAgZXhwbGlj
aXQgTmFtZWRGbG93Q29sbGVjdGlvbihEb2N1bWVudCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9Gb3JtQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNzYwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcik7CiAKIHByaXZh
dGU6Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZT4sIDY0PiBGb3JtRWxlbWVudExpc3RIYXNoU2V0OworICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8UmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU+PiBGb3JtRWxl
bWVudExpc3RIYXNoU2V0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4sIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4+IFNhdmVkRm9ybVN0YXRlTWFw
OwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZU1hcD4gY3JlYXRl
U2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAkocmV2aXNpb24gMTc2
MDI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0IEZsb2F0aW5nT2JqZWN0SGFzaFRy
YW5zbGF0b3IgewogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxG
bG9hdGluZ09iamVjdD4mIGEsIGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBiKSB7IHJldHVybiAmYS0+
cmVuZGVyZXIoKSA9PSAmYi5yZW5kZXJlcigpOyB9CiB9OwogCi10eXBlZGVmIExpc3RIYXNoU2V0
PHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4sIDQsIEZsb2F0aW5nT2JqZWN0SGFzaEZ1
bmN0aW9ucz4gRmxvYXRpbmdPYmplY3RTZXQ7Cit0eXBlZGVmIExpc3RIYXNoU2V0PHN0ZDo6dW5p
cXVlX3B0cjxGbG9hdGluZ09iamVjdD4sIEZsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0aW9ucz4gRmxv
YXRpbmdPYmplY3RTZXQ7CiAKIHR5cGVkZWYgUE9ESW50ZXJ2YWw8TGF5b3V0VW5pdCwgRmxvYXRp
bmdPYmplY3QqPiBGbG9hdGluZ09iamVjdEludGVydmFsOwogdHlwZWRlZiBQT0RJbnRlcnZhbFRy
ZWU8TGF5b3V0VW5pdCwgRmxvYXRpbmdPYmplY3QqPiBGbG9hdGluZ09iamVjdFRyZWU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTc2MDI2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIHN0cnVjdCBCaWRpUnVuOwogc3Ry
dWN0IFBhaW50SW5mbzsKIAotdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlbmRlckJveCosIDE2
PiBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDsKK3R5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxS
ZW5kZXJCb3gqPiBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDsKIHR5cGVkZWYgV1RGOjpIYXNo
TWFwPGNvbnN0IFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0Pj4gVHJhY2tlZERlc2NlbmRhbnRzTWFwOwogdHlwZWRlZiBXVEY6Okhhc2hNYXA8
Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8UmVuZGVyQmxvY2sqPj4+
IFRyYWNrZWRDb250YWluZXJNYXA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjI3NCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDE0LTExLTE4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlZCB0aGUgY3VzdG9tIGFsbG9jYXRvciBmb3IgTGlzdEhhc2hTZXQgbm9kZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODg0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZXMgb2Yg
TGlzdEhhc2hTZXQgbm8gbG9uZ2VyIG5lZWQgdG8gZGVjbGFyZSBhbiBpbmxpbmUgY2FwYWNpdHks
CisgICAgICAgIHNpbmNlIHRoYXQgd2FzIG9ubHkgdXNlZCB0byBzcGVjaWZ5IHRoZSBjYXBhY2l0
eSBvZiB0aGUgY3VzdG9tIGFsbG9jYXRvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6
bG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSk6CisKIDIwMTQtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNzYyNjQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5J
bmZvU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAJKHJldmlzaW9uIDE3NjAyNikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW5zSWZOZWNl
cwogICAgIGlmIChtX3BsdWdpbkxpc3RJc1VwVG9EYXRlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMaXN0SGFzaFNldDxTdHJpbmcsIDMyPiB1bmlxdWVQbHVnaW5QYXRoczsKKyAgICBMaXN0SGFz
aFNldDxTdHJpbmc+IHVuaXF1ZVBsdWdpblBhdGhzOwogCiAgICAgLy8gRmlyc3QsIGxvYWQgcGx1
Zy1pbnMgZnJvbSB0aGUgYWRkaXRpb25hbCBwbHVnLWlucyBkaXJlY3RvcmllcyBzcGVjaWZpZWQu
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3Jp
ZXMuc2l6ZSgpOyArK2kpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241813</attachid>
            <date>2014-11-18 14:25:58 -0800</date>
            <delta_ts>2014-11-18 14:33:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138841-20141118142611.patch</filename>
            <type>text/plain</type>
            <size>35980</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxNzYyNzQpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDUxIEBACisyMDE0LTExLTE4ICBHZW9mZnJleSBHYXJlbiAgPGdn
YXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlZCB0aGUgY3VzdG9tIGFsbG9jYXRvciBm
b3IgTGlzdEhhc2hTZXQgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzODg0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGJtYWxsb2MgaXMgZmFzdCwgc28gd2UgZG9uJ3QgbmVlZCBhIGN1c3RvbSBh
bGxvY2F0b3IuCisKKyAgICAgICAgVGhlIE1hbGxvY0JlbmNoIHRlc3QgZm9yIGxpbmtlZCBsaXN0
IG5vZGUgYWxsb2NhdGlvbiAobGlzdF9hbGxvY2F0ZSkgaXMKKyAgICAgICAgNC4wOVggZmFzdGVy
IGluIGJtYWxsb2MgdGhhbiBUQ01hbGxvYy4gQWxzbywgSSB3cm90ZSBhIHN0cmVzcyB0ZXN0IHRv
CisgICAgICAgIGFkZC9yZW1vdmUgbGluayBlbGVtZW50cywgd2hpY2ggbW9kaWZ5IGEgTGlzdEhh
c2hTZXQgb24gaW5zZXJ0aW9uIGFuZAorICAgICAgICByZW1vdmFsLCBhbmQgaXQgd2FzIDElIGZh
c3RlciAvIGluIHRoZSBub2lzZSB3aXRoIGJtYWxsb2MgZW5hYmxlZC4KKworICAgICAgICAqIHd0
Zi9MaXN0SGFzaFNldC5oOgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGU6Okxpc3RIYXNo
U2V0Tm9kZSk6CisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0VHJhbnNsYXRvcjo6dHJhbnNsYXRl
KToKKyAgICAgICAgKFdURjo6VT46Okxpc3RIYXNoU2V0KToKKyAgICAgICAgKFdURjo6PSk6Cisg
ICAgICAgIChXVEY6OlU+Ojpzd2FwKToKKyAgICAgICAgKFdURjo6VT46On5MaXN0SGFzaFNldCk6
CisgICAgICAgIChXVEY6OlU+OjpzaXplKToKKyAgICAgICAgKFdURjo6VT46OmNhcGFjaXR5KToK
KyAgICAgICAgKFdURjo6VT46OmlzRW1wdHkpOgorICAgICAgICAoV1RGOjpVPjo6Zmlyc3QpOgor
ICAgICAgICAoV1RGOjpVPjo6cmVtb3ZlRmlyc3QpOgorICAgICAgICAoV1RGOjpVPjo6dGFrZUZp
cnN0KToKKyAgICAgICAgKFdURjo6VT46Omxhc3QpOgorICAgICAgICAoV1RGOjpVPjo6cmVtb3Zl
TGFzdCk6CisgICAgICAgIChXVEY6OlU+Ojp0YWtlTGFzdCk6CisgICAgICAgIChXVEY6OlU+Ojpj
b250YWlucyk6CisgICAgICAgIChXVEY6OlU+OjpyZW1vdmUpOgorICAgICAgICAoV1RGOjpVPjo6
Y2xlYXIpOgorICAgICAgICAoV1RGOjpVPjo6dW5saW5rKToKKyAgICAgICAgKFdURjo6VT46OnVu
bGlua0FuZERlbGV0ZSk6CisgICAgICAgIChXVEY6OlU+OjphcHBlbmROb2RlKToKKyAgICAgICAg
KFdURjo6VT46OnByZXBlbmROb2RlKToKKyAgICAgICAgKFdURjo6VT46Omluc2VydE5vZGVCZWZv
cmUpOgorICAgICAgICAoV1RGOjpVPjo6ZGVsZXRlQWxsTm9kZXMpOgorICAgICAgICAoV1RGOjpM
aXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6Okxpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcik6IERlbGV0
ZWQuCisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvcjo6YWxsb2NhdGUpOiBE
ZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6OmRlYWxsb2Nh
dGUpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6OnBv
b2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I6OnBh
c3RQb29sKTogRGVsZXRlZC4KKyAgICAgICAgKFdURjo6TGlzdEhhc2hTZXROb2RlQWxsb2NhdG9y
OjppblBvb2wpOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldE5vZGU6Om9wZXJh
dG9yIG5ldyk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0Tm9kZTo6ZGVzdHJv
eSk6IERlbGV0ZWQuCisKIDIwMTQtMTEtMTggIHBlYXZvQG91dGxvb2suY29tICA8cGVhdm9Ab3V0
bG9vay5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBDb21waWxlIGVycm9ycyB3aGVuIEdTdHJl
YW1lciBpcyBlbmFibGVkLgpJbmRleDogU291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCShyZXZpc2lvbiAxNzYwMjYp
CisrKyBTb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwy
MiArMzgsMjAgQEAgbmFtZXNwYWNlIFdURiB7CiAvLyBndWFyYW50ZWVkIHNhZmUgYWdhaW5zdCBt
dXRhdGlvbiBvZiB0aGUgTGlzdEhhc2hTZXQsIGV4Y2VwdCBmb3IKIC8vIHJlbW92YWwgb2YgdGhl
IGl0ZW0gY3VycmVudGx5IHBvaW50ZWQgdG8gYnkgYSBnaXZlbiBpdGVyYXRvci4KIAotdGVtcGxh
dGU8dHlwZW5hbWUgVmFsdWUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgSGFzaEZ1
bmN0aW9ucz4gY2xhc3MgTGlzdEhhc2hTZXQ7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZSwgdHlw
ZW5hbWUgSGFzaEZ1bmN0aW9ucz4gY2xhc3MgTGlzdEhhc2hTZXQ7CiAKLXRlbXBsYXRlPHR5cGVu
YW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIEhhc2hBcmc+IGNs
YXNzIExpc3RIYXNoU2V0SXRlcmF0b3I7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENv
bnN0SXRlcmF0b3I7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFzaEFy
Zz4gY2xhc3MgTGlzdEhhc2hTZXRJdGVyYXRvcjsKK3RlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJn
LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I7CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHk+IHN0cnVjdCBM
aXN0SGFzaFNldE5vZGU7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGlu
ZUNhcGFjaXR5PiBjbGFzcyBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZTsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaEFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZUhhc2hGdW5jdGlvbnM7CiB0ZW1wbGF0
ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yOwogCi10ZW1w
bGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gMjU2LCB0eXBl
bmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpIYXNoPiBjbGFz
cyBMaXN0SGFzaFNldCB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgdHlwZW5hbWUgSGFz
aEFyZyA9IHR5cGVuYW1lIERlZmF1bHRIYXNoPFZhbHVlQXJnPjo6SGFzaD4gY2xhc3MgTGlzdEhh
c2hTZXQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHJpdmF0ZToKLSAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGU7Ci0gICAg
dHlwZWRlZiBMaXN0SGFzaFNldE5vZGVBbGxvY2F0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5
PiBOb2RlQWxsb2NhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2RlPFZhbHVlQXJnPiBO
b2RlOwogCiAgICAgdHlwZWRlZiBIYXNoVHJhaXRzPE5vZGUqPiBOb2RlVHJhaXRzOwogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczxIYXNoQXJnPiBOb2RlSGFzaDsKQEAg
LTY0LDkgKzYyLDkgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICB0eXBlZGVmIFZhbHVlQXJnIFZh
bHVlVHlwZTsKIAotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZVR5cGUsIGlu
bGluZUNhcGFjaXR5LCBIYXNoQXJnPiBpdGVyYXRvcjsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0
Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBjb25zdF9p
dGVyYXRvcjsKLSAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVl
VHlwZSwgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+OworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJ
dGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hBcmc+IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhh
c2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlVHlwZSwgSGFzaEFyZz4gY29uc3RfaXRlcmF0b3I7Cisg
ICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcjxWYWx1ZVR5cGUsIEhhc2hB
cmc+OwogCiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+IHJldmVy
c2VfaXRlcmF0b3I7CiAgICAgdHlwZWRlZiBzdGQ6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRl
cmF0b3I+IGNvbnN0X3JldmVyc2VfaXRlcmF0b3I7CkBAIC0xNTUsMTExICsxNTMsMjIgQEAgcHJp
dmF0ZToKICAgICBIYXNoVGFibGU8Tm9kZSosIE5vZGUqLCBJZGVudGl0eUV4dHJhY3RvciwgTm9k
ZUhhc2gsIE5vZGVUcmFpdHMsIE5vZGVUcmFpdHM+IG1faW1wbDsKICAgICBOb2RlKiBtX2hlYWQ7
CiAgICAgTm9kZSogbV90YWlsOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxOb2RlQWxsb2NhdG9yPiBt
X2FsbG9jYXRvcjsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IGNsYXNzIExpc3RIYXNoU2V0Tm9kZUFsbG9jYXRvciB7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZUFyZz4gc3RydWN0IExpc3RIYXNoU2V0Tm9kZSB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0KIHB1YmxpYzoKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxW
YWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldE5v
ZGVBbGxvY2F0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5PiBOb2RlQWxsb2NhdG9yOwotCi0g
ICAgTGlzdEhhc2hTZXROb2RlQWxsb2NhdG9yKCkgCi0gICAgICAgIDogbV9mcmVlTGlzdChwb29s
KCkpCi0gICAgICAgICwgbV9pc0RvbmVXaXRoSW5pdGlhbEZyZWVMaXN0KGZhbHNlKQotICAgIHsg
Ci0gICAgICAgIG1lbXNldChtX3Bvb2wucG9vbCwgMCwgc2l6ZW9mKG1fcG9vbC5wb29sKSk7Ci0g
ICAgfQotCi0gICAgTm9kZSogYWxsb2NhdGUoKQotICAgIHsgCi0gICAgICAgIE5vZGUqIHJlc3Vs
dCA9IG1fZnJlZUxpc3Q7Ci0KLSAgICAgICAgaWYgKCFyZXN1bHQpCi0gICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Tm9kZSo+KGZhc3RNYWxsb2Moc2l6ZW9mKE5vZGUpKSk7Ci0KLSAgICAg
ICAgQVNTRVJUKCFyZXN1bHQtPm1faXNBbGxvY2F0ZWQpOwotCi0gICAgICAgIE5vZGUqIG5leHQg
PSByZXN1bHQtPm1fbmV4dDsKLSAgICAgICAgQVNTRVJUKCFuZXh0IHx8ICFuZXh0LT5tX2lzQWxs
b2NhdGVkKTsKLSAgICAgICAgaWYgKCFuZXh0ICYmICFtX2lzRG9uZVdpdGhJbml0aWFsRnJlZUxp
c3QpIHsKLSAgICAgICAgICAgIG5leHQgPSByZXN1bHQgKyAxOwotICAgICAgICAgICAgaWYgKG5l
eHQgPT0gcGFzdFBvb2woKSkgewotICAgICAgICAgICAgICAgIG1faXNEb25lV2l0aEluaXRpYWxG
cmVlTGlzdCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbmV4dCA9IDA7Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChpblBvb2wobmV4dCkpOwotICAgICAgICAg
ICAgICAgIEFTU0VSVCghbmV4dC0+bV9pc0FsbG9jYXRlZCk7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgbV9mcmVlTGlzdCA9IG5leHQ7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICB9Ci0KLSAgICB2b2lkIGRlYWxsb2NhdGUoTm9kZSogbm9kZSkgCi0gICAgewotICAg
ICAgICBpZiAoaW5Qb29sKG5vZGUpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAgICAgICAgbm9k
ZS0+bV9pc0FsbG9jYXRlZCA9IGZhbHNlOwotI2VuZGlmCi0gICAgICAgICAgICBub2RlLT5tX25l
eHQgPSBtX2ZyZWVMaXN0OwotICAgICAgICAgICAgbV9mcmVlTGlzdCA9IG5vZGU7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBmYXN0RnJlZShub2RlKTsKLSAgICB9
Ci0KLXByaXZhdGU6Ci0gICAgTm9kZSogcG9vbCgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Rf
cHRyPE5vZGUqPihtX3Bvb2wucG9vbCk7IH0KLSAgICBOb2RlKiBwYXN0UG9vbCgpIHsgcmV0dXJu
IHBvb2woKSArIG1fcG9vbFNpemU7IH0KLSAgICBib29sIGluUG9vbChOb2RlKiBub2RlKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIG5vZGUgPj0gcG9vbCgpICYmIG5vZGUgPCBwYXN0UG9vbCgpOwot
ICAgIH0KLQotICAgIE5vZGUqIG1fZnJlZUxpc3Q7Ci0gICAgYm9vbCBtX2lzRG9uZVdpdGhJbml0
aWFsRnJlZUxpc3Q7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBtX3Bvb2xTaXplID0gaW5saW5l
Q2FwYWNpdHk7Ci0gICAgdW5pb24gewotICAgICAgICBjaGFyIHBvb2xbc2l6ZW9mKE5vZGUpICog
bV9wb29sU2l6ZV07Ci0gICAgICAgIGRvdWJsZSBmb3JBbGlnbm1lbnQ7Ci0gICAgfSBtX3Bvb2w7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5
PiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlIHsKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZUFs
bG9jYXRvcjxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5vZGVBbGxvY2F0b3I7Ci0KICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIExpc3RIYXNoU2V0Tm9kZShUJiYgdmFsdWUpCiAgICAg
ICAgIDogbV92YWx1ZShzdGQ6OmZvcndhcmQ8VD4odmFsdWUpKQogICAgICAgICAsIG1fcHJldigw
KQogICAgICAgICAsIG1fbmV4dCgwKQotI2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX2lzQWxs
b2NhdGVkKHRydWUpCi0jZW5kaWYKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCogb3BlcmF0b3Ig
bmV3KHNpemVfdCwgTm9kZUFsbG9jYXRvciogYWxsb2NhdG9yKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIGFsbG9jYXRvci0+YWxsb2NhdGUoKTsKLSAgICB9Ci0gICAgdm9pZCBkZXN0cm95KE5vZGVB
bGxvY2F0b3IqIGFsbG9jYXRvcikKLSAgICB7Ci0gICAgICAgIHRoaXMtPn5MaXN0SGFzaFNldE5v
ZGUoKTsKLSAgICAgICAgYWxsb2NhdG9yLT5kZWFsbG9jYXRlKHRoaXMpOwotICAgIH0KLQogICAg
IFZhbHVlQXJnIG1fdmFsdWU7CiAgICAgTGlzdEhhc2hTZXROb2RlKiBtX3ByZXY7CiAgICAgTGlz
dEhhc2hTZXROb2RlKiBtX25leHQ7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBtX2lzQWxs
b2NhdGVkOwotI2VuZGlmCiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3Qg
TGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9ucyB7CkBAIC0yNjgsMTUgKzE3NywxNSBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBIYXNoQXJnPiBzdHJ1Y3QgTGlzdEhhCiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBmYWxzZTsKIH07CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFZhbHVlQXJnLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIEhhc2hB
cmc+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVB
cmcsIHR5cGVuYW1lIEhhc2hBcmc+IGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3IgewogcHJpdmF0
ZToKLSAgICB0eXBlZGVmIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eSwgSGFz
aEFyZz4gTGlzdEhhc2hTZXRUeXBlOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxW
YWx1ZUFyZywgaW5saW5lQ2FwYWNpdHksIEhhc2hBcmc+IGl0ZXJhdG9yOwotICAgIHR5cGVkZWYg
TGlzdEhhc2hTZXRDb25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFy
Zz4gY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldE5vZGU8VmFsdWVBcmcs
IGlubGluZUNhcGFjaXR5PiBOb2RlOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8VmFsdWVBcmcs
IEhhc2hBcmc+IExpc3RIYXNoU2V0VHlwZTsKKyAgICB0eXBlZGVmIExpc3RIYXNoU2V0SXRlcmF0
b3I8VmFsdWVBcmcsIEhhc2hBcmc+IGl0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRD
b25zdEl0ZXJhdG9yPFZhbHVlQXJnLCBIYXNoQXJnPiBjb25zdF9pdGVyYXRvcjsKKyAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZz4gTm9kZTsKICAgICB0eXBlZGVmIFZhbHVlQXJn
IFZhbHVlVHlwZTsKIAotICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1ZUFyZywgaW5s
aW5lQ2FwYWNpdHksIEhhc2hBcmc+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldDxWYWx1
ZUFyZywgSGFzaEFyZz47CiAKICAgICBMaXN0SGFzaFNldEl0ZXJhdG9yKGNvbnN0IExpc3RIYXNo
U2V0VHlwZSogc2V0LCBOb2RlKiBwb3NpdGlvbikgOiBtX2l0ZXJhdG9yKHNldCwgcG9zaXRpb24p
IHsgfQogCkBAIC0zMTUsMTYgKzIyNCwxNiBAQCBwcml2YXRlOgogICAgIGNvbnN0X2l0ZXJhdG9y
IG1faXRlcmF0b3I7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBIYXNoQXJnPiBjbGFzcyBMaXN0SGFzaFNldENvbnN0SXRl
cmF0b3IgewordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHR5cGVuYW1lIEhhc2hBcmc+IGNs
YXNzIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvciB7CiBwcml2YXRlOgotICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBMaXN0SGFzaFNldFR5
cGU7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVlQXJnLCBpbmxpbmVDYXBh
Y2l0eSwgSGFzaEFyZz4gaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRl
cmF0b3I8VmFsdWVBcmcsIGlubGluZUNhcGFjaXR5LCBIYXNoQXJnPiBjb25zdF9pdGVyYXRvcjsK
LSAgICB0eXBlZGVmIExpc3RIYXNoU2V0Tm9kZTxWYWx1ZUFyZywgaW5saW5lQ2FwYWNpdHk+IE5v
ZGU7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxWYWx1ZUFyZywgSGFzaEFyZz4gTGlzdEhhc2hT
ZXRUeXBlOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRJdGVyYXRvcjxWYWx1ZUFyZywgSGFzaEFy
Zz4gaXRlcmF0b3I7CisgICAgdHlwZWRlZiBMaXN0SGFzaFNldENvbnN0SXRlcmF0b3I8VmFsdWVB
cmcsIEhhc2hBcmc+IGNvbnN0X2l0ZXJhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXROb2Rl
PFZhbHVlQXJnPiBOb2RlOwogICAgIHR5cGVkZWYgVmFsdWVBcmcgVmFsdWVUeXBlOwogCi0gICAg
ZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0PFZhbHVlQXJnLCBpbmxpbmVDYXBhY2l0eSwgSGFzaEFy
Zz47Ci0gICAgZnJpZW5kIGNsYXNzIExpc3RIYXNoU2V0SXRlcmF0b3I8VmFsdWVBcmcsIGlubGlu
ZUNhcGFjaXR5LCBIYXNoQXJnPjsKKyAgICBmcmllbmQgY2xhc3MgTGlzdEhhc2hTZXQ8VmFsdWVB
cmcsIEhhc2hBcmc+OworICAgIGZyaWVuZCBjbGFzcyBMaXN0SGFzaFNldEl0ZXJhdG9yPFZhbHVl
QXJnLCBIYXNoQXJnPjsKIAogICAgIExpc3RIYXNoU2V0Q29uc3RJdGVyYXRvcihjb25zdCBMaXN0
SGFzaFNldFR5cGUqIHNldCwgTm9kZSogcG9zaXRpb24pCiAgICAgICAgIDogbV9zZXQoc2V0KQpA
QCAtMzkzLDg2ICszMDIsODMgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucz4KIHN0
cnVjdCBMaXN0SGFzaFNldFRyYW5zbGF0b3IgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6
aGFzaChrZXkpOyB9CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gc3RhdGlj
IGJvb2wgZXF1YWwoY29uc3QgVCYgYSwgY29uc3QgVSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9u
czo6ZXF1YWwoYS0+bV92YWx1ZSwgYik7IH0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZSBVLCB0eXBlbmFtZSBWPiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVComIGxvY2F0aW9uLCBV
JiYga2V5LCBjb25zdCBWJiBhbGxvY2F0b3IpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQqJiBsb2NhdGlvbiwg
VSYmIGtleSwgViYmKQogICAgIHsKLSAgICAgICAgbG9jYXRpb24gPSBuZXcgKGFsbG9jYXRvcikg
VChzdGQ6OmZvcndhcmQ8VT4oa2V5KSk7CisgICAgICAgIGxvY2F0aW9uID0gbmV3IFQoc3RkOjpm
b3J3YXJkPFU+KGtleSkpOwogICAgIH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Okxpc3RIYXNoU2V0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46Okxpc3RIYXNoU2V0KCkKICAgICA6IG1f
aGVhZCgwKQogICAgICwgbV90YWlsKDApCi0gICAgLCBtX2FsbG9jYXRvcihzdGQ6Om1ha2VfdW5p
cXVlPE5vZGVBbGxvY2F0b3I+KCkpCiB7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0eSwgVT46Okxpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT46
Okxpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKICAgICA6IG1faGVhZCgwKQog
ICAgICwgbV90YWlsKDApCi0gICAgLCBtX2FsbG9jYXRvcihzdGQ6Om1ha2VfdW5pcXVlPE5vZGVB
bGxvY2F0b3I+KCkpCiB7CiAgICAgZm9yIChhdXRvIGl0ID0gb3RoZXIuYmVnaW4oKSwgZW5kID0g
b3RoZXIuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgYWRkKCppdCk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlu
bGluZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT4mIExpc3RIYXNoU2V0PFQsIGlu
bGluZUNhcGFjaXR5LCBVPjo6b3BlcmF0b3I9KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgTGlzdEhhc2hTZXQ8VCwgVT4m
IExpc3RIYXNoU2V0PFQsIFU+OjpvcGVyYXRvcj0oY29uc3QgTGlzdEhhc2hTZXQmIG90aGVyKQog
ewogICAgIExpc3RIYXNoU2V0IHRtcChvdGhlcik7CiAgICAgc3dhcCh0bXApOwogICAgIHJldHVy
biAqdGhpczsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHks
IFU+Ojpzd2FwKExpc3RIYXNoU2V0JiBvdGhlcikKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6c3dhcChMaXN0SGFzaFNldCYg
b3RoZXIpCiB7CiAgICAgbV9pbXBsLnN3YXAob3RoZXIubV9pbXBsKTsKICAgICBzdGQ6OnN3YXAo
bV9oZWFkLCBvdGhlci5tX2hlYWQpOwogICAgIHN0ZDo6c3dhcChtX3RhaWwsIG90aGVyLm1fdGFp
bCk7Ci0gICAgbV9hbGxvY2F0b3Iuc3dhcChvdGhlci5tX2FsbG9jYXRvcik7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGlu
ZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46On5MaXN0SGFzaFNldCgpCit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIExpc3RIYXNoU2V0PFQsIFU+Ojp+
TGlzdEhhc2hTZXQoKQogewogICAgIGRlbGV0ZUFsbE5vZGVzKCk7CiB9CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBpbnQg
TGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpzaXplKCkgY29uc3QKK3RlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgaW50IExpc3RIYXNoU2V0PFQsIFU+Ojpz
aXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbXBsLnNpemUoKTsgCiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBp
bnQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpjYXBhY2l0eSgpIGNvbnN0Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGludCBMaXN0SGFzaFNldDxU
LCBVPjo6Y2FwYWNpdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwuY2FwYWNpdHkoKTsg
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgVT4KLWlubGluZSBib29sIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6aXNF
bXB0eSgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGJv
b2wgTGlzdEhhc2hTZXQ8VCwgVT46OmlzRW1wdHkoKSBjb25zdAogewogICAgIHJldHVybiBtX2lt
cGwuaXNFbXB0eSgpOyAKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNh
cGFjaXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6Zmlyc3QoKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGlu
ZSBUJiBMaXN0SGFzaFNldDxULCBVPjo6Zmlyc3QoKQogewogICAgIEFTU0VSVCghaXNFbXB0eSgp
KTsKICAgICByZXR1cm4gbV9oZWFkLT5tX3ZhbHVlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OnJlbW92ZUZpcnN0KCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3Zl
Rmlyc3QoKQogewogICAgIHRha2VGaXJzdCgpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBz
aXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1pbmxpbmUgVCBMaXN0SGFzaFNldDxU
LCBpbmxpbmVDYXBhY2l0eSwgVT46OnRha2VGaXJzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgoraW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgVT46OnRha2VGaXJzdCgpCiB7CiAg
ICAgQVNTRVJUKCFpc0VtcHR5KCkpOwogICAgIGF1dG8gaXQgPSBtX2ltcGwuZmluZChtX2hlYWQp
OwpAQCAtNDg0LDM1ICszOTAsMzUgQEAgaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2Fw
YWNpdHksIAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNp
emVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBjb25zdCBUJiBMaXN0SGFz
aFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmZpcnN0KCkgY29uc3QKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgY29uc3QgVCYgTGlzdEhhc2hTZXQ8VCwgVT46OmZp
cnN0KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1faGVh
ZC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFj
aXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIFQmIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5
LCBVPjo6bGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIFQm
IExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAg
ICAgcmV0dXJuIG1fdGFpbC0+bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIGNvbnN0IFQmIExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6bGFzdCgpIGNvbnN0Cit0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIGNvbnN0IFQmIExpc3RIYXNoU2V0PFQsIFU+OjpsYXN0
KCkgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIG1fdGFpbC0+
bV92YWx1ZTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5
LCB0eXBlbmFtZSBVPgotaW5saW5lIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHks
IFU+OjpyZW1vdmVMYXN0KCkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Citpbmxp
bmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6cmVtb3ZlTGFzdCgpCiB7CiAgICAgdGFrZUxhc3Qo
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBVPgotaW5saW5lIFQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojp0YWtl
TGFzdCgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5saW5lIFQgTGlzdEhh
c2hTZXQ8VCwgVT46OnRha2VMYXN0KCkKIHsKICAgICBBU1NFUlQoIWlzRW1wdHkoKSk7CiAgICAg
YXV0byBpdCA9IG1faW1wbC5maW5kKG1fdGFpbCk7CkBAIC01MjQsOCArNDMwLDggQEAgaW5saW5l
IFQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIAogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUg
VT4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6ZmluZChj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KK2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjpmaW5kKGNvbnN0IFZh
bHVlVHlwZSYgdmFsdWUpIC0+IGl0ZXJhdG9yCiB7CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1w
bGF0ZSBmaW5kPEJhc2VUcmFuc2xhdG9yPih2YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1faW1wbC5l
bmQoKSkKQEAgLTUzMyw4ICs0MzksOCBAQCBpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxULCBpbmxp
bmVDYXBhY2l0CiAgICAgcmV0dXJuIG1ha2VJdGVyYXRvcigqaXQpOyAKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotaW5saW5lIGF1
dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjpmaW5kKGNvbnN0IFZhbHVlVHlw
ZSYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPgoraW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OmZpbmQoY29uc3QgVmFs
dWVUeXBlJiB2YWx1ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0g
bV9pbXBsLnRlbXBsYXRlIGZpbmQ8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsKICAgICBpZiAoaXQg
PT0gbV9pbXBsLmVuZCgpKQpAQCAtNTQ4LDkgKzQ1NCw5IEBAIHN0cnVjdCBMaXN0SGFzaFNldFRy
YW5zbGF0b3JBZGFwdGVyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBUJiBhLCBjb25zdCBVJiBiKSB7IHJldHVybiBUcmFuc2xh
dG9yOjplcXVhbChhLT5tX3ZhbHVlLCBiKTsgfQogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgVmFs
dWVUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBIYXNoVHJhbnNsYXRvcj4KLWlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgaW5s
aW5lQ2FwYWNpdHksIFU+OjpmaW5kKGNvbnN0IFQmIHZhbHVlKSAtPiBpdGVyYXRvcgoraW5saW5l
IGF1dG8gTGlzdEhhc2hTZXQ8VmFsdWVUeXBlLCBVPjo6ZmluZChjb25zdCBUJiB2YWx1ZSkgLT4g
aXRlcmF0b3IKIHsKICAgICBhdXRvIGl0ID0gbV9pbXBsLnRlbXBsYXRlIGZpbmQ8TGlzdEhhc2hT
ZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVlKTsKICAgICBpZiAoaXQg
PT0gbV9pbXBsLmVuZCgpKQpAQCAtNTU4LDkgKzQ2NCw5IEBAIGlubGluZSBhdXRvIExpc3RIYXNo
U2V0PFZhbHVlVHlwZSwgaW5saW4KICAgICByZXR1cm4gbWFrZUl0ZXJhdG9yKCppdCk7CiB9CiAK
LXRlbXBsYXRlPHR5cGVuYW1lIFZhbHVlVHlwZSwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBVPgordGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCB0eXBlbmFtZSBVPgogdGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgSGFzaFRyYW5zbGF0b3I+Ci1pbmxpbmUgYXV0byBMaXN0
SGFzaFNldDxWYWx1ZVR5cGUsIGlubGluZUNhcGFjaXR5LCBVPjo6ZmluZChjb25zdCBUJiB2YWx1
ZSkgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVl
VHlwZSwgVT46OmZpbmQoY29uc3QgVCYgdmFsdWUpIGNvbnN0IC0+IGNvbnN0X2l0ZXJhdG9yCiB7
CiAgICAgYXV0byBpdCA9IG1faW1wbC50ZW1wbGF0ZSBmaW5kPExpc3RIYXNoU2V0VHJhbnNsYXRv
ckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1faW1wbC5l
bmQoKSkKQEAgLTU2OCw0MSArNDc0LDQxIEBAIGlubGluZSBhdXRvIExpc3RIYXNoU2V0PFZhbHVl
VHlwZSwgaW5saW4KICAgICByZXR1cm4gbWFrZUNvbnN0SXRlcmF0b3IoKml0KTsKIH0KIAotdGVt
cGxhdGU8dHlwZW5hbWUgVmFsdWVUeXBlLCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1l
IFU+Cit0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIFU+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBIYXNoVHJhbnNsYXRvcj4KLWlubGluZSBib29sIExpc3RIYXNo
U2V0PFZhbHVlVHlwZSwgaW5saW5lQ2FwYWNpdHksIFU+Ojpjb250YWlucyhjb25zdCBUJiB2YWx1
ZSkgY29uc3QKK2lubGluZSBib29sIExpc3RIYXNoU2V0PFZhbHVlVHlwZSwgVT46OmNvbnRhaW5z
KGNvbnN0IFQmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxhdGUgY29u
dGFpbnM8TGlzdEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjxIYXNoVHJhbnNsYXRvcj4+KHZhbHVl
KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBl
bmFtZSBVPgotaW5saW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojpj
b250YWlucyhjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIExpc3RIYXNoU2V0PFQsIFU+Ojpjb250YWlucyhj
b25zdCBWYWx1ZVR5cGUmIHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBtX2ltcGwudGVtcGxh
dGUgY29udGFpbnM8QmFzZVRyYW5zbGF0b3I+KHZhbHVlKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNl
dDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmFkZChjb25zdCBWYWx1ZVR5cGUmIHZhbHVlKSAtPiBB
ZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CithdXRvIExpc3RIYXNo
U2V0PFQsIFU+OjphZGQoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7Ci0g
ICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2YWx1
ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRl
IGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkKICAgICAgICAgYXBwZW5kTm9kZSgqcmVzdWx0Lml0ZXJhdG9yKTsKICAgICByZXR1
cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3
RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHks
IHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6YWRk
KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CithdXRvIExpc3RIYXNoU2V0PFQsIFU+OjphZGQoVmFsdWVUeXBlJiYgdmFsdWUp
IC0+IEFkZFJlc3VsdAogewotICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxC
YXNlVHJhbnNsYXRvcj4oV1RGOjptb3ZlKHZhbHVlKSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4oV1RGOjpt
b3ZlKHZhbHVlKSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQogICAgICAg
ICBhcHBlbmROb2RlKCpyZXN1bHQuaXRlcmF0b3IpOwogICAgIHJldHVybiBBZGRSZXN1bHQobWFr
ZUl0ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWF1
dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjphcHBlbmRPck1vdmVUb0xhc3Qo
Y29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVPgorYXV0byBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kT3JNb3ZlVG9MYXN0
KGNvbnN0IFZhbHVlVHlwZSYgdmFsdWUpIC0+IEFkZFJlc3VsdAogewotICAgIGF1dG8gcmVzdWx0
ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG1fYWxsb2NhdG9y
LmdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5z
bGF0b3I+KHZhbHVlLCBudWxscHRyKTsKICAgICBOb2RlKiBub2RlID0gKnJlc3VsdC5pdGVyYXRv
cjsKICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICB1bmxpbmsobm9kZSk7CkBA
IC02MTEsMTAgKzUxNywxMCBAQCBhdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBV
Pjo6CiAgICAgcmV0dXJuIEFkZFJlc3VsdChtYWtlSXRlcmF0b3IoKnJlc3VsdC5pdGVyYXRvciks
IHJlc3VsdC5pc05ld0VudHJ5KTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlu
bGluZUNhcGFjaXR5LCB0eXBlbmFtZSBVPgotYXV0byBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBh
Y2l0eSwgVT46OmFwcGVuZE9yTW92ZVRvTGFzdChWYWx1ZVR5cGUmJiB2YWx1ZSkgLT4gQWRkUmVz
dWx0Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYXV0byBMaXN0SGFzaFNldDxU
LCBVPjo6YXBwZW5kT3JNb3ZlVG9MYXN0KFZhbHVlVHlwZSYmIHZhbHVlKSAtPiBBZGRSZXN1bHQK
IHsKLSAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+
KFdURjo6bW92ZSh2YWx1ZSksIG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1ZSksIG51
bGxwdHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0ZXJhdG9yOwogICAgIGlmICghcmVz
dWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHVubGluayhub2RlKTsKQEAgLTYyMywxMCArNTI5LDEw
IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoKICAgICByZXR1cm4g
QWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50
cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5
cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cHJlcGVu
ZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0Cit0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYXV0byBMaXN0SGFzaFNldDxULCBVPjo6cHJl
cGVuZE9yTW92ZVRvRmlyc3QoY29uc3QgVmFsdWVUeXBlJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiB7
Ci0gICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VUcmFuc2xhdG9yPih2
YWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0ID0gbV9pbXBsLnRlbXBs
YXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4odmFsdWUsIG51bGxwdHIpOwogICAgIE5vZGUqIG5vZGUg
PSAqcmVzdWx0Lml0ZXJhdG9yOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAg
IHVubGluayhub2RlKTsKQEAgLTYzNSwxMCArNTQxLDEwIEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwg
aW5saW5lQ2FwYWNpdHksIFU+OjoKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigq
cmVzdWx0Lml0ZXJhdG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNo
U2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cHJlcGVuZE9yTW92ZVRvRmlyc3QoVmFsdWVUeXBl
JiYgdmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
K2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46OnByZXBlbmRPck1vdmVUb0ZpcnN0KFZhbHVlVHlwZSYm
IHZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0
ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZSh2YWx1ZSksIG1fYWxsb2NhdG9yLmdldCgp
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+
KFdURjo6bW92ZSh2YWx1ZSksIG51bGxwdHIpOwogICAgIE5vZGUqIG5vZGUgPSAqcmVzdWx0Lml0
ZXJhdG9yOwogICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHVubGluayhub2Rl
KTsKQEAgLTY0NywzOCArNTUzLDM4IEBAIGF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNp
dHksIFU+OjoKICAgICByZXR1cm4gQWRkUmVzdWx0KG1ha2VJdGVyYXRvcigqcmVzdWx0Lml0ZXJh
dG9yKSwgcmVzdWx0LmlzTmV3RW50cnkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXpl
X3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1hdXRvIExpc3RIYXNoU2V0PFQsIGlubGlu
ZUNhcGFjaXR5LCBVPjo6aW5zZXJ0QmVmb3JlKGNvbnN0IFZhbHVlVHlwZSYgYmVmb3JlVmFsdWUs
IGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShj
b25zdCBWYWx1ZVR5cGUmIGJlZm9yZVZhbHVlLCBjb25zdCBWYWx1ZVR5cGUmIG5ld1ZhbHVlKSAt
PiBBZGRSZXN1bHQKIHsKICAgICByZXR1cm4gaW5zZXJ0QmVmb3JlKGZpbmQoYmVmb3JlVmFsdWUp
LCBuZXdWYWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBh
Y2l0eSwgdHlwZW5hbWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+
OjppbnNlcnRCZWZvcmUoY29uc3QgVmFsdWVUeXBlJiBiZWZvcmVWYWx1ZSwgVmFsdWVUeXBlJiYg
bmV3VmFsdWUpIC0+IEFkZFJlc3VsdAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
K2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46Omluc2VydEJlZm9yZShjb25zdCBWYWx1ZVR5cGUmIGJl
Zm9yZVZhbHVlLCBWYWx1ZVR5cGUmJiBuZXdWYWx1ZSkgLT4gQWRkUmVzdWx0CiB7CiAgICAgcmV0
dXJuIGluc2VydEJlZm9yZShmaW5kKGJlZm9yZVZhbHVlKSwgV1RGOjptb3ZlKG5ld1ZhbHVlKSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgVT4KLWF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZv
cmUoaXRlcmF0b3IgaXQsIGNvbnN0IFZhbHVlVHlwZSYgbmV3VmFsdWUpIC0+IEFkZFJlc3VsdAor
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2F1dG8gTGlzdEhhc2hTZXQ8VCwgVT46
Omluc2VydEJlZm9yZShpdGVyYXRvciBpdCwgY29uc3QgVmFsdWVUeXBlJiBuZXdWYWx1ZSkgLT4g
QWRkUmVzdWx0CiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX2ltcGwudGVtcGxhdGUgYWRkPEJhc2VU
cmFuc2xhdG9yPihuZXdWYWx1ZSwgbV9hbGxvY2F0b3IuZ2V0KCkpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9pbXBsLnRlbXBsYXRlIGFkZDxCYXNlVHJhbnNsYXRvcj4obmV3VmFsdWUsIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShp
dC5ub2RlKCksICpyZXN1bHQuaXRlcmF0b3IpOwogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0
ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWF1dG8g
TGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjppbnNlcnRCZWZvcmUoaXRlcmF0b3Ig
aXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKK3RlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIFU+CithdXRvIExpc3RIYXNoU2V0PFQsIFU+OjppbnNlcnRCZWZvcmUoaXRl
cmF0b3IgaXQsIFZhbHVlVHlwZSYmIG5ld1ZhbHVlKSAtPiBBZGRSZXN1bHQKIHsKLSAgICBhdXRv
IHJlc3VsdCA9IG1faW1wbC50ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZShu
ZXdWYWx1ZSksIG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1faW1wbC50
ZW1wbGF0ZSBhZGQ8QmFzZVRyYW5zbGF0b3I+KFdURjo6bW92ZShuZXdWYWx1ZSksIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShp
dC5ub2RlKCksICpyZXN1bHQuaXRlcmF0b3IpOwogICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUl0
ZXJhdG9yKCpyZXN1bHQuaXRlcmF0b3IpLCByZXN1bHQuaXNOZXdFbnRyeSk7CiB9CiAKLXRlbXBs
YXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGlu
ZSBib29sIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cmVtb3ZlKGl0ZXJhdG9y
IGl0KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK2lubGluZSBib29sIExpc3RI
YXNoU2V0PFQsIFU+OjpyZW1vdmUoaXRlcmF0b3IgaXQpCiB7CiAgICAgaWYgKGl0ID09IGVuZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC02ODcsMTQgKzU5MywxNCBAQCBpbmxpbmUgYm9v
bCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXRl
bXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlu
bGluZSBib29sIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6cmVtb3ZlKGNvbnN0
IFZhbHVlVHlwZSYgdmFsdWUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgoraW5s
aW5lIGJvb2wgTGlzdEhhc2hTZXQ8VCwgVT46OnJlbW92ZShjb25zdCBWYWx1ZVR5cGUmIHZhbHVl
KQogewogICAgIHJldHVybiByZW1vdmUoZmluZCh2YWx1ZSkpOwogfQogCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci1pbmxpbmUgdm9pZCBM
aXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46OmNsZWFyKCkKK3RlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgdm9pZCBMaXN0SGFzaFNldDxULCBVPjo6Y2xlYXIo
KQogewogICAgIGRlbGV0ZUFsbE5vZGVzKCk7CiAgICAgbV9pbXBsLmNsZWFyKCk7IApAQCAtNzAy
LDggKzYwOCw4IEBAIGlubGluZSB2b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXQKICAg
ICBtX3RhaWwgPSAwOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBV
Pjo6dW5saW5rKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgor
dm9pZCBMaXN0SGFzaFNldDxULCBVPjo6dW5saW5rKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFu
b2RlLT5tX3ByZXYpIHsKICAgICAgICAgQVNTRVJUKG5vZGUgPT0gbV9oZWFkKTsKQEAgLTcyMiwx
NSArNjI4LDE1IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoKICAg
ICB9CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlw
ZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+Ojp1bmxpbmtB
bmREZWxldGUoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cit2
b2lkIExpc3RIYXNoU2V0PFQsIFU+Ojp1bmxpbmtBbmREZWxldGUoTm9kZSogbm9kZSkKIHsKICAg
ICB1bmxpbmsobm9kZSk7Ci0gICAgbm9kZS0+ZGVzdHJveShtX2FsbG9jYXRvci5nZXQoKSk7Cisg
ICAgZGVsZXRlIG5vZGU7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVD
YXBhY2l0eSwgdHlwZW5hbWUgVT4KLXZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHks
IFU+OjphcHBlbmROb2RlKE5vZGUqIG5vZGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPgordm9pZCBMaXN0SGFzaFNldDxULCBVPjo6YXBwZW5kTm9kZShOb2RlKiBub2RlKQogewog
ICAgIG5vZGUtPm1fcHJldiA9IG1fdGFpbDsKICAgICBub2RlLT5tX25leHQgPSAwOwpAQCAtNzQ2
LDggKzY1Miw4IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoKICAg
ICBtX3RhaWwgPSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5saW5l
Q2FwYWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5
LCBVPjo6cHJlcGVuZE5vZGUoTm9kZSogbm9kZSkKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFU+Cit2b2lkIExpc3RIYXNoU2V0PFQsIFU+OjpwcmVwZW5kTm9kZShOb2RlKiBub2RlKQog
ewogICAgIG5vZGUtPm1fcHJldiA9IDA7CiAgICAgbm9kZS0+bV9uZXh0ID0gbV9oZWFkOwpAQCAt
NzYwLDggKzY2Niw4IEBAIHZvaWQgTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjoK
ICAgICBtX2hlYWQgPSBub2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBULCBzaXplX3QgaW5s
aW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFj
aXR5LCBVPjo6aW5zZXJ0Tm9kZUJlZm9yZShOb2RlKiBiZWZvcmVOb2RlLCBOb2RlKiBuZXdOb2Rl
KQordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwg
VT46Omluc2VydE5vZGVCZWZvcmUoTm9kZSogYmVmb3JlTm9kZSwgTm9kZSogbmV3Tm9kZSkKIHsK
ICAgICBpZiAoIWJlZm9yZU5vZGUpCiAgICAgICAgIHJldHVybiBhcHBlbmROb2RlKG5ld05vZGUp
OwpAQCAtNzc2LDI0ICs2ODIsMjQgQEAgdm9pZCBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0
eSwgVT46OgogICAgICAgICBtX2hlYWQgPSBuZXdOb2RlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBULCBzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIFU+Ci12b2lkIExpc3RIYXNoU2V0
PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6ZGVsZXRlQWxsTm9kZXMoKQordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgVT4KK3ZvaWQgTGlzdEhhc2hTZXQ8VCwgVT46OmRlbGV0ZUFsbE5vZGVz
KCkKIHsKICAgICBpZiAoIW1faGVhZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChOb2Rl
KiBub2RlID0gbV9oZWFkLCAqbmV4dCA9IG1faGVhZC0+bV9uZXh0OyBub2RlOyBub2RlID0gbmV4
dCwgbmV4dCA9IG5vZGUgPyBub2RlLT5tX25leHQgOiAwKQotICAgICAgICBub2RlLT5kZXN0cm95
KG1fYWxsb2NhdG9yLmdldCgpKTsKKyAgICAgICAgZGVsZXRlIG5vZGU7CiB9CiAKLXRlbXBsYXRl
PHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgVT4KLWlubGluZSBh
dXRvIExpc3RIYXNoU2V0PFQsIGlubGluZUNhcGFjaXR5LCBVPjo6bWFrZUl0ZXJhdG9yKE5vZGUq
IHBvc2l0aW9uKSAtPiBpdGVyYXRvcgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4K
K2lubGluZSBhdXRvIExpc3RIYXNoU2V0PFQsIFU+OjptYWtlSXRlcmF0b3IoTm9kZSogcG9zaXRp
b24pIC0+IGl0ZXJhdG9yCiB7CiAgICAgcmV0dXJuIGl0ZXJhdG9yKHRoaXMsIHBvc2l0aW9uKTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVCwgc2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFt
ZSBVPgotaW5saW5lIGF1dG8gTGlzdEhhc2hTZXQ8VCwgaW5saW5lQ2FwYWNpdHksIFU+OjptYWtl
Q29uc3RJdGVyYXRvcihOb2RlKiBwb3NpdGlvbikgY29uc3QgLT4gY29uc3RfaXRlcmF0b3IKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CitpbmxpbmUgYXV0byBMaXN0SGFzaFNldDxU
LCBVPjo6bWFrZUNvbnN0SXRlcmF0b3IoTm9kZSogcG9zaXRpb24pIGNvbnN0IC0+IGNvbnN0X2l0
ZXJhdG9yCiB7IAogICAgIHJldHVybiBjb25zdF9pdGVyYXRvcih0aGlzLCBwb3NpdGlvbik7CiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNzYyNzQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxNC0xMS0xOCAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZWQgdGhlIGN1c3Rv
bSBhbGxvY2F0b3IgZm9yIExpc3RIYXNoU2V0IG5vZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg4NDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2VzIG9mIExpc3RIYXNoU2V0IG5vIGxvbmdlciBu
ZWVkIHRvIGRlY2xhcmUgYW4gaW5saW5lIGNhcGFjaXR5LAorICAgICAgICBzaW5jZSB0aGF0IHdh
cyBvbmx5IHVzZWQgdG8gc3BlY2lmeSB0aGUgY2FwYWNpdHkgb2YgdGhlIGN1c3RvbSBhbGxvY2F0
b3IuCisKKyAgICAgICAgKiBkb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudEV2ZW50UXVldWUuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5oOgorICAgICAgICAqIGRvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmg6Cisg
ICAgICAgICogaHRtbC9Gb3JtQ29udHJvbGxlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9GbG9h
dGluZ09iamVjdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKwogMjAx
NC0xMS0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgaU9TIGJ1aWxkIGZpeApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
RE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCShyZXZpc2lvbiAxNzYwMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw3
ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgc3RydWN0IERPTU5hbWVkRmxvd0hhc2hGdW5jdGlvbnM7
CiAgICAgc3RydWN0IERPTU5hbWVkRmxvd0hhc2hUcmFuc2xhdG9yOwogCi0gICAgdHlwZWRlZiBM
aXN0SGFzaFNldDxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiwgMSwgRE9NTmFtZWRGbG93SGFzaEZ1
bmN0aW9ucz4gRE9NTmFtZWRGbG93U2V0OworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRy
PFdlYktpdE5hbWVkRmxvdz4sIERPTU5hbWVkRmxvd0hhc2hGdW5jdGlvbnM+IERPTU5hbWVkRmxv
d1NldDsKICAgICBleHBsaWNpdCBET01OYW1lZEZsb3dDb2xsZWN0aW9uKGNvbnN0IFZlY3RvcjxX
ZWJLaXROYW1lZEZsb3cqPiYpOwogICAgIERPTU5hbWVkRmxvd1NldCBtX25hbWVkRmxvd3M7CiB9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEV2ZW50UXVldWUuaAkocmV2aXNpb24g
MTc2MDI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RXZlbnRRdWV1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIHByaXZhdGU6CiAKICAgICBEb2N1bWVudCYgbV9k
b2N1bWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1fcGVuZGluZ0V2ZW50VGltZXI7
Ci0gICAgTGlzdEhhc2hTZXQ8UmVmUHRyPEV2ZW50PiwgMTY+IG1fcXVldWVkRXZlbnRzOworICAg
IExpc3RIYXNoU2V0PFJlZlB0cjxFdmVudD4+IG1fcXVldWVkRXZlbnRzOwogICAgIEhhc2hTZXQ8
Tm9kZSo+IG1fbm9kZXNXaXRoUXVldWVkU2Nyb2xsRXZlbnRzOwogICAgIGJvb2wgbV9pc0Nsb3Nl
ZDsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDE3NjAyNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsK
ICAgICBVcGRhdGVGbGFnIG1fcGVuZGluZ1VwZGF0ZVR5cGU7CiAKLSAgICB0eXBlZGVmIExpc3RI
YXNoU2V0PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OworICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSo+IFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDsK
ICAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQgbV9zdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZXM7CiAKICAgICBTdHJpbmcgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAkocmV2aXNpb24gMTc2MDI2
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHN0cnVjdCBOYW1lZEZsb3dIYXNo
RnVuY3Rpb25zOwogICAgIHN0cnVjdCBOYW1lZEZsb3dIYXNoVHJhbnNsYXRvcjsKIAotICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8V2ViS2l0TmFtZWRGbG93KiwgMSwgTmFtZWRGbG93SGFzaEZ1bmN0
aW9ucz4gTmFtZWRGbG93U2V0OworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8V2ViS2l0TmFtZWRG
bG93KiwgTmFtZWRGbG93SGFzaEZ1bmN0aW9ucz4gTmFtZWRGbG93U2V0OwogCiAgICAgZXhwbGlj
aXQgTmFtZWRGbG93Q29sbGVjdGlvbihEb2N1bWVudCopOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0Zvcm1Db250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9Gb3JtQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNzYwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0Zvcm1Db250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBnZXRSZWZlcmVu
Y2VkRmlsZVBhdGhzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzdGF0ZVZlY3Rvcik7CiAKIHByaXZh
dGU6Ci0gICAgdHlwZWRlZiBMaXN0SGFzaFNldDxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVu
dFdpdGhTdGF0ZT4sIDY0PiBGb3JtRWxlbWVudExpc3RIYXNoU2V0OworICAgIHR5cGVkZWYgTGlz
dEhhc2hTZXQ8UmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnRXaXRoU3RhdGU+PiBGb3JtRWxl
bWVudExpc3RIYXNoU2V0OwogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5n
SW1wbD4sIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZT4+IFNhdmVkRm9ybVN0YXRlTWFw
OwogCiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTYXZlZEZvcm1TdGF0ZU1hcD4gY3JlYXRl
U2F2ZWRGb3JtU3RhdGVNYXAoY29uc3QgRm9ybUVsZW1lbnRMaXN0SGFzaFNldCYpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GbG9hdGluZ09iamVjdHMuaAkocmV2aXNpb24gMTc2
MDI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zsb2F0aW5nT2JqZWN0cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgc3RydWN0IEZsb2F0aW5nT2JqZWN0SGFzaFRy
YW5zbGF0b3IgewogICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxG
bG9hdGluZ09iamVjdD4mIGEsIGNvbnN0IEZsb2F0aW5nT2JqZWN0JiBiKSB7IHJldHVybiAmYS0+
cmVuZGVyZXIoKSA9PSAmYi5yZW5kZXJlcigpOyB9CiB9OwogCi10eXBlZGVmIExpc3RIYXNoU2V0
PHN0ZDo6dW5pcXVlX3B0cjxGbG9hdGluZ09iamVjdD4sIDQsIEZsb2F0aW5nT2JqZWN0SGFzaEZ1
bmN0aW9ucz4gRmxvYXRpbmdPYmplY3RTZXQ7Cit0eXBlZGVmIExpc3RIYXNoU2V0PHN0ZDo6dW5p
cXVlX3B0cjxGbG9hdGluZ09iamVjdD4sIEZsb2F0aW5nT2JqZWN0SGFzaEZ1bmN0aW9ucz4gRmxv
YXRpbmdPYmplY3RTZXQ7CiAKIHR5cGVkZWYgUE9ESW50ZXJ2YWw8TGF5b3V0VW5pdCwgRmxvYXRp
bmdPYmplY3QqPiBGbG9hdGluZ09iamVjdEludGVydmFsOwogdHlwZWRlZiBQT0RJbnRlcnZhbFRy
ZWU8TGF5b3V0VW5pdCwgRmxvYXRpbmdPYmplY3QqPiBGbG9hdGluZ09iamVjdFRyZWU7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkocmV2aXNpb24gMTc2MDI2KQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIHN0cnVjdCBCaWRpUnVuOwogc3Ry
dWN0IFBhaW50SW5mbzsKIAotdHlwZWRlZiBXVEY6Okxpc3RIYXNoU2V0PFJlbmRlckJveCosIDE2
PiBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDsKK3R5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxS
ZW5kZXJCb3gqPiBUcmFja2VkUmVuZGVyZXJMaXN0SGFzaFNldDsKIHR5cGVkZWYgV1RGOjpIYXNo
TWFwPGNvbnN0IFJlbmRlckJsb2NrKiwgc3RkOjp1bmlxdWVfcHRyPFRyYWNrZWRSZW5kZXJlckxp
c3RIYXNoU2V0Pj4gVHJhY2tlZERlc2NlbmRhbnRzTWFwOwogdHlwZWRlZiBXVEY6Okhhc2hNYXA8
Y29uc3QgUmVuZGVyQm94Kiwgc3RkOjp1bmlxdWVfcHRyPEhhc2hTZXQ8UmVuZGVyQmxvY2sqPj4+
IFRyYWNrZWRDb250YWluZXJNYXA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3NjI3NCkK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDE0LTExLTE4ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVtb3ZlZCB0aGUgY3VzdG9tIGFsbG9jYXRvciBmb3IgTGlzdEhhc2hTZXQgbm9kZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODg0MQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZXMgb2Yg
TGlzdEhhc2hTZXQgbm8gbG9uZ2VyIG5lZWQgdG8gZGVjbGFyZSBhbiBpbmxpbmUgY2FwYWNpdHks
CisgICAgICAgIHNpbmNlIHRoYXQgd2FzIG9ubHkgdXNlZCB0byBzcGVjaWZ5IHRoZSBjYXBhY2l0
eSBvZiB0aGUgY3VzdG9tIGFsbG9jYXRvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkluZm9TdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkluZm9TdG9yZTo6
bG9hZFBsdWdpbnNJZk5lY2Vzc2FyeSk6CisKIDIwMTQtMTEtMTggIENvbW1pdCBRdWV1ZSAgPGNv
bW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxNzYyNjQuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5J
bmZvU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkluZm9TdG9yZS5jcHAJKHJldmlzaW9uIDE3NjAyNikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkluZm9TdG9yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBQbHVnaW5JbmZvU3RvcmU6OmxvYWRQbHVnaW5zSWZOZWNl
cwogICAgIGlmIChtX3BsdWdpbkxpc3RJc1VwVG9EYXRlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBMaXN0SGFzaFNldDxTdHJpbmcsIDMyPiB1bmlxdWVQbHVnaW5QYXRoczsKKyAgICBMaXN0SGFz
aFNldDxTdHJpbmc+IHVuaXF1ZVBsdWdpblBhdGhzOwogCiAgICAgLy8gRmlyc3QsIGxvYWQgcGx1
Zy1pbnMgZnJvbSB0aGUgYWRkaXRpb25hbCBwbHVnLWlucyBkaXJlY3RvcmllcyBzcGVjaWZpZWQu
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FkZGl0aW9uYWxQbHVnaW5zRGlyZWN0b3Jp
ZXMuc2l6ZSgpOyArK2kpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBv
cnRzLmRlZi5pbgkocmV2aXNpb24gMTc2MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4
cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTI1OSw3ICsyNTksNiBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9wYWdlTnVtYmVyRm9yRWxlbWVudEBQcmludENvbnRleHRAV2ViQ29yZUBAU0FIUEFWRWxl
bWVudEAyQEFCVkZsb2F0U2l6ZUAyQEBaLCA/cGFnZU51bWJlckZvckVsZW1lbnRAUHJpbnRDb250
ZXh0QFdlYkNvcmVAQFNBSFBFQVZFbGVtZW50QDJAQUVCVkZsb2F0U2l6ZUAyQEBaKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/cGFpbnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVA
QEFBRVhYWiwgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1lVmlld0BXZWJDb3JlQEBBRUFBWFhaKQog
ICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4
dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RG
QEBQQVZDb250YWluZXJOb2RlQDJASEhfTkBaLCA/cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhA
VGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJDb3JlQEBA
V1RGQEBQRUFWQ29udGFpbmVyTm9kZUAyQEhIX05AWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoP3JlY3RCYXNlZFRlc3RSZXN1bHRASGl0VGVzdFJlc3VsdEBXZWJDb3JlQEBRQkVBQlY/JExp
c3RIYXNoU2V0QFY/JFJlZlB0ckBWTm9kZUBXZWJDb3JlQEBAV1RGQEAkMEJBQUBVPyRQdHJIYXNo
QFY/JFJlZlB0ckBWTm9kZUBXZWJDb3JlQEBAV1RGQEBAMkBAV1RGQEBYWiwgP3JlY3RCYXNlZFRl
c3RSZXN1bHRASGl0VGVzdFJlc3VsdEBXZWJDb3JlQEBRRUJBQUVCVj8kTGlzdEhhc2hTZXRAVj8k
UmVmUHRyQFZOb2RlQFdlYkNvcmVAQEBXVEZAQCQwQkFBQFU/JFB0ckhhc2hAVj8kUmVmUHRyQFZO
b2RlQFdlYkNvcmVAQEBXVEZAQEAyQEBXVEZAQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/cmVjdEZvclBvaW50QEhpdFRlc3RMb2NhdGlvbkBXZWJDb3JlQEBTQT9BVkludFJlY3RAMkBB
QlZMYXlvdXRQb2ludEAyQElJSUlAWiwgP3JlY3RGb3JQb2ludEBIaXRUZXN0TG9jYXRpb25AV2Vi
Q29yZUBAU0E/QVZJbnRSZWN0QDJAQUVCVkxheW91dFBvaW50QDJASUlJSUBaKQogICAgICAgICBz
eW1ib2xXaXRoUG9pbnRlcig/cmVsb2FkQEZyYW1lTG9hZGVyQFdlYkNvcmVAQFFBRVhfTkBaLCA/
cmVsb2FkQEZyYW1lTG9hZGVyQFdlYkNvcmVAQFFFQUFYX05AWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3JlbW92ZUBTdHJpbmdAV1RGQEBRQUVYSUhAWiwgP3JlbW92ZUBTdHJpbmdAV1RG
QEBRRUFBWElIQFopCg==
</data>
<flag name="review"
          id="266686"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>