<?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>133412</bug_id>
          
          <creation_ts>2014-05-30 14:36:51 -0700</creation_ts>
          <short_desc>Srcset refactoring to match spec changes</short_desc>
          <delta_ts>2015-06-29 13:04:49 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoav Weiss">yoav</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philipj</cc>
    
    <cc>pknight</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1012681</commentid>
    <comment_count>0</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2014-05-30 14:36:51 -0700</bug_when>
    <thetext>Srcset refactoring to match spec changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012683</commentid>
    <comment_count>1</comment_count>
      <attachid>232305</attachid>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2014-05-30 14:42:46 -0700</bug_when>
    <thetext>Created attachment 232305
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012684</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-30 14:45:03 -0700</bug_when>
    <thetext>Attachment 232305 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
ERROR: LayoutTests/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
ERROR: LayoutTests/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 4 in 20 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>1012719</commentid>
    <comment_count>3</comment_count>
      <attachid>232305</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-05-30 20:56:24 -0700</bug_when>
    <thetext>Comment on attachment 232305
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=232305&amp;action=review

Patch is not compiling on Mac or Windows.

I suggest breaking this patch up into two pieces. One patch can rearrange the code and refactor so it’s in a new location. The second patch should have the substantive change. It’s hard to successfully review a patch that both moves and changes code so it’s best to do the move and the change in two separate steps.

&gt; Source/JavaScriptCore/ChangeLog:6
&gt; +				Added a PICTURE_ELEMENT compile flag.

Tabs not allowed in WebKit source files, including change log.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Srcset refactoring to match spec changes

Changing behavior is not “refactoring”, so this title is wrong.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests (OOPS!).

This needs to be replaced by a line that doesn’t say “OOPS”.

&gt; LayoutTests/fast/hidpi/image-srcset-invalid-descriptor.html:7
&gt; -&lt;script src=&quot;../../resources/js-test.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;

Why this change? It broke the test: we no longer get successfullyParsed. If we use pre.js then we also need to use post.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1012730</commentid>
    <comment_count>4</comment_count>
    <who name="Yoav Weiss">yoav</who>
    <bug_when>2014-05-30 23:00:03 -0700</bug_when>
    <thetext>Thanks for the review! :)

I&apos;ll split up the patch into 2 as suggested and correct the review comments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232305</attachid>
            <date>2014-05-30 14:42:46 -0700</date>
            <delta_ts>2014-05-30 20:56:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133412-20140530234220.patch</filename>
            <type>text/plain</type>
            <size>61603</size>
            <attacher name="Yoav Weiss">yoav</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
MzMxMDg0MDdjMjJlMTdiMjIwZDdhNzExMTQyMDY5YzNlN2I1ZDcyLi4wOGJjZDAyNmM4MjRhOWY4
ZDAxODdjM2Y3ZWUyMTkyZjhjYmUxOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNC0wNS0zMCAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KKworICAg
ICAgICBTcmNzZXQgcmVmYWN0b3JpbmcgdG8gbWF0Y2ggc3BlYyBjaGFuZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0MTIKKworCQkJCUFkZGVk
IGEgUElDVFVSRV9FTEVNRU5UIGNvbXBpbGUgZmxhZy4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOgorCiAyMDE0LTA1LTI4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IG5vdC14ODYgMzItYml0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDIzMTc0NDk2NWI2MzM1YTk4NjhkNjYxZDBlOGU2NWVlMGYwOWJiNGUuLmFmMGU1ZmI1M2QzOTg0
YzhhOTE2NGQwNjM2MzJkNzcwNDlhNGUxMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAor
MjAxNC0wNS0zMCAgWW9hdiBXZWlzcyAgPHlvYXZAeW9hdi53cz4KKworICAgICAgICBTcmNzZXQg
cmVmYWN0b3JpbmcgdG8gbWF0Y2ggc3BlYyBjaGFuZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzM0MTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBodG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEltYWdlRWxlbWVudDo6c2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRpZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlQnlTY2Fs
ZUZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpwYXJzZURlc2NyaXB0b3JzKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSW1hZ2VzV2l0aFNjYWxlRnJvbVNyY3Nl
dEF0dHJpYnV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpiZXN0Rml0U291cmNlRm9y
SW1hZ2VBdHRyaWJ1dGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VySWRpb21zLmg6CisgICAgICAgIChXZWJDb3JlOjppc0hUTUxTcGFjZSk6CisgICAgICAgIChX
ZWJDb3JlOjppc0NvbW1hKToKKyAgICAgICAgKFdlYkNvcmU6OmlzSFRNTFNwYWNlT3JDb21tYSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVdpdGhTY2FsZTo6SW1hZ2VXaXRoU2NhbGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VXaXRoU2NhbGU6OmltYWdlVVJMKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdlV2l0aFNjYWxlOjpzY2FsZUZhY3Rvcik6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OlN0YXJ0VGFnU2Nhbm5lcjo6cHJvY2Vz
c0F0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVCeURlbnNpdHkpOgorICAgICAgICAo
V2ViQ29yZTo6YXBwZW5kRGVzY3JpcHRvckFuZFJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OmFw
cGVuZENoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjppc0VPRik6CisgICAgICAgIChXZWJD
b3JlOjp0b2tlbml6ZURlc2NyaXB0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1ZpZXdU
b0Zsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmluZ1ZpZXdUb0ludCk6CisgICAgICAgIChX
ZWJDb3JlOjpwYXJzZURlc2NyaXB0b3JzKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSW1hZ2VD
YW5kaWRhdGVzRnJvbVNyY3NldEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpwaWNrQmVz
dEltYWdlQ2FuZGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmJlc3RGaXRTb3VyY2VGb3JTcmNz
ZXRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6YmVzdEZpdFNvdXJjZUZvckltYWdlQXR0
cmlidXRlcyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRlc2NyaXB0b3JQYXJzaW5nUmVzdWx0OjpEZXNjcmlwdG9y
UGFyc2luZ1Jlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNjcmlwdG9yUGFyc2luZ1Jlc3Vs
dDo6aGFzRGVuc2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpEZXNjcmlwdG9yUGFyc2luZ1Jlc3Vs
dDo6aGFzV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGVzY3JpcHRvclBhcnNpbmdSZXN1bHQ6
Omhhc0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdDo6
ZGVuc2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdDo6cmVz
b3VyY2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdDo6
cmVzb3VyY2VIZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6RGVzY3JpcHRvclBhcnNpbmdSZXN1
bHQ6OnNldFJlc291cmNlV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6RGVzY3JpcHRvclBhcnNp
bmdSZXN1bHQ6OnNldFJlc291cmNlSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkRlc2NyaXB0
b3JQYXJzaW5nUmVzdWx0OjpzZXREZW5zaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ2Fu
ZGlkYXRlOjpJbWFnZUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNhbmRpZGF0
ZTo6dG9TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VDYW5kaWRhdGU6OnVybCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUNhbmRpZGF0ZTo6c2V0RGVuc2l0eSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUNhbmRpZGF0ZTo6ZGVuc2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZUNhbmRpZGF0ZTo6cmVzb3VyY2VXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUNhbmRp
ZGF0ZTo6c3JjT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQ2FuZGlkYXRlOjppc0Vt
cHR5KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9QYXJzaW5nVXRpbGl0aWVzLmg6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1BhcnNpbmdVdGlsaXRpZXMuaC4KKyAgICAg
ICAgKHNraXBFeGFjdGx5KToKKyAgICAgICAgKHNraXBVbnRpbCk6CisgICAgICAgIChza2lwV2hp
bGUpOgorICAgICAgICAocmV2ZXJzZVNraXBXaGlsZSk6CisKIDIwMTQtMDUtMjggIE9saXZlciBI
dW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIERPTSBwcm9wZXJ0aWVzIGV4
cG9zZWQgYXMgaW5zdGFuY2UgcHJvcGVydGllcyB1c2UgdGhlIGJhc2Ugb2JqZWN0IGluc3RlYWQg
b2YgfHRoaXN8CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZjkyZjYwNzc4YWNiOGUxNmNlODMyMjViNmMz
NTdlNWMwZDYwYTNlMi4uM2ZiZDhiMjM4ZjM5MjIzMTE3MzM4OTA1OTk5MGRhNTA3ODM1NWYyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE0LTA1LTMwICBZb2F2IFdlaXNz
ICA8eW9hdkB5b2F2LndzPgorCisgICAgICAgIFNyY3NldCByZWZhY3RvcmluZyB0byBtYXRjaCBz
cGVjIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzMzQxMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisKIDIwMTQtMDUt
MjcgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZSBFTkFCTEUo
TUVESUFfU09VUkNFKSBvbiBNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYzhlOGU1YzFhNDg4MjMzZGMzMGJi
ZDdlZmFlMDU1ZjYzMzgxMTY5Li4zNTBlZTRlMzc3YzllNGM3M2IyZWEyNmExMWNlMDI2MjU3ODIx
ZGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTQtMDUtMzAgIFlvYXYgV2Vpc3Mg
IDx5b2F2QHlvYXYud3M+CisKKyAgICAgICAgU3Jjc2V0IHJlZmFjdG9yaW5nIHRvIG1hdGNoIHNw
ZWMgY2hhbmdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTMzNDEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzoKKwogMjAxNC0wNS0y
OCAgVGltb3RoeSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIFdLV2ViVmlldyBTUEkgdG8gZm9yY2VmdWxseSBraWxsIHRoZSBhc3NvY2lhdGVkIFdlYiBw
cm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNzE5YzBlOThjYzIxNGNkMmJmOGEy
NGFmY2NiMjI4YzM0Yzg4NjZhYi4uNGQ0MDkxZWY0ZDk5ZDM3NzZlMDNjMmMyZDcxMjNiZTgxMGJh
YjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NvbmZpZ3VyYXRpb25zL0Zl
YXR1cmVEZWZpbmVzLnhjY29uZmlnCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1
cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMjIxLDYgKzIyMSw3IEBAIEVOQUJM
RV9XRUJfUkVQTEFZX21hY29zeF9Qcm9kdWN0aW9uID0gOwogRU5BQkxFX1dFQl9SRVBMQVlfaXBo
b25lb3MgPSA7CiBFTkFCTEVfV0VCX1JFUExBWV9pcGhvbmVzaW11bGF0b3IgPSA7CiBFTkFCTEVf
V0VCX1NPQ0tFVFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7CitFTkFCTEVfUElDVFVSRSA9IEVOQUJM
RV9QSUNUVVJFOwogCiBFTkFCTEVfV0VCX1RJTUlORyA9ICQoRU5BQkxFX1dFQl9USU1JTkdfJChQ
TEFURk9STV9OQU1FKSk7CiBFTkFCTEVfV0VCX1RJTUlOR19tYWNvc3ggPSAkKEVOQUJMRV9XRUJf
VElNSU5HX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGZiNTVjY2FhNzRlZWFhYzhlYzA1ZTY3YjEzZDIxOGUwNDU1NzFhMzgu
LmQ0NDIzNDZhYjg3MmU2YjIwM2M0MTZkNDMwY2E4ODFkNDk2MmNhNjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CkBAIC0xNzAwLDYgKzE3MDAsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRt
bC9wYXJzZXIvSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5jcHAKICAgICBodG1sL3BhcnNlci9I
VE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKKyAgICBodG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAogICAgIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcAogICAgIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hl
ZHVsZXIuY3BwCiAgICAgaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcgYi9Tb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZwppbmRleCA3MTljMGU5OGNjMjE0Y2QyYmY4YTI0YWZjY2IyMjhjMzRjODg2NmFiLi40ZDQwOTFl
ZjRkOTlkMzc3NmUwM2MyYzJkNzEyM2JlODEwYmFiOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMjIxLDYg
KzIyMSw3IEBAIEVOQUJMRV9XRUJfUkVQTEFZX21hY29zeF9Qcm9kdWN0aW9uID0gOwogRU5BQkxF
X1dFQl9SRVBMQVlfaXBob25lb3MgPSA7CiBFTkFCTEVfV0VCX1JFUExBWV9pcGhvbmVzaW11bGF0
b3IgPSA7CiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7CitFTkFCTEVf
UElDVFVSRSA9IEVOQUJMRV9QSUNUVVJFOwogCiBFTkFCTEVfV0VCX1RJTUlORyA9ICQoRU5BQkxF
X1dFQl9USU1JTkdfJChQTEFURk9STV9OQU1FKSk7CiBFTkFCTEVfV0VCX1RJTUlOR19tYWNvc3gg
PSAkKEVOQUJMRV9XRUJfVElNSU5HX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01B
Sk9SKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggODU2OTYzYzY4Y2RmOWIxZDQ2YjA2ZmUzMGIyMmUwOTdhZGRhNjYzMy4uYTM3
OTJkMzc1MjA1ZWFmYzRjZTM1MDA4YTk5ZGI2Y2YyNGY5M2JmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjAxMSw2ICsyMDEx
LDkgQEAKIAkJNTJGNTJFMTExNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJGNTJF
MTAxNEEwMTM0RjAwQUNDMzk3IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLm1tICovOyB9OwogCQk1
MzE3NjEyMjEzQzUxNjY5MDAyNkU0NTQgLyogU3R5bGVGbGV4aWJsZUJveERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTMxNzYxMjAxM0M1MTY2
OTAwMjZFNDU0IC8qIFN0eWxlRmxleGlibGVCb3hEYXRhLmNwcCAqLzsgfTsKIAkJNTMxNzYxMjMx
M0M1MTY2OTAwMjZFNDU0IC8qIFN0eWxlRmxleGlibGVCb3hEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE3NjEyMTEzQzUxNjY5MDAyNkU0NTQg
LyogU3R5bGVGbGV4aWJsZUJveERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQk1MzE4NDVCNzE5MzdFNDA3MDA3QUU0MkYgLyogSFRNTFNyY3Nl
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MzE4NDVCNTE5MzdFNDA3MDA3QUU0MkYgLyogSFRNTFNyY3NldFBhcnNlci5jcHAgKi87IH07
CisJCTUzMTg0NUI4MTkzN0U0MDcwMDdBRTQyRiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MzE4NDVCNjE5MzdFNDA3
MDA3QUU0MkYgLyogUGFyc2luZ1V0aWxpdGllcy5oICovOyB9OworCQk1MzZENUExRDE5MzkyN0FD
MDBDRTRDQUIgLyogSFRNTFNyY3NldFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTM2RDVBMUMxOTM5MjdBQzAwQ0U0Q0FCIC8qIEhUTUxTcmNz
ZXRQYXJzZXIuaCAqLzsgfTsKIAkJNTNDODI5OEQxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZs
ZXhpYmxlQm94LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUzQzgyOThCMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5jcHAgKi87
IH07CiAJCTUzQzgyOThFMTNEOEQ5MjcwMERFMkRFQiAvKiBSZW5kZXJGbGV4aWJsZUJveC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDODI5OEMxM0Q4
RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTNFMjlFNUUxNjdBOEExOTAwNTg2RDNEIC8q
IEludGVybmFsU2V0dGluZ3NHZW5lcmF0ZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTNFMjlFNUMxNjdBOEExOTAwNTg2RDNEIC8qIEludGVybmFs
U2V0dGluZ3NHZW5lcmF0ZWQuY3BwICovOyB9OwpAQCAtMjMzNyw3ICsyMzQwLDYgQEAKIAkJN0E3
NEVDQkExMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTc0RUNCODEwMTgz
OUE1MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCAqLzsgfTsKIAkJN0E3
NEVDQkIxMDE4MzlBNjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQjkxMDE4MzlB
NjAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oICovOyB9OwogCQk3QTc0RUNC
RDEwMTgzOURBMDBCRjkzOUUgLyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0E3NEVDQkMxMDE4
MzlEQTAwQkY5MzlFIC8qIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCAqLzsgfTsK
LQkJN0E5Mzg2ODQxOERDQzE0NTAwQjgyNjNEIC8qIFBhcnNpbmdVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgxMThEQ0MxNDUw
MEI4MjYzRCAvKiBQYXJzaW5nVXRpbGl0aWVzLmggKi87IH07CiAJCTdBOTM4Njg1MThEQ0MxNDUw
MEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgyMThEQ0MxNDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNw
cCAqLzsgfTsKIAkJN0E5Mzg2ODYxOERDQzE0NTAwQjgyNjNEIC8qIFZUVFNjYW5uZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBOTM4NjgzMThEQ0Mx
NDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmggKi87IH07CiAJCTdBQUJBMjU5MTRCQzYxMzMwMEFB
OUExMSAvKiBET01FZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0FBQkEyNTcxNEJDNjEzMzAwQUE5QTExIC8qIERPTUVkaXRvci5jcHAgKi87
IH07CkBAIC05MDcyLDYgKzkwNzQsOSBAQAogCQk1MkY1MkUxMDE0QTAxMzRGMDBBQ0MzOTcgLyog
TlNTY3JvbGxlckltcERldGFpbHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBOU1Njcm9sbGVySW1wRGV0YWlscy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTMxNzYxMjAxM0M1MTY2OTAwMjZFNDU0IC8qIFN0eWxlRmxleGlibGVCb3hEYXRhLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFN0eWxlRmxleGlibGVCb3hE
YXRhLmNwcDsgcGF0aCA9IHN0eWxlL1N0eWxlRmxleGlibGVCb3hEYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxNzYxMjExM0M1MTY2OTAwMjZFNDU0IC8qIFN0eWxlRmxl
eGlibGVCb3hEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlRmxl
eGlibGVCb3hEYXRhLmg7IHBhdGggPSBzdHlsZS9TdHlsZUZsZXhpYmxlQm94RGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MzE4NDVCNTE5MzdFNDA3MDA3QUU0MkYgLyogSFRN
TFNyY3NldFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBI
VE1MU3Jjc2V0UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTMxODQ1QjYxOTM3RTQwNzAwN0FFNDJGIC8q
IFBhcnNpbmdVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGFy
c2luZ1V0aWxpdGllcy5oOyBwYXRoID0gcGFyc2VyL1BhcnNpbmdVdGlsaXRpZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTM2RDVBMUMxOTM5MjdBQzAwQ0U0Q0FCIC8qIEhUTUxT
cmNzZXRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTFNyY3Nl
dFBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTNDODI5OEIxM0Q4RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhp
YmxlQm94LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckZs
ZXhpYmxlQm94LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTNDODI5OEMxM0Q4
RDkyNzAwREUyREVCIC8qIFJlbmRlckZsZXhpYmxlQm94LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFJlbmRlckZsZXhpYmxlQm94Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUzRTI5RTVDMTY3QThBMTkwMDU4NkQzRCAvKiBJbnRlcm5hbFNldHRpbmdzR2VuZXJh
dGVkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludGVybmFsU2V0
dGluZ3NHZW5lcmF0ZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTQzMiw3
ICs5NDM3LDYgQEAKIAkJN0E3NEVDQjgxMDE4MzlBNTAwQkY5MzlFIC8qIEluc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTc0RUNCOTEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QTc0RUNCQzEwMTgzOURBMDBCRjkzOUUg
LyogSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QTkzODY4MTE4RENDMTQ1MDBCODI2M0QgLyogUGFy
c2luZ1V0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzaW5n
VXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBOTM4NjgyMThEQ0Mx
NDUwMEI4MjYzRCAvKiBWVFRTY2FubmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFZUVFNjYW5uZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
QTkzODY4MzE4RENDMTQ1MDBCODI2M0QgLyogVlRUU2Nhbm5lci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBWVFRTY2FubmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdBQUJBMjU3MTRCQzYxMzMwMEFBOUExMSAvKiBET01FZGl0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NRWRpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE4MTg5LDYgKzE4MTkzLDggQEAKIAkJCQk5NzdCMzg1RDEyMjg4M0U5
MDBCODFGRjggLyogSFRNTFNjcmlwdFJ1bm5lckhvc3QuaCAqLywKIAkJCQk5NzdFMkRDQjEyRjBF
MjgzMDBDMTMzNzkgLyogSFRNTFNvdXJjZVRyYWNrZXIuY3BwICovLAogCQkJCTk3N0UyRENDMTJG
MEUyODMwMEMxMzM3OSAvKiBIVE1MU291cmNlVHJhY2tlci5oICovLAorCQkJCTUzMTg0NUI1MTkz
N0U0MDcwMDdBRTQyRiAvKiBIVE1MU3Jjc2V0UGFyc2VyLmNwcCAqLywKKwkJCQk1MzZENUExQzE5
MzkyN0FDMDBDRTRDQUIgLyogSFRNTFNyY3NldFBhcnNlci5oICovLAogCQkJCTk3QzFGNTUyMTIy
ODU1Q0IwMEVERTYxNSAvKiBIVE1MU3RhY2tJdGVtLmggKi8sCiAJCQkJOTdDMUY1NTIxMjI4NTVD
QjAwRURFNjE2IC8qIEhUTUxUb2tlbi5oICovLAogCQkJCTk3N0IzODVFMTIyODgzRTkwMEI4MUZG
OCAvKiBIVE1MVG9rZW5pemVyLmNwcCAqLywKQEAgLTE4MTk3LDYgKzE4MjAzLDcgQEAKIAkJCQk5
NzdCMzcyMjEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRyZWVCdWlsZGVyLmggKi8sCiAJCQkJQTg4
MDVBRjExNkM5NkFFQTAwMEU5RDk4IC8qIElucHV0U3RyZWFtUHJlcHJvY2Vzc29yLmggKi8sCiAJ
CQkJOEEzMDlDOUUxMjM5NTBCRTAwQ0I5MjA0IC8qIE5lc3RpbmdMZXZlbEluY3JlbWVudGVyLmgg
Ki8sCisJCQkJNTMxODQ1QjYxOTM3RTQwNzAwN0FFNDJGIC8qIFBhcnNpbmdVdGlsaXRpZXMuaCAq
LywKIAkJCQk5N0JDODQ4MTEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmNw
cCAqLywKIAkJCQk5N0JDODQ4MjEyMzZGRDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2Vy
LmggKi8sCiAJCQkJOTc3RTJFMEIxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuY3BwICov
LApAQCAtMTk1MDAsNyArMTk1MDcsNiBAQAogCQlCMUFENEU3NzEzQTEyQTcyMDA4NDZCMjcgLyog
dHJhY2sgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTdB
OTM4NjgxMThEQ0MxNDUwMEI4MjYzRCAvKiBQYXJzaW5nVXRpbGl0aWVzLmggKi8sCiAJCQkJN0E0
NTAzMkQxOERCNzE3MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgKi8sCiAJCQkJ
N0E0NTAzMkUxOERCNzE3MjAwMzc3QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5oICovLAogCQkJ
CUJFODhFMENDMTcxNUQyQTIwMDY1OEQ5OCAvKiBBdWRpb1RyYWNrLmNwcCAqLywKQEAgLTI0MjE5
LDcgKzI0MjI1LDYgQEAKIAkJCQlBODcxREUyQjBBMTUyQUM4MDBCMTJBNjggLyogSFRNTEZyYW1l
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRGRkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8q
IEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0UyNDFGRjBCMkI0
RTQwMDBDNzMyQTEgLyogSFRNTEZyYW1lT3duZXJFbGVtZW50LmggaW4gSGVhZGVycyAqLywKLQkJ
CQk3QTkzODY4NDE4RENDMTQ1MDBCODI2M0QgLyogUGFyc2luZ1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg3MURFMjgwQTE1MkFDODAwQjEyQTY4IC8qIEhUTUxGcmFtZVNldEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJEMEExNTJBQzgwMEIxMkE2OCAvKiBIVE1M
SGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4RUE3Q0I4MEExOTJCOUMwMEE4RUY1
RiAvKiBIVE1MSGVhZGluZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQzMTcsNiArMjQz
MjIsNyBAQAogCQkJCTUxNjczMEE0MTgyRDhGQkIwMDNGQUY1QyAvKiBJREJDdXJzb3JCYWNrZW5k
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTAxOTQ0NTE4MzZGN0U1MDA5MjU1MjMgLyogSURCQ3Vy
c29yQmFja2VuZE9wZXJhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDcxOUM0MTgxMTA2
RTAwMDE2REM1MSAvKiBJREJDdXJzb3JXaXRoVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUz
MTg0NUI4MTkzN0U0MDcwMDdBRTQyRiAvKiBQYXJzaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MUQ3MTlDNzE4MTEwNkUwMDAxNkRDNTEgLyogSURCRGF0YWJhc2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxNzcxQzhGMTgyREI0QjcwMDhFNzgxRSAvKiBJREJEYXRhYmFzZUJhY2tl
bmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDcxOUNBMTgxMTA2RTAwMDE2REM1MSAvKiBJREJE
YXRhYmFzZUNhbGxiYWNrcy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjMxMSw2ICsyNjMxNyw3IEBA
CiAJCQkJQTE0ODMyQkExODdGNjNFOTAwREE2M0E2IC8qIFdBS1ZpZXdQcml2YXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBMTQ4MzJCQjE4N0Y2NDMyMDBEQTYzQTYgLyogV0FLV2luZG93LmggaW4g
SGVhZGVycyAqLywKIAkJCQlGRDdGMjk5MjEzRDRDMENCMDBBRDk1MzUgLyogV2F2ZVNoYXBlckRT
UEtlcm5lbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTM2RDVBMUQxOTM5MjdBQzAwQ0U0Q0FCIC8q
IEhUTUxTcmNzZXRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZEN0YyOTk0MTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ3RjI5OTcx
M0Q0QzBDQjAwQUQ5NTM1IC8qIFdhdmVTaGFwZXJQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCTI5QTgxMjQ5MEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjc1NDMsNiArMjc1NTAsNyBAQAogCQkJCUIy
NzUzNTc5MEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3RNYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk2RTBFNTY5QjE4M0JGRkU2MDBFMEU4RDUgLyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCMjc1MzU2QzBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRTaXplLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUzMTg0NUI3MTkzN0U0MDcwMDdBRTQyRiAvKiBIVE1MU3Jj
c2V0UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTVCMEIwNTM4MTQwMDJDRTY0
RiAvKiBGbG9hdFNpemVDRy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjc1MzU3QTBCMDUzODE0
MDAyQ0U2NEYgLyogRmxvYXRTaXplTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRDcyRjZENzkx
NTMxNTlBMzAwMUVFNDRFIC8qIEZsb3dUaHJlYWRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNmMzNDFiYzUy
MTIwMmM1YWEzZjIzOGQxMzJiNTQwNGRlODcxNWJlYy4uOTY1ZTllODk1NDI3M2U5ODJmYTM3ZDZk
M2YyZTM5OWM3MWYxMTVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2lu
Y2x1ZGUgIkhUTUxTcmNzZXRQYXJzZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTIyLDE5ICsxMjMsMjkg
QEAgY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MSW1hZ2VFbGVtZW50OjppbWFnZVNvdXJjZVVSTCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlVVJMLmlzRW1wdHkoKSA/IGZhc3RHZXRB
dHRyaWJ1dGUoc3JjQXR0cikgOiBtX2Jlc3RGaXRJbWFnZVVSTDsKIH0KIAordm9pZCBIVE1MSW1h
Z2VFbGVtZW50OjpzZXRCZXN0Rml0VVJMQW5kRFBSRnJvbUltYWdlQ2FuZGlkYXRlKGNvbnN0IElt
YWdlQ2FuZGlkYXRlJiBjYW5kaWRhdGUpCit7CisgICAgbV9iZXN0Rml0SW1hZ2VVUkwgPSBjYW5k
aWRhdGUudXJsKCk7CisgICAgZmxvYXQgY2FuZGlkYXRlRGVuc2l0eSA9IGNhbmRpZGF0ZS5kZW5z
aXR5KCk7CisgICAgaWYgKGNhbmRpZGF0ZURlbnNpdHkgPj0gMCkKKyAgICAgICAgbV9pbWFnZURl
dmljZVBpeGVsUmF0aW8gPSAxIC8gY2FuZGlkYXRlRGVuc2l0eTsKKyAgICBpZiAocmVuZGVyZXIo
KSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkpCisgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVy
ZXIoKSktPnNldEltYWdlRGV2aWNlUGl4ZWxSYXRpbyhtX2ltYWdlRGV2aWNlUGl4ZWxSYXRpbyk7
Cit9CisKIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBpZiAobmFt
ZSA9PSBhbHRBdHRyKSB7CiAgICAgICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlz
UmVuZGVySW1hZ2UoKSkKICAgICAgICAgICAgIHRvUmVuZGVySW1hZ2UocmVuZGVyZXIoKSktPnVw
ZGF0ZUFsdFRleHQoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gc3JjQXR0ciB8fCBuYW1lID09
IHNyY3NldEF0dHIpIHsKLSAgICAgICAgSW1hZ2VXaXRoU2NhbGUgY2FuZGlkYXRlID0gYmVzdEZp
dFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyhkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCks
IGZhc3RHZXRBdHRyaWJ1dGUoc3JjQXR0ciksIGZhc3RHZXRBdHRyaWJ1dGUoc3Jjc2V0QXR0cikp
OwotICAgICAgICBtX2Jlc3RGaXRJbWFnZVVSTCA9IGNhbmRpZGF0ZS5pbWFnZVVSTChmYXN0R2V0
QXR0cmlidXRlKHNyY0F0dHIpLCBmYXN0R2V0QXR0cmlidXRlKHNyY3NldEF0dHIpKTsKLSAgICAg
ICAgZmxvYXQgY2FuZGlkYXRlU2NhbGVGYWN0b3IgPSBjYW5kaWRhdGUuc2NhbGVGYWN0b3IoKTsK
LSAgICAgICAgaWYgKGNhbmRpZGF0ZVNjYWxlRmFjdG9yID4gMCkKLSAgICAgICAgICAgIG1faW1h
Z2VEZXZpY2VQaXhlbFJhdGlvID0gMSAvIGNhbmRpZGF0ZVNjYWxlRmFjdG9yOwotICAgICAgICBp
ZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc0ltYWdlKCkpCi0gICAgICAgICAgICB0b1Jl
bmRlckltYWdlKHJlbmRlcmVyKCkpLT5zZXRJbWFnZURldmljZVBpeGVsUmF0aW8obV9pbWFnZURl
dmljZVBpeGVsUmF0aW8pOworICAgICAgICBJbWFnZUNhbmRpZGF0ZSBjYW5kaWRhdGUgPSBiZXN0
Rml0U291cmNlRm9ySW1hZ2VBdHRyaWJ1dGVzKGRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3Io
KSwKKyNpZiBFTkFCTEUoUElDVFVSRV9FTEVNRU5UKQorICAgICAgICAgICAgMCwKKyNlbmRpZiAv
LyBFTkFCTEUoUElDVFVSRV9FTEVNRU5UKQorICAgICAgICAgICAgZmFzdEdldEF0dHJpYnV0ZShz
cmNBdHRyKSwKKyAgICAgICAgICAgIGZhc3RHZXRBdHRyaWJ1dGUoc3Jjc2V0QXR0cikpOworICAg
ICAgICBzZXRCZXN0Rml0VVJMQW5kRFBSRnJvbUltYWdlQ2FuZGlkYXRlKGNhbmRpZGF0ZSk7CiAg
ICAgICAgIG1faW1hZ2VMb2FkZXIudXBkYXRlRnJvbUVsZW1lbnRJZ25vcmluZ1ByZXZpb3VzRXJy
b3IoKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gdXNlbWFwQXR0cikgewogICAgICAgICBzZXRJ
c0xpbmsoIXZhbHVlLmlzTnVsbCgpICYmICFzaG91bGRQcm9oaWJpdExpbmtzKHRoaXMpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKaW5kZXggNTQyN2Y5YzQwYjdiODAyNjY2
NjMzODlhMjdlMDc3ZGJkNjI4ZmU0NS4uMjM5MzliYjk5Y2IwODNmMjM0ZGU5N2FlMDdjZWViMTli
MGE0ZGNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTMyLDYg
KzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTEZvcm1FbGVtZW50Owor
Y2xhc3MgSW1hZ2VDYW5kaWRhdGU7CiAKIGNsYXNzIEhUTUxJbWFnZUVsZW1lbnQgOiBwdWJsaWMg
SFRNTEVsZW1lbnQsIHB1YmxpYyBGb3JtTmFtZWRJdGVtIHsKICAgICBmcmllbmQgY2xhc3MgSFRN
TEZvcm1FbGVtZW50OwpAQCAtOTksNiArMTAwLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRBdHRhY2hSZW5kZXJlcnMoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlclB0
cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHls
ZT4pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QmVzdEZpdFVSTEFuZERQUkZyb21JbWFnZUNhbmRp
ZGF0ZShjb25zdCBJbWFnZUNhbmRpZGF0ZSYpOwogCiAgICAgdmlydHVhbCBib29sIGNhblN0YXJ0
U2VsZWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggYTIxODZiMTE3YjllN2YxY2U1MmVhYWVl
NThlZDcwYmY2MjdkNTE0My4uOTFhNjYwNmE5YzRjYjc3ZDc5MzAzYmNkNzYzZTY4OTc1NWQ0YjRh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAKQEAgLTI5MCwxMzIgKzI5MCw0IEBAIGJvb2wgdGhyZWFkU2FmZU1hdGNoKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGEsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGIpCiAgICAgcmV0dXJuIHRocmVhZFNh
ZmVFcXVhbCgqYS5sb2NhbE5hbWUoKS5pbXBsKCksICpiLmxvY2FsTmFtZSgpLmltcGwoKSk7CiB9
CiAKLXR5cGVkZWYgVmVjdG9yPEltYWdlV2l0aFNjYWxlPiBJbWFnZUNhbmRpZGF0ZXM7Ci0KLXN0
YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJlQnlTY2FsZUZhY3Rvcihjb25zdCBJbWFnZVdpdGhTY2Fs
ZSYgZmlyc3QsIGNvbnN0IEltYWdlV2l0aFNjYWxlJiBzZWNvbmQpCi17Ci0gICAgcmV0dXJuIGZp
cnN0LnNjYWxlRmFjdG9yKCkgPCBzZWNvbmQuc2NhbGVGYWN0b3IoKTsKLX0KLQotc3RhdGljIGJv
b2wgcGFyc2VEZXNjcmlwdG9ycyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgc2l6ZV90IHN0YXJ0
LCBzaXplX3QgZW5kLCBmbG9hdCYgaW1hZ2VTY2FsZUZhY3RvcikKLXsKLSAgICBzaXplX3QgZGVz
Y3JpcHRvclN0YXJ0OwotICAgIHNpemVfdCBkZXNjcmlwdG9yRW5kOwotICAgIHNpemVfdCBwb3Np
dGlvbiA9IHN0YXJ0OwotICAgIGJvb2wgaXNGb3VuZFNjYWxlRmFjdG9yID0gZmFsc2U7Ci0gICAg
Ym9vbCBpc0VtcHR5RGVzY3JpcHRvciA9ICEoZW5kID4gc3RhcnQpOwotICAgIGJvb2wgaXNWYWxp
ZCA9IGZhbHNlOwotCi0gICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kKSB7Ci0gICAgICAgIHdoaWxl
IChpc0hUTUxTcGFjZShhdHRyaWJ1dGVbcG9zaXRpb25dKSAmJiBwb3NpdGlvbiA8IGVuZCkKLSAg
ICAgICAgICAgICsrcG9zaXRpb247Ci0gICAgICAgIGRlc2NyaXB0b3JTdGFydCA9IHBvc2l0aW9u
OwotICAgICAgICB3aGlsZSAoaXNOb3RIVE1MU3BhY2UoYXR0cmlidXRlW3Bvc2l0aW9uXSkgJiYg
cG9zaXRpb24gPCBlbmQpCi0gICAgICAgICAgICArK3Bvc2l0aW9uOwotICAgICAgICBkZXNjcmlw
dG9yRW5kID0gcG9zaXRpb247Ci0KLSAgICAgICAgLy8gTGVhdmUgaWYgdGhlcmUgaXMgb25seSB3
aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgdGhlIGRlc2NyaXB0b3JzCi0gICAgICAgIGlmIChkZXNj
cmlwdG9yRW5kIDw9IGRlc2NyaXB0b3JTdGFydCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIC0tZGVzY3JpcHRvckVuZDsKLSAgICAgICAgLy8gVGhpcyBwYXJ0IGRpZmZlcnMgZnJvbSB0
aGUgc3BlYyBhcyB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHBpeGVs
IGRlbnNpdHkgZGVzY3JpcHRvcnMuCi0gICAgICAgIGlmIChhdHRyaWJ1dGVbZGVzY3JpcHRvckVu
ZF0gIT0gJ3gnKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgaWYgKGlzRm91bmRT
Y2FsZUZhY3RvcikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoYXR0
cmlidXRlLmlzOEJpdCgpKQotICAgICAgICAgICAgaW1hZ2VTY2FsZUZhY3RvciA9IGNoYXJhY3Rl
cnNUb0Zsb2F0KGF0dHJpYnV0ZS5jaGFyYWN0ZXJzOCgpICsgZGVzY3JpcHRvclN0YXJ0LCBkZXNj
cmlwdG9yRW5kIC0gZGVzY3JpcHRvclN0YXJ0LCAmaXNWYWxpZCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGltYWdlU2NhbGVGYWN0b3IgPSBjaGFyYWN0ZXJzVG9GbG9hdChhdHRyaWJ1dGUu
Y2hhcmFjdGVyczE2KCkgKyBkZXNjcmlwdG9yU3RhcnQsIGRlc2NyaXB0b3JFbmQgLSBkZXNjcmlw
dG9yU3RhcnQsICZpc1ZhbGlkKTsKLSAgICAgICAgaXNGb3VuZFNjYWxlRmFjdG9yID0gdHJ1ZTsK
LSAgICB9Ci0KLSAgICByZXR1cm4gaXNFbXB0eURlc2NyaXB0b3IgfHwgaXNWYWxpZDsKLX0KLQot
Ly8gU2VlIHRoZSBzcGVjaWZpY2F0aW9ucyBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHRoZSBhbGdv
cml0aG0gdG8gZm9sbG93LgotLy8gaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1odG1sLXNy
Y3NldC0yMDEzMDIyOC8jcHJvY2Vzc2luZy10aGUtaW1hZ2UtY2FuZGlkYXRlcy4KLXN0YXRpYyB2
b2lkIHBhcnNlSW1hZ2VzV2l0aFNjYWxlRnJvbVNyY3NldEF0dHJpYnV0ZShjb25zdCBTdHJpbmcm
IHNyY3NldEF0dHJpYnV0ZSwgSW1hZ2VDYW5kaWRhdGVzJiBpbWFnZUNhbmRpZGF0ZXMpCi17Ci0g
ICAgQVNTRVJUKGltYWdlQ2FuZGlkYXRlcy5pc0VtcHR5KCkpOwotCi0gICAgc2l6ZV90IGltYWdl
Q2FuZGlkYXRlU3RhcnQgPSAwOwotICAgIHVuc2lnbmVkIHNyY3NldEF0dHJpYnV0ZUxlbmd0aCA9
IHNyY3NldEF0dHJpYnV0ZS5sZW5ndGgoKTsKLQotICAgIHdoaWxlIChpbWFnZUNhbmRpZGF0ZVN0
YXJ0IDwgc3Jjc2V0QXR0cmlidXRlTGVuZ3RoKSB7Ci0gICAgICAgIGZsb2F0IGltYWdlU2NhbGVG
YWN0b3IgPSAxOwotICAgICAgICBzaXplX3Qgc2VwYXJhdG9yOwotCi0gICAgICAgIC8vIDQuIFNw
bGl0dGluZyBsb29wOiBTa2lwIHdoaXRlc3BhY2UuCi0gICAgICAgIHNpemVfdCBpbWFnZVVSTFN0
YXJ0ID0gc3Jjc2V0QXR0cmlidXRlLmZpbmQoaXNOb3RIVE1MU3BhY2UsIGltYWdlQ2FuZGlkYXRl
U3RhcnQpOwotICAgICAgICBpZiAoaW1hZ2VVUkxTdGFydCA9PSBub3RGb3VuZCkKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAvLyBJZiBUaGUgY3VycmVudCBjYW5kaWRhdGUgaXMgZWl0aGVy
IHRvdGFsbHkgZW1wdHkgb3Igb25seSBjb250YWlucyBzcGFjZSwgc2tpcHBpbmcuCi0gICAgICAg
IGlmIChzcmNzZXRBdHRyaWJ1dGVbaW1hZ2VVUkxTdGFydF0gPT0gJywnKSB7Ci0gICAgICAgICAg
ICBpbWFnZUNhbmRpZGF0ZVN0YXJ0ID0gaW1hZ2VVUkxTdGFydCArIDE7Ci0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAvLyA1LiBDb2xsZWN0IGEgc2VxdWVuY2Ugb2Yg
Y2hhcmFjdGVycyB0aGF0IGFyZSBub3Qgc3BhY2UgY2hhcmFjdGVycywgYW5kIGxldCB0aGF0IGJl
IHVybC4KLSAgICAgICAgc2l6ZV90IGltYWdlVVJMRW5kID0gc3Jjc2V0QXR0cmlidXRlLmZpbmQo
aXNIVE1MU3BhY2UsIGltYWdlVVJMU3RhcnQgKyAxKTsKLSAgICAgICAgaWYgKGltYWdlVVJMRW5k
ID09IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBpbWFnZVVSTEVuZCA9IHNyY3NldEF0dHJpYnV0
ZUxlbmd0aDsKLSAgICAgICAgICAgIHNlcGFyYXRvciA9IHNyY3NldEF0dHJpYnV0ZUxlbmd0aDsK
LSAgICAgICAgfSBlbHNlIGlmIChzcmNzZXRBdHRyaWJ1dGVbaW1hZ2VVUkxFbmQgLSAxXSA9PSAn
LCcpIHsKLSAgICAgICAgICAgIC0taW1hZ2VVUkxFbmQ7Ci0gICAgICAgICAgICBzZXBhcmF0b3Ig
PSBpbWFnZVVSTEVuZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIDcuIENvbGxl
Y3QgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIG5vdCAiLCIgKFUrMDAyQykgY2hh
cmFjdGVycywgYW5kIGxldCB0aGF0IGJlIGRlc2NyaXB0b3JzLgotICAgICAgICAgICAgc2l6ZV90
IGltYWdlU2NhbGVTdGFydCA9IHNyY3NldEF0dHJpYnV0ZS5maW5kKGlzTm90SFRNTFNwYWNlLCBp
bWFnZVVSTEVuZCArIDEpOwotICAgICAgICAgICAgaW1hZ2VTY2FsZVN0YXJ0ID0gKGltYWdlU2Nh
bGVTdGFydCA9PSBub3RGb3VuZCkgPyBzcmNzZXRBdHRyaWJ1dGVMZW5ndGggOiBpbWFnZVNjYWxl
U3RhcnQ7Ci0gICAgICAgICAgICBzaXplX3QgaW1hZ2VTY2FsZUVuZCA9IHNyY3NldEF0dHJpYnV0
ZS5maW5kKCcsJyAsIGltYWdlU2NhbGVTdGFydCArIDEpOwotICAgICAgICAgICAgaW1hZ2VTY2Fs
ZUVuZCA9IChpbWFnZVNjYWxlRW5kID09IG5vdEZvdW5kKSA/IHNyY3NldEF0dHJpYnV0ZUxlbmd0
aCA6IGltYWdlU2NhbGVFbmQ7Ci0KLSAgICAgICAgICAgIGlmICghcGFyc2VEZXNjcmlwdG9ycyhz
cmNzZXRBdHRyaWJ1dGUsIGltYWdlU2NhbGVTdGFydCwgaW1hZ2VTY2FsZUVuZCwgaW1hZ2VTY2Fs
ZUZhY3RvcikpIHsKLSAgICAgICAgICAgICAgICBpbWFnZUNhbmRpZGF0ZVN0YXJ0ID0gaW1hZ2VT
Y2FsZUVuZCArIDE7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBzZXBhcmF0b3IgPSBpbWFnZVNjYWxlRW5kOwotICAgICAgICB9Ci0gICAgICAg
IEltYWdlV2l0aFNjYWxlIGltYWdlKGltYWdlVVJMU3RhcnQsIGltYWdlVVJMRW5kIC0gaW1hZ2VV
UkxTdGFydCwgaW1hZ2VTY2FsZUZhY3Rvcik7Ci0gICAgICAgIGltYWdlQ2FuZGlkYXRlcy5hcHBl
bmQoaW1hZ2UpOwotICAgICAgICAvLyAxMS4gUmV0dXJuIHRvIHRoZSBzdGVwIGxhYmVsZWQgc3Bs
aXR0aW5nIGxvb3AuCi0gICAgICAgIGltYWdlQ2FuZGlkYXRlU3RhcnQgPSBzZXBhcmF0b3IgKyAx
OwotICAgIH0KLX0KLQotSW1hZ2VXaXRoU2NhbGUgYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmli
dXRlcyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgU3RyaW5nJiBzcmNBdHRyaWJ1dGUs
IGNvbnN0IFN0cmluZyYgc3Jjc2V0QXR0cmlidXRlKQotewotICAgIEltYWdlQ2FuZGlkYXRlcyBp
bWFnZUNhbmRpZGF0ZXM7Ci0KLSAgICBwYXJzZUltYWdlc1dpdGhTY2FsZUZyb21TcmNzZXRBdHRy
aWJ1dGUoc3Jjc2V0QXR0cmlidXRlLCBpbWFnZUNhbmRpZGF0ZXMpOwotCi0gICAgaWYgKCFzcmNB
dHRyaWJ1dGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEltYWdlV2l0aFNjYWxlIHNyY1BsYWNlaG9s
ZGVySW1hZ2U7Ci0gICAgICAgIGltYWdlQ2FuZGlkYXRlcy5hcHBlbmQoc3JjUGxhY2Vob2xkZXJJ
bWFnZSk7Ci0gICAgfQotCi0gICAgaWYgKGltYWdlQ2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBJbWFnZVdpdGhTY2FsZSgpOwotCi0gICAgc3RkOjpzdGFibGVfc29ydChpbWFn
ZUNhbmRpZGF0ZXMuYmVnaW4oKSwgaW1hZ2VDYW5kaWRhdGVzLmVuZCgpLCBjb21wYXJlQnlTY2Fs
ZUZhY3Rvcik7Ci0KLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltYWdlQ2FuZGlkYXRlcy5z
aXplKCkgLSAxOyArK2kpIHsKLSAgICAgICAgaWYgKGltYWdlQ2FuZGlkYXRlc1tpXS5zY2FsZUZh
Y3RvcigpID49IGRldmljZVNjYWxlRmFjdG9yKQotICAgICAgICAgICAgcmV0dXJuIGltYWdlQ2Fu
ZGlkYXRlc1tpXTsKLSAgICB9Ci0KLSAgICAvLyAxNi4gSWYgYW4gZW50cnkgYiBpbiBjYW5kaWRh
dGVzIGhhcyB0aGUgc2FtZSBhc3NvY2lhdGVkIC4uLiBwaXhlbCBkZW5zaXR5IGFzIGFuIGVhcmxp
ZXIgZW50cnkgYSBpbiBjYW5kaWRhdGVzLAotICAgIC8vIHRoZW4gcmVtb3ZlIGVudHJ5IGIKLSAg
ICBzaXplX3Qgd2lubmVyID0gaW1hZ2VDYW5kaWRhdGVzLnNpemUoKSAtIDE7Ci0gICAgc2l6ZV90
IHByZXZpb3VzQ2FuZGlkYXRlID0gd2lubmVyOwotICAgIGZsb2F0IHdpbm5pbmdTY2FsZUZhY3Rv
ciA9IGltYWdlQ2FuZGlkYXRlcy5sYXN0KCkuc2NhbGVGYWN0b3IoKTsKLSAgICB3aGlsZSAoKHBy
ZXZpb3VzQ2FuZGlkYXRlID4gMCkgJiYgKGltYWdlQ2FuZGlkYXRlc1stLXByZXZpb3VzQ2FuZGlk
YXRlXS5zY2FsZUZhY3RvcigpID09IHdpbm5pbmdTY2FsZUZhY3RvcikpCi0gICAgICAgIHdpbm5l
ciA9IHByZXZpb3VzQ2FuZGlkYXRlOwotCi0gICAgcmV0dXJuIGltYWdlQ2FuZGlkYXRlc1t3aW5u
ZXJdOwotfQotCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRp
b21zLmgKaW5kZXggODJlYmE2ZGRhZWU0ZWQ1MmM2ZTBmMTMyODI3NjA5ODlmMDUzYjVjNC4uZGEz
YmQ3YmEwMDhhYTM4Zjk5ZmMxYmQ2MjA5MTRlZDU3Yzg0ZmQxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuaApAQCAtMzMsNDAgKzMzLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEZWNpbWFsOwogCi1jbGFzcyBJbWFnZVdpdGhTY2Fs
ZSB7Ci1wdWJsaWM6Ci0gICAgSW1hZ2VXaXRoU2NhbGUoKQotICAgICAgICA6IG1faW1hZ2VVUkxT
dGFydCgwKQotICAgICAgICAsIG1faW1hZ2VVUkxMZW5ndGgoMCkKLSAgICAgICAgLCBtX3NjYWxl
RmFjdG9yKDEpCi0gICAgewotICAgIH0KLQotICAgIEltYWdlV2l0aFNjYWxlKHVuc2lnbmVkIHN0
YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIGZsb2F0IHNjYWxlRmFjdG9yKQotICAgICAgICA6IG1faW1h
Z2VVUkxTdGFydChzdGFydCkKLSAgICAgICAgLCBtX2ltYWdlVVJMTGVuZ3RoKGxlbmd0aCkKLSAg
ICAgICAgLCBtX3NjYWxlRmFjdG9yKHNjYWxlRmFjdG9yKQotICAgIHsKLSAgICB9Ci0KLSAgICBT
dHJpbmcgaW1hZ2VVUkwoY29uc3QgU3RyaW5nJiBzcmNBdHRyaWJ1dGUsIGNvbnN0IFN0cmluZyYg
c3Jjc2V0QXR0cmlidXRlKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1faW1hZ2VVUkxM
ZW5ndGggPyBzcmNzZXRBdHRyaWJ1dGUuc3Vic3RyaW5nU2hhcmluZ0ltcGwobV9pbWFnZVVSTFN0
YXJ0LCBtX2ltYWdlVVJMTGVuZ3RoKSA6IHNyY0F0dHJpYnV0ZTsKLSAgICB9Ci0KLSAgICBmbG9h
dCBzY2FsZUZhY3RvcigpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9zY2FsZUZhY3Rv
cjsKLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgbV9pbWFnZVVSTFN0YXJ0OwotICAg
IHVuc2lnbmVkIG1faW1hZ2VVUkxMZW5ndGg7Ci0gICAgZmxvYXQgbV9zY2FsZUZhY3RvcjsKLX07
Ci0KIC8vIFNwYWNlIGNoYXJhY3RlcnMgYXMgZGVmaW5lZCBieSB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uLgotYm9vbCBpc0hUTUxTcGFjZShVQ2hhcik7CiBib29sIGlzSFRNTExpbmVCcmVhayhVQ2hh
cik7CiBib29sIGlzTm90SFRNTFNwYWNlKFVDaGFyKTsKIGJvb2wgaXNIVE1MU3BhY2VCdXROb3RM
aW5lQnJlYWsoVUNoYXIgY2hhcmFjdGVyKTsKQEAgLTk4LDggKzY1LDggQEAgYm9vbCBwYXJzZUhU
TUxJbnRlZ2VyKGNvbnN0IFN0cmluZyYsIGludCYpOwogYm9vbCBwYXJzZUhUTUxOb25OZWdhdGl2
ZUludGVnZXIoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgaW50Jik7CiAKIC8vIElubGluZSBpbXBs
ZW1lbnRhdGlvbnMgb2Ygc29tZSBvZiB0aGUgZnVuY3Rpb25zIGRlY2xhcmVkIGFib3ZlLgotCi1p
bmxpbmUgYm9vbCBpc0hUTUxTcGFjZShVQ2hhciBjaGFyYWN0ZXIpCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyVHlwZT4KK2lubGluZSBib29sIGlzSFRNTFNwYWNlKENoYXJUeXBlIGNoYXJhY3RlcikK
IHsKICAgICAvLyBIaXN0b2dyYW0gZnJvbSBBcHBsZSdzIHBhZ2UgbG9hZCB0ZXN0IGNvbWJpbmVk
IHdpdGggc29tZSBhZCBob2MgYnJvd3Npbmcgc29tZSBvdGhlciB0ZXN0IHN1aXRlcy4KICAgICAv
LwpAQCAtMTE5LDYgKzg2LDE4IEBAIGlubGluZSBib29sIGlzSFRNTExpbmVCcmVhayhVQ2hhciBj
aGFyYWN0ZXIpCiAgICAgcmV0dXJuIGNoYXJhY3RlciA8PSAnXHInICYmIChjaGFyYWN0ZXIgPT0g
J1xuJyB8fCBjaGFyYWN0ZXIgPT0gJ1xyJyk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJU
eXBlPgoraW5saW5lIGJvb2wgaXNDb21tYShDaGFyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAgcmV0
dXJuIGNoYXJhY3RlciA9PSAnLCc7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgor
aW5saW5lIGJvb2wgaXNIVE1MU3BhY2VPckNvbW1hKENoYXJUeXBlIGNoYXJhY3RlcikKK3sKKyAg
ICByZXR1cm4gaXNDb21tYShjaGFyYWN0ZXIpIHx8IGlzSFRNTFNwYWNlPENoYXJUeXBlPihjaGFy
YWN0ZXIpOworfQorCiBpbmxpbmUgYm9vbCBpc05vdEhUTUxTcGFjZShVQ2hhciBjaGFyYWN0ZXIp
CiB7CiAgICAgcmV0dXJuICFpc0hUTUxTcGFjZShjaGFyYWN0ZXIpOwpAQCAtMTMxLDggKzExMCw2
IEBAIGlubGluZSBib29sIGlzSFRNTFNwYWNlQnV0Tm90TGluZUJyZWFrKFVDaGFyIGNoYXJhY3Rl
cikKIAogYm9vbCB0aHJlYWRTYWZlTWF0Y2goY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKIAotSW1hZ2VXaXRoU2NhbGUgYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0
cmlidXRlcyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwgY29uc3QgU3RyaW5nJiBzcmNBdHRyaWJ1
dGUsIGNvbnN0IFN0cmluZyYgc291cmNlU2V0QXR0cmlidXRlKTsKLQogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmlu
ZGV4IGUxMDAzNjQzODU0MWM1MzlmZDU4NGFjMTdjMjc0NGZhMzg1ZTcyMTAuLmFkOTAxNTU4ZjMw
MDNkYjNlNzAxMTM1OWEyZTlhOTA3OTYwNDllM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2lu
Y2x1ZGUgIkhUTUxTcmNzZXRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAj
aW5jbHVkZSAiSW5wdXRUeXBlTmFtZXMuaCIKICNpbmNsdWRlICJMaW5rUmVsQXR0cmlidXRlLmgi
CkBAIC0xMDQsOCArMTA1LDEzIEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBSZXNvbHZlIGJldHdl
ZW4gc3JjIGFuZCBzcmNTZXQgaWYgd2UgaGF2ZSB0aGVtLgogICAgICAgICBpZiAoIW1fc3JjU2V0
QXR0cmlidXRlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgSW1hZ2VXaXRoU2NhbGUgaW1hZ2VD
YW5kaWRhdGUgPSBiZXN0Rml0U291cmNlRm9ySW1hZ2VBdHRyaWJ1dGVzKG1fZGV2aWNlU2NhbGVG
YWN0b3IsIG1fdXJsVG9Mb2FkLCBtX3NyY1NldEF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICBTdHJp
bmcgc3JjTWF0Y2hpbmdTY2FsZSA9IGltYWdlQ2FuZGlkYXRlLmltYWdlVVJMKG1fdXJsVG9Mb2Fk
LCBtX3NyY1NldEF0dHJpYnV0ZSk7CisgICAgICAgICAgICBJbWFnZUNhbmRpZGF0ZSBpbWFnZUNh
bmRpZGF0ZSA9IGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMobV9kZXZpY2VTY2FsZUZh
Y3RvciwKKyNpZiBFTkFCTEUoUElDVFVSRV9FTEVNRU5UKQorICAgICAgICAgICAgICAgIDAsCisj
ZW5kaWYgLy8gRU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICAgICAgICAgICAgICBtX3VybFRv
TG9hZCwKKyAgICAgICAgICAgICAgICBtX3NyY1NldEF0dHJpYnV0ZSk7CisgICAgICAgICAgICBT
dHJpbmcgc3JjTWF0Y2hpbmdTY2FsZSA9IGltYWdlQ2FuZGlkYXRlLnVybCgpOwogICAgICAgICAg
ICAgc2V0VXJsVG9Mb2FkKHNyY01hdGNoaW5nU2NhbGUsIHRydWUpOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41M2E0MDg3MzNjNDgzNDE5Y2M0NDEzN2ZlYzkwZGUwZTUxM2Y1NTU2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNl
ci5jcHAKQEAgLTAsMCArMSwzNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUTUxT
cmNzZXRQYXJzZXIuaCIKKworI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRl
ICJQYXJzaW5nVXRpbGl0aWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIGJv
b2wgY29tcGFyZUJ5RGVuc2l0eShjb25zdCBJbWFnZUNhbmRpZGF0ZSYgZmlyc3QsIGNvbnN0IElt
YWdlQ2FuZGlkYXRlJiBzZWNvbmQpCit7CisgICAgcmV0dXJuIGZpcnN0LmRlbnNpdHkoKSA8IHNl
Y29uZC5kZW5zaXR5KCk7Cit9CisKK2VudW0gRGVzY3JpcHRvclRva2VuaXplclN0YXRlIHsKKyAg
ICBTdGFydCwKKyAgICBJblBhcmVudGhlc2lzLAorICAgIEFmdGVyVG9rZW4sCit9OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KK3N0YXRpYyB2b2lkIGFwcGVuZERlc2NyaXB0b3JBbmRS
ZXNldChjb25zdCBDaGFyVHlwZSomIGRlc2NyaXB0b3JTdGFydCwgY29uc3QgQ2hhclR5cGUqIHBv
c2l0aW9uLCBWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0b3JzKQoreworICAgIGlmIChwb3Np
dGlvbiA+IGRlc2NyaXB0b3JTdGFydCkKKyAgICAgICAgZGVzY3JpcHRvcnMuYXBwZW5kKFN0cmlu
Z1ZpZXcoZGVzY3JpcHRvclN0YXJ0LCBwb3NpdGlvbiAtIGRlc2NyaXB0b3JTdGFydCkpOworICAg
IGRlc2NyaXB0b3JTdGFydCA9IDA7Cit9CisKKy8vIFRoZSBmb2xsb3dpbmcgaXMgY2FsbGVkIGFw
cGVuZENoYXJhY3RlciB0byBtYXRjaCB0aGUgc3BlYydzIHRlcm1pbm9sb2d5LgordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgdm9pZCBhcHBlbmRDaGFyYWN0ZXIoY29uc3QgQ2hh
clR5cGUqIGRlc2NyaXB0b3JTdGFydCwgY29uc3QgQ2hhclR5cGUqIHBvc2l0aW9uKQoreworICAg
IC8vIFNpbmNlIHdlIGRvbid0IGNvcHkgdGhlIHRva2VucywgdGhpcyBqdXN0IHNldCB0aGUgcG9p
bnQgd2hlcmUgdGhlIGRlc2NyaXB0b3IgdG9rZW5zIHN0YXJ0LgorICAgIGlmICghZGVzY3JpcHRv
clN0YXJ0KQorICAgICAgICBkZXNjcmlwdG9yU3RhcnQgPSBwb3NpdGlvbjsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgYm9vbCBpc0VPRihjb25zdCBDaGFyVHlwZSog
cG9zaXRpb24sIGNvbnN0IENoYXJUeXBlKiBlbmQpCit7CisgICAgcmV0dXJuIHBvc2l0aW9uID49
IGVuZDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+CitzdGF0aWMgdm9pZCB0b2tl
bml6ZURlc2NyaXB0b3JzKGNvbnN0IENoYXJUeXBlKiYgcG9zaXRpb24sCisgICAgY29uc3QgQ2hh
clR5cGUqIGF0dHJpYnV0ZUVuZCwKKyAgICBWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0b3Jz
KQoreworICAgIERlc2NyaXB0b3JUb2tlbml6ZXJTdGF0ZSBzdGF0ZSA9IFN0YXJ0OworICAgIGNv
bnN0IENoYXJUeXBlKiBkZXNjcmlwdG9yc1N0YXJ0ID0gcG9zaXRpb247CisgICAgY29uc3QgQ2hh
clR5cGUqIGN1cnJlbnREZXNjcmlwdG9yU3RhcnQgPSBkZXNjcmlwdG9yc1N0YXJ0OworICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTdGFy
dDoKKyAgICAgICAgICAgIGlmIChpc0VPRihwb3NpdGlvbiwgYXR0cmlidXRlRW5kKSkgeworICAg
ICAgICAgICAgICAgIGFwcGVuZERlc2NyaXB0b3JBbmRSZXNldChjdXJyZW50RGVzY3JpcHRvclN0
YXJ0LCBhdHRyaWJ1dGVFbmQsIGRlc2NyaXB0b3JzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNDb21tYSgqcG9zaXRpb24pKSB7Cisg
ICAgICAgICAgICAgICAgYXBwZW5kRGVzY3JpcHRvckFuZFJlc2V0KGN1cnJlbnREZXNjcmlwdG9y
U3RhcnQsIHBvc2l0aW9uLCBkZXNjcmlwdG9ycyk7CisgICAgICAgICAgICAgICAgKytwb3NpdGlv
bjsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAoaXNIVE1MU3BhY2UoKnBvc2l0aW9uKSkgeworICAgICAgICAgICAgICAgIGFwcGVuZERlc2Ny
aXB0b3JBbmRSZXNldChjdXJyZW50RGVzY3JpcHRvclN0YXJ0LCBwb3NpdGlvbiwgZGVzY3JpcHRv
cnMpOworICAgICAgICAgICAgICAgIGN1cnJlbnREZXNjcmlwdG9yU3RhcnQgPSBwb3NpdGlvbiAr
IDE7CisgICAgICAgICAgICAgICAgc3RhdGUgPSBBZnRlclRva2VuOworICAgICAgICAgICAgfSBl
bHNlIGlmICgqcG9zaXRpb24gPT0gJygnKSB7CisgICAgICAgICAgICAgICAgYXBwZW5kQ2hhcmFj
dGVyKGN1cnJlbnREZXNjcmlwdG9yU3RhcnQsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgICAgICBz
dGF0ZSA9IEluUGFyZW50aGVzaXM7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAg
ICBhcHBlbmRDaGFyYWN0ZXIoY3VycmVudERlc2NyaXB0b3JTdGFydCwgcG9zaXRpb24pOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW5QYXJlbnRoZXNpczoKKyAgICAgICAgICAg
IGlmIChpc0VPRihwb3NpdGlvbiwgYXR0cmlidXRlRW5kKSkgeworICAgICAgICAgICAgICAgIGFw
cGVuZERlc2NyaXB0b3JBbmRSZXNldChjdXJyZW50RGVzY3JpcHRvclN0YXJ0LCBhdHRyaWJ1dGVF
bmQsIGRlc2NyaXB0b3JzKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoKnBvc2l0aW9uID09ICcpJykgeworICAgICAgICAgICAgICAgIGFw
cGVuZENoYXJhY3RlcihjdXJyZW50RGVzY3JpcHRvclN0YXJ0LCBwb3NpdGlvbik7CisgICAgICAg
ICAgICAgICAgc3RhdGUgPSBTdGFydDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIGFwcGVuZENoYXJhY3RlcihjdXJyZW50RGVzY3JpcHRvclN0YXJ0LCBwb3NpdGlvbik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBZnRlclRva2VuOgorICAgICAgICAgICAg
aWYgKGlzRU9GKHBvc2l0aW9uLCBhdHRyaWJ1dGVFbmQpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGlmICghaXNIVE1MU3BhY2UoKnBvc2l0aW9uKSkgeworICAgICAgICAg
ICAgICAgIHN0YXRlID0gU3RhcnQ7CisgICAgICAgICAgICAgICAgY3VycmVudERlc2NyaXB0b3JT
dGFydCA9IHBvc2l0aW9uOworICAgICAgICAgICAgICAgIC0tcG9zaXRpb247CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICArK3Bvc2l0aW9uOwor
ICAgIH0KK30KKworc3RhdGljIGZsb2F0IHN0cmluZ1ZpZXdUb0Zsb2F0KGNvbnN0IFN0cmluZ1Zp
ZXcmIHN0cmluZywgYm9vbCYgaXNWYWxpZCkKK3sKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQor
ICAgICAgICByZXR1cm4gY2hhcmFjdGVyc1RvRmxvYXQoc3RyaW5nLmNoYXJhY3RlcnM4KCksIHN0
cmluZy5sZW5ndGgoKSAtIDEsICZpc1ZhbGlkKTsKKyAgICByZXR1cm4gY2hhcmFjdGVyc1RvRmxv
YXQoc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkgLSAxLCAmaXNWYWxpZCk7
Cit9CisKK3N0YXRpYyBpbnQgc3RyaW5nVmlld1RvSW50KGNvbnN0IFN0cmluZ1ZpZXcmIHN0cmlu
ZywgYm9vbCYgaXNWYWxpZCkKK3sKKyAgICBpZiAoc3RyaW5nLmlzOEJpdCgpKQorICAgICAgICBy
ZXR1cm4gY2hhcmFjdGVyc1RvSW50KHN0cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3Ro
KCkgLSAxLCAmaXNWYWxpZCk7CisgICAgcmV0dXJuIGNoYXJhY3RlcnNUb0ludChzdHJpbmcuY2hh
cmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSAtIDEsICZpc1ZhbGlkKTsKK30KKworc3RhdGlj
IGJvb2wgcGFyc2VEZXNjcmlwdG9ycyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0b3JzLCBE
ZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdCYgcmVzdWx0KQoreworICAgIGZvciAoVmVjdG9yPFN0cmlu
Z1ZpZXc+OjppdGVyYXRvciBkZXNjcmlwdG9yID0gZGVzY3JpcHRvcnMuYmVnaW4oKTsgZGVzY3Jp
cHRvciAhPSBkZXNjcmlwdG9ycy5lbmQoKTsgKytkZXNjcmlwdG9yKSB7CisgICAgICAgIGlmICgh
ZGVzY3JpcHRvci0+bGVuZ3RoKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgVUNo
YXIgYyA9ICgqZGVzY3JpcHRvcilbZGVzY3JpcHRvci0+bGVuZ3RoKCkgLSAxXTsKKyAgICAgICAg
Ym9vbCBpc1ZhbGlkID0gZmFsc2U7CisgICAgICAgIGlmIChjID09ICd4JykgeworICAgICAgICAg
ICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhhc0hlaWdodCgpIHx8IHJlc3Vs
dC5oYXNXaWR0aCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGZsb2F0IGRlbnNpdHkgPSBzdHJpbmdWaWV3VG9GbG9hdCgqZGVzY3JpcHRvciwgaXNWYWxpZCk7
CisgICAgICAgICAgICBpZiAoIWlzVmFsaWQgfHwgZGVuc2l0eSA8IDApCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmVzdWx0LnNldERlbnNpdHkoZGVuc2l0eSk7
CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAndycpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRGVuc2l0eSgpIHx8IHJlc3VsdC5oYXNXaWR0aCgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGludCByZXNvdXJjZVdpZHRoID0gc3RyaW5nVmlld1RvSW50
KCpkZXNjcmlwdG9yLCBpc1ZhbGlkKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZCB8fCByZXNv
dXJjZVdpZHRoIDw9IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
IGVsc2UgaWYgKGMgPT0gJ2gnKSB7CisgICAgICAgICAgICAvLyBUaGlzIGlzIGhlcmUgb25seSBm
b3IgZnV0dXJlIGNvbXBhdCBwdXJwb3Nlcy4KKyAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvZiB0
aGUgJ2gnIGRlc2NyaXB0b3IgaXMgbm90IHVzZWQuCisgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgaW50IHJlc291cmNlSGVpZ2h0ID0gc3RyaW5nVmlld1RvSW50
KCpkZXNjcmlwdG9yLCBpc1ZhbGlkKTsKKyAgICAgICAgICAgIGlmICghaXNWYWxpZCB8fCByZXNv
dXJjZUhlaWdodCA8PSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIHJlc3VsdC5zZXRSZXNvdXJjZUhlaWdodChyZXNvdXJjZUhlaWdodCk7CisgICAgICAgIH0K
KyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIGh0dHA6Ly9waWN0dXJlLnJlc3BvbnNp
dmVpbWFnZXMub3JnLyNwYXJzZS1zcmNzZXQtYXR0cgordGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5
cGU+CitzdGF0aWMgdm9pZCBwYXJzZUltYWdlQ2FuZGlkYXRlc0Zyb21TcmNzZXRBdHRyaWJ1dGUo
Y29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIGNvbnN0IENoYXJUeXBlKiBhdHRyaWJ1dGVTdGFydCwg
dW5zaWduZWQgbGVuZ3RoLCBWZWN0b3I8SW1hZ2VDYW5kaWRhdGU+JiBpbWFnZUNhbmRpZGF0ZXMp
Cit7CisgICAgY29uc3QgQ2hhclR5cGUqIHBvc2l0aW9uID0gYXR0cmlidXRlU3RhcnQ7CisgICAg
Y29uc3QgQ2hhclR5cGUqIGF0dHJpYnV0ZUVuZCA9IHBvc2l0aW9uICsgbGVuZ3RoOworCisgICAg
d2hpbGUgKHBvc2l0aW9uIDwgYXR0cmlidXRlRW5kKSB7CisgICAgICAgIC8vIDQuIFNwbGl0dGlu
ZyBsb29wOiBDb2xsZWN0IGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBzcGFjZSBj
aGFyYWN0ZXJzIG9yIFUrMDAyQyBDT01NQSBjaGFyYWN0ZXJzLgorICAgICAgICBza2lwV2hpbGU8
Q2hhclR5cGUsIGlzSFRNTFNwYWNlT3JDb21tYTxDaGFyVHlwZT4gPihwb3NpdGlvbiwgYXR0cmli
dXRlRW5kKTsKKyAgICAgICAgaWYgKHBvc2l0aW9uID09IGF0dHJpYnV0ZUVuZCkgeworICAgICAg
ICAgICAgLy8gQ29udHJhcnkgdG8gc3BlYyBsYW5ndWFnZSAtIGRlc2NyaXB0b3IgcGFyc2luZyBo
YXBwZW5zIG9uIGVhY2ggY2FuZGlkYXRlLCBzbyB3aGVuIHdlIHJlYWNoIHRoZSBhdHRyaWJ1dGVF
bmQsIHdlIGNhbiBleGl0LgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y29uc3QgQ2hhclR5cGUqIGltYWdlVVJMU3RhcnQgPSBwb3NpdGlvbjsKKyAgICAgICAgLy8gNi4g
Q29sbGVjdCBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm90IHNwYWNlIGNoYXJh
Y3RlcnMsIGFuZCBsZXQgdGhhdCBiZSB1cmwuCisKKyAgICAgICAgc2tpcFVudGlsPENoYXJUeXBl
LCBpc0hUTUxTcGFjZTxDaGFyVHlwZT4gPihwb3NpdGlvbiwgYXR0cmlidXRlRW5kKTsKKyAgICAg
ICAgY29uc3QgQ2hhclR5cGUqIGltYWdlVVJMRW5kID0gcG9zaXRpb247CisKKyAgICAgICAgRGVz
Y3JpcHRvclBhcnNpbmdSZXN1bHQgcmVzdWx0OworCisgICAgICAgIC8vIDguIElmIHVybCBlbmRz
IHdpdGggYSBVKzAwMkMgQ09NTUEgY2hhcmFjdGVyICgsKQorICAgICAgICBpZiAoaXNDb21tYSgq
KHBvc2l0aW9uIC0gMSkpKSB7CisgICAgICAgICAgICAvLyBSZW1vdmUgYWxsIHRyYWlsaW5nIFUr
MDAyQyBDT01NQSBjaGFyYWN0ZXJzIGZyb20gdXJsLgorICAgICAgICAgICAgaW1hZ2VVUkxFbmQg
PSBwb3NpdGlvbiAtIDE7CisgICAgICAgICAgICByZXZlcnNlU2tpcFdoaWxlPENoYXJUeXBlLCBp
c0NvbW1hPihpbWFnZVVSTEVuZCwgaW1hZ2VVUkxTdGFydCk7CisgICAgICAgICAgICArK2ltYWdl
VVJMRW5kOworICAgICAgICAgICAgLy8gSWYgdXJsIGlzIGVtcHR5LCB0aGVuIGp1bXAgdG8gdGhl
IHN0ZXAgbGFiZWxlZCBzcGxpdHRpbmcgbG9vcC4KKyAgICAgICAgICAgIGlmIChpbWFnZVVSTFN0
YXJ0ID09IGltYWdlVVJMRW5kKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gQWR2YW5jaW5nIHBvc2l0aW9uIGhlcmUgKGNvbnRyYXJ5
IHRvIHNwZWMpIHRvIGF2b2lkIGFuIHVzZWxlc3MgZXh0cmEgc3RhdGUgbWFjaGluZSBzdGVwLgor
ICAgICAgICAgICAgLy8gRmlsZWQgYSBzcGVjIGJ1ZzogaHR0cHM6Ly9naXRodWIuY29tL1Jlc3Bv
bnNpdmVJbWFnZXNDRy9waWN0dXJlLWVsZW1lbnQvaXNzdWVzLzE4OQorICAgICAgICAgICAgKytw
b3NpdGlvbjsKKyAgICAgICAgICAgIFZlY3RvcjxTdHJpbmdWaWV3PiBkZXNjcmlwdG9yVG9rZW5z
OworICAgICAgICAgICAgdG9rZW5pemVEZXNjcmlwdG9ycyhwb3NpdGlvbiwgYXR0cmlidXRlRW5k
LCBkZXNjcmlwdG9yVG9rZW5zKTsKKyAgICAgICAgICAgIC8vIENvbnRyYXJ5IHRvIHNwZWMgbGFu
Z3VhZ2UgLSBkZXNjcmlwdG9yIHBhcnNpbmcgaGFwcGVucyBvbiBlYWNoIGNhbmRpZGF0ZS4KKyAg
ICAgICAgICAgIC8vIFRoaXMgaXMgYSBibGFjay1ib3ggZXF1aXZhbGVudCwgdG8gYXZvaWQgc3Rv
cmluZyBkZXNjcmlwdG9yIGxpc3RzIGZvciBlYWNoIGNhbmRpZGF0ZS4KKyAgICAgICAgICAgIGlm
ICghcGFyc2VEZXNjcmlwdG9ycyhkZXNjcmlwdG9yVG9rZW5zLCByZXN1bHQpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGltYWdlVVJMRW5k
ID4gYXR0cmlidXRlU3RhcnQpOworICAgICAgICB1bnNpZ25lZCBpbWFnZVVSTFN0YXJ0aW5nUG9z
aXRpb24gPSBpbWFnZVVSTFN0YXJ0IC0gYXR0cmlidXRlU3RhcnQ7CisgICAgICAgIEFTU0VSVChp
bWFnZVVSTEVuZCA+IGltYWdlVVJMU3RhcnQpOworICAgICAgICB1bnNpZ25lZCBpbWFnZVVSTExl
bmd0aCA9IGltYWdlVVJMRW5kIC0gaW1hZ2VVUkxTdGFydDsKKyAgICAgICAgaW1hZ2VDYW5kaWRh
dGVzLmFwcGVuZChJbWFnZUNhbmRpZGF0ZShhdHRyaWJ1dGUsIGltYWdlVVJMU3RhcnRpbmdQb3Np
dGlvbiwgaW1hZ2VVUkxMZW5ndGgsIHJlc3VsdCwgSW1hZ2VDYW5kaWRhdGU6OlNyY3NldE9yaWdp
bikpOworICAgICAgICAvLyAxMS4gUmV0dXJuIHRvIHRoZSBzdGVwIGxhYmVsZWQgc3BsaXR0aW5n
IGxvb3AuCisgICAgfQorfQorCitzdGF0aWMgdm9pZCBwYXJzZUltYWdlQ2FuZGlkYXRlc0Zyb21T
cmNzZXRBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUsIFZlY3RvcjxJbWFnZUNhbmRp
ZGF0ZT4mIGltYWdlQ2FuZGlkYXRlcykKK3sKKyAgICBpZiAoYXR0cmlidXRlLmlzTnVsbCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXR0cmlidXRlLmlzOEJpdCgpKQorICAgICAgICBw
YXJzZUltYWdlQ2FuZGlkYXRlc0Zyb21TcmNzZXRBdHRyaWJ1dGU8TENoYXI+KGF0dHJpYnV0ZSwg
YXR0cmlidXRlLmNoYXJhY3RlcnM4KCksIGF0dHJpYnV0ZS5sZW5ndGgoKSwgaW1hZ2VDYW5kaWRh
dGVzKTsKKyAgICBlbHNlCisgICAgICAgIHBhcnNlSW1hZ2VDYW5kaWRhdGVzRnJvbVNyY3NldEF0
dHJpYnV0ZTxVQ2hhcj4oYXR0cmlidXRlLCBhdHRyaWJ1dGUuY2hhcmFjdGVyczE2KCksIGF0dHJp
YnV0ZS5sZW5ndGgoKSwgaW1hZ2VDYW5kaWRhdGVzKTsKK30KKworc3RhdGljIEltYWdlQ2FuZGlk
YXRlIHBpY2tCZXN0SW1hZ2VDYW5kaWRhdGUoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IsCisjaWYg
RU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICB1bnNpZ25lZCBzb3VyY2VTaXplLAorI2VuZGlm
IC8vIEVOQUJMRShQSUNUVVJFX0VMRU1FTlQpCisgICAgVmVjdG9yPEltYWdlQ2FuZGlkYXRlPiYg
aW1hZ2VDYW5kaWRhdGVzKQoreworICAgIGNvbnN0IGZsb2F0IGRlZmF1bHREZW5zaXR5VmFsdWUg
PSAxLjA7CisgICAgYm9vbCBpZ25vcmVTcmMgPSBmYWxzZTsKKyAgICBpZiAoaW1hZ2VDYW5kaWRh
dGVzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEltYWdlQ2FuZGlkYXRlKCk7CisKKyAgICAv
LyBodHRwOi8vcGljdHVyZS5yZXNwb25zaXZlaW1hZ2VzLm9yZy8jbm9ybWFsaXplLXNvdXJjZS1k
ZW5zaXRpZXMKKyAgICBmb3IgKFZlY3RvcjxJbWFnZUNhbmRpZGF0ZT46Oml0ZXJhdG9yIGl0ID0g
aW1hZ2VDYW5kaWRhdGVzLmJlZ2luKCk7IGl0ICE9IGltYWdlQ2FuZGlkYXRlcy5lbmQoKTsgKytp
dCkgeworI2lmIEVOQUJMRShQSUNUVVJFX0VMRU1FTlQpCisgICAgICAgIGlmIChpdC0+cmVzb3Vy
Y2VXaWR0aCgpID4gMCkgeworICAgICAgICAgICAgaXQtPnNldERlbnNpdHkoKGZsb2F0KWl0LT5y
ZXNvdXJjZVdpZHRoKCkgLyAoZmxvYXQpc291cmNlU2l6ZSk7CisgICAgICAgICAgICBpZ25vcmVT
cmMgPSB0cnVlOworICAgICAgICB9IGVsc2UKKyNlbmRpZiAvLyBFTkFCTEUoUElDVFVSRV9FTEVN
RU5UKQorICAgICAgICBpZiAoaXQtPmRlbnNpdHkoKSA8IDApCisgICAgICAgICAgICBpdC0+c2V0
RGVuc2l0eShkZWZhdWx0RGVuc2l0eVZhbHVlKTsKKyAgICB9CisKKyAgICBzdGQ6OnN0YWJsZV9z
b3J0KGltYWdlQ2FuZGlkYXRlcy5iZWdpbigpLCBpbWFnZUNhbmRpZGF0ZXMuZW5kKCksIGNvbXBh
cmVCeURlbnNpdHkpOworCisgICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgaW1h
Z2VDYW5kaWRhdGVzLnNpemUoKSAtIDE7ICsraSkgeworICAgICAgICBpZiAoKGltYWdlQ2FuZGlk
YXRlc1tpXS5kZW5zaXR5KCkgPj0gZGV2aWNlU2NhbGVGYWN0b3IpICYmICghaWdub3JlU3JjIHx8
ICFpbWFnZUNhbmRpZGF0ZXNbaV0uc3JjT3JpZ2luKCkpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgaWYgKGltYWdlQ2FuZGlkYXRlc1tpXS5zcmNPcmlnaW4oKSAmJiBpZ25vcmVT
cmMpIHsKKyAgICAgICAgQVNTRVJUKGkgPiAwKTsKKyAgICAgICAgLS1pOworICAgIH0KKyAgICBm
bG9hdCB3aW5uaW5nRGVuc2l0eSA9IGltYWdlQ2FuZGlkYXRlc1tpXS5kZW5zaXR5KCk7CisKKyAg
ICB1bnNpZ25lZCB3aW5uZXIgPSBpOworICAgIC8vIDE2LiBJZiBhbiBlbnRyeSBiIGluIGNhbmRp
ZGF0ZXMgaGFzIHRoZSBzYW1lIGFzc29jaWF0ZWQgLi4uIHBpeGVsIGRlbnNpdHkgYXMgYW4gZWFy
bGllciBlbnRyeSBhIGluIGNhbmRpZGF0ZXMsCisgICAgLy8gdGhlbiByZW1vdmUgZW50cnkgYgor
ICAgIHdoaWxlICgoaSA+IDApICYmIChpbWFnZUNhbmRpZGF0ZXNbLS1pXS5kZW5zaXR5KCkgPT0g
d2lubmluZ0RlbnNpdHkpKQorICAgICAgICB3aW5uZXIgPSBpOworCisgICAgcmV0dXJuIGltYWdl
Q2FuZGlkYXRlc1t3aW5uZXJdOworfQorCitJbWFnZUNhbmRpZGF0ZSBiZXN0Rml0U291cmNlRm9y
U3Jjc2V0QXR0cmlidXRlKGZsb2F0IGRldmljZVNjYWxlRmFjdG9yLAorI2lmIEVOQUJMRShQSUNU
VVJFX0VMRU1FTlQpCisgICAgdW5zaWduZWQgc291cmNlU2l6ZSwKKyNlbmRpZiAvLyBFTkFCTEUo
UElDVFVSRV9FTEVNRU5UKQorICAgIGNvbnN0IFN0cmluZyYgc3Jjc2V0QXR0cmlidXRlKQorewor
ICAgIFZlY3RvcjxJbWFnZUNhbmRpZGF0ZT4gaW1hZ2VDYW5kaWRhdGVzOworCisgICAgcGFyc2VJ
bWFnZUNhbmRpZGF0ZXNGcm9tU3Jjc2V0QXR0cmlidXRlKHNyY3NldEF0dHJpYnV0ZSwgaW1hZ2VD
YW5kaWRhdGVzKTsKKworICAgIHJldHVybiBwaWNrQmVzdEltYWdlQ2FuZGlkYXRlKGRldmljZVNj
YWxlRmFjdG9yLAorI2lmIEVOQUJMRShQSUNUVVJFX0VMRU1FTlQpCisgICAgICAgIHNvdXJjZVNp
emUsCisjZW5kaWYgLy8gRU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICAgICAgaW1hZ2VDYW5k
aWRhdGVzKTsKK30KKworSW1hZ2VDYW5kaWRhdGUgYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmli
dXRlcyhmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwKKyNpZiBFTkFCTEUoUElDVFVSRV9FTEVNRU5U
KQorICAgIHVuc2lnbmVkIHNvdXJjZVNpemUsCisjZW5kaWYgLy8gRU5BQkxFKFBJQ1RVUkVfRUxF
TUVOVCkKKyAgICBjb25zdCBTdHJpbmcmIHNyY0F0dHJpYnV0ZSwKKyAgICBjb25zdCBTdHJpbmcm
IHNyY3NldEF0dHJpYnV0ZSkKK3sKKyAgICBpZiAoc3Jjc2V0QXR0cmlidXRlLmlzTnVsbCgpKSB7
CisgICAgICAgIGlmIChzcmNBdHRyaWJ1dGUuaXNOdWxsKCkpCisgICAgICAgICAgICByZXR1cm4g
SW1hZ2VDYW5kaWRhdGUoKTsKKyAgICAgICAgcmV0dXJuIEltYWdlQ2FuZGlkYXRlKHNyY0F0dHJp
YnV0ZSwgMCwgc3JjQXR0cmlidXRlLmxlbmd0aCgpLCBEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdCgp
LCBJbWFnZUNhbmRpZGF0ZTo6U3JjT3JpZ2luKTsKKyAgICB9CisKKyAgICBWZWN0b3I8SW1hZ2VD
YW5kaWRhdGU+IGltYWdlQ2FuZGlkYXRlczsKKworICAgIHBhcnNlSW1hZ2VDYW5kaWRhdGVzRnJv
bVNyY3NldEF0dHJpYnV0ZShzcmNzZXRBdHRyaWJ1dGUsIGltYWdlQ2FuZGlkYXRlcyk7CisKKyAg
ICBpZiAoIXNyY0F0dHJpYnV0ZS5pc0VtcHR5KCkpCisgICAgICAgIGltYWdlQ2FuZGlkYXRlcy5h
cHBlbmQoSW1hZ2VDYW5kaWRhdGUoc3JjQXR0cmlidXRlLCAwLCBzcmNBdHRyaWJ1dGUubGVuZ3Ro
KCksIERlc2NyaXB0b3JQYXJzaW5nUmVzdWx0KCksIEltYWdlQ2FuZGlkYXRlOjpTcmNPcmlnaW4p
KTsKKworICAgIHJldHVybiBwaWNrQmVzdEltYWdlQ2FuZGlkYXRlKGRldmljZVNjYWxlRmFjdG9y
LAorI2lmIEVOQUJMRShQSUNUVVJFX0VMRU1FTlQpCisgICAgICAgIHNvdXJjZVNpemUsCisjZW5k
aWYgLy8gRU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICAgICAgaW1hZ2VDYW5kaWRhdGVzKTsK
K30KKworU3RyaW5nIGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IsCisjaWYgRU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICB1bnNpZ25lZCBz
b3VyY2VTaXplLAorI2VuZGlmIC8vIEVOQUJMRShQSUNUVVJFX0VMRU1FTlQpCisgICAgY29uc3Qg
U3RyaW5nJiBzcmNBdHRyaWJ1dGUsCisgICAgSW1hZ2VDYW5kaWRhdGUmIHNyY3NldEltYWdlQ2Fu
ZGlkYXRlKQoreworICAgIGlmIChzcmNzZXRJbWFnZUNhbmRpZGF0ZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBzcmNBdHRyaWJ1dGU7CisKKyAgICBWZWN0b3I8SW1hZ2VDYW5kaWRhdGU+IGlt
YWdlQ2FuZGlkYXRlczsKKyAgICBpbWFnZUNhbmRpZGF0ZXMuYXBwZW5kKHNyY3NldEltYWdlQ2Fu
ZGlkYXRlKTsKKworICAgIGlmICghc3JjQXR0cmlidXRlLmlzRW1wdHkoKSkKKyAgICAgICAgaW1h
Z2VDYW5kaWRhdGVzLmFwcGVuZChJbWFnZUNhbmRpZGF0ZShzcmNBdHRyaWJ1dGUsIDAsIHNyY0F0
dHJpYnV0ZS5sZW5ndGgoKSwgRGVzY3JpcHRvclBhcnNpbmdSZXN1bHQoKSwgSW1hZ2VDYW5kaWRh
dGU6OlNyY09yaWdpbikpOworCisgICAgcmV0dXJuIHBpY2tCZXN0SW1hZ2VDYW5kaWRhdGUoZGV2
aWNlU2NhbGVGYWN0b3IsCisjaWYgRU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICAgICAgc291
cmNlU2l6ZSwKKyNlbmRpZiAvLyBFTkFCTEUoUElDVFVSRV9FTEVNRU5UKQorICAgICAgICBpbWFn
ZUNhbmRpZGF0ZXMpLnRvU3RyaW5nKCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOGNlODk5YjVlOWJhYjIxYjA4
ZjFmMWFhMzljNjIyZTA4Nzc2ZmFhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5oCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSFRN
TFNyY3NldFBhcnNlcl9oCisjZGVmaW5lIEhUTUxTcmNzZXRQYXJzZXJfaAorCisjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nVmlldy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0IGludCBVbmluaXRpYWxpemVkRGVzY3JpcHRv
ciA9IC0xOworCitjbGFzcyBEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdCB7CitwdWJsaWM6CisgICAg
RGVzY3JpcHRvclBhcnNpbmdSZXN1bHQoKQorICAgICAgICA6IG1fZGVuc2l0eShVbmluaXRpYWxp
emVkRGVzY3JpcHRvcikKKyAgICAgICAgLCBtX3Jlc291cmNlV2lkdGgoVW5pbml0aWFsaXplZERl
c2NyaXB0b3IpCisgICAgICAgICwgbV9yZXNvdXJjZUhlaWdodChVbmluaXRpYWxpemVkRGVzY3Jp
cHRvcikKKyAgICB7CisgICAgfQorCisgICAgYm9vbCBoYXNEZW5zaXR5KCkgY29uc3QgeyByZXR1
cm4gbV9kZW5zaXR5ID49IDA7IH0KKyAgICBib29sIGhhc1dpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9yZXNvdXJjZVdpZHRoID49IDA7IH0KKyAgICBib29sIGhhc0hlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fcmVzb3VyY2VIZWlnaHQgPj0gMDsgfQorCisgICAgZmxvYXQgZGVuc2l0eSgpIGNvbnN0
IHsgQVNTRVJUKGhhc0RlbnNpdHkoKSk7IHJldHVybiBtX2RlbnNpdHk7IH0KKyAgICB1bnNpZ25l
ZCByZXNvdXJjZVdpZHRoKCkgY29uc3QgeyBBU1NFUlQoaGFzV2lkdGgoKSk7IHJldHVybiBtX3Jl
c291cmNlV2lkdGg7IH0KKyAgICB1bnNpZ25lZCByZXNvdXJjZUhlaWdodCgpIGNvbnN0IHsgQVNT
RVJUKGhhc0hlaWdodCgpKTsgcmV0dXJuIG1fcmVzb3VyY2VIZWlnaHQ7IH0KKworICAgIHZvaWQg
c2V0UmVzb3VyY2VXaWR0aChpbnQgd2lkdGgpIHsgQVNTRVJUKHdpZHRoID49IDApOyBtX3Jlc291
cmNlV2lkdGggPSAodW5zaWduZWQpd2lkdGg7IH0KKyAgICB2b2lkIHNldFJlc291cmNlSGVpZ2h0
KGludCBoZWlnaHQpIHsgQVNTRVJUKGhlaWdodCA+PSAwKTsgbV9yZXNvdXJjZUhlaWdodCA9ICh1
bnNpZ25lZCloZWlnaHQ7IH0KKyAgICB2b2lkIHNldERlbnNpdHkoZmxvYXQgZGVuc2l0eVRvU2V0
KSB7IEFTU0VSVChkZW5zaXR5VG9TZXQgPj0gMCk7IG1fZGVuc2l0eSA9IGRlbnNpdHlUb1NldDsg
fQorCitwcml2YXRlOgorICAgIGZsb2F0IG1fZGVuc2l0eTsKKyAgICBpbnQgbV9yZXNvdXJjZVdp
ZHRoOworICAgIGludCBtX3Jlc291cmNlSGVpZ2h0OworfTsKKworY2xhc3MgSW1hZ2VDYW5kaWRh
dGUgeworcHVibGljOgorICAgIGVudW0gT3JpZ2luQXR0cmlidXRlIHsKKyAgICAgICAgU3Jjc2V0
T3JpZ2luLAorICAgICAgICBTcmNPcmlnaW4KKyAgICB9OworCisgICAgSW1hZ2VDYW5kaWRhdGUo
KQorICAgICAgICA6IG1fZGVuc2l0eSgxLjApCisgICAgeworICAgIH0KKworICAgIEltYWdlQ2Fu
ZGlkYXRlKGNvbnN0IFN0cmluZyYgc291cmNlLCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVu
Z3RoLCBjb25zdCBEZXNjcmlwdG9yUGFyc2luZ1Jlc3VsdCYgcmVzdWx0LCBPcmlnaW5BdHRyaWJ1
dGUgb3JpZ2luQXR0cmlidXRlKQorICAgICAgICA6IG1fc3RyaW5nKFN0cmluZ1ZpZXcoc291cmNl
KS5zdWJzdHJpbmcoc3RhcnQsIGxlbmd0aCkpCisgICAgICAgICwgbV9kZW5zaXR5KHJlc3VsdC5o
YXNEZW5zaXR5KCk/cmVzdWx0LmRlbnNpdHkoKTpVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKKyAg
ICAgICAgLCBtX3Jlc291cmNlV2lkdGgocmVzdWx0Lmhhc1dpZHRoKCk/cmVzdWx0LnJlc291cmNl
V2lkdGgoKTpVbmluaXRpYWxpemVkRGVzY3JpcHRvcikKKyAgICAgICAgLCBtX29yaWdpbkF0dHJp
YnV0ZShvcmlnaW5BdHRyaWJ1dGUpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gU3RyaW5nKG1fc3RyaW5nLnRvU3RyaW5n
KCkpOworICAgIH0KKworICAgIEF0b21pY1N0cmluZyB1cmwoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEF0b21pY1N0cmluZyhtX3N0cmluZy50b1N0cmluZygpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldERlbnNpdHkoZmxvYXQgZmFjdG9yKQorICAgIHsKKyAgICAgICAgbV9kZW5zaXR5
ID0gZmFjdG9yOworICAgIH0KKworICAgIGZsb2F0IGRlbnNpdHkoKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZGVuc2l0eTsKKyAgICB9CisKKyAgICBpbnQgcmVzb3VyY2VXaWR0aCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9yZXNvdXJjZVdpZHRoOworICAgIH0KKwor
ICAgIGJvb2wgc3JjT3JpZ2luKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAobV9vcmln
aW5BdHRyaWJ1dGUgPT0gU3JjT3JpZ2luKTsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBpc0Vt
cHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3N0cmluZy5pc0VtcHR5KCk7Cisg
ICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZ1ZpZXcgbV9zdHJpbmc7CisgICAgZmxvYXQgbV9k
ZW5zaXR5OworICAgIGludCBtX3Jlc291cmNlV2lkdGg7CisgICAgT3JpZ2luQXR0cmlidXRlIG1f
b3JpZ2luQXR0cmlidXRlOworfTsKKworSW1hZ2VDYW5kaWRhdGUgYmVzdEZpdFNvdXJjZUZvclNy
Y3NldEF0dHJpYnV0ZShmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciwKKyNpZiBFTkFCTEUoUElDVFVS
RV9FTEVNRU5UKQorICAgIHVuc2lnbmVkIHNvdXJjZVNpemUsCisjZW5kaWYgLy8gRU5BQkxFKFBJ
Q1RVUkVfRUxFTUVOVCkKKyAgICBjb25zdCBTdHJpbmcmIHNyY3NldEF0dHJpYnV0ZSk7CisKK0lt
YWdlQ2FuZGlkYXRlIGJlc3RGaXRTb3VyY2VGb3JJbWFnZUF0dHJpYnV0ZXMoZmxvYXQgZGV2aWNl
U2NhbGVGYWN0b3IsCisjaWYgRU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICB1bnNpZ25lZCBz
b3VyY2VTaXplLAorI2VuZGlmIC8vIEVOQUJMRShQSUNUVVJFX0VMRU1FTlQpCisgICAgY29uc3Qg
U3RyaW5nJiBzcmNBdHRyaWJ1dGUsCisgICAgY29uc3QgU3RyaW5nJiBzcmNzZXRBdHRyaWJ1dGUp
OworCitTdHJpbmcgYmVzdEZpdFNvdXJjZUZvckltYWdlQXR0cmlidXRlcyhmbG9hdCBkZXZpY2VT
Y2FsZUZhY3RvciwKKyNpZiBFTkFCTEUoUElDVFVSRV9FTEVNRU5UKQorICAgIHVuc2lnbmVkIHNv
dXJjZVNpemUsCisjZW5kaWYgLy8gRU5BQkxFKFBJQ1RVUkVfRUxFTUVOVCkKKyAgICBjb25zdCBT
dHJpbmcmIHNyY0F0dHJpYnV0ZSwKKyAgICBJbWFnZUNhbmRpZGF0ZSYgc3Jjc2V0SW1hZ2VDYW5k
aWRhdGUpOworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvUGFyc2luZ1V0aWxpdGllcy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvUGFy
c2luZ1V0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MmI4MDBiZjM5OGU5ZTk1MWFhMzllMWZmMjJi
ZjQwYzQ4MjQzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9QYXJzaW5nVXRpbGl0aWVzLmgKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUGFyc2luZ1V0aWxp
dGllc19oCisjZGVmaW5lIFBhcnNpbmdVdGlsaXRpZXNfaAorCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyVHlwZT4KK2Jvb2wgc2tpcEV4YWN0bHkoY29uc3QgQ2hhclR5cGUqJiBwb3NpdGlvbiwgY29u
c3QgQ2hhclR5cGUqIGVuZCwgQ2hhclR5cGUgZGVsaW1pdGVyKQoreworICAgIGlmIChwb3NpdGlv
biA8IGVuZCAmJiAqcG9zaXRpb24gPT0gZGVsaW1pdGVyKSB7CisgICAgICAgICsrcG9zaXRpb247
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCBib29sIGNoYXJhY3RlclByZWRpY2F0ZShDaGFyVHlw
ZSk+Citib29sIHNraXBFeGFjdGx5KGNvbnN0IENoYXJUeXBlKiYgcG9zaXRpb24sIGNvbnN0IENo
YXJUeXBlKiBlbmQpCit7CisgICAgaWYgKHBvc2l0aW9uIDwgZW5kICYmIGNoYXJhY3RlclByZWRp
Y2F0ZSgqcG9zaXRpb24pKSB7CisgICAgICAgICsrcG9zaXRpb247CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJUeXBlPgordm9pZCBza2lwVW50aWwoY29uc3QgQ2hhclR5cGUqJiBwb3NpdGlvbiwgY29uc3Qg
Q2hhclR5cGUqIGVuZCwgQ2hhclR5cGUgZGVsaW1pdGVyKQoreworICAgIHdoaWxlIChwb3NpdGlv
biA8IGVuZCAmJiAqcG9zaXRpb24gIT0gZGVsaW1pdGVyKQorICAgICAgICArK3Bvc2l0aW9uOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgYm9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUo
Q2hhclR5cGUpPgordm9pZCBza2lwVW50aWwoY29uc3QgQ2hhclR5cGUqJiBwb3NpdGlvbiwgY29u
c3QgQ2hhclR5cGUqIGVuZCkKK3sKKyAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQgJiYgIWNoYXJh
Y3RlclByZWRpY2F0ZSgqcG9zaXRpb24pKQorICAgICAgICArK3Bvc2l0aW9uOworfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyVHlwZSwgYm9vbCBjaGFyYWN0ZXJQcmVkaWNhdGUoQ2hhclR5cGUp
Pgordm9pZCBza2lwV2hpbGUoY29uc3QgQ2hhclR5cGUqJiBwb3NpdGlvbiwgY29uc3QgQ2hhclR5
cGUqIGVuZCkKK3sKKyAgICB3aGlsZSAocG9zaXRpb24gPCBlbmQgJiYgY2hhcmFjdGVyUHJlZGlj
YXRlKCpwb3NpdGlvbikpCisgICAgICAgICsrcG9zaXRpb247Cit9CisKK3RlbXBsYXRlPHR5cGVu
YW1lIENoYXJUeXBlLCBib29sIGNoYXJhY3RlclByZWRpY2F0ZShDaGFyVHlwZSk+Cit2b2lkIHJl
dmVyc2VTa2lwV2hpbGUoY29uc3QgQ2hhclR5cGUqJiBwb3NpdGlvbiwgY29uc3QgQ2hhclR5cGUq
IHN0YXJ0KQoreworICAgIHdoaWxlIChwb3NpdGlvbiA+PSBzdGFydCAmJiBjaGFyYWN0ZXJQcmVk
aWNhdGUoKnBvc2l0aW9uKSkKKyAgICAgICAgLS1wb3NpdGlvbjsKK30KKworI2VuZGlmCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svUGFyc2luZ1V0aWxpdGllcy5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9QYXJzaW5nVXRpbGl0aWVzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGJhOGZhOWU1NTI5NWY3NjM0NmI1NmEwMmQ4OGFhMjJkMmY4NThh
M2IuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9QYXJzaW5nVXRpbGl0aWVzLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBt
ZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBQYXJzaW5nVXRpbGl0aWVzX2gKLSNkZWZpbmUgUGFyc2luZ1V0
aWxpdGllc19oCi0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlPgotYm9vbCBza2lwRXhhY3Rs
eShjb25zdCBDaGFyVHlwZSomIHBvc2l0aW9uLCBjb25zdCBDaGFyVHlwZSogZW5kLCBDaGFyVHlw
ZSBkZWxpbWl0ZXIpCi17Ci0gICAgaWYgKHBvc2l0aW9uIDwgZW5kICYmICpwb3NpdGlvbiA9PSBk
ZWxpbWl0ZXIpIHsKLSAgICAgICAgKytwb3NpdGlvbjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGUs
IGJvb2wgY2hhcmFjdGVyUHJlZGljYXRlKENoYXJUeXBlKT4KLWJvb2wgc2tpcEV4YWN0bHkoY29u
c3QgQ2hhclR5cGUqJiBwb3NpdGlvbiwgY29uc3QgQ2hhclR5cGUqIGVuZCkKLXsKLSAgICBpZiAo
cG9zaXRpb24gPCBlbmQgJiYgY2hhcmFjdGVyUHJlZGljYXRlKCpwb3NpdGlvbikpIHsKLSAgICAg
ICAgKytwb3NpdGlvbjsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+Ci12b2lkIHNraXBVbnRpbChj
b25zdCBDaGFyVHlwZSomIHBvc2l0aW9uLCBjb25zdCBDaGFyVHlwZSogZW5kLCBDaGFyVHlwZSBk
ZWxpbWl0ZXIpCi17Ci0gICAgd2hpbGUgKHBvc2l0aW9uIDwgZW5kICYmICpwb3NpdGlvbiAhPSBk
ZWxpbWl0ZXIpCi0gICAgICAgICsrcG9zaXRpb247Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENo
YXJUeXBlLCBib29sIGNoYXJhY3RlclByZWRpY2F0ZShDaGFyVHlwZSk+Ci12b2lkIHNraXBVbnRp
bChjb25zdCBDaGFyVHlwZSomIHBvc2l0aW9uLCBjb25zdCBDaGFyVHlwZSogZW5kKQotewotICAg
IHdoaWxlIChwb3NpdGlvbiA8IGVuZCAmJiAhY2hhcmFjdGVyUHJlZGljYXRlKCpwb3NpdGlvbikp
Ci0gICAgICAgICsrcG9zaXRpb247Ci19Ci0KLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJUeXBlLCBi
b29sIGNoYXJhY3RlclByZWRpY2F0ZShDaGFyVHlwZSk+Ci12b2lkIHNraXBXaGlsZShjb25zdCBD
aGFyVHlwZSomIHBvc2l0aW9uLCBjb25zdCBDaGFyVHlwZSogZW5kKQotewotICAgIHdoaWxlIChw
b3NpdGlvbiA8IGVuZCAmJiBjaGFyYWN0ZXJQcmVkaWNhdGUoKnBvc2l0aW9uKSkKLSAgICAgICAg
Kytwb3NpdGlvbjsKLX0KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9t
YWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKaW5kZXggNzE5YzBlOThj
YzIxNGNkMmJmOGEyNGFmY2NiMjI4YzM0Yzg4NjZhYi4uNGQ0MDkxZWY0ZDk5ZDM3NzZlMDNjMmMy
ZDcxMjNiZTgxMGJhYjhiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKQEAgLTIyMSw2ICsyMjEsNyBAQCBF
TkFCTEVfV0VCX1JFUExBWV9tYWNvc3hfUHJvZHVjdGlvbiA9IDsKIEVOQUJMRV9XRUJfUkVQTEFZ
X2lwaG9uZW9zID0gOwogRU5BQkxFX1dFQl9SRVBMQVlfaXBob25lc2ltdWxhdG9yID0gOwogRU5B
QkxFX1dFQl9TT0NLRVRTID0gRU5BQkxFX1dFQl9TT0NLRVRTOworRU5BQkxFX1BJQ1RVUkUgPSBF
TkFCTEVfUElDVFVSRTsKIAogRU5BQkxFX1dFQl9USU1JTkcgPSAkKEVOQUJMRV9XRUJfVElNSU5H
XyQoUExBVEZPUk1fTkFNRSkpOwogRU5BQkxFX1dFQl9USU1JTkdfbWFjb3N4ID0gJChFTkFCTEVf
V0VCX1RJTUlOR19tYWNvc3hfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcgYi9Tb3VyY2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwppbmRleCA3MTljMGU5OGNjMjE0Y2QyYmY4YTI0YWZjY2IyMjhjMzRjODg2NmFiLi40ZDQw
OTFlZjRkOTlkMzc3NmUwM2MyYzJkNzEyM2JlODEwYmFiOGJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwpAQCAtMjIx
LDYgKzIyMSw3IEBAIEVOQUJMRV9XRUJfUkVQTEFZX21hY29zeF9Qcm9kdWN0aW9uID0gOwogRU5B
QkxFX1dFQl9SRVBMQVlfaXBob25lb3MgPSA7CiBFTkFCTEVfV0VCX1JFUExBWV9pcGhvbmVzaW11
bGF0b3IgPSA7CiBFTkFCTEVfV0VCX1NPQ0tFVFMgPSBFTkFCTEVfV0VCX1NPQ0tFVFM7CitFTkFC
TEVfUElDVFVSRSA9IEVOQUJMRV9QSUNUVVJFOwogCiBFTkFCTEVfV0VCX1RJTUlORyA9ICQoRU5B
QkxFX1dFQl9USU1JTkdfJChQTEFURk9STV9OQU1FKSk7CiBFTkFCTEVfV0VCX1RJTUlOR19tYWNv
c3ggPSAkKEVOQUJMRV9XRUJfVElNSU5HX21hY29zeF8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9O
X01BSk9SKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZWE4MDVlMmExZWIwNWMyMzE0MDMzZTE3ZjAwMzE3ODM2NWVkZTZi
Zi4uODNiMmZjYTcxZGJiODUyZjNiOWU5ZjlkNDA5ZDlkMDcwMGFiMDZhZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDE0LTA1LTMwICBZb2F2IFdlaXNzICA8eW9hdkB5b2F2LndzPgorCisgICAg
ICAgIFNyY3NldCByZWZhY3RvcmluZyB0byBtYXRjaCBzcGVjIGNoYW5nZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMzQxMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisJCQkJU3BlYyBjaGFuZ2VzIHJlc3VsdCBpbiBz
b21lIGNoYW5nZXMgdG8gaW52YWxpZCBkZXNjcmlwdG9yIGhhbmRsaW5nCisJCQkJd2hpY2ggcmVz
dWx0ZWQgaW4gdGhlIGNoYW5nZXMgdG8gdGhlIGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIGZh
c3QvaGlkcGkvaW1hZ2Utc3Jjc2V0LWludmFsaWQtZGVzY3JpcHRvci1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtaW52YWxpZC1kZXNjcmlwdG9yLmh0bWw6
CisgICAgICAgICogZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtaW52YWxpZC1pbnB1dHMtY29ycmVj
dC1zcmMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGZhc3QvaGlkcGkvaW1hZ2Ut
c3Jjc2V0LWludmFsaWQtaW5wdXRzLWNvcnJlY3Qtc3JjLmh0bWw6IFJlbW92ZWQuCisKIDIwMTQt
MDUtMjggIE1hcnRpbiBIb2NrICA8bWhvY2tAYXBwbGUuY29tPgogCiAgICAgICAgIE1hcmtpbmcg
dGVzdCBhcyBmbGFreSBwZW5kaW5nIGZ1cnRoZXIgcmV2aWV3LgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtaW52YWxpZC1kZXNjcmlwdG9yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaW1hZ2Utc3Jjc2V0LWludmFsaWQtZGVzY3Jp
cHRvci1leHBlY3RlZC50eHQKaW5kZXggNmRiNWJjMTRiYWU0ZTQ4OTlkODNiZDY2MzYwYjg2MTUz
MTQwZTc4Zi4uNTAyOWI4MDM1NjQ5NTc4OTlmYjMzMmIwMGZlNGMzZDNlNmNlMTNiNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtaW52YWxpZC1kZXNjcmlw
dG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNyY3Nl
dC1pbnZhbGlkLWRlc2NyaXB0b3ItZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsNSBAQAotUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCiBQQVNTIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmb28iKS5jbGllbnRXaWR0aD09MTAwIGlzIHRydWUKLVBBU1MgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvbzIiKS5jbGllbnRXaWR0aD09MjAwIGlzIHRydWUKK1BB
U1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvbzIiKS5jbGllbnRXaWR0aD09MTAwIGlzIHRy
dWUKIFRoaXMgdGVzdCBwYXNzZXMgaWYgdGhlIGltYWdlIGJlbG93IGlzIGEgMTAwcHggYmx1ZSBz
cXVhcmUgd2hlbiB0aGUgZGV2aWNlU2NhbGVGYWN0b3IgaXMgMS4KIEl0IHRlc3RzIHRoYXQgZXZl
biB0aG91Z2ggdGhlIDF4IHJlc291cmNlIGNvbnRhaW5zIG1hbnkgaW52YWxpZCBkZXNjcmlwdG9y
cywgb25seSB0aGUgaW52YWxpZCBkZXNjcmlwdG9ycyBhcmUgaWdub3JlZCAoYWNjb3JkaW5nIHRv
IHRoZSBzcGVjKS4KICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdl
LXNyY3NldC1pbnZhbGlkLWRlc2NyaXB0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkv
aW1hZ2Utc3Jjc2V0LWludmFsaWQtZGVzY3JpcHRvci5odG1sCmluZGV4IGIxYzAyZTg3NTlhZDc5
NWQ4MDA0NWUyYjRlZjE0NzEyODYwMTMxNTguLjY3NjY1YTRmMWU1Mzk0NGVhM2I4NWEzMGNlMTdj
NmYzNjAwMjg1NDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkvaW1hZ2Utc3Jj
c2V0LWludmFsaWQtZGVzY3JpcHRvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvaGlkcGkv
aW1hZ2Utc3Jjc2V0LWludmFsaWQtZGVzY3JpcHRvci5odG1sCkBAIC00LDExICs0LDExIEBACiAg
ICAgd2luZG93LnRhcmdldFNjYWxlRmFjdG9yID0gMTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
InJlc291cmNlcy9zcmNzZXQtaGVscGVyLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiAgICAgYWRkRXZlbnRM
aXN0ZW5lcigibG9hZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICBzaG91bGRCZVRydWUoJ2RvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJmb28iKS5jbGllbnRXaWR0aD09MTAwJyk7Ci0gICAgICAgIHNo
b3VsZEJlVHJ1ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvbzIiKS5jbGllbnRXaWR0aD09
MjAwJyk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgnZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZv
bzIiKS5jbGllbnRXaWR0aD09MTAwJyk7CiAgICAgfSwgZmFsc2UpOwogPC9zY3JpcHQ+CiA8L2hl
YWQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNyY3NldC1pbnZh
bGlkLWlucHV0cy1jb3JyZWN0LXNyYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2hp
ZHBpL2ltYWdlLXNyY3NldC1pbnZhbGlkLWlucHV0cy1jb3JyZWN0LXNyYy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YjdlZGM4YzNkYzRhNDI4YjdmZTViMThi
ZjE1MzIwYmM5MDE0MjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtaW52YWxpZC1pbnB1dHMt
Y29ycmVjdC1zcmMtZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1Q
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb28iKS5jbGllbnRXaWR0aD09NDAwIGlzIHRy
dWUKLVRoaXMgdGVzdCBwYXNzZXMgaWYgdGhpcyBpbWcgdGFnIGJlbG93IGlzIGEgZ3JlZW4gc3F1
YXJlIHJlZ2FyZGxlc3Mgb2YgdGhlIHNjYWxlIGZhY3Rvci4gSXQgZW5zdXJlcyB0aGF0IGludmFs
aWQgaW5wdXRzIGZyb20gc3Jjc2V0IGFyZSBpZ25vcmVkLCBhbmQgc3JjIGlzIHNlbGVjdGVkIChz
aW5jZSBpdCdzIHRoZSBvbmx5IGNhbmRpZGF0ZSBsZWZ0KQotCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNyY3NldC1pbnZhbGlkLWlucHV0cy1jb3JyZWN0LXNyYy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9oaWRwaS9pbWFnZS1zcmNzZXQtaW52YWxpZC1pbnB1dHMt
Y29ycmVjdC1zcmMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzcwYmMyMWY1
NDE0NWE2MWQ3YjlkZDY5ZGJiM2UyZTQzZWQ3MmI3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2hpZHBpL2ltYWdlLXNyY3Nl
dC1pbnZhbGlkLWlucHV0cy1jb3JyZWN0LXNyYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjEg
KzAsMCBAQAotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc3Jjc2V0LWhl
bHBlci5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci0gICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
Ci0gICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwotICAgIH0KLQotICAgIGFkZEV2ZW50
TGlzdGVuZXIoImxvYWQiLCBmdW5jdGlvbigpIHsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCdkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZm9vIikuY2xpZW50V2lkdGg9PTQwMCcpOwotICAgIH0sIGZh
bHNlKTsKLTwvc2NyaXB0PgotPC9oZWFkPgotCi08Ym9keSBpZD0iYm9keSI+Ci0gICAgPGRpdj5U
aGlzIHRlc3QgcGFzc2VzIGlmIHRoaXMgaW1nIHRhZyBiZWxvdyBpcyBhIGdyZWVuIHNxdWFyZSBy
ZWdhcmRsZXNzIG9mIHRoZSBzY2FsZSBmYWN0b3IuIEl0IGVuc3VyZXMgdGhhdCBpbnZhbGlkIGlu
cHV0cwotICAgIGZyb20gc3Jjc2V0IGFyZSBpZ25vcmVkLCBhbmQgc3JjIGlzIHNlbGVjdGVkIChz
aW5jZSBpdCdzIHRoZSBvbmx5IGNhbmRpZGF0ZSBsZWZ0KTwvZGl2PgotICAgIDxpbWcgaWQ9ImZv
byIgc3JjPSJyZXNvdXJjZXMvZ3JlZW4tNDAwLXB4LXNxdWFyZS5wbmciIHNyY3NldD0iMXggNXcs
LCAgLCAgICAgICwgMnggIDYwMGgsLCI+Ci08L2JvZHk+Ci08L2h0bWw+Cg==
</data>
<flag name="review"
          id="256802"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>