<?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>181236</bug_id>
          
          <creation_ts>2018-01-02 23:53:13 -0800</creation_ts>
          <short_desc>[Attachment Support] Add a way to write blob data to a file path from the UI process</short_desc>
          <delta_ts>2018-01-05 15:48:40 -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>HTML Editing</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>
          
          <blocked>181199</blocked>
    
    <blocked>181294</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1385389</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-02 23:53:13 -0800</bug_when>
    <thetext>Work towards &lt;https://bugs.webkit.org/show_bug.cgi?id=181199&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385547</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-03 12:42:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/36280928&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385839</commentid>
    <comment_count>2</comment_count>
      <attachid>330471</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-04 09:45:49 -0800</bug_when>
    <thetext>Created attachment 330471
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385841</commentid>
    <comment_count>3</comment_count>
      <attachid>330473</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-04 09:50:24 -0800</bug_when>
    <thetext>Created attachment 330473
Rebase on master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386314</commentid>
    <comment_count>4</comment_count>
      <attachid>330473</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-05 15:26:24 -0800</bug_when>
    <thetext>Comment on attachment 330473
Rebase on master

Thanks Brady!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386338</commentid>
    <comment_count>5</comment_count>
      <attachid>330473</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-05 15:48:39 -0800</bug_when>
    <thetext>Comment on attachment 330473
Rebase on master

Clearing flags on attachment: 330473

Committed r226470: &lt;https://trac.webkit.org/changeset/226470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1386340</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-05 15:48:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330471</attachid>
            <date>2018-01-04 09:45:49 -0800</date>
            <delta_ts>2018-01-04 09:50:22 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-181236-20180104094548.patch</filename>
            <type>text/plain</type>
            <size>31718</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2Mzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDM0YjliZDU2M2M5NWFi
M2NlYzk2NTg1MThlN2U5MmYxYmIyOGY3MS4uOTVmNGUxODkyZTI5ZDFkMTQwMTdhOGZkMGIwMzlk
NGJjMjkyMTBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAxLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEFkZCBhIHdheSB0byB3cml0ZSBibG9iIGRhdGEgdG8gYSBmaWxlIFVSTCBmcm9t
IHRoZSBVSSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODEyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd3JpdGluZyBhIGJsb2IgdG8gYSBkZXNpZ25hdGVkIGZp
bGUgcGF0aC4gU2VlIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4gTm8gbmV3IHRlc3Rz
LCBhcworICAgICAgICB0aGVyZSBjaGFuZ2UgaW4gYmVoYXZpb3IgeWV0LiBTZWUgcGFydCAyOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTk5LgorCisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ0F0dGFjaG1lbnRFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNl
ZEJsb2JJbmZvLmg6CisKKyAgICAgICAgUmVtb3ZlIFByb21pc2VkQmxvYkRhdGEgZW50aXJlbHku
IFRoaXMgd2FzIGFkZGVkIHdpdGggdGhlIHByZW1pc2Ugb2YgaGF2aW5nIHRoZSB3ZWIgcHJvY2Vz
cyBkZWxpdmVyIGJsb2IgZGF0YSB0bworICAgICAgICB0aGUgVUkgcHJvY2Vzcy4gSG93ZXZlciwg
dGhlIG5ldyBhcHByb2FjaCBJJ20gdGFraW5nIGp1c3QgaGFzIHRoZSBVSSBwcm9jZXNzIHRlbGwg
dGhlIG5ldHdvcmsgcHJvY2VzcyB0byB3cml0ZQorICAgICAgICBhIGJsb2IgdG8gYSBnaXZlbiBs
b2NhdGlvbiwgc28gYSBkYXRhIHN0cnVjdHVyZSB0byBkZWxpdmVyIGJsb2IgZGF0YSBvdmVyIElQ
QyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpQcm9taXNlZEJs
b2JEYXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByb21p
c2VkQmxvYkRhdGE6Omhhc0ZpbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UHJvbWlzZWRCbG9iRGF0YTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQcm9taXNlZEJsb2JEYXRhOjpmdWxmaWxscyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnBvcHVsYXRlQmxvYnNGb3JGaWxlV3JpdGluZyk6
CisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IGhlbHBlciB0byBidWlsZCBhIGxpc3Qgb2YgYmxv
YiBkYXRhIGZvciBmaWxlIHdyaXRpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlRmlsZVBh
dGhzT3JEYXRhQnVmZmVyc1RvRmlsZSk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IHN0YXRp
YyBoZWxwZXIgdG8gd3JpdGUgYmxvYiBkYXRhIChhIGxpc3Qgb2YgZmlsZSBwYXRocyBhbmQgZGF0
YSBidWZmZXJzKSB0byBhIGdpdmVuIGZpbGUgaGFuZGxlLgorICAgICAgICBBdXRvbWF0aWNhbGx5
IGNsb3NlcyB0aGUgZ2l2ZW4gZmlsZSBoYW5kbGUgdXBvbiBleGl0LgorCisgICAgICAgIChXZWJD
b3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKwor
ICAgICAgICBQdWxsIG91dCBjb21tb24gbG9naWMgaW4gd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMgYW5kIHdyaXRlQmxvYlRvRmlsZVBhdGggaW50byBoZWxwZXIgbWV0aG9kcyAoc2VlIGFib3Zl
KSwgYW5kCisgICAgICAgIHJlZmFjdG9yIGJvdGggbWV0aG9kcyB0byB1c2UgdGhlIGhlbHBlcnMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKwogMjAx
OC0wMS0wMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQXR0YWNobWVudCBTdXBwb3J0XSBDcmVhdGUgYXR0YWNobWVudCBlbGVtZW50cyB3aGVuIGRy
b3BwaW5nIGZpbGVzIG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA4YjViYzQ3YjU5OTE2ZjJkYjY1OWM4ZjFm
NWRiN2M4YmVlZDllMjhjLi4zZTExZjE5ZDMzMzk4MzU0YTZkZWVjMzcwZDc1YTY0NTFhMmQyZWI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE4LTAxLTA0ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRdIEFk
ZCBhIHdheSB0byB3cml0ZSBibG9iIGRhdGEgdG8gYSBmaWxlIFVSTCBmcm9tIHRoZSBVSSBwcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODEy
MzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
c3VwcG9ydCBmb3Igd3JpdGluZyBhIGJsb2IgdG8gYSBkZXNpZ25hdGVkIGZpbGUgcGF0aC4gSW4g
V2ViS2l0LCB0aGlzIGlzIG1haW5seSBwbHVtYmluZyB3cml0ZUJsb2JUb0ZpbGVQYXRoCisgICAg
ICAgIHRocm91Z2ggV2ViUGFnZVByb3h5IHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp3cml0ZUJsb2JUb0ZpbGVQYXRoKToK
KworICAgICAgICBDYWxsIG91dCB0byB0aGUgQmxvYlJlZ2lzdHJ5SW1wbCB0byB3cml0ZSBibG9i
cyB0byB0aGUgZmlsZSBwYXRoLiBBZGRpdGlvbmFsbHkgZ3JhbnQgc2FuZGJveCBleHRlbnNpb25z
IGZvciBhbnkKKyAgICAgICAgZmlsZS1iYWNrZWQgYmxvYiBwYXJ0cyBjb3JyZXNwb25kaW5nIHRv
IHRoZSBnaXZlbiBibG9iIFVSTC4KKworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpmaWxlc0luQmxvYik6CisKKyAgICAgICAgSW50cm9kdWNlIGEgdmVyc2lvbiBvZiBmaWxl
c0luQmxvYiB0aGF0IGRvZXNuJ3QgY2hlY2sgYWdhaW5zdCB0aGUgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuIFRoaXMgaXMgdXNlZAorICAgICAgICB3aGVuIHRoZSBVSSBwcm9jZXNzIGlz
IHRoZSBkcml2ZXIgZm9yIHdyaXRpbmcgYSBibG9iLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6
d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisKKyAgICAgICAgVGVtcG9yYXJpbHkgZ3JhbnQgc2FuZGJv
eCBhY2Nlc3MgdG8gdGhlIGdpdmVuIGZpbGUgcGF0aC4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9iSW5mbz46OmVu
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9iSW5mbz46OmRl
Y29kZSk6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9iRGF0YT46OmVu
Y29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9i
RGF0YT46OmRlY29kZSk6IERlbGV0ZWQuCisKKyAgICAgICAgUmVtb3ZlIFByb21pc2VkQmxvYkRh
dGEgKHNlZSBXZWJDb3JlL0NoYW5nZUxvZyBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCisKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzUHJveHk6OmRpZENsb3NlKToKKworICAgICAgICBJZiB0aGUgbmV0d29yayBwcm9j
ZXNzIGlzIHRlcm1pbmF0ZWQsIGZsdXNoIGFueSBwZW5kaW5nIGNhbGxiYWNrcyBpbiBtX3dyaXRl
QmxvYlRvRmlsZVBhdGhDYWxsYmFja01hcCwgcGFzc2luZworICAgICAgICBpbiBhIGZhaWx1cmUg
cmVzdWx0IChzdWNjZXNzIDo9IGZhbHNlKSBhbmQgY2xlYXJpbmcgdGhlIGNhbGxiYWNrIG1hcC4K
KworICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp3cml0ZUJsb2JUb0ZpbGVQ
YXRoKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkV3JpdGVCbG9i
VG9GaWxlUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCiAyMDE4LTAxLTAzICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtBdHRhY2htZW50IFN1cHBvcnRd
IENyZWF0ZSBhdHRhY2htZW50IGVsZW1lbnRzIHdoZW4gZHJvcHBpbmcgZmlsZXMgb24gaU9TCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGI2Y2U2YTJmNjE4ZDY5YmQ1
M2Y1MTFiMjZiZDA2Y2Y0ZGFmYWEwYTQuLjU1YmVlY2JjODQ4OTY2OTI5YzQ5NWE5NGYxNGZkYTc0
MjRhMzM1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xMjg5
LDEwICsxMjg5LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0F0dGFjaG1lbnRFbGVtZW50
KEZyYW1lJiBmcmFtZSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50JgogI2VuZGlmCiAKICAgICBhdXRv
JiBmaWxlID0gKmF0dGFjaG1lbnQuZmlsZSgpOwotICAgIGF1dG8gYmxvYlVSTCA9IGZpbGUudXJs
KCkuc3RyaW5nKCk7Ci0gICAgYm9vbCBpc0ZpbGVCYWNrZWQgPSAhZmlsZS5wYXRoKCkuaXNFbXB0
eSgpOwotICAgIGF1dG8gYmxvYlR5cGUgPSBpc0ZpbGVCYWNrZWQgPyBQcm9taXNlZEJsb2JUeXBl
OjpGaWxlQmFja2VkIDogUHJvbWlzZWRCbG9iVHlwZTo6RGF0YUJhY2tlZDsKLSAgICBtX2NsaWVu
dC5wcmVwYXJlVG9EcmFnUHJvbWlzZWRCbG9iKHsgYmxvYlVSTCwgZmlsZS50eXBlKCksIGZpbGUu
bmFtZSgpLCBibG9iVHlwZSwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSB9KTsKKyAg
ICBtX2NsaWVudC5wcmVwYXJlVG9EcmFnUHJvbWlzZWRCbG9iKHsgZmlsZS51cmwoKSwgZmlsZS50
eXBlKCksIGZpbGUubmFtZSgpLCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhIH0pOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEJsb2JJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEJs
b2JJbmZvLmgKaW5kZXggYWU4NDZmYzU3MTFkZDc1YjNiN2YxMmIyMzA3NTBmNTcwZDYwY2U4MC4u
ODYyOWVkMWFmZjliMDQ3OGMwODVhMTlkOGNkYzM5NGRmNzQ4NDc4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRCbG9iSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQmxvYkluZm8uaApAQCAtMjUsMTcgKzI1LDE1IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBjbGFzcyBQcm9taXNlZEJsb2JUeXBlIHsgRGF0YUJhY2tlZCwgRmlsZUJh
Y2tlZCB9OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUHJvbWlz
ZWRCbG9iSW5mbyB7Ci0gICAgU3RyaW5nIGJsb2JVUkw7CisgICAgVVJMIGJsb2JVUkw7CiAgICAg
U3RyaW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyBmaWxlbmFtZTsKLSAgICBQcm9taXNlZEJs
b2JUeXBlIGJsb2JUeXBlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwog
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CkBAIC00Mywy
OSArNDEsNSBAQCBzdHJ1Y3QgUHJvbWlzZWRCbG9iSW5mbyB7CiAgICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICFibG9iVVJMLmlzRW1wdHkoKTsgfQogfTsKIAotc3RydWN0IFByb21p
c2VkQmxvYkRhdGEgewotICAgIFN0cmluZyBibG9iVVJMOwotICAgIFN0cmluZyBmaWxlUGF0aDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwotCi0gICAgYm9vbCBoYXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gZGF0YTsgfQotICAgIGJvb2wgaGFzRmlsZSgpIGNvbnN0IHsgcmV0dXJuICFm
aWxlUGF0aC5pc0VtcHR5KCk7IH0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
IWJsb2JVUkwuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBmdWxmaWxscyhjb25zdCBQcm9taXNlZEJs
b2JJbmZvJiBpbmZvKSBjb25zdCB7IHJldHVybiAqdGhpcyAmJiBibG9iVVJMID09IGluZm8uYmxv
YlVSTDsgfQotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgV1RGIHsK
LQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBFbnVtVHJhaXRzOwotdGVtcGxhdGU8dHlwZW5h
bWUgRSwgRS4uLj4gc3RydWN0IEVudW1WYWx1ZXM7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6UHJvbWlzZWRCbG9iVHlwZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8V2ViQ29yZTo6UHJvbWlzZWRCbG9iVHlwZSwKLSAgICBXZWJDb3JlOjpQcm9taXNl
ZEJsb2JUeXBlOjpEYXRhQmFja2VkLAotICAgIFdlYkNvcmU6OlByb21pc2VkQmxvYlR5cGU6OkZp
bGVCYWNrZWQKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCAx
OTdlYjI5MmUzMGE1Y2IyMTBhODU3ZGJlYzMxNTM0NjRmMjNlOGIxLi43Zjc5ZmQxODRhMDhhYzk5
ZTIxNjBlMGJjOGYzZjZhNDNmZGFhNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTI0NSwyNCArMjQ1LDE1IEBA
IHN0YXRpYyBXb3JrUXVldWUmIGJsb2JVdGlsaXR5UXVldWUoKQogICAgIHJldHVybiBxdWV1ZTsK
IH0KIAotc3RydWN0IEJsb2JGb3JGaWxlV3JpdGluZyB7Ci0gICAgU3RyaW5nIGJsb2JVUkw7Ci0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocmVhZFNhZmVEYXRhQnVmZmVyPj4gZmlsZVBh
dGhzT3JEYXRhQnVmZmVyczsKLX07Ci0KLXZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK2Jvb2wgQmxvYlJlZ2lzdHJ5SW1wbDo6cG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5n
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPEJsb2JGb3JGaWxlV3JpdGlu
Zz4mIGJsb2JzRm9yV3JpdGluZykKIHsKLSAgICBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiBi
bG9ic0ZvcldyaXRpbmc7CiAgICAgZm9yIChhdXRvJiB1cmwgOiBibG9iVVJMcykgewogICAgICAg
ICBibG9ic0ZvcldyaXRpbmcuYXBwZW5kKHsgfSk7CiAgICAgICAgIGJsb2JzRm9yV3JpdGluZy5s
YXN0KCkuYmxvYlVSTCA9IHVybC5pc29sYXRlZENvcHkoKTsKIAogICAgICAgICBhdXRvKiBibG9i
RGF0YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh7IFBhcnNlZFVSTFN0cmluZywgdXJsIH0pOwotICAg
ICAgICBpZiAoIWJsb2JEYXRhKSB7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0
aHM7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmaWxlUGF0aHMpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghYmxvYkRhdGEpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogYmxvYkRhdGEtPml0
ZW1zKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKQEAgLTI3Nyw0OCAr
MjY4LDU3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBibG9iVXRpbGl0eVF1ZXVlKCku
ZGlzcGF0Y2goW2Jsb2JzRm9yV3JpdGluZyA9IFdURk1vdmUoYmxvYnNGb3JXcml0aW5nKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzOworc3RhdGljIGJvb2wgd3JpdGVGaWxl
UGF0aHNPckRhdGFCdWZmZXJzVG9GaWxlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBU
aHJlYWRTYWZlRGF0YUJ1ZmZlcj4+JiBmaWxlUGF0aHNPckRhdGFCdWZmZXJzLCBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1
dG8gZmlsZUNsb3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbZmlsZV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIH0pOwogCi0gICAgICAgIGF1
dG8gcGVyZm9ybVdyaXRpbmcgPSBbYmxvYnNGb3JXcml0aW5nID0gV1RGTW92ZShibG9ic0Zvcldy
aXRpbmcpLCAmZmlsZVBhdGhzXSgpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgYmxvYiA6IGJs
b2JzRm9yV3JpdGluZykgewotICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlOwotICAgICAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShBU0NJSUxpdGVyYWwoIkJsb2IiKSwgZmlsZSk7Ci0K
LSAgICAgICAgICAgICAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW2Zp
bGVdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShmaWxlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlKSkgewotICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBvcGVuIHRlbXBvcmFyeSBmaWxlIGZvciB3cml0aW5nIGEgQmxvYiB0byBJbmRleGVkREIiKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcGFydCA6IGJsb2IuZmlsZVBhdGhzT3JEYXRhQnVm
ZmVycykgewotICAgICAgICAgICAgICAgICAgICBpZiAocGFydC5zZWNvbmQuZGF0YSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gcGFydC5zZWNvbmQuZGF0YSgpLT5z
aXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFydC5zZWNvbmQuZGF0YSgp
LT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHdyaXRpbmcgYSBCbG9iIHRvIHRlbXBvcmFyeSBmaWxlIGZv
ciBzdG9yYWdlIGluIEluZGV4ZWREQiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghcGFydC5maXJzdC5p
c0VtcHR5KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjphcHBl
bmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUocGFydC5maXJzdCwgZmlsZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVu
dHMgdG8gYSBCbG9iIHRlbXBvcmFyeSBmaWxlIGZvciBzdG9yYWdlIGluIEluZGV4ZWREQiAoJXMg
dG8gJXMpIiwgcGFydC5maXJzdC51dGY4KCkuZGF0YSgpLCB0ZW1wRmlsZVBhdGgudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgZmlsZVBhdGhzLmFwcGVuZCh0ZW1wRmlsZVBhdGguaXNv
bGF0ZWRDb3B5KCkpOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChmaWxlKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIHRl
bXBvcmFyeSBmaWxlIGZvciB3cml0aW5nIGEgQmxvYiIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgZm9yIChhdXRvJiBwYXJ0IDogZmlsZVBhdGhzT3JEYXRhQnVmZmVycykg
eworICAgICAgICBpZiAocGFydC5zZWNvbmQuZGF0YSgpKSB7CisgICAgICAgICAgICBpbnQgbGVu
Z3RoID0gcGFydC5zZWNvbmQuZGF0YSgpLT5zaXplKCk7CisgICAgICAgICAgICBpZiAoRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFy
dC5zZWNvbmQuZGF0YSgpLT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgeworICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHdyaXRpbmcgYSBCbG9iIHRvIHRlbXBvcmFyeSBmaWxl
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKCFwYXJ0LmZpcnN0LmlzRW1wdHkoKSk7Cisg
ICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRs
ZShwYXJ0LmZpcnN0LCBmaWxlKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IGNvcHlpbmcgRmlsZSBjb250ZW50cyB0byBhIEJsb2IgdGVtcG9yYXJ5IGZpbGUgKCVzIHRvICVz
KSIsIHBhcnQuZmlyc3QudXRmOCgpLmRhdGEoKSwgcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Owordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIEZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVmVjdG9y
PEJsb2JGb3JGaWxlV3JpdGluZz4gYmxvYnNGb3JXcml0aW5nOworICAgIGlmICghcG9wdWxhdGVC
bG9ic0ZvckZpbGVXcml0aW5nKGJsb2JVUkxzLCBibG9ic0ZvcldyaXRpbmcpKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAg
ICAgaWYgKCFwZXJmb3JtV3JpdGluZygpKQotICAgICAgICAgICAgZmlsZVBhdGhzLmNsZWFyKCk7
CisgICAgYmxvYlV0aWxpdHlRdWV1ZSgpLmRpc3BhdGNoKFtibG9ic0ZvcldyaXRpbmcgPSBXVEZN
b3ZlKGJsb2JzRm9yV3JpdGluZyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRo
czsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iIDogYmxvYnNGb3JXcml0aW5nKSB7CisgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICAgICAgICAgIFN0
cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShBU0NJSUxp
dGVyYWwoIkJsb2IiKSwgZmlsZSk7CisgICAgICAgICAgICBpZiAoIXdyaXRlRmlsZVBhdGhzT3JE
YXRhQnVmZmVyc1RvRmlsZShibG9iLmZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMsIGZpbGUsIHRlbXBG
aWxlUGF0aCkpIHsKKyAgICAgICAgICAgICAgICBmaWxlUGF0aHMuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbGVQYXRocy5hcHBl
bmQodGVtcEZpbGVQYXRoLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGZpbGVQYXRocyA9IFdURk1vdmUoZmlsZVBhdGhzKV0oKSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmaWxlUGF0aHMpOwpAQCAtMzI2LDQgKzMyNiwyMCBAQCB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcwogICAgIH0pOwogfQogCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6Ondy
aXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgs
IEZ1bmN0aW9uPHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiBibG9ic0ZvcldyaXRpbmc7CisgICAgaWYgKCFw
b3B1bGF0ZUJsb2JzRm9yRmlsZVdyaXRpbmcoeyBibG9iVVJMIH0sIGJsb2JzRm9yV3JpdGluZykg
fHwgYmxvYnNGb3JXcml0aW5nLnNpemUoKSAhPSAxKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJsb2JVdGlsaXR5UXVl
dWUoKS5kaXNwYXRjaChbcGF0aCwgYmxvYnNGb3JXcml0aW5nID0gV1RGTW92ZShibG9ic0Zvcldy
aXRpbmcpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBib29sIHN1Y2Nlc3MgPSB3cml0ZUZpbGVQYXRoc09yRGF0YUJ1
ZmZlcnNUb0ZpbGUoYmxvYnNGb3JXcml0aW5nLmZpcnN0KCkuZmlsZVBhdGhzT3JEYXRhQnVmZmVy
cywgRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpX
cml0ZSksIHBhdGgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdWNjZXNzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAwOTMxMmZhMWQ5MjllZDViODgwZWJkY2Uz
NTZiOGFkMGFiMWQ4YWIzLi4yNGZlY2M5NWE0MTk2MGIxM2RkODc0ODE1MTBlYzI3OGE4YjFlZjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owor
Y2xhc3MgVGhyZWFkU2FmZURhdGFCdWZmZXI7CiAKIC8vIEJsb2JSZWdpc3RyeUltcGwgaXMgbm90
IHRocmVhZC1zYWZlLiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSBtYWluIHRocmVhZC4K
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeUltcGwgZmluYWwgOiBwdWJsaWMgQmxv
YlJlZ2lzdHJ5IHsKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIEJsb2JEYXRhKiBnZXRC
bG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBSZWY8UmVzb3VyY2VIYW5k
bGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
SGFuZGxlQ2xpZW50Kik7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYg
YmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kU3RvcmFn
ZUl0ZW1zKEJsb2JEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBvZmZz
ZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwpAQCAtNzAsNiArNzIsMTMgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAKKyAgICBzdHJ1Y3QgQmxvYkZvckZpbGVX
cml0aW5nIHsKKyAgICAgICAgU3RyaW5nIGJsb2JVUkw7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4+IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnM7
CisgICAgfTsKKworICAgIGJvb2wgcG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPEJsb2JGb3JGaWxlV3JpdGluZz4mKTsKKwog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QmxvYkRhdGE+PiBtX2Jsb2JzOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDFjZDM3NWNmOGU2MmIwNTVmZWFiOGNlNDgwOGI4Mzcy
OTA4OTUxYWMuLmYwODI0ZDczNmJlMmZjYmNjZjFmYjAxYTAxMmJkN2RiN2JmZmVkNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0
d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTE0MCw2ICsxNDAsMjUgQEAgdm9pZCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlUKICAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhi
bG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25z
dCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIWJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgp
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxl
cyA9IGZpbGVzSW5CbG9iKHsgUGFyc2VkVVJMU3RyaW5nLCBibG9iVVJMIH0pOworICAgIGZvciAo
YXV0byYgZmlsZSA6IGJsb2JGaWxlcykKKyAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nl
c3MoKTsKKworICAgIHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnko
KSkud3JpdGVCbG9iVG9GaWxlUGF0aChibG9iVVJMLCBwYXRoLCBbYmxvYkZpbGVzID0gV1RGTW92
ZShibG9iRmlsZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGJsb2JGaWxl
cykKKyAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0aW9uKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24u
Y29udGFpbnMoY29ubmVjdGlvbikpCkBAIC0xNTUsMTIgKzE3NCwxNyBAQCB2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUAogVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgaWYgKCFtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5jb250YWlucygmY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0
aW9uLmZpbmQoJmNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQotICAgICAgICByZXR1
cm4gVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PigpOworICAgICAgICByZXR1
cm4geyB9OwogCisgICAgcmV0dXJuIGZpbGVzSW5CbG9iKHVybCk7Cit9CisKK1ZlY3RvcjxSZWZQ
dHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJs
b2IoY29uc3QgVVJMJiB1cmwpCit7CiAgICAgQVNTRVJUKGJsb2JSZWdpc3RyeSgpLmlzQmxvYlJl
Z2lzdHJ5SW1wbCgpKTsKICAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9i
UmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOwog
ICAgIGlmICghYmxvYkRhdGEpCi0gICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+KCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8UmVm
UHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IEJsb2JE
YXRhSXRlbSYgaXRlbSA6IGJsb2JEYXRhLT5pdGVtcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApp
bmRleCA3OGRiZDM1NDcyZjUyM2EzNjU0YmY0ZDRhMmYxZDU2MmU2N2I4M2E3Li5jMTlhNjU5ZTBl
ZjQ1NWJiMTA4OGJjZjg1YzI5ZmRlYWM5MzcyNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAg
LTU0LDEwICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHVp
bnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0
aChjb25zdCBXZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rp
b248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQg
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKik7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogcHJpdmF0ZToKICAg
ICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA1YTFiM2FjZGViNDI2MGIwYjhhYzdmYWExOWI2
ZjA3MWJkMDBiY2VlLi5hZTRmOTU1NGEzY2E4NDA3NDI1ZjJmMDE3NDlkNzhlNWNhNDdiNmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5o
IgogI2VuZGlmCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTMzMiw2ICszMzMsMjEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nl
c3NGb3JCbG9icyh1aW50NjRfdAogICAgICAgICBoYW5kbGVyKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgaGFuZGxlRm9yV3Jp
dGluZywgdWludDY0X3QgcmVxdWVzdElEKQoreworICAgIGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoaGFuZGxlRm9yV3JpdGluZykpOworICAgIGlmICgh
ZXh0ZW5zaW9uKSB7CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFdyaXRlQmxvYlRvRmlsZVBhdGgoZmFsc2Us
IHJlcXVlc3RJRCksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXh0ZW5zaW9u
LT5jb25zdW1lKCk7CisgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkud3JpdGVC
bG9iVG9GaWxlUGF0aCh1cmwsIHBhdGgsIFt0aGlzLCBleHRlbnNpb24gPSBXVEZNb3ZlKGV4dGVu
c2lvbiksIHJlcXVlc3RJRF0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICBleHRlbnNpb24tPnJl
dm9rZSgpOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRXcml0ZUJsb2JUb0ZpbGVQYXRoKHN1Y2Nlc3MsIHJl
cXVlc3RJRCksIDApOworICAgIH0pOworfQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGNlN2VjNTVlNDY4ZGZm
Yzg0NGQ4YjlmNWRjMjIwODU2NjUzY2Y4N2YuLmRkMTQ5MTNjMTI0ZTg2YmE2YjkzMjE5OGFiYTUy
YWRlYTk1MzNlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTIyNSw2ICsyMjUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHcmFu
dFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAKKyAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgdWludDY0
X3QgcmVxdWVzdElEKTsKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJy
b3JzKGJvb2wpOwogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDhiODU1ZjA4OWJlZTg2ZWY3ZTli
MGY2NGVlNWE3NGZkMzYyYTFmNWUuLmJkNDhiOTFmZjhlOGM2YzcyMjcwZTFkODkzODQ3ZTZkOTM0
NGQzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzksNiArNzksOCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBEaWRHcmFudFNhbmRib3hFeHRlbnNp
b25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkKIAorICAgIFdy
aXRlQmxvYlRvRmlsZVBhdGgoV2ViQ29yZTo6VVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CisKICAgICBQcmVjb25uZWN0VG8oV2ViQ29yZTo6VVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDQ5Y2U1NmFhNTVhMjEyZTlkNjNkZDk2
NjkwMTQ2YzUyYTUxNGU4ZTkuLjI4ODNmYWU5YTkwYzIzM2JhMTQ2MzBkYTkzYmU2NjliOTVlNWUz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMjc4NywzMyArMjc4NywxMSBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2VsZWN0aW9uT3B0
aW9uPiBBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9uPjo6ZGVjb2RlKAogICAgIHJl
dHVybiB7eyBXVEZNb3ZlKCpkaXNwbGF5TmFtZSksIFdURk1vdmUoKnR5cGUpIH19OwogfQogCi12
b2lkIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9iRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBQcm9taXNlZEJsb2JEYXRhJiBkYXRhKQotewotICAgIGVuY29kZXIgPDwgZGF0
YS5ibG9iVVJMOwotICAgIGVuY29kZXIgPDwgZGF0YS5maWxlUGF0aDsKLSAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgZGF0YS5kYXRhLmdldCgpKTsKLX0KLQotYm9vbCBBcmd1bWVudENv
ZGVyPFByb21pc2VkQmxvYkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUHJvbWlzZWRC
bG9iRGF0YSYgZGF0YSkKLXsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuYmxvYlVSTCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5m
aWxlUGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGRhdGEuZGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9iSW5mbz46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm9taXNlZEJsb2JJbmZvJiBpbmZvKQog
ewogICAgIGVuY29kZXIgPDwgaW5mby5ibG9iVVJMOwogICAgIGVuY29kZXIgPDwgaW5mby5jb250
ZW50VHlwZTsKICAgICBlbmNvZGVyIDw8IGluZm8uZmlsZW5hbWU7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKGluZm8uYmxvYlR5cGUpOwogICAgIGVuY29kZVR5cGVzQW5kRGF0YShlbmNvZGVyLCBp
bmZvLmFkZGl0aW9uYWxUeXBlcywgaW5mby5hZGRpdGlvbmFsRGF0YSk7CiB9CiAKQEAgLTI4Mjgs
OSArMjgwNiw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm9taXNlZEJsb2JJbmZvPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFByb21pc2VkQmxvYkluZm8mCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbmZvLmZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpbmZvLmJsb2JUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgaWYgKCFkZWNvZGVUeXBlc0FuZERhdGEoZGVjb2RlciwgaW5mby5hZGRpdGlvbmFsVHlwZXMs
IGluZm8uYWRkaXRpb25hbERhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYTJjZDA5YmIxY2Q1
MzA1Njc1ZjhmOGEyMjljNmQ0YzlhNzA2M2RlZC4uMTAwZTI2Njc4MGQwZjNmNDI3ZTFhM2MyODky
NzNmZjc2ZWI4MWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKQEAgLTEwNCw3ICsxMDQsNiBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3Ry
dWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3Qg
UGx1Z2luSW5mbzsKLXN0cnVjdCBQcm9taXNlZEJsb2JEYXRhOwogc3RydWN0IFByb21pc2VkQmxv
YkluZm87CiBzdHJ1Y3QgUmVjZW50U2VhcmNoOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CkBAIC02OTIsMTEgKzY5MSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
LXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvbWlzZWRCbG9iRGF0
YT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UHJv
bWlzZWRCbG9iRGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6UHJvbWlzZWRCbG9iRGF0YSYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAzNDU1YTNmODQ0MDA1ZjQ1ZTBmMzBiMTFiMWVlN2I2ZmEwYTI3ODU5Li40
ZDY0M2Q1NGU3Y2MyZWEwMTAwZGM0MTNiZDI1MDQ2N2E1ODY5ZmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTI0NSw2ICsyNDUsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKQogCiAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51
bGxwdHI7CiAKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV93cml0ZUJsb2JUb0ZpbGVQYXRo
Q2FsbGJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICBtX3dy
aXRlQmxvYlRvRmlsZVBhdGhDYWxsYmFja01hcC5jbGVhcigpOworCiAgICAgLy8gVGhpcyBtYXkg
Y2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KICAgICBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIH0K
QEAgLTQ1OCw2ICs0NjIsMzAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vz
c0RpZFJlc3VtZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9j
ZXNzRGlkUmVzdW1lKCksIDApOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRl
QmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0
aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
IWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc3RhdGljIHVpbnQ2NF90IHdyaXRlQmxvYlRvRmlsZVBhdGhD
YWxsYmFja0lkZW50aWZpZXJzID0gMDsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyt3cml0
ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tJZGVudGlmaWVyczsKKyAgICBtX3dyaXRlQmxvYlRvRmls
ZVBhdGhDYWxsYmFja01hcC5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvcldyaXRpbmc7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgaGFuZGxlRm9yV3JpdGluZyk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OldyaXRlQmxvYlRvRmlsZVBhdGgodXJsLCBwYXRoLCBoYW5kbGVGb3JXcml0aW5nLCBj
YWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkV3JpdGVC
bG9iVG9GaWxlUGF0aChib29sIHN1Y2Nlc3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAg
aWYgKGF1dG8gaGFuZGxlciA9IG1fd3JpdGVCbG9iVG9GaWxlUGF0aENhbGxiYWNrTWFwLnRha2Uo
Y2FsbGJhY2tJRCkpCisgICAgICAgIGhhbmRsZXIoc3VjY2Vzcyk7CisgICAgZWxzZQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogewogICAgIG1fdGhyb3R0bGVyLnByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlMWJmYjc2NGE1ODc0NjA5N2JhMWZiMjg0NmI2ZTVl
Y2ViYTFjNTc4Li5kYjg3NWNjODhmMmNmYWMwOGI3MjM5YTZjMmIzMTdkOGNiN2VlNWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZTsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOworY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAt
ODIsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJl
dmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spOwogI2VuZGlmCiAKKyAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNhbGxiYWNrKTsKKwogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7
CiAKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwpAQCAtMTIxLDYgKzEy
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZFdyaXRlQmxvYlRv
RmlsZVBhdGgoYm9vbCBzdWNjZXNzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwogICAgIHZvaWQgbG9nRGlhZ25v
c3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBs
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKQEAgLTE1MSw2ICsxNTUsNyBAQCBwcml2YXRlOgogICAg
IFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlczsKIAorICAg
IEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4+
IG1fd3JpdGVCbG9iVG9GaWxlUGF0aENhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdl
QWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgppbmRleCBmYTgxYjQxOTBiOGM3NGVkZTY1OWNmMGY2NjFmNTQ5NTA1NmQ0OTY1Li43Zjc3
M2FjZTliMWEwNzQzZDc0MTc3NDU3Zjc1ZDhjYTM2NGM3YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yOSw2ICsyOSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgRGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAKKyAgICBEaWRXcml0ZUJsb2JUb0ZpbGVQYXRoKGJvb2wgc3VjY2Vzcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKKwogICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3Jh
Z2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElELCBWZWN0b3I8U3RyaW5nPiBwYXRo
cykKIAogICAgIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBjMTUwMTI5NTE0ZDUzOTE2MzQ2MDQ5YjMxM2M1ZjYxMzU5
YTVjZjZlLi5mYTM5NGQ4MjRmODM5NGRmMjZlYzgyYzZhOThhNmUzMzk2NDE0Y2ZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNp
bmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlv
bkRhdGEuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCkBAIC03Mjc5LDYgKzcyODAsMTYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAordm9p
ZCBXZWJQYWdlUHJveHk6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNhbGxiYWNrKQor
eworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpLndyaXRlQmxvYlRvRmlsZVBhdGgodXJsLCBwYXRoLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCAyZGNlNmJhMzE4MWM2M2MzNjg0ZTUwNzg2OWRlN2QyNWIxOWNiYmQw
Li5iM2JiMWFhNzczMGRkOGU5NjMzZWNiZmViNTMxZTY1OTY0Nzg2YzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI2Miw2ICsxMjYyLDggQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAjZW5kaWYKIAorICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBX
ZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChi
b29sIHN1Y2Nlc3MpPiYmKTsKKwogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNT
dG9yZSgpIGNvbnN0OwogCiBwcml2YXRlOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330473</attachid>
            <date>2018-01-04 09:50:24 -0800</date>
            <delta_ts>2018-01-05 15:48:39 -0800</delta_ts>
            <desc>Rebase on master</desc>
            <filename>bug-181236-20180104095023.patch</filename>
            <type>text/plain</type>
            <size>31661</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2NDA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWVlOTY1MTNjODkxNThk
YmI5YzQzMzE3ZWVmZTVjNGRhODE4YjJhOS4uZGRhOTNmNmNiYzJkODliMjAyODdlNjA0OWMxMmE2
ZDk4OTM1MWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAxLTA0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFtBdHRhY2htZW50
IFN1cHBvcnRdIEFkZCBhIHdheSB0byB3cml0ZSBibG9iIGRhdGEgdG8gYSBmaWxlIFVSTCBmcm9t
IHRoZSBVSSBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODEyMzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgc3VwcG9ydCBmb3Igd3JpdGluZyBhIGJsb2IgdG8gYSBkZXNpZ25hdGVkIGZp
bGUgcGF0aC4gU2VlIGNvbW1lbnRzIGJlbG93IGZvciBtb3JlIGRldGFpbC4gTm8gbmV3IHRlc3Rz
LCBhcworICAgICAgICB0aGVyZSBjaGFuZ2UgaW4gYmVoYXZpb3IgeWV0LiBTZWUgcGFydCAyOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTk5LgorCisgICAgICAg
ICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJv
bGxlcjo6ZHJhZ0F0dGFjaG1lbnRFbGVtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Qcm9taXNl
ZEJsb2JJbmZvLmg6CisKKyAgICAgICAgUmVtb3ZlIFByb21pc2VkQmxvYkRhdGEgZW50aXJlbHku
IFRoaXMgd2FzIGFkZGVkIHdpdGggdGhlIHByZW1pc2Ugb2YgaGF2aW5nIHRoZSB3ZWIgcHJvY2Vz
cyBkZWxpdmVyIGJsb2IgZGF0YSB0bworICAgICAgICB0aGUgVUkgcHJvY2Vzcy4gSG93ZXZlciwg
dGhlIG5ldyBhcHByb2FjaCBJJ20gdGFraW5nIGp1c3QgaGFzIHRoZSBVSSBwcm9jZXNzIHRlbGwg
dGhlIG5ldHdvcmsgcHJvY2VzcyB0byB3cml0ZQorICAgICAgICBhIGJsb2IgdG8gYSBnaXZlbiBs
b2NhdGlvbiwgc28gYSBkYXRhIHN0cnVjdHVyZSB0byBkZWxpdmVyIGJsb2IgZGF0YSBvdmVyIElQ
QyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgorCisgICAgICAgIChXZWJDb3JlOjpQcm9taXNlZEJs
b2JEYXRhOjpoYXNEYXRhIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlByb21p
c2VkQmxvYkRhdGE6Omhhc0ZpbGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
UHJvbWlzZWRCbG9iRGF0YTo6b3BlcmF0b3IgYm9vbCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQcm9taXNlZEJsb2JEYXRhOjpmdWxmaWxscyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnBvcHVsYXRlQmxvYnNGb3JGaWxlV3JpdGluZyk6
CisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IGhlbHBlciB0byBidWlsZCBhIGxpc3Qgb2YgYmxv
YiBkYXRhIGZvciBmaWxlIHdyaXRpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlRmlsZVBh
dGhzT3JEYXRhQnVmZmVyc1RvRmlsZSk6CisKKyAgICAgICAgSW50cm9kdWNlIGEgbmV3IHN0YXRp
YyBoZWxwZXIgdG8gd3JpdGUgYmxvYiBkYXRhIChhIGxpc3Qgb2YgZmlsZSBwYXRocyBhbmQgZGF0
YSBidWZmZXJzKSB0byBhIGdpdmVuIGZpbGUgaGFuZGxlLgorICAgICAgICBBdXRvbWF0aWNhbGx5
IGNsb3NlcyB0aGUgZ2l2ZW4gZmlsZSBoYW5kbGUgdXBvbiBleGl0LgorCisgICAgICAgIChXZWJD
b3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JUb0ZpbGVQYXRoKToKKwor
ICAgICAgICBQdWxsIG91dCBjb21tb24gbG9naWMgaW4gd3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMgYW5kIHdyaXRlQmxvYlRvRmlsZVBhdGggaW50byBoZWxwZXIgbWV0aG9kcyAoc2VlIGFib3Zl
KSwgYW5kCisgICAgICAgIHJlZmFjdG9yIGJvdGggbWV0aG9kcyB0byB1c2UgdGhlIGhlbHBlcnMu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKwogMjAx
OC0wMS0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS10gSXNzdWVzIHdpdGggQWhlbSdzIGV4IC8geC1oZWlnaHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
OTgyOWI3NzZkNDJmZmI4NTFkOWE2OWJjZTk1YzIxY2Y5YWFiODg5NS4uYzNjNmZlNDFkNTA1Nzk1
MDg2MDExZTU5YTc3MmM4YTBmODI4NGU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAx
OC0wMS0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAg
ICBbQXR0YWNobWVudCBTdXBwb3J0XSBBZGQgYSB3YXkgdG8gd3JpdGUgYmxvYiBkYXRhIHRvIGEg
ZmlsZSBVUkwgZnJvbSB0aGUgVUkgcHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMjM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIHdyaXRpbmcgYSBibG9iIHRvIGEg
ZGVzaWduYXRlZCBmaWxlIHBhdGguIEluIFdlYktpdCwgdGhpcyBpcyBtYWlubHkgcGx1bWJpbmcg
d3JpdGVCbG9iVG9GaWxlUGF0aAorICAgICAgICB0aHJvdWdoIFdlYlBhZ2VQcm94eSB0byB0aGUg
bmV0d29yayBwcm9jZXNzLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3
b3JrQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3Ry
eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisKKyAgICAgICAgQ2FsbCBvdXQgdG8gdGhlIEJsb2JS
ZWdpc3RyeUltcGwgdG8gd3JpdGUgYmxvYnMgdG8gdGhlIGZpbGUgcGF0aC4gQWRkaXRpb25hbGx5
IGdyYW50IHNhbmRib3ggZXh0ZW5zaW9ucyBmb3IgYW55CisgICAgICAgIGZpbGUtYmFja2VkIGJs
b2IgcGFydHMgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gYmxvYiBVUkwuCisKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJsb2IpOgorCisgICAgICAgIElu
dHJvZHVjZSBhIHZlcnNpb24gb2YgZmlsZXNJbkJsb2IgdGhhdCBkb2Vzbid0IGNoZWNrIGFnYWlu
c3QgdGhlIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLiBUaGlzIGlzIHVzZWQKKyAgICAg
ICAgd2hlbiB0aGUgVUkgcHJvY2VzcyBpcyB0aGUgZHJpdmVyIGZvciB3cml0aW5nIGEgYmxvYi4K
KworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5o
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OndyaXRlQmxvYlRvRmlsZVBhdGgpOgorCisgICAgICAg
IFRlbXBvcmFyaWx5IGdyYW50IHNhbmRib3ggYWNjZXNzIHRvIHRoZSBnaXZlbiBmaWxlIHBhdGgu
CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNo
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFByb21pc2VkQmxvYkluZm8+OjplbmNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFByb21pc2VkQmxvYkluZm8+OjpkZWNvZGUpOgorICAgICAgICAoSVBDOjpBcmd1bWVudENv
ZGVyPFByb21pc2VkQmxvYkRhdGE+OjplbmNvZGUpOiBEZWxldGVkLgorICAgICAgICAoSVBDOjpB
cmd1bWVudENvZGVyPFByb21pc2VkQmxvYkRhdGE+OjpkZWNvZGUpOiBEZWxldGVkLgorCisgICAg
ICAgIFJlbW92ZSBQcm9taXNlZEJsb2JEYXRhIChzZWUgV2ViQ29yZS9DaGFuZ2VMb2cgZm9yIG1v
cmUgaW5mb3JtYXRpb24pLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisKKyAg
ICAgICAgSWYgdGhlIG5ldHdvcmsgcHJvY2VzcyBpcyB0ZXJtaW5hdGVkLCBmbHVzaCBhbnkgcGVu
ZGluZyBjYWxsYmFja3MgaW4gbV93cml0ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tNYXAsIHBhc3Np
bmcKKyAgICAgICAgaW4gYSBmYWlsdXJlIHJlc3VsdCAoc3VjY2VzcyA6PSBmYWxzZSkgYW5kIGNs
ZWFyaW5nIHRoZSBjYWxsYmFjayBtYXAuCisKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6d3JpdGVCbG9iVG9GaWxlUGF0aCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFdyaXRlQmxvYlRvRmlsZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndyaXRl
QmxvYlRvRmlsZVBhdGgpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKwog
MjAxOC0wMS0wNCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAg
SW1wbGVtZW50IENhY2hlIEFQSSBwYXJ0aXRpb25pbmcgYmFzZWQgb24gQ2xpZW50T3JpZ2luCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCmluZGV4IGI2Y2U2YTJmNjE4ZDY5YmQ1
M2Y1MTFiMjZiZDA2Y2Y0ZGFmYWEwYTQuLjU1YmVlY2JjODQ4OTY2OTI5YzQ5NWE5NGYxNGZkYTc0
MjRhMzM1MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xMjg5
LDEwICsxMjg5LDcgQEAgYm9vbCBEcmFnQ29udHJvbGxlcjo6ZHJhZ0F0dGFjaG1lbnRFbGVtZW50
KEZyYW1lJiBmcmFtZSwgSFRNTEF0dGFjaG1lbnRFbGVtZW50JgogI2VuZGlmCiAKICAgICBhdXRv
JiBmaWxlID0gKmF0dGFjaG1lbnQuZmlsZSgpOwotICAgIGF1dG8gYmxvYlVSTCA9IGZpbGUudXJs
KCkuc3RyaW5nKCk7Ci0gICAgYm9vbCBpc0ZpbGVCYWNrZWQgPSAhZmlsZS5wYXRoKCkuaXNFbXB0
eSgpOwotICAgIGF1dG8gYmxvYlR5cGUgPSBpc0ZpbGVCYWNrZWQgPyBQcm9taXNlZEJsb2JUeXBl
OjpGaWxlQmFja2VkIDogUHJvbWlzZWRCbG9iVHlwZTo6RGF0YUJhY2tlZDsKLSAgICBtX2NsaWVu
dC5wcmVwYXJlVG9EcmFnUHJvbWlzZWRCbG9iKHsgYmxvYlVSTCwgZmlsZS50eXBlKCksIGZpbGUu
bmFtZSgpLCBibG9iVHlwZSwgYWRkaXRpb25hbFR5cGVzLCBhZGRpdGlvbmFsRGF0YSB9KTsKKyAg
ICBtX2NsaWVudC5wcmVwYXJlVG9EcmFnUHJvbWlzZWRCbG9iKHsgZmlsZS51cmwoKSwgZmlsZS50
eXBlKCksIGZpbGUubmFtZSgpLCBhZGRpdGlvbmFsVHlwZXMsIGFkZGl0aW9uYWxEYXRhIH0pOwog
CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9Qcm9taXNlZEJsb2JJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Qcm9taXNlZEJs
b2JJbmZvLmgKaW5kZXggYWU4NDZmYzU3MTFkZDc1YjNiN2YxMmIyMzA3NTBmNTcwZDYwY2U4MC4u
ODYyOWVkMWFmZjliMDQ3OGMwODVhMTlkOGNkYzM5NGRmNzQ4NDc4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vUHJvbWlzZWRCbG9iSW5mby5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Byb21pc2VkQmxvYkluZm8uaApAQCAtMjUsMTcgKzI1LDE1IEBACiAKICNw
cmFnbWEgb25jZQogCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotZW51bSBjbGFzcyBQcm9taXNlZEJsb2JUeXBlIHsgRGF0YUJhY2tlZCwgRmlsZUJh
Y2tlZCB9OworY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgVVJMOwogCiBzdHJ1Y3QgUHJvbWlz
ZWRCbG9iSW5mbyB7Ci0gICAgU3RyaW5nIGJsb2JVUkw7CisgICAgVVJMIGJsb2JVUkw7CiAgICAg
U3RyaW5nIGNvbnRlbnRUeXBlOwogICAgIFN0cmluZyBmaWxlbmFtZTsKLSAgICBQcm9taXNlZEJs
b2JUeXBlIGJsb2JUeXBlOwogCiAgICAgVmVjdG9yPFN0cmluZz4gYWRkaXRpb25hbFR5cGVzOwog
ICAgIFZlY3RvcjxSZWZQdHI8U2hhcmVkQnVmZmVyPj4gYWRkaXRpb25hbERhdGE7CkBAIC00Mywy
OSArNDEsNSBAQCBzdHJ1Y3QgUHJvbWlzZWRCbG9iSW5mbyB7CiAgICAgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICFibG9iVVJMLmlzRW1wdHkoKTsgfQogfTsKIAotc3RydWN0IFByb21p
c2VkQmxvYkRhdGEgewotICAgIFN0cmluZyBibG9iVVJMOwotICAgIFN0cmluZyBmaWxlUGF0aDsK
LSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhOwotCi0gICAgYm9vbCBoYXNEYXRhKCkgY29u
c3QgeyByZXR1cm4gZGF0YTsgfQotICAgIGJvb2wgaGFzRmlsZSgpIGNvbnN0IHsgcmV0dXJuICFm
aWxlUGF0aC5pc0VtcHR5KCk7IH0KLSAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
IWJsb2JVUkwuaXNFbXB0eSgpOyB9Ci0gICAgYm9vbCBmdWxmaWxscyhjb25zdCBQcm9taXNlZEJs
b2JJbmZvJiBpbmZvKSBjb25zdCB7IHJldHVybiAqdGhpcyAmJiBibG9iVVJMID09IGluZm8uYmxv
YlVSTDsgfQotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1uYW1lc3BhY2UgV1RGIHsK
LQotdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBFbnVtVHJhaXRzOwotdGVtcGxhdGU8dHlwZW5h
bWUgRSwgRS4uLj4gc3RydWN0IEVudW1WYWx1ZXM7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6UHJvbWlzZWRCbG9iVHlwZT4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVu
dW1WYWx1ZXM8V2ViQ29yZTo6UHJvbWlzZWRCbG9iVHlwZSwKLSAgICBXZWJDb3JlOjpQcm9taXNl
ZEJsb2JUeXBlOjpEYXRhQmFja2VkLAotICAgIFdlYkNvcmU6OlByb21pc2VkQmxvYlR5cGU6OkZp
bGVCYWNrZWQKLSAgICA+OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAppbmRleCAx
OTdlYjI5MmUzMGE1Y2IyMTBhODU3ZGJlYzMxNTM0NjRmMjNlOGIxLi43Zjc5ZmQxODRhMDhhYzk5
ZTIxNjBlMGJjOGYzZjZhNDNmZGFhNDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKQEAgLTI0NSwyNCArMjQ1LDE1IEBA
IHN0YXRpYyBXb3JrUXVldWUmIGJsb2JVdGlsaXR5UXVldWUoKQogICAgIHJldHVybiBxdWV1ZTsK
IH0KIAotc3RydWN0IEJsb2JGb3JGaWxlV3JpdGluZyB7Ci0gICAgU3RyaW5nIGJsb2JVUkw7Ci0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFRocmVhZFNhZmVEYXRhQnVmZmVyPj4gZmlsZVBh
dGhzT3JEYXRhQnVmZmVyczsKLX07Ci0KLXZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9i
c1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzLCBGdW5jdGlv
bjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK2Jvb2wgQmxvYlJlZ2lzdHJ5SW1wbDo6cG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5n
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPEJsb2JGb3JGaWxlV3JpdGlu
Zz4mIGJsb2JzRm9yV3JpdGluZykKIHsKLSAgICBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiBi
bG9ic0ZvcldyaXRpbmc7CiAgICAgZm9yIChhdXRvJiB1cmwgOiBibG9iVVJMcykgewogICAgICAg
ICBibG9ic0ZvcldyaXRpbmcuYXBwZW5kKHsgfSk7CiAgICAgICAgIGJsb2JzRm9yV3JpdGluZy5s
YXN0KCkuYmxvYlVSTCA9IHVybC5pc29sYXRlZENvcHkoKTsKIAogICAgICAgICBhdXRvKiBibG9i
RGF0YSA9IGdldEJsb2JEYXRhRnJvbVVSTCh7IFBhcnNlZFVSTFN0cmluZywgdXJsIH0pOwotICAg
ICAgICBpZiAoIWJsb2JEYXRhKSB7Ci0gICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBmaWxlUGF0
aHM7Ci0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmaWxlUGF0aHMpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICghYmxvYkRhdGEpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogYmxvYkRhdGEtPml0
ZW1zKCkpIHsKICAgICAgICAgICAgIHN3aXRjaCAoaXRlbS50eXBlKCkpIHsKQEAgLTI3Nyw0OCAr
MjY4LDU3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6d3JpdGVCbG9ic1RvVGVtcG9yYXJ5Rmls
ZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JVUkxzCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICBibG9iVXRpbGl0eVF1ZXVlKCku
ZGlzcGF0Y2goW2Jsb2JzRm9yV3JpdGluZyA9IFdURk1vdmUoYmxvYnNGb3JXcml0aW5nKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgVmVjdG9yPFN0cmluZz4gZmlsZVBhdGhzOworc3RhdGljIGJvb2wgd3JpdGVGaWxl
UGF0aHNPckRhdGFCdWZmZXJzVG9GaWxlKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBU
aHJlYWRTYWZlRGF0YUJ1ZmZlcj4+JiBmaWxlUGF0aHNPckRhdGFCdWZmZXJzLCBGaWxlU3lzdGVt
OjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZSwgY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGF1
dG8gZmlsZUNsb3NlciA9IFdURjo6bWFrZVNjb3BlRXhpdChbZmlsZV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgRmlsZVN5c3RlbTo6Y2xvc2VGaWxlKGZpbGUpOworICAgIH0pOwogCi0gICAgICAgIGF1
dG8gcGVyZm9ybVdyaXRpbmcgPSBbYmxvYnNGb3JXcml0aW5nID0gV1RGTW92ZShibG9ic0Zvcldy
aXRpbmcpLCAmZmlsZVBhdGhzXSgpIHsKLSAgICAgICAgICAgIGZvciAoYXV0byYgYmxvYiA6IGJs
b2JzRm9yV3JpdGluZykgewotICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OlBsYXRmb3JtRmls
ZUhhbmRsZSBmaWxlOwotICAgICAgICAgICAgICAgIFN0cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxl
U3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShBU0NJSUxpdGVyYWwoIkJsb2IiKSwgZmlsZSk7Ci0K
LSAgICAgICAgICAgICAgICBhdXRvIGZpbGVDbG9zZXIgPSBXVEY6Om1ha2VTY29wZUV4aXQoW2Zp
bGVdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgICAgIEZpbGVTeXN0ZW06OmNsb3NlRmls
ZShmaWxlKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAodGVtcEZpbGVQYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6aXNIYW5k
bGVWYWxpZChmaWxlKSkgewotICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0
byBvcGVuIHRlbXBvcmFyeSBmaWxlIGZvciB3cml0aW5nIGEgQmxvYiB0byBJbmRleGVkREIiKTsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcGFydCA6IGJsb2IuZmlsZVBhdGhzT3JEYXRhQnVm
ZmVycykgewotICAgICAgICAgICAgICAgICAgICBpZiAocGFydC5zZWNvbmQuZGF0YSgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gcGFydC5zZWNvbmQuZGF0YSgpLT5z
aXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoRmlsZVN5c3RlbTo6d3JpdGVUb0Zp
bGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFydC5zZWNvbmQuZGF0YSgp
LT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIExPR19FUlJPUigiRmFpbGVkIHdyaXRpbmcgYSBCbG9iIHRvIHRlbXBvcmFyeSBmaWxlIGZv
ciBzdG9yYWdlIGluIEluZGV4ZWREQiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghcGFydC5maXJzdC5p
c0VtcHR5KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFGaWxlU3lzdGVtOjphcHBl
bmRGaWxlQ29udGVudHNUb0ZpbGVIYW5kbGUocGFydC5maXJzdCwgZmlsZSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCBjb3B5aW5nIEZpbGUgY29udGVu
dHMgdG8gYSBCbG9iIHRlbXBvcmFyeSBmaWxlIGZvciBzdG9yYWdlIGluIEluZGV4ZWREQiAoJXMg
dG8gJXMpIiwgcGFydC5maXJzdC51dGY4KCkuZGF0YSgpLCB0ZW1wRmlsZVBhdGgudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgZmlsZVBhdGhzLmFwcGVuZCh0ZW1wRmlsZVBhdGguaXNv
bGF0ZWRDb3B5KCkpOworICAgIGlmIChwYXRoLmlzRW1wdHkoKSB8fCAhRmlsZVN5c3RlbTo6aXNI
YW5kbGVWYWxpZChmaWxlKSkgeworICAgICAgICBMT0dfRVJST1IoIkZhaWxlZCB0byBvcGVuIHRl
bXBvcmFyeSBmaWxlIGZvciB3cml0aW5nIGEgQmxvYiIpOworICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQorCisgICAgZm9yIChhdXRvJiBwYXJ0IDogZmlsZVBhdGhzT3JEYXRhQnVmZmVycykg
eworICAgICAgICBpZiAocGFydC5zZWNvbmQuZGF0YSgpKSB7CisgICAgICAgICAgICBpbnQgbGVu
Z3RoID0gcGFydC5zZWNvbmQuZGF0YSgpLT5zaXplKCk7CisgICAgICAgICAgICBpZiAoRmlsZVN5
c3RlbTo6d3JpdGVUb0ZpbGUoZmlsZSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4ocGFy
dC5zZWNvbmQuZGF0YSgpLT5kYXRhKCkpLCBsZW5ndGgpICE9IGxlbmd0aCkgeworICAgICAgICAg
ICAgICAgIExPR19FUlJPUigiRmFpbGVkIHdyaXRpbmcgYSBCbG9iIHRvIHRlbXBvcmFyeSBmaWxl
Iik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgQVNTRVJUKCFwYXJ0LmZpcnN0LmlzRW1wdHkoKSk7Cisg
ICAgICAgICAgICBpZiAoIUZpbGVTeXN0ZW06OmFwcGVuZEZpbGVDb250ZW50c1RvRmlsZUhhbmRs
ZShwYXJ0LmZpcnN0LCBmaWxlKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiRmFpbGVk
IGNvcHlpbmcgRmlsZSBjb250ZW50cyB0byBhIEJsb2IgdGVtcG9yYXJ5IGZpbGUgKCVzIHRvICVz
KSIsIHBhcnQuZmlyc3QudXRmOCgpLmRhdGEoKSwgcGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgcmV0dXJuIHRydWU7Cit9CiAKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9Owordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhj
b25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIEZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVQYXRocyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgVmVjdG9y
PEJsb2JGb3JGaWxlV3JpdGluZz4gYmxvYnNGb3JXcml0aW5nOworICAgIGlmICghcG9wdWxhdGVC
bG9ic0ZvckZpbGVXcml0aW5nKGJsb2JVUkxzLCBibG9ic0ZvcldyaXRpbmcpKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAg
ICAgaWYgKCFwZXJmb3JtV3JpdGluZygpKQotICAgICAgICAgICAgZmlsZVBhdGhzLmNsZWFyKCk7
CisgICAgYmxvYlV0aWxpdHlRdWV1ZSgpLmRpc3BhdGNoKFtibG9ic0ZvcldyaXRpbmcgPSBXVEZN
b3ZlKGJsb2JzRm9yV3JpdGluZyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVQYXRo
czsKKyAgICAgICAgZm9yIChhdXRvJiBibG9iIDogYmxvYnNGb3JXcml0aW5nKSB7CisgICAgICAg
ICAgICBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmlsZTsKKyAgICAgICAgICAgIFN0
cmluZyB0ZW1wRmlsZVBhdGggPSBGaWxlU3lzdGVtOjpvcGVuVGVtcG9yYXJ5RmlsZShBU0NJSUxp
dGVyYWwoIkJsb2IiKSwgZmlsZSk7CisgICAgICAgICAgICBpZiAoIXdyaXRlRmlsZVBhdGhzT3JE
YXRhQnVmZmVyc1RvRmlsZShibG9iLmZpbGVQYXRoc09yRGF0YUJ1ZmZlcnMsIGZpbGUsIHRlbXBG
aWxlUGF0aCkpIHsKKyAgICAgICAgICAgICAgICBmaWxlUGF0aHMuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbGVQYXRocy5hcHBl
bmQodGVtcEZpbGVQYXRoLmlzb2xhdGVkQ29weSgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGZpbGVQYXRocyA9IFdURk1vdmUoZmlsZVBhdGhzKV0oKSB7CiAgICAgICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihmaWxlUGF0aHMpOwpAQCAtMzI2LDQgKzMyNiwyMCBAQCB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBibG9iVVJMcwogICAgIH0pOwogfQogCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6Ondy
aXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25zdCBTdHJpbmcmIHBhdGgs
IEZ1bmN0aW9uPHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBWZWN0b3I8QmxvYkZvckZpbGVXcml0aW5nPiBibG9ic0ZvcldyaXRpbmc7CisgICAgaWYgKCFw
b3B1bGF0ZUJsb2JzRm9yRmlsZVdyaXRpbmcoeyBibG9iVVJMIH0sIGJsb2JzRm9yV3JpdGluZykg
fHwgYmxvYnNGb3JXcml0aW5nLnNpemUoKSAhPSAxKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJsb2JVdGlsaXR5UXVl
dWUoKS5kaXNwYXRjaChbcGF0aCwgYmxvYnNGb3JXcml0aW5nID0gV1RGTW92ZShibG9ic0Zvcldy
aXRpbmcpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgeworICAgICAgICBib29sIHN1Y2Nlc3MgPSB3cml0ZUZpbGVQYXRoc09yRGF0YUJ1
ZmZlcnNUb0ZpbGUoYmxvYnNGb3JXcml0aW5nLmZpcnN0KCkuZmlsZVBhdGhzT3JEYXRhQnVmZmVy
cywgRmlsZVN5c3RlbTo6b3BlbkZpbGUocGF0aCwgRmlsZVN5c3RlbTo6RmlsZU9wZW5Nb2RlOjpX
cml0ZSksIHBhdGgpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzdWNjZXNzLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKHN1Y2Nlc3MpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaAppbmRleCAwOTMxMmZhMWQ5MjllZDViODgwZWJkY2Uz
NTZiOGFkMGFiMWQ4YWIzLi4yNGZlY2M5NWE0MTk2MGIxM2RkODc0ODE1MTBlYzI3OGE4YjFlZjI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3Ry
eUltcGwuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBVUkw7CiBjbGFzcyBSZXNvdXJjZUhhbmRs
ZTsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0Owor
Y2xhc3MgVGhyZWFkU2FmZURhdGFCdWZmZXI7CiAKIC8vIEJsb2JSZWdpc3RyeUltcGwgaXMgbm90
IHRocmVhZC1zYWZlLiBJdCBzaG91bGQgb25seSBiZSBjYWxsZWQgZnJvbSBtYWluIHRocmVhZC4K
IGNsYXNzIFdFQkNPUkVfRVhQT1JUIEJsb2JSZWdpc3RyeUltcGwgZmluYWwgOiBwdWJsaWMgQmxv
YlJlZ2lzdHJ5IHsKQEAgLTU0LDYgKzU1LDcgQEAgcHVibGljOgogICAgIEJsb2JEYXRhKiBnZXRC
bG9iRGF0YUZyb21VUkwoY29uc3QgVVJMJikgY29uc3Q7CiAKICAgICBSZWY8UmVzb3VyY2VIYW5k
bGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNl
SGFuZGxlQ2xpZW50Kik7CisgICAgdm9pZCB3cml0ZUJsb2JUb0ZpbGVQYXRoKGNvbnN0IFVSTCYg
YmxvYlVSTCwgY29uc3QgU3RyaW5nJiBwYXRoLCBGdW5jdGlvbjx2b2lkKGJvb2wgc3VjY2Vzcyk+
JiYgY29tcGxldGlvbkhhbmRsZXIpOwogCiBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kU3RvcmFn
ZUl0ZW1zKEJsb2JEYXRhKiwgY29uc3QgQmxvYkRhdGFJdGVtTGlzdCYsIGxvbmcgbG9uZyBvZmZz
ZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwpAQCAtNzAsNiArNzIsMTMgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgd3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGJs
b2JVUkxzLCBGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVBhdGhzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgb3ZlcnJpZGU7CiAKKyAgICBzdHJ1Y3QgQmxvYkZvckZpbGVX
cml0aW5nIHsKKyAgICAgICAgU3RyaW5nIGJsb2JVUkw7CisgICAgICAgIFZlY3RvcjxzdGQ6OnBh
aXI8U3RyaW5nLCBUaHJlYWRTYWZlRGF0YUJ1ZmZlcj4+IGZpbGVQYXRoc09yRGF0YUJ1ZmZlcnM7
CisgICAgfTsKKworICAgIGJvb2wgcG9wdWxhdGVCbG9ic0ZvckZpbGVXcml0aW5nKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgVmVjdG9yPEJsb2JGb3JGaWxlV3JpdGluZz4mKTsKKwog
ICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8QmxvYkRhdGE+PiBtX2Jsb2JzOwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9i
UmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdv
cmtCbG9iUmVnaXN0cnkuY3BwCmluZGV4IDFjZDM3NWNmOGU2MmIwNTVmZWFiOGNlNDgwOGI4Mzcy
OTA4OTUxYWMuLmYwODI0ZDczNmJlMmZjYmNjZjFmYjAxYTAxMmJkN2RiN2JmZmVkNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJl
Z2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0
d29ya0Jsb2JSZWdpc3RyeS5jcHAKQEAgLTE0MCw2ICsxNDAsMjUgQEAgdm9pZCBOZXR3b3JrQmxv
YlJlZ2lzdHJ5Ojp3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYlUKICAgICBibG9iUmVnaXN0cnkoKS53cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhi
bG9iVVJMcywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiBibG9iVVJMLCBjb25z
dCBTdHJpbmcmIHBhdGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCBzdWNjZXNzKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3sKKyAgICBpZiAoIWJsb2JSZWdpc3RyeSgpLmlzQmxvYlJlZ2lzdHJ5SW1wbCgp
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvIGJsb2JGaWxl
cyA9IGZpbGVzSW5CbG9iKHsgUGFyc2VkVVJMU3RyaW5nLCBibG9iVVJMIH0pOworICAgIGZvciAo
YXV0byYgZmlsZSA6IGJsb2JGaWxlcykKKyAgICAgICAgZmlsZS0+cHJlcGFyZUZvckZpbGVBY2Nl
c3MoKTsKKworICAgIHN0YXRpY19jYXN0PEJsb2JSZWdpc3RyeUltcGwmPihibG9iUmVnaXN0cnko
KSkud3JpdGVCbG9iVG9GaWxlUGF0aChibG9iVVJMLCBwYXRoLCBbYmxvYkZpbGVzID0gV1RGTW92
ZShibG9iRmlsZXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoYm9vbCBzdWNjZXNzKSB7CisgICAgICAgIGZvciAoYXV0byYgZmlsZSA6IGJsb2JGaWxl
cykKKyAgICAgICAgICAgIGZpbGUtPnJldm9rZUZpbGVBY2Nlc3MoKTsKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoc3VjY2Vzcyk7CisgICAgfSk7Cit9CisKIHZvaWQgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKiBjb25uZWN0aW9uKQogewogICAgIGlmICghbV9ibG9ic0ZvckNvbm5lY3Rpb24u
Y29udGFpbnMoY29ubmVjdGlvbikpCkBAIC0xNTUsMTIgKzE3NCwxNyBAQCB2b2lkIE5ldHdvcmtC
bG9iUmVnaXN0cnk6OmNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NEaWRDbG9zZShOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUAogVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PiBOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpmaWxlc0luQmxvYihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwpCiB7CiAgICAgaWYgKCFtX2Jsb2Jz
Rm9yQ29ubmVjdGlvbi5jb250YWlucygmY29ubmVjdGlvbikgfHwgIW1fYmxvYnNGb3JDb25uZWN0
aW9uLmZpbmQoJmNvbm5lY3Rpb24pLT52YWx1ZS5jb250YWlucyh1cmwpKQotICAgICAgICByZXR1
cm4gVmVjdG9yPFJlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+PigpOworICAgICAgICByZXR1
cm4geyB9OwogCisgICAgcmV0dXJuIGZpbGVzSW5CbG9iKHVybCk7Cit9CisKK1ZlY3RvcjxSZWZQ
dHI8QmxvYkRhdGFGaWxlUmVmZXJlbmNlPj4gTmV0d29ya0Jsb2JSZWdpc3RyeTo6ZmlsZXNJbkJs
b2IoY29uc3QgVVJMJiB1cmwpCit7CiAgICAgQVNTRVJUKGJsb2JSZWdpc3RyeSgpLmlzQmxvYlJl
Z2lzdHJ5SW1wbCgpKTsKICAgICBCbG9iRGF0YSogYmxvYkRhdGEgPSBzdGF0aWNfY2FzdDxCbG9i
UmVnaXN0cnlJbXBsJj4oYmxvYlJlZ2lzdHJ5KCkpLmdldEJsb2JEYXRhRnJvbVVSTCh1cmwpOwog
ICAgIGlmICghYmxvYkRhdGEpCi0gICAgICAgIHJldHVybiBWZWN0b3I8UmVmUHRyPEJsb2JEYXRh
RmlsZVJlZmVyZW5jZT4+KCk7CisgICAgICAgIHJldHVybiB7IH07CiAKICAgICBWZWN0b3I8UmVm
UHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4+IHJlc3VsdDsKICAgICBmb3IgKGNvbnN0IEJsb2JE
YXRhSXRlbSYgaXRlbSA6IGJsb2JEYXRhLT5pdGVtcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaApp
bmRleCA3OGRiZDM1NDcyZjUyM2EzNjU0YmY0ZDRhMmYxZDU2MmU2N2I4M2E3Li5jMTlhNjU5ZTBl
ZjQ1NWJiMTA4OGJjZjg1YzI5ZmRlYWM5MzcyNjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmgKQEAg
LTU0LDEwICs1NCwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnJlZ2lzdGVyQmxvYlVSTChOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogICAgIHVp
bnQ2NF90IGJsb2JTaXplKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CiAgICAgdm9pZCB3cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJp
bmc+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpOworICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0
aChjb25zdCBXZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rp
b248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNvbXBsZXRpb25IYW5kbGVyKTsKIAogICAgIHZvaWQg
Y29ubmVjdGlvblRvV2ViUHJvY2Vzc0RpZENsb3NlKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKik7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6OkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZT4+IGZpbGVzSW5CbG9iKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgV2Vi
Q29yZTo6VVJMJik7CisgICAgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpCbG9iRGF0YUZpbGVSZWZl
cmVuY2U+PiBmaWxlc0luQmxvYihjb25zdCBXZWJDb3JlOjpVUkwmKTsKIAogcHJpdmF0ZToKICAg
ICB+TmV0d29ya0Jsb2JSZWdpc3RyeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBkMGNiZjA4MWUzNGI2ZTU2N2VmZmU2Mjg1Yjgz
OGRhY2E5YzlmYmJlLi43YzQwMDIyY2IxZDhjN2Q2ODY0ZDcxYTdiNGMxNTAxZjYzM2YxM2FmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkxlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlci5o
IgogI2VuZGlmCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk5ldHdvcmtCbG9iUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIKQEAgLTMzMiw2ICszMzMsMjEgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6ZGlkR3JhbnRTYW5kYm94RXh0ZW5zaW9uc1RvU3RvcmFnZVByb2Nl
c3NGb3JCbG9icyh1aW50NjRfdAogICAgICAgICBoYW5kbGVyKCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgaGFuZGxlRm9yV3Jp
dGluZywgdWludDY0X3QgcmVxdWVzdElEKQoreworICAgIGF1dG8gZXh0ZW5zaW9uID0gU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlKFdURk1vdmUoaGFuZGxlRm9yV3JpdGluZykpOworICAgIGlmICgh
ZXh0ZW5zaW9uKSB7CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFdyaXRlQmxvYlRvRmlsZVBhdGgoZmFsc2Us
IHJlcXVlc3RJRCksIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZXh0ZW5zaW9u
LT5jb25zdW1lKCk7CisgICAgTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2luZ2xldG9uKCkud3JpdGVC
bG9iVG9GaWxlUGF0aCh1cmwsIHBhdGgsIFt0aGlzLCBleHRlbnNpb24gPSBXVEZNb3ZlKGV4dGVu
c2lvbiksIHJlcXVlc3RJRF0gKGJvb2wgc3VjY2VzcykgeworICAgICAgICBleHRlbnNpb24tPnJl
dm9rZSgpOworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRXcml0ZUJsb2JUb0ZpbGVQYXRoKHN1Y2Nlc3MsIHJl
cXVlc3RJRCksIDApOworICAgIH0pOworfQorCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9Q
QVJUSVRJT05JTkcpCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQ
YXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0KQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGNlN2VjNTVlNDY4ZGZm
Yzg0NGQ4YjlmNWRjMjIwODU2NjUzY2Y4N2YuLmRkMTQ5MTNjMTI0ZTg2YmE2YjkzMjE5OGFiYTUy
YWRlYTk1MzNlOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKQEAgLTIyNSw2ICsyMjUsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRHcmFu
dFNhbmRib3hFeHRlbnNpb25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVl
c3RJRCk7CiAKKyAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJM
JiwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgdWludDY0
X3QgcmVxdWVzdElEKTsKKwogI2lmIFVTRShTT1VQKQogICAgIHZvaWQgc2V0SWdub3JlVExTRXJy
b3JzKGJvb2wpOwogICAgIHZvaWQgdXNlclByZWZlcnJlZExhbmd1YWdlc0NoYW5nZWQoY29uc3Qg
VmVjdG9yPFN0cmluZz4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDhiODU1ZjA4OWJlZTg2ZWY3ZTli
MGY2NGVlNWE3NGZkMzYyYTFmNWUuLmJkNDhiOTFmZjhlOGM2YzcyMjcwZTFkODkzODQ3ZTZkOTM0
NGQzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtNzksNiArNzksOCBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBEaWRHcmFudFNhbmRib3hFeHRlbnNp
b25zVG9TdG9yYWdlUHJvY2Vzc0ZvckJsb2JzKHVpbnQ2NF90IHJlcXVlc3RJRCkKIAorICAgIFdy
aXRlQmxvYlRvRmlsZVBhdGgoV2ViQ29yZTo6VVJMIGJsb2JVUkwsIFN0cmluZyBwYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBoYW5kbGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CisKICAgICBQcmVjb25uZWN0VG8oV2ViQ29yZTo6VVJMIHVybCwgZW51bSBXZWJDb3JlOjpTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDQ5Y2U1NmFhNTVhMjEyZTlkNjNkZDk2
NjkwMTQ2YzUyYTUxNGU4ZTkuLjI4ODNmYWU5YTkwYzIzM2JhMTQ2MzBkYTkzYmU2NjliOTVlNWUz
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cApAQCAtMjc4NywzMyArMjc4NywxMSBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhU2VsZWN0aW9uT3B0
aW9uPiBBcmd1bWVudENvZGVyPE1lZGlhU2VsZWN0aW9uT3B0aW9uPjo6ZGVjb2RlKAogICAgIHJl
dHVybiB7eyBXVEZNb3ZlKCpkaXNwbGF5TmFtZSksIFdURk1vdmUoKnR5cGUpIH19OwogfQogCi12
b2lkIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9iRGF0YT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBQcm9taXNlZEJsb2JEYXRhJiBkYXRhKQotewotICAgIGVuY29kZXIgPDwgZGF0
YS5ibG9iVVJMOwotICAgIGVuY29kZXIgPDwgZGF0YS5maWxlUGF0aDsKLSAgICBlbmNvZGVTaGFy
ZWRCdWZmZXIoZW5jb2RlciwgZGF0YS5kYXRhLmdldCgpKTsKLX0KLQotYm9vbCBBcmd1bWVudENv
ZGVyPFByb21pc2VkQmxvYkRhdGE+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUHJvbWlzZWRC
bG9iRGF0YSYgZGF0YSkKLXsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGRhdGEuYmxvYlVSTCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZGF0YS5m
aWxlUGF0aCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICghZGVjb2RlU2hhcmVk
QnVmZmVyKGRlY29kZXIsIGRhdGEuZGF0YSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8UHJvbWlzZWRCbG9iSW5mbz46
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBQcm9taXNlZEJsb2JJbmZvJiBpbmZvKQog
ewogICAgIGVuY29kZXIgPDwgaW5mby5ibG9iVVJMOwogICAgIGVuY29kZXIgPDwgaW5mby5jb250
ZW50VHlwZTsKICAgICBlbmNvZGVyIDw8IGluZm8uZmlsZW5hbWU7Ci0gICAgZW5jb2Rlci5lbmNv
ZGVFbnVtKGluZm8uYmxvYlR5cGUpOwogICAgIGVuY29kZVR5cGVzQW5kRGF0YShlbmNvZGVyLCBp
bmZvLmFkZGl0aW9uYWxUeXBlcywgaW5mby5hZGRpdGlvbmFsRGF0YSk7CiB9CiAKQEAgLTI4Mjgs
OSArMjgwNiw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxQcm9taXNlZEJsb2JJbmZvPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFByb21pc2VkQmxvYkluZm8mCiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShpbmZvLmZpbGVuYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZShpbmZvLmJsb2JUeXBlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCiAg
ICAgaWYgKCFkZWNvZGVUeXBlc0FuZERhdGEoZGVjb2RlciwgaW5mby5hZGRpdGlvbmFsVHlwZXMs
IGluZm8uYWRkaXRpb25hbERhdGEpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYTJjZDA5YmIxY2Q1
MzA1Njc1ZjhmOGEyMjljNmQ0YzlhNzA2M2RlZC4uMTAwZTI2Njc4MGQwZjNmNDI3ZTFhM2MyODky
NzNmZjc2ZWI4MWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFy
Z3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKQEAgLTEwNCw3ICsxMDQsNiBAQCBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwogc3Ry
dWN0IFBhc3RlYm9hcmRDdXN0b21EYXRhOwogc3RydWN0IFBhc3RlYm9hcmRVUkw7CiBzdHJ1Y3Qg
UGx1Z2luSW5mbzsKLXN0cnVjdCBQcm9taXNlZEJsb2JEYXRhOwogc3RydWN0IFByb21pc2VkQmxv
YkluZm87CiBzdHJ1Y3QgUmVjZW50U2VhcmNoOwogc3RydWN0IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3M7CkBAIC02OTIsMTEgKzY5MSw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6TWVkaWFTZWxlY3Rpb25PcHRpb24+IHsKICAgICBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpNZWRpYVNlbGVjdGlvbk9wdGlvbj4gZGVjb2RlKERlY29kZXImKTsKIH07CiAK
LXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UHJvbWlzZWRCbG9iRGF0
YT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UHJv
bWlzZWRCbG9iRGF0YSYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29y
ZTo6UHJvbWlzZWRCbG9iRGF0YSYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2Rl
KEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpQcm9taXNlZEJsb2JJbmZvJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAzNDU1YTNmODQ0MDA1ZjQ1ZTBmMzBiMTFiMWVlN2I2ZmEwYTI3ODU5Li40
ZDY0M2Q1NGU3Y2MyZWEwMTAwZGM0MTNiZDI1MDQ2N2E1ODY5ZmQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTI0NSw2ICsyNDUsMTAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJ
UEM6OkNvbm5lY3Rpb24mKQogCiAgICAgbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlcyA9IG51
bGxwdHI7CiAKKyAgICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogbV93cml0ZUJsb2JUb0ZpbGVQYXRo
Q2FsbGJhY2tNYXAudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICBtX3dy
aXRlQmxvYlRvRmlsZVBhdGhDYWxsYmFja01hcC5jbGVhcigpOworCiAgICAgLy8gVGhpcyBtYXkg
Y2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KICAgICBuZXR3b3JrUHJvY2Vzc0NyYXNoZWQoKTsKIH0K
QEAgLTQ1OCw2ICs0NjIsMzAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vz
c0RpZFJlc3VtZSgpCiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcm9j
ZXNzRGlkUmVzdW1lKCksIDApOwogfQogCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OndyaXRl
QmxvYlRvRmlsZVBhdGgoY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGF0
aCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBpZiAo
IWNhblNlbmRNZXNzYWdlKCkpIHsKKyAgICAgICAgY2FsbGJhY2soZmFsc2UpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgc3RhdGljIHVpbnQ2NF90IHdyaXRlQmxvYlRvRmlsZVBhdGhD
YWxsYmFja0lkZW50aWZpZXJzID0gMDsKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gKyt3cml0
ZUJsb2JUb0ZpbGVQYXRoQ2FsbGJhY2tJZGVudGlmaWVyczsKKyAgICBtX3dyaXRlQmxvYlRvRmls
ZVBhdGhDYWxsYmFja01hcC5hZGQoY2FsbGJhY2tJRCwgV1RGTW92ZShjYWxsYmFjaykpOworCisg
ICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIGhhbmRsZUZvcldyaXRpbmc7CisgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKHBhdGgsIFNhbmRib3hFeHRlbnNpb246OlR5cGU6OlJl
YWRXcml0ZSwgaGFuZGxlRm9yV3JpdGluZyk7CisgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OldyaXRlQmxvYlRvRmlsZVBhdGgodXJsLCBwYXRoLCBoYW5kbGVGb3JXcml0aW5nLCBj
YWxsYmFja0lEKSwgMCk7Cit9CisKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkV3JpdGVC
bG9iVG9GaWxlUGF0aChib29sIHN1Y2Nlc3MsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAg
aWYgKGF1dG8gaGFuZGxlciA9IG1fd3JpdGVCbG9iVG9GaWxlUGF0aENhbGxiYWNrTWFwLnRha2Uo
Y2FsbGJhY2tJRCkpCisgICAgICAgIGhhbmRsZXIoc3VjY2Vzcyk7CisgICAgZWxzZQorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpw
cm9jZXNzUmVhZHlUb1N1c3BlbmQoKQogewogICAgIG1fdGhyb3R0bGVyLnByb2Nlc3NSZWFkeVRv
U3VzcGVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBlMWJmYjc2NGE1ODc0NjA5N2JhMWZiMjg0NmI2ZTVl
Y2ViYTFjNTc4Li5kYjg3NWNjODhmMmNmYWMwOGI3MjM5YTZjMmIzMTdkOGNiN2VlNWJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7CiBlbnVtIGNsYXNzIFNob3VsZFNhbXBsZTsKIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOworY2xhc3MgVVJMOwogc3RydWN0IFNlY3VyaXR5T3JpZ2luRGF0YTsKIH0KIApAQCAt
ODIsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJl
dmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y2FsbGJhY2spOwogI2VuZGlmCiAKKyAgICB2b2lkIHdyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3Qg
V2ViQ29yZTo6VVJMJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNhbGxiYWNrKTsKKwogICAgIHZvaWQgcHJvY2Vzc1JlYWR5VG9TdXNwZW5kKCk7
CiAKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwpAQCAtMTIxLDYgKzEy
NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRpZFdyaXRlQmxvYlRv
RmlsZVBhdGgoYm9vbCBzdWNjZXNzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGdy
YW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3JhZ2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVx
dWVzdElELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGF0aHMpOwogICAgIHZvaWQgbG9nRGlhZ25v
c3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBs
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKQEAgLTE1MSw2ICsxNTUsNyBAQCBwcml2YXRlOgogICAg
IFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CiAgICAgUHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4gbV90b2tlbkZvckhvbGRpbmdMb2NrZWRGaWxlczsKIAorICAg
IEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBzdWNjZXNzKT4+
IG1fd3JpdGVCbG9iVG9GaWxlUGF0aENhbGxiYWNrTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPj4gbV9zdG9yYWdl
QWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgppbmRleCBmYTgxYjQxOTBiOGM3NGVkZTY1OWNmMGY2NjFmNTQ5NTA1NmQ0OTY1Li43Zjc3
M2FjZTliMWEwNzQzZDc0MTc3NDU3Zjc1ZDhjYTM2NGM3YzFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yOSw2ICsyOSw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAgICAgRGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAKKyAgICBEaWRXcml0ZUJsb2JUb0ZpbGVQYXRoKGJvb2wgc3VjY2Vzcywg
dWludDY0X3QgY2FsbGJhY2tJRCkKKwogICAgIEdyYW50U2FuZGJveEV4dGVuc2lvbnNUb1N0b3Jh
Z2VQcm9jZXNzRm9yQmxvYnModWludDY0X3QgcmVxdWVzdElELCBWZWN0b3I8U3RyaW5nPiBwYXRo
cykKIAogICAgIFByb2Nlc3NSZWFkeVRvU3VzcGVuZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBjMTUwMTI5NTE0ZDUzOTE2MzQ2MDQ5YjMxM2M1ZjYxMzU5
YTVjZjZlLi5mYTM5NGQ4MjRmODM5NGRmMjZlYzgyYzZhOThhNmUzMzk2NDE0Y2ZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTY3LDYgKzY3LDcgQEAKICNp
bmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlv
bkRhdGEuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
TmV0d29ya1Byb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiT3B0aW9uYWxDYWxsYmFja0lELmgiCkBAIC03Mjc5LDYgKzcyODAsMTYg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbW92ZUF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKIAordm9p
ZCBXZWJQYWdlUHJveHk6OndyaXRlQmxvYlRvRmlsZVBhdGgoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChib29sIHN1Y2Nlc3MpPiYmIGNhbGxiYWNrKQor
eworICAgIGlmICghaXNWYWxpZCgpKSB7CisgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpLndyaXRlQmxvYlRvRmlsZVBhdGgodXJsLCBwYXRoLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7Cit9CisKICNpZiBFTkFCTEUoQVBQTElDQVRJT05fTUFOSUZFU1QpCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCAyZGNlNmJhMzE4MWM2M2MzNjg0ZTUwNzg2OWRlN2QyNWIxOWNiYmQw
Li5iM2JiMWFhNzczMGRkOGU5NjMzZWNiZmViNTMxZTY1OTY0Nzg2YzUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTI2Miw2ICsxMjYyLDggQEAgcHVibGljOgog
ICAgIHZvaWQgZ2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IHN0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6QXBwbGljYXRpb25NYW5pZmVzdD4mLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJik7CiAjZW5kaWYKIAorICAgIHZvaWQgd3JpdGVCbG9iVG9GaWxlUGF0aChjb25zdCBX
ZWJDb3JlOjpVUkwmIGJsb2JVUkwsIGNvbnN0IFN0cmluZyYgcGF0aCwgRnVuY3Rpb248dm9pZChi
b29sIHN1Y2Nlc3MpPiYmKTsKKwogICAgIFdlYlByZWZlcmVuY2VzU3RvcmUgcHJlZmVyZW5jZXNT
dG9yZSgpIGNvbnN0OwogCiBwcml2YXRlOgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>