<?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>56394</bug_id>
          
          <creation_ts>2011-03-15 11:42:50 -0700</creation_ts>
          <short_desc>Introduce Local&lt;T&gt; to allow us to start moving to precise marking of locals</short_desc>
          <delta_ts>2011-03-15 23:56:49 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>367824</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-15 11:42:50 -0700</bug_when>
    <thetext>Introduce Local&lt;T&gt; to allow us to start moving to precise marking of locals</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367828</commentid>
    <comment_count>1</comment_count>
      <attachid>85835</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-15 11:47:32 -0700</bug_when>
    <thetext>Created attachment 85835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367845</commentid>
    <comment_count>2</comment_count>
      <attachid>85840</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-15 12:10:28 -0700</bug_when>
    <thetext>Created attachment 85840
Patch

updated to tot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367846</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-15 12:13:29 -0700</bug_when>
    <thetext>Attachment 85840 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Source/JavaScriptCore/runtime/JSONObject.cpp:87:  The parameter name &quot;globalData&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/collector/handles/Local.h:30:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/collector/handles/HandleStack.cpp:28:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Total errors found: 3 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367855</commentid>
    <comment_count>4</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-15 12:31:57 -0700</bug_when>
    <thetext>Attachment 85840 did not build on qt:
Build output: http://queues.webkit.org/results/8177633</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367948</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-15 14:34:24 -0700</bug_when>
    <thetext>Attachment 85840 did not build on win:
Build output: http://queues.webkit.org/results/8183234</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>367985</commentid>
    <comment_count>6</comment_count>
      <attachid>85862</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-15 15:27:37 -0700</bug_when>
    <thetext>Created attachment 85862
Patch

A few more fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368001</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-03-15 15:40:13 -0700</bug_when>
    <thetext>Attachment 85862 did not build on qt:
Build output: http://queues.webkit.org/results/8175778</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368002</commentid>
    <comment_count>8</comment_count>
      <attachid>85862</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-03-15 15:41:32 -0700</bug_when>
    <thetext>Comment on attachment 85862
Patch

r=me, assuming the build is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368019</commentid>
    <comment_count>9</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-03-15 16:13:01 -0700</bug_when>
    <thetext>Committed r81188: &lt;http://trac.webkit.org/changeset/81188&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>368225</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-15 23:56:49 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81188 might have broken WinCE Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85835</attachid>
            <date>2011-03-15 11:47:32 -0700</date>
            <delta_ts>2011-03-15 12:10:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56394-20110315114731.patch</filename>
            <type>text/plain</type>
            <size>31556</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODA5ODcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGIz
YzcyNzczYmNlOTdkYjI4M2JkYjc5YzAxNzI5NGNlYTFmZGRjY2IuLjVmMTJlMDMwM2Q3MzNhM2Zm
ZjEwZTYwMzFiYmY1MWE3MWFlY2Y2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1IEBACisyMDExLTAzLTE1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IExvY2FsPFQ+IHRvIGFsbG93IHVzIHRvIHN0YXJ0IG1vdmluZyB0byBwcmVjaXNlIG1hcmtpbmcg
b2YgbG9jYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjM5NAorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBoYW5kbGUgdHlwZSwgTG9jYWw8VD4g
YW5kIGEgc2NvcGluZyBtZWNoYW5pc20KKyAgICAgICAgTG9jYWxTY29wZSB0byBhbGxvdyB1cyB0
byBzdGFydCBtb3ZpbmcgdG93YXJkcyBwcmVjaXNlIG1hcmtpbmcKKyAgICAgICAgb2YgdGVtcG9y
YXJpZXMgYW5kIGxvY2FsIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNvIHN0YXJ0IHRvIHVz
ZSB0aGUgbmV3IExvY2FsPD4gdHlwZSBpbiB0aGUgSlNPTiBzdHJpbmdpZmllcgorICAgICAgICBz
byB0aGF0IHdlIGNhbiBoYXZlIHNvbWUgY292ZXJhZ2Ugb2YgdGhlaXIgYmVoYXZpb3VyIGluIHRo
ZSBpbml0aWFsCisgICAgICAgIGNoZWNraW4uCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hh
bmRsZVN0YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjpIYW5kbGVT
dGFjayk6CisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjptYXJrKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlU3RhY2s6Omdyb3cpOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZVN0
YWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpIYW5kbGVTdGFjazo6ZW50ZXJTY29wZSk6Cisg
ICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjp6YXBUbyk6CisgICAgICAgIChKU0M6OkhhbmRsZVN0
YWNrOjpsZWF2ZVNjb3BlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlU3RhY2s6OnB1c2gpOgorICAg
ICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0xvY2FsLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
b2NhbDo6aW50ZXJuYWxTZXQpOgorICAgICAgICAoSlNDOjo6OkxvY2FsKToKKyAgICAgICAgKEpT
Qzo6OjpvcGVyYXRvcik6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvTG9jYWxTY29wZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TG9jYWxTY29wZTo6TG9jYWxTY29wZSk6CisgICAgICAg
IChKU0M6OkxvY2FsU2NvcGU6On5Mb2NhbFNjb3BlKToKKyAgICAgICAgKEpTQzo6TG9jYWxTY29w
ZTo6cmVsZWFzZSk6CisgICAgICAgICogcnVudGltZS9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuaDoKKyAgICAgICAgKEpT
Qzo6SGVhcDo6YWxsb2NhdGVMb2NhbEhhbmRsZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmhhbmRs
ZVN0YWNrKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmFsbG9jYXRlTG9jYWxIYW5k
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0
cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBl
bmRTdHJpbmdpZmllZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6
SG9sZGVyKToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjpXYWxrZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNrLmg6CisgICAgICAg
IChKU0M6Ok1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
OjphcHBlbmRTbG90cyk6CisKIDIwMTEtMDMtMTMgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGU0YWNhNmI1NTEwYThiNDAyMTg5ZDkzNTlkYWZhYWQ0YjJlZDZiODAuLjhmNGQ4
NTk2NmExMzM0MWVjNWUzMDAwMDVhMDRlZGI2YzA1OThlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0zNTYsNiArMzU2LDEwIEBACiAJCUE3NERFMUQwMTIwQjg3NTYwMEQ0MEQ1
QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzRERTFDQjEyMEI4NkQ2MDBENDBENUIgLyogQVJNdjdBc3NlbWJsZXIu
Y3BwICovOyB9OwogCQlBNzU3MDZERTExOEEyQkNGMDA1N0Y4OEYgLyogSklUQXJpdGhtZXRpYzMy
XzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwICovOyB9Owog
CQlBNzY2QjQ0RjBFRThEQ0QxMDA5NTE4Q0EgLyogRXhlY3V0YWJsZUFsbG9jYXRvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdCNDhEQjUwRUU3NENG
QzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzZCRTM5RjEzMkVFQTdDMDA4RjdGMEIgLyog
SGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTc2QkUxQjcxMzJEQUM2ODAwOEY3RjBCIC8qIEhhbmRsZVN0YWNrLmNwcCAqLzsgfTsK
KwkJQTc2QkUzQTAxMzJFRUE3QzAwOEY3RjBCIC8qIEhhbmRsZVN0YWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzZCRTFCODEzMkRBQzY4MDA4RjdG
MEIgLyogSGFuZGxlU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBNzZCRTNBMTEzMkVFQTdDMDA4RjdGMEIgLyogTG9jYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3NkJFMUI1MTMyREFCRjUw
MDhGN0YwQiAvKiBMb2NhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCUE3NkJFM0EyMTMyRUVBN0MwMDhGN0YwQiAvKiBMb2NhbFNjb3BlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzZCRTFCNjEzMkRB
QzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUE3NkM1MTc2MTE4Mjc0OEQwMDcxNUIwNSAvKiBKU0ludGVy
ZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi87IH07CiAJCUE3
Nzk1NTkwMTAxQTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk1NThGMTAxQTc0RDUwMDExNEU1NSAvKiBN
YXJrU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlBNzgzQTBEMTExQTM2RENBMDA1NjNEMjAgLyogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzgzQTBE
MDExQTM2RENBMDA1NjNEMjAgLyogSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMzEsNiArMTAzNSwx
MCBAQAogCQlBNzRCMzQ5ODEwMkE1RjhFMDAzMkFCOTggLyogTWFya1N0YWNrLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtTdGFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3NERFMUNCMTIwQjg2RDYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2Vt
Ymxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUk12N0Fzc2Vt
Ymxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NTcwNkREMTE4QTJCQ0Yw
MDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklUQXJpdGhtZXRpYzMyXzY0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTc2QkUxQjUxMzJEQUJGNTAwOEY3RjBCIC8qIExvY2FsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvY2FsLmg7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxl
cy9Mb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNzZCRTFCNjEzMkRBQzI0
MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMb2NhbFNjb3BlLmg7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9Mb2NhbFNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NkJFMUI3MTMyREFDNjgwMDhGN0YwQiAvKiBI
YW5kbGVTdGFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBIYW5k
bGVTdGFjay5jcHA7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVTdGFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NkJFMUI4MTMyREFDNjgwMDhGN0YwQiAvKiBI
YW5kbGVTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBIYW5kbGVTdGFj
ay5oOyBwYXRoID0gY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlU3RhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNl
SklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSW50ZXJmYWNlSklULmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk1NThGMTAxQTc0RDUwMDExNEU1NSAv
KiBNYXJrU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya1N0YWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODNBMEQwMTFBMzZEQ0EwMDU2M0Qy
MCAvKiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDc1LDYgKzIwODMsMTAgQEAKIAkJCQlBN0U0RkM4ODEyRjhFNENBMDBBRjRD
RjQgLyogSGFuZGxlLmggKi8sCiAJCQkJQTdFNEZDODkxMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRs
ZUhlYXAuY3BwICovLAogCQkJCUE3RTRGQzhBMTJGOEU0Q0EwMEFGNENGNCAvKiBIYW5kbGVIZWFw
LmggKi8sCisJCQkJQTc2QkUxQjcxMzJEQUM2ODAwOEY3RjBCIC8qIEhhbmRsZVN0YWNrLmNwcCAq
LywKKwkJCQlBNzZCRTFCODEzMkRBQzY4MDA4RjdGMEIgLyogSGFuZGxlU3RhY2suaCAqLywKKwkJ
CQlBNzZCRTFCNTEzMkRBQkY1MDA4RjdGMEIgLyogTG9jYWwuaCAqLywKKwkJCQlBNzZCRTFCNjEz
MkRBQzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBoYW5k
bGVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI0NTEsNiArMjQ2Myw5IEBACiAJ
CQkJQTdDNDBDMEExMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3RhY2suaCBpbiBIZWFkZXJzICov
LAogCQkJCUE3QzQwQzBCMTMwQjA1N0QwMEQwMDJBMSAvKiBTZW50aW5lbExpbmtlZExpc3QuaCBp
biBIZWFkZXJzICovLAogCQkJCUE3QzQwQzBDMTMwQjA1N0QwMEQwMDJBMSAvKiBTaW5nbHlMaW5r
ZWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzZCRTNBMDEzMkVFQTdDMDA4RjdGMEIgLyog
SGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkJFM0ExMTMyRUVBN0MwMDhGN0Yw
QiAvKiBMb2NhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc2QkUzQTIxMzJFRUE3QzAwOEY3RjBC
IC8qIExvY2FsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg5MCw2ICsyOTA1LDcgQEAKIAkJ
CQk5Nzk0MUE3RTEzMDJBMDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1i
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdFNEZDOTExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhh
bmRsZUhlYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTdBQzI1QkQxMzA0RDE0NjAwMzM5NkRF
IC8qIE1hcmtlZEJsb2NrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NkJFMzlGMTMyRUVBN0Mw
MDhGN0YwQiAvKiBIYW5kbGVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVTdGFjay5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlU3RhY2suY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjUzN2E4YjFlN2I5MzY4Mzc1YTg4YWViN2I5Zjk5YWRlMGUxNTljNmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFu
ZGxlU3RhY2suY3BwCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJIYW5kbGVTdGFjay5oIgorI2luY2x1ZGUgIk1hcmtTdGFjay5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworSGFuZGxlU3RhY2s6OkhhbmRsZVN0YWNrKCkKKyNpZm5k
ZWYgTkRFQlVHCisgICAgOiBtX3Njb3BlRGVwdGgoMCkKKyNlbmRpZgoreworICAgIGdyb3coKTsK
K30KKwordm9pZCBIYW5kbGVTdGFjazo6bWFyayhNYXJrU3RhY2smIG1hcmtTdGFjaykKK3sKKyAg
ICBjb25zdCBWZWN0b3I8SGFuZGxlU2xvdD4mIGJsb2NrcyA9IG1fYmxvY2tTdGFjay5ibG9ja3Mo
KTsKKyAgICBzaXplX3QgYmxvY2tMZW5ndGggPSBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGg7CisK
KyAgICBpbnQgZW5kID0gYmxvY2tzLnNpemUoKSAtIDE7CisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBlbmQ7ICsraSkgeworICAgICAgICBIYW5kbGVTbG90IGJsb2NrID0gYmxvY2tzW2ldOworICAg
ICAgICBtYXJrU3RhY2suYXBwZW5kU2xvdHMoYmxvY2ssIGJsb2NrTGVuZ3RoKTsKKyAgICB9Cisg
ICAgSGFuZGxlU2xvdCBibG9jayA9IGJsb2Nrc1tlbmRdOworICAgIG1hcmtTdGFjay5hcHBlbmRT
bG90cyhibG9jaywgbV9mcmFtZS5tX25leHQgLSBibG9jayk7Cit9CisKK3ZvaWQgSGFuZGxlU3Rh
Y2s6Omdyb3coKQoreworICAgIEhhbmRsZVNsb3QgYmxvY2sgPSBtX2Jsb2NrU3RhY2suZ3Jvdygp
OworICAgIG1fZnJhbWUubV9uZXh0ID0gYmxvY2s7CisgICAgbV9mcmFtZS5tX2VuZCA9IGJsb2Nr
ICsgbV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3RoOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlU3RhY2suaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVTdGFjay5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQxNzNjMDA2MTQxMWFkYmM1ODNmODVmN2IyYTUyMzIwMTQ4ODBkMGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlU3RhY2su
aApAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSGFuZGxlU3RhY2tfaAor
I2RlZmluZSBIYW5kbGVTdGFja19oCisKKyNpbmNsdWRlICJBc3NlcnRpb25zLmgiCisjaW5jbHVk
ZSAiQmxvY2tTdGFjay5oIgorI2luY2x1ZGUgIkhhbmRsZS5oIgorCisjaW5jbHVkZSA8d3RmL1Vu
dXNlZFBhcmFtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBMb2NhbFNjb3BlOworY2xh
c3MgTWFya1N0YWNrOworCitjbGFzcyBIYW5kbGVTdGFjayB7CitwdWJsaWM6CisgICAgY2xhc3Mg
RnJhbWUgeworICAgIHB1YmxpYzoKKyAgICAgICAgSGFuZGxlU2xvdCBtX25leHQ7CisgICAgICAg
IEhhbmRsZVNsb3QgbV9lbmQ7CisgICAgfTsKKworICAgIEhhbmRsZVN0YWNrKCk7CisgICAgCisg
ICAgdm9pZCBlbnRlclNjb3BlKEZyYW1lJik7CisgICAgdm9pZCBsZWF2ZVNjb3BlKEZyYW1lJik7
CisKKyAgICBIYW5kbGVTbG90IHB1c2goKTsKKworICAgIHZvaWQgbWFyayhNYXJrU3RhY2smKTsK
KworcHJpdmF0ZToKKyAgICB2b2lkIGdyb3coKTsKKyAgICB2b2lkIHphcFRvKEZyYW1lJik7Cisg
ICAgSGFuZGxlU2xvdCBmaW5kRmlyc3RBZnRlcihIYW5kbGVTbG90KTsKKworI2lmbmRlZiBOREVC
VUcKKyAgICBzaXplX3QgbV9zY29wZURlcHRoOworI2VuZGlmCisgICAgQmxvY2tTdGFjazxKU1Zh
bHVlPiBtX2Jsb2NrU3RhY2s7CisgICAgRnJhbWUgbV9mcmFtZTsKK307CisKK2lubGluZSB2b2lk
IEhhbmRsZVN0YWNrOjplbnRlclNjb3BlKEZyYW1lJiBsYXN0RnJhbWUpCit7CisjaWZuZGVmIE5E
RUJVRworICAgICsrbV9zY29wZURlcHRoOworI2VuZGlmCisKKyAgICBsYXN0RnJhbWUgPSBtX2Zy
YW1lOworfQorCisKKworaW5saW5lIHZvaWQgSGFuZGxlU3RhY2s6OnphcFRvKEZyYW1lJiBsYXN0
RnJhbWUpCit7CisjaWZkZWYgTkRFQlVHCisgICAgVU5VU0VEX1BBUkFNKGxhc3RGcmFtZSk7Cisj
ZWxzZQorICAgIGNvbnN0IFZlY3RvcjxIYW5kbGVTbG90PiYgYmxvY2tzID0gbV9ibG9ja1N0YWNr
LmJsb2NrcygpOworICAgIAorICAgIGlmIChsYXN0RnJhbWUubV9lbmQgIT0gbV9mcmFtZS5tX2Vu
ZCkgeyAvLyBaYXBwaW5nIHRvIGEgZnJhbWUgaW4gYSBkaWZmZXJlbnQgYmxvY2suCisgICAgICAg
IGludCBpID0gYmxvY2tzLnNpemUoKSAtIDE7CisgICAgICAgIGZvciAoIDsgYmxvY2tzW2ldICsg
bV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3RoICE9IGxhc3RGcmFtZS5tX2VuZDsgLS1pKSB7CisgICAg
ICAgICAgICBmb3IgKGludCBqID0gbV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3RoIC0gMTsgaiA+PSAw
OyAtLWopCisgICAgICAgICAgICAgICAgYmxvY2tzW2ldW2pdID0gSlNWYWx1ZSgpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBmb3IgKEhhbmRsZVNsb3QgaXQgPSBibG9ja3NbaV0gKyBt
X2Jsb2NrU3RhY2suYmxvY2tMZW5ndGggLSAxOyBpdCAhPSBsYXN0RnJhbWUubV9uZXh0IC0gMTsg
LS1pdCkKKyAgICAgICAgICAgICppdCA9IEpTVmFsdWUoKTsKKyAgICAgICAgCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgZm9yIChIYW5kbGVTbG90IGl0ID0gbV9mcmFtZS5tX25l
eHQgLSAxOyBpdCAhPSBsYXN0RnJhbWUubV9uZXh0IC0gMTsgLS1pdCkKKyAgICAgICAgKml0ID0g
SlNWYWx1ZSgpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEhhbmRsZVN0YWNrOjpsZWF2ZVNj
b3BlKEZyYW1lJiBsYXN0RnJhbWUpCit7CisjaWZuZGVmIE5ERUJVRworICAgIC0tbV9zY29wZURl
cHRoOworI2VuZGlmCisKKyAgICB6YXBUbyhsYXN0RnJhbWUpOworCisgICAgaWYgKGxhc3RGcmFt
ZS5tX2VuZCAhPSBtX2ZyYW1lLm1fZW5kKSAvLyBQb3BwaW5nIHRvIGEgZnJhbWUgaW4gYSBkaWZm
ZXJlbnQgYmxvY2suCisgICAgICAgIG1fYmxvY2tTdGFjay5zaHJpbmsobGFzdEZyYW1lLm1fZW5k
KTsKKworICAgIG1fZnJhbWUgPSBsYXN0RnJhbWU7Cit9CisKK2lubGluZSBIYW5kbGVTbG90IEhh
bmRsZVN0YWNrOjpwdXNoKCkKK3sKKyAgICBBU1NFUlQobV9zY29wZURlcHRoKTsgLy8gQ3JlYXRp
bmcgYSBMb2NhbCBvdXRzaWRlIG9mIGEgTG9jYWxTY29wZSBpcyBhIG1lbW9yeSBsZWFrLgorICAg
IGlmIChtX2ZyYW1lLm1fbmV4dCA9PSBtX2ZyYW1lLm1fZW5kKQorICAgICAgICBncm93KCk7Cisg
ICAgcmV0dXJuIG1fZnJhbWUubV9uZXh0Kys7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvTG9jYWwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9Mb2NhbC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA5
YmJiYWI2NmMzZjQ0MWRlYmY4OTA4NGZlY2IyNjVmNTZmM2IzZjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvTG9jYWwuaApAQCAtMCww
ICsxLDEwMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9jYWxfaAorI2RlZmluZSBMb2NhbF9o
CisKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJIYW5kbGUuaCIKKworLyoK
KyAgICBBIExvY2FsIGlzIGEgdGVtcG9yYXJ5IGhhbmRsZSB3aG9zZSBsaWZldGltZSBpcyB0aWVk
IHRvIGEgZ2l2ZW4gTG9jYWxTY29wZS4KKyAgICBVc2UgTG9jYWxzIGZvciBsb2NhbCB2YWx1ZXMg
b24gdGhlIHN0YWNrLiBJdCBpcyBhbiBlcnJvciB0byBjcmVhdGUgYSBMb2NhbAorICAgIG91dHNp
ZGUgb2YgYW55IExvY2FsU2NvcGUuCisqLworCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+IGNsYXNzIExvY2FsIDogcHVibGljIEhhbmRsZTxUPiB7CisgICAgZnJpZW5k
IGNsYXNzIExvY2FsU2NvcGU7CitwdWJsaWM6CisgICAgdHlwZWRlZiB0eXBlbmFtZSBIYW5kbGU8
VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CisgICAgTG9jYWwoSlNHbG9iYWxEYXRhJiwg
RXh0ZXJuYWxUeXBlID0gRXh0ZXJuYWxUeXBlKCkpOworICAgIExvY2FsKEpTR2xvYmFsRGF0YSYs
IEhhbmRsZTxUPik7CisgICAgTG9jYWwoY29uc3QgTG9jYWw8VD4mKTsgLy8gQWRvcHRpbmcgY29u
c3RydWN0b3IuIFVzZWQgdG8gcmV0dXJuIGEgTG9jYWwgdG8gYSBjYWxsaW5nIGZ1bmN0aW9uLgor
CisgICAgTG9jYWwmIG9wZXJhdG9yPShFeHRlcm5hbFR5cGUpOworICAgIExvY2FsJiBvcGVyYXRv
cj0oSGFuZGxlPFQ+KTsKKyAgICAKKyAgICB1c2luZyBIYW5kbGU8VD46OnNsb3Q7CisKK3ByaXZh
dGU6CisgICAgTG9jYWwoSGFuZGxlU2xvdCwgRXh0ZXJuYWxUeXBlKTsgLy8gVXNlZCBieSBMb2Nh
bFNjb3BlOjpyZWxlYXNlKCkgdG8gbW92ZSBhIExvY2FsIHRvIGEgY29udGFpbmluZyBzY29wZS4K
KyAgICB2b2lkIGludGVybmFsU2V0KEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICB7CisgICAgICAg
IEpTVmFsdWUgbmV3VmFsdWUoSGFuZGxlVHlwZXM8VD46OnRvSlNWYWx1ZSh2YWx1ZSkpOworICAg
ICAgICBIYW5kbGVTbG90IHNsb3QgPSB0aGlzLT5zbG90KCk7CisgICAgICAgIEFTU0VSVChzbG90
KTsKKyAgICAgICAgSGFuZGxlSGVhcDo6aGVhcEZvcihzbG90KS0+d3JpdGVCYXJyaWVyKHNsb3Qs
IG5ld1ZhbHVlKTsKKyAgICAgICAgKnNsb3QgPSBuZXdWYWx1ZTsKKyAgICB9Cit9OworCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIExvY2FsPFQ+OjpMb2NhbChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICA6IEhhbmRsZTxUPihnbG9iYWxEYXRh
LmFsbG9jYXRlTG9jYWxIYW5kbGUoKSkKK3sKKyAgICBpbnRlcm5hbFNldCh2YWx1ZSk7Cit9CisK
K3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTG9jYWw8VD46OkxvY2FsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSGFuZGxlPFQ+IGhhbmRsZSkKKyAgICA6IEhhbmRsZTxUPihnbG9iYWxE
YXRhLmFsbG9jYXRlTG9jYWxIYW5kbGUoKSkKK3sKKyAgICBpbnRlcm5hbFNldChoYW5kbGUuZ2V0
KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIExvY2FsPFQ+OjpMb2NhbChj
b25zdCBMb2NhbDxUPiYgbykKKyAgICA6IEhhbmRsZTxUPihvLnNsb3QoKSkKK3sKKyAgICBjb25z
dF9jYXN0PExvY2FsPFQ+Jj4obykuaW52YWxpZGF0ZSgpOyAvLyBQcmV2ZW50IGFjY2lkZW50YWwg
c2hhcmluZy4KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBMb2NhbDxUPjo6TG9j
YWwoSGFuZGxlU2xvdCBzbG90LCBFeHRlcm5hbFR5cGUgdmFsdWUpCisgICAgOiBIYW5kbGU8VD4o
c2xvdCwgdmFsdWUpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTG9jYWw8
VD4mIExvY2FsPFQ+OjpvcGVyYXRvcj0oRXh0ZXJuYWxUeXBlIHZhbHVlKQoreworICAgIGludGVy
bmFsU2V0KHZhbHVlKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBpbmxpbmUgTG9jYWw8VD4mIExvY2FsPFQ+OjpvcGVyYXRvcj0oSGFuZGxlPFQ+IGhhbmRs
ZSkKK3sKKyAgICBpbnRlcm5hbFNldChoYW5kbGUuZ2V0KCkpOworICAgIHJldHVybiAqdGhpczsK
K30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xs
ZWN0b3IvaGFuZGxlcy9Mb2NhbFNjb3BlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVj
dG9yL2hhbmRsZXMvTG9jYWxTY29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMjdiMzJlZjBlNTBjZDRmMTU4
NTZlZTNkZjY3MTA3MzVlNjVmNzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvY29sbGVjdG9yL2hhbmRsZXMvTG9jYWxTY29wZS5oCkBAIC0wLDAgKzEsNzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIExvY2FsU2NvcGVfaAorI2RlZmluZSBMb2NhbFNjb3BlX2gKKwor
I2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCisjaW5jbHVkZSAiTG9jYWwuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisvKiAgCisgICAgQSBMb2NhbFNjb3BlIGlzIGEgdGVtcG9yYXJ5IHNjb3BlIGluIHdo
aWNoIExvY2FscyBhcmUgYWxsb2NhdGVkLiBXaGVuIGEKKyAgICBMb2NhbFNjb3BlIGdvZXMgb3V0
IG9mIHNjb3BlLCBhbGwgdGhlIExvY2FscyBjcmVhdGVkIGluIGl0IGFyZSBkZXN0cm95ZWQuCisK
KyAgICBMb2NhbFNjb3BlIGlzIHNpbWlsYXIgaW4gY29uY2VwdCB0byBOU0F1dG9yZWxlYXNlUG9v
bC4KKyovCisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworY2xhc3MgTG9jYWxTY29wZSB7CitwdWJs
aWM6CisgICAgZXhwbGljaXQgTG9jYWxTY29wZShKU0dsb2JhbERhdGEmKTsKKyAgICB+TG9jYWxT
Y29wZSgpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBMb2NhbDxUPiByZWxlYXNl
KExvY2FsPFQ+KTsgLy8gRGVzdHJveXMgYWxsIG90aGVyIGxvY2FscyBpbiB0aGUgc2NvcGUuCisK
K3ByaXZhdGU6CisgICAgSGFuZGxlU3RhY2sqIG1faGFuZGxlU3RhY2s7CisgICAgSGFuZGxlU3Rh
Y2s6OkZyYW1lIG1fbGFzdEZyYW1lOworfTsKKworaW5saW5lIExvY2FsU2NvcGU6OkxvY2FsU2Nv
cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgIDogbV9oYW5kbGVTdGFjayhnbG9iYWxE
YXRhLmhlYXAuaGFuZGxlU3RhY2soKSkKK3sKKyAgICBtX2hhbmRsZVN0YWNrLT5lbnRlclNjb3Bl
KG1fbGFzdEZyYW1lKTsKK30KKworaW5saW5lIExvY2FsU2NvcGU6On5Mb2NhbFNjb3BlKCkKK3sK
KyAgICBtX2hhbmRsZVN0YWNrLT5sZWF2ZVNjb3BlKG1fbGFzdEZyYW1lKTsKK30KKwordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IExvY2FsPFQ+IExvY2FsU2NvcGU6OnJlbGVhc2UoTG9jYWw8VD4gbG9j
YWwpCit7CisgICAgdHlwZW5hbWUgTG9jYWw8VD46OkV4dGVybmFsVHlwZSBwdHIgPSBsb2NhbC5n
ZXQoKTsKKworICAgIG1faGFuZGxlU3RhY2stPmxlYXZlU2NvcGUobV9sYXN0RnJhbWUpOworICAg
IEhhbmRsZVNsb3Qgc2xvdCA9IG1faGFuZGxlU3RhY2stPnB1c2goKTsKKyAgICBtX2hhbmRsZVN0
YWNrLT5lbnRlclNjb3BlKG1fbGFzdEZyYW1lKTsKKworICAgIHJldHVybiBMb2NhbDxUPihzbG90
LCBwdHIpOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFw
LmNwcAppbmRleCBjNWNiY2FiMDJkNWY0YzE5Mzc1MTQ3NzZmMzk2NDRkZWZmMzFlY2IxLi5kNzAw
NjFhZWJjOWNkZTQzMmNiYjFiZDkzMWJmNTY4OGE0ODA2YjExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IZWFwLmNwcApAQCAtMjMxLDggKzIzMSw2IEBAIHZvaWQgSGVhcDo6bWFya1Jv
b3RzKCkKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXI6Om1hcmtMaXN0cyhtYXJrU3RhY2ss
ICptX21hcmtMaXN0U2V0KTsKICAgICBpZiAobV9nbG9iYWxEYXRhLT5leGNlcHRpb24pCiAgICAg
ICAgIG1hcmtTdGFjay5hcHBlbmQoJm1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKTsKLSAgICBpZiAo
bV9nbG9iYWxEYXRhLT5maXJzdFN0cmluZ2lmaWVyVG9NYXJrKQotICAgICAgICBKU09OT2JqZWN0
OjptYXJrU3RyaW5naWZpZXJzKG1hcmtTdGFjaywgbV9nbG9iYWxEYXRhLT5maXJzdFN0cmluZ2lm
aWVyVG9NYXJrKTsKICAgICBtYXJrU3RhY2suZHJhaW4oKTsKIAogICAgIG1faGFuZGxlSGVhcC5t
YXJrU3Ryb25nSGFuZGxlcyhtYXJrU3RhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSGVhcC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVh
cC5oCmluZGV4IDQwODA4ZmQ2ZDQxOWQxOWJlMDRlZTFjOGYxZmFiMDcxM2JmOTc0OGUuLjhlNDNm
YTNkZmVkZjVlYzY5ODY3YjA1NjcxYzY1OTBmNDFhYzBmZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9IZWFwLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgSGVhcF9oCiAKICNpbmNs
dWRlICJIYW5kbGVIZWFwLmgiCisjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKICNpbmNsdWRlICJN
YXJrU3RhY2suaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CkBAIC05OCw2ICs5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoKEZ1bmN0b3ImKTsKICAgICAgICAgCiAg
ICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVybiBtX2hhbmRs
ZUhlYXAuYWxsb2NhdGUoKTsgfQorICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRlTG9jYWxIYW5k
bGUoKSB7IHJldHVybiBtX2hhbmRsZVN0YWNrLnB1c2goKTsgfQorCisgICAgICAgIEhhbmRsZVN0
YWNrKiBoYW5kbGVTdGFjaygpIHsgcmV0dXJuICZtX2hhbmRsZVN0YWNrOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgSlNHbG9iYWxEYXRhOwpAQCAtMTI4LDExICsxMzIs
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE93blB0cjxHQ0FjdGl2aXR5Q2FsbGJhY2s+
IG1fYWN0aXZpdHlDYWxsYmFjazsKIAogICAgICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0
YTsKLSAgICAgICAgCisKICAgICAgICAgTWFjaGluZVN0YWNrTWFya2VyIG1fbWFjaGluZVN0YWNr
TWFya2VyOwogICAgICAgICBNYXJrU3RhY2sgbV9tYXJrU3RhY2s7CiAgICAgICAgIEhhbmRsZUhl
YXAgbV9oYW5kbGVIZWFwOwotICAgICAgICAKKyAgICAgICAgSGFuZGxlU3RhY2sgbV9oYW5kbGVT
dGFjazsKKwogICAgICAgICBzaXplX3QgbV9leHRyYUNvc3Q7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKaW5kZXggYWY0NDRkNTc5
YWM0MjVmZjFiMTRkMDEyOWQ4NzljZTBkNDU5NTQ1Yy4uOGQ4ZjdlM2ZhYzk1ODBhMjQxOTJlZWRm
NDMwODU5YzQzMTYyM2VhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCkBAIC0xNTEsNyArMTUxLDYgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2Jh
bERhdGEoR2xvYmFsRGF0YVR5cGUgZ2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSB0aHJl
YWQKICAgICAsIGhlYXAodGhpcykKICAgICAsIGdsb2JhbE9iamVjdENvdW50KDApCiAgICAgLCBk
eW5hbWljR2xvYmFsT2JqZWN0KDApCi0gICAgLCBmaXJzdFN0cmluZ2lmaWVyVG9NYXJrKDApCiAg
ICAgLCBjYWNoZWRVVENPZmZzZXQoTmFOKQogICAgICwgbWF4UmVlbnRyeURlcHRoKHRocmVhZFN0
YWNrVHlwZSA9PSBUaHJlYWRTdGFja1R5cGVTbWFsbCA/IE1heFNtYWxsVGhyZWFkUmVlbnRyeURl
cHRoIDogTWF4TGFyZ2VUaHJlYWRSZWVudHJ5RGVwdGgpCiAgICAgLCBtX3JlZ0V4cENhY2hlKG5l
dyBSZWdFeHBDYWNoZSh0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgKaW5kZXggNTUzMjMzZGY3M2FhODZkYTZkMTk2MDcwZTMzMjg0YzJhMGIwZjZl
Yi4uYjUyZmQwMjg2MDJkYmYwNDM2YzA5MzI4NzI2OTM1MWE4MWRlNDBlOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTU3LDYgKzU3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb2RlQmxvY2s7CiAgICAgY2xhc3MgQ29tbW9u
SWRlbnRpZmllcnM7CisgICAgY2xhc3MgSGFuZGxlU3RhY2s7CiAgICAgY2xhc3MgSWRlbnRpZmll
clRhYmxlOwogICAgIGNsYXNzIEludGVycHJldGVyOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwpAQCAtMjIzLDggKzIyNCw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEhhc2hTZXQ8
SlNPYmplY3QqPiBzdHJpbmdSZWN1cnNpb25DaGVja1Zpc2l0ZWRPYmplY3RzOwogCi0gICAgICAg
IFN0cmluZ2lmaWVyKiBmaXJzdFN0cmluZ2lmaWVyVG9NYXJrOwotCiAgICAgICAgIGRvdWJsZSBj
YWNoZWRVVENPZmZzZXQ7CiAgICAgICAgIERTVE9mZnNldENhY2hlIGRzdE9mZnNldENhY2hlOwog
ICAgICAgICAKQEAgLTI1OSw2ICsyNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogICAg
ICAgICB2b2lkIGR1bXBSZWdFeHBUcmFjZSgpOwogICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRl
R2xvYmFsSGFuZGxlKCkgeyByZXR1cm4gaGVhcC5hbGxvY2F0ZUdsb2JhbEhhbmRsZSgpOyB9Cisg
ICAgICAgIEhhbmRsZVNsb3QgYWxsb2NhdGVMb2NhbEhhbmRsZSgpIHsgcmV0dXJuIGhlYXAuYWxs
b2NhdGVMb2NhbEhhbmRsZSgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDdkMThlMDg0MjhhMjMwZTJhYWU3MWMz
MjA0M2RhYTQyODFhMmU5NmMuLmM2MGExMmIwYzkyMGIxNWIyMmIxNzEwODg2NDIyZDc3NTJiYWQy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBA
IC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTGl0ZXJhbFBhcnNlci5oIgorI2luY2x1ZGUgIkxvY2FsLmgi
CisjaW5jbHVkZSAiTG9jYWxTY29wZS5oIgogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUg
IlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiVVN0cmluZ0J1aWxkZXIuaCIKQEAgLTc1
LDcgKzc3LDYgQEAgY2xhc3MgU3RyaW5naWZpZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFN0cmluZ2lmaWVyKTsKIHB1YmxpYzoKICAgICBTdHJpbmdpZmllcihFeGVjU3RhdGUqLCBKU1Zh
bHVlIHJlcGxhY2VyLCBKU1ZhbHVlIHNwYWNlKTsKLSAgICB+U3RyaW5naWZpZXIoKTsKICAgICBK
U1ZhbHVlIHN0cmluZ2lmeShKU1ZhbHVlKTsKIAogICAgIHZvaWQgbWFya0FnZ3JlZ2F0ZShNYXJr
U3RhY2smKTsKQEAgLTgzLDE1ICs4NCwxNCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNsYXNz
IEhvbGRlciB7CiAgICAgcHVibGljOgotICAgICAgICBIb2xkZXIoSlNPYmplY3QqKTsKKyAgICAg
ICAgSG9sZGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNPYmplY3QqKTsKIAogICAgICAg
ICBKU09iamVjdCogb2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3QuZ2V0KCk7IH0KLSAg
ICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4qIG9iamVjdFNsb3QoKSB7IHJldHVybiAmbV9v
YmplY3Q7IH0KIAogICAgICAgICBib29sIGFwcGVuZE5leHRQcm9wZXJ0eShTdHJpbmdpZmllciYs
IFVTdHJpbmdCdWlsZGVyJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBEZXByZWNhdGVkUHRy
PEpTT2JqZWN0PiBtX29iamVjdDsKKyAgICAgICAgTG9jYWw8SlNPYmplY3Q+IG1fb2JqZWN0Owog
ICAgICAgICBjb25zdCBib29sIG1faXNBcnJheTsKICAgICAgICAgYm9vbCBtX2lzSlNBcnJheTsK
ICAgICAgICAgdW5zaWduZWQgbV9pbmRleDsKQEAgLTExMyw3ICsxMTMsNiBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdW5pbmRlbnQoKTsKICAgICB2b2lkIHN0YXJ0TmV3TGluZShVU3RyaW5nQnVpbGRl
ciYpIGNvbnN0OwogCi0gICAgU3RyaW5naWZpZXIqIGNvbnN0IG1fbmV4dFN0cmluZ2lmaWVyVG9N
YXJrOwogICAgIEV4ZWNTdGF0ZSogY29uc3QgbV9leGVjOwogICAgIGNvbnN0IEpTVmFsdWUgbV9y
ZXBsYWNlcjsKICAgICBib29sIG1fdXNpbmdBcnJheVJlcGxhY2VyOwpAQCAtMTIyLDcgKzEyMSw2
IEBAIHByaXZhdGU6CiAgICAgQ2FsbERhdGEgbV9yZXBsYWNlckNhbGxEYXRhOwogICAgIGNvbnN0
IFVTdHJpbmcgbV9nYXA7CiAKLSAgICBIYXNoU2V0PEpTT2JqZWN0Kj4gbV9ob2xkZXJDeWNsZURl
dGVjdG9yOwogICAgIFZlY3RvcjxIb2xkZXIsIDE2PiBtX2hvbGRlclN0YWNrOwogICAgIFVTdHJp
bmcgbV9yZXBlYXRlZEdhcDsKICAgICBVU3RyaW5nIG1faW5kZW50OwpAQCAtMjAwLDE2ICsxOTgs
MTMgQEAgSlNWYWx1ZSBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGw6OnZhbHVlKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdHJpbmdp
ZmllciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBTdHJpbmdpZmllcjo6U3Ry
aW5naWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJlcGxhY2VyLCBKU1ZhbHVlIHNwYWNl
KQotICAgIDogbV9uZXh0U3RyaW5naWZpZXJUb01hcmsoZXhlYy0+Z2xvYmFsRGF0YSgpLmZpcnN0
U3RyaW5naWZpZXJUb01hcmspCi0gICAgLCBtX2V4ZWMoZXhlYykKKyAgICA6IG1fZXhlYyhleGVj
KQogICAgICwgbV9yZXBsYWNlcihyZXBsYWNlcikKICAgICAsIG1fdXNpbmdBcnJheVJlcGxhY2Vy
KGZhbHNlKQogICAgICwgbV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lcyhleGVjKQogICAgICwg
bV9yZXBsYWNlckNhbGxUeXBlKENhbGxUeXBlTm9uZSkKICAgICAsIG1fZ2FwKGdhcChleGVjLCBz
cGFjZSkpCiB7Ci0gICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmZpcnN0U3RyaW5naWZpZXJUb01hcmsg
PSB0aGlzOwotCiAgICAgaWYgKCFtX3JlcGxhY2VyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMjQ5LDIxICsyNDQsNiBAQCBTdHJpbmdpZmllcjo6U3RyaW5naWZpZXIoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHJlcGxhY2VyLCBKU1ZhbHVlIHNwYWNlKQogICAgIG1fcmVwbGFj
ZXJDYWxsVHlwZSA9IGFzT2JqZWN0KG1fcmVwbGFjZXIpLT5nZXRDYWxsRGF0YShtX3JlcGxhY2Vy
Q2FsbERhdGEpOwogfQogCi1TdHJpbmdpZmllcjo6flN0cmluZ2lmaWVyKCkKLXsKLSAgICBBU1NF
UlQobV9leGVjLT5nbG9iYWxEYXRhKCkuZmlyc3RTdHJpbmdpZmllclRvTWFyayA9PSB0aGlzKTsK
LSAgICBtX2V4ZWMtPmdsb2JhbERhdGEoKS5maXJzdFN0cmluZ2lmaWVyVG9NYXJrID0gbV9uZXh0
U3RyaW5naWZpZXJUb01hcms7Ci19Ci0KLXZvaWQgU3RyaW5naWZpZXI6Om1hcmtBZ2dyZWdhdGUo
TWFya1N0YWNrJiBtYXJrU3RhY2spCi17Ci0gICAgZm9yIChTdHJpbmdpZmllciogc3RyaW5naWZp
ZXIgPSB0aGlzOyBzdHJpbmdpZmllcjsgc3RyaW5naWZpZXIgPSBzdHJpbmdpZmllci0+bV9uZXh0
U3RyaW5naWZpZXJUb01hcmspIHsKLSAgICAgICAgc2l6ZV90IHNpemUgPSBtX2hvbGRlclN0YWNr
LnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgICAgICBtYXJrU3RhY2suYXBwZW5kKG1faG9sZGVyU3RhY2tbaV0ub2JqZWN0U2xvdCgpKTsK
LSAgICB9Ci19Ci0KIEpTVmFsdWUgU3RyaW5naWZpZXI6OnN0cmluZ2lmeShKU1ZhbHVlIHZhbHVl
KQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChtX2V4ZWMp
OwpAQCAtNDI1LDEyICs0MDUsMTQgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJp
bmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYKICAgICB9CiAK
ICAgICAvLyBIYW5kbGUgY3ljbGUgZGV0ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24gdGhl
IHN0YWNrLgotICAgIGlmICghbV9ob2xkZXJDeWNsZURldGVjdG9yLmFkZChvYmplY3QpLnNlY29u
ZCkgewotICAgICAgICB0aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVycm9yKG1fZXhlYywg
IkpTT04uc3RyaW5naWZ5IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOwot
ICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2hvbGRlclN0YWNrLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtX2hvbGRlclN0
YWNrW2ldLm9iamVjdCgpID09IG9iamVjdCkgeworICAgICAgICAgICAgdGhyb3dFcnJvcihtX2V4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihtX2V4ZWMsICJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFs
aXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiIpKTsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdpZnlG
YWlsZWQ7CisgICAgICAgIH0KICAgICB9CiAgICAgYm9vbCBob2xkZXJTdGFja1dhc0VtcHR5ID0g
bV9ob2xkZXJTdGFjay5pc0VtcHR5KCk7Ci0gICAgbV9ob2xkZXJTdGFjay5hcHBlbmQob2JqZWN0
KTsKKyAgICBtX2hvbGRlclN0YWNrLmFwcGVuZChIb2xkZXIobV9leGVjLT5nbG9iYWxEYXRhKCks
IG9iamVjdCkpOwogICAgIGlmICghaG9sZGVyU3RhY2tXYXNFbXB0eSkKICAgICAgICAgcmV0dXJu
IFN0cmluZ2lmeVN1Y2NlZWRlZDsKIApAQCAtNDUwLDcgKzQzMiw2IEBAIFN0cmluZ2lmaWVyOjpT
dHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVuZFN0cmluZ2lmaWVkVmFsdWUoVVN0cmlu
Z0J1aWxkZXImCiAgICAgICAgICAgICAgICAgdGlja0NvdW50ID0gbG9jYWxUaW1lb3V0Q2hlY2tl
ci50aWNrc1VudGlsTmV4dENoZWNrKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAg
ICAgbV9ob2xkZXJDeWNsZURldGVjdG9yLnJlbW92ZShtX2hvbGRlclN0YWNrLmxhc3QoKS5vYmpl
Y3QoKSk7CiAgICAgICAgIG1faG9sZGVyU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgIH0gd2hpbGUg
KCFtX2hvbGRlclN0YWNrLmlzRW1wdHkoKSk7CiAgICAgcmV0dXJuIFN0cmluZ2lmeVN1Y2NlZWRl
ZDsKQEAgLTQ4NSw4ICs0NjYsOCBAQCBpbmxpbmUgdm9pZCBTdHJpbmdpZmllcjo6c3RhcnROZXdM
aW5lKFVTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogICAgIGJ1aWxkZXIuYXBwZW5kKG1f
aW5kZW50KTsKIH0KIAotaW5saW5lIFN0cmluZ2lmaWVyOjpIb2xkZXI6OkhvbGRlcihKU09iamVj
dCogb2JqZWN0KQotICAgIDogbV9vYmplY3Qob2JqZWN0KQoraW5saW5lIFN0cmluZ2lmaWVyOjpI
b2xkZXI6OkhvbGRlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBvYmplY3Qp
CisgICAgOiBtX29iamVjdChnbG9iYWxEYXRhLCBvYmplY3QpCiAgICAgLCBtX2lzQXJyYXkob2Jq
ZWN0LT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkKICAgICAsIG1faW5kZXgoMCkKIHsKQEAg
LTYyMywxNiArNjA0LDExIEBAIGJvb2wgSlNPTk9iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvCiAgICAgcmV0dXJuIGdl
dFN0YXRpY0Z1bmN0aW9uRGVzY3JpcHRvcjxKU09iamVjdD4oZXhlYywgRXhlY1N0YXRlOjpqc29u
VGFibGUoZXhlYyksIHRoaXMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7CiB9CiAKLXZvaWQg
SlNPTk9iamVjdDo6bWFya1N0cmluZ2lmaWVycyhNYXJrU3RhY2smIG1hcmtTdGFjaywgU3RyaW5n
aWZpZXIqIHN0cmluZ2lmaWVyKQotewotICAgIHN0cmluZ2lmaWVyLT5tYXJrQWdncmVnYXRlKG1h
cmtTdGFjayk7Ci19Ci0KIGNsYXNzIFdhbGtlciB7CiBwdWJsaWM6CiAgICAgV2Fsa2VyKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIGZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgQ2FsbERh
dGEgY2FsbERhdGEpCiAgICAgICAgIDogbV9leGVjKGV4ZWMpCi0gICAgICAgICwgbV9mdW5jdGlv
bihmdW5jdGlvbikKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVu
Y3Rpb24pCiAgICAgICAgICwgbV9jYWxsVHlwZShjYWxsVHlwZSkKICAgICAgICAgLCBtX2NhbGxE
YXRhKGNhbGxEYXRhKQogICAgIHsKQEAgLTY0OSw3ICs2MjUsNyBAQCBwcml2YXRlOgogICAgIGZy
aWVuZCBjbGFzcyBIb2xkZXI7CiAKICAgICBFeGVjU3RhdGUqIG1fZXhlYzsKLSAgICBEZXByZWNh
dGVkUHRyPEpTT2JqZWN0PiBtX2Z1bmN0aW9uOworICAgIExvY2FsPEpTT2JqZWN0PiBtX2Z1bmN0
aW9uOwogICAgIENhbGxUeXBlIG1fY2FsbFR5cGU7CiAgICAgQ2FsbERhdGEgbV9jYWxsRGF0YTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKaW5kZXggYWNm
ZmVjYTJjMDUyYjk4OTY1NDZjYzFlMTRhYmY5NmEyMDEzYjgyMC4uNTI2NGZkNzk4ZjAxNDIzYjk0
MDg2MmViZmJmOGRhM2IwZmVkMmNjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuaApAQCAtNDEsOCArNDEsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENvdW50LCAmc19pbmZvKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIG1hcmtTdHJpbmdpZmllcnMoTWFya1N0YWNrJiwg
U3RyaW5naWZpZXIqKTsKLQogICAgIHByb3RlY3RlZDoKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgSlNP
YmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01h
cmtTdGFjay5oCmluZGV4IGQ0MjViZTk5MmJmNzY0MzQwMGM0ZDc0OTA5MDU5NDc2NjU2MDZjYTQu
LmEwOTRmN2IzYzQzYzJkZmY4ODQ3ZTNmNDFkNjU2ODU4M2MwYmYzZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCkBAIC03MSw2ICs3MSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIGlmIChjb3VudCkKICAgICAgICAgICAgICAgICBtX21hcmtT
ZXRzLmFwcGVuZChNYXJrU2V0KHZhbHVlcywgdmFsdWVzICsgY291bnQsIHByb3BlcnRpZXMpKTsK
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBhcHBlbmRTbG90cyhIYW5kbGVTbG90
IHZhbHVlcywgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVydGllcyBwcm9wZXJ0aWVzID0gTm9O
dWxsVmFsdWVzKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY291bnQpCisgICAgICAgICAg
ICAgICAgbV9tYXJrU2V0cy5hcHBlbmQoTWFya1NldCh2YWx1ZXMsIHZhbHVlcyArIGNvdW50LCBw
cm9wZXJ0aWVzKSk7CisgICAgICAgIH0KIAogICAgICAgICB2b2lkIGFwcGVuZChDb25zZXJ2YXRp
dmVTZXQmIGNvbnNlcnZhdGl2ZVNldCkKICAgICAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85840</attachid>
            <date>2011-03-15 12:10:28 -0700</date>
            <delta_ts>2011-03-15 15:27:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56394-20110315121027.patch</filename>
            <type>text/plain</type>
            <size>31745</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODExNjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJm
ZTZlNDA0OWExMGQxZjYxNGNlOGNhYWI3ZWM0YTRiZmRkMjY2N2YuLmI3MDU0YTM4MjJjZmIyYWFl
ZTQwZWQ5OTk5YTRhOTNhOTU5Njg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1IEBACisyMDExLTAzLTE1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IExvY2FsPFQ+IHRvIGFsbG93IHVzIHRvIHN0YXJ0IG1vdmluZyB0byBwcmVjaXNlIG1hcmtpbmcg
b2YgbG9jYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjM5NAorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBoYW5kbGUgdHlwZSwgTG9jYWw8VD4g
YW5kIGEgc2NvcGluZyBtZWNoYW5pc20KKyAgICAgICAgTG9jYWxTY29wZSB0byBhbGxvdyB1cyB0
byBzdGFydCBtb3ZpbmcgdG93YXJkcyBwcmVjaXNlIG1hcmtpbmcKKyAgICAgICAgb2YgdGVtcG9y
YXJpZXMgYW5kIGxvY2FsIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNvIHN0YXJ0IHRvIHVz
ZSB0aGUgbmV3IExvY2FsPD4gdHlwZSBpbiB0aGUgSlNPTiBzdHJpbmdpZmllcgorICAgICAgICBz
byB0aGF0IHdlIGNhbiBoYXZlIHNvbWUgY292ZXJhZ2Ugb2YgdGhlaXIgYmVoYXZpb3VyIGluIHRo
ZSBpbml0aWFsCisgICAgICAgIGNoZWNraW4uCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hh
bmRsZVN0YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjpIYW5kbGVT
dGFjayk6CisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjptYXJrKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlU3RhY2s6Omdyb3cpOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZVN0
YWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpIYW5kbGVTdGFjazo6ZW50ZXJTY29wZSk6Cisg
ICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjp6YXBUbyk6CisgICAgICAgIChKU0M6OkhhbmRsZVN0
YWNrOjpsZWF2ZVNjb3BlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlU3RhY2s6OnB1c2gpOgorICAg
ICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0xvY2FsLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
b2NhbDo6aW50ZXJuYWxTZXQpOgorICAgICAgICAoSlNDOjo6OkxvY2FsKToKKyAgICAgICAgKEpT
Qzo6OjpvcGVyYXRvcik6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvTG9jYWxTY29wZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TG9jYWxTY29wZTo6TG9jYWxTY29wZSk6CisgICAgICAg
IChKU0M6OkxvY2FsU2NvcGU6On5Mb2NhbFNjb3BlKToKKyAgICAgICAgKEpTQzo6TG9jYWxTY29w
ZTo6cmVsZWFzZSk6CisgICAgICAgICogcnVudGltZS9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuaDoKKyAgICAgICAgKEpT
Qzo6SGVhcDo6YWxsb2NhdGVMb2NhbEhhbmRsZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmhhbmRs
ZVN0YWNrKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmFsbG9jYXRlTG9jYWxIYW5k
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0
cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBl
bmRTdHJpbmdpZmllZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6
SG9sZGVyKToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjpXYWxrZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNrLmg6CisgICAgICAg
IChKU0M6Ok1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
OjphcHBlbmRTbG90cyk6CisKIDIwMTEtMDMtMTUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUwMDc5YTJkYWE3MDNjYzNmMDliNzczNmIzOWI1
ZmI2MjNhNzA2M2YuLjEyMWFkYjk1ZGI3YWNkYTNmNjk3M2E2ODljODliOTQwZDVmY2EzMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzUsNiArMzc1LDEwIEBACiAJCUE3NERF
MUQwMTIwQjg3NTYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERTFDQjEyMEI4NkQ2MDBENDBENUIg
LyogQVJNdjdBc3NlbWJsZXIuY3BwICovOyB9OwogCQlBNzU3MDZERTExOEEyQkNGMDA1N0Y4OEYg
LyogSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGlj
MzJfNjQuY3BwICovOyB9OwogCQlBNzY2QjQ0RjBFRThEQ0QxMDA5NTE4Q0EgLyogRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzZCRTM5RjEz
MkVFQTdDMDA4RjdGMEIgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2QkUxQjcxMzJEQUM2ODAwOEY3RjBCIC8qIEhhbmRs
ZVN0YWNrLmNwcCAqLzsgfTsKKwkJQTc2QkUzQTAxMzJFRUE3QzAwOEY3RjBCIC8qIEhhbmRsZVN0
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzZC
RTFCODEzMkRBQzY4MDA4RjdGMEIgLyogSGFuZGxlU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzZCRTNBMTEzMkVFQTdDMDA4RjdGMEIg
LyogTG9jYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3NkJFMUI1MTMyREFCRjUwMDhGN0YwQiAvKiBMb2NhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NkJFM0EyMTMyRUVBN0MwMDhGN0YwQiAv
KiBMb2NhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzZCRTFCNjEzMkRBQzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NkM1MTc2MTE4Mjc0OEQw
MDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNl
SklULmggKi87IH07CiAJCUE3Nzk1NTkwMTAxQTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk1NThGMTAx
QTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzgzQTBEMTExQTM2RENBMDA1NjNEMjAgLyogSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzgzQTBEMDExQTM2RENBMDA1NjNEMjAgLyogSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwNjksNiArMTA3MywxMCBAQAogCQlBNzRCMzQ5ODEwMkE1RjhFMDAzMkFCOTggLyogTWFy
a1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtTdGFj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NERFMUNCMTIwQjg2RDYwMEQ0
MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBUk12N0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQXJpdGhtZXRpYzMyXzY0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc2QkUxQjUxMzJEQUJGNTAwOEY3RjBCIC8q
IExvY2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvY2FsLmg7IHBhdGgg
PSBjb2xsZWN0b3IvaGFuZGxlcy9Mb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzZCRTFCNjEzMkRBQzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMb2NhbFNjb3BlLmg7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxl
cy9Mb2NhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NkJFMUI3MTMy
REFDNjgwMDhGN0YwQiAvKiBIYW5kbGVTdGFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBIYW5kbGVTdGFjay5jcHA7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9I
YW5kbGVTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NkJFMUI4MTMy
REFDNjgwMDhGN0YwQiAvKiBIYW5kbGVTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBIYW5kbGVTdGFjay5oOyBwYXRoID0gY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlU3Rh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2QzUxNzQxMTgyNzQ4RDAwNzE1
QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTSW50ZXJmYWNlSklULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk1NThG
MTAxQTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFya1N0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODNB
MEQwMTFBMzZEQ0EwMDU2M0QyMCAvKiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQwLDYgKzIxNDgsMTAgQEAKIAkJCQlBN0U0
RkM4ODEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlLmggKi8sCiAJCQkJQTdFNEZDODkxMkY4RTRD
QTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwICovLAogCQkJCUE3RTRGQzhBMTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGVIZWFwLmggKi8sCisJCQkJQTc2QkUxQjcxMzJEQUM2ODAwOEY3RjBCIC8q
IEhhbmRsZVN0YWNrLmNwcCAqLywKKwkJCQlBNzZCRTFCODEzMkRBQzY4MDA4RjdGMEIgLyogSGFu
ZGxlU3RhY2suaCAqLywKKwkJCQlBNzZCRTFCNTEzMkRBQkY1MDA4RjdGMEIgLyogTG9jYWwuaCAq
LywKKwkJCQlBNzZCRTFCNjEzMkRBQzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBoYW5kbGVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI1
MTYsNiArMjUyOCw5IEBACiAJCQkJQTdDNDBDMEExMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3Rh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzQwQzBCMTMwQjA1N0QwMEQwMDJBMSAvKiBTZW50
aW5lbExpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzQwQzBDMTMwQjA1N0QwMEQw
MDJBMSAvKiBTaW5nbHlMaW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzZCRTNBMDEz
MkVFQTdDMDA4RjdGMEIgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkJF
M0ExMTMyRUVBN0MwMDhGN0YwQiAvKiBMb2NhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc2QkUz
QTIxMzJFRUE3QzAwOEY3RjBCIC8qIExvY2FsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQzlEQzYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGgu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk2Nyw2ICsyOTgyLDcgQEAKIAkJCQk5Nzk0MUE3RTEzMDJB
MDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdFNEZDOTExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTdBQzI1QkQxMzA0RDE0NjAwMzM5NkRFIC8qIE1hcmtlZEJsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NkJFMzlGMTMyRUVBN0MwMDhGN0YwQiAvKiBIYW5k
bGVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcg
LyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4
REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM5
MTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb2RlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hh
bmRsZVN0YWNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9I
YW5kbGVTdGFjay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTM3YThiMWU3YjkzNjgzNzVhODhhZWI3YjlmOTlh
ZGUwZTE1OWM2YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xs
ZWN0b3IvaGFuZGxlcy9IYW5kbGVTdGFjay5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCisjaW5j
bHVkZSAiTWFya1N0YWNrLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitIYW5kbGVTdGFjazo6SGFu
ZGxlU3RhY2soKQorI2lmbmRlZiBOREVCVUcKKyAgICA6IG1fc2NvcGVEZXB0aCgwKQorI2VuZGlm
Cit7CisgICAgZ3JvdygpOworfQorCit2b2lkIEhhbmRsZVN0YWNrOjptYXJrKE1hcmtTdGFjayYg
bWFya1N0YWNrKQoreworICAgIGNvbnN0IFZlY3RvcjxIYW5kbGVTbG90PiYgYmxvY2tzID0gbV9i
bG9ja1N0YWNrLmJsb2NrcygpOworICAgIHNpemVfdCBibG9ja0xlbmd0aCA9IG1fYmxvY2tTdGFj
ay5ibG9ja0xlbmd0aDsKKworICAgIGludCBlbmQgPSBibG9ja3Muc2l6ZSgpIC0gMTsKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IGVuZDsgKytpKSB7CisgICAgICAgIEhhbmRsZVNsb3QgYmxvY2sg
PSBibG9ja3NbaV07CisgICAgICAgIG1hcmtTdGFjay5hcHBlbmRTbG90cyhibG9jaywgYmxvY2tM
ZW5ndGgpOworICAgIH0KKyAgICBIYW5kbGVTbG90IGJsb2NrID0gYmxvY2tzW2VuZF07CisgICAg
bWFya1N0YWNrLmFwcGVuZFNsb3RzKGJsb2NrLCBtX2ZyYW1lLm1fbmV4dCAtIGJsb2NrKTsKK30K
Kwordm9pZCBIYW5kbGVTdGFjazo6Z3JvdygpCit7CisgICAgSGFuZGxlU2xvdCBibG9jayA9IG1f
YmxvY2tTdGFjay5ncm93KCk7CisgICAgbV9mcmFtZS5tX25leHQgPSBibG9jazsKKyAgICBtX2Zy
YW1lLm1fZW5kID0gYmxvY2sgKyBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGg7Cit9CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVT
dGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZVN0
YWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNDE3M2MwMDYxNDExYWRiYzU4M2Y4NWY3YjJhNTIzMjAxNDg4MGQw
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFu
ZGxlcy9IYW5kbGVTdGFjay5oCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBIYW5kbGVTdGFja19oCisjZGVmaW5lIEhhbmRsZVN0YWNrX2gKKworI2luY2x1ZGUgIkFzc2Vy
dGlvbnMuaCIKKyNpbmNsdWRlICJCbG9ja1N0YWNrLmgiCisjaW5jbHVkZSAiSGFuZGxlLmgiCisK
KyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IExvY2FsU2NvcGU7CitjbGFzcyBNYXJrU3RhY2s7CisKK2NsYXNzIEhhbmRsZVN0YWNrIHsKK3B1
YmxpYzoKKyAgICBjbGFzcyBGcmFtZSB7CisgICAgcHVibGljOgorICAgICAgICBIYW5kbGVTbG90
IG1fbmV4dDsKKyAgICAgICAgSGFuZGxlU2xvdCBtX2VuZDsKKyAgICB9OworCisgICAgSGFuZGxl
U3RhY2soKTsKKyAgICAKKyAgICB2b2lkIGVudGVyU2NvcGUoRnJhbWUmKTsKKyAgICB2b2lkIGxl
YXZlU2NvcGUoRnJhbWUmKTsKKworICAgIEhhbmRsZVNsb3QgcHVzaCgpOworCisgICAgdm9pZCBt
YXJrKE1hcmtTdGFjayYpOworCitwcml2YXRlOgorICAgIHZvaWQgZ3JvdygpOworICAgIHZvaWQg
emFwVG8oRnJhbWUmKTsKKyAgICBIYW5kbGVTbG90IGZpbmRGaXJzdEFmdGVyKEhhbmRsZVNsb3Qp
OworCisjaWZuZGVmIE5ERUJVRworICAgIHNpemVfdCBtX3Njb3BlRGVwdGg7CisjZW5kaWYKKyAg
ICBCbG9ja1N0YWNrPEpTVmFsdWU+IG1fYmxvY2tTdGFjazsKKyAgICBGcmFtZSBtX2ZyYW1lOwor
fTsKKworaW5saW5lIHZvaWQgSGFuZGxlU3RhY2s6OmVudGVyU2NvcGUoRnJhbWUmIGxhc3RGcmFt
ZSkKK3sKKyNpZm5kZWYgTkRFQlVHCisgICAgKyttX3Njb3BlRGVwdGg7CisjZW5kaWYKKworICAg
IGxhc3RGcmFtZSA9IG1fZnJhbWU7Cit9CisKKworCitpbmxpbmUgdm9pZCBIYW5kbGVTdGFjazo6
emFwVG8oRnJhbWUmIGxhc3RGcmFtZSkKK3sKKyNpZmRlZiBOREVCVUcKKyAgICBVTlVTRURfUEFS
QU0obGFzdEZyYW1lKTsKKyNlbHNlCisgICAgY29uc3QgVmVjdG9yPEhhbmRsZVNsb3Q+JiBibG9j
a3MgPSBtX2Jsb2NrU3RhY2suYmxvY2tzKCk7CisgICAgCisgICAgaWYgKGxhc3RGcmFtZS5tX2Vu
ZCAhPSBtX2ZyYW1lLm1fZW5kKSB7IC8vIFphcHBpbmcgdG8gYSBmcmFtZSBpbiBhIGRpZmZlcmVu
dCBibG9jay4KKyAgICAgICAgaW50IGkgPSBibG9ja3Muc2l6ZSgpIC0gMTsKKyAgICAgICAgZm9y
ICggOyBibG9ja3NbaV0gKyBtX2Jsb2NrU3RhY2suYmxvY2tMZW5ndGggIT0gbGFzdEZyYW1lLm1f
ZW5kOyAtLWkpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSBtX2Jsb2NrU3RhY2suYmxvY2tM
ZW5ndGggLSAxOyBqID49IDA7IC0taikKKyAgICAgICAgICAgICAgICBibG9ja3NbaV1bal0gPSBK
U1ZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZvciAoSGFuZGxlU2xvdCBp
dCA9IGJsb2Nrc1tpXSArIG1fYmxvY2tTdGFjay5ibG9ja0xlbmd0aCAtIDE7IGl0ICE9IGxhc3RG
cmFtZS5tX25leHQgLSAxOyAtLWl0KQorICAgICAgICAgICAgKml0ID0gSlNWYWx1ZSgpOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBmb3IgKEhhbmRsZVNsb3Qg
aXQgPSBtX2ZyYW1lLm1fbmV4dCAtIDE7IGl0ICE9IGxhc3RGcmFtZS5tX25leHQgLSAxOyAtLWl0
KQorICAgICAgICAqaXQgPSBKU1ZhbHVlKCk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSGFu
ZGxlU3RhY2s6OmxlYXZlU2NvcGUoRnJhbWUmIGxhc3RGcmFtZSkKK3sKKyNpZm5kZWYgTkRFQlVH
CisgICAgLS1tX3Njb3BlRGVwdGg7CisjZW5kaWYKKworICAgIHphcFRvKGxhc3RGcmFtZSk7CisK
KyAgICBpZiAobGFzdEZyYW1lLm1fZW5kICE9IG1fZnJhbWUubV9lbmQpIC8vIFBvcHBpbmcgdG8g
YSBmcmFtZSBpbiBhIGRpZmZlcmVudCBibG9jay4KKyAgICAgICAgbV9ibG9ja1N0YWNrLnNocmlu
ayhsYXN0RnJhbWUubV9lbmQpOworCisgICAgbV9mcmFtZSA9IGxhc3RGcmFtZTsKK30KKworaW5s
aW5lIEhhbmRsZVNsb3QgSGFuZGxlU3RhY2s6OnB1c2goKQoreworICAgIEFTU0VSVChtX3Njb3Bl
RGVwdGgpOyAvLyBDcmVhdGluZyBhIExvY2FsIG91dHNpZGUgb2YgYSBMb2NhbFNjb3BlIGlzIGEg
bWVtb3J5IGxlYWsuCisgICAgaWYgKG1fZnJhbWUubV9uZXh0ID09IG1fZnJhbWUubV9lbmQpCisg
ICAgICAgIGdyb3coKTsKKyAgICByZXR1cm4gbV9mcmFtZS5tX25leHQrKzsKK30KKworfQorCisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxl
cy9Mb2NhbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0xvY2Fs
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDliYmJhYjY2YzNmNDQxZGViZjg5MDg0ZmVjYjI2NWY1NmYzYjNmMQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxl
cy9Mb2NhbC5oCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBMb2NhbF9o
CisjZGVmaW5lIExvY2FsX2gKKworI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUg
IkhhbmRsZS5oIgorCisvKgorICAgIEEgTG9jYWwgaXMgYSB0ZW1wb3JhcnkgaGFuZGxlIHdob3Nl
IGxpZmV0aW1lIGlzIHRpZWQgdG8gYSBnaXZlbiBMb2NhbFNjb3BlLgorICAgIFVzZSBMb2NhbHMg
Zm9yIGxvY2FsIHZhbHVlcyBvbiB0aGUgc3RhY2suIEl0IGlzIGFuIGVycm9yIHRvIGNyZWF0ZSBh
IExvY2FsCisgICAgb3V0c2lkZSBvZiBhbnkgTG9jYWxTY29wZS4KKyovCisKK25hbWVzcGFjZSBK
U0MgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTG9jYWwgOiBwdWJsaWMgSGFuZGxl
PFQ+IHsKKyAgICBmcmllbmQgY2xhc3MgTG9jYWxTY29wZTsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IHR5cGVuYW1lIEhhbmRsZTxUPjo6RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKKyAgICBMb2Nh
bChKU0dsb2JhbERhdGEmLCBFeHRlcm5hbFR5cGUgPSBFeHRlcm5hbFR5cGUoKSk7CisgICAgTG9j
YWwoSlNHbG9iYWxEYXRhJiwgSGFuZGxlPFQ+KTsKKyAgICBMb2NhbChjb25zdCBMb2NhbDxUPiYp
OyAvLyBBZG9wdGluZyBjb25zdHJ1Y3Rvci4gVXNlZCB0byByZXR1cm4gYSBMb2NhbCB0byBhIGNh
bGxpbmcgZnVuY3Rpb24uCisKKyAgICBMb2NhbCYgb3BlcmF0b3I9KEV4dGVybmFsVHlwZSk7Cisg
ICAgTG9jYWwmIG9wZXJhdG9yPShIYW5kbGU8VD4pOworICAgIAorICAgIHVzaW5nIEhhbmRsZTxU
Pjo6c2xvdDsKKworcHJpdmF0ZToKKyAgICBMb2NhbChIYW5kbGVTbG90LCBFeHRlcm5hbFR5cGUp
OyAvLyBVc2VkIGJ5IExvY2FsU2NvcGU6OnJlbGVhc2UoKSB0byBtb3ZlIGEgTG9jYWwgdG8gYSBj
b250YWluaW5nIHNjb3BlLgorICAgIHZvaWQgaW50ZXJuYWxTZXQoRXh0ZXJuYWxUeXBlIHZhbHVl
KQorICAgIHsKKyAgICAgICAgSlNWYWx1ZSBuZXdWYWx1ZShIYW5kbGVUeXBlczxUPjo6dG9KU1Zh
bHVlKHZhbHVlKSk7CisgICAgICAgIEhhbmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKTsKKyAg
ICAgICAgQVNTRVJUKHNsb3QpOworICAgICAgICBIYW5kbGVIZWFwOjpoZWFwRm9yKHNsb3QpLT53
cml0ZUJhcnJpZXIoc2xvdCwgbmV3VmFsdWUpOworICAgICAgICAqc2xvdCA9IG5ld1ZhbHVlOwor
ICAgIH0KK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTG9jYWw8VD46OkxvY2Fs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXh0ZXJuYWxUeXBlIHZhbHVlKQorICAgIDogSGFu
ZGxlPFQ+KGdsb2JhbERhdGEuYWxsb2NhdGVMb2NhbEhhbmRsZSgpKQoreworICAgIGludGVybmFs
U2V0KHZhbHVlKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBMb2NhbDxUPjo6
TG9jYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBIYW5kbGU8VD4gaGFuZGxlKQorICAgIDog
SGFuZGxlPFQ+KGdsb2JhbERhdGEuYWxsb2NhdGVMb2NhbEhhbmRsZSgpKQoreworICAgIGludGVy
bmFsU2V0KGhhbmRsZS5nZXQoKSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUg
TG9jYWw8VD46OkxvY2FsKGNvbnN0IExvY2FsPFQ+JiBvKQorICAgIDogSGFuZGxlPFQ+KG8uc2xv
dCgpKQoreworICAgIGNvbnN0X2Nhc3Q8TG9jYWw8VD4mPihvKS5pbnZhbGlkYXRlKCk7IC8vIFBy
ZXZlbnQgYWNjaWRlbnRhbCBzaGFyaW5nLgorfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIExvY2FsPFQ+OjpMb2NhbChIYW5kbGVTbG90IHNsb3QsIEV4dGVybmFsVHlwZSB2YWx1ZSkK
KyAgICA6IEhhbmRsZTxUPihzbG90LCB2YWx1ZSkKK3sKK30KKwordGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IGlubGluZSBMb2NhbDxUPiYgTG9jYWw8VD46Om9wZXJhdG9yPShFeHRlcm5hbFR5cGUgdmFs
dWUpCit7CisgICAgaW50ZXJuYWxTZXQodmFsdWUpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBMb2NhbDxUPiYgTG9jYWw8VD46Om9wZXJhdG9y
PShIYW5kbGU8VD4gaGFuZGxlKQoreworICAgIGludGVybmFsU2V0KGhhbmRsZS5nZXQoKSk7Cisg
ICAgcmV0dXJuICp0aGlzOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0xvY2FsU2NvcGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9Mb2NhbFNjb3BlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Qy
N2IzMmVmMGU1MGNkNGYxNTg1NmVlM2RmNjcxMDczNWU2NWY3NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9Mb2NhbFNjb3BlLmgKQEAg
LTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTG9jYWxTY29wZV9oCisjZGVmaW5l
IExvY2FsU2NvcGVfaAorCisjaW5jbHVkZSAiSGFuZGxlU3RhY2suaCIKKyNpbmNsdWRlICJMb2Nh
bC5oIgorCituYW1lc3BhY2UgSlNDIHsKKy8qICAKKyAgICBBIExvY2FsU2NvcGUgaXMgYSB0ZW1w
b3Jhcnkgc2NvcGUgaW4gd2hpY2ggTG9jYWxzIGFyZSBhbGxvY2F0ZWQuIFdoZW4gYQorICAgIExv
Y2FsU2NvcGUgZ29lcyBvdXQgb2Ygc2NvcGUsIGFsbCB0aGUgTG9jYWxzIGNyZWF0ZWQgaW4gaXQg
YXJlIGRlc3Ryb3llZC4KKworICAgIExvY2FsU2NvcGUgaXMgc2ltaWxhciBpbiBjb25jZXB0IHRv
IE5TQXV0b3JlbGVhc2VQb29sLgorKi8KKworY2xhc3MgSlNHbG9iYWxEYXRhOworCitjbGFzcyBM
b2NhbFNjb3BlIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBMb2NhbFNjb3BlKEpTR2xvYmFsRGF0
YSYpOworICAgIH5Mb2NhbFNjb3BlKCk7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IExvY2FsPFQ+IHJlbGVhc2UoTG9jYWw8VD4pOyAvLyBEZXN0cm95cyBhbGwgb3RoZXIgbG9jYWxz
IGluIHRoZSBzY29wZS4KKworcHJpdmF0ZToKKyAgICBIYW5kbGVTdGFjayogbV9oYW5kbGVTdGFj
azsKKyAgICBIYW5kbGVTdGFjazo6RnJhbWUgbV9sYXN0RnJhbWU7Cit9OworCitpbmxpbmUgTG9j
YWxTY29wZTo6TG9jYWxTY29wZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgOiBtX2hh
bmRsZVN0YWNrKGdsb2JhbERhdGEuaGVhcC5oYW5kbGVTdGFjaygpKQoreworICAgIG1faGFuZGxl
U3RhY2stPmVudGVyU2NvcGUobV9sYXN0RnJhbWUpOworfQorCitpbmxpbmUgTG9jYWxTY29wZTo6
fkxvY2FsU2NvcGUoKQoreworICAgIG1faGFuZGxlU3RhY2stPmxlYXZlU2NvcGUobV9sYXN0RnJh
bWUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTG9jYWw8VD4gTG9jYWxTY29wZTo6cmVs
ZWFzZShMb2NhbDxUPiBsb2NhbCkKK3sKKyAgICB0eXBlbmFtZSBMb2NhbDxUPjo6RXh0ZXJuYWxU
eXBlIHB0ciA9IGxvY2FsLmdldCgpOworCisgICAgbV9oYW5kbGVTdGFjay0+bGVhdmVTY29wZSht
X2xhc3RGcmFtZSk7CisgICAgSGFuZGxlU2xvdCBzbG90ID0gbV9oYW5kbGVTdGFjay0+cHVzaCgp
OworICAgIG1faGFuZGxlU3RhY2stPmVudGVyU2NvcGUobV9sYXN0RnJhbWUpOworCisgICAgcmV0
dXJuIExvY2FsPFQ+KHNsb3QsIHB0cik7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0hlYXAuY3BwCmluZGV4IGIwNWZlMGFlYmYwYWNiOGE4OGFjNGM4OTdjZjgx
Yzc3ZjhjMDU0OTEuLmMzOTY1ZmNjNDQ1MzlmMmFmNWZkMDYyMDQ3M2U0Y2M1NWM2ZDgzNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuY3BwCkBAIC0yMzEsOCArMjMxLDYgQEAg
dm9pZCBIZWFwOjptYXJrUm9vdHMoKQogICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlcjo6bWFy
a0xpc3RzKG1hcmtTdGFjaywgKm1fbWFya0xpc3RTZXQpOwogICAgIGlmIChtX2dsb2JhbERhdGEt
PmV4Y2VwdGlvbikKICAgICAgICAgbWFya1N0YWNrLmFwcGVuZCgmbV9nbG9iYWxEYXRhLT5leGNl
cHRpb24pOwotICAgIGlmIChtX2dsb2JhbERhdGEtPmZpcnN0U3RyaW5naWZpZXJUb01hcmspCi0g
ICAgICAgIEpTT05PYmplY3Q6Om1hcmtTdHJpbmdpZmllcnMobWFya1N0YWNrLCBtX2dsb2JhbERh
dGEtPmZpcnN0U3RyaW5naWZpZXJUb01hcmspOwogICAgIG1hcmtTdGFjay5kcmFpbigpOwogCiAg
ICAgbV9oYW5kbGVIZWFwLm1hcmtTdHJvbmdIYW5kbGVzKG1hcmtTdGFjayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZWFwLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9IZWFwLmgKaW5kZXggZGFmMzEwOTM2NDJmNDYzNGU0YzYxNTc1Y2I1NjAx
Y2Q0NTlkZTkzOS4uOThjNTA4MTcwNmMzM2Y2NTg5NWIzYWE2MzdmZDYxNWVhNTExYjcxZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaApAQCAtMjMsNiArMjMsNyBAQAogI2RlZmlu
ZSBIZWFwX2gKIAogI2luY2x1ZGUgIkhhbmRsZUhlYXAuaCIKKyNpbmNsdWRlICJIYW5kbGVTdGFj
ay5oIgogI2luY2x1ZGUgIk1hcmtTdGFjay5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTk4LDYgKzk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yPiB2b2lkIGZvckVhY2goRnVuY3Rv
ciYpOwogICAgICAgICAKICAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRsZSgp
IHsgcmV0dXJuIG1faGFuZGxlSGVhcC5hbGxvY2F0ZSgpOyB9CisgICAgICAgIEhhbmRsZVNsb3Qg
YWxsb2NhdGVMb2NhbEhhbmRsZSgpIHsgcmV0dXJuIG1faGFuZGxlU3RhY2sucHVzaCgpOyB9CisK
KyAgICAgICAgSGFuZGxlU3RhY2sqIGhhbmRsZVN0YWNrKCkgeyByZXR1cm4gJm1faGFuZGxlU3Rh
Y2s7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKU0dsb2JhbERhdGE7
CkBAIC0xMzIsNyArMTM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY2hpbmVUaHJl
YWRzIG1fbWFjaGluZVRocmVhZHM7CiAgICAgICAgIE1hcmtTdGFjayBtX21hcmtTdGFjazsKICAg
ICAgICAgSGFuZGxlSGVhcCBtX2hhbmRsZUhlYXA7Ci0gICAgICAgIAorICAgICAgICBIYW5kbGVT
dGFjayBtX2hhbmRsZVN0YWNrOworCiAgICAgICAgIHNpemVfdCBtX2V4dHJhQ29zdDsKICAgICB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApp
bmRleCBhZjQ0NGQ1NzlhYzQyNWZmMWIxNGQwMTI5ZDg3OWNlMGQ0NTk1NDVjLi44ZDhmN2UzZmFj
OTU4MGEyNDE5MmVlZGY0MzA4NTljNDMxNjIzZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKQEAgLTE1MSw3ICsxNTEsNiBAQCBKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSBnbG9iYWxEYXRhVHlwZSwgVGhyZWFk
U3RhY2tUeXBlIHRocmVhZAogICAgICwgaGVhcCh0aGlzKQogICAgICwgZ2xvYmFsT2JqZWN0Q291
bnQoMCkKICAgICAsIGR5bmFtaWNHbG9iYWxPYmplY3QoMCkKLSAgICAsIGZpcnN0U3RyaW5naWZp
ZXJUb01hcmsoMCkKICAgICAsIGNhY2hlZFVUQ09mZnNldChOYU4pCiAgICAgLCBtYXhSZWVudHJ5
RGVwdGgodGhyZWFkU3RhY2tUeXBlID09IFRocmVhZFN0YWNrVHlwZVNtYWxsID8gTWF4U21hbGxU
aHJlYWRSZWVudHJ5RGVwdGggOiBNYXhMYXJnZVRocmVhZFJlZW50cnlEZXB0aCkKICAgICAsIG1f
cmVnRXhwQ2FjaGUobmV3IFJlZ0V4cENhY2hlKHRoaXMpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCAxYTc5MWJhOTMyZjU4MWQ1N2FjODUzZWEw
ZTg1ZTkzN2ExODU2ZTQ3Li41MmZmYWM3NDcyNGRjMDQxMWQ2ZDA5Mzk1ZDE3YzM4MGFkNzU3MGQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAt
NTcsNiArNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvZGVCbG9jazsKICAg
ICBjbGFzcyBDb21tb25JZGVudGlmaWVyczsKKyAgICBjbGFzcyBIYW5kbGVTdGFjazsKICAgICBj
bGFzcyBJZGVudGlmaWVyVGFibGU7CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXI7CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CkBAIC0yMjMsOCArMjI0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgSGFzaFNldDxKU09iamVjdCo+IHN0cmluZ1JlY3Vyc2lvbkNoZWNrVmlzaXRlZE9iamVj
dHM7CiAKLSAgICAgICAgU3RyaW5naWZpZXIqIGZpcnN0U3RyaW5naWZpZXJUb01hcms7Ci0KICAg
ICAgICAgZG91YmxlIGNhY2hlZFVUQ09mZnNldDsKICAgICAgICAgRFNUT2Zmc2V0Q2FjaGUgZHN0
T2Zmc2V0Q2FjaGU7CiAgICAgICAgIApAQCAtMjU5LDYgKzI1OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI2VuZGlmCiAgICAgICAgIHZvaWQgZHVtcFJlZ0V4cFRyYWNlKCk7CiAgICAgICAgIEhhbmRs
ZVNsb3QgYWxsb2NhdGVHbG9iYWxIYW5kbGUoKSB7IHJldHVybiBoZWFwLmFsbG9jYXRlR2xvYmFs
SGFuZGxlKCk7IH0KKyAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUxvY2FsSGFuZGxlKCkgeyBy
ZXR1cm4gaGVhcC5hbGxvY2F0ZUxvY2FsSGFuZGxlKCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXggN2QxOGUwODQy
OGEyMzBlMmFhZTcxYzMyMDQzZGFhNDI4MWEyZTk2Yy4uYzYwYTEyYjBjOTIwYjE1YjIyYjE3MTA4
ODY0MjJkNzc1MmJhZDI3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
Tk9iamVjdC5jcHAKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJKU0FycmF5LmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJMaXRlcmFsUGFyc2VyLmgiCisjaW5j
bHVkZSAiTG9jYWwuaCIKKyNpbmNsdWRlICJMb2NhbFNjb3BlLmgiCiAjaW5jbHVkZSAiTG9va3Vw
LmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJVU3RyaW5nQnVp
bGRlci5oIgpAQCAtNzUsNyArNzcsNiBAQCBjbGFzcyBTdHJpbmdpZmllciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoU3RyaW5naWZpZXIpOwogcHVibGljOgogICAgIFN0cmluZ2lmaWVyKEV4
ZWNTdGF0ZSosIEpTVmFsdWUgcmVwbGFjZXIsIEpTVmFsdWUgc3BhY2UpOwotICAgIH5TdHJpbmdp
ZmllcigpOwogICAgIEpTVmFsdWUgc3RyaW5naWZ5KEpTVmFsdWUpOwogCiAgICAgdm9pZCBtYXJr
QWdncmVnYXRlKE1hcmtTdGFjayYpOwpAQCAtODMsMTUgKzg0LDE0IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgY2xhc3MgSG9sZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEhvbGRlcihKU09i
amVjdCopOworICAgICAgICBIb2xkZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU09iamVj
dCopOwogCiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QoKSBjb25zdCB7IHJldHVybiBtX29iamVj
dC5nZXQoKTsgfQotICAgICAgICBEZXByZWNhdGVkUHRyPEpTT2JqZWN0Piogb2JqZWN0U2xvdCgp
IHsgcmV0dXJuICZtX29iamVjdDsgfQogCiAgICAgICAgIGJvb2wgYXBwZW5kTmV4dFByb3BlcnR5
KFN0cmluZ2lmaWVyJiwgVVN0cmluZ0J1aWxkZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG1fb2JqZWN0OworICAgICAgICBMb2NhbDxKU09iamVj
dD4gbV9vYmplY3Q7CiAgICAgICAgIGNvbnN0IGJvb2wgbV9pc0FycmF5OwogICAgICAgICBib29s
IG1faXNKU0FycmF5OwogICAgICAgICB1bnNpZ25lZCBtX2luZGV4OwpAQCAtMTEzLDcgKzExMyw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1bmluZGVudCgpOwogICAgIHZvaWQgc3RhcnROZXdMaW5l
KFVTdHJpbmdCdWlsZGVyJikgY29uc3Q7CiAKLSAgICBTdHJpbmdpZmllciogY29uc3QgbV9uZXh0
U3RyaW5naWZpZXJUb01hcms7CiAgICAgRXhlY1N0YXRlKiBjb25zdCBtX2V4ZWM7CiAgICAgY29u
c3QgSlNWYWx1ZSBtX3JlcGxhY2VyOwogICAgIGJvb2wgbV91c2luZ0FycmF5UmVwbGFjZXI7CkBA
IC0xMjIsNyArMTIxLDYgQEAgcHJpdmF0ZToKICAgICBDYWxsRGF0YSBtX3JlcGxhY2VyQ2FsbERh
dGE7CiAgICAgY29uc3QgVVN0cmluZyBtX2dhcDsKIAotICAgIEhhc2hTZXQ8SlNPYmplY3QqPiBt
X2hvbGRlckN5Y2xlRGV0ZWN0b3I7CiAgICAgVmVjdG9yPEhvbGRlciwgMTY+IG1faG9sZGVyU3Rh
Y2s7CiAgICAgVVN0cmluZyBtX3JlcGVhdGVkR2FwOwogICAgIFVTdHJpbmcgbV9pbmRlbnQ7CkBA
IC0yMDAsMTYgKzE5OCwxMyBAQCBKU1ZhbHVlIFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbDo6
dmFsdWUoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIFN0cmluZ2lmaWVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFN0
cmluZ2lmaWVyOjpTdHJpbmdpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcmVwbGFjZXIs
IEpTVmFsdWUgc3BhY2UpCi0gICAgOiBtX25leHRTdHJpbmdpZmllclRvTWFyayhleGVjLT5nbG9i
YWxEYXRhKCkuZmlyc3RTdHJpbmdpZmllclRvTWFyaykKLSAgICAsIG1fZXhlYyhleGVjKQorICAg
IDogbV9leGVjKGV4ZWMpCiAgICAgLCBtX3JlcGxhY2VyKHJlcGxhY2VyKQogICAgICwgbV91c2lu
Z0FycmF5UmVwbGFjZXIoZmFsc2UpCiAgICAgLCBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVz
KGV4ZWMpCiAgICAgLCBtX3JlcGxhY2VyQ2FsbFR5cGUoQ2FsbFR5cGVOb25lKQogICAgICwgbV9n
YXAoZ2FwKGV4ZWMsIHNwYWNlKSkKIHsKLSAgICBleGVjLT5nbG9iYWxEYXRhKCkuZmlyc3RTdHJp
bmdpZmllclRvTWFyayA9IHRoaXM7Ci0KICAgICBpZiAoIW1fcmVwbGFjZXIuaXNPYmplY3QoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yNDksMjEgKzI0NCw2IEBAIFN0cmluZ2lmaWVyOjpTdHJp
bmdpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcmVwbGFjZXIsIEpTVmFsdWUgc3BhY2Up
CiAgICAgbV9yZXBsYWNlckNhbGxUeXBlID0gYXNPYmplY3QobV9yZXBsYWNlciktPmdldENhbGxE
YXRhKG1fcmVwbGFjZXJDYWxsRGF0YSk7CiB9CiAKLVN0cmluZ2lmaWVyOjp+U3RyaW5naWZpZXIo
KQotewotICAgIEFTU0VSVChtX2V4ZWMtPmdsb2JhbERhdGEoKS5maXJzdFN0cmluZ2lmaWVyVG9N
YXJrID09IHRoaXMpOwotICAgIG1fZXhlYy0+Z2xvYmFsRGF0YSgpLmZpcnN0U3RyaW5naWZpZXJU
b01hcmsgPSBtX25leHRTdHJpbmdpZmllclRvTWFyazsKLX0KLQotdm9pZCBTdHJpbmdpZmllcjo6
bWFya0FnZ3JlZ2F0ZShNYXJrU3RhY2smIG1hcmtTdGFjaykKLXsKLSAgICBmb3IgKFN0cmluZ2lm
aWVyKiBzdHJpbmdpZmllciA9IHRoaXM7IHN0cmluZ2lmaWVyOyBzdHJpbmdpZmllciA9IHN0cmlu
Z2lmaWVyLT5tX25leHRTdHJpbmdpZmllclRvTWFyaykgewotICAgICAgICBzaXplX3Qgc2l6ZSA9
IG1faG9sZGVyU3RhY2suc2l6ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgICAgIG1hcmtTdGFjay5hcHBlbmQobV9ob2xkZXJTdGFja1tpXS5v
YmplY3RTbG90KCkpOwotICAgIH0KLX0KLQogSlNWYWx1ZSBTdHJpbmdpZmllcjo6c3RyaW5naWZ5
KEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KG1fZXhlYyk7CkBAIC00MjUsMTIgKzQwNSwxNCBAQCBTdHJpbmdpZmllcjo6U3RyaW5n
aWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWls
ZGVyJgogICAgIH0KIAogICAgIC8vIEhhbmRsZSBjeWNsZSBkZXRlY3Rpb24sIGFuZCBwdXQgdGhl
IGhvbGRlciBvbiB0aGUgc3RhY2suCi0gICAgaWYgKCFtX2hvbGRlckN5Y2xlRGV0ZWN0b3IuYWRk
KG9iamVjdCkuc2Vjb25kKSB7Ci0gICAgICAgIHRocm93RXJyb3IobV9leGVjLCBjcmVhdGVUeXBl
RXJyb3IobV9leGVjLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3Ry
dWN0dXJlcy4iKSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWQ7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1faG9sZGVyU3RhY2suc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
aWYgKG1faG9sZGVyU3RhY2tbaV0ub2JqZWN0KCkgPT0gb2JqZWN0KSB7CisgICAgICAgICAgICB0
aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVycm9yKG1fZXhlYywgIkpTT04uc3RyaW5naWZ5
IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOworICAgICAgICAgICAgcmV0
dXJuIFN0cmluZ2lmeUZhaWxlZDsKKyAgICAgICAgfQogICAgIH0KICAgICBib29sIGhvbGRlclN0
YWNrV2FzRW1wdHkgPSBtX2hvbGRlclN0YWNrLmlzRW1wdHkoKTsKLSAgICBtX2hvbGRlclN0YWNr
LmFwcGVuZChvYmplY3QpOworICAgIG1faG9sZGVyU3RhY2suYXBwZW5kKEhvbGRlcihtX2V4ZWMt
Pmdsb2JhbERhdGEoKSwgb2JqZWN0KSk7CiAgICAgaWYgKCFob2xkZXJTdGFja1dhc0VtcHR5KQog
ICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogCkBAIC00NTAsNyArNDMyLDYgQEAg
U3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZp
ZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgICAgICB0aWNrQ291bnQgPSBsb2Nh
bFRpbWVvdXRDaGVja2VyLnRpY2tzVW50aWxOZXh0Q2hlY2soKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICBtX2hvbGRlckN5Y2xlRGV0ZWN0b3IucmVtb3ZlKG1faG9sZGVyU3Rh
Y2subGFzdCgpLm9iamVjdCgpKTsKICAgICAgICAgbV9ob2xkZXJTdGFjay5yZW1vdmVMYXN0KCk7
CiAgICAgfSB3aGlsZSAoIW1faG9sZGVyU3RhY2suaXNFbXB0eSgpKTsKICAgICByZXR1cm4gU3Ry
aW5naWZ5U3VjY2VlZGVkOwpAQCAtNDg1LDggKzQ2Niw4IEBAIGlubGluZSB2b2lkIFN0cmluZ2lm
aWVyOjpzdGFydE5ld0xpbmUoVVN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiAgICAgYnVp
bGRlci5hcHBlbmQobV9pbmRlbnQpOwogfQogCi1pbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6
SG9sZGVyKEpTT2JqZWN0KiBvYmplY3QpCi0gICAgOiBtX29iamVjdChvYmplY3QpCitpbmxpbmUg
U3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNP
YmplY3QqIG9iamVjdCkKKyAgICA6IG1fb2JqZWN0KGdsb2JhbERhdGEsIG9iamVjdCkKICAgICAs
IG1faXNBcnJheShvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKQogICAgICwgbV9p
bmRleCgwKQogewpAQCAtNjIzLDE2ICs2MDQsMTEgQEAgYm9vbCBKU09OT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm8K
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBF
eGVjU3RhdGU6Ompzb25UYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTsKIH0KIAotdm9pZCBKU09OT2JqZWN0OjptYXJrU3RyaW5naWZpZXJzKE1hcmtTdGFjayYgbWFy
a1N0YWNrLCBTdHJpbmdpZmllciogc3RyaW5naWZpZXIpCi17Ci0gICAgc3RyaW5naWZpZXItPm1h
cmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKLX0KLQogY2xhc3MgV2Fsa2VyIHsKIHB1YmxpYzoKICAg
ICBXYWxrZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlIGNh
bGxUeXBlLCBDYWxsRGF0YSBjYWxsRGF0YSkKICAgICAgICAgOiBtX2V4ZWMoZXhlYykKLSAgICAg
ICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQorICAgICAgICAsIG1fZnVuY3Rpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBmdW5jdGlvbikKICAgICAgICAgLCBtX2NhbGxUeXBlKGNhbGxUeXBlKQogICAg
ICAgICAsIG1fY2FsbERhdGEoY2FsbERhdGEpCiAgICAgewpAQCAtNjQ5LDcgKzYyNSw3IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEhvbGRlcjsKIAogICAgIEV4ZWNTdGF0ZSogbV9leGVj
OwotICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+IG1fZnVuY3Rpb247CisgICAgTG9jYWw8SlNP
YmplY3Q+IG1fZnVuY3Rpb247CiAgICAgQ2FsbFR5cGUgbV9jYWxsVHlwZTsKICAgICBDYWxsRGF0
YSBtX2NhbGxEYXRhOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuaAppbmRleCBhY2ZmZWNhMmMwNTJiOTg5NjU0NmNjMWUxNGFiZjk2YTIwMTNiODIwLi41MjY0
ZmQ3OThmMDE0MjNiOTQwODYyZWJmYmY4ZGEzYjBmZWQyY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCkBAIC00MSw4ICs0MSw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHByb3RvdHlwZSwgVHlw
ZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBBbm9ueW1vdXNTbG90Q291bnQsICZz
X2luZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgbWFya1N0cmluZ2lmaWVy
cyhNYXJrU3RhY2smLCBTdHJpbmdpZmllciopOwotCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBKU09iamVjdDo6U3RydWN0dXJlRmxhZ3M7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKaW5kZXggZDk4ZGYzMDNjYzZiOTNlNWEzYjk2MGE0ZWVl
ZDY4OGRiYWY4YjYxYi4uM2Q0NDkyMzY2NGE2MzA4YmQ2MTQ3ZmM0ZjAzZTQ2MzczMzZiYmQ2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFya1N0YWNrLmgKQEAgLTcxLDYgKzcx
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGNvdW50KQogICAgICAgICAg
ICAgICAgIG1fbWFya1NldHMuYXBwZW5kKE1hcmtTZXQodmFsdWVzLCB2YWx1ZXMgKyBjb3VudCwg
cHJvcGVydGllcykpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFwcGVuZFNs
b3RzKEhhbmRsZVNsb3QgdmFsdWVzLCBzaXplX3QgY291bnQsIE1hcmtTZXRQcm9wZXJ0aWVzIHBy
b3BlcnRpZXMgPSBOb051bGxWYWx1ZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb3Vu
dCkKKyAgICAgICAgICAgICAgICBtX21hcmtTZXRzLmFwcGVuZChNYXJrU2V0KHZhbHVlcywgdmFs
dWVzICsgY291bnQsIHByb3BlcnRpZXMpKTsKKyAgICAgICAgfQogCiAgICAgICAgIHZvaWQgYXBw
ZW5kKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cykKICAgICAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>85862</attachid>
            <date>2011-03-15 15:27:37 -0700</date>
            <delta_ts>2011-03-15 15:41:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56394-20110315152736.patch</filename>
            <type>text/plain</type>
            <size>43836</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODExNjMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDJm
ZTZlNDA0OWExMGQxZjYxNGNlOGNhYWI3ZWM0YTRiZmRkMjY2N2YuLmI3MDU0YTM4MjJjZmIyYWFl
ZTQwZWQ5OTk5YTRhOTNhOTU5Njg3YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU1IEBACisyMDExLTAzLTE1ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNl
IExvY2FsPFQ+IHRvIGFsbG93IHVzIHRvIHN0YXJ0IG1vdmluZyB0byBwcmVjaXNlIG1hcmtpbmcg
b2YgbG9jYWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01NjM5NAorCisgICAgICAgIEludHJvZHVjZSBhIG5ldyBoYW5kbGUgdHlwZSwgTG9jYWw8VD4g
YW5kIGEgc2NvcGluZyBtZWNoYW5pc20KKyAgICAgICAgTG9jYWxTY29wZSB0byBhbGxvdyB1cyB0
byBzdGFydCBtb3ZpbmcgdG93YXJkcyBwcmVjaXNlIG1hcmtpbmcKKyAgICAgICAgb2YgdGVtcG9y
YXJpZXMgYW5kIGxvY2FsIHZhcmlhYmxlcy4KKworICAgICAgICBXZSBhbHNvIHN0YXJ0IHRvIHVz
ZSB0aGUgbmV3IExvY2FsPD4gdHlwZSBpbiB0aGUgSlNPTiBzdHJpbmdpZmllcgorICAgICAgICBz
byB0aGF0IHdlIGNhbiBoYXZlIHNvbWUgY292ZXJhZ2Ugb2YgdGhlaXIgYmVoYXZpb3VyIGluIHRo
ZSBpbml0aWFsCisgICAgICAgIGNoZWNraW4uCisKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hh
bmRsZVN0YWNrLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjpIYW5kbGVT
dGFjayk6CisgICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjptYXJrKToKKyAgICAgICAgKEpTQzo6
SGFuZGxlU3RhY2s6Omdyb3cpOgorICAgICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZVN0
YWNrLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpIYW5kbGVTdGFjazo6ZW50ZXJTY29wZSk6Cisg
ICAgICAgIChKU0M6OkhhbmRsZVN0YWNrOjp6YXBUbyk6CisgICAgICAgIChKU0M6OkhhbmRsZVN0
YWNrOjpsZWF2ZVNjb3BlKToKKyAgICAgICAgKEpTQzo6SGFuZGxlU3RhY2s6OnB1c2gpOgorICAg
ICAgICAqIGNvbGxlY3Rvci9oYW5kbGVzL0xvY2FsLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
b2NhbDo6aW50ZXJuYWxTZXQpOgorICAgICAgICAoSlNDOjo6OkxvY2FsKToKKyAgICAgICAgKEpT
Qzo6OjpvcGVyYXRvcik6CisgICAgICAgICogY29sbGVjdG9yL2hhbmRsZXMvTG9jYWxTY29wZS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TG9jYWxTY29wZTo6TG9jYWxTY29wZSk6CisgICAgICAg
IChKU0M6OkxvY2FsU2NvcGU6On5Mb2NhbFNjb3BlKToKKyAgICAgICAgKEpTQzo6TG9jYWxTY29w
ZTo6cmVsZWFzZSk6CisgICAgICAgICogcnVudGltZS9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6bWFya1Jvb3RzKToKKyAgICAgICAgKiBydW50aW1lL0hlYXAuaDoKKyAgICAgICAgKEpT
Qzo6SGVhcDo6YWxsb2NhdGVMb2NhbEhhbmRsZSk6CisgICAgICAgIChKU0M6OkhlYXA6OmhhbmRs
ZVN0YWNrKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsRGF0YS5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OmFsbG9jYXRlTG9jYWxIYW5k
bGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlN0
cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjphcHBl
bmRTdHJpbmdpZmllZFZhbHVlKToKKyAgICAgICAgKEpTQzo6U3RyaW5naWZpZXI6OkhvbGRlcjo6
SG9sZGVyKToKKyAgICAgICAgKEpTQzo6V2Fsa2VyOjpXYWxrZXIpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPTk9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvTWFya1N0YWNrLmg6CisgICAgICAg
IChKU0M6Ok1hcmtTdGFjazo6YXBwZW5kVmFsdWVzKToKKyAgICAgICAgKEpTQzo6TWFya1N0YWNr
OjphcHBlbmRTbG90cyk6CisKIDIwMTEtMDMtMTUgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFj
bG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUwMDc5YTJkYWE3MDNjYzNmMDliNzczNmIzOWI1
ZmI2MjNhNzA2M2YuLjEyMWFkYjk1ZGI3YWNkYTNmNjk3M2E2ODljODliOTQwZDVmY2EzMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzUsNiArMzc1LDEwIEBACiAJCUE3NERF
MUQwMTIwQjg3NTYwMEQ0MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRERTFDQjEyMEI4NkQ2MDBENDBENUIg
LyogQVJNdjdBc3NlbWJsZXIuY3BwICovOyB9OwogCQlBNzU3MDZERTExOEEyQkNGMDA1N0Y4OEYg
LyogSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGlj
MzJfNjQuY3BwICovOyB9OwogCQlBNzY2QjQ0RjBFRThEQ0QxMDA5NTE4Q0EgLyogRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTdCNDhEQjUwRUU3NENGQzAwRENCREI2IC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzZCRTM5RjEz
MkVFQTdDMDA4RjdGMEIgLyogSGFuZGxlU3RhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2QkUxQjcxMzJEQUM2ODAwOEY3RjBCIC8qIEhhbmRs
ZVN0YWNrLmNwcCAqLzsgfTsKKwkJQTc2QkUzQTAxMzJFRUE3QzAwOEY3RjBCIC8qIEhhbmRsZVN0
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzZC
RTFCODEzMkRBQzY4MDA4RjdGMEIgLyogSGFuZGxlU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNzZCRTNBMTEzMkVFQTdDMDA4RjdGMEIg
LyogTG9jYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE3NkJFMUI1MTMyREFCRjUwMDhGN0YwQiAvKiBMb2NhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3NkJFM0EyMTMyRUVBN0MwMDhGN0YwQiAv
KiBMb2NhbFNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNzZCRTFCNjEzMkRBQzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE3NkM1MTc2MTE4Mjc0OEQw
MDcxNUIwNSAvKiBKU0ludGVyZmFjZUpJVC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2QzUxNzQxMTgyNzQ4RDAwNzE1QjA1IC8qIEpTSW50ZXJmYWNl
SklULmggKi87IH07CiAJCUE3Nzk1NTkwMTAxQTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3Nzk1NThGMTAx
QTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzgzQTBEMTExQTM2RENBMDA1NjNEMjAgLyogSlNPYmpl
Y3RXaXRoR2xvYmFsT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzgzQTBEMDExQTM2RENBMDA1NjNEMjAgLyogSlNPYmplY3RXaXRoR2xvYmFs
T2JqZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwNjksNiArMTA3MywxMCBAQAogCQlBNzRCMzQ5ODEwMkE1RjhFMDAzMkFCOTggLyogTWFy
a1N0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1hcmtTdGFj
ay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3NERFMUNCMTIwQjg2RDYwMEQ0
MEQ1QiAvKiBBUk12N0Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBUk12N0Fzc2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE3NTcwNkREMTE4QTJCQ0YwMDU3Rjg4RiAvKiBKSVRBcml0aG1ldGljMzJfNjQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUQXJpdGhtZXRpYzMyXzY0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc2QkUxQjUxMzJEQUJGNTAwOEY3RjBCIC8q
IExvY2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvY2FsLmg7IHBhdGgg
PSBjb2xsZWN0b3IvaGFuZGxlcy9Mb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBNzZCRTFCNjEzMkRBQzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMb2NhbFNjb3BlLmg7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxl
cy9Mb2NhbFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NkJFMUI3MTMy
REFDNjgwMDhGN0YwQiAvKiBIYW5kbGVTdGFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBIYW5kbGVTdGFjay5jcHA7IHBhdGggPSBjb2xsZWN0b3IvaGFuZGxlcy9I
YW5kbGVTdGFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3NkJFMUI4MTMy
REFDNjgwMDhGN0YwQiAvKiBIYW5kbGVTdGFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBIYW5kbGVTdGFjay5oOyBwYXRoID0gY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlU3Rh
Y2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc2QzUxNzQxMTgyNzQ4RDAwNzE1
QjA1IC8qIEpTSW50ZXJmYWNlSklULmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTSW50ZXJmYWNlSklULmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk1NThG
MTAxQTc0RDUwMDExNEU1NSAvKiBNYXJrU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTWFya1N0YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3ODNB
MEQwMTFBMzZEQ0EwMDU2M0QyMCAvKiBKU09iamVjdFdpdGhHbG9iYWxPYmplY3QuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQwLDYgKzIxNDgsMTAgQEAKIAkJCQlBN0U0
RkM4ODEyRjhFNENBMDBBRjRDRjQgLyogSGFuZGxlLmggKi8sCiAJCQkJQTdFNEZDODkxMkY4RTRD
QTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwICovLAogCQkJCUE3RTRGQzhBMTJGOEU0Q0EwMEFG
NENGNCAvKiBIYW5kbGVIZWFwLmggKi8sCisJCQkJQTc2QkUxQjcxMzJEQUM2ODAwOEY3RjBCIC8q
IEhhbmRsZVN0YWNrLmNwcCAqLywKKwkJCQlBNzZCRTFCODEzMkRBQzY4MDA4RjdGMEIgLyogSGFu
ZGxlU3RhY2suaCAqLywKKwkJCQlBNzZCRTFCNTEzMkRBQkY1MDA4RjdGMEIgLyogTG9jYWwuaCAq
LywKKwkJCQlBNzZCRTFCNjEzMkRBQzI0MDA4RjdGMEIgLyogTG9jYWxTY29wZS5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBoYW5kbGVzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI1
MTYsNiArMjUyOCw5IEBACiAJCQkJQTdDNDBDMEExMzBCMDU3RDAwRDAwMkExIC8qIEJsb2NrU3Rh
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzQwQzBCMTMwQjA1N0QwMEQwMDJBMSAvKiBTZW50
aW5lbExpbmtlZExpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QzQwQzBDMTMwQjA1N0QwMEQw
MDJBMSAvKiBTaW5nbHlMaW5rZWRMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNzZCRTNBMDEz
MkVFQTdDMDA4RjdGMEIgLyogSGFuZGxlU3RhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUE3NkJF
M0ExMTMyRUVBN0MwMDhGN0YwQiAvKiBMb2NhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTc2QkUz
QTIxMzJFRUE3QzAwOEY3RjBCIC8qIExvY2FsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
RUM5REM1MTMyOERGODIwMDJCMkFENyAvKiBERkdCeXRlQ29kZVBhcnNlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODZFQzlEQzYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR0dlbmVyYXRpb25JbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDODEzMjhERjgyMDAyQjJBRDcgLyogREZHR3JhcGgu
aCBpbiBIZWFkZXJzICovLApAQCAtMjk2Nyw2ICsyOTgyLDcgQEAKIAkJCQk5Nzk0MUE3RTEzMDJB
MDk4MDA0QTM0NDcgLyogQ3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTdFNEZDOTExMkY4RTRDQTAwQUY0Q0Y0IC8qIEhhbmRsZUhlYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTdBQzI1QkQxMzA0RDE0NjAwMzM5NkRFIC8qIE1hcmtlZEJsb2Nr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3NkJFMzlGMTMyRUVBN0MwMDhGN0YwQiAvKiBIYW5k
bGVTdGFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkVDOURDNDEzMjhERjgyMDAyQjJBRDcg
LyogREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODZFQzlEQzcxMzI4
REY4MjAwMkIyQUQ3IC8qIERGR0dyYXBoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2RUM5REM5
MTMyOERGODIwMDJCMkFENyAvKiBERkdKSVRDb2RlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hh
bmRsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZS5o
CmluZGV4IDk4YzYwZWNiY2M0YmVhODY1MzI4N2RlODY3YzVhODEzMjc1OGJiNzcuLmQ0ZTM4YzBj
ZmU4YjNhMzY2YTg5MWNkYzBkMmYwZmVhYTI4NWFmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlLmgKQEAgLTExMSwxMCArMTExLDE5IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlLCB0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFuZGxlQ29udmVy
dGVyIHsKIH07CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBCYXNlPiBzdHJ1Y3QgSGFuZGxlQ29udmVy
dGVyPEJhc2UsIFVua25vd24+IHsKKyAgICBIYW5kbGU8SlNPYmplY3Q+IGFzT2JqZWN0KCkgY29u
c3Q7CisgICAgYm9vbCBpc09iamVjdCgpIGNvbnN0IHsgcmV0dXJuIGpzVmFsdWUoKS5pc09iamVj
dCgpOyB9CisgICAgYm9vbCBnZXROdW1iZXIoZG91YmxlIG51bWJlcikgY29uc3QgeyByZXR1cm4g
anNWYWx1ZSgpLmdldE51bWJlcihudW1iZXIpOyB9CisgICAgVVN0cmluZyBnZXRTdHJpbmcoRXhl
Y1N0YXRlKikgY29uc3Q7CisgICAgYm9vbCBpc1VuZGVmaW5lZE9yTnVsbCgpIGNvbnN0IHsgcmV0
dXJuIGpzVmFsdWUoKS5pc1VuZGVmaW5lZE9yTnVsbCgpOyB9CisKK3ByaXZhdGU6CisgICAgSlNW
YWx1ZSBqc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgQmFzZSo+KHRo
aXMpLT5nZXQoKTsgfQogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEhhbmRsZSA6
IHB1YmxpYyBIYW5kbGVCYXNlLCBwdWJsaWMgSGFuZGxlQ29udmVydGVyPEhhbmRsZTxUPiwgVD4g
ewogcHVibGljOgorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBBLCB0eXBlbmFtZSBCPiBmcmllbmQg
Y2xhc3MgSGFuZGxlQ29udmVydGVyOwogICAgIHR5cGVkZWYgdHlwZW5hbWUgSGFuZGxlVHlwZXM8
VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFU+
IEhhbmRsZShIYW5kbGU8VT4gbykKICAgICB7CkBAIC0xNDQsNiArMTUzLDExIEBAIHByaXZhdGU6
CiAgICAgfQogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IEhhbmRsZTxKU09iamVjdD4g
SGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+Ojphc09iamVjdCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIEhhbmRsZTxKU09iamVjdD46OndyYXBTbG90KHN0YXRpY19jYXN0PGNvbnN0IEJhc2Uq
Pih0aGlzKS0+c2xvdCgpKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgSGFuZGxlPFQ+JiBhLCBjb25zdCBIYW5kbGU8
VT4mIGIpCiB7IAogICAgIHJldHVybiBhLmdldCgpID09IGIuZ2V0KCk7IApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZVN0YWNrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9IYW5kbGVTdGFjay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDRkODgzODAyYTIxZTJhYjlkMTdjMjgyNmMzNDVjNWFhZWM1ZDU3ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9jb2xsZWN0b3IvaGFuZGxlcy9I
YW5kbGVTdGFjay5jcHAKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCisKKyNpbmNsdWRlICJNYXJrU3Rh
Y2suaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0hhbmRsZVN0YWNrOjpIYW5kbGVTdGFjaygpCisj
aWZuZGVmIE5ERUJVRworICAgIDogbV9zY29wZURlcHRoKDApCisjZW5kaWYKK3sKKyAgICBncm93
KCk7Cit9CisKK3ZvaWQgSGFuZGxlU3RhY2s6Om1hcmsoTWFya1N0YWNrJiBtYXJrU3RhY2spCit7
CisgICAgY29uc3QgVmVjdG9yPEhhbmRsZVNsb3Q+JiBibG9ja3MgPSBtX2Jsb2NrU3RhY2suYmxv
Y2tzKCk7CisgICAgc2l6ZV90IGJsb2NrTGVuZ3RoID0gbV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3Ro
OworCisgICAgaW50IGVuZCA9IGJsb2Nrcy5zaXplKCkgLSAxOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgZW5kOyArK2kpIHsKKyAgICAgICAgSGFuZGxlU2xvdCBibG9jayA9IGJsb2Nrc1tpXTsK
KyAgICAgICAgbWFya1N0YWNrLmFwcGVuZFNsb3RzKGJsb2NrLCBibG9ja0xlbmd0aCk7CisgICAg
fQorICAgIEhhbmRsZVNsb3QgYmxvY2sgPSBibG9ja3NbZW5kXTsKKyAgICBtYXJrU3RhY2suYXBw
ZW5kU2xvdHMoYmxvY2ssIG1fZnJhbWUubV9uZXh0IC0gYmxvY2spOworfQorCit2b2lkIEhhbmRs
ZVN0YWNrOjpncm93KCkKK3sKKyAgICBIYW5kbGVTbG90IGJsb2NrID0gbV9ibG9ja1N0YWNrLmdy
b3coKTsKKyAgICBtX2ZyYW1lLm1fbmV4dCA9IGJsb2NrOworICAgIG1fZnJhbWUubV9lbmQgPSBi
bG9jayArIG1fYmxvY2tTdGFjay5ibG9ja0xlbmd0aDsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZVN0YWNrLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvSGFuZGxlU3RhY2suaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40MTczYzAwNjE0MTFhZGJjNTgzZjg1ZjdiMmE1MjMyMDE0ODgwZDBiCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0hhbmRsZVN0
YWNrLmgKQEAgLTAsMCArMSwxMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhhbmRsZVN0YWNr
X2gKKyNkZWZpbmUgSGFuZGxlU3RhY2tfaAorCisjaW5jbHVkZSAiQXNzZXJ0aW9ucy5oIgorI2lu
Y2x1ZGUgIkJsb2NrU3RhY2suaCIKKyNpbmNsdWRlICJIYW5kbGUuaCIKKworI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgTG9jYWxTY29wZTsK
K2NsYXNzIE1hcmtTdGFjazsKKworY2xhc3MgSGFuZGxlU3RhY2sgeworcHVibGljOgorICAgIGNs
YXNzIEZyYW1lIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEhhbmRsZVNsb3QgbV9uZXh0OworICAg
ICAgICBIYW5kbGVTbG90IG1fZW5kOworICAgIH07CisKKyAgICBIYW5kbGVTdGFjaygpOworICAg
IAorICAgIHZvaWQgZW50ZXJTY29wZShGcmFtZSYpOworICAgIHZvaWQgbGVhdmVTY29wZShGcmFt
ZSYpOworCisgICAgSGFuZGxlU2xvdCBwdXNoKCk7CisKKyAgICB2b2lkIG1hcmsoTWFya1N0YWNr
Jik7CisKK3ByaXZhdGU6CisgICAgdm9pZCBncm93KCk7CisgICAgdm9pZCB6YXBUbyhGcmFtZSYp
OworICAgIEhhbmRsZVNsb3QgZmluZEZpcnN0QWZ0ZXIoSGFuZGxlU2xvdCk7CisKKyNpZm5kZWYg
TkRFQlVHCisgICAgc2l6ZV90IG1fc2NvcGVEZXB0aDsKKyNlbmRpZgorICAgIEJsb2NrU3RhY2s8
SlNWYWx1ZT4gbV9ibG9ja1N0YWNrOworICAgIEZyYW1lIG1fZnJhbWU7Cit9OworCitpbmxpbmUg
dm9pZCBIYW5kbGVTdGFjazo6ZW50ZXJTY29wZShGcmFtZSYgbGFzdEZyYW1lKQoreworI2lmbmRl
ZiBOREVCVUcKKyAgICArK21fc2NvcGVEZXB0aDsKKyNlbmRpZgorCisgICAgbGFzdEZyYW1lID0g
bV9mcmFtZTsKK30KKworCisKK2lubGluZSB2b2lkIEhhbmRsZVN0YWNrOjp6YXBUbyhGcmFtZSYg
bGFzdEZyYW1lKQoreworI2lmZGVmIE5ERUJVRworICAgIFVOVVNFRF9QQVJBTShsYXN0RnJhbWUp
OworI2Vsc2UKKyAgICBjb25zdCBWZWN0b3I8SGFuZGxlU2xvdD4mIGJsb2NrcyA9IG1fYmxvY2tT
dGFjay5ibG9ja3MoKTsKKyAgICAKKyAgICBpZiAobGFzdEZyYW1lLm1fZW5kICE9IG1fZnJhbWUu
bV9lbmQpIHsgLy8gWmFwcGluZyB0byBhIGZyYW1lIGluIGEgZGlmZmVyZW50IGJsb2NrLgorICAg
ICAgICBpbnQgaSA9IGJsb2Nrcy5zaXplKCkgLSAxOworICAgICAgICBmb3IgKCA7IGJsb2Nrc1tp
XSArIG1fYmxvY2tTdGFjay5ibG9ja0xlbmd0aCAhPSBsYXN0RnJhbWUubV9lbmQ7IC0taSkgewor
ICAgICAgICAgICAgZm9yIChpbnQgaiA9IG1fYmxvY2tTdGFjay5ibG9ja0xlbmd0aCAtIDE7IGog
Pj0gMDsgLS1qKQorICAgICAgICAgICAgICAgIGJsb2Nrc1tpXVtqXSA9IEpTVmFsdWUoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yIChIYW5kbGVTbG90IGl0ID0gYmxvY2tzW2ld
ICsgbV9ibG9ja1N0YWNrLmJsb2NrTGVuZ3RoIC0gMTsgaXQgIT0gbGFzdEZyYW1lLm1fbmV4dCAt
IDE7IC0taXQpCisgICAgICAgICAgICAqaXQgPSBKU1ZhbHVlKCk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIGZvciAoSGFuZGxlU2xvdCBpdCA9IG1fZnJhbWUu
bV9uZXh0IC0gMTsgaXQgIT0gbGFzdEZyYW1lLm1fbmV4dCAtIDE7IC0taXQpCisgICAgICAgICpp
dCA9IEpTVmFsdWUoKTsKKyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBIYW5kbGVTdGFjazo6bGVh
dmVTY29wZShGcmFtZSYgbGFzdEZyYW1lKQoreworI2lmbmRlZiBOREVCVUcKKyAgICAtLW1fc2Nv
cGVEZXB0aDsKKyNlbmRpZgorCisgICAgemFwVG8obGFzdEZyYW1lKTsKKworICAgIGlmIChsYXN0
RnJhbWUubV9lbmQgIT0gbV9mcmFtZS5tX2VuZCkgLy8gUG9wcGluZyB0byBhIGZyYW1lIGluIGEg
ZGlmZmVyZW50IGJsb2NrLgorICAgICAgICBtX2Jsb2NrU3RhY2suc2hyaW5rKGxhc3RGcmFtZS5t
X2VuZCk7CisKKyAgICBtX2ZyYW1lID0gbGFzdEZyYW1lOworfQorCitpbmxpbmUgSGFuZGxlU2xv
dCBIYW5kbGVTdGFjazo6cHVzaCgpCit7CisgICAgQVNTRVJUKG1fc2NvcGVEZXB0aCk7IC8vIENy
ZWF0aW5nIGEgTG9jYWwgb3V0c2lkZSBvZiBhIExvY2FsU2NvcGUgaXMgYSBtZW1vcnkgbGVhay4K
KyAgICBpZiAobV9mcmFtZS5tX25leHQgPT0gbV9mcmFtZS5tX2VuZCkKKyAgICAgICAgZ3Jvdygp
OworICAgIHJldHVybiBtX2ZyYW1lLm1fbmV4dCsrOworfQorCit9CisKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0xvY2FsLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRsZXMvTG9jYWwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wMzVlOWU5MGVjZjdhMjU5Mzk0ODUxODQ4ZTVmYzRjZDlhYTIxODNkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVzL0xvY2FsLmgKQEAg
LTAsMCArMSwxNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIExvY2FsX2gKKyNkZWZpbmUgTG9j
YWxfaAorCisjaW5jbHVkZSAiSGFuZGxlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisK
Ky8qCisgICAgQSBMb2NhbCBpcyBhIHRlbXBvcmFyeSBoYW5kbGUgd2hvc2UgbGlmZXRpbWUgaXMg
dGllZCB0byBhIGdpdmVuIExvY2FsU2NvcGUuCisgICAgVXNlIExvY2FscyBmb3IgbG9jYWwgdmFs
dWVzIG9uIHRoZSBzdGFjay4gSXQgaXMgYW4gZXJyb3IgdG8gY3JlYXRlIGEgTG9jYWwKKyAgICBv
dXRzaWRlIG9mIGFueSBMb2NhbFNjb3BlLgorKi8KKworbmFtZXNwYWNlIEpTQyB7Cit0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gY2xhc3MgTG9jYWw7Cit9CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVmVjdG9yVHJhaXRzPEpTQzo6TG9jYWw8VD4gPiB7Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IGZhbHNlOworICAgIHN0YXRp
YyBjb25zdCBib29sIG5lZWRzSW5pdGlhbGl6YXRpb24gPSB0cnVlOworICAgIHN0YXRpYyBjb25z
dCBib29sIGNhbkluaXRpYWxpemVXaXRoTWVtc2V0ID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgY2FuTW92ZVdpdGhNZW1jcHkgPSB0cnVlOworICAgIHN0YXRpYyBjb25zdCBib29sIGNh
bkNvcHlXaXRoTWVtY3B5ID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgY2FuRmlsbFdp
dGhNZW1zZXQgPSBmYWxzZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBjYW5Db21wYXJlV2l0aE1l
bWNtcCA9IHRydWU7Cit9OworCit9CisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gY2xhc3MgTG9jYWwgOiBwdWJsaWMgSGFuZGxlPFQ+IHsKKyAgICBmcmllbmQgY2xh
c3MgTG9jYWxTY29wZTsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIHR5cGVuYW1lIEhhbmRsZTxUPjo6
RXh0ZXJuYWxUeXBlIEV4dGVybmFsVHlwZTsKKyAgICBMb2NhbChKU0dsb2JhbERhdGEmLCBFeHRl
cm5hbFR5cGUgPSBFeHRlcm5hbFR5cGUoKSk7CisgICAgTG9jYWwoSlNHbG9iYWxEYXRhJiwgSGFu
ZGxlPFQ+KTsKKyAgICBMb2NhbChjb25zdCBMb2NhbDxUPiYpOyAvLyBBZG9wdGluZyBjb25zdHJ1
Y3Rvci4gVXNlZCB0byByZXR1cm4gYSBMb2NhbCB0byBhIGNhbGxpbmcgZnVuY3Rpb24uCisKKyAg
ICBMb2NhbCYgb3BlcmF0b3I9KEV4dGVybmFsVHlwZSk7CisgICAgTG9jYWwmIG9wZXJhdG9yPShI
YW5kbGU8VD4pOworICAgIAorICAgIHVzaW5nIEhhbmRsZTxUPjo6c2xvdDsKKworcHJpdmF0ZToK
KyAgICBMb2NhbChIYW5kbGVTbG90LCBFeHRlcm5hbFR5cGUpOyAvLyBVc2VkIGJ5IExvY2FsU2Nv
cGU6OnJlbGVhc2UoKSB0byBtb3ZlIGEgTG9jYWwgdG8gYSBjb250YWluaW5nIHNjb3BlLgorICAg
IHZvaWQgaW50ZXJuYWxTZXQoRXh0ZXJuYWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgSlNW
YWx1ZSBuZXdWYWx1ZShIYW5kbGVUeXBlczxUPjo6dG9KU1ZhbHVlKHZhbHVlKSk7CisgICAgICAg
IEhhbmRsZVNsb3Qgc2xvdCA9IHRoaXMtPnNsb3QoKTsKKyAgICAgICAgKnNsb3QgPSBuZXdWYWx1
ZTsKKyAgICB9Cit9OworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIExvY2FsPFQ+OjpM
b2NhbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV4dGVybmFsVHlwZSB2YWx1ZSkKKyAgICA6
IEhhbmRsZTxUPihnbG9iYWxEYXRhLmFsbG9jYXRlTG9jYWxIYW5kbGUoKSkKK3sKKyAgICBpbnRl
cm5hbFNldCh2YWx1ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTG9jYWw8
VD46OkxvY2FsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSGFuZGxlPFQ+IGhhbmRsZSkKKyAg
ICA6IEhhbmRsZTxUPihnbG9iYWxEYXRhLmFsbG9jYXRlTG9jYWxIYW5kbGUoKSkKK3sKKyAgICBp
bnRlcm5hbFNldChoYW5kbGUuZ2V0KCkpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5s
aW5lIExvY2FsPFQ+OjpMb2NhbChjb25zdCBMb2NhbDxUPiYgbykKKyAgICA6IEhhbmRsZTxUPihv
LnNsb3QoKSkKK3sKKyAgICBjb25zdF9jYXN0PExvY2FsPFQ+Jj4obykuaW52YWxpZGF0ZSgpOyAv
LyBQcmV2ZW50IGFjY2lkZW50YWwgc2hhcmluZy4KK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+
IGlubGluZSBMb2NhbDxUPjo6TG9jYWwoSGFuZGxlU2xvdCBzbG90LCBFeHRlcm5hbFR5cGUgdmFs
dWUpCisgICAgOiBIYW5kbGU8VD4oc2xvdCwgdmFsdWUpCit7Cit9CisKK3RlbXBsYXRlIDx0eXBl
bmFtZSBUPiBpbmxpbmUgTG9jYWw8VD4mIExvY2FsPFQ+OjpvcGVyYXRvcj0oRXh0ZXJuYWxUeXBl
IHZhbHVlKQoreworICAgIGludGVybmFsU2V0KHZhbHVlKTsKKyAgICByZXR1cm4gKnRoaXM7Cit9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgTG9jYWw8VD4mIExvY2FsPFQ+OjpvcGVy
YXRvcj0oSGFuZGxlPFQ+IGhhbmRsZSkKK3sKKyAgICBpbnRlcm5hbFNldChoYW5kbGUuZ2V0KCkp
OworICAgIHJldHVybiAqdGhpczsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQsIHVuc2lnbmVk
IGlubGluZUNhcGFjaXR5ID0gMD4gY2xhc3MgTG9jYWxTdGFjayB7CisgICAgdHlwZWRlZiB0eXBl
bmFtZSBIYW5kbGU8VD46OkV4dGVybmFsVHlwZSBFeHRlcm5hbFR5cGU7CitwdWJsaWM6CisgICAg
TG9jYWxTdGFjayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIDogbV9nbG9iYWxE
YXRhKCZnbG9iYWxEYXRhKQorICAgICAgICAsIG1fY291bnQoMCkKKyAgICB7CisgICAgfQorCisg
ICAgRXh0ZXJuYWxUeXBlIHBlZWsoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY291
bnQgPiAwKTsKKyAgICAgICAgcmV0dXJuIG1fc3RhY2tbbV9jb3VudCAtIDFdLmdldCgpOworICAg
IH0KKworICAgIEV4dGVybmFsVHlwZSBwb3AoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY291
bnQgPiAwKTsKKyAgICAgICAgcmV0dXJuIG1fc3RhY2tbLS1tX2NvdW50XS5nZXQoKTsKKyAgICB9
CisKKyAgICB2b2lkIHB1c2goRXh0ZXJuYWxUeXBlIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYg
KG1fY291bnQgPT0gbV9zdGFjay5zaXplKCkpCisgICAgICAgICAgICBtX3N0YWNrLmFwcGVuZChM
b2NhbDxUPigqbV9nbG9iYWxEYXRhLCB2YWx1ZSkpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX3N0YWNrW21fY291bnRdID0gdmFsdWU7CisgICAgICAgIG1fY291bnQrKzsKKyAgICB9CisK
KyAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9jb3VudDsgfQorICAgIHVuc2ln
bmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvdW50OyB9CisKK3ByaXZhdGU6CisgICAgUmVm
UHRyPEpTR2xvYmFsRGF0YT4gbV9nbG9iYWxEYXRhOworICAgIFZlY3RvcjxMb2NhbDxUPiwgaW5s
aW5lQ2FwYWNpdHk+IG1fc3RhY2s7CisgICAgdW5zaWduZWQgbV9jb3VudDsKK307CisKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvY29sbGVjdG9yL2hhbmRs
ZXMvTG9jYWxTY29wZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxlY3Rvci9oYW5kbGVz
L0xvY2FsU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDI3YjMyZWYwZTUwY2Q0ZjE1ODU2ZWUzZGY2NzEw
NzM1ZTY1Zjc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2NvbGxl
Y3Rvci9oYW5kbGVzL0xvY2FsU2NvcGUuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBMb2NhbFNjb3BlX2gKKyNkZWZpbmUgTG9jYWxTY29wZV9oCisKKyNpbmNsdWRlICJI
YW5kbGVTdGFjay5oIgorI2luY2x1ZGUgIkxvY2FsLmgiCisKK25hbWVzcGFjZSBKU0MgeworLyog
IAorICAgIEEgTG9jYWxTY29wZSBpcyBhIHRlbXBvcmFyeSBzY29wZSBpbiB3aGljaCBMb2NhbHMg
YXJlIGFsbG9jYXRlZC4gV2hlbiBhCisgICAgTG9jYWxTY29wZSBnb2VzIG91dCBvZiBzY29wZSwg
YWxsIHRoZSBMb2NhbHMgY3JlYXRlZCBpbiBpdCBhcmUgZGVzdHJveWVkLgorCisgICAgTG9jYWxT
Y29wZSBpcyBzaW1pbGFyIGluIGNvbmNlcHQgdG8gTlNBdXRvcmVsZWFzZVBvb2wuCisqLworCitj
bGFzcyBKU0dsb2JhbERhdGE7CisKK2NsYXNzIExvY2FsU2NvcGUgeworcHVibGljOgorICAgIGV4
cGxpY2l0IExvY2FsU2NvcGUoSlNHbG9iYWxEYXRhJik7CisgICAgfkxvY2FsU2NvcGUoKTsKKyAg
ICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gTG9jYWw8VD4gcmVsZWFzZShMb2NhbDxUPik7
IC8vIERlc3Ryb3lzIGFsbCBvdGhlciBsb2NhbHMgaW4gdGhlIHNjb3BlLgorCitwcml2YXRlOgor
ICAgIEhhbmRsZVN0YWNrKiBtX2hhbmRsZVN0YWNrOworICAgIEhhbmRsZVN0YWNrOjpGcmFtZSBt
X2xhc3RGcmFtZTsKK307CisKK2lubGluZSBMb2NhbFNjb3BlOjpMb2NhbFNjb3BlKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKKyAgICA6IG1faGFuZGxlU3RhY2soZ2xvYmFsRGF0YS5oZWFwLmhh
bmRsZVN0YWNrKCkpCit7CisgICAgbV9oYW5kbGVTdGFjay0+ZW50ZXJTY29wZShtX2xhc3RGcmFt
ZSk7Cit9CisKK2lubGluZSBMb2NhbFNjb3BlOjp+TG9jYWxTY29wZSgpCit7CisgICAgbV9oYW5k
bGVTdGFjay0+bGVhdmVTY29wZShtX2xhc3RGcmFtZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBMb2NhbDxUPiBMb2NhbFNjb3BlOjpyZWxlYXNlKExvY2FsPFQ+IGxvY2FsKQoreworICAg
IHR5cGVuYW1lIExvY2FsPFQ+OjpFeHRlcm5hbFR5cGUgcHRyID0gbG9jYWwuZ2V0KCk7CisKKyAg
ICBtX2hhbmRsZVN0YWNrLT5sZWF2ZVNjb3BlKG1fbGFzdEZyYW1lKTsKKyAgICBIYW5kbGVTbG90
IHNsb3QgPSBtX2hhbmRsZVN0YWNrLT5wdXNoKCk7CisgICAgbV9oYW5kbGVTdGFjay0+ZW50ZXJT
Y29wZShtX2xhc3RGcmFtZSk7CisKKyAgICByZXR1cm4gTG9jYWw8VD4oc2xvdCwgcHRyKTsKK30K
KworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0hlYXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVhcC5jcHAKaW5kZXgg
YjA1ZmUwYWViZjBhY2I4YTg4YWM0Yzg5N2NmODFjNzdmOGMwNTQ5MS4uYzM5NjVmY2M0NDUzOWYy
YWY1ZmQwNjIwNDczZTRjYzU1YzZkODM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSGVhcC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGVhcC5jcHAKQEAgLTIzMSw4ICsyMzEsNiBAQCB2b2lkIEhlYXA6Om1hcmtSb290cygpCiAgICAg
ICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyOjptYXJrTGlzdHMobWFya1N0YWNrLCAqbV9tYXJrTGlz
dFNldCk7CiAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uKQogICAgICAgICBtYXJrU3Rh
Y2suYXBwZW5kKCZtX2dsb2JhbERhdGEtPmV4Y2VwdGlvbik7Ci0gICAgaWYgKG1fZ2xvYmFsRGF0
YS0+Zmlyc3RTdHJpbmdpZmllclRvTWFyaykKLSAgICAgICAgSlNPTk9iamVjdDo6bWFya1N0cmlu
Z2lmaWVycyhtYXJrU3RhY2ssIG1fZ2xvYmFsRGF0YS0+Zmlyc3RTdHJpbmdpZmllclRvTWFyayk7
CiAgICAgbWFya1N0YWNrLmRyYWluKCk7CiAKICAgICBtX2hhbmRsZUhlYXAubWFya1N0cm9uZ0hh
bmRsZXMobWFya1N0YWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0hlYXAuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hlYXAuaAppbmRleCBk
YWYzMTA5MzY0MmY0NjM0ZTRjNjE1NzVjYjU2MDFjZDQ1OWRlOTM5Li45OGM1MDgxNzA2YzMzZjY1
ODk1YjNhYTYzN2ZkNjE1ZWE1MTFiNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9IZWFwLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGVh
cC5oCkBAIC0yMyw2ICsyMyw3IEBACiAjZGVmaW5lIEhlYXBfaAogCiAjaW5jbHVkZSAiSGFuZGxl
SGVhcC5oIgorI2luY2x1ZGUgIkhhbmRsZVN0YWNrLmgiCiAjaW5jbHVkZSAiTWFya1N0YWNrLmgi
CiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAt
OTgsNiArOTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEZ1bmN0b3I+IHZvaWQgZm9yRWFjaChGdW5jdG9yJik7CiAgICAgICAgIAogICAgICAgICBIYW5k
bGVTbG90IGFsbG9jYXRlR2xvYmFsSGFuZGxlKCkgeyByZXR1cm4gbV9oYW5kbGVIZWFwLmFsbG9j
YXRlKCk7IH0KKyAgICAgICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUxvY2FsSGFuZGxlKCkgeyByZXR1
cm4gbV9oYW5kbGVTdGFjay5wdXNoKCk7IH0KKworICAgICAgICBIYW5kbGVTdGFjayogaGFuZGxl
U3RhY2soKSB7IHJldHVybiAmbV9oYW5kbGVTdGFjazsgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpTR2xvYmFsRGF0YTsKQEAgLTEzMiw3ICsxMzYsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgTWFjaGluZVRocmVhZHMgbV9tYWNoaW5lVGhyZWFkczsKICAgICAg
ICAgTWFya1N0YWNrIG1fbWFya1N0YWNrOwogICAgICAgICBIYW5kbGVIZWFwIG1faGFuZGxlSGVh
cDsKLSAgICAgICAgCisgICAgICAgIEhhbmRsZVN0YWNrIG1faGFuZGxlU3RhY2s7CisKICAgICAg
ICAgc2l6ZV90IG1fZXh0cmFDb3N0OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKaW5kZXggOTU3YTZmZTMxYWU3OGY5YjQyOTFhYWFlNjExZDIwNjkwZGRhNDFh
NC4uZDU1MGYyMmMyN2FkZjRkYmViMThmMDA0MzRlOGZhOWRjMzVkM2EzNiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKQEAgLTIxMiw2ICsyMTIsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHJldHVybiBpc0NlbGwoKSA/IGFzQ2VsbCgpLT5nZXRTdHJpbmcoZXhl
YykgOiBVU3RyaW5nKCk7CiAgICAgfQogCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IFVT
dHJpbmcgSGFuZGxlQ29udmVydGVyPEJhc2UsIFVua25vd24+OjpnZXRTdHJpbmcoRXhlY1N0YXRl
KiBleGVjKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGpzVmFsdWUoKS5nZXRTdHJpbmco
ZXhlYyk7CisgICAgfQorCiAgICAgaW5saW5lIEpTT2JqZWN0KiBKU1ZhbHVlOjpnZXRPYmplY3Qo
KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldE9i
amVjdCgpIDogMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCmluZGV4IGFmNDQ0ZDU3OWFjNDI1ZmYxYjE0ZDAxMjlkODc5Y2UwZDQ1OTU0NWMuLjhk
OGY3ZTNmYWM5NTgwYTI0MTkyZWVkZjQzMDg1OWM0MzE2MjNlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcApAQCAtMTUxLDcgKzE1MSw2IEBA
IEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlIGdsb2JhbERhdGFUeXBl
LCBUaHJlYWRTdGFja1R5cGUgdGhyZWFkCiAgICAgLCBoZWFwKHRoaXMpCiAgICAgLCBnbG9iYWxP
YmplY3RDb3VudCgwKQogICAgICwgZHluYW1pY0dsb2JhbE9iamVjdCgwKQotICAgICwgZmlyc3RT
dHJpbmdpZmllclRvTWFyaygwKQogICAgICwgY2FjaGVkVVRDT2Zmc2V0KE5hTikKICAgICAsIG1h
eFJlZW50cnlEZXB0aCh0aHJlYWRTdGFja1R5cGUgPT0gVGhyZWFkU3RhY2tUeXBlU21hbGwgPyBN
YXhTbWFsbFRocmVhZFJlZW50cnlEZXB0aCA6IE1heExhcmdlVGhyZWFkUmVlbnRyeURlcHRoKQog
ICAgICwgbV9yZWdFeHBDYWNoZShuZXcgUmVnRXhwQ2FjaGUodGhpcykpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDFhNzkxYmE5MzJmNTgxZDU3
YWM4NTNlYTBlODVlOTM3YTE4NTZlNDcuLjUyZmZhYzc0NzI0ZGMwNDExZDZkMDkzOTVkMTdjMzgw
YWQ3NTcwZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCkBAIC01Nyw2ICs1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29kZUJs
b2NrOwogICAgIGNsYXNzIENvbW1vbklkZW50aWZpZXJzOworICAgIGNsYXNzIEhhbmRsZVN0YWNr
OwogICAgIGNsYXNzIElkZW50aWZpZXJUYWJsZTsKICAgICBjbGFzcyBJbnRlcnByZXRlcjsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKQEAgLTIyMyw4ICsyMjQsNiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBIYXNoU2V0PEpTT2JqZWN0Kj4gc3RyaW5nUmVjdXJzaW9uQ2hlY2tWaXNp
dGVkT2JqZWN0czsKIAotICAgICAgICBTdHJpbmdpZmllciogZmlyc3RTdHJpbmdpZmllclRvTWFy
azsKLQogICAgICAgICBkb3VibGUgY2FjaGVkVVRDT2Zmc2V0OwogICAgICAgICBEU1RPZmZzZXRD
YWNoZSBkc3RPZmZzZXRDYWNoZTsKICAgICAgICAgCkBAIC0yNTksNiArMjU4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBkdW1wUmVnRXhwVHJhY2UoKTsKICAgICAg
ICAgSGFuZGxlU2xvdCBhbGxvY2F0ZUdsb2JhbEhhbmRsZSgpIHsgcmV0dXJuIGhlYXAuYWxsb2Nh
dGVHbG9iYWxIYW5kbGUoKTsgfQorICAgICAgICBIYW5kbGVTbG90IGFsbG9jYXRlTG9jYWxIYW5k
bGUoKSB7IHJldHVybiBoZWFwLmFsbG9jYXRlTG9jYWxIYW5kbGUoKTsgfQogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCA3
ZDE4ZTA4NDI4YTIzMGUyYWFlNzFjMzIwNDNkYWE0MjgxYTJlOTZjLi44ZmM3YWM5Y2ZkMzQyMmY3
ZTU0ZjI5Zjk3NGVkNDAzNTExYjFiYzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09OT2JqZWN0LmNwcApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUgIkpTQXJyYXku
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkxpdGVyYWxQYXJzZXIu
aCIKKyNpbmNsdWRlICJMb2NhbC5oIgorI2luY2x1ZGUgIkxvY2FsU2NvcGUuaCIKICNpbmNsdWRl
ICJMb29rdXAuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1ZGUgIlVT
dHJpbmdCdWlsZGVyLmgiCkBAIC03NCwyNCArNzYsMjIgQEAgcHJpdmF0ZToKIGNsYXNzIFN0cmlu
Z2lmaWVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHJpbmdpZmllcik7CiBwdWJsaWM6
Ci0gICAgU3RyaW5naWZpZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSByZXBsYWNlciwgSlNWYWx1ZSBz
cGFjZSk7Ci0gICAgflN0cmluZ2lmaWVyKCk7Ci0gICAgSlNWYWx1ZSBzdHJpbmdpZnkoSlNWYWx1
ZSk7CisgICAgU3RyaW5naWZpZXIoRXhlY1N0YXRlKiwgY29uc3QgTG9jYWw8VW5rbm93bj4mIHJl
cGxhY2VyLCBjb25zdCBMb2NhbDxVbmtub3duPiYgc3BhY2UpOworICAgIExvY2FsPFVua25vd24+
IHN0cmluZ2lmeShIYW5kbGU8VW5rbm93bj4pOwogCiAgICAgdm9pZCBtYXJrQWdncmVnYXRlKE1h
cmtTdGFjayYpOwogCiBwcml2YXRlOgogICAgIGNsYXNzIEhvbGRlciB7CiAgICAgcHVibGljOgot
ICAgICAgICBIb2xkZXIoSlNPYmplY3QqKTsKKyAgICAgICAgSG9sZGVyKEpTR2xvYmFsRGF0YSYs
IEpTT2JqZWN0Kik7CiAKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0LmdldCgpOyB9Ci0gICAgICAgIERlcHJlY2F0ZWRQdHI8SlNPYmplY3Q+KiBvYmpl
Y3RTbG90KCkgeyByZXR1cm4gJm1fb2JqZWN0OyB9CiAKICAgICAgICAgYm9vbCBhcHBlbmROZXh0
UHJvcGVydHkoU3RyaW5naWZpZXImLCBVU3RyaW5nQnVpbGRlciYpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgRGVwcmVjYXRlZFB0cjxKU09iamVjdD4gbV9vYmplY3Q7CisgICAgICAgIExvY2Fs
PEpTT2JqZWN0PiBtX29iamVjdDsKICAgICAgICAgY29uc3QgYm9vbCBtX2lzQXJyYXk7CiAgICAg
ICAgIGJvb2wgbV9pc0pTQXJyYXk7CiAgICAgICAgIHVuc2lnbmVkIG1faW5kZXg7CkBAIC0xMTMs
MTYgKzExMywxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5pbmRlbnQoKTsKICAgICB2b2lkIHN0
YXJ0TmV3TGluZShVU3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCi0gICAgU3RyaW5naWZpZXIqIGNv
bnN0IG1fbmV4dFN0cmluZ2lmaWVyVG9NYXJrOwogICAgIEV4ZWNTdGF0ZSogY29uc3QgbV9leGVj
OwotICAgIGNvbnN0IEpTVmFsdWUgbV9yZXBsYWNlcjsKKyAgICBjb25zdCBMb2NhbDxVbmtub3du
PiBtX3JlcGxhY2VyOwogICAgIGJvb2wgbV91c2luZ0FycmF5UmVwbGFjZXI7CiAgICAgUHJvcGVy
dHlOYW1lQXJyYXkgbV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lczsKICAgICBDYWxsVHlwZSBt
X3JlcGxhY2VyQ2FsbFR5cGU7CiAgICAgQ2FsbERhdGEgbV9yZXBsYWNlckNhbGxEYXRhOwogICAg
IGNvbnN0IFVTdHJpbmcgbV9nYXA7CiAKLSAgICBIYXNoU2V0PEpTT2JqZWN0Kj4gbV9ob2xkZXJD
eWNsZURldGVjdG9yOwogICAgIFZlY3RvcjxIb2xkZXIsIDE2PiBtX2hvbGRlclN0YWNrOwogICAg
IFVTdHJpbmcgbV9yZXBlYXRlZEdhcDsKICAgICBVU3RyaW5nIG1faW5kZW50OwpAQCAtMTk5LDIz
ICsxOTcsMjAgQEAgSlNWYWx1ZSBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGw6OnZhbHVlKEV4
ZWNTdGF0ZSogZXhlYykgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IFN0cmluZ2lmaWVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVN0cmluZ2lm
aWVyOjpTdHJpbmdpZmllcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgcmVwbGFjZXIsIEpTVmFs
dWUgc3BhY2UpCi0gICAgOiBtX25leHRTdHJpbmdpZmllclRvTWFyayhleGVjLT5nbG9iYWxEYXRh
KCkuZmlyc3RTdHJpbmdpZmllclRvTWFyaykKLSAgICAsIG1fZXhlYyhleGVjKQorU3RyaW5naWZp
ZXI6OlN0cmluZ2lmaWVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgTG9jYWw8VW5rbm93bj4mIHJl
cGxhY2VyLCBjb25zdCBMb2NhbDxVbmtub3duPiYgc3BhY2UpCisgICAgOiBtX2V4ZWMoZXhlYykK
ICAgICAsIG1fcmVwbGFjZXIocmVwbGFjZXIpCiAgICAgLCBtX3VzaW5nQXJyYXlSZXBsYWNlcihm
YWxzZSkKICAgICAsIG1fYXJyYXlSZXBsYWNlclByb3BlcnR5TmFtZXMoZXhlYykKICAgICAsIG1f
cmVwbGFjZXJDYWxsVHlwZShDYWxsVHlwZU5vbmUpCi0gICAgLCBtX2dhcChnYXAoZXhlYywgc3Bh
Y2UpKQorICAgICwgbV9nYXAoZ2FwKGV4ZWMsIHNwYWNlLmdldCgpKSkKIHsKLSAgICBleGVjLT5n
bG9iYWxEYXRhKCkuZmlyc3RTdHJpbmdpZmllclRvTWFyayA9IHRoaXM7Ci0KICAgICBpZiAoIW1f
cmVwbGFjZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGFzT2JqZWN0
KG1fcmVwbGFjZXIpLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkgeworICAgIGlmIChtX3Jl
cGxhY2VyLmFzT2JqZWN0KCktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKSB7CiAgICAgICAg
IG1fdXNpbmdBcnJheVJlcGxhY2VyID0gdHJ1ZTsKLSAgICAgICAgSlNPYmplY3QqIGFycmF5ID0g
YXNPYmplY3QobV9yZXBsYWNlcik7CisgICAgICAgIEhhbmRsZTxKU09iamVjdD4gYXJyYXkgPSBt
X3JlcGxhY2VyLmFzT2JqZWN0KCk7CiAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5LT5n
ZXQoZXhlYywgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkudG9VSW50
MzIoZXhlYyk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgSlNWYWx1ZSBuYW1lID0gYXJyYXktPmdldChleGVjLCBpKTsKQEAgLTI0
Niw0MCArMjQxLDI1IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcihFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgcmVwbGFjZXIsIEpTVmFsdWUgc3BhY2UpCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBtX3JlcGxhY2VyQ2FsbFR5cGUgPSBhc09iamVjdChtX3JlcGxhY2VyKS0+Z2V0Q2Fs
bERhdGEobV9yZXBsYWNlckNhbGxEYXRhKTsKLX0KLQotU3RyaW5naWZpZXI6On5TdHJpbmdpZmll
cigpCi17Ci0gICAgQVNTRVJUKG1fZXhlYy0+Z2xvYmFsRGF0YSgpLmZpcnN0U3RyaW5naWZpZXJU
b01hcmsgPT0gdGhpcyk7Ci0gICAgbV9leGVjLT5nbG9iYWxEYXRhKCkuZmlyc3RTdHJpbmdpZmll
clRvTWFyayA9IG1fbmV4dFN0cmluZ2lmaWVyVG9NYXJrOwotfQotCi12b2lkIFN0cmluZ2lmaWVy
OjptYXJrQWdncmVnYXRlKE1hcmtTdGFjayYgbWFya1N0YWNrKQotewotICAgIGZvciAoU3RyaW5n
aWZpZXIqIHN0cmluZ2lmaWVyID0gdGhpczsgc3RyaW5naWZpZXI7IHN0cmluZ2lmaWVyID0gc3Ry
aW5naWZpZXItPm1fbmV4dFN0cmluZ2lmaWVyVG9NYXJrKSB7Ci0gICAgICAgIHNpemVfdCBzaXpl
ID0gbV9ob2xkZXJTdGFjay5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQotICAgICAgICAgICAgbWFya1N0YWNrLmFwcGVuZChtX2hvbGRlclN0YWNrW2ld
Lm9iamVjdFNsb3QoKSk7Ci0gICAgfQorICAgIG1fcmVwbGFjZXJDYWxsVHlwZSA9IG1fcmVwbGFj
ZXIuYXNPYmplY3QoKS0+Z2V0Q2FsbERhdGEobV9yZXBsYWNlckNhbGxEYXRhKTsKIH0KIAotSlNW
YWx1ZSBTdHJpbmdpZmllcjo6c3RyaW5naWZ5KEpTVmFsdWUgdmFsdWUpCitMb2NhbDxVbmtub3du
PiBTdHJpbmdpZmllcjo6c3RyaW5naWZ5KEhhbmRsZTxVbmtub3duPiB2YWx1ZSkKIHsKICAgICBK
U09iamVjdCogb2JqZWN0ID0gY29uc3RydWN0RW1wdHlPYmplY3QobV9leGVjKTsKICAgICBpZiAo
bV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgICAg
ICByZXR1cm4gTG9jYWw8VW5rbm93bj4obV9leGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKTsK
IAogICAgIFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbCBlbXB0eVByb3BlcnR5TmFtZShtX2V4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIpOwotICAgIG9i
amVjdC0+cHV0RGlyZWN0KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2V4ZWMtPmdsb2JhbERhdGEo
KS5wcm9wZXJ0eU5hbWVzLT5lbXB0eUlkZW50aWZpZXIsIHZhbHVlKTsKKyAgICBvYmplY3QtPnB1
dERpcmVjdChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgbV9leGVjLT5nbG9iYWxEYXRhKCkucHJvcGVy
dHlOYW1lcy0+ZW1wdHlJZGVudGlmaWVyLCB2YWx1ZS5nZXQoKSk7CiAKICAgICBVU3RyaW5nQnVp
bGRlciByZXN1bHQ7Ci0gICAgaWYgKGFwcGVuZFN0cmluZ2lmaWVkVmFsdWUocmVzdWx0LCB2YWx1
ZSwgb2JqZWN0LCBlbXB0eVByb3BlcnR5TmFtZSkgIT0gU3RyaW5naWZ5U3VjY2VlZGVkKQotICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoYXBwZW5kU3RyaW5naWZpZWRWYWx1
ZShyZXN1bHQsIHZhbHVlLmdldCgpLCBvYmplY3QsIGVtcHR5UHJvcGVydHlOYW1lKSAhPSBTdHJp
bmdpZnlTdWNjZWVkZWQpCisgICAgICAgIHJldHVybiBMb2NhbDxVbmtub3duPihtX2V4ZWMtPmds
b2JhbERhdGEoKSwganNVbmRlZmluZWQoKSk7CiAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCi0gICAgICAgIHJldHVybiBqc051bGwoKTsKKyAgICAgICAgcmV0dXJuIExvY2FsPFVua25v
d24+KG1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bGwoKSk7CiAKLSAgICByZXR1cm4ganNTdHJp
bmcobV9leGVjLCByZXN1bHQudG9VU3RyaW5nKCkpOworICAgIHJldHVybiBMb2NhbDxVbmtub3du
PihtX2V4ZWMtPmdsb2JhbERhdGEoKSwganNTdHJpbmcobV9leGVjLCByZXN1bHQudG9VU3RyaW5n
KCkpKTsKIH0KIAogdm9pZCBTdHJpbmdpZmllcjo6YXBwZW5kUXVvdGVkU3RyaW5nKFVTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBjb25zdCBVU3RyaW5nJiB2YWx1ZSkKQEAgLTM3Miw3ICszNTIsNyBA
QCBTdHJpbmdpZmllcjo6U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdp
ZmllZFZhbHVlKFVTdHJpbmdCdWlsZGVyJgogICAgIGlmIChtX3JlcGxhY2VyQ2FsbFR5cGUgIT0g
Q2FsbFR5cGVOb25lKSB7CiAgICAgICAgIEpTVmFsdWUgbGlzdFtdID0geyBwcm9wZXJ0eU5hbWUu
dmFsdWUobV9leGVjKSwgdmFsdWUgfTsKICAgICAgICAgQXJnTGlzdCBhcmdzKGxpc3QsIFdURl9B
UlJBWV9MRU5HVEgobGlzdCkpOwotICAgICAgICB2YWx1ZSA9IGNhbGwobV9leGVjLCBtX3JlcGxh
Y2VyLCBtX3JlcGxhY2VyQ2FsbFR5cGUsIG1fcmVwbGFjZXJDYWxsRGF0YSwgaG9sZGVyLCBhcmdz
KTsKKyAgICAgICAgdmFsdWUgPSBjYWxsKG1fZXhlYywgbV9yZXBsYWNlci5nZXQoKSwgbV9yZXBs
YWNlckNhbGxUeXBlLCBtX3JlcGxhY2VyQ2FsbERhdGEsIGhvbGRlciwgYXJncyk7CiAgICAgICAg
IGlmIChtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZ2lm
eUZhaWxlZDsKICAgICB9CkBAIC00MjUsMTIgKzQwNSwxNCBAQCBTdHJpbmdpZmllcjo6U3RyaW5n
aWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFVTdHJpbmdCdWls
ZGVyJgogICAgIH0KIAogICAgIC8vIEhhbmRsZSBjeWNsZSBkZXRlY3Rpb24sIGFuZCBwdXQgdGhl
IGhvbGRlciBvbiB0aGUgc3RhY2suCi0gICAgaWYgKCFtX2hvbGRlckN5Y2xlRGV0ZWN0b3IuYWRk
KG9iamVjdCkuc2Vjb25kKSB7Ci0gICAgICAgIHRocm93RXJyb3IobV9leGVjLCBjcmVhdGVUeXBl
RXJyb3IobV9leGVjLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3Ry
dWN0dXJlcy4iKSk7Ci0gICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWQ7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1faG9sZGVyU3RhY2suc2l6ZSgpOyBpKyspIHsKKyAgICAgICAg
aWYgKG1faG9sZGVyU3RhY2tbaV0ub2JqZWN0KCkgPT0gb2JqZWN0KSB7CisgICAgICAgICAgICB0
aHJvd0Vycm9yKG1fZXhlYywgY3JlYXRlVHlwZUVycm9yKG1fZXhlYywgIkpTT04uc3RyaW5naWZ5
IGNhbm5vdCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOworICAgICAgICAgICAgcmV0
dXJuIFN0cmluZ2lmeUZhaWxlZDsKKyAgICAgICAgfQogICAgIH0KICAgICBib29sIGhvbGRlclN0
YWNrV2FzRW1wdHkgPSBtX2hvbGRlclN0YWNrLmlzRW1wdHkoKTsKLSAgICBtX2hvbGRlclN0YWNr
LmFwcGVuZChvYmplY3QpOworICAgIG1faG9sZGVyU3RhY2suYXBwZW5kKEhvbGRlcihtX2V4ZWMt
Pmdsb2JhbERhdGEoKSwgb2JqZWN0KSk7CiAgICAgaWYgKCFob2xkZXJTdGFja1dhc0VtcHR5KQog
ICAgICAgICByZXR1cm4gU3RyaW5naWZ5U3VjY2VlZGVkOwogCkBAIC00NTAsNyArNDMyLDYgQEAg
U3RyaW5naWZpZXI6OlN0cmluZ2lmeVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZp
ZWRWYWx1ZShVU3RyaW5nQnVpbGRlciYKICAgICAgICAgICAgICAgICB0aWNrQ291bnQgPSBsb2Nh
bFRpbWVvdXRDaGVja2VyLnRpY2tzVW50aWxOZXh0Q2hlY2soKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgICAgICBtX2hvbGRlckN5Y2xlRGV0ZWN0b3IucmVtb3ZlKG1faG9sZGVyU3Rh
Y2subGFzdCgpLm9iamVjdCgpKTsKICAgICAgICAgbV9ob2xkZXJTdGFjay5yZW1vdmVMYXN0KCk7
CiAgICAgfSB3aGlsZSAoIW1faG9sZGVyU3RhY2suaXNFbXB0eSgpKTsKICAgICByZXR1cm4gU3Ry
aW5naWZ5U3VjY2VlZGVkOwpAQCAtNDg1LDggKzQ2Niw4IEBAIGlubGluZSB2b2lkIFN0cmluZ2lm
aWVyOjpzdGFydE5ld0xpbmUoVVN0cmluZ0J1aWxkZXImIGJ1aWxkZXIpIGNvbnN0CiAgICAgYnVp
bGRlci5hcHBlbmQobV9pbmRlbnQpOwogfQogCi1pbmxpbmUgU3RyaW5naWZpZXI6OkhvbGRlcjo6
SG9sZGVyKEpTT2JqZWN0KiBvYmplY3QpCi0gICAgOiBtX29iamVjdChvYmplY3QpCitpbmxpbmUg
U3RyaW5naWZpZXI6OkhvbGRlcjo6SG9sZGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNP
YmplY3QqIG9iamVjdCkKKyAgICA6IG1fb2JqZWN0KGdsb2JhbERhdGEsIG9iamVjdCkKICAgICAs
IG1faXNBcnJheShvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKQogICAgICwgbV9p
bmRleCgwKQogewpAQCAtNjIzLDE2ICs2MDQsMTEgQEAgYm9vbCBKU09OT2JqZWN0OjpnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm8K
ICAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25EZXNjcmlwdG9yPEpTT2JqZWN0PihleGVjLCBF
eGVjU3RhdGU6Ompzb25UYWJsZShleGVjKSwgdGhpcywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTsKIH0KIAotdm9pZCBKU09OT2JqZWN0OjptYXJrU3RyaW5naWZpZXJzKE1hcmtTdGFjayYgbWFy
a1N0YWNrLCBTdHJpbmdpZmllciogc3RyaW5naWZpZXIpCi17Ci0gICAgc3RyaW5naWZpZXItPm1h
cmtBZ2dyZWdhdGUobWFya1N0YWNrKTsKLX0KLQogY2xhc3MgV2Fsa2VyIHsKIHB1YmxpYzoKLSAg
ICBXYWxrZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZnVuY3Rpb24sIENhbGxUeXBlIGNh
bGxUeXBlLCBDYWxsRGF0YSBjYWxsRGF0YSkKKyAgICBXYWxrZXIoRXhlY1N0YXRlKiBleGVjLCBI
YW5kbGU8SlNPYmplY3Q+IGZ1bmN0aW9uLCBDYWxsVHlwZSBjYWxsVHlwZSwgQ2FsbERhdGEgY2Fs
bERhdGEpCiAgICAgICAgIDogbV9leGVjKGV4ZWMpCi0gICAgICAgICwgbV9mdW5jdGlvbihmdW5j
dGlvbikKKyAgICAgICAgLCBtX2Z1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuY3Rpb24p
CiAgICAgICAgICwgbV9jYWxsVHlwZShjYWxsVHlwZSkKICAgICAgICAgLCBtX2NhbGxEYXRhKGNh
bGxEYXRhKQogICAgIHsKQEAgLTY0OSw3ICs2MjUsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBIb2xkZXI7CiAKICAgICBFeGVjU3RhdGUqIG1fZXhlYzsKLSAgICBEZXByZWNhdGVkUHRy
PEpTT2JqZWN0PiBtX2Z1bmN0aW9uOworICAgIExvY2FsPEpTT2JqZWN0PiBtX2Z1bmN0aW9uOwog
ICAgIENhbGxUeXBlIG1fY2FsbFR5cGU7CiAgICAgQ2FsbERhdGEgbV9jYWxsRGF0YTsKIH07CkBA
IC02NjMsOCArNjM5LDggQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFs
dWUgdW5maWx0ZXJlZCkKIHsKICAgICBWZWN0b3I8UHJvcGVydHlOYW1lQXJyYXksIDE2PiBwcm9w
ZXJ0eVN0YWNrOwogICAgIFZlY3Rvcjx1aW50MzJfdCwgMTY+IGluZGV4U3RhY2s7Ci0gICAgVmVj
dG9yPEpTT2JqZWN0KiwgMTY+IG9iamVjdFN0YWNrOwotICAgIFZlY3RvcjxKU0FycmF5KiwgMTY+
IGFycmF5U3RhY2s7CisgICAgTG9jYWxTdGFjazxKU09iamVjdCwgMTY+IG9iamVjdFN0YWNrKG1f
ZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBMb2NhbFN0YWNrPEpTQXJyYXksIDE2PiBhcnJheVN0
YWNrKG1fZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICAKICAgICBWZWN0b3I8V2Fsa2VyU3RhdGUs
IDE2PiBzdGF0ZVN0YWNrOwogICAgIFdhbGtlclN0YXRlIHN0YXRlID0gU3RhdGVVbmtub3duOwpA
QCAtNjg0LDcgKzY2MCw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1Zh
bHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKG1f
ZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwogCiAgICAgICAgICAgICAg
ICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGluVmFsdWUpOwotICAgICAgICAgICAgICAgIGFy
cmF5U3RhY2suYXBwZW5kKGFycmF5KTsKKyAgICAgICAgICAgICAgICBhcnJheVN0YWNrLnB1c2go
YXJyYXkpOwogICAgICAgICAgICAgICAgIGluZGV4U3RhY2suYXBwZW5kKDApOwogICAgICAgICAg
ICAgICAgIC8vIGZhbGx0aHJvdWdoCiAgICAgICAgICAgICB9CkBAIC02OTYsMTEgKzY3MiwxMSBA
QCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQog
ICAgICAgICAgICAgICAgICAgICB0aWNrQ291bnQgPSBsb2NhbFRpbWVvdXRDaGVja2VyLnRpY2tz
VW50aWxOZXh0Q2hlY2soKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBK
U0FycmF5KiBhcnJheSA9IGFycmF5U3RhY2subGFzdCgpOworICAgICAgICAgICAgICAgIEpTQXJy
YXkqIGFycmF5ID0gYXJyYXlTdGFjay5wZWVrKCk7CiAgICAgICAgICAgICAgICAgdWludDMyX3Qg
aW5kZXggPSBpbmRleFN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT0g
YXJyYXktPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dFZhbHVlID0gYXJyYXk7
Ci0gICAgICAgICAgICAgICAgICAgIGFycmF5U3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICAg
ICAgICAgICAgICBhcnJheVN0YWNrLnBvcCgpOwogICAgICAgICAgICAgICAgICAgICBpbmRleFN0
YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtNzIyLDcgKzY5OCw3IEBAIE5FVkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6
d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAgICAgICAgLy8gZmFsbHRocm91Z2gK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgQXJyYXlFbmRWaXNpdE1lbWJlcjogewot
ICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXJyYXlTdGFjay5sYXN0KCk7CisgICAg
ICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhcnJheVN0YWNrLnBlZWsoKTsKICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIGZpbHRlcmVkVmFsdWUgPSBjYWxsUmV2aXZlcihhcnJheSwganNTdHJp
bmcobV9leGVjLCBVU3RyaW5nOjpudW1iZXIoaW5kZXhTdGFjay5sYXN0KCkpKSwgb3V0VmFsdWUp
OwogICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJlZFZhbHVlLmlzVW5kZWZpbmVkKCkpCiAgICAg
ICAgICAgICAgICAgICAgIGFycmF5LT5kZWxldGVQcm9wZXJ0eShtX2V4ZWMsIGluZGV4U3RhY2su
bGFzdCgpKTsKQEAgLTc0NSw3ICs3MjEsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6
OndhbGsoSlNWYWx1ZSB1bmZpbHRlcmVkKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dFcnJvcihtX2V4ZWMsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihtX2V4ZWMpKTsKIAogICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChpblZhbHVlKTsKLSAgICAg
ICAgICAgICAgICBvYmplY3RTdGFjay5hcHBlbmQob2JqZWN0KTsKKyAgICAgICAgICAgICAgICBv
YmplY3RTdGFjay5wdXNoKG9iamVjdCk7CiAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5hcHBl
bmQoMCk7CiAgICAgICAgICAgICAgICAgcHJvcGVydHlTdGFjay5hcHBlbmQoUHJvcGVydHlOYW1l
QXJyYXkobV9leGVjKSk7CiAgICAgICAgICAgICAgICAgb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eU5h
bWVzKG1fZXhlYywgcHJvcGVydHlTdGFjay5sYXN0KCkpOwpAQCAtNzU5LDEyICs3MzUsMTIgQEAg
TkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAg
ICAgICAgICAgICAgICAgICAgdGlja0NvdW50ID0gbG9jYWxUaW1lb3V0Q2hlY2tlci50aWNrc1Vu
dGlsTmV4dENoZWNrKCk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IG9iamVjdFN0YWNrLmxhc3QoKTsKKyAgICAgICAgICAgICAgICBKU09i
amVjdCogb2JqZWN0ID0gb2JqZWN0U3RhY2sucGVlaygpOwogICAgICAgICAgICAgICAgIHVpbnQz
Ml90IGluZGV4ID0gaW5kZXhTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICAgICAgUHJvcGVydHlO
YW1lQXJyYXkmIHByb3BlcnRpZXMgPSBwcm9wZXJ0eVN0YWNrLmxhc3QoKTsKICAgICAgICAgICAg
ICAgICBpZiAoaW5kZXggPT0gcHJvcGVydGllcy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgb3V0VmFsdWUgPSBvYmplY3Q7Ci0gICAgICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLnJl
bW92ZUxhc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0U3RhY2sucG9wKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGluZGV4U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC03ODcsNyArNzYzLDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxr
KEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgICAgICAvLyBmYWxsdGhyb3VnaAogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBPYmplY3RFbmRWaXNpdE1lbWJlcjogewotICAg
ICAgICAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RTdGFjay5sYXN0KCk7CisgICAg
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFN0YWNrLnBlZWsoKTsKICAgICAg
ICAgICAgICAgICBJZGVudGlmaWVyIHByb3AgPSBwcm9wZXJ0eVN0YWNrLmxhc3QoKVtpbmRleFN0
YWNrLmxhc3QoKV07CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAg
ICAgICAgICAgICAgSlNWYWx1ZSBmaWx0ZXJlZFZhbHVlID0gY2FsbFJldml2ZXIob2JqZWN0LCBq
c1N0cmluZyhtX2V4ZWMsIHByb3AudXN0cmluZygpKSwgb3V0VmFsdWUpOwpAQCAtODM4LDcgKzgx
NCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNlKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBVU3RyaW5nIHNvdXJjZSA9IHZhbHVlLnRvU3RyaW5nKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bGwoKSk7Ci0gICAgCisKKyAgICBMb2NhbFNjb3BlIHNjb3BlKGV4ZWMtPmds
b2JhbERhdGEoKSk7CiAgICAgTGl0ZXJhbFBhcnNlciBqc29uUGFyc2VyKGV4ZWMsIHNvdXJjZSwg
TGl0ZXJhbFBhcnNlcjo6U3RyaWN0SlNPTik7CiAgICAgSlNWYWx1ZSB1bmZpbHRlcmVkID0ganNv
blBhcnNlci50cnlMaXRlcmFsUGFyc2UoKTsKICAgICBpZiAoIXVuZmlsdGVyZWQpCkBAIC04NTIs
NyArODI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFy
c2UoRXhlY1N0YXRlKiBleGVjKQogICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
ZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQog
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHVuZmlsdGVyZWQpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoV2Fsa2VyKGV4ZWMsIGFzT2JqZWN0KGZ1bmN0aW9uKSwgY2FsbFR5cGUs
IGNhbGxEYXRhKS53YWxrKHVuZmlsdGVyZWQpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFdhbGtlcihleGVjLCBMb2NhbDxKU09iamVjdD4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVj
dChmdW5jdGlvbikpLCBjYWxsVHlwZSwgY2FsbERhdGEpLndhbGsodW5maWx0ZXJlZCkpOwogfQog
CiAvLyBFQ01BLTI2MiB2NSAxNS4xMi4zCkBAIC04NjAsMTUgKzgzNywxNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTT05Qcm90b0Z1bmNTdHJpbmdpZnkoRXhlY1N0YXRlKiBleGVj
KQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsICJObyBpbnB1dCB0byBzdHJpbmdpZnki
KSk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIEpTVmFsdWUg
cmVwbGFjZXIgPSBleGVjLT5hcmd1bWVudCgxKTsKLSAgICBKU1ZhbHVlIHNwYWNlID0gZXhlYy0+
YXJndW1lbnQoMik7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShTdHJpbmdpZmllcihleGVj
LCByZXBsYWNlciwgc3BhY2UpLnN0cmluZ2lmeSh2YWx1ZSkpOworICAgIExvY2FsU2NvcGUgc2Nv
cGUoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBMb2NhbDxVbmtub3duPiB2YWx1ZShleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBMb2NhbDxVbmtub3duPiByZXBs
YWNlcihleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBMb2NhbDxV
bmtub3duPiBzcGFjZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmFyZ3VtZW50KDIpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFN0cmluZ2lmaWVyKGV4ZWMsIHJlcGxhY2VyLCBzcGFj
ZSkuc3RyaW5naWZ5KHZhbHVlKS5nZXQoKSk7CiB9CiAKIFVTdHJpbmcgSlNPTlN0cmluZ2lmeShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGluZGVudCkKIHsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IFN0cmluZ2lmaWVyKGV4ZWMsIGpzTnVsbCgpLCBqc051bWJlcihpbmRl
bnQpKS5zdHJpbmdpZnkodmFsdWUpOworICAgIExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+Z2xvYmFs
RGF0YSgpKTsKKyAgICBMb2NhbDxVbmtub3duPiByZXN1bHQgPSBTdHJpbmdpZmllcihleGVjLCBM
b2NhbDxVbmtub3duPihleGVjLT5nbG9iYWxEYXRhKCksIGpzTnVsbCgpKSwgTG9jYWw8VW5rbm93
bj4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBqc051bWJlcihpbmRlbnQpKSkuc3RyaW5naWZ5KExvY2Fs
PFVua25vd24+KGV4ZWMtPmdsb2JhbERhdGEoKSwgdmFsdWUpKTsKICAgICBpZiAocmVzdWx0Lmlz
VW5kZWZpbmVkT3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBVU3RyaW5nKCk7CiAgICAgcmV0dXJu
IHJlc3VsdC5nZXRTdHJpbmcoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09OT2JqZWN0LmgKaW5kZXggYWNmZmVjYTJjMDUyYjk4OTY1NDZjYzFlMTRhYmY5NmEyMDEzYjgy
MC4uNTI2NGZkNzk4ZjAxNDIzYjk0MDg2MmViZmJmOGRhM2IwZmVkMmNjMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuaApAQCAtNDEsOCArNDEsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZShwcm90b3R5
cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQW5vbnltb3VzU2xvdENv
dW50LCAmc19pbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIG1hcmtTdHJp
bmdpZmllcnMoTWFya1N0YWNrJiwgU3RyaW5naWZpZXIqKTsKLQogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0
T3duUHJvcGVydHlTbG90IHwgSlNPYmplY3Q6OlN0cnVjdHVyZUZsYWdzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXJrU3RhY2suaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCmluZGV4IGQ5OGRmMzAzY2M2YjkzZTVhM2I5
NjBhNGVlZWQ2ODhkYmFmOGI2MWIuLjNkNDQ5MjM2NjRhNjMwOGJkNjE0N2ZjNGYwM2U0NjM3MzM2
YmJkNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFj
ay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcmtTdGFjay5oCkBAIC03
MSw2ICs3MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChjb3VudCkKICAg
ICAgICAgICAgICAgICBtX21hcmtTZXRzLmFwcGVuZChNYXJrU2V0KHZhbHVlcywgdmFsdWVzICsg
Y291bnQsIHByb3BlcnRpZXMpKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBh
cHBlbmRTbG90cyhIYW5kbGVTbG90IHZhbHVlcywgc2l6ZV90IGNvdW50LCBNYXJrU2V0UHJvcGVy
dGllcyBwcm9wZXJ0aWVzID0gTm9OdWxsVmFsdWVzKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoY291bnQpCisgICAgICAgICAgICAgICAgbV9tYXJrU2V0cy5hcHBlbmQoTWFya1NldCh2YWx1
ZXMsIHZhbHVlcyArIGNvdW50LCBwcm9wZXJ0aWVzKSk7CisgICAgICAgIH0KIAogICAgICAgICB2
b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMpCiAgICAgICAg
IHsK
</data>
<flag name="review"
          id="78059"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>