<?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>158596</bug_id>
          
          <creation_ts>2016-06-09 18:51:51 -0700</creation_ts>
          <short_desc>Introduce WTF::UniqueRef</short_desc>
          <delta_ts>2016-06-10 14:24:41 -0700</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>WebKit 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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1201080</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 18:51:51 -0700</bug_when>
    <thetext>Introduce WTF::Unique</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201089</commentid>
    <comment_count>1</comment_count>
      <attachid>280974</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 19:10:28 -0700</bug_when>
    <thetext>Created attachment 280974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201091</commentid>
    <comment_count>2</comment_count>
      <attachid>280975</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 19:16:21 -0700</bug_when>
    <thetext>Created attachment 280975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201120</commentid>
    <comment_count>3</comment_count>
      <attachid>280983</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 20:20:34 -0700</bug_when>
    <thetext>Created attachment 280983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201122</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 20:21:22 -0700</bug_when>
    <thetext>I like the idea of this class, but I’m not sure I’m comfortable with the name Unique.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201123</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-09 20:21:41 -0700</bug_when>
    <thetext>Maybe UniqueRef by analogy with unique_ptr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201148</commentid>
    <comment_count>6</comment_count>
      <attachid>280990</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 22:09:09 -0700</bug_when>
    <thetext>Created attachment 280990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201162</commentid>
    <comment_count>7</comment_count>
      <attachid>280994</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 22:21:56 -0700</bug_when>
    <thetext>Created attachment 280994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201180</commentid>
    <comment_count>8</comment_count>
      <attachid>280997</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 23:26:05 -0700</bug_when>
    <thetext>Created attachment 280997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201187</commentid>
    <comment_count>9</comment_count>
      <attachid>280999</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-09 23:55:43 -0700</bug_when>
    <thetext>Created attachment 280999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201215</commentid>
    <comment_count>10</comment_count>
      <attachid>280999</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-06-10 05:36:18 -0700</bug_when>
    <thetext>Comment on attachment 280999
Patch

I see the point: you have to use something like std::unique_ptr here, and having a type to indicate it can never be null seems useful. I just wonder if the actual benefit would be worth the cost of having one more type of Ref to learn and understand. Probably; converting pointer member variables to refs elsewhere in the code has had big readability benefits. Shame there&apos;s no standard solution for this.

Agreed with Darin that the name is not good, a &quot;unique ref&quot; sounds like something that shouldn&apos;t be refcounted. It&apos;s hard to name though... &quot;NonintrusiveRef&quot; is not great, but it&apos;s the best I can think of. &quot;NonnullUniquePtr&quot; is awkward but clear. Alternatively we could try to think of a name that indicates its purpose for holding values of polymorphic type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1201387</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-10 14:24:41 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/201941</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280974</attachid>
            <date>2016-06-09 19:10:28 -0700</date>
            <delta_ts>2016-06-09 19:16:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158596-20160609191157.patch</filename>
            <type>text/plain</type>
            <size>25437</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVEY6OlVu
aXF1ZSBpcyBsaWtlIGEgc3RkOjp1bmlxdWVfcHRyIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBu
b24tbnVsbC4KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZSByZXR1cm5zIGEgbm9uLW51bGwgdmFs
dWUgdGhhdCBpcyBwdXQgaW50byBhIHN0ZDo6dW5pcXVlX3B0ciwgYSB0eXBlCisgICAgICAgIHRo
YXQgY291bGQgY29udGFpbiBudWxsIHZhbHVlcy4gIFRvIGJlIGFibGUgdG8gcGFzcyBzdWNoIHZh
bHVlcyBhcm91bmQgYW5kIHN0b3JlIHRoZW0KKyAgICAgICAgd2l0aG91dCB3b25kZXJpbmcgaWYg
dGhleSBhcmUgbnVsbCwgd2Ugbm93IGhhdmUgV1RGOjpVbmlxdWUgd2hpY2ggY2Fubm90IGJlIG51
bGwuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1VuaXF1ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6bWFrZVVuaXF1ZSk6CisgICAgICAgIChXVEY6OlVuaXF1ZTo6VW5pcXVlKToK
KyAgICAgICAgKFdURjo6VW5pcXVlOjpnZXQpOgorICAgICAgICAoV1RGOjpVbmlxdWU6Om9wZXJh
dG9yJik6CisgICAgICAgIChXVEY6OlVuaXF1ZTo6b3BlcmF0b3ItPik6CisKIDIwMTYtMDYtMDkg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVuYWRkcmVzc2Vk
IHJldmlldyBmZWVkYmFjayBmcm9tIHIyMDE4NzIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3
IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTREMUNGQzlG
NEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLzsgfTsKIAkJNTE1Rjc5NTYxQ0ZEM0E2
OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFF1ZXVlLmggKi87IH07CiAJCTU1MzA3MUNBMUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJV
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLzsgfTsKKwkJNUM3Qzg4
RDQxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5o
ICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3lt
Ym9sUmVnaXN0cnkuaCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21p
Y1N0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICov
OyB9OwpAQCAtNDMwLDYgKzQzMSw3IEBACiAJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBD
cm9zc1RocmVhZFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NU
aHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTU1MUNGRDNB
NjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENyb3NzVGhyZWFkUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03NzAsNiArNzcyLDcgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oICovLAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDRE
QkE3MCAvKiBjZiAqLywKIAkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8s
CiAJCQkJQThBNDcyODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCkBAIC0xMTcxLDYgKzEx
NzQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAog
CQkJCUE4QTQ3Mzg1MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1QzdDODhENDFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDYgKzExMSw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFRocmVhZGluZy5oCiAgICAgVGhyZWFk
aW5nUHJpbWl0aXZlcy5oCiAgICAgVGlueVB0clNldC5oCisgICAgVW5pcXVlLmgKICAgICBWTVRh
Z3MuaAogICAgIFZhbHVlQ2hlY2suaAogICAgIFZlY3Rvci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9VbmlxdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFz
cy4uLiBBcmdzPgorVW5pcXVlPFQ+IG1ha2VVbmlxdWUoQXJncyYmLi4uIGFyZ3MpCit7CisgICAg
cmV0dXJuIFVuaXF1ZTxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBVbmlxdWUgeworcHVibGljOgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFVuaXF1ZShVbmlxdWU8VT4mJiBvdGhlcikKKyAgICAg
ICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3JlZik7CisgICAgfQorCisgICAgVCYgZ2V0KCkgeyByZXR1cm4gKm1fcmVmOyB9CisgICAgY29u
c3QgVCYgZ2V0KCkgY29uc3QgeyByZXR1cm4gKm1fcmVmOyB9CisKKyAgICBUKiBvcGVyYXRvciYo
KSB7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIGNvbnN0IFQqIG9wZXJhdG9yJigpIGNvbnN0
IHsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgeyByZXR1cm4g
bV9yZWYuZ2V0KCk7IH0KKyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyByZXR1cm4g
bV9yZWYuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiBmcmllbmQgVW5pcXVlPFU+IG1ha2VVbmlxdWUoQXJncyYmLi4uKTsKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlOworCisgICAgVW5pcXVlKFQmIG90aGVy
KQorICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7
CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VW5pcXVlOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxODk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2Ug
V1RGOjpVbmlxdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ck92ZXJsYXk6Om92ZXJsYXlQYWdlKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxXaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICog
cGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjYW5TdGFydE1lZGlhKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVkaXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQ
YWdlOjpwbHVnSW5DbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6bWFpbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdyb3VwUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25maWd1
cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgRWRp
dG9yQ2xpZW50IGxpZmV0aW1lCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yT3ZlcmxheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2NCw3ICs4
NjQsNyBAQCBQYWdlKiBJbnNwZWN0b3JPdmVybGF5OjpvdmVybGF5UGFnZSgpCiAgICAgaWYgKG1f
b3ZlcmxheVBhZ2UpCiAgICAgICAgIHJldHVybiBtX292ZXJsYXlQYWdlLmdldCgpOwogCi0gICAg
UGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRp
b24gcGFnZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1ZTxFbXB0eUVkaXRvckNsaWVudD4oKSk7CiAg
ICAgZmlsbFdpdGhFbXB0eUNsaWVudHMocGFnZUNvbmZpZ3VyYXRpb24pOwogICAgIG1fb3Zlcmxh
eVBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24p
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9u
IDIwMTg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjksOCArMTI5LDYgQEAgdm9pZCBmaWxsV2l0aEVtcHR5Q2xpZW50cyhQ
YWdlQ29uZmlndXJhdAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQgPSAmZHVtbXlE
cmFnQ2xpZW50LmdldCgpOwogI2VuZGlmCiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPEVtcHR5RWRpdG9yQ2xpZW50PigpOwotICAgIAogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eUluc3BlY3RvckNsaWVudD4gZHVtbXlJbnNwZWN0
b3JDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gJmR1bW15
SW5zcGVjdG9yQ2xpZW50LmdldCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9u
IDIwMTg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzOCw3ICsyMzgsNiBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNv
bmZpCiAgICAgLCBtX3Nlc3Npb25JRChTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAg
ICAsIG1faXNDbG9zaW5nKGZhbHNlKQogewotICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAg
ICAgdXBkYXRlVGltZXJUaHJvdHRsaW5nU3RhdGUoKTsKIAogICAgIG1fc3RvcmFnZU5hbWVzcGFj
ZVByb3ZpZGVyLT5hZGRQYWdlKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAy
MDE4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNyBAQAogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWUu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIE9TKFNPTEFSSVMpCkBA
IC0xNTcsNyArMTU4LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2Fu
U3RhcnRNZWRpYShib29sKTsKICAgICBib29sIGNhblN0YXJ0TWVkaWEoKSBjb25zdCB7IHJldHVy
biBtX2NhblN0YXJ0TWVkaWE7IH0KIAotICAgIEVkaXRvckNsaWVudCYgZWRpdG9yQ2xpZW50KCkg
Y29uc3QgeyByZXR1cm4gKm1fZWRpdG9yQ2xpZW50OyB9CisgICAgRWRpdG9yQ2xpZW50JiBlZGl0
b3JDbGllbnQoKSB7IHJldHVybiBtX2VkaXRvckNsaWVudC5nZXQoKTsgfQogICAgIFBsdWdJbkNs
aWVudCogcGx1Z0luQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wbHVnSW5DbGllbnQ7IH0KIAog
ICAgIE1haW5GcmFtZSYgbWFpbkZyYW1lKCkgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0K
QEAgLTE3NCw3ICsxNzUsNiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3Ry
aW5nJiBncm91cE5hbWUoKSBjb25zdDsKIAogICAgIFBhZ2VHcm91cCYgZ3JvdXAoKTsKLSAgICBQ
YWdlR3JvdXAqIGdyb3VwUHRyKCkgeyByZXR1cm4gbV9ncm91cDsgfSAvLyBjYW4gcmV0dXJuIDAK
IAogICAgIHN0YXRpYyB2b2lkIGZvckVhY2hQYWdlKHN0ZDo6ZnVuY3Rpb248dm9pZChQYWdlJik+
KTsKIApAQCAtNTgzLDcgKzU4Myw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8UmVuZGVyVGhl
bWU+IG1fdGhlbWU7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdG9yQ2xpZW50PiBtX2VkaXRv
ckNsaWVudDsKKyAgICBVbmlxdWU8RWRpdG9yQ2xpZW50PiBtX2VkaXRvckNsaWVudDsKICAgICBQ
bHVnSW5DbGllbnQqIG1fcGx1Z0luQ2xpZW50OwogICAgIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50
KiBtX3ZhbGlkYXRpb25NZXNzYWdlQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudD4gbV9kaWFnbm9zdGljTG9nZ2luZ0NsaWVudDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMDE4OTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNyArMzcsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VDb25maWd1
cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbigpCitQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZp
Z3VyYXRpb24oVW5pcXVlPEVkaXRvckNsaWVudD4mJiBlZGl0b3JDbGllbnQpCisgICAgOiBlZGl0
b3JDbGllbnQoV1RGTW92ZShlZGl0b3JDbGllbnQpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDEx
ICsyMywxMSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBQYWdlQ29uZmlndXJh
dGlvbl9oCi0jZGVmaW5lIFBhZ2VDb25maWd1cmF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9VbmlxdWUuaD4KIAogI2lmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW5jbHVk
ZSA8V2ViS2l0QWRkaXRpb25zL1BhZ2VDb25maWd1cmF0aW9uSW5jbHVkZXMuaD4KQEAgLTU5LDcg
KzU5LDcgQEAgY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlv
biB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZUNvbmZpZ3VyYXRpb24pOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uZmln
dXJhdGlvbigpOworICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1cmF0aW9uKFVuaXF1ZTxF
ZGl0b3JDbGllbnQ+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIH5QYWdlQ29uZmlndXJhdGlvbigp
OwogCiAgICAgQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQgeyBu
dWxscHRyIH07CkBAIC02Nyw3ICs2Nyw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKICAgICBDb250ZXh0TWVudUNsaWVudCogY29udGV4dE1lbnVDbGllbnQgeyBudWxscHRy
IH07CiAjZW5kaWYKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8RWRpdG9yQ2xpZW50PiBlZGl0b3JDbGll
bnQ7CisgICAgVW5pcXVlPEVkaXRvckNsaWVudD4gZWRpdG9yQ2xpZW50OwogICAgIERyYWdDbGll
bnQqIGRyYWdDbGllbnQgeyBudWxscHRyIH07CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDbGllbnQgeyBudWxscHRyIH07CiAgICAgUGx1Z0luQ2xpZW50KiBwbHVnSW5DbGllbnQgeyBu
dWxscHRyIH07CkBAIC04OSw1ICs4OSwzIEBAIHB1YmxpYzoKIH07CiAKIH0KLQotI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIw
MTg5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3OSw3ICszNzksNyBAQCBib29sIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChi
b29sIGFsbERhdGFSCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKGFsbERhdGFSZWNl
aXZlZCkgewotICAgICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbjsKKyAg
ICAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1ZTxFbXB0
eUVkaXRvckNsaWVudD4oKSk7CiAgICAgICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25m
aWd1cmF0aW9uKTsKICAgICAgICAgbV9jaHJvbWVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNW
R0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlzKTsKICAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hy
b21lQ2xpZW50ID0gbV9jaHJvbWVDbGllbnQuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biAyMDE4OTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIEludHJvZHVjZSBXVEY6OlVuaXF1ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NTk2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Om1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91
c2VNb3ZlRXZlbnRzKToKKwogMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIEVkaXRvckNsaWVudCBsaWZldGlt
ZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAkocmV2aXNpb24gMjAxODk0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODQsMTIgKzM4NCwxMSBAQCBXZWJQYWdl
OjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgU2V0dGluZ3M6OnNldFNob3Vs
ZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVnb3J5KHRydWUpOwogI2VuZGlmCiAKLSAgICBQYWdlQ29u
ZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdl
Q29uZmlndXJhdGlvbihtYWtlVW5pcXVlPFdlYkVkaXRvckNsaWVudD4odGhpcykpOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4
dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQodGhpcyk7CiAjZW5kaWYKLSAg
ICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkVk
aXRvckNsaWVudD4odGhpcyk7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBwYWdlQ29u
ZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTg5NCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA2LTA5
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
SW50cm9kdWNlIFdURjo6VW5pcXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNTg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVu
Y2VzOmdyb3VwTmFtZTpdKToKKwogMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIEVkaXRvckNsaWVudCBsaWZl
dGltZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjAx
ODk0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05ODcsNyArOTg3LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
RnJhbWVOYQogICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUo
Z3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0
aCk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCi0gICAgUGFnZUNv
bmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFn
ZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1ZTxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpKTsKICNpZiAh
UExBVEZPUk0oSU9TKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBX
ZWJDaHJvbWVDbGllbnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVD
bGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZik7CkBAIC0xMDA0LDcgKzEwMDQs
NiBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaW1wb3J0IDxX
ZWJLaXRBZGRpdGlvbnMvV2ViVmlld0luaXRpYWxpemF0aW9uLm1tPgogI2VuZGlmCiAKLSAgICBw
YWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkVkaXRv
ckNsaWVudD4oc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50ID0gbmV3IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGll
bnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gbmV3IFdl
YlByb2dyZXNzVHJhY2tlckNsaWVudChzZWxmKTsKQEAgLTEyMzgsNyArMTIzNyw3IEBAIC0gKGlk
KWluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICBfcHJpdmF0ZS0+Z3JvdXAg
PSBXZWJWaWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVu
Y2VzLl9sb2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRk
V2ViVmlldyhzZWxmKTsKIAotICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9u
OworICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWUoV2Vi
RWRpdG9yQ2xpZW50KHNlbGYpKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50
ID0gbmV3IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JU
KQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudChz
ZWxmKTsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIwMTg5OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVW5pcXVlLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpCKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OkM6OkMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZnVu
Y3Rpb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMDYtMDkgIE1p
Y2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBj
b21tZW50cyB0byBjbGFyaWZ5IGZlYXR1cmUgZW5hYmxlbWVudApJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE4NzMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHNldChUZXN0
V1RGX1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvU3RyaW5nT3Bl
cmF0b3JzLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9TdHJpbmdWaWV3
LmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UZW1wb3JhcnlDaGFuZ2Uu
Y3BwCisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VuaXF1ZS5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVmVjdG9yLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1dlYWtQdHIuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjAxODczKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAog
CQk1Nzk4RTJCMDFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk4RTJBRjFD
QUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gKi87IH07CiAJCTU3
RjEwRDkzMUM3RTdCMzgwMEVDREYzMCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGMTBEOTIxQzdF
N0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gKi87IH07CiAJCTU3
RjU2QTVDMUM3RjhDQzEwMEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdG
NTZBNUIxQzdGOEE0MDAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCAq
LzsgfTsKKwkJNUM3Qzg4RDYxRDBBM0FENzAwOUQyRjZEIC8qIFVuaXF1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENTFEMEEzQUQ3MDA5
RDJGNkQgLyogVW5pcXVlLmNwcCAqLzsgfTsKIAkJNzY0MzIyRDcxQjYxQ0NDMzAwMjRGODAxIC8q
IFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJv
dW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLzsgfTsKIAkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0
REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3MzQ5OUEx
OTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZF9idW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNl
bmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0
RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTY5OCw2ICs2OTksNyBAQAogCQk1Nzk4RTJBRjFD
QUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGMTBEOTIxQzdFN0IzODAwRUNERjMwIC8q
IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9u
QWN0aW9uVHJ1c3RlZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSXNOYXZpZ2F0
aW9uQWN0aW9uVHJ1c3RlZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzdD
ODhENTFEMEEzQUQ3MDA5RDJGNkQgLyogVW5pcXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFVuaXF1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc1NjA5MTc3MTkyNTlDNTkwMDlFRjA2RSAvKiBNZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlP
Uy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hl
QWRkSW1hZ2VUb0NhY2hlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUYz
MTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9y
eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVwaGVt
ZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlU
eXBpbmdBdHRyaWJ1dGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEzNjgsNiArMTM3MCw3IEBACiAJCUJDOTA5NjQ2MTI1NTYxODkwMDA4Mzc1NiAv
KiBXVEYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVD
N0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWUuY3BwICovLAogCQkJCUMwOTkxQzRGMTQz
QzdENjgwMDc5OThGMiAvKiBjZiAqLywKIAkJCQk3Q0JCQTA3NTE5QkI4QTA5MDBCQkYwMjUgLyog
ZGFyd2luICovLAogCQkJCUJDMDI5QjFBMTQ4NkIyMzgwMDgxN0RBOSAvKiBucyAqLywKQEAgLTIw
NjgsNiArMjA3MSw3IEBACiAJCQkJMjZGNkUxRjAxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmlt
aXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjBCQTU3OTFCMUQyRTdCMDA0RkEwN0MgLyog
REZBQ29tYmluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5OUQ5OTQxQUQ0QTI5RDAwMzcz
MTQxIC8qIE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUM3
Qzg4RDYxRDBBM0FENzAwOUQyRjZEIC8qIFVuaXF1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlF
MTlEQjk3OTFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
SW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlLmNwcAkocmV2aXNpb24g
MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VuaXF1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2luY2x1ZGUgPHd0Zi9VbmlxdWUuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyAgICAKK2NsYXNzIEEgeyB9OworY2xhc3MgQiB7Citw
dWJsaWM6CisgICAgQihpbnQgYSwgaW50IGIsIGludCBjKQorICAgICAgICA6IGEoYSkKKyAgICAg
ICAgLCBiKGIpCisgICAgICAgICwgYyhjKQorICAgIHsgfTsKKyAgICBpbnQgYSwgYiwgYzsKK307
CitjbGFzcyBDIHsKK3B1YmxpYzoKKyAgICBDKFVuaXF1ZTxBPiYmIGEpCisgICAgICAgIDogYShX
VEZNb3ZlKGEpKQorICAgIHsgfQorICAgIFVuaXF1ZTxBPiBhOworfTsKK2NsYXNzIEQgOiBwdWJs
aWMgQSB7IH07CisKK3ZvaWQgZnVuY3Rpb24oY29uc3QgVW5pcXVlPEE+IGEpCit7CisgICAgY29u
c3QgQSYgYiA9IGEuZ2V0KCk7CisgICAgY29uc3QgQSogYyA9ICZhOworfQorCitURVNUKFdURiwg
VW5pcXVlKQoreworICAgIFVuaXF1ZTxBPiBhID0gbWFrZVVuaXF1ZTxBPigpOworICAgIFVuaXF1
ZTxCPiBiID0gbWFrZVVuaXF1ZTxCPigxLCAyLCAzKTsKKyAgICBCJiBjID0gYi5nZXQoKTsKKyAg
ICBjb25zdCBCJiBkID0gYi5nZXQoKTsKKyAgICBCKiBlID0gJmI7CisgICAgY29uc3QgQiogZiA9
ICZiOworICAgIAorICAgIFZlY3RvcjxVbmlxdWU8Qj4+IHY7CisgICAgdi5hcHBlbmQobWFrZVVu
aXF1ZTxCPig0LCA1LCA2KSk7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZTxCPig3LCA4LCA5KSk7
CisgICAgVW5pcXVlPEI+IGcgPSB2LnRha2VMYXN0KCk7CisgICAgQVNTRVJUX0VRKGctPmIsIDgp
OworICAgIEFTU0VSVF9FUSh2Lmxhc3QoKS0+YiwgNSk7CisgICAgCisgICAgQyBoKG1ha2VVbmlx
dWU8QT4oKSk7CisgICAgQyBpKG1ha2VVbmlxdWU8RD4oKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280975</attachid>
            <date>2016-06-09 19:16:21 -0700</date>
            <delta_ts>2016-06-09 20:20:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158596-20160609191750.patch</filename>
            <type>text/plain</type>
            <size>25558</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE4NzMpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVEY6OlVu
aXF1ZSBpcyBsaWtlIGEgc3RkOjp1bmlxdWVfcHRyIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBu
b24tbnVsbC4KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZSByZXR1cm5zIGEgbm9uLW51bGwgdmFs
dWUgdGhhdCBpcyBwdXQgaW50byBhIHN0ZDo6dW5pcXVlX3B0ciwgYSB0eXBlCisgICAgICAgIHRo
YXQgY291bGQgY29udGFpbiBudWxsIHZhbHVlcy4gIFRvIGJlIGFibGUgdG8gcGFzcyBzdWNoIHZh
bHVlcyBhcm91bmQgYW5kIHN0b3JlIHRoZW0KKyAgICAgICAgd2l0aG91dCB3b25kZXJpbmcgaWYg
dGhleSBhcmUgbnVsbCwgd2Ugbm93IGhhdmUgV1RGOjpVbmlxdWUgd2hpY2ggY2Fubm90IGJlIG51
bGwuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1VuaXF1ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6bWFrZVVuaXF1ZSk6CisgICAgICAgIChXVEY6OlVuaXF1ZTo6VW5pcXVlKToK
KyAgICAgICAgKFdURjo6VW5pcXVlOjpnZXQpOgorICAgICAgICAoV1RGOjpVbmlxdWU6Om9wZXJh
dG9yJik6CisgICAgICAgIChXVEY6OlVuaXF1ZTo6b3BlcmF0b3ItPik6CisKIDIwMTYtMDYtMDkg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVuYWRkcmVzc2Vk
IHJldmlldyBmZWVkYmFjayBmcm9tIHIyMDE4NzIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAxODczKQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3
IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTREMUNGQzlG
NEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLzsgfTsKIAkJNTE1Rjc5NTYxQ0ZEM0E2
OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFF1ZXVlLmggKi87IH07CiAJCTU1MzA3MUNBMUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJV
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLzsgfTsKKwkJNUM3Qzg4
RDQxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5o
ICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3lt
Ym9sUmVnaXN0cnkuaCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21p
Y1N0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICov
OyB9OwpAQCAtNDMwLDYgKzQzMSw3IEBACiAJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBD
cm9zc1RocmVhZFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NU
aHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTU1MUNGRDNB
NjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENyb3NzVGhyZWFkUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03NzAsNiArNzcyLDcgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oICovLAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDRE
QkE3MCAvKiBjZiAqLywKIAkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8s
CiAJCQkJQThBNDcyODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCkBAIC0xMTcxLDYgKzEx
NzQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAog
CQkJCUE4QTQ3Mzg1MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1QzdDODhENDFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE4NzMp
CisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDYgKzExMSw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFRocmVhZGluZy5oCiAgICAgVGhyZWFk
aW5nUHJpbWl0aXZlcy5oCiAgICAgVGlueVB0clNldC5oCisgICAgVW5pcXVlLmgKICAgICBWTVRh
Z3MuaAogICAgIFZhbHVlQ2hlY2suaAogICAgIFZlY3Rvci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9VbmlxdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFz
cy4uLiBBcmdzPgorVW5pcXVlPFQ+IG1ha2VVbmlxdWUoQXJncyYmLi4uIGFyZ3MpCit7CisgICAg
cmV0dXJuIFVuaXF1ZTxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBVbmlxdWUgeworcHVibGljOgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFVuaXF1ZShVbmlxdWU8VT4mJiBvdGhlcikKKyAgICAg
ICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3JlZik7CisgICAgfQorCisgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1f
cmVmOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
Km1fcmVmOyB9CisKKyAgICBUKiBvcGVyYXRvciYoKSB7IEFTU0VSVChtX3JlZik7IHJldHVybiBt
X3JlZi5nZXQoKTsgfQorICAgIGNvbnN0IFQqIG9wZXJhdG9yJigpIGNvbnN0IHsgQVNTRVJUKG1f
cmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgeyBBU1NF
UlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKyAgICBjb25zdCBUKiBvcGVyYXRvci0+
KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlPFU+
IG1ha2VVbmlxdWUoQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xh
c3MgVW5pcXVlOworCisgICAgVW5pcXVlKFQmIG90aGVyKQorICAgICAgICA6IG1fcmVmKCZvdGhl
cikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCisgICAgc3RkOjp1bmlx
dWVfcHRyPFQ+IG1fcmVmOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6
VW5pcXVlOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjAxODk0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKToK
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bGxXaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpjYW5TdGFydE1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVk
aXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnSW5DbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
Omdyb3VwUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlv
bik6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNo
YW5nZWQpOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgRWRpdG9yQ2xpZW50IGxpZmV0aW1lCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCShyZXZp
c2lvbiAyMDE4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2NCw3ICs4NjQsNyBAQCBQYWdlKiBJbnNwZWN0b3JP
dmVybGF5OjpvdmVybGF5UGFnZSgpCiAgICAgaWYgKG1fb3ZlcmxheVBhZ2UpCiAgICAgICAgIHJl
dHVybiBtX292ZXJsYXlQYWdlLmdldCgpOwogCi0gICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNv
bmZpZ3VyYXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24obWFr
ZVVuaXF1ZTxFbXB0eUVkaXRvckNsaWVudD4oKSk7CiAgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMo
cGFnZUNvbmZpZ3VyYXRpb24pOwogICAgIG1fb3ZlcmxheVBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVl
PFBhZ2U+KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHJldmlzaW9uIDIwMTg5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksOCArMTI5
LDYgQEAgdm9pZCBmaWxsV2l0aEVtcHR5Q2xpZW50cyhQYWdlQ29uZmlndXJhdAogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmRyYWdDbGllbnQgPSAmZHVtbXlEcmFnQ2xpZW50LmdldCgpOwogI2VuZGlm
CiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVl
PEVtcHR5RWRpdG9yQ2xpZW50PigpOwotICAgIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxF
bXB0eUluc3BlY3RvckNsaWVudD4gZHVtbXlJbnNwZWN0b3JDbGllbnQ7CiAgICAgcGFnZUNvbmZp
Z3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gJmR1bW15SW5zcGVjdG9yQ2xpZW50LmdldCgpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDIwMTg5NCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw3ICsyMzgsNiBAQCBQYWdl
OjpQYWdlKFBhZ2VDb25maWd1cmF0aW9uJiYgcGFnZUNvbmZpCiAgICAgLCBtX3Nlc3Npb25JRChT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKSkKICAgICAsIG1faXNDbG9zaW5nKGZhbHNlKQog
ewotICAgIEFTU0VSVChtX2VkaXRvckNsaWVudCk7CiAgICAgdXBkYXRlVGltZXJUaHJvdHRsaW5n
U3RhdGUoKTsKIAogICAgIG1fc3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLT5hZGRQYWdlKCp0aGlz
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogI2lmIE9TKFNPTEFSSVMpCkBAIC0xNTcsNyArMTU4LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FuU3RhcnRNZWRpYShib29sKTsKICAgICBi
b29sIGNhblN0YXJ0TWVkaWEoKSBjb25zdCB7IHJldHVybiBtX2NhblN0YXJ0TWVkaWE7IH0KIAot
ICAgIEVkaXRvckNsaWVudCYgZWRpdG9yQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gKm1fZWRpdG9y
Q2xpZW50OyB9CisgICAgRWRpdG9yQ2xpZW50JiBlZGl0b3JDbGllbnQoKSB7IHJldHVybiBtX2Vk
aXRvckNsaWVudC5nZXQoKTsgfQogICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xpZW50KCkgY29u
c3QgeyByZXR1cm4gbV9wbHVnSW5DbGllbnQ7IH0KIAogICAgIE1haW5GcmFtZSYgbWFpbkZyYW1l
KCkgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KQEAgLTE3NCw3ICsxNzUsNiBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgY29uc3QgU3RyaW5nJiBncm91cE5hbWUoKSBjb25zdDsK
IAogICAgIFBhZ2VHcm91cCYgZ3JvdXAoKTsKLSAgICBQYWdlR3JvdXAqIGdyb3VwUHRyKCkgeyBy
ZXR1cm4gbV9ncm91cDsgfSAvLyBjYW4gcmV0dXJuIDAKIAogICAgIHN0YXRpYyB2b2lkIGZvckVh
Y2hQYWdlKHN0ZDo6ZnVuY3Rpb248dm9pZChQYWdlJik+KTsKIApAQCAtNTgzLDcgKzU4Myw3IEBA
IHByaXZhdGU6CiAKICAgICBSZWZQdHI8UmVuZGVyVGhlbWU+IG1fdGhlbWU7CiAKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8RWRpdG9yQ2xpZW50PiBtX2VkaXRvckNsaWVudDsKKyAgICBVbmlxdWU8RWRp
dG9yQ2xpZW50PiBtX2VkaXRvckNsaWVudDsKICAgICBQbHVnSW5DbGllbnQqIG1fcGx1Z0luQ2xp
ZW50OwogICAgIFZhbGlkYXRpb25NZXNzYWdlQ2xpZW50KiBtX3ZhbGlkYXRpb25NZXNzYWdlQ2xp
ZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4gbV9kaWFn
bm9zdGljTG9nZ2luZ0NsaWVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZp
Z3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VDb25maWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlv
bigpCitQYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oVW5pcXVlPEVkaXRvckNs
aWVudD4mJiBlZGl0b3JDbGllbnQpCisgICAgOiBlZGl0b3JDbGllbnQoV1RGTW92ZShlZGl0b3JD
bGllbnQpKQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlv
bi5oCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1
cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMSBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCiAgKi8KIAotI2lmbmRlZiBQYWdlQ29uZmlndXJhdGlvbl9oCi0jZGVmaW5lIFBhZ2VDb25m
aWd1cmF0aW9uX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWUuaD4KIAogI2lm
IFVTRShBUFBMRV9JTlRFUk5BTF9TREspCiAjaW5jbHVkZSA8V2ViS2l0QWRkaXRpb25zL1BhZ2VD
b25maWd1cmF0aW9uSW5jbHVkZXMuaD4KQEAgLTU5LDcgKzU5LDcgQEAgY2xhc3MgQ29udGV4dE1l
bnVDbGllbnQ7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUGFnZUNvbmZpZ3VyYXRpb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJhdGlvbigpOworICAgIFdFQkNPUkVf
RVhQT1JUIFBhZ2VDb25maWd1cmF0aW9uKFVuaXF1ZTxFZGl0b3JDbGllbnQ+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYWdlQ29uZmlndXJhdGlvbigpOwogCiAgICAgQWx0ZXJuYXRpdmVUZXh0
Q2xpZW50KiBhbHRlcm5hdGl2ZVRleHRDbGllbnQgeyBudWxscHRyIH07CkBAIC02Nyw3ICs2Nyw3
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBDb250ZXh0TWVudUNs
aWVudCogY29udGV4dE1lbnVDbGllbnQgeyBudWxscHRyIH07CiAjZW5kaWYKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8RWRpdG9yQ2xpZW50PiBlZGl0b3JDbGllbnQ7CisgICAgVW5pcXVlPEVkaXRvckNs
aWVudD4gZWRpdG9yQ2xpZW50OwogICAgIERyYWdDbGllbnQqIGRyYWdDbGllbnQgeyBudWxscHRy
IH07CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgeyBudWxscHRyIH07CiAg
ICAgUGx1Z0luQ2xpZW50KiBwbHVnSW5DbGllbnQgeyBudWxscHRyIH07CkBAIC04OSw1ICs4OSwz
IEBAIHB1YmxpYzoKIH07CiAKIH0KLQotI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIwMTg5NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3OSw3ICszNzks
NyBAQCBib29sIFNWR0ltYWdlOjpkYXRhQ2hhbmdlZChib29sIGFsbERhdGFSCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewotICAgICAgICBQYWdlQ29u
ZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbjsKKyAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24g
cGFnZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1ZTxFbXB0eUVkaXRvckNsaWVudD4oKSk7CiAgICAg
ICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9uKTsKICAgICAgICAgbV9j
aHJvbWVDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFNWR0ltYWdlQ2hyb21lQ2xpZW50Pih0aGlz
KTsKICAgICAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbV9jaHJvbWVDbGll
bnQuZ2V0KCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE4OTQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0wNi0w
OSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IEludHJvZHVjZSBXVEY6OlVuaXF1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTU4NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6Om1fc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKToKKwogMjAxNi0w
Ni0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIENsZWFuIHVwIEVkaXRvckNsaWVudCBsaWZldGltZQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjAxODk0KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zODQsMTIgKzM4NCwxMSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgCiAgICAgU2V0dGluZ3M6OnNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNhdGVn
b3J5KHRydWUpOwogI2VuZGlmCiAKLSAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJh
dGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbihtYWtlVW5pcXVl
PFdlYkVkaXRvckNsaWVudD4odGhpcykpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNs
aWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29u
dGV4dE1lbnVDbGllbnQodGhpcyk7CiAjZW5kaWYKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0
b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkVkaXRvckNsaWVudD4odGhpcyk7CiAjaWYg
RU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0g
bmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIwMTg5NCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcv
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRo
RnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRN
TERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKwogMjAx
Ni0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIENsZWFuIHVwIEVkaXRvckNsaWVudCBsaWZldGltZQpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjAxODk0KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05ODcsNyArOTg3LDcgQEAg
LSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgIF9wcml2YXRlLT5n
cm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3Vw
LT5hZGRXZWJWaWV3KHNlbGYpOwogCi0gICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3Vy
YXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1
ZTxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQoc2VsZik7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1l
bnVDbGllbnQoc2VsZik7CkBAIC0xMDA0LDcgKzEwMDQsNiBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaW1wb3J0IDxXZWJLaXRBZGRpdGlvbnMvV2ViVmlld0lu
aXRpYWxpemF0aW9uLm1tPgogI2VuZGlmCiAKLSAgICBwYWdlQ29uZmlndXJhdGlvbi5lZGl0b3JD
bGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkVkaXRvckNsaWVudD4oc2VsZik7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50ID0gbmV3IFdlYkFsdGVybmF0aXZl
VGV4dENsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JN
YWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudChz
ZWxmKTsKQEAgLTEyMzgsNyArMTIzNyw3IEBAIC0gKGlkKWluaXRTaW1wbGVIVE1MRG9jdW1lbnRX
aXRoU3R5bGU6KE4KICAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJWaWV3R3JvdXA6OmdldE9yQ3Jl
YXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9sb2NhbFN0b3JhZ2VEYXRhYmFz
ZVBhdGgpOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRkV2ViVmlldyhzZWxmKTsKIAotICAgIFBh
Z2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0aW9u
IHBhZ2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWUoV2ViRWRpdG9yQ2xpZW50KHNlbGYpKSk7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudElP
UyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHBhZ2VDb25maWd1cmF0aW9u
LmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudChzZWxmKTsKSW5kZXg6IFRvb2xzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTg5OCkKKysr
IFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE2LTA2
LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgSW50cm9kdWNlIFdURjo6VW5pcXVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpCKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkM6
OkMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZnVuY3Rpb24pOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMDYtMDkgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFu
emFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEFkZCBjb21tZW50cyB0byBjbGFyaWZ5IGZlYXR1
cmUgZW5hYmxlbWVudApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAyMDE4NzMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHNldChUZXN0V1RGX1NPVVJDRVMKICAgICAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0b3JzLmNwcAogICAgICR7VEVTVFdF
QktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcAogICAgICR7VEVTVFdFQktJVEFQ
SV9ESVJ9L1Rlc3RzL1dURi9UZW1wb3JhcnlDaGFuZ2UuY3BwCisgICAgJHtURVNUV0VCS0lUQVBJ
X0RJUn0vVGVzdHMvV1RGL1VuaXF1ZS5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0
cy9XVEYvVmVjdG9yLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9XVEZT
dHJpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dlYWtQdHIuY3Bw
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAxODczKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAogCQk1Nzk4RTJCMDFDQUY1QzI4MDBDNUNC
QTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk4RTJBRjFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlz
aW9uYWxVUkxOb3RDaGFuZ2UubW0gKi87IH07CiAJCTU3RjEwRDkzMUM3RTdCMzgwMEVDREYzMCAv
KiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGMTBEOTIxQzdFN0IzODAwRUNERjMwIC8qIElzTmF2aWdh
dGlvbkFjdGlvblRydXN0ZWQubW0gKi87IH07CiAJCTU3RjU2QTVDMUM3RjhDQzEwMEYzMUQ3RSAv
KiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGNTZBNUIxQzdGOEE0MDAwRjMxRDdFIC8q
IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCAqLzsgfTsKKwkJNUM3Qzg4RDYxRDBBM0FE
NzAwOUQyRjZEIC8qIFVuaXF1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzdDODhENTFEMEEzQUQ3MDA5RDJGNkQgLyogVW5pcXVlLmNwcCAqLzsg
fTsKIAkJNzY0MzIyRDcxQjYxQ0NDMzAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJp
YnV0ZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5t
bSAqLzsgfTsKIAkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5n
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BM
b2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwICovOyB9OwogCQk3
NkUxODJERDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMx
NTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsK
QEAgLTY5OCw2ICs2OTksNyBAQAogCQk1Nzk4RTJBRjFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlz
aW9uYWxVUkxOb3RDaGFuZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTdGMTBEOTIxQzdFN0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0
ZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJc05hdmlnYXRp
b25BY3Rpb25UcnVzdGVkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0Y1NkE1
QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzdDODhENTFEMEEzQUQ3MDA5RDJGNkQgLyog
VW5pcXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NjA5MTc3MTkyNTlDNTkwMDlFRjA2
RSAvKiBNZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyog
RXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hp
c3RvcnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2NDMyMkQ1
MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV29yZEJvdW5kYXJ5VHlwaW5nQXR0
cmlidXRlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNjgsNiArMTM3MCw3
IEBACiAJCUJDOTA5NjQ2MTI1NTYxODkwMDA4Mzc1NiAvKiBXVEYgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAv
KiBVbmlxdWUuY3BwICovLAogCQkJCUMwOTkxQzRGMTQzQzdENjgwMDc5OThGMiAvKiBjZiAqLywK
IAkJCQk3Q0JCQTA3NTE5QkI4QTA5MDBCQkYwMjUgLyogZGFyd2luICovLAogCQkJCUJDMDI5QjFB
MTQ4NkIyMzgwMDgxN0RBOSAvKiBucyAqLywKQEAgLTIwNjgsNiArMjA3MSw3IEBACiAJCQkJMjZG
NkUxRjAxQURDNzQ5QjAwREU2OTZCIC8qIERGQU1pbmltaXplci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyNjBCQTU3OTFCMUQyRTdCMDA0RkEwN0MgLyogREZBQ29tYmluZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0E5OUQ5OTQxQUQ0QTI5RDAwMzczMTQxIC8qIE1lbnVUeXBlc0Zvck1vdXNl
RXZlbnRzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUM3Qzg4RDYxRDBBM0FENzAwOUQyRjZEIC8q
IFVuaXF1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTlEQjk3OTFCMzIxMzdDMDBEQjM4RDQg
LyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1VuaXF1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvVW5pcXVlLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL1VuaXF1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9VbmlxdWUu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
KyAgICAKK2NsYXNzIEEgeyB9OworY2xhc3MgQiB7CitwdWJsaWM6CisgICAgQihpbnQgYSwgaW50
IGIsIGludCBjKQorICAgICAgICA6IGEoYSkKKyAgICAgICAgLCBiKGIpCisgICAgICAgICwgYyhj
KQorICAgIHsgfTsKKyAgICBpbnQgYSwgYiwgYzsKK307CitjbGFzcyBDIHsKK3B1YmxpYzoKKyAg
ICBDKFVuaXF1ZTxBPiYmIGEpCisgICAgICAgIDogYShXVEZNb3ZlKGEpKQorICAgIHsgfQorICAg
IFVuaXF1ZTxBPiBhOworfTsKK2NsYXNzIEQgOiBwdWJsaWMgQSB7IH07CisKK3ZvaWQgZnVuY3Rp
b24oY29uc3QgVW5pcXVlPEE+IGEpCit7CisgICAgY29uc3QgQSYgYiA9IGEuZ2V0KCk7CisgICAg
Y29uc3QgQSogYyA9ICZhOworfQorCitURVNUKFdURiwgVW5pcXVlKQoreworICAgIFVuaXF1ZTxB
PiBhID0gbWFrZVVuaXF1ZTxBPigpOworICAgIFVuaXF1ZTxCPiBiID0gbWFrZVVuaXF1ZTxCPigx
LCAyLCAzKTsKKyAgICBCJiBjID0gYi5nZXQoKTsKKyAgICBjb25zdCBCJiBkID0gYi5nZXQoKTsK
KyAgICBCKiBlID0gJmI7CisgICAgY29uc3QgQiogZiA9ICZiOworICAgIFVuaXF1ZTxBPiBqID0g
V1RGTW92ZShhKTsKKyAgICAKKyAgICBWZWN0b3I8VW5pcXVlPEI+PiB2OworICAgIHYuYXBwZW5k
KG1ha2VVbmlxdWU8Qj4oNCwgNSwgNikpOworICAgIHYuYXBwZW5kKG1ha2VVbmlxdWU8Qj4oNywg
OCwgOSkpOworICAgIFVuaXF1ZTxCPiBnID0gdi50YWtlTGFzdCgpOworICAgIEFTU0VSVF9FUShn
LT5iLCA4KTsKKyAgICBBU1NFUlRfRVEodi5sYXN0KCktPmIsIDUpOworICAgIAorICAgIEMgaCht
YWtlVW5pcXVlPEE+KCkpOworICAgIEMgaShtYWtlVW5pcXVlPEQ+KCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280983</attachid>
            <date>2016-06-09 20:20:34 -0700</date>
            <delta_ts>2016-06-09 22:09:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158596-20160609202209.patch</filename>
            <type>text/plain</type>
            <size>25736</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVEY6OlVu
aXF1ZSBpcyBsaWtlIGEgc3RkOjp1bmlxdWVfcHRyIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBu
b24tbnVsbC4KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZSByZXR1cm5zIGEgbm9uLW51bGwgdmFs
dWUgdGhhdCBpcyBwdXQgaW50byBhIHN0ZDo6dW5pcXVlX3B0ciwgYSB0eXBlCisgICAgICAgIHRo
YXQgY291bGQgY29udGFpbiBudWxsIHZhbHVlcy4gIFRvIGJlIGFibGUgdG8gcGFzcyBzdWNoIHZh
bHVlcyBhcm91bmQgYW5kIHN0b3JlIHRoZW0KKyAgICAgICAgd2l0aG91dCB3b25kZXJpbmcgaWYg
dGhleSBhcmUgbnVsbCwgd2Ugbm93IGhhdmUgV1RGOjpVbmlxdWUgd2hpY2ggY2Fubm90IGJlIG51
bGwuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1VuaXF1ZS5oOiBBZGRlZC4KKyAg
ICAgICAgKFdURjo6bWFrZVVuaXF1ZSk6CisgICAgICAgIChXVEY6OlVuaXF1ZTo6VW5pcXVlKToK
KyAgICAgICAgKFdURjo6VW5pcXVlOjpnZXQpOgorICAgICAgICAoV1RGOjpVbmlxdWU6Om9wZXJh
dG9yJik6CisgICAgICAgIChXVEY6OlVuaXF1ZTo6b3BlcmF0b3ItPik6CisKIDIwMTYtMDYtMDkg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFVuYWRkcmVzc2Vk
IHJldmlldyBmZWVkYmFjayBmcm9tIHIyMDE4NzIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3
IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTREMUNGQzlG
NEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLzsgfTsKIAkJNTE1Rjc5NTYxQ0ZEM0E2
OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFF1ZXVlLmggKi87IH07CiAJCTU1MzA3MUNBMUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJV
Q2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1
MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCAqLzsgfTsKKwkJNUM3Qzg4
RDQxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5o
ICovOyB9OwogCQk3MEE5OTNGRTFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYx
QUQ3MTUxMzAwRkE2MTVCIC8qIFN5bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3lt
Ym9sUmVnaXN0cnkuaCAqLzsgfTsKIAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21p
Y1N0cmluZ0ltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzBFQ0E2MEExQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICov
OyB9OwpAQCAtNDMwLDYgKzQzMSw3IEBACiAJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBD
cm9zc1RocmVhZFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NU
aHJlYWRUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTU1MUNGRDNB
NjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENyb3NzVGhyZWFkUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTUzMDcxQzkxQzQwNDI3MjAwMzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmlxdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUQyNDdCNjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKIAkJNUQyNDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29u
ZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NUQyNDdCNzAxNDY4OUM0NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03NzAsNiArNzcyLDcgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZS5oICovLAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDRE
QkE3MCAvKiBjZiAqLywKIAkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8s
CiAJCQkJQThBNDcyODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCkBAIC0xMTcxLDYgKzEx
NzQsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAog
CQkJCUE4QTQ3Mzg1MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1QzdDODhENDFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBOEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE5MDIp
CisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDYgKzExMSw3IEBAIHNldChXVEZfSEVBREVSUwogICAgIFRocmVhZGluZy5oCiAgICAgVGhyZWFk
aW5nUHJpbWl0aXZlcy5oCiAgICAgVGlueVB0clNldC5oCisgICAgVW5pcXVlLmgKICAgICBWTVRh
Z3MuaAogICAgIFZhbHVlQ2hlY2suaAogICAgIFZlY3Rvci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9VbmlxdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9yeT4K
KyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBjbGFz
cy4uLiBBcmdzPgorVW5pcXVlPFQ+IG1ha2VVbmlxdWUoQXJncyYmLi4uIGFyZ3MpCit7CisgICAg
cmV0dXJuIFVuaXF1ZTxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBVbmlxdWUgeworcHVibGljOgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFVuaXF1ZShVbmlxdWU8VT4mJiBvdGhlcikKKyAgICAg
ICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X3JlZik7CisgICAgfQorCisgICAgVCYgZ2V0KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1f
cmVmOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
Km1fcmVmOyB9CisKKyAgICBUKiBvcGVyYXRvciYoKSB7IEFTU0VSVChtX3JlZik7IHJldHVybiBt
X3JlZi5nZXQoKTsgfQorICAgIGNvbnN0IFQqIG9wZXJhdG9yJigpIGNvbnN0IHsgQVNTRVJUKG1f
cmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKKyAgICBUKiBvcGVyYXRvci0+KCkgeyBBU1NF
UlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKyAgICBjb25zdCBUKiBvcGVyYXRvci0+
KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0KKworcHJpdmF0
ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4uLiBBcmdzPiBmcmllbmQgVW5pcXVlPFU+
IG1ha2VVbmlxdWUoQXJncyYmLi4uKTsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xh
c3MgVW5pcXVlOworCisgICAgVW5pcXVlKFQmIG90aGVyKQorICAgICAgICA6IG1fcmVmKCZvdGhl
cikKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCisgICAgc3RkOjp1bmlx
dWVfcHRyPFQ+IG1fcmVmOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6
VW5pcXVlOwordXNpbmcgV1RGOjptYWtlVW5pcXVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNo
YW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKToK
KyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZp
bGxXaXRoRW1wdHlDbGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpjYW5TdGFydE1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVk
aXRvckNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnSW5DbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
Omdyb3VwUHRyKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlv
bik6CisgICAgICAgICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNo
YW5nZWQpOgorCiAyMDE2LTA2LTA5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyBpZ25v
cmVzIHBvaW50ZXItZXZlbnRzOiBub25lOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NjQsNyArODY0LDcgQEAgUGFnZSogSW5zcGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UoKQogICAg
IGlmIChtX292ZXJsYXlQYWdlKQogICAgICAgICByZXR1cm4gbV9vdmVybGF5UGFnZS5nZXQoKTsK
IAotICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25m
aWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWU8RW1wdHlFZGl0b3JDbGllbnQ+
KCkpOwogICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9uKTsKICAgICBt
X292ZXJsYXlQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1
cmF0aW9uKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShy
ZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDggKzEyOSw2IEBAIHZvaWQgZmlsbFdpdGhFbXB0eUNs
aWVudHMoUGFnZUNvbmZpZ3VyYXQKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0g
JmR1bW15RHJhZ0NsaWVudC5nZXQoKTsKICNlbmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24u
ZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eUVkaXRvckNsaWVudD4oKTsKLSAg
ICAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlJbnNwZWN0b3JDbGllbnQ+IGR1bW15
SW5zcGVjdG9yQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9
ICZkdW1teUluc3BlY3RvckNsaWVudC5nZXQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzgsNyArMjM4LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYm
IHBhZ2VDb25maQogICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklE
KCkpCiAgICAgLCBtX2lzQ2xvc2luZyhmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9lZGl0b3JDbGll
bnQpOwogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKICAgICBtX3N0b3JhZ2VO
YW1lc3BhY2VQcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2
aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
VW5pcXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBPUyhTT0xB
UklTKQpAQCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldENhblN0YXJ0TWVkaWEoYm9vbCk7CiAgICAgYm9vbCBjYW5TdGFydE1lZGlhKCkgY29uc3Qg
eyByZXR1cm4gbV9jYW5TdGFydE1lZGlhOyB9CiAKLSAgICBFZGl0b3JDbGllbnQmIGVkaXRvckNs
aWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2VkaXRvckNsaWVudDsgfQorICAgIEVkaXRvckNsaWVu
dCYgZWRpdG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQuZ2V0KCk7IH0KICAgICBQ
bHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z0luQ2xpZW50
OyB9CiAKICAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdl
dCgpOyB9CkBAIC0xNzQsNyArMTc1LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNv
bnN0IFN0cmluZyYgZ3JvdXBOYW1lKCkgY29uc3Q7CiAKICAgICBQYWdlR3JvdXAmIGdyb3VwKCk7
Ci0gICAgUGFnZUdyb3VwKiBncm91cFB0cigpIHsgcmV0dXJuIG1fZ3JvdXA7IH0gLy8gY2FuIHJl
dHVybiAwCiAKICAgICBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShzdGQ6OmZ1bmN0aW9uPHZvaWQo
UGFnZSYpPik7CiAKQEAgLTU4Myw3ICs1ODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFJl
bmRlclRoZW1lPiBtX3RoZW1lOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVudD4g
bV9lZGl0b3JDbGllbnQ7CisgICAgVW5pcXVlPEVkaXRvckNsaWVudD4gbV9lZGl0b3JDbGllbnQ7
CiAgICAgUGx1Z0luQ2xpZW50KiBtX3BsdWdJbkNsaWVudDsKICAgICBWYWxpZGF0aW9uTWVzc2Fn
ZUNsaWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjAx
OTAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdl
Q29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQorUGFnZUNvbmZpZ3VyYXRpb246OlBh
Z2VDb25maWd1cmF0aW9uKFVuaXF1ZTxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50KQorICAg
IDogZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKIHsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjAxOTAyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMSArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFnZUNv
bmZpZ3VyYXRpb25faAotI2RlZmluZSBQYWdlQ29uZmlndXJhdGlvbl9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQog
I2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QYWdlQ29uZmlndXJhdGlvbkluY2x1ZGVzLmg+CkBA
IC01OSw3ICs1OSw3IEBAIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgUGFnZUNvbmZp
Z3VyYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDb25maWd1cmF0aW9uKTsg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQgUGFn
ZUNvbmZpZ3VyYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJhdGlvbihV
bmlxdWU8RWRpdG9yQ2xpZW50PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZUNvbmZpZ3Vy
YXRpb24oKTsKIAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVUZXh0Q2xp
ZW50IHsgbnVsbHB0ciB9OwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCiAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xpZW50IHsg
bnVsbHB0ciB9OwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVudD4gZWRp
dG9yQ2xpZW50OworICAgIFVuaXF1ZTxFZGl0b3JDbGllbnQ+IGVkaXRvckNsaWVudDsKICAgICBE
cmFnQ2xpZW50KiBkcmFnQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFBsdWdJbkNsaWVudCogcGx1Z0luQ2xp
ZW50IHsgbnVsbHB0ciB9OwpAQCAtODksNSArODksMyBAQCBwdWJsaWM6CiB9OwogCiB9Ci0KLSNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZp
c2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNyArMzc5LDcgQEAgYm9vbCBTVkdJbWFnZTo6ZGF0YUNo
YW5nZWQoYm9vbCBhbGxEYXRhUgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmIChhbGxE
YXRhUmVjZWl2ZWQpIHsKLSAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRp
b247CisgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKG1ha2VVbmlx
dWU8RW1wdHlFZGl0b3JDbGllbnQ+KCkpOwogICAgICAgICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhw
YWdlQ29uZmlndXJhdGlvbik7CiAgICAgICAgIG1fY2hyb21lQ2xpZW50ID0gc3RkOjptYWtlX3Vu
aXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBhZ2VDb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwpJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hy
aXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjptX3Nob3VsZERpc3BhdGNo
RmFrZU1vdXNlTW92ZUV2ZW50cyk6CisKIDIwMTYtMDYtMDkgIEFudG9pbmUgUXVpbnQgIDxncmFv
dXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGlu
ZzogdG91Y2g7IGlnbm9yZXMgcG9pbnRlci1ldmVudHM6IG5vbmU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMDE5MDIp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM4NCwxMiArMzg0LDExIEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCAKICAgICBTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9u
Q2F0ZWdvcnkodHJ1ZSk7CiAjZW5kaWYKIAotICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25m
aWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKG1ha2VV
bmlxdWU8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hy
b21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBX
ZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKICNlbmRpZgotICAgIHBhZ2VDb25maWd1cmF0aW9u
LmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKTsK
ICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGll
bnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlx
dWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlv
bldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1w
bGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgor
CiAyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgQ2xlYW4gdXAgRWRpdG9yQ2xpZW50IGxpZmV0aW1lCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTk4Nyw3ICs5ODcs
NyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3ByaXZh
dGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRl
LT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+
Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKLSAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29u
ZmlndXJhdGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbihtYWtl
VW5pcXVlPFdlYkVkaXRvckNsaWVudD4oc2VsZikpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAg
cGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxm
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250
ZXh0TWVudUNsaWVudChzZWxmKTsKQEAgLTEwMDQsNyArMTAwNCw2IEBAIC0gKHZvaWQpX2NvbW1v
bkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJW
aWV3SW5pdGlhbGl6YXRpb24ubW0+CiAjZW5kaWYKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmVk
aXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRWRpdG9yQ2xpZW50PihzZWxmKTsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRleHRDbGllbnQgPSBuZXcgV2ViQWx0ZXJu
YXRpdmVUZXh0Q2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVu
dEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xp
ZW50KHNlbGYpOwpAQCAtMTIzOCw3ICsxMjM3LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1
bWVudFdpdGhTdHlsZTooTgogICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0
T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURh
dGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCi0g
ICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb247CisgICAgUGFnZUNvbmZpZ3Vy
YXRpb24gcGFnZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1ZShXZWJFZGl0b3JDbGllbnQoc2VsZikp
KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xp
ZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgcGFnZUNvbmZpZ3Vy
YXRpb24uZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYpOwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAy
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWUuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkI6OkIpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Qzo6Qyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmdW5jdGlvbik6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wNi0wOSAgTWljaGFlbCBDYXRhbnphcm8gIDxt
Y2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIGNvbW1lbnRzIHRvIGNsYXJpZnkg
ZmVhdHVyZSBlbmFibGVtZW50CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDIwMTkwMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCiAgICAgJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCiAgICAgJHtURVNUV0VC
S0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RlbXBvcmFyeUNoYW5nZS5jcHAKKyAgICAke1RFU1RXRUJL
SVRBUElfRElSfS9UZXN0cy9XVEYvVW5pcXVlLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9
L1Rlc3RzL1dURi9WZWN0b3IuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RG
L1dURlN0cmluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV2Vha1B0
ci5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDE5MDIpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAJCTU3OThFMkIwMUNBRjVDMjgw
MEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQ
cm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLzsgfTsKIAkJNTdGMTBEOTMxQzdFN0IzODAwRUNE
RjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNO
YXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLzsgfTsKIAkJNTdGNTZBNUMxQzdGOENDMTAwRjMx
RDdFIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFE
N0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sICovOyB9OworCQk1QzdDODhENjFE
MEEzQUQ3MDA5RDJGNkQgLyogVW5pcXVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWUuY3Bw
ICovOyB9OwogCQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5n
QXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1
dGVzLm1tICovOyB9OwogCQk3NjczNDk5RDE5MzBDNUJCMDBFNDRERjkgLyogU3RvcExvYWRpbmdE
dXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjczNDk5QTE5MzAxODJFMDBFNDRERjkgLyog
U3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgKi87IH07
CiAJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUx
ODJEQzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICov
OyB9OwpAQCAtNjk4LDYgKzY5OSw3IEBACiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQ
cm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9u
VHJ1c3RlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElzTmF2
aWdhdGlvbkFjdGlvblRydXN0ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3
RjU2QTVCMUM3RjhBNDAwMEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2
RCAvKiBVbmlxdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5p
cXVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1OUM1OTAw
OUVGMDZFIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1Mu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FF
QyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0
ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY0
MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRhcnlUeXBp
bmdBdHRyaWJ1dGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2OCw2ICsx
MzcwLDcgQEAKIAkJQkM5MDk2NDYxMjU1NjE4OTAwMDgzNzU2IC8qIFdURiAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDUxRDBBM0FENzAwOUQy
RjZEIC8qIFVuaXF1ZS5jcHAgKi8sCiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNm
ICovLAogCQkJCTdDQkJBMDc1MTlCQjhBMDkwMEJCRjAyNSAvKiBkYXJ3aW4gKi8sCiAJCQkJQkMw
MjlCMUExNDg2QjIzODAwODE3REE5IC8qIG5zICovLApAQCAtMjA2OCw2ICsyMDcxLDcgQEAKIAkJ
CQkyNkY2RTFGMDFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTI2MEJBNTc5MUIxRDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QTk5RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9y
TW91c2VFdmVudHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzdDODhENjFEMEEzQUQ3MDA5RDJG
NkQgLyogVW5pcXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOURCOTc5MUIzMjEzN0MwMERC
MzhENCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9VbmlxdWUuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDg1
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL1Vu
aXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgeworICAgIAorY2xhc3MgQSB7IH07CitjbGFzcyBCIHsKK3B1YmxpYzoKKyAgICBCKGludCBh
LCBpbnQgYiwgaW50IGMpCisgICAgICAgIDogYShhKQorICAgICAgICAsIGIoYikKKyAgICAgICAg
LCBjKGMpCisgICAgeyB9OworICAgIGludCBhLCBiLCBjOworfTsKK2NsYXNzIEMgeworcHVibGlj
OgorICAgIEMoVW5pcXVlPEE+JiYgYSkKKyAgICAgICAgOiBhKFdURk1vdmUoYSkpCisgICAgeyB9
CisgICAgVW5pcXVlPEE+IGE7Cit9OworY2xhc3MgRCA6IHB1YmxpYyBBIHsgfTsKKwordm9pZCBm
dW5jdGlvbihjb25zdCBVbmlxdWU8QT4gYSkKK3sKKyAgICBjb25zdCBBJiBiID0gYS5nZXQoKTsK
KyAgICBjb25zdCBBKiBjID0gJmE7Cit9CisKK1RFU1QoV1RGLCBVbmlxdWUpCit7CisgICAgVW5p
cXVlPEE+IGEgPSBtYWtlVW5pcXVlPEE+KCk7CisgICAgVW5pcXVlPEI+IGIgPSBtYWtlVW5pcXVl
PEI+KDEsIDIsIDMpOworICAgIEImIGMgPSBiLmdldCgpOworICAgIGNvbnN0IEImIGQgPSBiLmdl
dCgpOworICAgIEIqIGUgPSAmYjsKKyAgICBjb25zdCBCKiBmID0gJmI7CisgICAgVW5pcXVlPEE+
IGogPSBXVEZNb3ZlKGEpOworICAgIAorICAgIFZlY3RvcjxVbmlxdWU8Qj4+IHY7CisgICAgdi5h
cHBlbmQobWFrZVVuaXF1ZTxCPig0LCA1LCA2KSk7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZTxC
Pig3LCA4LCA5KSk7CisgICAgVW5pcXVlPEI+IGcgPSB2LnRha2VMYXN0KCk7CisgICAgQVNTRVJU
X0VRKGctPmIsIDgpOworICAgIEFTU0VSVF9FUSh2Lmxhc3QoKS0+YiwgNSk7CisgICAgCisgICAg
QyBoKG1ha2VVbmlxdWU8QT4oKSk7CisgICAgQyBpKG1ha2VVbmlxdWU8RD4oKSk7CisgICAgCisg
ICAgVU5VU0VEX1BBUkFNKGIpOworICAgIFVOVVNFRF9QQVJBTShjKTsKKyAgICBVTlVTRURfUEFS
QU0oZCk7CisgICAgVU5VU0VEX1BBUkFNKGUpOworICAgIFVOVVNFRF9QQVJBTShmKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280990</attachid>
            <date>2016-06-09 22:09:09 -0700</date>
            <delta_ts>2016-06-09 22:21:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158596-20160609221044.patch</filename>
            <type>text/plain</type>
            <size>26071</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVl
UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVEY6
OlVuaXF1ZVJlZiBpcyBsaWtlIGEgc3RkOjp1bmlxdWVfcHRyIHRoYXQgaXMgZ3VhcmFudGVlZCB0
byBiZSBub24tbnVsbC4KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZSByZXR1cm5zIGEgbm9uLW51
bGwgdmFsdWUgdGhhdCBpcyBwdXQgaW50byBhIHN0ZDo6dW5pcXVlX3B0ciwgYSB0eXBlCisgICAg
ICAgIHRoYXQgY291bGQgY29udGFpbiBudWxsIHZhbHVlcy4gIFRvIGJlIGFibGUgdG8gcGFzcyBz
dWNoIHZhbHVlcyBhcm91bmQgYW5kIHN0b3JlIHRoZW0KKyAgICAgICAgd2l0aG91dCB3b25kZXJp
bmcgaWYgdGhleSBhcmUgbnVsbCwgd2Ugbm93IGhhdmUgV1RGOjpVbmlxdWVSZWYgd2hpY2ggY2Fu
bm90IGJlIG51bGwuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5o
OiBBZGRlZC4KKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZik6CisgICAgICAgIChXVEY6OlVu
aXF1ZVJlZjo6VW5pcXVlUmVmKToKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpnZXQpOgorICAg
ICAgICAoV1RGOjpVbmlxdWVSZWY6Om9wZXJhdG9yJik6CisgICAgICAgIChXVEY6OlVuaXF1ZVJl
Zjo6b3BlcmF0b3ItPik6CisKIDIwMTYtMDYtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFVuYWRkcmVzc2VkIHJldmlldyBmZWVkYmFjayBmcm9tIHIyMDE4
NzIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjAxOTAyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMEND
RUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRh
c2suaCAqLzsgfTsKIAkJNTE1Rjc5NTYxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3
OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi87IH07CiAJCTU1MzA3
MUNBMUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBU
aW55TFJVQ2FjaGUuaCAqLzsgfTsKKwkJNUM3Qzg4RDQxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1
ZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3
Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovOyB9OwogCQk3MEE5OTNGRTFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsK
IAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MEExQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovOyB9OwpAQCAtNDMwLDYgKzQzMSw3
IEBACiAJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRUYXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFk
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAw
Mzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmlxdWVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdC
NjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQy
NDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFz
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNzAxNDY4OUM0
NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1Jl
bGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzAsNiArNzcy
LDcgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZE
IC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAq
LywKIAkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcy
ODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCkBAIC0xMTcxLDYgKzExNzQsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4QTQ3Mzg1
MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzdD
ODhENDFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3
IEBAIHNldChXVEZfSEVBREVSUwogICAgIFRocmVhZGluZy5oCiAgICAgVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCiAgICAgVGlueVB0clNldC5oCisgICAgVW5pcXVlUmVmLmgKICAgICBWTVRhZ3MuaAog
ICAgIFZhbHVlQ2hlY2suaAogICAgIFZlY3Rvci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlUmVmOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFy
Z3MpCit7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBVbmlxdWVSZWYg
eworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFVuaXF1ZVJlZihVbmlx
dWVSZWY8VT4mJiBvdGhlcikKKyAgICAgICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCisgICAgVCYgZ2V0KCkgeyBB
U1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3Qg
eyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisKKyAgICBUKiBvcGVyYXRvciYoKSB7
IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIGNvbnN0IFQqIG9wZXJh
dG9yJigpIGNvbnN0IHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKKyAg
ICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0K
KyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
bV9yZWYuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOworCisgICAgVW5pcXVl
UmVmKFQmIG90aGVyKQorICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3JlZik7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VW5pcXVlUmVmOwordXNpbmcgV1RG
OjptYWtlVW5pcXVlUmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxXaXRoRW1wdHlD
bGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpjYW5TdGFydE1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVkaXRvckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnSW5DbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdyb3VwUHRyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAg
ICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorCiAy
MDE2LTA2LTA5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyBpZ25vcmVzIHBvaW50ZXIt
ZXZlbnRzOiBub25lOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjQsNyArODY0LDcg
QEAgUGFnZSogSW5zcGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UoKQogICAgIGlmIChtX292ZXJs
YXlQYWdlKQogICAgICAgICByZXR1cm4gbV9vdmVybGF5UGFnZS5nZXQoKTsKIAotICAgIFBhZ2VD
b25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8RW1wdHlFZGl0b3JDbGllbnQ+KCkpOwogICAg
IGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9uKTsKICAgICBtX292ZXJsYXlQ
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAy
MDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5LDggKzEyOSw2IEBAIHZvaWQgZmlsbFdpdGhFbXB0eUNsaWVudHMoUGFn
ZUNvbmZpZ3VyYXQKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0gJmR1bW15RHJh
Z0NsaWVudC5nZXQoKTsKICNlbmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eUVkaXRvckNsaWVudD4oKTsKLSAgICAKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlJbnNwZWN0b3JDbGllbnQ+IGR1bW15SW5zcGVjdG9y
Q2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9ICZkdW1teUlu
c3BlY3RvckNsaWVudC5nZXQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAy
MDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzgsNyArMjM4LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25m
aQogICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAg
LCBtX2lzQ2xvc2luZyhmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9lZGl0b3JDbGllbnQpOwogICAg
IHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKICAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjAx
OTAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBPUyhTT0xBUklTKQpA
QCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENh
blN0YXJ0TWVkaWEoYm9vbCk7CiAgICAgYm9vbCBjYW5TdGFydE1lZGlhKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5TdGFydE1lZGlhOyB9CiAKLSAgICBFZGl0b3JDbGllbnQmIGVkaXRvckNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuICptX2VkaXRvckNsaWVudDsgfQorICAgIEVkaXRvckNsaWVudCYgZWRp
dG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQuZ2V0KCk7IH0KICAgICBQbHVnSW5D
bGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z0luQ2xpZW50OyB9CiAK
ICAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9
CkBAIC0xNzQsNyArMTc1LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0
cmluZyYgZ3JvdXBOYW1lKCkgY29uc3Q7CiAKICAgICBQYWdlR3JvdXAmIGdyb3VwKCk7Ci0gICAg
UGFnZUdyb3VwKiBncm91cFB0cigpIHsgcmV0dXJuIG1fZ3JvdXA7IH0gLy8gY2FuIHJldHVybiAw
CiAKICAgICBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFnZSYp
Pik7CiAKQEAgLTU4Myw3ICs1ODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFJlbmRlclRo
ZW1lPiBtX3RoZW1lOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVudD4gbV9lZGl0
b3JDbGllbnQ7CisgICAgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4gbV9lZGl0b3JDbGllbnQ7CiAg
ICAgUGx1Z0luQ2xpZW50KiBtX3BsdWdJbkNsaWVudDsKICAgICBWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjAxOTAy
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdlQ29u
ZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VD
b25maWd1cmF0aW9uKFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50KQorICAg
IDogZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKIHsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjAxOTAyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMSArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFnZUNv
bmZpZ3VyYXRpb25faAotI2RlZmluZSBQYWdlQ29uZmlndXJhdGlvbl9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QYWdlQ29uZmlndXJhdGlvbkluY2x1ZGVzLmg+
CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgUGFnZUNv
bmZpZ3VyYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDb25maWd1cmF0aW9u
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UGFnZUNvbmZpZ3VyYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJhdGlv
bihVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZUNv
bmZpZ3VyYXRpb24oKTsKIAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50IHsgbnVsbHB0ciB9OwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xp
ZW50IHsgbnVsbHB0ciB9OwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVu
dD4gZWRpdG9yQ2xpZW50OworICAgIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+IGVkaXRvckNsaWVu
dDsKICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFBsdWdJbkNsaWVudCog
cGx1Z0luQ2xpZW50IHsgbnVsbHB0ciB9OwpAQCAtODksNSArODksMyBAQCBwdWJsaWM6CiB9Owog
CiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNyArMzc5LDcgQEAgYm9vbCBTVkdJbWFn
ZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKLSAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNv
bmZpZ3VyYXRpb247CisgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9u
KG1ha2VVbmlxdWVSZWY8RW1wdHlFZGl0b3JDbGllbnQ+KCkpOwogICAgICAgICBmaWxsV2l0aEVt
cHR5Q2xpZW50cyhwYWdlQ29uZmlndXJhdGlvbik7CiAgICAgICAgIG1fY2hyb21lQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBh
Z2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RG
OjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyk6CisKIDIwMTYtMDYtMDkgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSAtd2Via2l0LW92
ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7IGlnbm9yZXMgcG9pbnRlci1ldmVudHM6IG5vbmU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCwxMiArMzg0LDExIEBAIFdlYlBhZ2U6Oldl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBTZXR0aW5nczo6c2V0U2hvdWxkTWFu
YWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1ZSk7CiAjZW5kaWYKIAotICAgIFBhZ2VDb25maWd1
cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25m
aWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKSk7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0
TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKICNlbmRpZgotICAg
IHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRWRp
dG9yQ2xpZW50Pih0aGlzKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMDkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJ
bnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVy
ZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgRWRpdG9yQ2xpZW50IGxp
ZmV0aW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAy
MDE5MDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTk4Nyw3ICs5ODcsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0
ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKLSAgICBQYWdl
Q29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBw
YWdlQ29uZmlndXJhdGlvbihtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVudD4oc2VsZikpOwog
I2lmICFQTEFURk9STShJT1MpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0g
bmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0
TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsKQEAgLTEwMDQsNyAr
MTAwNCw2IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICNpbXBv
cnQgPFdlYktpdEFkZGl0aW9ucy9XZWJWaWV3SW5pdGlhbGl6YXRpb24ubW0+CiAjZW5kaWYKIAot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
RWRpdG9yQ2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRl
eHRDbGllbnQgPSBuZXcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHNlbGYpOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRl
ckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBu
ZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KHNlbGYpOwpAQCAtMTIzOCw3ICsxMjM3LDcgQEAg
LSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgIF9wcml2YXRlLT5n
cm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3Vw
LT5hZGRXZWJWaWV3KHNlbGYpOwogCi0gICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3Vy
YXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1
ZVJlZihXZWJFZGl0b3JDbGllbnQoc2VsZikpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFn
Q2xpZW50KHNlbGYpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVS
ZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkI6OkIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qzo6Qyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpmdW5jdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAxNi0wNi0wOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQWRkIGNvbW1lbnRzIHRvIGNsYXJpZnkgZmVhdHVyZSBlbmFibGVtZW50CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMTkwMikKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1
LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1N0cmluZ1ZpZXcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1Rl
bXBvcmFyeUNoYW5nZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVW5p
cXVlUmVmLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9WZWN0b3IuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDE5MDIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAzLDYgKzEwMyw3IEBACiAJCTU3OThFMkIwMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25h
bFVSTE5vdENoYW5nZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5n
ZS5tbSAqLzsgfTsKIAkJNTdGMTBEOTMxQzdFN0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFj
dGlvblRydXN0ZWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3Rl
ZC5tbSAqLzsgfTsKIAkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFj
dGlvblRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0
aW9uVHJ1c3RlZC5odG1sICovOyB9OworCQk1QzdDODhENjFEMEEzQUQ3MDA5RDJGNkQgLyogVW5p
cXVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWVSZWYuY3BwICovOyB9OwogCQk3NjQz
MjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2NDMyMkQ1MUI2
MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovOyB9Owog
CQk3NjczNDk5RDE5MzBDNUJCMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NjczNDk5QTE5MzAxODJFMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJp
bmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkREMTU0
NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1NjkxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwpAQCAtNjk4LDYg
KzY5OSw3IEBACiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5v
dENoYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3Zp
c2lvbmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0Yx
MEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElzTmF2aWdhdGlvbkFjdGlvblRy
dXN0ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAw
MEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWVSZWYu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlUmVmLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8q
IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhl
bWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9y
eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY0MzIyRDUxQjYx
Q0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1
dGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2OCw2ICsxMzcwLDcgQEAK
IAkJQkM5MDk2NDYxMjU1NjE4OTAwMDgzNzU2IC8qIFdURiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDUxRDBBM0FENzAwOUQyRjZEIC8qIFVu
aXF1ZVJlZi5jcHAgKi8sCiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAog
CQkJCTdDQkJBMDc1MTlCQjhBMDkwMEJCRjAyNSAvKiBkYXJ3aW4gKi8sCiAJCQkJQkMwMjlCMUEx
NDg2QjIzODAwODE3REE5IC8qIG5zICovLApAQCAtMjA2OCw2ICsyMDcxLDcgQEAKIAkJCQkyNkY2
RTFGMDFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTI2MEJBNTc5MUIxRDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QTk5RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VF
dmVudHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzdDODhENjFEMEEzQUQ3MDA5RDJGNkQgLyog
VW5pcXVlUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOURCOTc5MUIzMjEzN0MwMERCMzhE
NCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworICAgIAorY2xhc3MgQSB7IH07CitjbGFzcyBCIHsKK3B1YmxpYzoKKyAg
ICBCKGludCBhLCBpbnQgYiwgaW50IGMpCisgICAgICAgIDogYShhKQorICAgICAgICAsIGIoYikK
KyAgICAgICAgLCBjKGMpCisgICAgeyB9OworICAgIGludCBhLCBiLCBjOworfTsKK2NsYXNzIEMg
eworcHVibGljOgorICAgIEMoVW5pcXVlUmVmPEE+JiYgYSkKKyAgICAgICAgOiBhKFdURk1vdmUo
YSkpCisgICAgeyB9CisgICAgVW5pcXVlUmVmPEE+IGE7Cit9OworY2xhc3MgRCA6IHB1YmxpYyBB
IHsgfTsKKwordm9pZCBmdW5jdGlvbihjb25zdCBVbmlxdWVSZWY8QT4gYSkKK3sKKyAgICBjb25z
dCBBJiBiID0gYS5nZXQoKTsKKyAgICBjb25zdCBBKiBjID0gJmE7Cit9CisKK1RFU1QoV1RGLCBV
bmlxdWVSZWYpCit7CisgICAgVW5pcXVlUmVmPEE+IGEgPSBtYWtlVW5pcXVlUmVmPEE+KCk7Cisg
ICAgVW5pcXVlUmVmPEI+IGIgPSBtYWtlVW5pcXVlUmVmPEI+KDEsIDIsIDMpOworICAgIEImIGMg
PSBiLmdldCgpOworICAgIGNvbnN0IEImIGQgPSBiLmdldCgpOworICAgIEIqIGUgPSAmYjsKKyAg
ICBjb25zdCBCKiBmID0gJmI7CisgICAgVW5pcXVlUmVmPEE+IGogPSBXVEZNb3ZlKGEpOworICAg
IAorICAgIFZlY3RvcjxVbmlxdWVSZWY8Qj4+IHY7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZVJl
ZjxCPig0LCA1LCA2KSk7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZVJlZjxCPig3LCA4LCA5KSk7
CisgICAgVW5pcXVlUmVmPEI+IGcgPSB2LnRha2VMYXN0KCk7CisgICAgQVNTRVJUX0VRKGctPmIs
IDgpOworICAgIEFTU0VSVF9FUSh2Lmxhc3QoKS0+YiwgNSk7CisgICAgCisgICAgQyBoKG1ha2VV
bmlxdWVSZWY8QT4oKSk7CisgICAgQyBpKG1ha2VVbmlxdWVSZWY8RD4oKSk7CisgICAgCisgICAg
VU5VU0VEX1BBUkFNKGEpOworICAgIFVOVVNFRF9QQVJBTShiKTsKKyAgICBVTlVTRURfUEFSQU0o
Yyk7CisgICAgVU5VU0VEX1BBUkFNKGQpOworICAgIFVOVVNFRF9QQVJBTShlKTsKKyAgICBVTlVT
RURfUEFSQU0oZik7CisgICAgVU5VU0VEX1BBUkFNKGcpOworICAgIFVOVVNFRF9QQVJBTShoKTsK
KyAgICBVTlVTRURfUEFSQU0oaSk7CisgICAgVU5VU0VEX1BBUkFNKGopOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280994</attachid>
            <date>2016-06-09 22:21:56 -0700</date>
            <delta_ts>2016-06-09 23:26:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158596-20160609222331.patch</filename>
            <type>text/plain</type>
            <size>27667</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVl
UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVEY6
OlVuaXF1ZVJlZiBpcyBsaWtlIGEgc3RkOjp1bmlxdWVfcHRyIHRoYXQgaXMgZ3VhcmFudGVlZCB0
byBiZSBub24tbnVsbC4KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZSByZXR1cm5zIGEgbm9uLW51
bGwgdmFsdWUgdGhhdCBpcyBwdXQgaW50byBhIHN0ZDo6dW5pcXVlX3B0ciwgYSB0eXBlCisgICAg
ICAgIHRoYXQgY291bGQgY29udGFpbiBudWxsIHZhbHVlcy4gIFRvIGJlIGFibGUgdG8gcGFzcyBz
dWNoIHZhbHVlcyBhcm91bmQgYW5kIHN0b3JlIHRoZW0KKyAgICAgICAgd2l0aG91dCB3b25kZXJp
bmcgaWYgdGhleSBhcmUgbnVsbCwgd2Ugbm93IGhhdmUgV1RGOjpVbmlxdWVSZWYgd2hpY2ggY2Fu
bm90IGJlIG51bGwuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5o
OiBBZGRlZC4KKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZik6CisgICAgICAgIChXVEY6OlVu
aXF1ZVJlZjo6VW5pcXVlUmVmKToKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpnZXQpOgorICAg
ICAgICAoV1RGOjpVbmlxdWVSZWY6Om9wZXJhdG9yJik6CisgICAgICAgIChXVEY6OlVuaXF1ZVJl
Zjo6b3BlcmF0b3ItPik6CisKIDIwMTYtMDYtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFVuYWRkcmVzc2VkIHJldmlldyBmZWVkYmFjayBmcm9tIHIyMDE4
NzIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjAxOTAyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMEND
RUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRh
c2suaCAqLzsgfTsKIAkJNTE1Rjc5NTYxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3
OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi87IH07CiAJCTU1MzA3
MUNBMUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBU
aW55TFJVQ2FjaGUuaCAqLzsgfTsKKwkJNUM3Qzg4RDQxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1
ZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3
Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovOyB9OwogCQk3MEE5OTNGRTFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsK
IAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MEExQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovOyB9OwpAQCAtNDMwLDYgKzQzMSw3
IEBACiAJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRUYXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFk
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAw
Mzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmlxdWVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdC
NjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQy
NDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFz
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNzAxNDY4OUM0
NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1Jl
bGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzAsNiArNzcy
LDcgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZE
IC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAq
LywKIAkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcy
ODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCkBAIC0xMTcxLDYgKzExNzQsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4QTQ3Mzg1
MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzdD
ODhENDFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3
IEBAIHNldChXVEZfSEVBREVSUwogICAgIFRocmVhZGluZy5oCiAgICAgVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCiAgICAgVGlueVB0clNldC5oCisgICAgVW5pcXVlUmVmLmgKICAgICBWTVRhZ3MuaAog
ICAgIFZhbHVlQ2hlY2suaAogICAgIFZlY3Rvci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlUmVmOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFy
Z3MpCit7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBVbmlxdWVSZWYg
eworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFVuaXF1ZVJlZihVbmlx
dWVSZWY8VT4mJiBvdGhlcikKKyAgICAgICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCisgICAgVCYgZ2V0KCkgeyBB
U1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3Qg
eyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisKKyAgICBUKiBvcGVyYXRvciYoKSB7
IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIGNvbnN0IFQqIG9wZXJh
dG9yJigpIGNvbnN0IHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKKyAg
ICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0K
KyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
bV9yZWYuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOworCisgICAgVW5pcXVl
UmVmKFQmIG90aGVyKQorICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3JlZik7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VW5pcXVlUmVmOwordXNpbmcgV1RG
OjptYWtlVW5pcXVlUmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxXaXRoRW1wdHlD
bGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpjYW5TdGFydE1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVkaXRvckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnSW5DbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdyb3VwUHRyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAg
ICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorCiAy
MDE2LTA2LTA5ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoOyBpZ25vcmVzIHBvaW50ZXIt
ZXZlbnRzOiBub25lOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjQsNyArODY0LDcg
QEAgUGFnZSogSW5zcGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UoKQogICAgIGlmIChtX292ZXJs
YXlQYWdlKQogICAgICAgICByZXR1cm4gbV9vdmVybGF5UGFnZS5nZXQoKTsKIAotICAgIFBhZ2VD
b25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0aW9uIHBh
Z2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8RW1wdHlFZGl0b3JDbGllbnQ+KCkpOwogICAg
IGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9uKTsKICAgICBtX292ZXJsYXlQ
YWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3BwCShyZXZpc2lvbiAy
MDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI5LDggKzEyOSw2IEBAIHZvaWQgZmlsbFdpdGhFbXB0eUNsaWVudHMoUGFn
ZUNvbmZpZ3VyYXQKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50ID0gJmR1bW15RHJh
Z0NsaWVudC5nZXQoKTsKICNlbmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRpb24uZWRpdG9yQ2xp
ZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eUVkaXRvckNsaWVudD4oKTsKLSAgICAKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlJbnNwZWN0b3JDbGllbnQ+IGR1bW15SW5zcGVjdG9y
Q2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9ICZkdW1teUlu
c3BlY3RvckNsaWVudC5nZXQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAy
MDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzgsNyArMjM4LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VDb25m
aQogICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCkpCiAgICAg
LCBtX2lzQ2xvc2luZyhmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9lZGl0b3JDbGllbnQpOwogICAg
IHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKICAgICBtX3N0b3JhZ2VOYW1lc3BhY2VQ
cm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMjAx
OTAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVm
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBPUyhTT0xBUklTKQpA
QCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENh
blN0YXJ0TWVkaWEoYm9vbCk7CiAgICAgYm9vbCBjYW5TdGFydE1lZGlhKCkgY29uc3QgeyByZXR1
cm4gbV9jYW5TdGFydE1lZGlhOyB9CiAKLSAgICBFZGl0b3JDbGllbnQmIGVkaXRvckNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuICptX2VkaXRvckNsaWVudDsgfQorICAgIEVkaXRvckNsaWVudCYgZWRp
dG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQuZ2V0KCk7IH0KICAgICBQbHVnSW5D
bGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z0luQ2xpZW50OyB9CiAK
ICAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZyYW1lLmdldCgpOyB9
CkBAIC0xNzQsNyArMTc1LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IFN0
cmluZyYgZ3JvdXBOYW1lKCkgY29uc3Q7CiAKICAgICBQYWdlR3JvdXAmIGdyb3VwKCk7Ci0gICAg
UGFnZUdyb3VwKiBncm91cFB0cigpIHsgcmV0dXJuIG1fZ3JvdXA7IH0gLy8gY2FuIHJldHVybiAw
CiAKICAgICBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShzdGQ6OmZ1bmN0aW9uPHZvaWQoUGFnZSYp
Pik7CiAKQEAgLTU4Myw3ICs1ODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFJlbmRlclRo
ZW1lPiBtX3RoZW1lOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVudD4gbV9lZGl0
b3JDbGllbnQ7CisgICAgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4gbV9lZGl0b3JDbGllbnQ7CiAg
ICAgUGx1Z0luQ2xpZW50KiBtX3BsdWdJbkNsaWVudDsKICAgICBWYWxpZGF0aW9uTWVzc2FnZUNs
aWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2aXNpb24gMjAxOTAy
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDcgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYWdlQ29u
ZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQorUGFnZUNvbmZpZ3VyYXRpb246OlBhZ2VD
b25maWd1cmF0aW9uKFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9yQ2xpZW50KQorICAg
IDogZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKIHsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjAxOTAyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMSArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNpZm5kZWYgUGFnZUNv
bmZpZ3VyYXRpb25faAotI2RlZmluZSBQYWdlQ29uZmlndXJhdGlvbl9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RL
KQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QYWdlQ29uZmlndXJhdGlvbkluY2x1ZGVzLmg+
CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgUGFnZUNv
bmZpZ3VyYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VDb25maWd1cmF0aW9u
KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
UGFnZUNvbmZpZ3VyYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYWdlQ29uZmlndXJhdGlv
bihVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGFnZUNv
bmZpZ3VyYXRpb24oKTsKIAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCogYWx0ZXJuYXRpdmVU
ZXh0Q2xpZW50IHsgbnVsbHB0ciB9OwpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCiAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNvbnRleHRNZW51Q2xp
ZW50IHsgbnVsbHB0ciB9OwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNsaWVu
dD4gZWRpdG9yQ2xpZW50OworICAgIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+IGVkaXRvckNsaWVu
dDsKICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIEluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFBsdWdJbkNsaWVudCog
cGx1Z0luQ2xpZW50IHsgbnVsbHB0ciB9OwpAQCAtODksNSArODksMyBAQCBwdWJsaWM6CiB9Owog
CiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2Uu
Y3BwCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNyArMzc5LDcgQEAgYm9vbCBTVkdJbWFn
ZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKLSAgICAgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNv
bmZpZ3VyYXRpb247CisgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9u
KG1ha2VVbmlxdWVSZWY8RW1wdHlFZGl0b3JDbGllbnQ+KCkpOwogICAgICAgICBmaWxsV2l0aEVt
cHR5Q2xpZW50cyhwYWdlQ29uZmlndXJhdGlvbik7CiAgICAgICAgIG1fY2hyb21lQ2xpZW50ID0g
c3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7CiAgICAgICAgIHBh
Z2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50LmdldCgpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RG
OjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0Ojpt
X3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyk6CisKIDIwMTYtMDYtMDkgIEFudG9p
bmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSAtd2Via2l0LW92
ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7IGlnbm9yZXMgcG9pbnRlci1ldmVudHM6IG5vbmU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShy
ZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCwxMiArMzg0LDExIEBAIFdlYlBhZ2U6Oldl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBTZXR0aW5nczo6c2V0U2hvdWxkTWFu
YWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1ZSk7CiAjZW5kaWYKIAotICAgIFBhZ2VDb25maWd1
cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25m
aWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKSk7CiAgICAgcGFn
ZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudCh0aGlzKTsK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0
TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKICNlbmRpZgotICAg
IHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRWRp
dG9yQ2xpZW50Pih0aGlzKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQogICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMDYtMDkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJ
bnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3
IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAg
ICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6ZnJhbWU6cHJlZmVy
ZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgRWRpdG9yQ2xpZW50IGxp
ZmV0aW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAy
MDE5MDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTk4Nyw3ICs5ODcsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldp
dGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3VwOjpnZXRPckNyZWF0
ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9yYWdlRGF0YWJhc2VQ
YXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7CiAKLSAgICBQYWdl
Q29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBw
YWdlQ29uZmlndXJhdGlvbihtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVudD4oc2VsZikpOwog
I2lmICFQTEFURk9STShJT1MpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0g
bmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jb250ZXh0
TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsKQEAgLTEwMDQsNyAr
MTAwNCw2IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICNpbXBv
cnQgPFdlYktpdEFkZGl0aW9ucy9XZWJWaWV3SW5pdGlhbGl6YXRpb24ubW0+CiAjZW5kaWYKIAot
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2Vi
RWRpdG9yQ2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5hbHRlcm5hdGl2ZVRl
eHRDbGllbnQgPSBuZXcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHNlbGYpOwogICAgIHBhZ2VD
b25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRl
ckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBu
ZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KHNlbGYpOwpAQCAtMTIzOCw3ICsxMjM3LDcgQEAg
LSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAgIF9wcml2YXRlLT5n
cm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBfcHJpdmF0ZS0+cHJl
ZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3ByaXZhdGUtPmdyb3Vw
LT5hZGRXZWJWaWV3KHNlbGYpOwogCi0gICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3Vy
YXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRpb24obWFrZVVuaXF1
ZVJlZihXZWJFZGl0b3JDbGllbnQoc2VsZikpKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5jaHJv
bWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwogI2lmIEVOQUJMRShEUkFH
X1NVUFBPUlQpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCA9IG5ldyBXZWJEcmFn
Q2xpZW50KHNlbGYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTA1KQorKysg
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9y
Zz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3Ojppbml0V2l0aEZyYW1lKToKKwogMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4
IGFmdGVyIHIyMDE4OTQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyMDE5MDUp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0
LDYgKzE2NCw3IEBACiAjaW5jbHVkZSA8YmluZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgVVNFKENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
R0NvbnRleHQuaD4KQEAgLTI5MDgsMTAgKzI5MDksOSBAQCBIUkVTVUxUIFdlYlZpZXc6OmluaXRX
aXRoRnJhbWUoUkVDVCBmcmFtCiAKICAgICBtX2luc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNw
ZWN0b3JDbGllbnQodGhpcyk7CiAKLSAgICBQYWdlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9u
OworICAgIFBhZ2VDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24obWFrZVVuaXF1ZVJlZjxXZWJF
ZGl0b3JDbGllbnQ+KHRoaXMpKTsKICAgICBjb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5l
dyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNs
aWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsKLSAgICBjb25maWd1cmF0aW9u
LmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKTsK
ICAgICBjb25maWd1cmF0aW9uLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsK
ICAgICBjb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50Owog
ICAgIGNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVS
ZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OkI6OkIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Qzo6Qyk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpmdW5jdGlvbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwog
MjAxNi0wNi0wOSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgQWRkIGNvbW1lbnRzIHRvIGNsYXJpZnkgZmVhdHVyZSBlbmFibGVtZW50CkluZGV4
OiBUb29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMTkwMikKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1
LDcgQEAgc2V0KFRlc3RXVEZfU09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3Rz
L1dURi9TdHJpbmdPcGVyYXRvcnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V1RGL1N0cmluZ1ZpZXcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1Rl
bXBvcmFyeUNoYW5nZS5jcHAKKyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVW5p
cXVlUmVmLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9WZWN0b3IuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDE5MDIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAzLDYgKzEwMyw3IEBACiAJCTU3OThFMkIwMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25h
bFVSTE5vdENoYW5nZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5n
ZS5tbSAqLzsgfTsKIAkJNTdGMTBEOTMxQzdFN0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFj
dGlvblRydXN0ZWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3Rl
ZC5tbSAqLzsgfTsKIAkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFj
dGlvblRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0
aW9uVHJ1c3RlZC5odG1sICovOyB9OworCQk1QzdDODhENjFEMEEzQUQ3MDA5RDJGNkQgLyogVW5p
cXVlUmVmLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWVSZWYuY3BwICovOyB9OwogCQk3NjQz
MjJENzFCNjFDQ0MzMDAyNEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2NDMyMkQ1MUI2
MUNDQTQwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovOyB9Owog
CQk3NjczNDk5RDE5MzBDNUJCMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NjczNDk5QTE5MzAxODJFMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJp
bmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkREMTU0
NzU2OTEwMEYxRkFERCAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1NjkxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwpAQCAtNjk4LDYg
KzY5OSw3IEBACiAJCTU3OThFMkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5v
dENoYW5nZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3Zp
c2lvbmFsVVJMTm90Q2hhbmdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0Yx
MEQ5MjFDN0U3QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElzTmF2aWdhdGlvbkFjdGlvblRy
dXN0ZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAw
MEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWVSZWYu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlUmVmLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8q
IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhl
bWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9y
eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY0MzIyRDUxQjYx
Q0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1
dGVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM2OCw2ICsxMzcwLDcgQEAK
IAkJQkM5MDk2NDYxMjU1NjE4OTAwMDgzNzU2IC8qIFdURiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDUxRDBBM0FENzAwOUQyRjZEIC8qIFVu
aXF1ZVJlZi5jcHAgKi8sCiAJCQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAog
CQkJCTdDQkJBMDc1MTlCQjhBMDkwMEJCRjAyNSAvKiBkYXJ3aW4gKi8sCiAJCQkJQkMwMjlCMUEx
NDg2QjIzODAwODE3REE5IC8qIG5zICovLApAQCAtMjA2OCw2ICsyMDcxLDcgQEAKIAkJCQkyNkY2
RTFGMDFBREM3NDlCMDBERTY5NkIgLyogREZBTWluaW1pemVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTI2MEJBNTc5MUIxRDJFN0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QTk5RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VF
dmVudHMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzdDODhENjFEMEEzQUQ3MDA5RDJGNkQgLyog
VW5pcXVlUmVmLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOURCOTc5MUIzMjEzN0MwMERCMzhE
NCAvKiBOYXZpZ2F0b3JMYW5ndWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgeworICAgIAorY2xhc3MgQSB7IH07CitjbGFzcyBCIHsKK3B1YmxpYzoKKyAg
ICBCKGludCBhLCBpbnQgYiwgaW50IGMpCisgICAgICAgIDogYShhKQorICAgICAgICAsIGIoYikK
KyAgICAgICAgLCBjKGMpCisgICAgeyB9OworICAgIGludCBhLCBiLCBjOworfTsKK2NsYXNzIEMg
eworcHVibGljOgorICAgIEMoVW5pcXVlUmVmPEE+JiYgYSkKKyAgICAgICAgOiBhKFdURk1vdmUo
YSkpCisgICAgeyB9CisgICAgVW5pcXVlUmVmPEE+IGE7Cit9OworY2xhc3MgRCA6IHB1YmxpYyBB
IHsgfTsKKwordm9pZCBmdW5jdGlvbihjb25zdCBVbmlxdWVSZWY8QT4gYSkKK3sKKyAgICBjb25z
dCBBJiBiID0gYS5nZXQoKTsKKyAgICBjb25zdCBBKiBjID0gJmE7Cit9CisKK1RFU1QoV1RGLCBV
bmlxdWVSZWYpCit7CisgICAgVW5pcXVlUmVmPEE+IGEgPSBtYWtlVW5pcXVlUmVmPEE+KCk7Cisg
ICAgVW5pcXVlUmVmPEI+IGIgPSBtYWtlVW5pcXVlUmVmPEI+KDEsIDIsIDMpOworICAgIEImIGMg
PSBiLmdldCgpOworICAgIGNvbnN0IEImIGQgPSBiLmdldCgpOworICAgIEIqIGUgPSAmYjsKKyAg
ICBjb25zdCBCKiBmID0gJmI7CisgICAgVW5pcXVlUmVmPEE+IGogPSBXVEZNb3ZlKGEpOworICAg
IAorICAgIFZlY3RvcjxVbmlxdWVSZWY8Qj4+IHY7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZVJl
ZjxCPig0LCA1LCA2KSk7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZVJlZjxCPig3LCA4LCA5KSk7
CisgICAgVW5pcXVlUmVmPEI+IGcgPSB2LnRha2VMYXN0KCk7CisgICAgQVNTRVJUX0VRKGctPmIs
IDgpOworICAgIEFTU0VSVF9FUSh2Lmxhc3QoKS0+YiwgNSk7CisgICAgCisgICAgQyBoKG1ha2VV
bmlxdWVSZWY8QT4oKSk7CisgICAgQyBpKG1ha2VVbmlxdWVSZWY8RD4oKSk7CisgICAgCisgICAg
VU5VU0VEX1BBUkFNKGEpOworICAgIFVOVVNFRF9QQVJBTShiKTsKKyAgICBVTlVTRURfUEFSQU0o
Yyk7CisgICAgVU5VU0VEX1BBUkFNKGQpOworICAgIFVOVVNFRF9QQVJBTShlKTsKKyAgICBVTlVT
RURfUEFSQU0oZik7CisgICAgVU5VU0VEX1BBUkFNKGcpOworICAgIFVOVVNFRF9QQVJBTShoKTsK
KyAgICBVTlVTRURfUEFSQU0oaSk7CisgICAgVU5VU0VEX1BBUkFNKGopOworfQorCit9IC8vIG5h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280997</attachid>
            <date>2016-06-09 23:26:05 -0700</date>
            <delta_ts>2016-06-09 23:55:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158596-20160609232740.patch</filename>
            <type>text/plain</type>
            <size>27711</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVl
UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVEY6
OlVuaXF1ZVJlZiBpcyBsaWtlIGEgc3RkOjp1bmlxdWVfcHRyIHRoYXQgaXMgZ3VhcmFudGVlZCB0
byBiZSBub24tbnVsbC4KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZSByZXR1cm5zIGEgbm9uLW51
bGwgdmFsdWUgdGhhdCBpcyBwdXQgaW50byBhIHN0ZDo6dW5pcXVlX3B0ciwgYSB0eXBlCisgICAg
ICAgIHRoYXQgY291bGQgY29udGFpbiBudWxsIHZhbHVlcy4gIFRvIGJlIGFibGUgdG8gcGFzcyBz
dWNoIHZhbHVlcyBhcm91bmQgYW5kIHN0b3JlIHRoZW0KKyAgICAgICAgd2l0aG91dCB3b25kZXJp
bmcgaWYgdGhleSBhcmUgbnVsbCwgd2Ugbm93IGhhdmUgV1RGOjpVbmlxdWVSZWYgd2hpY2ggY2Fu
bm90IGJlIG51bGwuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5o
OiBBZGRlZC4KKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZik6CisgICAgICAgIChXVEY6OlVu
aXF1ZVJlZjo6VW5pcXVlUmVmKToKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpnZXQpOgorICAg
ICAgICAoV1RGOjpVbmlxdWVSZWY6Om9wZXJhdG9yJik6CisgICAgICAgIChXVEY6OlVuaXF1ZVJl
Zjo6b3BlcmF0b3ItPik6CisKIDIwMTYtMDYtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFVuYWRkcmVzc2VkIHJldmlldyBmZWVkYmFjayBmcm9tIHIyMDE4
NzIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjAxOTAyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMEND
RUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRh
c2suaCAqLzsgfTsKIAkJNTE1Rjc5NTYxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3
OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi87IH07CiAJCTU1MzA3
MUNBMUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBU
aW55TFJVQ2FjaGUuaCAqLzsgfTsKKwkJNUM3Qzg4RDQxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1
ZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3
Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovOyB9OwogCQk3MEE5OTNGRTFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsK
IAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MEExQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovOyB9OwpAQCAtNDMwLDYgKzQzMSw3
IEBACiAJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRUYXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFk
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAw
Mzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmlxdWVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdC
NjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQy
NDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFz
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNzAxNDY4OUM0
NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1Jl
bGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzAsNiArNzcy
LDcgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZE
IC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAq
LywKIAkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcy
ODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCkBAIC0xMTcxLDYgKzExNzQsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4QTQ3Mzg1
MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzdD
ODhENDFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3
IEBAIHNldChXVEZfSEVBREVSUwogICAgIFRocmVhZGluZy5oCiAgICAgVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCiAgICAgVGlueVB0clNldC5oCisgICAgVW5pcXVlUmVmLmgKICAgICBWTVRhZ3MuaAog
ICAgIFZhbHVlQ2hlY2suaAogICAgIFZlY3Rvci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlUmVmOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFy
Z3MpCit7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBVbmlxdWVSZWYg
eworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFVuaXF1ZVJlZihVbmlx
dWVSZWY8VT4mJiBvdGhlcikKKyAgICAgICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCisgICAgVCYgZ2V0KCkgeyBB
U1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3Qg
eyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisKKyAgICBUKiBvcGVyYXRvciYoKSB7
IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIGNvbnN0IFQqIG9wZXJh
dG9yJigpIGNvbnN0IHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKKyAg
ICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0K
KyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
bV9yZWYuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOworCisgICAgVW5pcXVl
UmVmKFQmIG90aGVyKQorICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3JlZik7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VW5pcXVlUmVmOwordXNpbmcgV1RG
OjptYWtlVW5pcXVlUmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTExKQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxXaXRoRW1wdHlD
bGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpjYW5TdGFydE1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVkaXRvckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnSW5DbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdyb3VwUHRyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAg
ICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorCiAy
MDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgQ2xlYW4gdXAgV2ViQ29yZS52Y3hwcm9qIGFmdGVyIHN3aXRjaGluZyB0byBDTWFr
ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAJKHJldmlzaW9uIDIwMTkwMikKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JPdmVybGF5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODY0LDcgKzg2NCw3IEBAIFBhZ2UqIElu
c3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKICAgICBpZiAobV9vdmVybGF5UGFnZSkKICAg
ICAgICAgcmV0dXJuIG1fb3ZlcmxheVBhZ2UuZ2V0KCk7CiAKLSAgICBQYWdlQ29uZmlndXJhdGlv
biBwYWdlQ29uZmlndXJhdGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJh
dGlvbihtYWtlVW5pcXVlUmVmPEVtcHR5RWRpdG9yQ2xpZW50PigpKTsKICAgICBmaWxsV2l0aEVt
cHR5Q2xpZW50cyhwYWdlQ29uZmlndXJhdGlvbik7CiAgICAgbV9vdmVybGF5UGFnZSA9IHN0ZDo6
bWFrZV91bmlxdWU8UGFnZT4oV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmNwcAkocmV2aXNpb24gMjAxOTAyKQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyOSw4ICsxMjksNiBAQCB2b2lkIGZpbGxXaXRoRW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0
CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCA9ICZkdW1teURyYWdDbGllbnQuZ2V0
KCk7CiAjZW5kaWYKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6
bWFrZV91bmlxdWU8RW1wdHlFZGl0b3JDbGllbnQ+KCk7Ci0gICAgCiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPEVtcHR5SW5zcGVjdG9yQ2xpZW50PiBkdW1teUluc3BlY3RvckNsaWVudDsKICAg
ICBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQgPSAmZHVtbXlJbnNwZWN0b3JDbGll
bnQuZ2V0KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gMjAxOTAyKQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4LDcgKzIz
OCw2IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmkKICAgICAsIG1f
c2Vzc2lvbklEKFNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpKQogICAgICwgbV9pc0Nsb3Np
bmcoZmFsc2UpCiB7Ci0gICAgQVNTRVJUKG1fZWRpdG9yQ2xpZW50KTsKICAgICB1cGRhdGVUaW1l
clRocm90dGxpbmdTdGF0ZSgpOwogCiAgICAgbV9zdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXItPmFk
ZFBhZ2UoKnRoaXMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDIwMTkwMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBA
CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgT1MoU09MQVJJUykKQEAgLTE1Nyw3ICsx
NTgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYW5TdGFydE1lZGlh
KGJvb2wpOwogICAgIGJvb2wgY2FuU3RhcnRNZWRpYSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuU3Rh
cnRNZWRpYTsgfQogCi0gICAgRWRpdG9yQ2xpZW50JiBlZGl0b3JDbGllbnQoKSBjb25zdCB7IHJl
dHVybiAqbV9lZGl0b3JDbGllbnQ7IH0KKyAgICBFZGl0b3JDbGllbnQmIGVkaXRvckNsaWVudCgp
IHsgcmV0dXJuIG1fZWRpdG9yQ2xpZW50LmdldCgpOyB9CiAgICAgUGx1Z0luQ2xpZW50KiBwbHVn
SW5DbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3BsdWdJbkNsaWVudDsgfQogCiAgICAgTWFpbkZy
YW1lJiBtYWluRnJhbWUoKSB7IHJldHVybiBtX21haW5GcmFtZS5nZXQoKTsgfQpAQCAtMTc0LDcg
KzE3NSw2IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBTdHJpbmcmIGdyb3Vw
TmFtZSgpIGNvbnN0OwogCiAgICAgUGFnZUdyb3VwJiBncm91cCgpOwotICAgIFBhZ2VHcm91cCog
Z3JvdXBQdHIoKSB7IHJldHVybiBtX2dyb3VwOyB9IC8vIGNhbiByZXR1cm4gMAogCiAgICAgc3Rh
dGljIHZvaWQgZm9yRWFjaFBhZ2Uoc3RkOjpmdW5jdGlvbjx2b2lkKFBhZ2UmKT4pOwogCkBAIC01
ODMsNyArNTgzLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxSZW5kZXJUaGVtZT4gbV90aGVt
ZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0b3JDbGllbnQ+IG1fZWRpdG9yQ2xpZW50Owor
ICAgIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+IG1fZWRpdG9yQ2xpZW50OwogICAgIFBsdWdJbkNs
aWVudCogbV9wbHVnSW5DbGllbnQ7CiAgICAgVmFsaWRhdGlvbk1lc3NhZ2VDbGllbnQqIG1fdmFs
aWRhdGlvbk1lc3NhZ2VDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPERpYWdub3N0aWNMb2dn
aW5nQ2xpZW50PiBtX2RpYWdub3N0aWNMb2dnaW5nQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5jcHAJKHJldmlzaW9uIDIwMTkwMikKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFnZUNvbmZpZ3VyYXRpb246
OlBhZ2VDb25maWd1cmF0aW9uKCkKK1BhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlv
bihVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmIGVkaXRvckNsaWVudCkKKyAgICA6IGVkaXRvckNs
aWVudChXVEZNb3ZlKGVkaXRvckNsaWVudCkpCiB7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2VDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIwMTkwMikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsMTEgKzIz
LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIFBhZ2VDb25maWd1cmF0aW9u
X2gKLSNkZWZpbmUgUGFnZUNvbmZpZ3VyYXRpb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKICNpbmNsdWRl
IDxXZWJLaXRBZGRpdGlvbnMvUGFnZUNvbmZpZ3VyYXRpb25JbmNsdWRlcy5oPgpAQCAtNTksNyAr
NTksNyBAQCBjbGFzcyBDb250ZXh0TWVudUNsaWVudDsKIGNsYXNzIFBhZ2VDb25maWd1cmF0aW9u
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlQ29uZmlndXJhdGlvbik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFBhZ2VDb25maWd1
cmF0aW9uKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUGFnZUNvbmZpZ3VyYXRpb24oVW5pcXVlUmVm
PEVkaXRvckNsaWVudD4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhZ2VDb25maWd1cmF0aW9u
KCk7CiAKICAgICBBbHRlcm5hdGl2ZVRleHRDbGllbnQqIGFsdGVybmF0aXZlVGV4dENsaWVudCB7
IG51bGxwdHIgfTsKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQogICAgIENvbnRleHRNZW51Q2xpZW50KiBjb250ZXh0TWVudUNsaWVudCB7IG51bGxw
dHIgfTsKICNlbmRpZgotICAgIHN0ZDo6dW5pcXVlX3B0cjxFZGl0b3JDbGllbnQ+IGVkaXRvckNs
aWVudDsKKyAgICBVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiBlZGl0b3JDbGllbnQ7CiAgICAgRHJh
Z0NsaWVudCogZHJhZ0NsaWVudCB7IG51bGxwdHIgfTsKICAgICBJbnNwZWN0b3JDbGllbnQqIGlu
c3BlY3RvckNsaWVudCB7IG51bGxwdHIgfTsKICAgICBQbHVnSW5DbGllbnQqIHBsdWdJbkNsaWVu
dCB7IG51bGxwdHIgfTsKQEAgLTg5LDUgKzg5LDMgQEAgcHVibGljOgogfTsKIAogfQotCi0jZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2aXNp
b24gMjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzc5LDcgKzM3OSw3IEBAIGJvb2wgU1ZHSW1hZ2U6OmRhdGFDaGFu
Z2VkKGJvb2wgYWxsRGF0YVIKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoYWxsRGF0
YVJlY2VpdmVkKSB7Ci0gICAgICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9u
OworICAgICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbihtYWtlVW5pcXVl
UmVmPEVtcHR5RWRpdG9yQ2xpZW50PigpKTsKICAgICAgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMo
cGFnZUNvbmZpZ3VyYXRpb24pOwogICAgICAgICBtX2Nocm9tZUNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8U1ZHSW1hZ2VDaHJvbWVDbGllbnQ+KHRoaXMpOwogICAgICAgICBwYWdlQ29uZmlndXJh
dGlvbi5jaHJvbWVDbGllbnQgPSBtX2Nocm9tZUNsaWVudC5nZXQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDIwMTkwMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVlUmVm
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGREaXNw
YXRjaEZha2VNb3VzZU1vdmVFdmVudHMpOgorCiAyMDE2LTA2LTA5ICBBbnRvaW5lIFF1aW50ICA8
Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gLXdlYmtpdC1vdmVyZmxvdy1zY3Jv
bGxpbmc6IHRvdWNoOyBpZ25vcmVzIHBvaW50ZXItZXZlbnRzOiBub25lOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjAx
OTAyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zODQsMTIgKzM4NCwxMSBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgCiAgICAgU2V0dGluZ3M6OnNldFNob3VsZE1hbmFnZUF1ZGlvU2Vz
c2lvbkNhdGVnb3J5KHRydWUpOwogI2VuZGlmCiAKLSAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdl
Q29uZmlndXJhdGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbiht
YWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVudD4odGhpcykpOwogICAgIHBhZ2VDb25maWd1cmF0
aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQg
PSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQodGhpcyk7CiAjZW5kaWYKLSAgICBwYWdlQ29uZmln
dXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkVkaXRvckNsaWVudD4o
dGhpcyk7CiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5k
cmFnQ2xpZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkwMikKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdU
Rjo6VW5pcXVlUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNTg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY29tbW9uSW5p
dGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAgKC1bV2ViVmll
dyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnByZWZlcmVuY2VzOmdyb3Vw
TmFtZTpdKToKKwogMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIEVkaXRvckNsaWVudCBsaWZldGltZQpJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjAxOTAyKQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05
ODcsNyArOTg3LDcgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQog
ICAgIF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1l
LCBfcHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAg
X3ByaXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCi0gICAgUGFnZUNvbmZpZ3VyYXRp
b24gcGFnZUNvbmZpZ3VyYXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3Vy
YXRpb24obWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpKTsKICNpZiAhUExBVEZP
Uk0oSU9TKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJv
bWVDbGllbnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQg
PSBuZXcgV2ViQ29udGV4dE1lbnVDbGllbnQoc2VsZik7CkBAIC0xMDA0LDcgKzEwMDQsNiBAQCAt
ICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAjaW1wb3J0IDxXZWJLaXRB
ZGRpdGlvbnMvV2ViVmlld0luaXRpYWxpemF0aW9uLm1tPgogI2VuZGlmCiAKLSAgICBwYWdlQ29u
ZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkVkaXRvckNsaWVu
dD4oc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uYWx0ZXJuYXRpdmVUZXh0Q2xpZW50ID0g
bmV3IFdlYkFsdGVybmF0aXZlVGV4dENsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5sb2FkZXJDbGllbnRGb3JNYWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAg
ICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gbmV3IFdlYlByb2dy
ZXNzVHJhY2tlckNsaWVudChzZWxmKTsKQEAgLTEyMzgsNyArMTIzNyw3IEBAIC0gKGlkKWluaXRT
aW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6KE4KICAgICBfcHJpdmF0ZS0+Z3JvdXAgPSBXZWJW
aWV3R3JvdXA6OmdldE9yQ3JlYXRlKGdyb3VwTmFtZSwgX3ByaXZhdGUtPnByZWZlcmVuY2VzLl9s
b2NhbFN0b3JhZ2VEYXRhYmFzZVBhdGgpOwogICAgIF9wcml2YXRlLT5ncm91cC0+YWRkV2ViVmll
dyhzZWxmKTsKIAotICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAg
IFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWYoV2ViRWRp
dG9yQ2xpZW50KHNlbGYpKSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0g
bmV3IFdlYkNocm9tZUNsaWVudElPUyhzZWxmKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudChzZWxm
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkxMCkKKysrIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2LTA2
LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgSW50cm9kdWNlIFdURjo6VW5pcXVlUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aW5p
dFdpdGhGcmFtZSk6CisKIDIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggV2luZG93cyBidWlsZC4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlZpZXcuY3BwCShyZXZpc2lvbiAyMDE5MDkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCw3IEBACiAjaW5jbHVkZSA8Ymlu
ZGluZ3MvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1
ZGUgPHd0Zi9SQU1TaXplLmg+CisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogCiAjaWYgVVNF
KENHKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9DR0NvbnRleHQuaD4KQEAgLTI5MDgsMTAgKzI5
MDksOSBAQCBIUkVTVUxUIFdlYlZpZXc6OmluaXRXaXRoRnJhbWUoUkVDVCBmcmFtCiAKICAgICBt
X2luc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGllbnQodGhpcyk7CiAKLSAgICBQ
YWdlQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0aW9uIGNv
bmZpZ3VyYXRpb24obWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHRoaXMpKTsKICAgICBj
b25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDaHJvbWVDbGllbnQodGhpcyk7CiAg
ICAgY29uZmlndXJhdGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNs
aWVudCh0aGlzKTsKLSAgICBjb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKTsKICAgICBjb25maWd1cmF0aW9uLmRyYWdDbGll
bnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlzKTsKICAgICBjb25maWd1cmF0aW9uLmluc3BlY3Rv
ckNsaWVudCA9IG1faW5zcGVjdG9yQ2xpZW50OwogICAgIGNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xp
ZW50Rm9yTWFpbkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwpJbmRleDogVG9vbHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTE0
KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIw
MTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VbmlxdWVSZWYuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkI6OkIpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6Qzo6Qyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmdW5jdGlvbik6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wNi0wOSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENsZWFuIHVwIFRvb2xzICou
dmN4cHJvaiBhZnRlciBzd2l0Y2hpbmcgdG8gQ01ha2UuCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDIwMTkwMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAgc2V0KFRlc3RXVEZf
U09VUkNFUwogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9TdHJpbmdPcGVyYXRv
cnMuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3Bw
CiAgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1RlbXBvcmFyeUNoYW5nZS5jcHAK
KyAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNwcAogICAgICR7
VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9WZWN0b3IuY3BwCiAgICAgJHtURVNUV0VCS0lU
QVBJX0RJUn0vVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKICAgICAke1RFU1RXRUJLSVRBUElfRElS
fS9UZXN0cy9XVEYvV2Vha1B0ci5jcHAKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAyMDE5MDIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTAzLDYgKzEwMyw3IEBACiAJ
CTU3OThFMkIwMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3OThFMkFGMUNB
RjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLzsgfTsKIAkJNTdG
MTBEOTMxQzdFN0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0YxMEQ5MjFDN0U3
QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLzsgfTsKIAkJNTdG
NTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Y1
NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sICov
OyB9OworCQk1QzdDODhENjFEMEEzQUQ3MDA5RDJGNkQgLyogVW5pcXVlUmVmLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDN0M4OEQ1MUQwQTNBRDcw
MDlEMkY2RCAvKiBVbmlxdWVSZWYuY3BwICovOyB9OwogCQk3NjQzMjJENzFCNjFDQ0MzMDAyNEY4
MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBX
b3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovOyB9OwogCQk3NjczNDk5RDE5MzBDNUJC
MDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRs
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Njcz
NDk5QTE5MzAxODJFMDBFNDRERjkgLyogU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkX2J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkREMTU0NzU2OTEwMEYxRkFERCAvKiBX
aWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NkUxODJEQzE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRT
dWJtaXRFdmVudF9CdW5kbGUuY3BwICovOyB9OwpAQCAtNjk4LDYgKzY5OSw3IEBACiAJCTU3OThF
MkFGMUNBRjVDMjgwMEM1Q0JBMCAvKiBQcm92aXNpb25hbFVSTE5vdENoYW5nZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByb3Zpc2lvbmFsVVJMTm90Q2hhbmdl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0YxMEQ5MjFDN0U3QjM4MDBFQ0RG
MzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAwMEYzMUQ3RSAvKiBJc05hdmln
YXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJc05h
dmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWVSZWYuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5pcXVlUmVmLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzU2MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8qIE1lbW9yeUNhY2hlQWRkSW1h
Z2VUb0NhY2hlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc1RjMxMzNGMThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0
YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRXBoZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY0MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8qIFdv
cmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTM2OCw2ICsxMzcwLDcgQEAKIAkJQkM5MDk2NDYxMjU1NjE4
OTAwMDgzNzU2IC8qIFdURiAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJNUM3Qzg4RDUxRDBBM0FENzAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5jcHAgKi8sCiAJ
CQkJQzA5OTFDNEYxNDNDN0Q2ODAwNzk5OEYyIC8qIGNmICovLAogCQkJCTdDQkJBMDc1MTlCQjhB
MDkwMEJCRjAyNSAvKiBkYXJ3aW4gKi8sCiAJCQkJQkMwMjlCMUExNDg2QjIzODAwODE3REE5IC8q
IG5zICovLApAQCAtMjA2OCw2ICsyMDcxLDcgQEAKIAkJCQkyNkY2RTFGMDFBREM3NDlCMDBERTY5
NkIgLyogREZBTWluaW1pemVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MEJBNTc5MUIxRDJF
N0IwMDRGQTA3QyAvKiBERkFDb21iaW5lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTk5RDk5
NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1QzdDODhENjFEMEEzQUQ3MDA5RDJGNkQgLyogVW5pcXVlUmVmLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxOURCOTc5MUIzMjEzN0MwMERCMzhENCAvKiBOYXZpZ2F0b3JMYW5n
dWFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5p
cXVlUmVmLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9V
bmlxdWVSZWYuY3BwCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVW5pcXVlUmVmLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworICAg
IAorY2xhc3MgQSB7IH07CitjbGFzcyBCIHsKK3B1YmxpYzoKKyAgICBCKGludCBhLCBpbnQgYiwg
aW50IGMpCisgICAgICAgIDogYShhKQorICAgICAgICAsIGIoYikKKyAgICAgICAgLCBjKGMpCisg
ICAgeyB9OworICAgIGludCBhOworICAgIGludCBiOworICAgIGludCBjOworfTsKK2NsYXNzIEMg
eworcHVibGljOgorICAgIEMoVW5pcXVlUmVmPEE+JiYgYSkKKyAgICAgICAgOiBhKFdURk1vdmUo
YSkpCisgICAgeyB9CisgICAgVW5pcXVlUmVmPEE+IGE7Cit9OworY2xhc3MgRCA6IHB1YmxpYyBB
IHsgfTsKKwordm9pZCBmdW5jdGlvbihjb25zdCBVbmlxdWVSZWY8QT4gYSkKK3sKKyAgICBjb25z
dCBBJiBiID0gYS5nZXQoKTsKKyAgICBjb25zdCBBKiBjID0gJmE7CisgICAgVU5VU0VEX1BBUkFN
KGIpOworICAgIFVOVVNFRF9QQVJBTShjKTsKK30KKworVEVTVChXVEYsIFVuaXF1ZVJlZikKK3sK
KyAgICBVbmlxdWVSZWY8QT4gYSA9IG1ha2VVbmlxdWVSZWY8QT4oKTsKKyAgICBVbmlxdWVSZWY8
Qj4gYiA9IG1ha2VVbmlxdWVSZWY8Qj4oMSwgMiwgMyk7CisgICAgQiYgYyA9IGIuZ2V0KCk7Cisg
ICAgY29uc3QgQiYgZCA9IGIuZ2V0KCk7CisgICAgQiogZSA9ICZiOworICAgIGNvbnN0IEIqIGYg
PSAmYjsKKyAgICBVbmlxdWVSZWY8QT4gaiA9IFdURk1vdmUoYSk7CisgICAgCisgICAgVmVjdG9y
PFVuaXF1ZVJlZjxCPj4gdjsKKyAgICB2LmFwcGVuZChtYWtlVW5pcXVlUmVmPEI+KDQsIDUsIDYp
KTsKKyAgICB2LmFwcGVuZChtYWtlVW5pcXVlUmVmPEI+KDcsIDgsIDkpKTsKKyAgICBVbmlxdWVS
ZWY8Qj4gZyA9IHYudGFrZUxhc3QoKTsKKyAgICBBU1NFUlRfRVEoZy0+YiwgOCk7CisgICAgQVNT
RVJUX0VRKHYubGFzdCgpLT5iLCA1KTsKKyAgICAKKyAgICBDIGgobWFrZVVuaXF1ZVJlZjxBPigp
KTsKKyAgICBDIGkobWFrZVVuaXF1ZVJlZjxEPigpKTsKKyAgICAKKyAgICBVTlVTRURfUEFSQU0o
YSk7CisgICAgVU5VU0VEX1BBUkFNKGIpOworICAgIFVOVVNFRF9QQVJBTShjKTsKKyAgICBVTlVT
RURfUEFSQU0oZCk7CisgICAgVU5VU0VEX1BBUkFNKGUpOworICAgIFVOVVNFRF9QQVJBTShmKTsK
KyAgICBVTlVTRURfUEFSQU0oZyk7CisgICAgVU5VU0VEX1BBUkFNKGgpOworICAgIFVOVVNFRF9Q
QVJBTShpKTsKKyAgICBVTlVTRURfUEFSQU0oaik7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280999</attachid>
            <date>2016-06-09 23:55:43 -0700</date>
            <delta_ts>2016-06-10 14:16:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158596-20160609235718.patch</filename>
            <type>text/plain</type>
            <size>28111</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVl
UmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1
OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXVEY6
OlVuaXF1ZVJlZiBpcyBsaWtlIGEgc3RkOjp1bmlxdWVfcHRyIHRoYXQgaXMgZ3VhcmFudGVlZCB0
byBiZSBub24tbnVsbC4KKyAgICAgICAgc3RkOjptYWtlX3VuaXF1ZSByZXR1cm5zIGEgbm9uLW51
bGwgdmFsdWUgdGhhdCBpcyBwdXQgaW50byBhIHN0ZDo6dW5pcXVlX3B0ciwgYSB0eXBlCisgICAg
ICAgIHRoYXQgY291bGQgY29udGFpbiBudWxsIHZhbHVlcy4gIFRvIGJlIGFibGUgdG8gcGFzcyBz
dWNoIHZhbHVlcyBhcm91bmQgYW5kIHN0b3JlIHRoZW0KKyAgICAgICAgd2l0aG91dCB3b25kZXJp
bmcgaWYgdGhleSBhcmUgbnVsbCwgd2Ugbm93IGhhdmUgV1RGOjpVbmlxdWVSZWYgd2hpY2ggY2Fu
bm90IGJlIG51bGwuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1VuaXF1ZVJlZi5o
OiBBZGRlZC4KKyAgICAgICAgKFdURjo6bWFrZVVuaXF1ZVJlZik6CisgICAgICAgIChXVEY6OlVu
aXF1ZVJlZjo6VW5pcXVlUmVmKToKKyAgICAgICAgKFdURjo6VW5pcXVlUmVmOjpnZXQpOgorICAg
ICAgICAoV1RGOjpVbmlxdWVSZWY6Om9wZXJhdG9yJik6CisgICAgICAgIChXVEY6OlVuaXF1ZVJl
Zjo6b3BlcmF0b3ItPik6CisKIDIwMTYtMDYtMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFVuYWRkcmVzc2VkIHJldmlldyBmZWVkYmFjayBmcm9tIHIyMDE4
NzIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjAxOTAyKQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBACiAJCTUxNUY3OTUwMUNGQzlGNEEwMEND
RUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRh
c2suaCAqLzsgfTsKIAkJNTE1Rjc5NTYxQ0ZEM0E2OTAwQ0NFRDkzIC8qIENyb3NzVGhyZWFkUXVl
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY3
OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFF1ZXVlLmggKi87IH07CiAJCTU1MzA3
MUNBMUM0MDQyNzIwMDM4NDg5OCAvKiBUaW55TFJVQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzA3MUM5MUM0MDQyNzIwMDM4NDg5OCAvKiBU
aW55TFJVQ2FjaGUuaCAqLzsgfTsKKwkJNUM3Qzg4RDQxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1
ZVJlZi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3
Qzg4RDMxRDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovOyB9OwogCQk3MEE5OTNGRTFB
RDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBBOTkzRkMxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmNwcCAqLzsgfTsKIAkJNzBBOTkzRkYxQUQ3MTUxMzAwRkE2MTVCIC8qIFN5
bWJvbFJlZ2lzdHJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MEE5OTNGRDFBRDcxNTEzMDBGQTYxNUIgLyogU3ltYm9sUmVnaXN0cnkuaCAqLzsgfTsK
IAkJNzBFQ0E2MEQxQjAyNDI2ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQ0E2MEExQjAyNDI2
ODAwNDQ5NzM5IC8qIEF0b21pY1N0cmluZ0ltcGwuY3BwICovOyB9OwpAQCAtNDMwLDYgKzQzMSw3
IEBACiAJCTUxNUY3OTREMUNGQzlGNEEwMENDRUQ5MyAvKiBDcm9zc1RocmVhZFRhc2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NUaHJlYWRUYXNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNUY3OTU1MUNGRDNBNjkwMENDRUQ5MyAvKiBDcm9zc1Ro
cmVhZFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzVGhyZWFk
UXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTUzMDcxQzkxQzQwNDI3MjAw
Mzg0ODk4IC8qIFRpbnlMUlVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaW55TFJVQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM3Qzg4RDMx
RDBBM0EwQTAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBVbmlxdWVSZWYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdC
NjIxNDY4OUI4NjAwRTc4Qjc2IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBhcmNoaXZlLmFyOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNUQy
NDdCNkUxNDY4OUM0NzAwRTc4Qjc2IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFz
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUQyNDdCNzAxNDY4OUM0
NzAwRTc4Qjc2IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1Jl
bGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzAsNiArNzcy
LDcgQEAKIAkJQTg3NkRCRDYxNTE4MTZFNTAwREFEQjk1IC8qIHd0ZiAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUM3Qzg4RDMxRDBBM0EwQTAwOUQyRjZE
IC8qIFVuaXF1ZVJlZi5oICovLAogCQkJCTJDREVEMEYwMTgxMTVDM0YwMDREQkE3MCAvKiBjZiAq
LywKIAkJCQlFNEEwQUQzQjFBOTYyNTE5MDA1MzZERjYgLyogY29jb2EgKi8sCiAJCQkJQThBNDcy
ODExNTFBODI1QTAwNDEyM0ZGIC8qIGR0b2EgKi8sCkBAIC0xMTcxLDYgKzExNzQsNyBAQAogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUE4QTQ3Mzg1
MTUxQTgyNUIwMDQxMjNGRiAvKiBBU0NJSUNUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzdD
ODhENDFEMEEzQTBBMDA5RDJGNkQgLyogVW5pcXVlUmVmLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
OEE0NzQzNDE1MUE4MjVCMDA0MTIzRkYgLyogQVNDSUlGYXN0UGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQThBNDczODcxNTFBODI1QjAwNDEyM0ZGIC8qIEFzc2VydGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE4QTQ3Mzg4MTUxQTgyNUIwMDQxMjNGRiAvKiBBdG9taWNzLmggaW4gSGVhZGVy
cyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3Vy
Y2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw3
IEBAIHNldChXVEZfSEVBREVSUwogICAgIFRocmVhZGluZy5oCiAgICAgVGhyZWFkaW5nUHJpbWl0
aXZlcy5oCiAgICAgVGlueVB0clNldC5oCisgICAgVW5pcXVlUmVmLmgKICAgICBWTVRhZ3MuaAog
ICAgIFZhbHVlQ2hlY2suaAogICAgIFZlY3Rvci5oCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Vbmlx
dWVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9VbmlxdWVSZWYuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XVEYvd3RmL1VuaXF1ZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG1lbW9y
eT4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gY2xhc3MgVW5pcXVlUmVmOworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCBjbGFzcy4uLiBBcmdzPgorVW5pcXVlUmVmPFQ+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uIGFy
Z3MpCit7CisgICAgcmV0dXJuIFVuaXF1ZVJlZjxUPigqbmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+
KGFyZ3MpLi4uKSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitjbGFzcyBVbmlxdWVSZWYg
eworcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBVPgorICAgIFVuaXF1ZVJlZihVbmlx
dWVSZWY8VT4mJiBvdGhlcikKKyAgICAgICAgOiBtX3JlZihXVEZNb3ZlKG90aGVyLm1fcmVmKSkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlZik7CisgICAgfQorCisgICAgVCYgZ2V0KCkgeyBB
U1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisgICAgY29uc3QgVCYgZ2V0KCkgY29uc3Qg
eyBBU1NFUlQobV9yZWYpOyByZXR1cm4gKm1fcmVmOyB9CisKKyAgICBUKiBvcGVyYXRvciYoKSB7
IEFTU0VSVChtX3JlZik7IHJldHVybiBtX3JlZi5nZXQoKTsgfQorICAgIGNvbnN0IFQqIG9wZXJh
dG9yJigpIGNvbnN0IHsgQVNTRVJUKG1fcmVmKTsgcmV0dXJuIG1fcmVmLmdldCgpOyB9CisKKyAg
ICBUKiBvcGVyYXRvci0+KCkgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4gbV9yZWYuZ2V0KCk7IH0K
KyAgICBjb25zdCBUKiBvcGVyYXRvci0+KCkgY29uc3QgeyBBU1NFUlQobV9yZWYpOyByZXR1cm4g
bV9yZWYuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZTxjbGFzcyBVLCBjbGFzcy4u
LiBBcmdzPiBmcmllbmQgVW5pcXVlUmVmPFU+IG1ha2VVbmlxdWVSZWYoQXJncyYmLi4uKTsKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBVPiBmcmllbmQgY2xhc3MgVW5pcXVlUmVmOworCisgICAgVW5pcXVl
UmVmKFQmIG90aGVyKQorICAgICAgICA6IG1fcmVmKCZvdGhlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3JlZik7CisgICAgfQorCisgICAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1fcmVmOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV1RGCisKK3VzaW5nIFdURjo6VW5pcXVlUmVmOwordXNpbmcgV1RG
OjptYWtlVW5pcXVlUmVmOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTE2KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gIE5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKToKKyAgICAgICAgKiBs
b2FkZXIvRW1wdHlDbGllbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGxXaXRoRW1wdHlD
bGllbnRzKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZTo6UGFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpjYW5TdGFydE1lZGlhKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmVkaXRvckNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpwbHVnSW5DbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZTo6bWFpbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Omdyb3VwUHRyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2VDb25maWd1cmF0aW9uOjpQYWdlQ29uZmlndXJhdGlvbik6CisgICAgICAg
ICogcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJ
bWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZGF0YUNoYW5nZWQpOgorCiAy
MDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgRml4IENNYWtlIGJ1aWxkLgpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck92ZXJsYXkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
NjQsNyArODY0LDcgQEAgUGFnZSogSW5zcGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UoKQogICAg
IGlmIChtX292ZXJsYXlQYWdlKQogICAgICAgICByZXR1cm4gbV9vdmVybGF5UGFnZS5nZXQoKTsK
IAotICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25m
aWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8RW1wdHlFZGl0b3JDbGll
bnQ+KCkpOwogICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDb25maWd1cmF0aW9uKTsKICAg
ICBtX292ZXJsYXlQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihXVEZNb3ZlKHBhZ2VDb25m
aWd1cmF0aW9uKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuY3Bw
CShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDggKzEyOSw2IEBAIHZvaWQgZmlsbFdpdGhFbXB0
eUNsaWVudHMoUGFnZUNvbmZpZ3VyYXQKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kcmFnQ2xpZW50
ID0gJmR1bW15RHJhZ0NsaWVudC5nZXQoKTsKICNlbmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRp
b24uZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxFbXB0eUVkaXRvckNsaWVudD4oKTsK
LSAgICAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlJbnNwZWN0b3JDbGllbnQ+IGR1
bW15SW5zcGVjdG9yQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVu
dCA9ICZkdW1teUluc3BlY3RvckNsaWVudC5nZXQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMzgsNyArMjM4LDYgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlv
biYmIHBhZ2VDb25maQogICAgICwgbV9zZXNzaW9uSUQoU2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCkpCiAgICAgLCBtX2lzQ2xvc2luZyhmYWxzZSkKIHsKLSAgICBBU1NFUlQobV9lZGl0b3JD
bGllbnQpOwogICAgIHVwZGF0ZVRpbWVyVGhyb3R0bGluZ1N0YXRlKCk7CiAKICAgICBtX3N0b3Jh
Z2VOYW1lc3BhY2VQcm92aWRlci0+YWRkUGFnZSgqdGhpcyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAko
cmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBP
UyhTT0xBUklTKQpAQCAtMTU3LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldENhblN0YXJ0TWVkaWEoYm9vbCk7CiAgICAgYm9vbCBjYW5TdGFydE1lZGlhKCkg
Y29uc3QgeyByZXR1cm4gbV9jYW5TdGFydE1lZGlhOyB9CiAKLSAgICBFZGl0b3JDbGllbnQmIGVk
aXRvckNsaWVudCgpIGNvbnN0IHsgcmV0dXJuICptX2VkaXRvckNsaWVudDsgfQorICAgIEVkaXRv
ckNsaWVudCYgZWRpdG9yQ2xpZW50KCkgeyByZXR1cm4gbV9lZGl0b3JDbGllbnQuZ2V0KCk7IH0K
ICAgICBQbHVnSW5DbGllbnQqIHBsdWdJbkNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z0lu
Q2xpZW50OyB9CiAKICAgICBNYWluRnJhbWUmIG1haW5GcmFtZSgpIHsgcmV0dXJuIG1fbWFpbkZy
YW1lLmdldCgpOyB9CkBAIC0xNzQsNyArMTc1LDYgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lKCkgY29uc3Q7CiAKICAgICBQYWdlR3JvdXAmIGdy
b3VwKCk7Ci0gICAgUGFnZUdyb3VwKiBncm91cFB0cigpIHsgcmV0dXJuIG1fZ3JvdXA7IH0gLy8g
Y2FuIHJldHVybiAwCiAKICAgICBzdGF0aWMgdm9pZCBmb3JFYWNoUGFnZShzdGQ6OmZ1bmN0aW9u
PHZvaWQoUGFnZSYpPik7CiAKQEAgLTU4Myw3ICs1ODMsNyBAQCBwcml2YXRlOgogCiAgICAgUmVm
UHRyPFJlbmRlclRoZW1lPiBtX3RoZW1lOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVkaXRvckNs
aWVudD4gbV9lZGl0b3JDbGllbnQ7CisgICAgVW5pcXVlUmVmPEVkaXRvckNsaWVudD4gbV9lZGl0
b3JDbGllbnQ7CiAgICAgUGx1Z0luQ2xpZW50KiBtX3BsdWdJbkNsaWVudDsKICAgICBWYWxpZGF0
aW9uTWVzc2FnZUNsaWVudCogbV92YWxpZGF0aW9uTWVzc2FnZUNsaWVudDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+IG1fZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VDb25maWd1cmF0aW9uLmNwcAkocmV2
aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1QYWdlQ29uZmlndXJhdGlvbjo6UGFnZUNvbmZpZ3VyYXRpb24oKQorUGFnZUNvbmZpZ3Vy
YXRpb246OlBhZ2VDb25maWd1cmF0aW9uKFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+JiYgZWRpdG9y
Q2xpZW50KQorICAgIDogZWRpdG9yQ2xpZW50KFdURk1vdmUoZWRpdG9yQ2xpZW50KSkKIHsKIH0K
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24g
MjAxOTAyKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMywxMSArMjMsMTEgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLSNp
Zm5kZWYgUGFnZUNvbmZpZ3VyYXRpb25faAotI2RlZmluZSBQYWdlQ29uZmlndXJhdGlvbl9oCisj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAKICNpZiBVU0UoQVBQTEVf
SU5URVJOQUxfU0RLKQogI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9QYWdlQ29uZmlndXJhdGlv
bkluY2x1ZGVzLmg+CkBAIC01OSw3ICs1OSw3IEBAIGNsYXNzIENvbnRleHRNZW51Q2xpZW50Owog
Y2xhc3MgUGFnZUNvbmZpZ3VyYXRpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VD
b25maWd1cmF0aW9uKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUGFnZUNvbmZpZ3VyYXRpb24oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBQYWdl
Q29uZmlndXJhdGlvbihVbmlxdWVSZWY8RWRpdG9yQ2xpZW50PiYmKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB+UGFnZUNvbmZpZ3VyYXRpb24oKTsKIAogICAgIEFsdGVybmF0aXZlVGV4dENsaWVudCog
YWx0ZXJuYXRpdmVUZXh0Q2xpZW50IHsgbnVsbHB0ciB9OwpAQCAtNjcsNyArNjcsNyBAQCBwdWJs
aWM6CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgQ29udGV4dE1lbnVDbGllbnQqIGNv
bnRleHRNZW51Q2xpZW50IHsgbnVsbHB0ciB9OwogI2VuZGlmCi0gICAgc3RkOjp1bmlxdWVfcHRy
PEVkaXRvckNsaWVudD4gZWRpdG9yQ2xpZW50OworICAgIFVuaXF1ZVJlZjxFZGl0b3JDbGllbnQ+
IGVkaXRvckNsaWVudDsKICAgICBEcmFnQ2xpZW50KiBkcmFnQ2xpZW50IHsgbnVsbHB0ciB9Owog
ICAgIEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50IHsgbnVsbHB0ciB9OwogICAgIFBs
dWdJbkNsaWVudCogcGx1Z0luQ2xpZW50IHsgbnVsbHB0ciB9OwpAQCAtODksNSArODksMyBAQCBw
dWJsaWM6CiB9OwogCiB9Ci0KLSNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBo
aWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzksNyArMzc5LDcgQEAg
Ym9vbCBTVkdJbWFnZTo6ZGF0YUNoYW5nZWQoYm9vbCBhbGxEYXRhUgogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIGlmIChhbGxEYXRhUmVjZWl2ZWQpIHsKLSAgICAgICAgUGFnZUNvbmZpZ3Vy
YXRpb24gcGFnZUNvbmZpZ3VyYXRpb247CisgICAgICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VD
b25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8RW1wdHlFZGl0b3JDbGllbnQ+KCkpOwogICAgICAg
ICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdlQ29uZmlndXJhdGlvbik7CiAgICAgICAgIG1fY2hy
b21lQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxTVkdJbWFnZUNocm9tZUNsaWVudD4odGhpcyk7
CiAgICAgICAgIHBhZ2VDb25maWd1cmF0aW9uLmNocm9tZUNsaWVudCA9IG1fY2hyb21lQ2xpZW50
LmdldCgpOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMDYtMDkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBJ
bnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAg
ICAoV2ViS2l0OjptX3Nob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyk6CisKIDIwMTYt
MDYtMDkgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7IGlnbm9yZXMgcG9pbnRlci1ldmVu
dHM6IG5vbmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4NCwxMiArMzg0LDExIEBA
IFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCAKICAgICBTZXR0aW5nczo6
c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1ZSk7CiAjZW5kaWYKIAotICAg
IFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uOworICAgIFBhZ2VDb25maWd1cmF0
aW9uIHBhZ2VDb25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50Pih0aGlz
KSk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hyb21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNs
aWVudCh0aGlzKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudCh0aGlzKTsK
ICNlbmRpZgotICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFrZV91
bmlxdWU8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKTsKICNpZiBFTkFCTEUoRFJBR19TVVBQT1JUKQog
ICAgIHBhZ2VDb25maWd1cmF0aW9uLmRyYWdDbGllbnQgPSBuZXcgV2ViRHJhZ0NsaWVudCh0aGlz
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxOTAyKQorKysgU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBJbnRyb2R1Y2UgV1RGOjpVbmlxdWVSZWYKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1l
Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IGluaXRTaW1wbGVIVE1MRG9jdW1lbnRXaXRoU3R5bGU6
ZnJhbWU6cHJlZmVyZW5jZXM6Z3JvdXBOYW1lOl0pOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ2xlYW4gdXAgRWRp
dG9yQ2xpZW50IGxpZmV0aW1lCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAyMDE5MDIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTk4Nyw3ICs5ODcsNyBAQCAtICh2b2lkKV9jb21tb25Jbml0
aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgX3ByaXZhdGUtPmdyb3VwID0gV2ViVmlld0dyb3Vw
OjpnZXRPckNyZWF0ZShncm91cE5hbWUsIF9wcml2YXRlLT5wcmVmZXJlbmNlcy5fbG9jYWxTdG9y
YWdlRGF0YWJhc2VQYXRoKTsKICAgICBfcHJpdmF0ZS0+Z3JvdXAtPmFkZFdlYlZpZXcoc2VsZik7
CiAKLSAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbjsKKyAgICBQYWdlQ29u
ZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbihtYWtlVW5pcXVlUmVmPFdlYkVkaXRvckNsaWVu
dD4oc2VsZikpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uY2hy
b21lQ2xpZW50ID0gbmV3IFdlYkNocm9tZUNsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJh
dGlvbi5jb250ZXh0TWVudUNsaWVudCA9IG5ldyBXZWJDb250ZXh0TWVudUNsaWVudChzZWxmKTsK
QEAgLTEwMDQsNyArMTAwNCw2IEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZy
YW1lTmEKICNpbXBvcnQgPFdlYktpdEFkZGl0aW9ucy9XZWJWaWV3SW5pdGlhbGl6YXRpb24ubW0+
CiAjZW5kaWYKIAotICAgIHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVudCA9IHN0ZDo6bWFr
ZV91bmlxdWU8V2ViRWRpdG9yQ2xpZW50PihzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5h
bHRlcm5hdGl2ZVRleHRDbGllbnQgPSBuZXcgV2ViQWx0ZXJuYXRpdmVUZXh0Q2xpZW50KHNlbGYp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBX
ZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNr
ZXJDbGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KHNlbGYpOwpAQCAtMTIzOCw3
ICsxMjM3LDcgQEAgLSAoaWQpaW5pdFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogICAg
IF9wcml2YXRlLT5ncm91cCA9IFdlYlZpZXdHcm91cDo6Z2V0T3JDcmVhdGUoZ3JvdXBOYW1lLCBf
cHJpdmF0ZS0+cHJlZmVyZW5jZXMuX2xvY2FsU3RvcmFnZURhdGFiYXNlUGF0aCk7CiAgICAgX3By
aXZhdGUtPmdyb3VwLT5hZGRXZWJWaWV3KHNlbGYpOwogCi0gICAgUGFnZUNvbmZpZ3VyYXRpb24g
cGFnZUNvbmZpZ3VyYXRpb247CisgICAgUGFnZUNvbmZpZ3VyYXRpb24gcGFnZUNvbmZpZ3VyYXRp
b24obWFrZVVuaXF1ZVJlZjxXZWJFZGl0b3JDbGllbnQ+KHNlbGYpKTsKICAgICBwYWdlQ29uZmln
dXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50SU9TKHNlbGYpOwogI2lm
IEVOQUJMRShEUkFHX1NVUFBPUlQpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZHJhZ0NsaWVudCA9
IG5ldyBXZWJEcmFnQ2xpZW50KHNlbGYpOwpAQCAtMTI0OCw3ICsxMjQ3LDYgQEAgLSAoaWQpaW5p
dFNpbXBsZUhUTUxEb2N1bWVudFdpdGhTdHlsZTooTgogI2ltcG9ydCA8V2ViS2l0QWRkaXRpb25z
L1dlYlZpZXdJbml0aWFsaXphdGlvbi5tbT4KICNlbmRpZgogCi0gICAgcGFnZUNvbmZpZ3VyYXRp
b24uZWRpdG9yQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXZWJFZGl0b3JDbGllbnQ+KHNlbGYp
OwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0
b3JDbGllbnQoc2VsZik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ubG9hZGVyQ2xpZW50Rm9yTWFp
bkZyYW1lID0gbmV3IFdlYkZyYW1lTG9hZGVyQ2xpZW50OwogICAgIHBhZ2VDb25maWd1cmF0aW9u
LnByb2dyZXNzVHJhY2tlckNsaWVudCA9IG5ldyBXZWJQcm9ncmVzc1RyYWNrZXJDbGllbnQoc2Vs
Zik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE5MTApCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNi0w
Ni0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIEludHJvZHVjZSBXVEY6OlVuaXF1ZVJlZgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Omlu
aXRXaXRoRnJhbWUpOgorCiAyMDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFdpbmRvd3MgYnVpbGQuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjAxOTA5KQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsNyBAQAogI2luY2x1ZGUgPGJp
bmRpbmdzL1NjcmlwdFZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNs
dWRlIDx3dGYvUkFNU2l6ZS5oPgorI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KIAogI2lmIFVT
RShDRykKICNpbmNsdWRlIDxDb3JlR3JhcGhpY3MvQ0dDb250ZXh0Lmg+CkBAIC0yOTA4LDEwICsy
OTA5LDkgQEAgSFJFU1VMVCBXZWJWaWV3Ojppbml0V2l0aEZyYW1lKFJFQ1QgZnJhbQogCiAgICAg
bV9pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHRoaXMpOwogCi0gICAg
UGFnZUNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBQYWdlQ29uZmlndXJhdGlvbiBj
b25maWd1cmF0aW9uKG1ha2VVbmlxdWVSZWY8V2ViRWRpdG9yQ2xpZW50Pih0aGlzKSk7CiAgICAg
Y29uZmlndXJhdGlvbi5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ2hyb21lQ2xpZW50KHRoaXMpOwog
ICAgIGNvbmZpZ3VyYXRpb24uY29udGV4dE1lbnVDbGllbnQgPSBuZXcgV2ViQ29udGV4dE1lbnVD
bGllbnQodGhpcyk7Ci0gICAgY29uZmlndXJhdGlvbi5lZGl0b3JDbGllbnQgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFdlYkVkaXRvckNsaWVudD4odGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5kcmFnQ2xp
ZW50ID0gbmV3IFdlYkRyYWdDbGllbnQodGhpcyk7CiAgICAgY29uZmlndXJhdGlvbi5pbnNwZWN0
b3JDbGllbnQgPSBtX2luc3BlY3RvckNsaWVudDsKICAgICBjb25maWd1cmF0aW9uLmxvYWRlckNs
aWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTkx
NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisy
MDE2LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgSW50cm9kdWNlIFdURjo6VW5pcXVlUmVmCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVW5pcXVlUmVmLmNw
cDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpCOjpCKToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OkM6OkMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZnVuY3Rpb24pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTYtMDYtMDkgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDbGVhbiB1cCBUb29scyAq
LnZjeHByb2ogYWZ0ZXIgc3dpdGNoaW5nIHRvIENNYWtlLgpJbmRleDogVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMDE5MDIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NSw2ICs3NSw3IEBAIHNldChUZXN0V1RG
X1NPVVJDRVMKICAgICAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvU3RyaW5nT3BlcmF0
b3JzLmNwcAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNw
cAogICAgICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dURi9UZW1wb3JhcnlDaGFuZ2UuY3Bw
CisgICAgJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV1RGL1VuaXF1ZVJlZi5jcHAKICAgICAk
e1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XVEYvVmVjdG9yLmNwcAogICAgICR7VEVTVFdFQktJ
VEFQSV9ESVJ9L1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCiAgICAgJHtURVNUV0VCS0lUQVBJX0RJ
Un0vVGVzdHMvV1RGL1dlYWtQdHIuY3BwCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjAxOTAyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw2ICsxMDMsNyBAQAog
CQk1Nzk4RTJCMDFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Nzk4RTJBRjFD
QUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gKi87IH07CiAJCTU3
RjEwRDkzMUM3RTdCMzgwMEVDREYzMCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGMTBEOTIxQzdF
N0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gKi87IH07CiAJCTU3
RjU2QTVDMUM3RjhDQzEwMEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwg
aW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdG
NTZBNUIxQzdGOEE0MDAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCAq
LzsgfTsKKwkJNUM3Qzg4RDYxRDBBM0FENzAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzdDODhENTFEMEEzQUQ3
MDA5RDJGNkQgLyogVW5pcXVlUmVmLmNwcCAqLzsgfTsKIAkJNzY0MzIyRDcxQjYxQ0NDMzAwMjRG
ODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEgLyog
V29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLzsgfTsKIAkJNzY3MzQ5OUQxOTMwQzVC
QjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3
MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZF9idW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJERDE1NDc1NjkxMDBGMUZBREQgLyog
V2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5k
U3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKQEAgLTY5OCw2ICs2OTksNyBAQAogCQk1Nzk4
RTJBRjFDQUY1QzI4MDBDNUNCQTAgLyogUHJvdmlzaW9uYWxVUkxOb3RDaGFuZ2UubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcm92aXNpb25hbFVSTE5vdENoYW5n
ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGMTBEOTIxQzdFN0IzODAwRUNE
RjMwIC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZp
Z2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSXNO
YXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1QzdDODhENTFEMEEzQUQ3MDA5RDJGNkQgLyogVW5pcXVlUmVmLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuaXF1ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc1NjA5MTc3MTkyNTlDNTkwMDlFRjA2RSAvKiBNZW1vcnlDYWNoZUFkZElt
YWdlVG9DYWNoZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBoZW1lcmFsU2Vzc2lvblB1c2hT
dGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAvKiBX
b3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzNjgsNiArMTM3MCw3IEBACiAJCUJDOTA5NjQ2MTI1NTYx
ODkwMDA4Mzc1NiAvKiBXVEYgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTVDN0M4OEQ1MUQwQTNBRDcwMDlEMkY2RCAvKiBVbmlxdWVSZWYuY3BwICovLAog
CQkJCUMwOTkxQzRGMTQzQzdENjgwMDc5OThGMiAvKiBjZiAqLywKIAkJCQk3Q0JCQTA3NTE5QkI4
QTA5MDBCQkYwMjUgLyogZGFyd2luICovLAogCQkJCUJDMDI5QjFBMTQ4NkIyMzgwMDgxN0RBOSAv
KiBucyAqLywKQEAgLTIwNjgsNiArMjA3MSw3IEBACiAJCQkJMjZGNkUxRjAxQURDNzQ5QjAwREU2
OTZCIC8qIERGQU1pbmltaXplci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyNjBCQTU3OTFCMUQy
RTdCMDA0RkEwN0MgLyogREZBQ29tYmluZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5OUQ5
OTQxQUQ0QTI5RDAwMzczMTQxIC8qIE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJNUM3Qzg4RDYxRDBBM0FENzAwOUQyRjZEIC8qIFVuaXF1ZVJlZi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlFMTlEQjk3OTFCMzIxMzdDMDBEQjM4RDQgLyogTmF2aWdhdG9yTGFu
Z3VhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1Vu
aXF1ZVJlZi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VW5pcXVlUmVmLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1VuaXF1ZVJlZi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyAg
ICAKK2NsYXNzIEEgeyB9OworY2xhc3MgQiB7CitwdWJsaWM6CisgICAgQihpbnQgYSwgaW50IGIs
IGludCBjKQorICAgICAgICA6IGEoYSkKKyAgICAgICAgLCBiKGIpCisgICAgICAgICwgYyhjKQor
ICAgIHsgfTsKKyAgICBpbnQgYTsKKyAgICBpbnQgYjsKKyAgICBpbnQgYzsKK307CitjbGFzcyBD
IHsKK3B1YmxpYzoKKyAgICBDKFVuaXF1ZVJlZjxBPiYmIGEpCisgICAgICAgIDogYShXVEZNb3Zl
KGEpKQorICAgIHsgfQorICAgIFVuaXF1ZVJlZjxBPiBhOworfTsKK2NsYXNzIEQgOiBwdWJsaWMg
QSB7IH07CisKK3ZvaWQgZnVuY3Rpb24oY29uc3QgVW5pcXVlUmVmPEE+IGEpCit7CisgICAgY29u
c3QgQSYgYiA9IGEuZ2V0KCk7CisgICAgY29uc3QgQSogYyA9ICZhOworICAgIFVOVVNFRF9QQVJB
TShiKTsKKyAgICBVTlVTRURfUEFSQU0oYyk7Cit9CisKK1RFU1QoV1RGLCBVbmlxdWVSZWYpCit7
CisgICAgVW5pcXVlUmVmPEE+IGEgPSBtYWtlVW5pcXVlUmVmPEE+KCk7CisgICAgVW5pcXVlUmVm
PEI+IGIgPSBtYWtlVW5pcXVlUmVmPEI+KDEsIDIsIDMpOworICAgIEImIGMgPSBiLmdldCgpOwor
ICAgIGNvbnN0IEImIGQgPSBiLmdldCgpOworICAgIEIqIGUgPSAmYjsKKyAgICBjb25zdCBCKiBm
ID0gJmI7CisgICAgVW5pcXVlUmVmPEE+IGogPSBXVEZNb3ZlKGEpOworICAgIAorICAgIFZlY3Rv
cjxVbmlxdWVSZWY8Qj4+IHY7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZVJlZjxCPig0LCA1LCA2
KSk7CisgICAgdi5hcHBlbmQobWFrZVVuaXF1ZVJlZjxCPig3LCA4LCA5KSk7CisgICAgVW5pcXVl
UmVmPEI+IGcgPSB2LnRha2VMYXN0KCk7CisgICAgQVNTRVJUX0VRKGctPmIsIDgpOworICAgIEFT
U0VSVF9FUSh2Lmxhc3QoKS0+YiwgNSk7CisgICAgCisgICAgQyBoKG1ha2VVbmlxdWVSZWY8QT4o
KSk7CisgICAgQyBpKG1ha2VVbmlxdWVSZWY8RD4oKSk7CisgICAgCisgICAgVU5VU0VEX1BBUkFN
KGEpOworICAgIFVOVVNFRF9QQVJBTShiKTsKKyAgICBVTlVTRURfUEFSQU0oYyk7CisgICAgVU5V
U0VEX1BBUkFNKGQpOworICAgIFVOVVNFRF9QQVJBTShlKTsKKyAgICBVTlVTRURfUEFSQU0oZik7
CisgICAgVU5VU0VEX1BBUkFNKGcpOworICAgIFVOVVNFRF9QQVJBTShoKTsKKyAgICBVTlVTRURf
UEFSQU0oaSk7CisgICAgVU5VU0VEX1BBUkFNKGopOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0
V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="304863"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>