<?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>191470</bug_id>
          
          <creation_ts>2018-11-09 08:16:58 -0800</creation_ts>
          <short_desc>Use OptionSet for layout milestones</short_desc>
          <delta_ts>2018-11-09 11:48:26 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1476910</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-11-09 08:16:58 -0800</bug_when>
    <thetext>More type safety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476912</commentid>
    <comment_count>1</comment_count>
      <attachid>354345</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-11-09 08:20:56 -0800</bug_when>
    <thetext>Created attachment 354345
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476914</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-11-09 08:22:57 -0800</bug_when>
    <thetext>Attachment 354345 did not pass style-queue:


ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:91:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/FrameLoaderClient.h:190:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 2 in 49 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>1477026</commentid>
    <comment_count>3</comment_count>
      <attachid>354345</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-09 11:47:25 -0800</bug_when>
    <thetext>Comment on attachment 354345
patch

Clearing flags on attachment: 354345

Committed r238049: &lt;https://trac.webkit.org/changeset/238049&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477027</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-09 11:47:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477028</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-09 11:48:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/45951249&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354345</attachid>
            <date>2018-11-09 08:20:56 -0800</date>
            <delta_ts>2018-11-09 11:47:25 -0800</delta_ts>
            <desc>patch</desc>
            <filename>layoutmilestone-optionset-2.patch</filename>
            <type>text/plain</type>
            <size>72783</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE4LTExLTA5ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgT3B0aW9uU2V0IGZvciBs
YXlvdXQgbWlsZXN0b25lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkxNDcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
bG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZFJlYWNoTGF5b3V0
TWlsZXN0b25lKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVZpZXc6OmFkZFBhaW50UGVuZGluZ01pbGVzdG9uZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpmaXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmZpcmVQYWludFJlbGF0ZWRNaWxlc3RvbmVzSWZO
ZWVkZWQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9MYXlv
dXRNaWxlc3RvbmUuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxl
c3RvbmVzLmguCisKKyAgICAgICAgUmVuYW1lZCB0byBhcHBlYXNlIFdLMiBJUEMgY29kZSBnZW5l
cmF0aW9uLgorCisgICAgICAgICogcGFnZS9MYXlvdXRNaWxlc3RvbmVzLmg6IFJlbW92ZWQuCisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmFkZExheW91
dE1pbGVzdG9uZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cmVtb3ZlTGF5b3V0TWlsZXN0
b25lcyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppc0NvdW50aW5nUmVsZXZhbnRSZXBhaW50
ZWRPYmplY3RzIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2U6OnJlcXVlc3RlZExheW91dE1pbGVzdG9uZXMgY29uc3QpOgorCiAyMDE4LTExLTA4
ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGFuIFNQSSB0byBhbGxvdyBXZWJWaWV3IGNsaWVudHMgdG8gYWRkIGFkZGl0aW9uYWwgc3Vw
cG9ydGVkIGltYWdlIGZvcm1hdHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjU3Myw3ICsyNTczLDcgQEAKIAkJOTMxQ0JEMEQxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9s
bGluZ1N0YXRlTm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTMxQ0JEMDcxNjFBNDRFOTAwRTRDODc0IC8qIFNjcm9sbGluZ1N0YXRlTm9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMUNCRDBG
MTYxQTQ0RTkwMEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUNCRDA5MTYxQTQ0RTkw
MEU0Qzg3NCAvKiBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzFDQkQxMTE2MUE0NEU5MDBFNEM4
NzQgLyogU2Nyb2xsaW5nU3RhdGVUcmVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzFDQkQwQjE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3Rh
dGVUcmVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
LQkJOTMxRDcyRjYxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMUQ3MkY1MTVGRTY5NTMw
MEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTMxRDcyRjYxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91
dE1pbGVzdG9uZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTMxRDcyRjUxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMkNDMEI3MURGRkQx
NTgwMDRDMEY5RiAvKiBNZWRpYVRyYWNrQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMkNDMEI2MURGRkQxNTgwMDRDMEY5RiAvKiBN
ZWRpYVRyYWNrQ29uc3RyYWludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5MzJDQzBENTFERkZENjY3MDA0QzBGOUYgLyogSlNNZWRpYVRyYWNr
Q29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzMkNDMEQxMURGRkQ2NjcwMDRDMEY5RiAvKiBKU01lZGlhVHJhY2tDb25zdHJhaW50cy5o
ICovOyB9OwogCQk5MzMwOURENzA5OUU2NDkyMDA1NkU1ODEgLyogQXBwZW5kTm9kZUNvbW1hbmQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMzA5RDg4
MDk5RTY0OTEwMDU2RTU4MSAvKiBBcHBlbmROb2RlQ29tbWFuZC5oICovOyB9OwpAQCAtMTAzOTQs
NyArMTAzOTQsNyBAQAogCQk5MzFDQkQwOTE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9s
bGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzFDQkQwQTE2MUE0NEU5MDBFNEM4NzQgLyogU2Nyb2xsaW5nU3RhdGVUcmVlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1N0YXRlVHJlZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUNCRDBCMTYxQTQ0RTkwMEU0Qzg3NCAvKiBT
Y3JvbGxpbmdTdGF0ZVRyZWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
b2xsaW5nU3RhdGVUcmVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkzMUQ3MkY1
MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExheW91dE1pbGVzdG9uZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTMxRDcyRjUxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMYXlvdXRNaWxlc3RvbmUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyN0E5NDEwOTk2OEQxQTAwNjhBNTQ2IC8qIEhUTUxP
cHRpb25zQ29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBIVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MzJDQzBCNjFERkZEMTU4MDA0QzBGOUYgLyogTWVkaWFUcmFja0NvbnN0cmFpbnRzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhVHJhY2tDb25zdHJhaW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzJDQzBEMDFERkZENjY3MDA0QzBGOUYgLyog
SlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNNZWRpYVRyYWNrQ29uc3RyYWludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTk4OTYsNyArMTk4OTYsNyBAQAogCQkJCTBGNDcxMEQ5MURCNkZFMjIwMDJE
Q0VDMyAvKiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmggKi8sCiAJCQkJMEY0NzEwREExREI2
RkUyMjAwMkRDRUMzIC8qIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsICovLAogCQkJCUU0
OTE2RkY2MTk1REY2QTAwMDVBQjM0OSAvKiBMYXllckZsdXNoVGhyb3R0bGVTdGF0ZS5oICovLAot
CQkJCTkzMUQ3MkY1MTVGRTY5NTMwMEM0QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmggKi8sCisJ
CQkJOTMxRDcyRjUxNUZFNjk1MzAwQzRDMDdFIC8qIExheW91dE1pbGVzdG9uZS5oICovLAogCQkJ
CUJDRTFDNDFBMEQ5ODI5ODAwMDNCMDJGMiAvKiBMb2NhdGlvbi5jcHAgKi8sCiAJCQkJQkNFMUM0
MTkwRDk4Mjk4MDAwM0IwMkYyIC8qIExvY2F0aW9uLmggKi8sCiAJCQkJQkNFMUM0MjIwRDk4MjlG
MjAwM0IwMkYyIC8qIExvY2F0aW9uLmlkbCAqLywKQEAgLTMwMDA1LDcgKzMwMDA1LDcgQEAKIAkJ
CQkxMTk5RkE0RjIwOEUzODk5MDAyMzU4Q0MgLyogTGF5b3V0SW5saW5lQ29udGFpbmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxMTMxMENGNDIwQkE0QTNEMDA2NUE4RDAgLyogTGF5b3V0SXRlcmF0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTZGRTdDRkE0MjE3N0VGMTAwMDVCMTU3MyAvKiBMYXlv
dXRMaW5lQnJlYWtCb3guaCBpbiBIZWFkZXJzICovLAotCQkJCTkzMUQ3MkY2MTVGRTY5NTMwMEM0
QzA3RSAvKiBMYXlvdXRNaWxlc3RvbmVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzFENzJGNjE1
RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
NDFEQzA1MTE2NDgzNEI5MDAzNzFFNUEgLyogTGF5b3V0UG9pbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTE0MURDMDUzMTY0ODM0QjkwMDM3MUU1QSAvKiBMYXlvdXRSZWN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlBMTI1MzhENDEzRjlCNjBBMDAwMjQ3NTQgLyogTGF5b3V0UmVwYWludGVyLmggaW4g
SGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBFbXB0eUZyYW1lTG9hZGVyQ2xpCiAgICAgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSBmaW5hbCB7IH0KICAgICB2b2lk
IGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCkgZmluYWwgeyB9CiAgICAgdm9pZCBkaXNw
YXRjaERpZEZpbmlzaExvYWQoKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVhY2hM
YXlvdXRNaWxlc3RvbmUoTGF5b3V0TWlsZXN0b25lcykgZmluYWwgeyB9CisgICAgdm9pZCBkaXNw
YXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxMYXlvdXRNaWxlc3RvbmU+KSBm
aW5hbCB7IH0KIAogICAgIEZyYW1lKiBkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdhdGlv
bkFjdGlvbiYpIGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KICAgICB2b2lkIGRpc3BhdGNoU2hv
dygpIGZpbmFsIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTYzLDcgKzI1NjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRPcmlnaW5hbFVSTEZvckRvd25sCiAgICAgYWRkU2FtZVNpdGVJbmZvVG9SZXF1ZXN0SWZOZWVk
ZWQocmVxdWVzdCwgaW5pdGlhdG9yKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6ZGlkUmVhY2hM
YXlvdXRNaWxlc3RvbmUoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQordm9pZCBGcmFtZUxv
YWRlcjo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoT3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4g
bWlsZXN0b25lcykKIHsKICAgICBBU1NFUlQobV9mcmFtZS5pc01haW5GcmFtZSgpKTsKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDIzODAyNikKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBACiAjaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
clN0YXRlTWFjaGluZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRl
ICJMYXlvdXRNaWxlc3RvbmVzLmgiCisjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lLmgiCiAjaW5j
bHVkZSAiTWl4ZWRDb250ZW50Q2hlY2tlci5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkTm90aWZpZXIuaCIKQEAgLTIwMyw3ICsyMDMsNyBAQCBw
dWJsaWM6CiAKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KGNvbnN0IFVS
TCYpIGNvbnN0OwogCi0gICAgdm9pZCBkaWRSZWFjaExheW91dE1pbGVzdG9uZShMYXlvdXRNaWxl
c3RvbmVzKTsKKyAgICB2b2lkIGRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxMYXlv
dXRNaWxlc3RvbmU+KTsKICAgICB2b2lkIGRpZEZpcnN0TGF5b3V0KCk7CiAKICAgICB2b2lkIGxv
YWRlZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VSZXF1
ZXN0JiBuZXdSZXF1ZXN0LCBSZXNvdXJjZUVycm9yJik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcg
KzMwLDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgot
I2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZXMuaCIKKyNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUu
aCIKICNpbmNsdWRlICJMaW5rSWNvbi5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTE4Nyw3ICsxODcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZExheW91dCgpIHsgfQotICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKExheW91dE1pbGVzdG9uZXMpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNl
dDxMYXlvdXRNaWxlc3RvbmU+KSB7IH0KIAogICAgIHZpcnR1YWwgRnJhbWUqIGRpc3BhdGNoQ3Jl
YXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaFNob3coKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZp
c2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNiBAQCBGcmFtZVZpZXc6OkZyYW1lVmlldyhGcmFtZSYg
ZnJhbWUpCiAgICAgLCBtX2F1dG9TaXplRml4ZWRNaW5pbXVtSGVpZ2h0KDApCiAgICAgLCBtX2hl
YWRlckhlaWdodCgwKQogICAgICwgbV9mb290ZXJIZWlnaHQoMCkKLSAgICAsIG1fbWlsZXN0b25l
c1BlbmRpbmdQYWludCgwKQogICAgICwgbV92aXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50KHRy
dWUpCiAgICAgLCBtX2hhc0ZsaXBwZWRCbG9ja1JlbmRlcmVycyhmYWxzZSkKICAgICAsIG1fc2Ny
b2xsUGlubmluZ0JlaGF2aW9yKERvTm90UGluKQpAQCAtNTAxOSwxNSArNTAxOCwxNSBAQCB2b2lk
IEZyYW1lVmlldzo6d2lsbFJlbW92ZVNjcm9sbGJhcihTY3JvCiAgICAgfQogfQogCi12b2lkIEZy
YW1lVmlldzo6YWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVz
dG9uZXMpCit2b2lkIEZyYW1lVmlldzo6YWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhPcHRpb25T
ZXQ8TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzKQogewotICAgIG1fbWlsZXN0b25lc1BlbmRp
bmdQYWludCB8PSBtaWxlc3RvbmVzOworICAgIG1fbWlsZXN0b25lc1BlbmRpbmdQYWludC5hZGQo
bWlsZXN0b25lcyk7CiB9CiAKIHZvaWQgRnJhbWVWaWV3OjpmaXJlTGF5b3V0UmVsYXRlZE1pbGVz
dG9uZXNJZk5lZWRlZCgpCiB7Ci0gICAgTGF5b3V0TWlsZXN0b25lcyByZXF1ZXN0ZWRNaWxlc3Rv
bmVzID0gMDsKLSAgICBMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXNBY2hpZXZlZCA9IDA7Cisg
ICAgT3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4gcmVxdWVzdGVkTWlsZXN0b25lczsKKyAgICBP
cHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzQWNoaWV2ZWQ7CiAgICAgUGFnZSog
cGFnZSA9IGZyYW1lKCkucGFnZSgpOwogICAgIGlmIChwYWdlKQogICAgICAgICByZXF1ZXN0ZWRN
aWxlc3RvbmVzID0gcGFnZS0+cmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpOwpAQCAtNTAzNiw3
ICs1MDM1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmZpcmVMYXlvdXRSZWxhdGVkTWlsZXN0bwogICAg
ICAgICBtX2ZpcnN0TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAgIGZyYW1l
KCkubG9hZGVyKCkuZGlkRmlyc3RMYXlvdXQoKTsKICAgICAgICAgaWYgKHJlcXVlc3RlZE1pbGVz
dG9uZXMgJiBEaWRGaXJzdExheW91dCkKLSAgICAgICAgICAgIG1pbGVzdG9uZXNBY2hpZXZlZCB8
PSBEaWRGaXJzdExheW91dDsKKyAgICAgICAgICAgIG1pbGVzdG9uZXNBY2hpZXZlZC5hZGQoRGlk
Rmlyc3RMYXlvdXQpOwogICAgICAgICBpZiAoZnJhbWUoKS5pc01haW5GcmFtZSgpKQogICAgICAg
ICAgICAgcGFnZS0+c3RhcnRDb3VudGluZ1JlbGV2YW50UmVwYWludGVkT2JqZWN0cygpOwogICAg
IH0KQEAgLTUwNDcsMTMgKzUwNDYsMTMgQEAgdm9pZCBGcmFtZVZpZXc6OmZpcmVMYXlvdXRSZWxh
dGVkTWlsZXN0bwogICAgIGlmIChtX2lzVmlzdWFsbHlOb25FbXB0eSAmJiBtX2ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dENhbGxiYWNrUGVuZGluZykgewogICAgICAgICBtX2ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dENhbGxiYWNrUGVuZGluZyA9IGZhbHNlOwogICAgICAgICBpZiAocmVx
dWVzdGVkTWlsZXN0b25lcyAmIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkKLSAgICAg
ICAgICAgIG1pbGVzdG9uZXNBY2hpZXZlZCB8PSBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQ7CisgICAgICAgICAgICBtaWxlc3RvbmVzQWNoaWV2ZWQuYWRkKERpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCk7CiAgICAgfQogCiAgICAgaWYgKG1fcmVuZGVyZWRTaWduaWZpY2FudEFt
b3VudE9mVGV4dCAmJiBtX3NpZ25pZmljYW50UmVuZGVyZWRUZXh0TWlsZXN0b25lUGVuZGluZykg
ewogICAgICAgICBtX3NpZ25pZmljYW50UmVuZGVyZWRUZXh0TWlsZXN0b25lUGVuZGluZyA9IGZh
bHNlOwogICAgICAgICBpZiAocmVxdWVzdGVkTWlsZXN0b25lcyAmIERpZFJlbmRlclNpZ25pZmlj
YW50QW1vdW50T2ZUZXh0KQotICAgICAgICAgICAgbWlsZXN0b25lc0FjaGlldmVkIHw9IERpZFJl
bmRlclNpZ25pZmljYW50QW1vdW50T2ZUZXh0OworICAgICAgICAgICAgbWlsZXN0b25lc0FjaGll
dmVkLmFkZChEaWRSZW5kZXJTaWduaWZpY2FudEFtb3VudE9mVGV4dCk7CiAgICAgfQogCiAgICAg
aWYgKG1pbGVzdG9uZXNBY2hpZXZlZCAmJiBmcmFtZSgpLmlzTWFpbkZyYW1lKCkpCkBAIC01MDY2
LDIwICs1MDY1LDIwIEBAIHZvaWQgRnJhbWVWaWV3OjpmaXJlUGFpbnRSZWxhdGVkTWlsZXN0b24K
ICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91dE1pbGVzdG9uZXMg
bWlsZXN0b25lc0FjaGlldmVkID0gMDsKKyAgICBPcHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPiBt
aWxlc3RvbmVzQWNoaWV2ZWQ7CiAKICAgICAvLyBNYWtlIHN1cmUgdGhlIHBlbmRpbmcgcGFpbnQg
bWlsZXN0b25lcyBoYXZlIGFjdHVhbGx5IGJlZW4gcmVxdWVzdGVkIGJlZm9yZSB3ZSBzZW5kIHRo
ZW0uCiAgICAgaWYgKG1fbWlsZXN0b25lc1BlbmRpbmdQYWludCAmIERpZEZpcnN0Rmx1c2hGb3JI
ZWFkZXJMYXllcikgewogICAgICAgICBpZiAocGFnZS0+cmVxdWVzdGVkTGF5b3V0TWlsZXN0b25l
cygpICYgRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKQotICAgICAgICAgICAgbWlsZXN0b25l
c0FjaGlldmVkIHw9IERpZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllcjsKKyAgICAgICAgICAgIG1p
bGVzdG9uZXNBY2hpZXZlZC5hZGQoRGlkRmlyc3RGbHVzaEZvckhlYWRlckxheWVyKTsKICAgICB9
CiAKICAgICBpZiAobV9taWxlc3RvbmVzUGVuZGluZ1BhaW50ICYgRGlkRmlyc3RQYWludEFmdGVy
U3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKSB7CiAgICAgICAgIGlmIChwYWdlLT5yZXF1
ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzKCkgJiBEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5j
cmVtZW50YWxSZW5kZXJpbmcpCi0gICAgICAgICAgICBtaWxlc3RvbmVzQWNoaWV2ZWQgfD0gRGlk
Rmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nOworICAgICAgICAg
ICAgbWlsZXN0b25lc0FjaGlldmVkLmFkZChEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5j
cmVtZW50YWxSZW5kZXJpbmcpOwogICAgIH0KIAotICAgIG1fbWlsZXN0b25lc1BlbmRpbmdQYWlu
dCA9IDA7CisgICAgbV9taWxlc3RvbmVzUGVuZGluZ1BhaW50ID0geyB9OwogCiAgICAgaWYgKG1p
bGVzdG9uZXNBY2hpZXZlZCkKICAgICAgICAgcGFnZS0+bWFpbkZyYW1lKCkubG9hZGVyKCkuZGlk
UmVhY2hMYXlvdXRNaWxlc3RvbmUobWlsZXN0b25lc0FjaGlldmVkKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUgIkNv
bnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXdMYXlvdXRDb250ZXh0LmgiCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lcy5oIgor
I2luY2x1ZGUgIkxheW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNp
bmNsdWRlICJQYWdpbmF0aW9uLmgiCiAjaW5jbHVkZSAiUGFpbnRQaGFzZS5oIgpAQCAtNTkyLDEw
ICs1OTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlVGlsZWRCYWNraW5nQWRhcHRpdmVT
aXppbmcoKTsKICAgICBUaWxlZEJhY2tpbmc6OlNjcm9sbGFiaWxpdHkgY29tcHV0ZVNjcm9sbGFi
aWxpdHkoKSBjb25zdDsKIAotICAgIHZvaWQgYWRkUGFpbnRQZW5kaW5nTWlsZXN0b25lcyhMYXlv
dXRNaWxlc3RvbmVzKTsKKyAgICB2b2lkIGFkZFBhaW50UGVuZGluZ01pbGVzdG9uZXMoT3B0aW9u
U2V0PExheW91dE1pbGVzdG9uZT4pOwogICAgIHZvaWQgZmlyZVBhaW50UmVsYXRlZE1pbGVzdG9u
ZXNJZk5lZWRlZCgpOwogICAgIHZvaWQgZmlyZUxheW91dFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVk
ZWQoKTsKLSAgICBMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXNQZW5kaW5nUGFpbnQoKSBjb25z
dCB7IHJldHVybiBtX21pbGVzdG9uZXNQZW5kaW5nUGFpbnQ7IH0KKyAgICBPcHRpb25TZXQ8TGF5
b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzUGVuZGluZ1BhaW50KCkgY29uc3QgeyByZXR1cm4gbV9t
aWxlc3RvbmVzUGVuZGluZ1BhaW50OyB9CiAKICAgICBib29sIHZpc3VhbFVwZGF0ZXNBbGxvd2Vk
QnlDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQ7
IH0KICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGll
bnQoYm9vbCk7CkBAIC05MTQsNyArOTE0LDcgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9oZWFkZXJI
ZWlnaHQ7CiAgICAgaW50IG1fZm9vdGVySGVpZ2h0OwogCi0gICAgTGF5b3V0TWlsZXN0b25lcyBt
X21pbGVzdG9uZXNQZW5kaW5nUGFpbnQ7CisgICAgT3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4g
bV9taWxlc3RvbmVzUGVuZGluZ1BhaW50OwogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZp
c3VhbENoYXJhY3RlclRocmVzaG9sZCA9IDIwMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dmlzdWFsUGl4ZWxUaHJlc2hvbGQgPSAzMiAqIDMyOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9MYXlvdXRNaWxlc3RvbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xh
eW91dE1pbGVzdG9uZS5oCShyZXZpc2lvbiAyMzgwMjYpCShmcm9tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvTGF5b3V0TWlsZXN0b25lcy5oOjIzODAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5
b3V0TWlsZXN0b25lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEZJWE1FOiBTb21l
IG9mIHRoZXNlIG1pbGVzdG9uZXMgYXJlIGFib3V0IGxheW91dCwgYW5kIG90aGVycyBhcmUgYWJv
dXQgcGFpbnRpbmcuCisvLyBXZSBzaG91bGQgZWl0aGVyIHJlLW5hbWUgdGhlbSB0byBzb21ldGhp
bmcgbW9yZSBnZW5lcmljLCBvciBzcGxpdCB0aGVtIGludG8KKy8vIHR3byBlbnVtcyAtLSBvbmUg
Zm9yIHBhaW50aW5nIGFuZCBvbmUgZm9yIGxheW91dC4KK2VudW0gTGF5b3V0TWlsZXN0b25lRmxh
ZyB7CisgICAgRGlkRmlyc3RMYXlvdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgID0gMSA8PCAwLAorICAgIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCAgICAgICAg
ICAgICAgICAgICAgICA9IDEgPDwgMSwKKyAgICBEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVj
dHNBcmVhVGhyZXNob2xkICAgICAgICAgPSAxIDw8IDIsCisgICAgRGlkRmlyc3RGbHVzaEZvckhl
YWRlckxheWVyICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAzLAorICAgIERpZEZpcnN0
TGF5b3V0QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgICA9IDEgPDwgNCwKKyAg
ICBEaWRGaXJzdFBhaW50QWZ0ZXJTdXBwcmVzc2VkSW5jcmVtZW50YWxSZW5kZXJpbmcgICAgPSAx
IDw8IDUsCisgICAgUmVhY2hlZFNlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplVGhyZXNo
b2xkICAgID0gMSA8PCA2LCAvLyBGSVhNRTogb25seSBpbXBsZW1lbnRlZCBieSBXSzIgY3VycmVu
dGx5LgorICAgIERpZFJlbmRlclNpZ25pZmljYW50QW1vdW50T2ZUZXh0ICAgICAgICAgICAgPSAx
IDw8IDcsCit9OworCit0eXBlZGVmIHVuc2lnbmVkIExheW91dE1pbGVzdG9uZXM7CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0
b25lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxlc3RvbmUu
aAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRNaWxlc3Rv
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMTIgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEZJWE1FOiBTb21lIG9mIHRoZXNlIG1pbGVzdG9uZXMgYXJlIGFib3V0IGxheW91dCwgYW5kIG90
aGVycyBhcmUgYWJvdXQgcGFpbnRpbmcuCiAvLyBXZSBzaG91bGQgZWl0aGVyIHJlLW5hbWUgdGhl
bSB0byBzb21ldGhpbmcgbW9yZSBnZW5lcmljLCBvciBzcGxpdCB0aGVtIGludG8KIC8vIHR3byBl
bnVtcyAtLSBvbmUgZm9yIHBhaW50aW5nIGFuZCBvbmUgZm9yIGxheW91dC4KLWVudW0gTGF5b3V0
TWlsZXN0b25lRmxhZyB7CitlbnVtIExheW91dE1pbGVzdG9uZSB7CiAgICAgRGlkRmlyc3RMYXlv
dXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gMSA8PCAwLAogICAgIERp
ZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MSwKICAgICBEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkICAgICAg
ICAgPSAxIDw8IDIsCkBAIC0zOCw5ICs0MCw3IEBAIGVudW0gTGF5b3V0TWlsZXN0b25lRmxhZyB7
CiAgICAgRGlkRmlyc3RMYXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZyAg
ID0gMSA8PCA0LAogICAgIERpZEZpcnN0UGFpbnRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJl
bmRlcmluZyAgICA9IDEgPDwgNSwKICAgICBSZWFjaGVkU2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVy
VHJlZVNpemVUaHJlc2hvbGQgICAgPSAxIDw8IDYsIC8vIEZJWE1FOiBvbmx5IGltcGxlbWVudGVk
IGJ5IFdLMiBjdXJyZW50bHkuCi0gICAgRGlkUmVuZGVyU2lnbmlmaWNhbnRBbW91bnRPZlRleHQg
ICAgICAgICAgICA9IDEgPDwgNywKKyAgICBEaWRSZW5kZXJTaWduaWZpY2FudEFtb3VudE9mVGV4
dCAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDcsCiB9OwogCi10eXBlZGVmIHVuc2lnbmVkIExh
eW91dE1pbGVzdG9uZXM7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvTGF5b3V0TWlsZXN0b25lcy5oCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0xheW91dE1pbGVzdG9uZXMuaAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci0vLyBGSVhNRTogU29tZSBvZiB0aGVzZSBtaWxlc3RvbmVzIGFyZSBhYm91dCBsYXlvdXQsIGFu
ZCBvdGhlcnMgYXJlIGFib3V0IHBhaW50aW5nLgotLy8gV2Ugc2hvdWxkIGVpdGhlciByZS1uYW1l
IHRoZW0gdG8gc29tZXRoaW5nIG1vcmUgZ2VuZXJpYywgb3Igc3BsaXQgdGhlbSBpbnRvCi0vLyB0
d28gZW51bXMgLS0gb25lIGZvciBwYWludGluZyBhbmQgb25lIGZvciBsYXlvdXQuCi1lbnVtIExh
eW91dE1pbGVzdG9uZUZsYWcgewotICAgIERpZEZpcnN0TGF5b3V0ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICA9IDEgPDwgMCwKLSAgICBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQgICAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDEsCi0gICAgRGlkSGl0UmVsZXZh
bnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCAgICAgICAgID0gMSA8PCAyLAotICAgIERp
ZEZpcnN0Rmx1c2hGb3JIZWFkZXJMYXllciAgICAgICAgICAgICAgICAgICAgICAgICA9IDEgPDwg
MywKLSAgICBEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5n
ICAgPSAxIDw8IDQsCi0gICAgRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFs
UmVuZGVyaW5nICAgID0gMSA8PCA1LAotICAgIFJlYWNoZWRTZXNzaW9uUmVzdG9yYXRpb25SZW5k
ZXJUcmVlU2l6ZVRocmVzaG9sZCAgICA9IDEgPDwgNiwgLy8gRklYTUU6IG9ubHkgaW1wbGVtZW50
ZWQgYnkgV0syIGN1cnJlbnRseS4KLSAgICBEaWRSZW5kZXJTaWduaWZpY2FudEFtb3VudE9mVGV4
dCAgICAgICAgICAgID0gMSA8PCA3LAotfTsKLQotdHlwZWRlZiB1bnNpZ25lZCBMYXlvdXRNaWxl
c3RvbmVzOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHJldmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4OTMsMTUgKzE4OTMsMTUgQEAgdm9pZCBQYWdlOjpyZW1vdGVJbnNwZWN0
b3JJbmZvcm1hdGlvbkRpZAogfQogI2VuZGlmCiAKLXZvaWQgUGFnZTo6YWRkTGF5b3V0TWlsZXN0
b25lcyhMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMpCit2b2lkIFBhZ2U6OmFkZExheW91dE1p
bGVzdG9uZXMoT3B0aW9uU2V0PExheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykKIHsKICAgICAv
LyBJbiB0aGUgZnV0dXJlLCB3ZSBtYXkgd2FudCBhIGZ1bmN0aW9uIHRoYXQgcmVwbGFjZXMgbV9s
YXlvdXRNaWxlc3RvbmVzIGluc3RlYWQgb2YganVzdCBhZGRpbmcgdG8gaXQuCi0gICAgbV9yZXF1
ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzIHw9IG1pbGVzdG9uZXM7CisgICAgbV9yZXF1ZXN0ZWRMYXlv
dXRNaWxlc3RvbmVzLmFkZChtaWxlc3RvbmVzKTsKIH0KIAotdm9pZCBQYWdlOjpyZW1vdmVMYXlv
dXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK3ZvaWQgUGFnZTo6cmVt
b3ZlTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVz
KQogewotICAgIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcyAmPSB+bWlsZXN0b25lczsKKyAg
ICBtX3JlcXVlc3RlZExheW91dE1pbGVzdG9uZXMucmVtb3ZlKG1pbGVzdG9uZXMpOwogfQogCiBD
b2xvciBQYWdlOjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW5kQ29sb3IoKSBjb25zdApAQCAtMTkyMyw3
ICsxOTIzLDcgQEAgc3RhdGljIGNvbnN0IGRvdWJsZSBnTWF4aW11bVVucGFpbnRlZEFyZQogCiBi
b29sIFBhZ2U6OmlzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKSBjb25zdAogewot
ICAgIHJldHVybiBtX2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMgJiYgKG1fcmVx
dWVzdGVkTGF5b3V0TWlsZXN0b25lcyAmIERpZEhpdFJlbGV2YW50UmVwYWludGVkT2JqZWN0c0Fy
ZWFUaHJlc2hvbGQpOworICAgIHJldHVybiBtX2lzQ291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9i
amVjdHMgJiYgbV9yZXF1ZXN0ZWRMYXlvdXRNaWxlc3RvbmVzLmNvbnRhaW5zKERpZEhpdFJlbGV2
YW50UmVwYWludGVkT2JqZWN0c0FyZWFUaHJlc2hvbGQpOwogfQogCiB2b2lkIFBhZ2U6OnN0YXJ0
Q291bnRpbmdSZWxldmFudFJlcGFpbnRlZE9iamVjdHMoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJl
dmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJG
aW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJM
YXlvdXRNaWxlc3RvbmVzLmgiCisjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lLmgiCiAjaW5jbHVk
ZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIkxlbmd0aEJveC5oIgogI2luY2x1ZGUgIk1lZGlh
UHJvZHVjZXIuaCIKQEAgLTUwMyw5ICs1MDMsOSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmlzaWJpbGl0eVN0YXRlIHZpc2liaWxpdHlTdGF0ZSgpIGNvbnN0OwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzdW1lQW5pbWF0aW5nSW1hZ2VzKCk7CiAKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZExheW91dE1pbGVzdG9uZXMoTGF5b3V0TWlsZXN0b25lcyk7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZW1vdmVMYXlvdXRNaWxlc3RvbmVzKExheW91dE1pbGVzdG9uZXMpOwot
ICAgIExheW91dE1pbGVzdG9uZXMgcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lczsgfQorICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWRkTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPik7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxM
YXlvdXRNaWxlc3RvbmU+KTsKKyAgICBPcHRpb25TZXQ8TGF5b3V0TWlsZXN0b25lPiByZXF1ZXN0
ZWRMYXlvdXRNaWxlc3RvbmVzKCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0ZWRMYXlvdXRNaWxl
c3RvbmVzOyB9CiAKICNpZiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBhZGRIZWFkZXJXaXRoSGVpZ2h0KGludCk7CkBAIC04MzEsNyArODMxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNQcmVyZW5kZXIgeyBmYWxzZSB9OwogICAgIE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBtX2FjdGl2aXR5U3RhdGU7CiAKLSAgICBMYXlvdXRNaWxlc3Rv
bmVzIG1fcmVxdWVzdGVkTGF5b3V0TWlsZXN0b25lcyB7IDAgfTsKKyAgICBPcHRpb25TZXQ8TGF5
b3V0TWlsZXN0b25lPiBtX3JlcXVlc3RlZExheW91dE1pbGVzdG9uZXM7CiAKICAgICBpbnQgbV9o
ZWFkZXJIZWlnaHQgeyAwIH07CiAgICAgaW50IG1fZm9vdGVySGVpZ2h0IHsgMCB9OwpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTgtMTEtMDkgIEFudHRpIEtvaXZpc3RvICA8
YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25TZXQgZm9yIGxheW91dCBtaWxl
c3RvbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE0NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFNoYXJlZC9BUEkvQ29jb2EvX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oOgor
ICAgICAgICAocmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMpOgorICAgICAgICAqIFNoYXJlZC9BUEkv
Yy9XS1NoYXJlZEFQSUNhc3QuaDoKKyAgICAgICAgKFdlYktpdDo6dG9XS0xheW91dE1pbGVzdG9u
ZXMpOgorICAgICAgICAoV2ViS2l0Ojp0b0xheW91dE1pbGVzdG9uZXMpOgorICAgICAgICAqIFNo
YXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaDoKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Om5ld2x5UmVhY2hlZExheW91
dE1pbGVzdG9uZXMgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6c2V0TmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAgICogU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRSZWFjaExheW91dE1p
bGVzdG9uZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6
CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hh
bmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdL
UGFnZVNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5hdmlnYXRp
b25DbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2VSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50c0ludGVybmFsLmg6CisgICAgICAgIChwYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAg
ICAobGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVu
ZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZExheW91dEZvckN1
c3RvbUNvbnRlbnRQcm92aWRlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
UmVhY2hMYXlvdXRNaWxlc3RvbmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZENvbW1pdExheWVyVHJlZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVyQ2xpZW50OjpkaWRSZWFjaExh
eW91dE1pbGVzdG9uZSk6CisgICAgICAgIChBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlTG9hZGVy
Q2xpZW50OjpsYXlvdXRNaWxlc3RvbmVzIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkUmVhY2hMYXlvdXRN
aWxlc3RvbmUpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OmxheW91dE1pbGVzdG9uZXMgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWls
ZXN0b25lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmg6
CisgICAgICAgIChXZWJLaXQ6OkRyYXdpbmdBcmVhOjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWls
ZXN0b25lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmRpc3BhdGNoRGlkUmVhY2hM
YXlvdXRNaWxlc3RvbmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6bV9zaG91bGRBdHRhY2hEcmF3aW5nQXJlYU9uUGFnZVRyYW5z
aXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpsaXN0ZW5Gb3JMYXlvdXRNaWxlc3Rv
bmVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlzcGF0Y2hEaWRSZWFjaExheW91dE1p
bGVzdG9uZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6
OnNlbmRQZW5kaW5nTmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyk6CisgICAgICAgIChXZWJL
aXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0
TWlsZXN0b25lKToKKwogMjAxOC0xMS0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCB0cnkgdG8gZml4IHRoZSAzMi1iaXQgbWFj
T1MgYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAz
LDcgKzEwMyw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKEkKICAg
ICBlbmNvZGVyIDw8IGFwcGxlTWFpbExpbmVzQ2xhbXBFbmFibGVkOwogICAgIGVuY29kZXIgPDwg
c2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudDsKICAgICBlbmNvZGVyLmVuY29kZUVudW0odXNl
ckludGVyZmFjZUxheW91dERpcmVjdGlvbik7Ci0gICAgZW5jb2Rlci5lbmNvZGVFbnVtKG9ic2Vy
dmVkTGF5b3V0TWlsZXN0b25lcyk7CisgICAgZW5jb2RlciA8PCBvYnNlcnZlZExheW91dE1pbGVz
dG9uZXM7CiAgICAgZW5jb2RlciA8PCBvdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeTsKICAg
ICBlbmNvZGVyIDw8IGNwdUxpbWl0OwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lSGFuZGxlcnM7
CkBAIC0yODgsNyArMjg4LDcgQEAgc3RkOjpvcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzPgogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocGFyYW1ldGVycy51c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlRW51bShwYXJhbWV0ZXJzLm9ic2VydmVkTGF5b3V0TWlsZXN0b25l
cykpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLm9ic2VydmVkTGF5b3V0TWls
ZXN0b25lcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMub3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kpKQpJbmRl
eDogU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
aAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBACiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3Rv
bmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CkBAIC0xNjEsNyArMTYxLDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgc2hvdWxkU2NhbGVWaWV3
VG9GaXREb2N1bWVudDsKIAogICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbjsKLSAgICBXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmVzIG9ic2VydmVkTGF5b3V0TWlsZXN0b25lczsKKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lPiBvYnNlcnZlZExheW91dE1pbGVzdG9uZXM7CiAKICAgICBTdHJpbmcg
b3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3k7CiAgICAgc3RkOjpvcHRpb25hbDxkb3VibGU+
IGNwdUxpbWl0OwpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL19XS1JlbmRl
cmluZ1Byb2dyZXNzRXZlbnRzSW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oCShy
ZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvX1dLUmVu
ZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw5ICsy
Nyw5IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCi0jaW1wb3J0IDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZXMuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CiAKLXN0YXRp
YyBpbmxpbmUgX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHMgcmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQorc3RhdGljIGlubGluZSBf
V0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyByZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyhPcHRpb25T
ZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzKQogewogICAgIF9XS1JlbmRl
cmluZ1Byb2dyZXNzRXZlbnRzIGV2ZW50cyA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLU2hhcmVkQVBJQ2FzdC5oCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NoYXJlZEFQSUNhc3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNTQsNyArNTQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyQ29udGVudFR5cGVzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Vc2VyU2NyaXB0VHlwZXMuaD4KQEAgLTg1OSw3ICs4NTksNyBAQCBpbmxpbmUgV2ViQ29y
ZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUCiAgICAgcmV0dXJuIHR5cGU7CiB9CiAKLWlubGlu
ZSBXS0xheW91dE1pbGVzdG9uZXMgdG9XS0xheW91dE1pbGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0
TWlsZXN0b25lcyBtaWxlc3RvbmVzKQoraW5saW5lIFdLTGF5b3V0TWlsZXN0b25lcyB0b1dLTGF5
b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBtaWxlc3Rv
bmVzKQogewogICAgIHVuc2lnbmVkIHdrTWlsZXN0b25lcyA9IDA7CiAKQEAgLTg4MSwyNCArODgx
LDI0IEBAIGlubGluZSBXS0xheW91dE1pbGVzdG9uZXMgdG9XS0xheW91dE1pbGUKICAgICByZXR1
cm4gd2tNaWxlc3RvbmVzOwogfQogCi1pbmxpbmUgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyB0
b0xheW91dE1pbGVzdG9uZXMoV0tMYXlvdXRNaWxlc3RvbmVzIHdrTWlsZXN0b25lcykKK2lubGlu
ZSBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiB0b0xheW91dE1pbGVzdG9uZXMo
V0tMYXlvdXRNaWxlc3RvbmVzIHdrTWlsZXN0b25lcykKIHsKLSAgICBXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmVzIG1pbGVzdG9uZXMgPSAwOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmU+IG1pbGVzdG9uZXM7CiAKICAgICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkRmly
c3RMYXlvdXQpCi0gICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkRmlyc3RMYXlvdXQ7
CisgICAgICAgIG1pbGVzdG9uZXMuYWRkKFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0KTsKICAgICBp
ZiAod2tNaWxlc3RvbmVzICYga1dLRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KQotICAg
ICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dDsKKyAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0KTsKICAgICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkSGl0UmVsZXZhbnRSZXBh
aW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCkKLSAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3Jl
OjpEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkOworICAgICAgICBt
aWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVh
VGhyZXNob2xkKTsKICAgICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkRmlyc3RGbHVzaEZvckhl
YWRlckxheWVyKQotICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0Rmx1c2hG
b3JIZWFkZXJMYXllcjsKKyAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29yZTo6RGlkRmlyc3RG
bHVzaEZvckhlYWRlckxheWVyKTsKICAgICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkRmlyc3RM
YXlvdXRBZnRlclN1cHByZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKLSAgICAgICAgbWlsZXN0
b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFs
UmVuZGVyaW5nOworICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdExheW91
dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKTsKICAgICBpZiAod2tNaWxlc3Rv
bmVzICYga1dLRGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5n
KQotICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0UGFpbnRBZnRlclN1cHBy
ZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZzsKKyAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29y
ZTo6RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKTsKICAg
ICBpZiAod2tNaWxlc3RvbmVzICYga1dLRGlkUmVuZGVyU2lnbmlmaWNhbnRBbW91bnRPZlRleHQp
Ci0gICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkUmVuZGVyU2lnbmlmaWNhbnRBbW91
bnRPZlRleHQ7CisgICAgICAgIG1pbGVzdG9uZXMuYWRkKFdlYkNvcmU6OkRpZFJlbmRlclNpZ25p
ZmljYW50QW1vdW50T2ZUZXh0KTsKICAgICAKICAgICByZXR1cm4gbWlsZXN0b25lczsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAyMzgwMjYpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludDNE
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0xh
eW91dE1pbGVzdG9uZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1DQUxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0yNjUs
OCArMjY1LDggQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxUcmFuc2FjdGlvbkNhbGxiYWNr
SUQ+JiBjYWxsYmFja0lEcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tJRHM7IH0KICAgICB2
b2lkIHNldENhbGxiYWNrSURzKFZlY3RvcjxUcmFuc2FjdGlvbkNhbGxiYWNrSUQ+JiYgY2FsbGJh
Y2tJRHMpIHsgbV9jYWxsYmFja0lEcyA9IFdURk1vdmUoY2FsbGJhY2tJRHMpOyB9CiAKLSAgICBX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIG5ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMoKSBj
b25zdCB7IHJldHVybiBtX25ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXM7IH0KLSAgICB2b2lk
IHNldE5ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
cyBtaWxlc3RvbmVzKSB7IG1fbmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyA9IG1pbGVzdG9u
ZXM7IH0KKyAgICBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBuZXdseVJlYWNo
ZWRMYXlvdXRNaWxlc3RvbmVzKCkgY29uc3QgeyByZXR1cm4gbV9uZXdseVJlYWNoZWRMYXlvdXRN
aWxlc3RvbmVzOyB9CisgICAgdm9pZCBzZXROZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzKE9w
dGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpIHsgbV9uZXdseVJl
YWNoZWRMYXlvdXRNaWxlc3RvbmVzID0gbWlsZXN0b25lczsgfQogCiAgICAgYm9vbCBoYXNFZGl0
b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9lZGl0b3JTdGF0ZTsgfQogICAgIGNvbnN0IEVk
aXRvclN0YXRlJiBlZGl0b3JTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdG9yU3RhdGUudmFs
dWUoKTsgfQpAQCAtMzAyLDcgKzMwMiw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9yZW5k
ZXJUcmVlU2l6ZSB7IDAgfTsKICAgICB1aW50NjRfdCBtX3RyYW5zYWN0aW9uSUQgeyAwIH07CiAg
ICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlEIHsgQWN0aXZp
dHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB9OwotICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9u
ZXMgbV9uZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzIHsgMCB9OworICAgIE9wdGlvblNldDxX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1fbmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lczsK
ICAgICBib29sIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2VzcyB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X2FsbG93c1VzZXJTY2FsaW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fYXZvaWRzVW5zYWZlQXJl
YSB7IHRydWUgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk4Myw3ICsyOTgzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldEFsd2F5c1Nob3dzVmVydGljYQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVy
dGljYWxTY3JvbGxlciksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omxpc3Rl
bkZvckxheW91dE1pbGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVz
KQordm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0
PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykKIHsKICAgICBpZiAoIWlzVmFs
aWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzk5NywxNiArMzk5NywxNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRM
YXlvdXRGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoKQogewotICAgIGRpZFJlYWNoTGF5b3V0TWls
ZXN0b25lKERpZEZpcnN0TGF5b3V0IHwgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0IHwg
RGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRocmVzaG9sZCk7CisgICAgZGlkUmVh
Y2hMYXlvdXRNaWxlc3RvbmUoeyBEaWRGaXJzdExheW91dCwgRGlkRmlyc3RWaXN1YWxseU5vbkVt
cHR5TGF5b3V0LCBEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkIH0p
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUodWludDMy
X3QgbGF5b3V0TWlsZXN0b25lcykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWFjaExheW91dE1p
bGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBsYXlvdXRNaWxlc3Rv
bmVzKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7
CiAKICAgICBpZiAobV9sb2FkZXJDbGllbnQpCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRS
ZWFjaExheW91dE1pbGVzdG9uZSgqdGhpcywgc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4o
bGF5b3V0TWlsZXN0b25lcykpOwotICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+cmVuZGVyaW5nUHJv
Z3Jlc3NEaWRDaGFuZ2UoKnRoaXMsIHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91
dE1pbGVzdG9uZXMpKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlYWNoTGF5b3V0TWls
ZXN0b25lKCp0aGlzLCBsYXlvdXRNaWxlc3RvbmVzKTsKKyAgICBtX25hdmlnYXRpb25DbGllbnQt
PnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKCp0aGlzLCBsYXlvdXRNaWxlc3RvbmVzKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTgxMyw3
ICs4MTMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXI7IH0KICAg
ICBib29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWx3
YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyOyB9CiAKLSAgICB2b2lkIGxpc3RlbkZvckxheW91dE1p
bGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CisgICAgdm9pZCBsaXN0ZW5Gb3JM
YXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KTsKIAog
ICAgIGJvb2wgaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbkZy
YW1lSGFzSG9yaXpvbnRhbFNjcm9sbGJhcjsgfQogICAgIGJvb2wgaGFzVmVydGljYWxTY3JvbGxi
YXIoKSBjb25zdCB7IHJldHVybiBtX21haW5GcmFtZUhhc1ZlcnRpY2FsU2Nyb2xsYmFyOyB9CkBA
IC0xMjg3LDcgKzEyODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcldoZWVsRXZlbnRUZXN0
VHJpZ2dlcigpOwogICAgIHZvaWQgY2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShXVEY6
OkZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKIAotICAgIHZvaWQgZGlk
UmVhY2hMYXlvdXRNaWxlc3RvbmUodWludDMyX3QgbGF5b3V0TWlsZXN0b25lcyk7CisgICAgdm9p
ZCBkaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0
b25lPik7CiAKICAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpOwogCkBAIC0yMDIw
LDcgKzIwMjAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9hbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlciB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Fsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxl
ciB7IGZhbHNlIH07CiAKLSAgICBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIG1fb2JzZXJ2ZWRM
YXlvdXRNaWxlc3RvbmVzIHsgMCB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmU+IG1fb2JzZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzOwogCiAgICAgYm9vbCBtX3N1cHByZXNz
U2Nyb2xsYmFyQW5pbWF0aW9ucyB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIzODAyNikK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29y
a2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7
CiAgICAgRGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBEaWRGaXJzdExheW91
dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAg
ICAgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEaWRSZWFjaExheW91dE1pbGVzdG9u
ZSh1aW50MzJfdCB0eXBlKQorICAgIERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxX
ZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1pbGVzdG9uZXMpCiAgICAgRGlkUmVjZWl2
ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIHRpdGxlLCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIERpZFJ1bklu
c2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUxvYWRl
ckNsaWVudC5oCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNp
bmNsdWRlICJQbHVnaW5Nb2R1bGVJbmZvLmgiCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91
dE1pbGVzdG9uZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJDb3JlOjpM
YXlvdXRNaWxlc3RvbmVzKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hMYXlvdXRNaWxl
c3RvbmUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lPikgeyB9CiAgICAgdmlydHVhbCBib29sIHNob3VsZEtlZXBDdXJyZW50QmFja0Zvcndh
cmRMaXN0SXRlbUluTGlzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYpIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgcHJvY2Vz
c0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgVmVjdG9yPFJlZjxXZWJLaXQ6Oldl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAkocmV2aXNpb24gMjM4MDI2KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0RhdGEuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg3LDcgKzg3LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgQVBJOjpPYmplY3Qq
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSB7IH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5nZSkg
eyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOyB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24g
MjM4MDI2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTEzOSw3ICsxMTM5LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVy
Q2xpZW50KFdLUGFnZVJlZgogICAgICAgICAgICAgbV9jbGllbnQuZGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0Rm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAg
ICB2b2lkIGRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdlYlBhZ2VQcm94eSYgcGFnZSwgTGF5b3V0
TWlsZXN0b25lcyBtaWxlc3RvbmVzKSBvdmVycmlkZQorICAgICAgICB2b2lkIGRpZFJlYWNoTGF5
b3V0TWlsZXN0b25lKFdlYlBhZ2VQcm94eSYgcGFnZSwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91
dE1pbGVzdG9uZT4gbWlsZXN0b25lcykgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5kaWRMYXlvdXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE5
MCwxMSArMTE5MCwxMSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVm
CiAgICAgLy8gSXQgd291bGQgYmUgbmljZSB0byBnZXQgcmlkIG9mIHRoaXMgY29kZSBhbmQgdHJh
bnNpdGlvbiBhbGwgY2xpZW50cyB0byB1c2luZyBkaWRMYXlvdXQgaW5zdGVhZCBvZgogICAgIC8v
IGRpZEZpcnN0TGF5b3V0SW5GcmFtZSBhbmQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
SW5GcmFtZS4gSW4gdGhlIG1lYW50aW1lLCB0aGlzIGlzIHJlcXVpcmVkCiAgICAgLy8gZm9yIGJh
Y2t3YXJkcyBjb21wYXRpYmlsaXR5LgotICAgIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbWls
ZXN0b25lcyA9IDA7CisgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWls
ZXN0b25lczsKICAgICBpZiAobG9hZGVyQ2xpZW50LT5jbGllbnQoKS5kaWRGaXJzdExheW91dEZv
ckZyYW1lKQotICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0Owor
ICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdExheW91dCk7CiAgICAgaWYg
KGxvYWRlckNsaWVudC0+Y2xpZW50KCkuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUpCi0gICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0OworICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQpOwogCiAgICAgaWYgKG1pbGVzdG9uZXMpCiAgICAgICAgIHdl
YlBhZ2VQcm94eS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxh
eW91dE1pbGVzdG9uZXMobWlsZXN0b25lcyksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOwpAQCAt
MjE0MCw3ICsyMTQwLDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1Bh
ZwogICAgICAgICAgICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbih0b0FQSSgm
cGFnZSksIHRvQVBJKG5hdmlnYXRpb24pLCB0b0FQSShuYXZpZ2F0aW9uVHlwZSksIHRvQVBJKHVz
ZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJQYWdlUHJveHkmIHBh
Z2UsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykgb3ZlcnJpZGUKKyAgICAg
ICAgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJQYWdlUHJveHkmIHBhZ2UsIE9w
dGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQucmVuZGVyaW5nUHJvZ3Jlc3NEaWRD
aGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVJlbmRlcmluZ1By
b2dyZXNzRXZlbnRzSW50ZXJuYWwuaAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSw5IEBACiAKICNpbmNsdWRlICJXS1BhZ2VSZW5k
ZXJpbmdQcm9ncmVzc0V2ZW50cy5oIgogCi0jaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3Rv
bmVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KIAotc3RhdGljIGlu
bGluZSBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBwYWdlUmVuZGVyaW5nUHJvZ3Jlc3NF
dmVudHMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQorc3RhdGljIGlubGlu
ZSBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBwYWdlUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykKIHsKICAg
ICBXS1BhZ2VSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVudHMgPSAwOwogICAgIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZp
c2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NzAxLDMwICs0NzAxLDMwIEBAIC0gKEJPT0wpX25l
dHdvcmtSZXF1ZXN0c0luUHJvZ3Jlc3MKICAgICByZXR1cm4gX3BhZ2UtPnBhZ2VMb2FkU3RhdGUo
KS5uZXR3b3JrUmVxdWVzdHNJblByb2dyZXNzKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgV2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lcyBsYXlvdXRNaWxlc3RvbmVzKF9XS1JlbmRlcmluZ1Byb2dyZXNz
RXZlbnRzIGV2ZW50cykKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcyhfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyBldmVu
dHMpCiB7Ci0gICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzID0gMDsKKyAg
ICBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzOwogCiAgICAg
aWYgKGV2ZW50cyAmIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRGaXJzdExheW91dCkKLSAgICAg
ICAgbWlsZXN0b25lcyB8PSBXZWJDb3JlOjpEaWRGaXJzdExheW91dDsKKyAgICAgICAgbWlsZXN0
b25lcy5hZGQoV2ViQ29yZTo6RGlkRmlyc3RMYXlvdXQpOwogCiAgICAgaWYgKGV2ZW50cyAmIF9X
S1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCi0gICAg
ICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
OworICAgICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXQpOwogCiAgICAgaWYgKGV2ZW50cyAmIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRG
aXJzdFBhaW50V2l0aFNpZ25pZmljYW50QXJlYSkKLSAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJD
b3JlOjpEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkOworICAgICAg
ICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNB
cmVhVGhyZXNob2xkKTsKIAogICAgIGlmIChldmVudHMgJiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2
ZW50UmVhY2hlZFNlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplVGhyZXNob2xkKQotICAg
ICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OlJlYWNoZWRTZXNzaW9uUmVzdG9yYXRpb25SZW5k
ZXJUcmVlU2l6ZVRocmVzaG9sZDsKKyAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29yZTo6UmVh
Y2hlZFNlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplVGhyZXNob2xkKTsKIAogICAgIGlm
IChldmVudHMgJiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50Rmlyc3RMYXlvdXRBZnRlclN1cHBy
ZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZykKLSAgICAgICAgbWlsZXN0b25lcyB8PSBXZWJDb3Jl
OjpEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nOworICAg
ICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdExheW91dEFmdGVyU3VwcHJlc3Nl
ZEluY3JlbWVudGFsUmVuZGVyaW5nKTsKIAogICAgIGlmIChldmVudHMgJiBfV0tSZW5kZXJpbmdQ
cm9ncmVzc0V2ZW50Rmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5n
KQotICAgICAgICBtaWxlc3RvbmVzIHw9IFdlYkNvcmU6OkRpZEZpcnN0UGFpbnRBZnRlclN1cHBy
ZXNzZWRJbmNyZW1lbnRhbFJlbmRlcmluZzsKKyAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29y
ZTo6RGlkRmlyc3RQYWludEFmdGVyU3VwcHJlc3NlZEluY3JlbWVudGFsUmVuZGVyaW5nKTsKIAog
ICAgIGlmIChldmVudHMgJiBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50RGlkUmVuZGVyU2lnbmlm
aWNhbnRBbW91bnRPZlRleHQpCi0gICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29yZTo6RGlkUmVu
ZGVyU2lnbmlmaWNhbnRBbW91bnRPZlRleHQ7CisgICAgICAgIG1pbGVzdG9uZXMuYWRkKFdlYkNv
cmU6OkRpZFJlbmRlclNpZ25pZmljYW50QW1vdW50T2ZUZXh0KTsKIAogICAgIHJldHVybiBtaWxl
c3RvbmVzOwogfQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgJKHJldmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRGYWlsTmF2aWdhdGlvbldpdGhFcnJvcihX
ZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgICAgIHZv
aWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbihXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRp
b24qLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
IAotICAgICAgICB2b2lkIHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYs
IFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHJlbmRl
cmluZ1Byb2dyZXNzRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYsIE9wdGlvblNldDxXZWJDb3JlOjpM
YXlvdXRNaWxlc3RvbmU+KSBvdmVycmlkZTsKIAogICAgICAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJQYWdlUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5Jikgb3ZlcnJpZGU7CiAgICAgICAgIGJvb2wgcHJvY2Vzc0RpZFRlcm1pbmF0ZShXZWJQ
YWdlUHJveHkmLCBQcm9jZXNzVGVybWluYXRpb25SZWFzb24pIG92ZXJyaWRlOwpJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2
aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NTQsNyArODU0LDcgQEAgdm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmll
dzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjp3cmFwcGVyKG5hdmlnYXRp
b24pIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb246dG9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlKG5hdmlnYXRpb25UeXBlKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0
aW9uQ2xpZW50OjpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJQYWdlUHJveHkmLCBXZWJD
b3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMpCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViUGFn
ZVByb3h5JiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0
b25lcykKIHsKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3UmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UpCiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDb21taXRMYXllclRyZWUoY28KICAgICBwYWdlQ2xpZW50KCkuZGlk
Q29tbWl0TGF5ZXJUcmVlKGxheWVyVHJlZVRyYW5zYWN0aW9uKTsKIAogICAgIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBzcGVjaWFsIG1lY2hhbmlzbSBhbmQgZm9sZCBpdCBpbnRvIHRoZSB0cmFuc2Fj
dGlvbidzIGxheW91dCBtaWxlc3RvbmVzLgotICAgIGlmICgobV9vYnNlcnZlZExheW91dE1pbGVz
dG9uZXMgJiBXZWJDb3JlOjpSZWFjaGVkU2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemVU
aHJlc2hvbGQpICYmICFtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkCisgICAgaWYgKG1fb2Jz
ZXJ2ZWRMYXlvdXRNaWxlc3RvbmVzLmNvbnRhaW5zKFdlYkNvcmU6OlJlYWNoZWRTZXNzaW9uUmVz
dG9yYXRpb25SZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCkgJiYgIW1faGl0UmVuZGVyVHJlZVNpemVU
aHJlc2hvbGQKICAgICAgICAgJiYgZXhjZWVkc1JlbmRlclRyZWVTaXplU2l6ZVRocmVzaG9sZCht
X3Nlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplLCBsYXllclRyZWVUcmFuc2FjdGlvbi5y
ZW5kZXJUcmVlU2l6ZSgpKSkgewogICAgICAgICBtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNob2xk
ID0gdHJ1ZTsKICAgICAgICAgZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoV2ViQ29yZTo6UmVhY2hl
ZFNlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplVGhyZXNob2xkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAy
MzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ3LDcgKzI0
Nyw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWQKICAgICBtX2Ns
aWVudC5kaWRMYXlvdXRGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLXZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVy
Q2xpZW50OjpkaWRSZWFjaExheW91dE1pbGVzdG9uZShXZWJQYWdlJiBwYWdlLCBMYXlvdXRNaWxl
c3RvbmVzIG1pbGVzdG9uZXMsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQordm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdl
YlBhZ2UmIHBhZ2UsIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9u
ZXMsIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9jbGllbnQu
ZGlkTGF5b3V0KQogICAgICAgICByZXR1cm47CkBAIC0zNjMsMTMgKzM2MywxMyBAQCBTdHJpbmcg
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Ojp1CiAgICAgcmV0dXJuIHRvSW1wbCh1c2Vy
QWdlbnQpLT5zdHJpbmcoKTsKIH0KIAotTGF5b3V0TWlsZXN0b25lcyBJbmplY3RlZEJ1bmRsZVBh
Z2VMb2FkZXJDbGllbnQ6OmxheW91dE1pbGVzdG9uZXMoKSBjb25zdAorT3B0aW9uU2V0PFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZT4gSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpsYXlv
dXRNaWxlc3RvbmVzKCkgY29uc3QKIHsKLSAgICBMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMg
PSAwOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXM7
CiAgICAgaWYgKG1fY2xpZW50LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUpCi0gICAgICAgIG1pbGVz
dG9uZXMgfD0gV2ViQ29yZTo6RGlkRmlyc3RMYXlvdXQ7CisgICAgICAgIG1pbGVzdG9uZXMuYWRk
KFdlYkNvcmU6OkRpZEZpcnN0TGF5b3V0KTsKICAgICBpZiAobV9jbGllbnQuZGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUpCi0gICAgICAgIG1pbGVzdG9uZXMgfD0gV2ViQ29y
ZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0OworICAgICAgICBtaWxlc3RvbmVzLmFk
ZChXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOwogICAgIHJldHVybiBt
aWxlc3RvbmVzOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmlyc3RMYXlv
dXRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShX
ZWJQYWdlJiwgV2ViRnJhbWUmLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRMYXlvdXRGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdlYlBhZ2UmLCBXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmVzLCBSZWZQdHI8QVBJOjpPYmplY3Q+Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRS
ZWFjaExheW91dE1pbGVzdG9uZShXZWJQYWdlJiwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZT4sIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGlk
Q2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJQYWdlJiwgV2ViRnJhbWUmLCBXZWJDb3JlOjpE
T01XcmFwcGVyV29ybGQmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENhbmNlbENsaWVudFJlZGly
ZWN0Rm9yRnJhbWUoV2ViUGFnZSYsIFdlYkZyYW1lJikgb3ZlcnJpZGU7CkBAIC04OCw3ICs4OCw3
IEBAIHB1YmxpYzoKIAogICAgIFdURjo6U3RyaW5nIHVzZXJBZ2VudEZvclVSTChXZWJGcmFtZSYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgV2ViQ29yZTo6TGF5
b3V0TWlsZXN0b25lcyBsYXlvdXRNaWxlc3RvbmVzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgT3B0
aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcygpIGNvbnN0
IG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0FQSUluamVjdGVkQnVuZGxlUGFnZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9BUEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDIzODAyNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvQVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDcgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmly
c3RMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJiwgUmVm
UHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1l
JiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRMYXlvdXRG
b3JGcmFtZShXZWJLaXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJikgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIGRpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdlYktpdDo6V2ViUGFnZSYsIFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZXMsIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoV2ViS2l0OjpXZWJQYWdlJiwgT3B0aW9u
U2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4sIFJlZlB0cjxBUEk6Ok9iamVjdD4mKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYktpdDo6
V2ViUGFnZSYsIFdlYktpdDo6V2ViRnJhbWUmLCBXZWJDb3JlOjpET01XcmFwcGVyV29ybGQmKSB7
IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZShXZWJL
aXQ6OldlYlBhZ2UmLCBXZWJLaXQ6OldlYkZyYW1lJikgeyB9CkBAIC05Nyw3ICs5Nyw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcmFtZShXZWJLaXQ6OldlYlBhZ2Um
LCBXZWJLaXQ6OldlYkZyYW1lJikgeyB9CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdl
bnRGb3JVUkwoV2ViS2l0OjpXZWJGcmFtZSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IHsg
cmV0dXJuIFdURjo6U3RyaW5nKCk7IH0KIAotICAgIHZpcnR1YWwgV2ViQ29yZTo6TGF5b3V0TWls
ZXN0b25lcyBsYXlvdXRNaWxlc3RvbmVzKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1
YWwgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcygp
IGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5qZWN0ZWRCdW5k
bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjM4MDI2
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMyLDcgKzYzMiw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlUGFnZVRyYW4KICAgICBtX2RpZENvbXBsZXRlUGFnZVRy
YW5zaXRpb24gPSB0cnVlOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUo
T3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykKIHsKICAgICBX
ZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwogICAgIGlmICghd2ViUGFnZSkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIGZpbmFsOwogICAgIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkKCkgZmluYWw7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVhY2hMYXlvdXRN
aWxlc3RvbmUoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcykgZmluYWw7CisgICAgdm9pZCBkaXNw
YXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxl
c3RvbmU+KSBmaW5hbDsKICAgICB2b2lkIGRpc3BhdGNoRGlkTGF5b3V0KCkgZmluYWw7CiAKICAg
ICBXZWJDb3JlOjpGcmFtZSogZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmln
YXRpb25BY3Rpb24mKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NyArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXllckZsdXNoVGhyb3R0bGVTdGF0
ZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lcy5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVl
bi5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNldFNo
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
ZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVz
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkaXNwYXRjaERpZFJlYWNoTGF5
b3V0TWlsZXN0b25lKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSB7IHJldHVy
biBmYWxzZTsgfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgLy8gVXNlZCBieSBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTU2LDcg
KzU1Niw3IEBAIFdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWcKICAgICBz
ZXRNdXRlZChwYXJhbWV0ZXJzLm11dGVkKTsKIAogICAgIC8vIFdlIHVzZSB0aGUgRGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0IG1pbGVzdG9uZSB0byBkZXRlcm1pbmUgd2hlbiB0byB1bmZy
ZWV6ZSB0aGUgbGF5ZXIgdHJlZS4KLSAgICBtX3BhZ2UtPmFkZExheW91dE1pbGVzdG9uZXMoRGlk
Rmlyc3RMYXlvdXQgfCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOworICAgIG1fcGFn
ZS0+YWRkTGF5b3V0TWlsZXN0b25lcyh7IERpZEZpcnN0TGF5b3V0LCBEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQgfSk7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCk7CiAgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKQEAgLTE5
MzEsMTEgKzE5MzEsMTEgQEAgdm9pZCBXZWJQYWdlOjp2aWV3cG9ydFByb3BlcnRpZXNEaWRDaGFu
ZwogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyh1
aW50MzJfdCBtaWxlc3RvbmVzKQordm9pZCBXZWJQYWdlOjpsaXN0ZW5Gb3JMYXlvdXRNaWxlc3Rv
bmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpCiB7CiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3BhZ2UtPmFkZExheW91dE1p
bGVzdG9uZXMoc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obWlsZXN0b25lcykpOworICAg
IG1fcGFnZS0+YWRkTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKTsKIH0KIAogdm9pZCBXZWJQ
YWdlOjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlv
bnMpCkBAIC02MDMwLDcgKzYwMzAsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlbW92ZUFsbFVzZXJDb250
ZW50KCkKICAgICBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+cmVtb3ZlQWxsVXNlckNvbnRlbnQo
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdl
YkNvcmU6OkxheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK3ZvaWQgV2ViUGFnZTo6ZGlzcGF0
Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0
b25lPiBtaWxlc3RvbmVzKQogewogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAg
ICAgaW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRSZWFjaExheW91dE1pbGVzdG9uZSgq
dGhpcywgbWlsZXN0b25lcywgdXNlckRhdGEpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NjksNyAr
NDY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmKTsKICAgICBXZWJDb3JlOjpJbnRTaXplIGZpeGVkTGF5b3V0U2l6ZSgpIGNv
bnN0OwogCi0gICAgdm9pZCBsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKHVpbnQzMl90IC8qIExh
eW91dE1pbGVzdG9uZXMgKi8pOworICAgIHZvaWQgbGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhP
cHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CiAKICAgICB2b2lkIHNldFN1cHBy
ZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sKTsKICAgICAKQEAgLTEwMzIsNyArMTAzMiw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgc291cmNl
LCBXZWJDb3JlOjpVc2VyQ29udGVudEluamVjdGVkRnJhbWVzKTsKICAgICB2b2lkIHJlbW92ZUFs
bFVzZXJDb250ZW50KCk7CiAKLSAgICB2b2lkIGRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3Rv
bmUoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CisgICAgdm9pZCBkaXNwYXRjaERpZFJlYWNo
TGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KTsKIAog
ICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjM1LDcgKzIzNSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0VXNlRml4ZWRMYXlvdXQoYm9v
bCBmaXhlZCkKICAgICBTZXRGaXhlZExheW91dFNpemUoV2ViQ29yZTo6SW50U2l6ZSBzaXplKQot
ICAgIExpc3RlbkZvckxheW91dE1pbGVzdG9uZXModWludDMyX3QgbWlsZXN0b25lcykKKyAgICBM
aXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3Rv
bmU+IGxheW91dE1pbGVzdG9uZXMpCiAgICAgU2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25z
KGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQogCiAgICAgU2V0RW5hYmxlVmVydGljYWxSdWJiZXJC
YW5kaW5nKGJvb2wgZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKQpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgJKHJldmlzaW9u
IDIzODAyNikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYs
NyArMTA2LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgYWRqdXN0TGF5ZXJGbHVzaFRocm90dGxp
bmcoV2ViQ29yZTo6TGF5ZXJGbHVzaFRocm90dGxlU3RhdGU6OkZsYWdzKSBvdmVycmlkZTsKIAot
ICAgIGJvb2wgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmVzKSBvdmVycmlkZTsKKyAgICBib29sIGRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxl
c3RvbmUoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4pIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCB1cGRhdGVTY3JvbGxlZEV4cG9zZWRSZWN0KCk7CiAgICAgdm9pZCB1cGRhdGVSb290
TGF5ZXJzKCk7CkBAIC0xNjUsNyArMTY1LDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8UmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRyYW5zYWN0aW9uQ2FsbGJhY2tJRD4gbV9wZW5kaW5nQ2Fs
bGJhY2tJRHM7CiAgICAgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIG1fYWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEIHsgQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB9OwogCi0gICAgV2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lcyBtX3BlbmRpbmdOZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzIHsg
MCB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1fcGVuZGluZ05l
d2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXM7CiAKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiBtX2NvbnRlbnRMYXllciB7IG51bGxwdHIgfTsKICAgICBXZWJDb3JlOjpHcmFwaGljc0xheWVy
KiBtX3ZpZXdPdmVybGF5Um9vdExheWVyIHsgbnVsbHB0ciB9OwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQkocmV2aXNpb24g
MjM4MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNzAs
NyArMzcwLDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYQogICAg
IG1fd2ViUGFnZS53aWxsQ29tbWl0TGF5ZXJUcmVlKGxheWVyVHJhbnNhY3Rpb24pOwogCiAgICAg
bGF5ZXJUcmFuc2FjdGlvbi5zZXROZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzKG1fcGVuZGlu
Z05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMpOwotICAgIG1fcGVuZGluZ05ld2x5UmVhY2hl
ZExheW91dE1pbGVzdG9uZXMgPSAwOworICAgIG1fcGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1p
bGVzdG9uZXMgPSB7IH07CiAKICAgICBsYXllclRyYW5zYWN0aW9uLnNldEFjdGl2aXR5U3RhdGVD
aGFuZ2VJRChtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCk7CiAgICAgbV9hY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzOwpAQCAtNTA2LDkgKzUwNiw5
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmFkZFRyYW4KICAgICBzY2hlZHVs
ZUNvbXBvc2l0aW5nTGF5ZXJGbHVzaCgpOwogfQogCi1ib29sIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdlYkNvcmU6OkxheW91dE1p
bGVzdG9uZXMgbGF5b3V0TWlsZXN0b25lcykKK2Jvb2wgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoT3B0aW9uU2V0PFdlYkNvcmU6Okxh
eW91dE1pbGVzdG9uZT4gbGF5b3V0TWlsZXN0b25lcykKIHsKLSAgICBtX3BlbmRpbmdOZXdseVJl
YWNoZWRMYXlvdXRNaWxlc3RvbmVzIHw9IGxheW91dE1pbGVzdG9uZXM7CisgICAgbV9wZW5kaW5n
TmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcy5hZGQobGF5b3V0TWlsZXN0b25lcyk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5oCShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEuaAkod29ya2luZyBjb3B5KQpA
QCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBhdHRhY2hWaWV3T3ZlcmxheUdy
YXBoaWNzTGF5ZXIoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3Zl
cnJpZGU7CiAKLSAgICBib29sIGRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUoV2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lcykgb3ZlcnJpZGU7CisgICAgYm9vbCBkaXNwYXRjaERpZFJlYWNo
TGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSBvdmVy
cmlkZTsKIAogICAgIGJvb2wgZmx1c2hMYXllcnMoKTsKIApAQCAtMTYzLDcgKzE2Myw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3RWaWV3U2l6ZUZvclNjYWxlVG9GaXQ7
CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2xhc3REb2N1bWVudFNpemVGb3JTY2FsZVRvRml0Owog
Ci0gICAgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyBtX3BlbmRpbmdOZXdseVJlYWNoZWRMYXlv
dXRNaWxlc3RvbmVzIHsgMCB9OworICAgIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3Rv
bmU+IG1fcGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXM7CiAgICAgVmVjdG9yPENh
bGxiYWNrSUQ+IG1fcGVuZGluZ0NhbGxiYWNrSURzOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OlJ1bkxvb3BPYnNlcnZlcj4gbV9sYXllckZsdXNoUnVuTG9vcE9ic2VydmVyOwpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQkocmV2aXNpb24gMjM4
MDI2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MTEsNyArNDExLDcgQEAg
dm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6c2VuZAogICAgICAgICByZXR1cm47
CiAKICAgICBtX3dlYlBhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWFjaExh
eW91dE1pbGVzdG9uZShtX3BlbmRpbmdOZXdseVJlYWNoZWRMYXlvdXRNaWxlc3RvbmVzKSk7Ci0g
ICAgbV9wZW5kaW5nTmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyA9IDA7CisgICAgbV9wZW5k
aW5nTmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyA9IHsgfTsKIH0KIAogdm9pZCBUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YWRkVHJhbnNhY3Rpb25DYWxsYmFja0lEKENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKQEAgLTg5MCw5ICs4OTAsOSBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhOjphZGRGCiAgICAgbV9sYXllckhvc3RpbmdDb250ZXh0LT5zZXRGZW5jZVBv
cnQoZmVuY2VQb3J0LnNlbmRSaWdodCgpKTsKIH0KIAotYm9vbCBUaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYTo6ZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShXZWJDb3JlOjpMYXlv
dXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9uZXMpCitib29sIFRpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhOjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKE9wdGlvblNldDxXZWJD
b3JlOjpMYXlvdXRNaWxlc3RvbmU+IGxheW91dE1pbGVzdG9uZXMpCiB7Ci0gICAgbV9wZW5kaW5n
TmV3bHlSZWFjaGVkTGF5b3V0TWlsZXN0b25lcyB8PSBsYXlvdXRNaWxlc3RvbmVzOworICAgIG1f
cGVuZGluZ05ld2x5UmVhY2hlZExheW91dE1pbGVzdG9uZXMuYWRkKGxheW91dE1pbGVzdG9uZXMp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0xMS0wOSAgQW50dGkgS29pdmlz
dG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIE9wdGlvblNldCBmb3IgbGF5b3V0
IG1pbGVzdG9uZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5MTQ3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKToKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChjb3JlTGF5b3V0TWlsZXN0b25lcyk6Cisg
ICAgICAgIChraXRMYXlvdXRNaWxlc3RvbmVzKToKKyAgICAgICAgKC1bV2ViVmlldyBfY2FjaGVG
cmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlld0ludGVybmFsLmg6CisKIDIwMTgtMTEtMDggIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJk
bmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBBZG9wdCBSZXZlYWwgRnJhbWV3b3JrIHRvIHJlcGxh
Y2UgTG9va3VwCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzODAy
NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
JikgZmluYWw7CiAgICAgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIGZpbmFs
OwogICAgIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgZmluYWw7Ci0gICAgdm9pZCBkaXNw
YXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpIGZp
bmFsOworICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgZmluYWw7CiAKICAgICBXZWJDb3JlOjpGcmFtZSog
ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpb25BY3Rpb24mKSBmaW5h
bDsKICAgICB2b2lkIGRpc3BhdGNoU2hvdygpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHJldmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC03OTMsNyArNzkzLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
aQogICAgIFttX3dlYkZyYW1lLT5fcHJpdmF0ZS0+aW50ZXJuYWxMb2FkRGVsZWdhdGUgd2ViRnJh
bWU6bV93ZWJGcmFtZS5nZXQoKSBkaWRGaW5pc2hMb2FkV2l0aEVycm9yOm5pbF07CiB9CiAKLXZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRNaWxlc3RvbmUo
TGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0
TWlsZXN0b25lPiBtaWxlc3RvbmVzKQogewogICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOwogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRl
SW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC02MDAsMTQgKzYw
MCwxOSBAQCBGaW5kT3B0aW9ucyBjb3JlT3B0aW9ucyhXZWJGaW5kT3B0aW9ucyBvCiAgICAgcmV0
dXJuIGZpbmRPcHRpb25zOwogfQogCi1MYXlvdXRNaWxlc3RvbmVzIGNvcmVMYXlvdXRNaWxlc3Rv
bmVzKFdlYkxheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKK09wdGlvblNldDxXZWJDb3JlOjpM
YXlvdXRNaWxlc3RvbmU+IGNvcmVMYXlvdXRNaWxlc3RvbmVzKFdlYkxheW91dE1pbGVzdG9uZXMg
bWlsZXN0b25lcykKIHsKLSAgICByZXR1cm4gKG1pbGVzdG9uZXMgJiBXZWJEaWRGaXJzdExheW91
dCA/IERpZEZpcnN0TGF5b3V0IDogMCkKLSAgICAgICAgfCAobWlsZXN0b25lcyAmIFdlYkRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCA/IERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCA6IDApCi0gICAgICAgIHwgKG1pbGVzdG9uZXMgJiBXZWJEaWRIaXRSZWxldmFudFJlcGFpbnRl
ZE9iamVjdHNBcmVhVGhyZXNob2xkID8gRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJl
YVRocmVzaG9sZCA6IDApOworICAgIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+
IGxheW91dE1pbGVzdG9uZTsKKyAgICBpZiAobWlsZXN0b25lcyAmIFdlYkRpZEZpcnN0TGF5b3V0
KQorICAgICAgICBsYXlvdXRNaWxlc3RvbmUuYWRkKERpZEZpcnN0TGF5b3V0KTsKKyAgICBpZiAo
bWlsZXN0b25lcyAmIFdlYkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCkKKyAgICAgICAg
bGF5b3V0TWlsZXN0b25lLmFkZChEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpOworICAg
IGlmIChtaWxlc3RvbmVzICYgV2ViRGlkSGl0UmVsZXZhbnRSZXBhaW50ZWRPYmplY3RzQXJlYVRo
cmVzaG9sZCkKKyAgICAgICAgbGF5b3V0TWlsZXN0b25lLmFkZChEaWRIaXRSZWxldmFudFJlcGFp
bnRlZE9iamVjdHNBcmVhVGhyZXNob2xkKTsKKyAgICByZXR1cm4gbGF5b3V0TWlsZXN0b25lOwog
fQogCi1XZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91dE1pbGVzdG9uZXMoTGF5b3V0TWlsZXN0
b25lcyBtaWxlc3RvbmVzKQorV2ViTGF5b3V0TWlsZXN0b25lcyBraXRMYXlvdXRNaWxlc3RvbmVz
KE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpCiB7CiAgICAg
cmV0dXJuIChtaWxlc3RvbmVzICYgRGlkRmlyc3RMYXlvdXQgPyBXZWJEaWRGaXJzdExheW91dCA6
IDApCiAgICAgICAgIHwgKG1pbGVzdG9uZXMgJiBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgPyBXZWJEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQgOiAwKQpAQCAtMzI5OSwxNCAr
MzMwNCwxNCBAQCAtICh2b2lkKV9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50CiAgICAg
Ly8gZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogICAgIFBhZ2UqIHBhZ2UgPSBjb3JlKHNl
bGYpOwogICAgIGlmIChwYWdlKSB7Ci0gICAgICAgIHVuc2lnbmVkIG1pbGVzdG9uZXMgPSBEaWRG
aXJzdExheW91dDsKKyAgICAgICAgT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4g
bWlsZXN0b25lcyB7IERpZEZpcnN0TGF5b3V0IH07CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LSAgICAgICAgbWlsZXN0b25lcyB8PSBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQ7Cisg
ICAgICAgIG1pbGVzdG9uZXMuYWRkKERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7CiAj
ZWxzZQogICAgICAgICBpZiAoY2FjaGUtPmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dElu
RnJhbWVGdW5jKQotICAgICAgICAgICAgbWlsZXN0b25lcyB8PSBEaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXQ7CisgICAgICAgICAgICBtaWxlc3RvbmVzLmFkZChEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQpOwogI2VuZGlmCi0gICAgICAgIHBhZ2UtPmFkZExheW91dE1pbGVzdG9u
ZXMoc3RhdGljX2Nhc3Q8TGF5b3V0TWlsZXN0b25lcz4obWlsZXN0b25lcykpOworICAgICAgICBw
YWdlLT5hZGRMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3SW50ZXJuYWwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXdJbnRlcm5hbC5o
CShyZXZpc2lvbiAyMzgwMjYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXdJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw3ICszOCw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL0ZpbmRPcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9IVE1MTWVkaWFFbGVtZW50RW51bXMuaD4KLSNpbXBvcnQgPFdlYkNv
cmUvTGF5b3V0TWlsZXN0b25lcy5oPgorI2ltcG9ydCA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUu
aD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRJbmRpY2F0b3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dEluZGljYXRv
cldpbmRvdy5oPgpAQCAtODgsOCArODgsOCBAQCBjbGFzcyBXZWJTZWxlY3Rpb25TZXJ2aWNlQ29u
dHJvbGxlcjsKIAogV2ViQ29yZTo6RmluZE9wdGlvbnMgY29yZU9wdGlvbnMoV2ViRmluZE9wdGlv
bnMgb3B0aW9ucyk7CiAKLVdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMgY29yZUxheW91dE1pbGVz
dG9uZXMoV2ViTGF5b3V0TWlsZXN0b25lcyk7Ci1XZWJMYXlvdXRNaWxlc3RvbmVzIGtpdExheW91
dE1pbGVzdG9uZXMoV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcyk7CitPcHRpb25TZXQ8V2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lPiBjb3JlTGF5b3V0TWlsZXN0b25lcyhXZWJMYXlvdXRNaWxlc3Rv
bmVzKTsKK1dlYkxheW91dE1pbGVzdG9uZXMga2l0TGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8
V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPik7CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFU
SVZFUykKIE9CSkNfQ0xBU1MgTlNUZXh0QWx0ZXJuYXRpdmVzOwpJbmRleDogU291cmNlL1dlYktp
dExlZ2FjeS93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kv
d2luL0NoYW5nZUxvZwkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTgtMTEtMDkg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBPcHRpb25T
ZXQgZm9yIGxheW91dCBtaWxlc3RvbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTE0NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0
TWlsZXN0b25lKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorCiAyMDE4LTExLTAxICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhIHN0b3JhZ2UgbGltaXQgZm9yIEluZGV4ZWREQgpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjM4MDI2KQorKysgU291cmNlL1dlYktpdExl
Z2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00ODIsNyArNDgyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGaQogICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkRmluaXNoTG9hZEZvckZy
YW1lKHdlYlZpZXcsIG1fd2ViRnJhbWUpOwogfQogCi12b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZFJlYWNoTGF5b3V0TWlsZXN0b25lKExheW91dE1pbGVzdG9uZXMgbWlsZXN0
b25lcykKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVhY2hMYXlvdXRN
aWxlc3RvbmUoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWlsZXN0b25lcykK
IHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIzODAyNikKKysrIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpIG92ZXJyaWRlOwogICAgIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaXNwYXRjaERpZFJl
YWNoTGF5b3V0TWlsZXN0b25lKFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMpIG92ZXJyaWRlOwor
ICAgIHZvaWQgZGlzcGF0Y2hEaWRSZWFjaExheW91dE1pbGVzdG9uZShPcHRpb25TZXQ8V2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lPikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc3BhdGNoRGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihjb25zdCBXZWJDb3JlOjpOYXZpZ2F0aW9uQWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Rm9ybVN0YXRlKiwgY29uc3QgV1RGOjpTdHJpbmcmIGZy
YW1lTmFtZSwgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKSBvdmVycmlkZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>