<?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>78333</bug_id>
          
          <creation_ts>2012-02-10 01:11:12 -0800</creation_ts>
          <short_desc>Rename classes defined in ContentInclusionSelector to more suitable names which match the spec</short_desc>
          <delta_ts>2012-02-13 04:15:48 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63606</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>rakuco</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>553929</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-10 01:11:12 -0800</bug_when>
    <thetext>The current class names defined in ContentInclusionSelector are not intuitive.
It would be nice that we have more intuitive names which use the terms defined in the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553940</commentid>
    <comment_count>1</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-10 01:20:00 -0800</bug_when>
    <thetext>How about this?

ContentInclusionSelector -&gt; HostChildNodesSelector
ShadowInclusionSet       -&gt; HostChildNodesSelectionSet
ShadowInclusionList      -&gt; HostChildNodesSelectionList
ShadowInclusion          -&gt; HostChildNodesSelection

If there is no objection, let me rename.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553961</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-10 02:09:04 -0800</bug_when>
    <thetext>&quot;Nodes&quot; looks redundant, especially inside a noun? I guess it&apos;s ok to rename it HTMLContent something, considering it&apos;s for &lt;content&gt;. and they are under html/shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553967</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-10 02:35:39 -0800</bug_when>
    <thetext>Okay.

Let me rename as follows:
ContentInclusionSelector -&gt; HTMLContentSelector
ShadowInclusionSet       -&gt; HTMLContentSelectionSet
ShadowInclusionList      -&gt; HTMLContentSelectionList
ShadowInclusion          -&gt; HTMLContentSelection

I also rename member functions and variables to match the names.

(In reply to comment #2)
&gt; &quot;Nodes&quot; looks redundant, especially inside a noun? I guess it&apos;s ok to rename it HTMLContent something, considering it&apos;s for &lt;content&gt;. and they are under html/shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553985</commentid>
    <comment_count>4</comment_count>
      <attachid>126488</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-10 03:22:57 -0800</bug_when>
    <thetext>Created attachment 126488
rename</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553998</commentid>
    <comment_count>5</comment_count>
      <attachid>126493</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-10 03:46:38 -0800</bug_when>
    <thetext>Created attachment 126493
update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554003</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-10 03:49:37 -0800</bug_when>
    <thetext>Most renaming is done. The patch is reedy for review.
Follow-up patch will do remaining renaming, such as renaming window.Internals binding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554906</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-12 17:50:51 -0800</bug_when>
    <thetext>Morrita-san, could you take a look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555167</commentid>
    <comment_count>8</comment_count>
      <attachid>126493</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 04:15:42 -0800</bug_when>
    <thetext>Comment on attachment 126493
update.

Clearing flags on attachment: 126493

Committed r107558: &lt;http://trac.webkit.org/changeset/107558&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555168</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-13 04:15:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126488</attachid>
            <date>2012-02-10 03:22:57 -0800</date>
            <delta_ts>2012-02-10 03:46:30 -0800</delta_ts>
            <desc>rename</desc>
            <filename>bug-78333-20120210202256.patch</filename>
            <type>text/plain</type>
            <size>49599</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThjYWUzNDVhOTMwNDE2
ZWIwMDNjZTcyYmM3YjdjNGNjNDdhN2ExOS4uZTY1OWNmMGQzNjg3NDE4MWZhYTAxZWIwMjc3OTU1
NDJhMGIzYjZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDEyLTAyLTEwICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgbmFtZXMgZGVm
aW5lZCBpbiBDb250ZW50SW5jbHV0aW9uU2VsZWN0b3IgdG8gbW9yZSBpbnR1aXRpdmUgbmFtZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODMzMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
anVzdCByZWZhY3RvcmluZywgcmVuYW1pbmcgbm9uLWludHVpdGl2ZSBuYW1lcyB0byBtb3JlIGlu
dHVpdGl2ZSBuYW1lcworICAgICAgICBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIHRlcm1zIGluIHRo
ZSBzcGVjLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSZW5kZXJlck9mKToKKyAgICAgICAg
KFdlYkNvcmU6OnByZXZpb3VzUmVuZGVyZXJPZik6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdFJl
bmRlcmVyT2YpOgorICAgICAgICAoV2ViQ29yZTo6bGFzdFJlbmRlcmVyT2YpOgorICAgICAgICAq
IGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmluY2x1
ZGVyRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmlzSW5jbHVzaW9uU2VsZWN0
b3JBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6YXR0YWNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1Jvb3Q6OmVuc3VyZVNlbGVjdG9yKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9Db250ZW50SW5jbHVzaW9uU2VsZWN0b3IuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnRlbnRFbGVtZW50OjpIVE1MQ29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnRlbnRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRl
bnRFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVu
dEVsZW1lbnQ6OnNlbGVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRFbGVt
ZW50OjpoYXNTZWxlY3Rpb24pOgorICAgICAgICAoSFRNTENvbnRlbnRFbGVtZW50KToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHAuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWNpdG9u
OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY2l0b246OnVubGlu
ayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OkhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlv
bkxpc3Q6On5IVE1MQ29udGVudFNlbGVjdGlvbkxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnRlbnRTZWxlY3Rpb25MaXN0OjpmaW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRT
ZWxlY3Rpb25MaXN0OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxl
Y3Rvcjo6SFRNTENvbnRlbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVu
dFNlbGVjdG9yOjp+SFRNTENvbnRlbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29udGVudFNlbGVjdG9yOjpzZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRT
ZWxlY3Rvcjo6dW5zZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rv
cjo6ZmluZEZvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdG9yOjpkaWRT
ZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rvcjo6d2lsbFNlbGVj
dE92ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWNpdG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWNpdG9uOjppbnNlcnRpb25Qb2ludCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjaXRvbjo6bm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjaXRvbjo6bmV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29udGVudFNlbGVjaXRvbjo6cHJldmlvdXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnRlbnRTZWxlY2l0b246OkhUTUxDb250ZW50U2VsZWNpdG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxDb250ZW50U2VsZWNpdG9uOjpjcmVhdGUpOgorICAgICAgICAoSFRNTENvbnRlbnRT
ZWxlY3Rpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dDo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Ojps
YXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6aXNFbXB0
eSk6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdGlvblNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6YWRkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b250ZW50U2VsZWN0aW9uU2V0OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRl
bnRTZWxlY3Rpb25TZXQ6OmlzRW1wdHkpOgorICAgICAgICAoVHJhbnNsYXRvcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcjo6aGFzaCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNsYXRvcjo6ZXF1
YWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6Okhhc2g6Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6Okhhc2g6OmVx
dWFsKToKKyAgICAgICAgKEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxl
Y3Rpb25TZXQ6OmZpbmQpOgorICAgICAgICAoSFRNTENvbnRlbnRTZWxlY3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdG9yOjpoYXNDYW5kaWRhdGVzKToKKwogMjAxMi0w
Mi0wOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVw
bGFjZSBbQ3VzdG9tQXJndW1lbnRIYW5kbGluZ10gd2l0aCBbQ2FsbFdpdGg9U2NyaXB0QXJndW1l
bnRzfENhbGxTdGFja10KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOGMzMTVkNjI3MzE3ODA3MDI5
ZjUzNDgwYjU3MDU2ZDFjM2VmMTIzYi4uYWViNTU5MmJhMTdkYWYxNTZlNWE3NzQ0MDM2NGQ0NWJm
Njg1N2Q0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTg2Myw5ICs4NjMsOSBAQCBTRVQoV2Vi
Q29yZV9TT1VSQ0VTCiAgICAgaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKIAogICAgIGh0bWwv
c2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAotICAgIGh0bWwvc2hhZG93L0NvbnRlbnRJ
bmNsdXNpb25TZWxlY3Rvci5jcHAKICAgICBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5jcHAKICAgICBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisgICAgaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKICAgICBodG1sL3NoYWRvdy9IVE1MU2hhZG93
RWxlbWVudC5jcHAKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAogICAgIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggODQ0OGIzYWM5NjY4MmFlNWNkY2JhYmMzMDUzNDQzZmQ2NzBkYWViMC4uYmJm
MGFlMzZkMjllMmI3ODQ5NmQ3ZmMzNmU5M2Y0MDcxNzBkMmEwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC0yMjMxLDE0ICsyMjMxLDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAJ
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9EZXRhaWxzTWFya2VyQ29udHJvbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MQ29udGVudEVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudEVsZW1lbnQuaCBcCisJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRTZWxlY3Rvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
U2VsZWN0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBcCiAJU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCmluZGV4IDE0M2Y3OGNlZDcwY2FmOWU1NWFmMjFiMGZjMjUyNzczNTE3NTA5MjQuLjAzMGU3
YWRiMWQ1N2M3YjIzMDM0ODMxNTk1NzU1Y2Q4MDI0MmViN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtODQy
LDkgKzg0Miw5IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvcGFyc2VyL1RleHRWaWV3U291cmNl
UGFyc2VyLmNwcCBcCiAgICAgaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgXAogICAgIGh0bWwv
c2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCBcCi0gICAgaHRtbC9zaGFkb3cvQ29udGVu
dEluY2x1c2lvblNlbGVjdG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNv
bnRyb2wuY3BwIFwKICAgICBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIFwKKyAg
ICBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuY3BwIFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNw
cCBcCiAgICAgaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwIFwKQEAgLTE5
MDcsOCArMTkwNyw4IEBAIEhFQURFUlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmggXAogICAgIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBcCiAgICAgaHRtbC9z
aGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBcCi0gICAgaHRtbC9zaGFkb3cvQ29udGVudElu
Y2x1c2lvblNlbGVjdG9yLmggXAogICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5o
IFwKKyAgICBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmggXAogICAgIGh0bWwvc2hh
ZG93L0hUTUxTaGFkb3dFbGVtZW50LmggXAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmggXAogICAgIGh0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDc4YTg1YzBkMzFlMDkxZDg5ZmJjODBiMTI5NjIzNzVlNTVhYzNlNzku
LjRlZTY4MTBhNzNjMDdmOWI4ZTY4YjcwZDRhODBhOThmNTJmZWM0MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTU1MjksMTIgKzU1MjksMTIgQEAKICAgICAgICAgICAgICdodG1sL3BhcnNlci9YU1NB
dWRpdG9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5
LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCcs
Ci0gICAgICAgICAgICAnaHRtbC9zaGFkb3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmNwcCcs
Ci0gICAgICAgICAgICAnaHRtbC9zaGFkb3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuaCcsCiAgICAgICAgICAg
ICAnaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93
L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9IVE1M
Q29udGVudFNlbGVjdG9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
aCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBkM2VjNzdhOGFm
YWI2ODMwOTFiOGVmMDk3MTIzMzFlMDY5OTY4NTYyLi5iODIwZjIzYzk2MjQ0Mzk4Y2U4MmEzZjMw
MjU4OGEwOWJmNWZkMDkxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagpAQCAtNjA4MDUsMTQgKzYwODA1LDYgQEAKIAkJCQlOYW1lPSJzaGFkb3ciCiAJ
CQkJPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcQ29udGVu
dEluY2x1c2lvblNlbGVjdG9yLmNwcCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQot
CQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XENvbnRlbnRJbmNsdXNpb25TZWxlY3Rv
ci5oIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5caHRtbFxzaGFkb3dcQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpAQCAtNjA4ODUsNiArNjA4NzcsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcc2hhZG93XEhUTUxDb250ZW50U2VsZWN0
b3IuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5caHRtbFxzaGFkb3dcSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorCQkJCQk+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRNTFNo
YWRvd0VsZW1lbnQuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJj
YzFlNGFlOWJjMWRiOGI2OWE1YTdkMThjN2Q4MjdkYmJlMWZkYTEuLmY1NzhiOTI4ZTM3MTljZWNh
YzBmNjE1ZDIzZDA3MGFiNzNhZDIwYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2MDMsMTIgKzE2MDMsMTIgQEAKIAkJNTUw
QTBCQzkwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuY3BwICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYg
LyogUXVhbGlmaWVkTmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTUwQTBCQzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzNEMTM0NzE0
Q0UzOUZGMDA1N0FCQ0EgLyogSW5zcGVjdG9yVHlwZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNB
IC8qIEluc3BlY3RvclR5cGVCdWlsZGVyLmNwcCAqLzsgfTsKLQkJNTdCNzkxQTMxNEM2QTYyOTAw
RjIwMkQxIC8qIENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyog
Q29udGVudEluY2x1c2lvblNlbGVjdG9yLmNwcCAqLzsgfTsKLQkJNTdCNzkxQTQxNEM2QTYyOTAw
RjIwMkQxIC8qIENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENv
bnRlbnRJbmNsdXNpb25TZWxlY3Rvci5oICovOyB9OwogCQk1N0I3OTFBNTE0QzZBNjI5MDBGMjAy
RDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRT
ZWxlY3RvclF1ZXJ5LmNwcCAqLzsgfTsKIAkJNTdCNzkxQTYxNEM2QTYyOTAwRjIwMkQxIC8qIENv
bnRlbnRTZWxlY3RvclF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVl
cnkuaCAqLzsgfTsKIAkJNTdCNzkxQTkxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLzsgfTsK
IAkJNTdCNzkxQUExNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTgxNEM2QTYz
MzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5oICovOyB9OworCQk1N0I3OTFBMzE0QzZB
NjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyog
SFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgKi87IH07CisJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJE
MSAvKiBIVE1MQ29udGVudFNlbGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRT
ZWxlY3Rvci5oICovOyB9OwogCQk1OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZp
ZXdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
OTA1QURCRDEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi87IH07CiAJCTU5
MDVBREMwMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYg
LyogWE1MVHJlZVZpZXdlci5oICovOyB9OwogCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyog
RGV2aWNlT3JpZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDY0
LDEyICs4NDY0LDEyIEBACiAJCTU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWRO
YW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFF1YWxpZmllZE5hbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTU3M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JU
eXBlQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNw
ZWN0b3JUeXBlQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3M0Qx
MzQ2MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudElu
Y2x1c2lvblNlbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTU3Qjc5MUEwMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEluY2x1c2lvblNlbGVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUExMTRDNkE2MjkwMEYy
MDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTU3Qjc5MUEyMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JR
dWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50U2VsZWN0b3JR
dWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1N0I3OTFBNzE0QzZBNjMzMDBG
MjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEhUTUxDb250ZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU3Qjc5MUE4MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTENvbnRlbnRFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAv
KiBIVE1MQ29udGVudFNlbGVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxDb250ZW50U2VsZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ29udGVudFNlbGVjdG9yLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAvKiBY
TUxUcmVlVmlld2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhN
TFRyZWVWaWV3ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTA1QURCRTEz
MDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBYTUxUcmVlVmlld2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTU5MEUxQjQ4MTFFNEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXZpY2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTQzMzcsOCArMTQzMzcsNiBAQAogCQk0MTUwRjlFRDEyQjZF
MDk5MDAwOEM4NjAgLyogc2hhZG93ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKLQkJCQk1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudEluY2x1c2lv
blNlbGVjdG9yLmNwcCAqLywKLQkJCQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVu
dEluY2x1c2lvblNlbGVjdG9yLmggKi8sCiAJCQkJNTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8q
IENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLywKIAkJCQk1N0I3OTFBMjE0QzZBNjI5MDBGMjAy
RDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCAqLywKIAkJCQlBN0M5QUJGNjEzNTdBM0JGMDBG
NTUwM0YgLyogRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwICovLApAQCAtMTQzNDYsNiArMTQzNDQs
OCBAQAogCQkJCTU3Qjc5MUE3MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQu
Y3BwICovLAogCQkJCTU3Qjc5MUE4MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1l
bnQuaCAqLywKIAkJCQlBN0I3NzQ5NjE0Q0Y2MzUzMDA0MDQ0QkIgLyogSFRNTENvbnRlbnRFbGVt
ZW50LmlkbCAqLywKKwkJCQk1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRT
ZWxlY3Rvci5jcHAgKi8sCisJCQkJNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250
ZW50U2VsZWN0b3IuaCAqLywKIAkJCQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNo
YWRvd0VsZW1lbnQuY3BwICovLAogCQkJCTRBQkRGRjA4MTREQkUzMTIwMDREMTE3RCAvKiBIVE1M
U2hhZG93RWxlbWVudC5oICovLAogCQkJCTRBQkRGRjA5MTREQkUzMTIwMDREMTE3RCAvKiBIVE1M
U2hhZG93RWxlbWVudC5pZGwgKi8sCkBAIC0yMTI3MSw3ICsyMTI3MSw2IEBACiAJCQkJQTgxODcy
MUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUxQTE0NzA4MTExMDJCMTUwMEVFQzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI5ODEwRTgyMDcyNTAwQjI1OTY1IC8qIENvbnRlbnREYXRh
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVu
dEluY2x1c2lvblNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OTEwMkZCQzE0MzI3RDNC
MDAzQzlEMDQgLyogQ29udGVudFNlYXJjaFV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0M0
NzFEQzEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1N0I3OTFBNjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVl
cnkuaCBpbiBIZWFkZXJzICovLApAQCAtMjIyOTQsNiArMjIyOTMsNyBAQAogCQkJCUE4REYzRkQw
MDk3RkEwRkMwMDUyOTgxQiAvKiBIVE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTc3QjM4NjUxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1N0I3OTFBQTE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogSFRN
TENvbnRlbnRTZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRCQ0FFODAw
N0M5QTRGIC8qIEhUTUxDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1QzA0MURCMEZG
Q0E3Q0UwMDgzOUQ0QSAvKiBIVE1MRGF0YUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlEMzU5RDc4QTEyOUNBMjcxMDAwNkU1RDIgLyogSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKQEAgLTI0Njg4LDcgKzI0Njg4LDYgQEAKIAkJCQk0MUYwNjE4RjBGNUYwNjk4MDBB
MDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMUYw
OTc3RDNDMDAwNTgyNkQ5IC8qIENvbnRhaW5lck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkM1RUI5ODAwRTgyMDcyNTAwQjI1OTY1IC8qIENvbnRlbnREYXRhLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTU3Qjc5MUEzMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50SW5jbHVzaW9uU2VsZWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTkxMDJGQkIxNDMyN0QzQjAwM0M5RDA0IC8qIENv
bnRlbnRTZWFyY2hVdGlscy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0M0NzFEQjEyRjkyNUJE
MDA4NjM1NEIgLyogQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTU3Qjc5MUE1MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTI1MzQ4LDYgKzI1MzQ3LDcgQEAKIAkJCQlBOERGM0ZEMTA5N0ZBMEZD
MDA1Mjk4MUIgLyogSFRNTENvbGxlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4
NjQxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTU3Qjc5MUE5MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxD
b250ZW50U2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAw
MTZGNTQxIC8qIEhUTUxDb252ZXJ0ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNUMwNDFEQTBG
RkNBN0NFMDA4MzlENEEgLyogSFRNTERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlEMzU5RDc4OTEyOUNBMjcxMDAwNkU1RDIgLyogSFRNTERldGFpbHNFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5j
cHAKaW5kZXggNGE5NzA5YTBkZGI1NmU1M2ZkNDcwMmE3OWIxNjZkZTJlNGFhYjgyZi4uNWI3OGY1
YjM0NjVlNzc1YzliNjY4ZjI0YzQzZTVlMDFlZTQ4ZWIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAi
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaCIKIAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKLSNp
bmNsdWRlICJDb250ZW50SW5jbHVzaW9uU2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1MQ29udGVu
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJG
dWxsU2NyZWVuLmgiCkBAIC04Miw3ICs4Miw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2Rl
UmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogCiAgICAgICAgIGlmIChwYXJlbnQtPmlzQ29u
dGVudEVsZW1lbnQoKSkgewogICAgICAgICAgICAgSFRNTENvbnRlbnRFbGVtZW50KiBzaGFkb3dD
b250ZW50RWxlbWVudCA9IHRvSFRNTENvbnRlbnRFbGVtZW50KHBhcmVudCk7Ci0gICAgICAgICAg
ICBpZiAoIXNoYWRvd0NvbnRlbnRFbGVtZW50LT5oYXNJbmNsdXNpb24oKSkgeworICAgICAgICAg
ICAgaWYgKCFzaGFkb3dDb250ZW50RWxlbWVudC0+aGFzU2VsZWN0aW9uKCkpIHsKICAgICAgICAg
ICAgICAgICBtX3BoYXNlID0gQXR0YWNoQ29udGVudEZhbGxiYWNrOwogICAgICAgICAgICAgICAg
IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQo
cGFyZW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMjIsMTIgKzEyMiwxMiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6cmVsZWFzZVN0eWxlKCkKIAogc3RhdGljIFJlbmRlck9iamVj
dCogbmV4dFJlbmRlcmVyT2YoSFRNTENvbnRlbnRFbGVtZW50KiBwYXJlbnQsIE5vZGUqIGN1cnJl
bnQpCiB7Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBjdXJyZW50SW5jbHVzaW9uID0gcGFyZW50LT5p
bmNsdXNpb25zKCktPmZpbmQoY3VycmVudCk7Ci0gICAgaWYgKCFjdXJyZW50SW5jbHVzaW9uKQor
ICAgIEhUTUxDb250ZW50U2VsZWNpdG9uKiBjdXJyZW50U2VsZWN0aW9uID0gcGFyZW50LT5zZWxl
Y3Rpb25zKCktPmZpbmQoY3VycmVudCk7CisgICAgaWYgKCFjdXJyZW50U2VsZWN0aW9uKQogICAg
ICAgICByZXR1cm4gMDsKIAotICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24gPSBj
dXJyZW50SW5jbHVzaW9uLT5uZXh0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5jbHVzaW9u
LT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbmNsdXNp
b24tPmNvbnRlbnQoKS0+cmVuZGVyZXIoKSkKKyAgICBmb3IgKEhUTUxDb250ZW50U2VsZWNpdG9u
KiBzZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uLT5uZXh0KCk7IHNlbGVjdGlvbjsgc2VsZWN0
aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJldHVy
biByZW5kZXJlcjsKICAgICB9CiAKQEAgLTEzOCwxMCArMTM4LDEwIEBAIHN0YXRpYyBSZW5kZXJP
YmplY3QqIHByZXZpb3VzUmVuZGVyZXJPZihIVE1MQ29udGVudEVsZW1lbnQqIHBhcmVudCwgTm9k
ZSogY3VycmVuCiB7CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXIgPSAwOwogCi0gICAg
Zm9yIChTaGFkb3dJbmNsdXNpb24qIGluY2x1c2lvbiA9IHBhcmVudC0+aW5jbHVzaW9ucygpLT5m
aXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+bmV4dCgpKSB7Ci0gICAg
ICAgIGlmIChpbmNsdXNpb24tPmNvbnRlbnQoKSA9PSBjdXJyZW50KQorICAgIGZvciAoSFRNTENv
bnRlbnRTZWxlY2l0b24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgp
OyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7CisgICAgICAgIGlm
IChzZWxlY3Rpb24tPm5vZGUoKSA9PSBjdXJyZW50KQogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5jbHVzaW9uLT5jb250ZW50KCktPnJl
bmRlcmVyKCkpCisgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9u
LT5ub2RlKCktPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBsYXN0UmVuZGVyZXIgPSByZW5kZXJl
cjsKICAgICB9CiAKQEAgLTE1MCw4ICsxNTAsOCBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2
aW91c1JlbmRlcmVyT2YoSFRNTENvbnRlbnRFbGVtZW50KiBwYXJlbnQsIE5vZGUqIGN1cnJlbgog
CiBzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2YoSFRNTENvbnRlbnRFbGVtZW50
KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChTaGFkb3dJbmNsdXNpb24qIGluY2x1c2lvbiA9IHBhcmVu
dC0+aW5jbHVzaW9ucygpLT5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lv
bi0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW5jbHVz
aW9uLT5jb250ZW50KCktPnJlbmRlcmVyKCkpCisgICAgZm9yIChIVE1MQ29udGVudFNlbGVjaXRv
biogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsg
c2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKKyAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAg
IHJldHVybiByZW5kZXJlcjsKICAgICB9CiAKQEAgLTE2MCw4ICsxNjAsOCBAQCBzdGF0aWMgUmVu
ZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2YoSFRNTENvbnRlbnRFbGVtZW50KiBwYXJlbnQpCiAK
IHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKEhUTUxDb250ZW50RWxlbWVudCog
cGFyZW50KQogewotICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24gPSBwYXJlbnQt
PmluY2x1c2lvbnMoKS0+bGFzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+
cHJldmlvdXMoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGluY2x1
c2lvbi0+Y29udGVudCgpLT5yZW5kZXJlcigpKQorICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY2l0
b24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5sYXN0KCk7IHNlbGVjdGlvbjsg
c2VsZWN0aW9uID0gc2VsZWN0aW9uLT5wcmV2aW91cygpKSB7CisgICAgICAgIGlmIChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gcmVuZGVyZXI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
aW5kZXggMjkwYmUzZjZkNDUyNzk3MWQyODkwNmJhZTNiN2I4ODAwNjIyMDhiMi4uODhhN2ZiN2U1
ZWRiNDY3MzU1YzA4MDIyZTE5N2IyMTgyN2I4MjI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcApAQCAtMjcsMTAgKzI3LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgogCi0jaW5jbHVkZSAiQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUg
IlNWR05hbWVzLmgiCkBAIC0xNzMsMTIgKzE3MywxMiBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldE5l
ZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogCiBIVE1MQ29udGVudEVsZW1lbnQq
IFNoYWRvd1Jvb3Q6OmluY2x1ZGVyRm9yKE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFt
X2luY2x1c2lvbnMpCisgICAgaWYgKCFtX3NlbGVjdG9yKQogICAgICAgICByZXR1cm4gMDsKLSAg
ICBTaGFkb3dJbmNsdXNpb24qIGZvdW5kID0gbV9pbmNsdXNpb25zLT5maW5kRm9yKG5vZGUpOwor
ICAgIEhUTUxDb250ZW50U2VsZWNpdG9uKiBmb3VuZCA9IG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9k
ZSk7CiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZvdW5k
LT5pbmNsdWRlcigpOworICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKIH0KIAog
dm9pZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKQEAgLTE5Miw3ICsxOTIsNyBA
QCB2b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogCiBib29sIFNoYWRvd1Jv
b3Q6OmlzSW5jbHVzaW9uU2VsZWN0b3JBY3RpdmUoKSBjb25zdAogewotICAgIHJldHVybiBtX2lu
Y2x1c2lvbnMgJiYgbV9pbmNsdXNpb25zLT5oYXNDYW5kaWRhdGVzKCk7CisgICAgcmV0dXJuIG1f
c2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwogfQogCiBib29sIFNoYWRv
d1Jvb3Q6Omhhc0NvbnRlbnRFbGVtZW50KCkgY29uc3QKQEAgLTIxNywxMyArMjE3LDEzIEBAIHZv
aWQgU2hhZG93Um9vdDo6c2V0QXBwbHlBdXRob3JTaGVldHMoYm9vbCB2YWx1ZSkKIAogdm9pZCBT
aGFkb3dSb290OjphdHRhY2goKQogewotICAgIC8vIENoaWxkcmVuIG9mIG1faW5jbHVzaW9ucyBp
cyBwb3B1bGF0ZWQgbGF6aWx5IGluCi0gICAgLy8gZW5zdXJlSW5jbHVzaW9ucygpLCBhbmQgaGVy
ZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CisgICAgLy8gQ2hpbGRyZW4gb2YgbV9zZWxlY3RvciBpcyBw
b3B1bGF0ZWQgbGF6aWx5IGluCisgICAgLy8gZW5zdXJlU2VsZWN0b3IoKSwgYW5kIGhlcmUgd2Ug
anVzdCBlbnN1cmUgdGhhdAogICAgIC8vIGl0IGlzIGluIGNsZWFuIHN0YXRlLgotICAgIEFTU0VS
VCghbV9pbmNsdXNpb25zIHx8ICFtX2luY2x1c2lvbnMtPmhhc0NhbmRpZGF0ZXMoKSk7CisgICAg
QVNTRVJUKCFtX3NlbGVjdG9yIHx8ICFtX3NlbGVjdG9yLT5oYXNDYW5kaWRhdGVzKCkpOwogICAg
IERvY3VtZW50RnJhZ21lbnQ6OmF0dGFjaCgpOwotICAgIGlmIChtX2luY2x1c2lvbnMpCi0gICAg
ICAgIG1faW5jbHVzaW9ucy0+ZGlkU2VsZWN0KCk7CisgICAgaWYgKG1fc2VsZWN0b3IpCisgICAg
ICAgIG1fc2VsZWN0b3ItPmRpZFNlbGVjdCgpOwogfQogCiB2b2lkIFNoYWRvd1Jvb3Q6OnJlYXR0
YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKQEAgLTI0NSwxNyArMjQ1LDE3IEBAIHZvaWQgU2hh
ZG93Um9vdDo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQogICAgIH0KIH0KIAotQ29u
dGVudEluY2x1c2lvblNlbGVjdG9yKiBTaGFkb3dSb290OjppbmNsdXNpb25zKCkgY29uc3QKK0hU
TUxDb250ZW50U2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OnNlbGVjdG9yKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9pbmNsdXNpb25zLmdldCgpOworICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOwog
fQogCi1Db250ZW50SW5jbHVzaW9uU2VsZWN0b3IqIFNoYWRvd1Jvb3Q6OmVuc3VyZUluY2x1c2lv
bnMoKQorSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdDo6ZW5zdXJlU2VsZWN0b3IoKQog
ewotICAgIGlmICghbV9pbmNsdXNpb25zKQotICAgICAgICBtX2luY2x1c2lvbnMgPSBhZG9wdFB0
cihuZXcgQ29udGVudEluY2x1c2lvblNlbGVjdG9yKCkpOwotICAgIG1faW5jbHVzaW9ucy0+d2ls
bFNlbGVjdE92ZXIodGhpcyk7Ci0gICAgcmV0dXJuIG1faW5jbHVzaW9ucy5nZXQoKTsKKyAgICBp
ZiAoIW1fc2VsZWN0b3IpCisgICAgICAgIG1fc2VsZWN0b3IgPSBhZG9wdFB0cihuZXcgSFRNTENv
bnRlbnRTZWxlY3RvcigpKTsKKyAgICBtX3NlbGVjdG9yLT53aWxsU2VsZWN0T3Zlcih0aGlzKTsK
KyAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aAppbmRleCA0MDFlZTVlOWQ2NjU1ZTE2MDJkMTM3NGZkOTQ3OGY1ZWE0NjU2MGY1Li43OTY4ZDBl
NzkxMmRlMDJjZGMzNzQ1MzIxMDdiODE5ZmU2ZmVkYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKQEAgLTMzLDkgKzMzLDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBDb250
ZW50SW5jbHVzaW9uU2VsZWN0b3I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50
RWxlbWVudDsKK2NsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CiAKIGNsYXNzIFNoYWRvd1Jvb3Qg
OiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSB7CiBwdWJsaWM6CkBA
IC03MCw4ICs3MCw4IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJl
dHVybiBzaGFkb3dIb3N0KCk7IH0KIAotICAgIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvciogaW5j
bHVzaW9ucygpIGNvbnN0OwotICAgIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvciogZW5zdXJlSW5j
bHVzaW9ucygpOworICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7Cisg
ICAgSFRNTENvbnRlbnRTZWxlY3RvciogZW5zdXJlU2VsZWN0b3IoKTsKIAogcHJpdmF0ZToKICAg
ICBTaGFkb3dSb290KERvY3VtZW50Kik7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fYXBwbHlBdXRob3JTaGVldHMgOiAxOwogICAgIGJvb2wgbV9uZWVkc1JlY2FsY3Vs
YXRlQ29udGVudCA6IDE7Ci0gICAgT3duUHRyPENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcj4gbV9p
bmNsdXNpb25zOworICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwog
fTsKIAogaW5saW5lIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50SW5jbHVzaW9uU2VsZWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2YjU0MWE1YWU4OTg3NTk4ZWI5YTkxMzI3NGE1YzRjNmFjZjgwZGM0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
NTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb250ZW50SW5jbHVz
aW9uU2VsZWN0b3IuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCi0jaW5j
bHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTaGFkb3dJbmNsdXNpb246OmFwcGVuZChQYXNz
UmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbmV4dCkKLXsKLSAgICBBU1NFUlQoIW1fbmV4dCk7Ci0g
ICAgQVNTRVJUKCFuZXh0LT5wcmV2aW91cygpKTsKLSAgICBtX25leHQgPSBuZXh0OwotICAgIG1f
bmV4dC0+bV9wcmV2aW91cyA9IHRoaXM7Ci19Ci0KLXZvaWQgU2hhZG93SW5jbHVzaW9uOjp1bmxp
bmsoKQotewotICAgIEFTU0VSVCghbV9wcmV2aW91cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBm
b3IgYSBoZWFkLgotICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGl0ZW0gPSB0aGlzOwotICAg
IHdoaWxlIChpdGVtKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlbS0+cHJldmlvdXMoKSk7Ci0gICAg
ICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG5leHRJdGVtID0gaXRlbS0+bV9uZXh0OwotICAg
ICAgICBpdGVtLT5tX25leHQuY2xlYXIoKTsKLSAgICAgICAgaWYgKG5leHRJdGVtKQotICAgICAg
ICAgICAgbmV4dEl0ZW0tPm1fcHJldmlvdXMuY2xlYXIoKTsKLSAgICAgICAgaXRlbSA9IG5leHRJ
dGVtOwotICAgIH0KLX0KLQotU2hhZG93SW5jbHVzaW9uTGlzdDo6U2hhZG93SW5jbHVzaW9uTGlz
dCgpCi17Ci19Ci0KLVNoYWRvd0luY2x1c2lvbkxpc3Q6On5TaGFkb3dJbmNsdXNpb25MaXN0KCkK
LXsKLSAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLX0KLQotU2hhZG93SW5jbHVzaW9uKiBTaGFkb3dJ
bmNsdXNpb25MaXN0OjpmaW5kKE5vZGUqIGNvbnRlbnQpIGNvbnN0Ci17Ci0gICAgZm9yIChTaGFk
b3dJbmNsdXNpb24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7
Ci0gICAgICAgIGlmIChjb250ZW50ID09IGl0ZW0tPmNvbnRlbnQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBpdGVtOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBTaGFkb3dJ
bmNsdXNpb25MaXN0OjpjbGVhcigpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICBB
U1NFUlQoIW1fbGFzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2ZpcnN0LT51
bmxpbmsoKTsKLSAgICBtX2ZpcnN0LmNsZWFyKCk7Ci0gICAgbV9sYXN0LmNsZWFyKCk7Ci19Ci0K
LXZvaWQgU2hhZG93SW5jbHVzaW9uTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVz
aW9uPiBjaGlsZCkKLXsKLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9s
YXN0KTsKLSAgICAgICAgbV9maXJzdCA9IG1fbGFzdCA9IGNoaWxkOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgbV9sYXN0LT5hcHBlbmQoY2hpbGQpOwotICAgIG1fbGFzdCA9IG1fbGFz
dC0+bmV4dCgpOwotfQotCi1Db250ZW50SW5jbHVzaW9uU2VsZWN0b3I6OkNvbnRlbnRJbmNsdXNp
b25TZWxlY3RvcigpCi17Ci19Ci0KLUNvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcjo6fkNvbnRlbnRJ
bmNsdXNpb25TZWxlY3RvcigpCi17Ci0gICAgQVNTRVJUKG1fY2FuZGlkYXRlcy5pc0VtcHR5KCkp
OwotfQotCi12b2lkIENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KEhUTUxDb250ZW50
RWxlbWVudCogY29udGVudEVsZW1lbnQsIFNoYWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMp
Ci17Ci0gICAgQVNTRVJUKGluY2x1c2lvbnMtPmlzRW1wdHkoKSk7Ci0KLSAgICBDb250ZW50U2Vs
ZWN0b3JRdWVyeSBxdWVyeShjb250ZW50RWxlbWVudCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTm9kZSogY2hpbGQgPSBt
X2NhbmRpZGF0ZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghY2hpbGQpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGluY2x1c2lvbiA9
IFNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKGNvbnRlbnRFbGVtZW50LCBjaGlsZCk7Ci0gICAgICAg
IGluY2x1c2lvbnMtPmFwcGVuZChpbmNsdXNpb24pOwotICAgICAgICBtX2luY2x1c2lvblNldC5h
ZGQoaW5jbHVzaW9uLmdldCgpKTsKLSAgICAgICAgbV9jYW5kaWRhdGVzW2ldID0gMDsKLSAgICB9
Ci19Ci0KLXZvaWQgQ29udGVudEluY2x1c2lvblNlbGVjdG9yOjp1bnNlbGVjdChTaGFkb3dJbmNs
dXNpb25MaXN0KiBsaXN0KQotewotICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24g
PSBsaXN0LT5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+bmV4dCgp
KQotICAgICAgICBtX2luY2x1c2lvblNldC5yZW1vdmUoaW5jbHVzaW9uKTsKLSAgICBsaXN0LT5j
bGVhcigpOwotfQotCi1TaGFkb3dJbmNsdXNpb24qIENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcjo6
ZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5jbHVzaW9uU2V0LmZp
bmQoa2V5KTsKLX0KLQotdm9pZCBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3I6OmRpZFNlbGVjdCgp
Ci17Ci0gICAgbV9jYW5kaWRhdGVzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgQ29udGVudEluY2x1c2lv
blNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290KiBzY29wZSkKLXsKLSAgICBpZiAo
IW1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKE5vZGUq
IG5vZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpKQotICAgICAgICBtX2NhbmRpZGF0ZXMuYXBwZW5kKG5vZGUpOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50SW5j
bHVzaW9uU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRJbmNs
dXNpb25TZWxlY3Rvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjBiMTk3OGVi
Yzc5MWJjNDYzYzIzMDRhOTk3ZjU1MTU0MWI2MjY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRJ
bmNsdXNpb25TZWxlY3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcl9oCi0jZGVmaW5lIENvbnRlbnRJbmNsdXNpb25TZWxl
Y3Rvcl9oCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudDsKLWNsYXNzIEhUTUxDb250
ZW50RWxlbWVudDsKLWNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFkb3dSb290OwotCi1jbGFzcyBTaGFk
b3dJbmNsdXNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFkb3dJbmNsdXNpb24+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGNyZWF0ZShIVE1MQ29u
dGVudEVsZW1lbnQqLCBOb2RlKik7Ci0KLSAgICBIVE1MQ29udGVudEVsZW1lbnQqIGluY2x1ZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRlcjsgfQotICAgIE5vZGUqIGNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KLSAgICBTaGFkb3dJbmNsdXNpb24qIG5leHQo
KSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KLSAgICBTaGFkb3dJbmNsdXNpb24qIHBy
ZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQotCi0gICAgdm9pZCBh
cHBlbmQoUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+KTsKLSAgICB2b2lkIHVubGluaygpOwot
Ci1wcml2YXRlOgotICAgIFNoYWRvd0luY2x1c2lvbihIVE1MQ29udGVudEVsZW1lbnQqLCBOb2Rl
Kik7Ci0KLSAgICBIVE1MQ29udGVudEVsZW1lbnQqIG1faW5jbHVkZXI7Ci0gICAgUmVmUHRyPE5v
ZGU+IG1fY29udGVudDsKLSAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBtX25leHQ7Ci0gICAg
UmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9wcmV2aW91czsKLX07Ci0KLWlubGluZSBTaGFkb3dJ
bmNsdXNpb246OlNoYWRvd0luY2x1c2lvbihIVE1MQ29udGVudEVsZW1lbnQqIGluY2x1ZGVyLCBO
b2RlKiBjb250ZW50KQotICAgIDogbV9pbmNsdWRlcihpbmNsdWRlciksIG1fY29udGVudChjb250
ZW50KQoteyB9Ci0KLWlubGluZSBQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gU2hhZG93SW5j
bHVzaW9uOjpjcmVhdGUoSFRNTENvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9kZSogY29udGVu
dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0luY2x1c2lvbihpbmNsdWRlciwg
Y29udGVudCkpOwotfQotCi1jbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0IHsKLXB1YmxpYzoKLSAg
ICBTaGFkb3dJbmNsdXNpb25MaXN0KCk7Ci0gICAgflNoYWRvd0luY2x1c2lvbkxpc3QoKTsKLQot
ICAgIFNoYWRvd0luY2x1c2lvbiogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgp
OyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Lmdl
dCgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqKSBjb25zdDsKLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9maXJzdDsgfQotCi0gICAgdm9pZCBjbGVhcigp
OwotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7Ci0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9maXJzdDsKLSAgICBSZWZQdHI8U2hh
ZG93SW5jbHVzaW9uPiBtX2xhc3Q7Ci19OwotCi0KLWNsYXNzIFNoYWRvd0luY2x1c2lvblNldCB7
Ci1wdWJsaWM6Ci0gICAgdm9pZCBhZGQoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBtX3NldC5h
ZGQodmFsdWUpOyB9Ci0gICAgdm9pZCByZW1vdmUoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBt
X3NldC5yZW1vdmUodmFsdWUpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9zZXQuaXNFbXB0eSgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqIGtleSkg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFRyYW5zbGF0b3IgewotICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSoga2V5KSB7IHJldHVybiBQ
dHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uLCBjb25zdCBOb2RlKiBjb250ZW50
KSB7IHJldHVybiBpbmNsdXNpb24tPmNvbnRlbnQoKSA9PSBjb250ZW50OyB9Ci0gICAgfTsKLQot
ICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU2hhZG93SW5j
bHVzaW9uKiBrZXkpIHsgcmV0dXJuIFB0ckhhc2g8Y29uc3QgTm9kZSo+OjpoYXNoKGtleS0+Y29u
dGVudCgpKTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChTaGFkb3dJbmNsdXNpb24qIGEs
IFNoYWRvd0luY2x1c2lvbiogYikgeyByZXR1cm4gYS0+Y29udGVudCgpID09IGItPmNvbnRlbnQo
KTsgfQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hTZXQ8U2hhZG93SW5jbHVz
aW9uKiwgSGFzaD4gUG9pbnRlclNldDsKLQotICAgIFBvaW50ZXJTZXQgbV9zZXQ7Ci19OwotCi1p
bmxpbmUgU2hhZG93SW5jbHVzaW9uKiBTaGFkb3dJbmNsdXNpb25TZXQ6OmZpbmQoTm9kZSoga2V5
KSBjb25zdAotewotICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxO
b2RlKiwgU2hhZG93SW5jbHVzaW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOwotICAgIHJldHVybiBm
b3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7Ci19Ci0KLWNsYXNzIENvbnRlbnRJbmNs
dXNpb25TZWxlY3RvciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGVudEluY2x1c2lv
blNlbGVjdG9yKTsKLXB1YmxpYzoKLSAgICBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3IoKTsKLSAg
ICB+Q29udGVudEluY2x1c2lvblNlbGVjdG9yKCk7Ci0KLSAgICB2b2lkIHNlbGVjdChIVE1MQ29u
dGVudEVsZW1lbnQqLCBTaGFkb3dJbmNsdXNpb25MaXN0Kik7Ci0gICAgdm9pZCB1bnNlbGVjdChT
aGFkb3dJbmNsdXNpb25MaXN0Kik7Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kRm9yKE5vZGUq
IGtleSkgY29uc3Q7Ci0KLSAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsKLSAg
ICB2b2lkIGRpZFNlbGVjdCgpOwotICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0
dXJuICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCByZW1v
dmVGcm9tU2V0KFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKLSAgICB2b2lkIGFkZFRvU2V0KFNoYWRv
d0luY2x1c2lvbkxpc3QqKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2NhbmRpZGF0
ZXM7Ci0gICAgU2hhZG93SW5jbHVzaW9uU2V0IG1faW5jbHVzaW9uU2V0OwotfTsKLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuY3BwCmluZGV4IDk2MWRkMWQzMDA0ZjIwMGU1OTFkYWExYTZhYmFkNTM5NThiODUzYjIuLjg1
NDgyYzYyMjkzY2YyYzQ1ZGM4OGEzYjFlYjAzMWEwOGEyMDhhZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5o
IgogCi0jaW5jbHVkZSAiQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlbGVjdG9yUXVlcnkuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTYwLDcgKzYwLDcgQEAgUGFzc1JlZlB0cjxIVE1MQ29udGVu
dEVsZW1lbnQ+IEhUTUxDb250ZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHQKIAogSFRNTENvbnRlbnRFbGVtZW50OjpIVE1MQ29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQobmFt
ZSwgZG9jdW1lbnQpCi0gICAgLCBtX2luY2x1c2lvbnMoYWRvcHRQdHIobmV3IFNoYWRvd0luY2x1
c2lvbkxpc3QoKSkpCisgICAgLCBtX3NlbGVjdGlvbnMoYWRvcHRQdHIobmV3IEhUTUxDb250ZW50
U2VsZWN0aW9uTGlzdCgpKSkKIHsKIH0KIApAQCAtNzQsMzEgKzc0LDMxIEBAIHZvaWQgSFRNTENv
bnRlbnRFbGVtZW50OjphdHRhY2goKQogCiAgICAgLy8gQmVmb3JlIGNhbGxpbmcgU3R5bGVkRWxl
bWVudDo6YXR0YWNoLCBzZWxlY3RvciBtdXN0IGJlIGNhbGN1bGF0ZWQuCiAgICAgaWYgKHJvb3Qp
IHsKLSAgICAgICAgQ29udGVudEluY2x1c2lvblNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmVu
c3VyZUluY2x1c2lvbnMoKTsKLSAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KG1faW5jbHVzaW9u
cy5nZXQoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgbV9pbmNsdXNpb25zLmdl
dCgpKTsKKyAgICAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5lbnN1
cmVTZWxlY3RvcigpOworICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QobV9zZWxlY3Rpb25zLmdl
dCgpKTsKKyAgICAgICAgc2VsZWN0b3ItPnNlbGVjdCh0aGlzLCBtX3NlbGVjdGlvbnMuZ2V0KCkp
OwogICAgIH0KIAogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAogICAgIGlmIChyb290KSB7
Ci0gICAgICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24gPSBtX2luY2x1c2lvbnMt
PmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5jbHVzaW9uLT5uZXh0KCkpCi0gICAg
ICAgICAgICBpbmNsdXNpb24tPmNvbnRlbnQoKS0+YXR0YWNoKCk7CisgICAgICAgIGZvciAoSFRN
TENvbnRlbnRTZWxlY2l0b24qIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9ucy0+Zmlyc3QoKTsgc2Vs
ZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkKKyAgICAgICAgICAgIHNlbGVj
dGlvbi0+bm9kZSgpLT5hdHRhY2goKTsKICAgICB9CiB9CiAKIHZvaWQgSFRNTENvbnRlbnRFbGVt
ZW50OjpkZXRhY2goKQogewogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290
KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewotICAgICAgICBpZiAoQ29udGVudEluY2x1c2lvblNl
bGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmluY2x1c2lvbnMoKSkKLSAgICAgICAgICAgIHNlbGVj
dG9yLT51bnNlbGVjdChtX2luY2x1c2lvbnMuZ2V0KCkpOworICAgICAgICBpZiAoSFRNTENvbnRl
bnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5zZWxlY3RvcigpKQorICAgICAgICAgICAgc2Vs
ZWN0b3ItPnVuc2VsZWN0KG1fc2VsZWN0aW9ucy5nZXQoKSk7CiAKLSAgICAgICAgLy8gV2hlbiBj
b250ZW50IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0
ZWQgdG8gcmUtY2FsY3VsYXRlIGluY2x1c2lvbnMgZm9yCisgICAgICAgIC8vIFdoZW4gY29udGVu
dCBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRv
IHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKICAgICAgICAgLy8gb3RoZXIgY29udGVudCBlbGVt
ZW50cy4KICAgICAgICAgcm9vdC0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRv
dygpOwogICAgIH0KIAotICAgIEFTU0VSVChtX2luY2x1c2lvbnMtPmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUKG1fc2VsZWN0aW9ucy0+aXNFbXB0eSgpKTsKICAgICBIVE1MRWxlbWVudDo6ZGV0YWNo
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmgKaW5kZXggNmUxODE2Yzc4MDQ0YTJhMTRiMTEyMjdmZjViYzg0NTFkM2U1NzhlYS4uMTc4
Mzg4MDQ1OGJkNTAyZWE3ZWY1NjZlZjVhNWQwZTllYzliY2ZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKQEAgLTMxLDE0ICszMSwxNCBA
QAogI2lmbmRlZiBIVE1MQ29udGVudEVsZW1lbnRfaAogI2RlZmluZSBIVE1MQ29udGVudEVsZW1l
bnRfaAogCi0jaW5jbHVkZSAiQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgiCisjaW5jbHVkZSAi
SFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
U2VsZWN0b3JRdWVyeTsKLWNsYXNzIFNoYWRvd0luY2x1c2lvbkxpc3Q7CitjbGFzcyBIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3Q7CiAKIC8vIE5PVEU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9l
c24ndCBzdXBwb3J0IGR5bmFtaWMgaW5zZXJ0aW9uL2RlbGV0aW9uIG9mIEhUTUxDb250ZW50RWxl
bWVudC4KIC8vIFlvdSBzaG91bGQgY3JlYXRlIEhUTUxDb250ZW50RWxlbWVudCBkdXJpbmcgdGhl
IGhvc3QgY29uc3RydWN0aW9uLgpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MQogICAgIHZvaWQg
c2V0U2VsZWN0KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgY29uc3QgU2hhZG93SW5jbHVz
aW9uTGlzdCogaW5jbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVzaW9ucy5nZXQoKTsg
fQotICAgIGJvb2wgaGFzSW5jbHVzaW9uKCkgY29uc3QgeyByZXR1cm4gaW5jbHVzaW9ucygpLT5m
aXJzdCgpOyB9CisgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25zLmdldCgpOyB9CisgICAgYm9vbCBoYXNTZWxl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb25zKCktPmZpcnN0KCk7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc1NlbGVjdFZhbGlkKCkgY29uc3Q7CiAKQEAgLTc1LDcgKzc1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVS
UklERTsKIAotICAgIE93blB0cjxTaGFkb3dJbmNsdXNpb25MaXN0PiBtX2luY2x1c2lvbnM7Cisg
ICAgT3duUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdD4gbV9zZWxlY3Rpb25zOwogfTsKIAog
aW5saW5lIEhUTUxDb250ZW50RWxlbWVudCogdG9IVE1MQ29udGVudEVsZW1lbnQoTm9kZSogbm9k
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2Vs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNWVlNzA4ZjdmMGE2ZDMxOWQ0ODYzMmYxYTE3MmI5ZjFmZWMyZDVh
OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKworI2luY2x1ZGUgIkNvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBIVE1MQ29udGVu
dFNlbGVjaXRvbjo6YXBwZW5kKFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0b24+IG5leHQp
Cit7CisgICAgQVNTRVJUKCFtX25leHQpOworICAgIEFTU0VSVCghbmV4dC0+cHJldmlvdXMoKSk7
CisgICAgbV9uZXh0ID0gbmV4dDsKKyAgICBtX25leHQtPm1fcHJldmlvdXMgPSB0aGlzOworfQor
Cit2b2lkIEhUTUxDb250ZW50U2VsZWNpdG9uOjp1bmxpbmsoKQoreworICAgIEFTU0VSVCghbV9w
cmV2aW91cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBmb3IgYSBoZWFkLgorICAgIFJlZlB0cjxI
VE1MQ29udGVudFNlbGVjaXRvbj4gaXRlbSA9IHRoaXM7CisgICAgd2hpbGUgKGl0ZW0pIHsKKyAg
ICAgICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKKyAgICAgICAgUmVmUHRyPEhUTUxDb250
ZW50U2VsZWNpdG9uPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKKyAgICAgICAgaXRlbS0+bV9u
ZXh0LmNsZWFyKCk7CisgICAgICAgIGlmIChuZXh0SXRlbSkKKyAgICAgICAgICAgIG5leHRJdGVt
LT5tX3ByZXZpb3VzLmNsZWFyKCk7CisgICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsKKyAgICB9Cit9
CisKK0hUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkK
K3sKK30KKworSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Ojp+SFRNTENvbnRlbnRTZWxlY3Rpb25M
aXN0KCkKK3sKKyAgICBBU1NFUlQoaXNFbXB0eSgpKTsKK30KKworSFRNTENvbnRlbnRTZWxlY2l0
b24qIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6ZmluZChOb2RlKiBub2RlKSBjb25zdAorewor
ICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY2l0b24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVt
ID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmNsZWFyKCkKK3sKKyAgICBpZiAoaXNFbXB0
eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fZmlyc3QtPnVubGluaygpOworICAgIG1fZmlyc3QuY2xlYXIoKTsKKyAgICBtX2xh
c3QuY2xlYXIoKTsKK30KKwordm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmFwcGVuZChQ
YXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWNpdG9uPiBjaGlsZCkKK3sKKyAgICBpZiAoaXNFbXB0
eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgbV9maXJzdCA9IG1fbGFz
dCA9IGNoaWxkOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXN0LT5hcHBlbmQo
Y2hpbGQpOworICAgIG1fbGFzdCA9IG1fbGFzdC0+bmV4dCgpOworfQorCitIVE1MQ29udGVudFNl
bGVjdG9yOjpIVE1MQ29udGVudFNlbGVjdG9yKCkKK3sKK30KKworSFRNTENvbnRlbnRTZWxlY3Rv
cjo6fkhUTUxDb250ZW50U2VsZWN0b3IoKQoreworICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNF
bXB0eSgpKTsKK30KKwordm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpzZWxlY3QoSFRNTENvbnRl
bnRFbGVtZW50KiBjb250ZW50RWxlbWVudCwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBpbmNs
dXNpb25zKQoreworICAgIEFTU0VSVChpbmNsdXNpb25zLT5pc0VtcHR5KCkpOworCisgICAgQ29u
dGVudFNlbGVjdG9yUXVlcnkgcXVlcnkoY29udGVudEVsZW1lbnQpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9jYW5kaWRhdGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE5vZGUqIGNo
aWxkID0gbV9jYW5kaWRhdGVzW2ldLmdldCgpOworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0b24+
IGluY2x1c2lvbiA9IEhUTUxDb250ZW50U2VsZWNpdG9uOjpjcmVhdGUoY29udGVudEVsZW1lbnQs
IGNoaWxkKTsKKyAgICAgICAgaW5jbHVzaW9ucy0+YXBwZW5kKGluY2x1c2lvbik7CisgICAgICAg
IG1fc2VsZWN0aW9uU2V0LmFkZChpbmNsdXNpb24uZ2V0KCkpOworICAgICAgICBtX2NhbmRpZGF0
ZXNbaV0gPSAwOworICAgIH0KK30KKwordm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp1bnNlbGVj
dChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIGxpc3QpCit7CisgICAgZm9yIChIVE1MQ29udGVu
dFNlbGVjaXRvbiogaW5jbHVzaW9uID0gbGlzdC0+Zmlyc3QoKTsgaW5jbHVzaW9uOyBpbmNsdXNp
b24gPSBpbmNsdXNpb24tPm5leHQoKSkKKyAgICAgICAgbV9zZWxlY3Rpb25TZXQucmVtb3ZlKGlu
Y2x1c2lvbik7CisgICAgbGlzdC0+Y2xlYXIoKTsKK30KKworSFRNTENvbnRlbnRTZWxlY2l0b24q
IEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25zdAoreworICAgIHJl
dHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtleSk7Cit9CisKK3ZvaWQgSFRNTENvbnRlbnRTZWxl
Y3Rvcjo6ZGlkU2VsZWN0KCkKK3sKKyAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsKK30KKwordm9p
ZCBIVE1MQ29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290KiBzY29wZSkK
K3sKKyAgICBpZiAoIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5maXJzdENoaWxkKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICBtX2NhbmRpZGF0ZXMuYXBw
ZW5kKG5vZGUpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudFNlbGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM5OWZmYjMzYTQ1NWRkNzI3MWVhMTFiMmZh
Yjk3MmEwYTk4ODBlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSFRNTENv
bnRlbnRTZWxlY3Rvcl9oCisjZGVmaW5lIEhUTUxDb250ZW50U2VsZWN0b3JfaAorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7CitjbGFz
cyBOb2RlOworY2xhc3MgU2hhZG93Um9vdDsKKworY2xhc3MgSFRNTENvbnRlbnRTZWxlY2l0b24g
OiBwdWJsaWMgUmVmQ291bnRlZDxIVE1MQ29udGVudFNlbGVjaXRvbj4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWNpdG9uPiBjcmVhdGUoSFRNTENvbnRl
bnRFbGVtZW50KiwgTm9kZSopOworCisgICAgSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Q
b2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLmdldCgpOyB9CisgICAgSFRNTENvbnRlbnRTZWxlY2l0
b24qIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KKyAgICBIVE1MQ29udGVu
dFNlbGVjaXRvbiogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9
CisKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWNpdG9uPik7Cisg
ICAgdm9pZCB1bmxpbmsoKTsKKworcHJpdmF0ZToKKyAgICBIVE1MQ29udGVudFNlbGVjaXRvbihI
VE1MQ29udGVudEVsZW1lbnQqLCBOb2RlKik7CisKKyAgICBIVE1MQ29udGVudEVsZW1lbnQqIG1f
aW5zZXJ0aW9uUG9pbnQ7CisgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8SFRN
TENvbnRlbnRTZWxlY2l0b24+IG1fbmV4dDsKKyAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0
b24+IG1fcHJldmlvdXM7Cit9OworCitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY2l0b246OkhUTUxD
b250ZW50U2VsZWNpdG9uKEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUq
IG5vZGUpCisgICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KSwgbV9ub2RlKG5v
ZGUpCit7IH0KKworaW5saW5lIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0b24+IEhUTUxD
b250ZW50U2VsZWNpdG9uOjpjcmVhdGUoSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Qb2lu
dCwgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxDb250ZW50U2Vs
ZWNpdG9uKGluc2VydGlvblBvaW50LCBub2RlKSk7Cit9CisKK2NsYXNzIEhUTUxDb250ZW50U2Vs
ZWN0aW9uTGlzdCB7CitwdWJsaWM6CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCk7Cisg
ICAgfkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCgpOworCisgICAgSFRNTENvbnRlbnRTZWxlY2l0
b24qIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdC5nZXQoKTsgfQorICAgIEhUTUxDb250
ZW50U2VsZWNpdG9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0LmdldCgpOyB9CisgICAg
SFRNTENvbnRlbnRTZWxlY2l0b24qIGZpbmQoTm9kZSopIGNvbnN0OworICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpcnN0OyB9CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxIVE1MQ29udGVudFNlbGVjaXRvbj4pOworCitwcml2YXRl
OgorICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjaXRvbj4gbV9maXJzdDsKKyAgICBSZWZQdHI8
SFRNTENvbnRlbnRTZWxlY2l0b24+IG1fbGFzdDsKK307CisKKworY2xhc3MgSFRNTENvbnRlbnRT
ZWxlY3Rpb25TZXQgeworcHVibGljOgorICAgIHZvaWQgYWRkKEhUTUxDb250ZW50U2VsZWNpdG9u
KiB2YWx1ZSkgeyBtX3NldC5hZGQodmFsdWUpOyB9CisgICAgdm9pZCByZW1vdmUoSFRNTENvbnRl
bnRTZWxlY2l0b24qIHZhbHVlKSB7IG1fc2V0LnJlbW92ZSh2YWx1ZSk7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NldC5pc0VtcHR5KCk7IH0KKyAgICBIVE1MQ29udGVu
dFNlbGVjaXRvbiogZmluZChOb2RlKiBrZXkpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0cnVj
dCBUcmFuc2xhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IE5vZGUqIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5
KTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIVE1MQ29udGVudFNlbGVjaXRv
biogc2VsZWN0aW9uLCBjb25zdCBOb2RlKiBub2RlKSB7IHJldHVybiBzZWxlY3Rpb24tPm5vZGUo
KSA9PSBub2RlOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goSFRNTENvbnRlbnRTZWxlY2l0b24qIGtleSkgeyByZXR1cm4gUHRySGFz
aDxjb25zdCBOb2RlKj46Omhhc2goa2V5LT5ub2RlKCkpOyB9CisgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKEhUTUxDb250ZW50U2VsZWNpdG9uKiBhLCBIVE1MQ29udGVudFNlbGVjaXRvbiogYikg
eyByZXR1cm4gYS0+bm9kZSgpID09IGItPm5vZGUoKTsgfQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAg
ICB0eXBlZGVmIEhhc2hTZXQ8SFRNTENvbnRlbnRTZWxlY2l0b24qLCBIYXNoPiBQb2ludGVyU2V0
OworCisgICAgUG9pbnRlclNldCBtX3NldDsKK307CisKK2lubGluZSBIVE1MQ29udGVudFNlbGVj
aXRvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQoTm9kZSoga2V5KSBjb25zdAorewor
ICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxOb2RlKiwgSFRNTENv
bnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7CisgICAgcmV0dXJuIGZvdW5kICE9
IG1fc2V0LmVuZCgpID8gKmZvdW5kIDogMDsKK30KKworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rv
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTENvbnRlbnRTZWxlY3Rvcik7CitwdWJs
aWM6CisgICAgSFRNTENvbnRlbnRTZWxlY3RvcigpOworICAgIH5IVE1MQ29udGVudFNlbGVjdG9y
KCk7CisKKyAgICB2b2lkIHNlbGVjdChIVE1MQ29udGVudEVsZW1lbnQqLCBIVE1MQ29udGVudFNl
bGVjdGlvbkxpc3QqKTsKKyAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dCopOworICAgIEhUTUxDb250ZW50U2VsZWNpdG9uKiBmaW5kRm9yKE5vZGUqIGtleSkgY29uc3Q7
CisKKyAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsKKyAgICB2b2lkIGRpZFNl
bGVjdCgpOworICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NhbmRp
ZGF0ZXMuaXNFbXB0eSgpOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCByZW1vdmVGcm9tU2V0KEhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdCopOworICAgIHZvaWQgYWRkVG9TZXQoSFRNTENvbnRlbnRT
ZWxlY3Rpb25MaXN0Kik7CisKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9jYW5kaWRhdGVz
OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0IG1fc2VsZWN0aW9uU2V0OworfTsKKworfQor
CisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126493</attachid>
            <date>2012-02-10 03:46:38 -0800</date>
            <delta_ts>2012-02-13 04:15:42 -0800</delta_ts>
            <desc>update.</desc>
            <filename>bug-78333-20120210204636.patch</filename>
            <type>text/plain</type>
            <size>55010</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MzY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThjYWUzNDVhOTMwNDE2
ZWIwMDNjZTcyYmM3YjdjNGNjNDdhN2ExOS4uNDE2MTIyNTU2Y2I3YWIzZDk2ZDM4MDhiYzQ3YTcw
YjE5ZGFhNGRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk2IEBACisyMDEyLTAyLTEwICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgbmFtZXMgZGVm
aW5lZCBpbiBDb250ZW50SW5jbHV0aW9uU2VsZWN0b3IgdG8gbW9yZSBpbnR1aXRpdmUgbmFtZXMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODMzMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMg
anVzdCByZWZhY3RvcmluZywgcmVuYW1pbmcgbm9uLWludHVpdGl2ZSBuYW1lcyB0byBtb3JlIGlu
dHVpdGl2ZSBuYW1lcworICAgICAgICBzbyB0aGF0IHRoZXkgbWF0Y2ggdGhlIHRlcm1zIGluIHRo
ZSBzcGVjLgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJp
bmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Om5leHRSZW5kZXJlck9mKToKKyAgICAgICAg
KFdlYkNvcmU6OnByZXZpb3VzUmVuZGVyZXJPZik6CisgICAgICAgIChXZWJDb3JlOjpmaXJzdFJl
bmRlcmVyT2YpOgorICAgICAgICAoV2ViQ29yZTo6bGFzdFJlbmRlcmVyT2YpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcik6CisgICAgICAg
ICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChOb2RlUmVuZGVyaW5nQ29u
dGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6aW5zZXJ0aW9u
UG9pbnQpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6Omluc2VydGlvblBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRv
d1Jvb3Q6OmlzU2VsZWN0b3JBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6
YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNlbGVjdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmVuc3VyZVNlbGVjdG9yKToKKyAgICAgICAgKiBkb20v
U2hhZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290KToK
KyAgICAgICAgKiBodG1sL3NoYWRvdy9Db250ZW50SW5jbHVzaW9uU2VsZWN0b3IuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbnRlbnRFbGVtZW50OjpIVE1MQ29udGVudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnRlbnRFbGVtZW50OjpkZXRhY2gpOgorICAgICAgICAqIGh0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OnNlbGVjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnRlbnRFbGVtZW50OjpoYXNTZWxlY3Rpb24pOgorICAgICAgICAoSFRNTENvbnRlbnRF
bGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcDog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRJbmNsdXNpb25T
ZWxlY3Rvci5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b250ZW50U2VsZWNpdG9uOjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRT
ZWxlY2l0b246OnVubGluayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlv
bkxpc3Q6OkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29udGVudFNlbGVjdGlvbkxpc3Q6On5IVE1MQ29udGVudFNlbGVjdGlvbkxpc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0OjpmaW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0OjphcHBlbmQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnRlbnRTZWxlY3Rvcjo6SFRNTENvbnRlbnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29udGVudFNlbGVjdG9yOjp+SFRNTENvbnRlbnRTZWxlY3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdG9yOjpzZWxlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTENvbnRlbnRTZWxlY3Rvcjo6dW5zZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TENvbnRlbnRTZWxlY3Rvcjo6ZmluZEZvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVu
dFNlbGVjdG9yOjpkaWRTZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxl
Y3Rvcjo6d2lsbFNlbGVjdE92ZXIpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50
U2VsZWN0b3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEhUTUxDb250
ZW50U2VsZWNpdG9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWNpdG9uOjpp
bnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjaXRvbjo6
bm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjaXRvbjo6bmV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjaXRvbjo6cHJldmlvdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY2l0b246OkhUTUxDb250ZW50U2VsZWNpdG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWNpdG9uOjpjcmVhdGUpOgorICAgICAg
ICAoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250
ZW50U2VsZWN0aW9uTGlzdDo6Zmlyc3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRT
ZWxlY3Rpb25MaXN0OjpsYXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0
aW9uTGlzdDo6aXNFbXB0eSk6CisgICAgICAgIChIVE1MQ29udGVudFNlbGVjdGlvblNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxDb250ZW50U2VsZWN0aW9uU2V0OjpyZW1vdmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmlzRW1wdHkpOgorICAgICAgICAoVHJhbnNs
YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6VHJhbnNs
YXRvcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdGlvblNldDo6
VHJhbnNsYXRvcjo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rp
b25TZXQ6Okhhc2g6Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRTZWxlY3Rp
b25TZXQ6Okhhc2g6OmVxdWFsKToKKyAgICAgICAgKEhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQpOgorICAgICAgICAoSFRNTENvbnRlbnRTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudFNlbGVjdG9yOjpoYXNDYW5kaWRh
dGVzKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRlcm5hbHM6OmluY2x1ZGVyRm9yKToKKwogMjAxMi0wMi0wOSAgS2VudGFybyBIYXJhICA8
aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBbQ3VzdG9tQXJndW1lbnRI
YW5kbGluZ10gd2l0aCBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfENhbGxTdGFja10KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKaW5kZXggOGMzMTVkNjI3MzE3ODA3MDI5ZjUzNDgwYjU3MDU2ZDFjM2VmMTIz
Yi4uYWViNTU5MmJhMTdkYWYxNTZlNWE3NzQ0MDM2NGQ0NWJmNjg1N2Q0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKQEAgLTg2Myw5ICs4NjMsOSBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKIAogICAgIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcAotICAgIGh0bWwvc2hhZG93L0NvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHAK
ICAgICBodG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJvbC5jcHAKICAgICBodG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisgICAgaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxl
Y3Rvci5jcHAKICAgICBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKICAgICBodG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJv
b3RFbGVtZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODQ0OGIzYWM5
NjY4MmFlNWNkY2JhYmMzMDUzNDQzZmQ2NzBkYWViMC4uYmJmMGFlMzZkMjllMmI3ODQ5NmQ3ZmMz
NmU5M2Y0MDcxNzBkMmEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMjMx
LDE0ICsyMjMxLDE0IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvVGV4dFZpZXdTb3VyY2VQYXJzZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuaCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudEluY2x1c2lvblNl
bGVjdG9yLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudEluY2x1c2lv
blNlbGVjdG9yLmggXAogCVNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9y
UXVlcnkuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRy
b2wuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9EZXRhaWxzTWFya2VyQ29udHJv
bC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBcCisJ
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaCBcCiAJU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBcCiAJU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDE0M2Y3OGNlZDcw
Y2FmOWU1NWFmMjFiMGZjMjUyNzczNTE3NTA5MjQuLjAzMGU3YWRiMWQ1N2M3YjIzMDM0ODMxNTk1
NzU1Y2Q4MDI0MmViN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtODQyLDkgKzg0Miw5IEBAIFNPVVJDRVMg
Kz0gXAogICAgIGh0bWwvcGFyc2VyL1RleHRWaWV3U291cmNlUGFyc2VyLmNwcCBcCiAgICAgaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5jcHAgXAogICAgIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3Rv
clF1ZXJ5LmNwcCBcCi0gICAgaHRtbC9zaGFkb3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmNw
cCBcCiAgICAgaHRtbC9zaGFkb3cvRGV0YWlsc01hcmtlckNvbnRyb2wuY3BwIFwKICAgICBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIFwKKyAgICBodG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
IFwKICAgICBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcCBcCiAgICAgaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sUm9vdEVsZW1lbnQuY3BwIFwKQEAgLTE5MDcsOCArMTkwNyw4IEBAIEhFQURF
UlMgKz0gXAogICAgIGh0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNlUGFyc2VyLmggXAogICAgIGh0
bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaCBcCiAgICAgaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9y
UXVlcnkuaCBcCi0gICAgaHRtbC9zaGFkb3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmggXAog
ICAgIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIFwKKyAgICBodG1sL3NoYWRvdy9I
VE1MQ29udGVudFNlbGVjdG9yLmggXAogICAgIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmggXAogICAgIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmggXAogICAgIGh0bWwv
c2hhZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDc4YTg1
YzBkMzFlMDkxZDg5ZmJjODBiMTI5NjIzNzVlNTVhYzNlNzkuLjRlZTY4MTBhNzNjMDdmOWI4ZTY4
YjcwZDRhODBhOThmNTJmZWM0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTU1MjksMTIgKzU1Mjks
MTIgQEAKICAgICAgICAgICAgICdodG1sL3BhcnNlci9YU1NBdWRpdG9yLmgnLAogICAgICAgICAg
ICAgJ2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCcsCi0gICAgICAgICAgICAnaHRtbC9z
aGFkb3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmNwcCcsCi0gICAgICAgICAgICAnaHRtbC9z
aGFkb3cvQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgnLAogICAgICAgICAgICAgJ2h0bWwvc2hh
ZG93L0RldGFpbHNNYXJrZXJDb250cm9sLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cv
RGV0YWlsc01hcmtlckNvbnRyb2wuaCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmgnLAorICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
Y3BwJywKKyAgICAgICAgICAgICdodG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgnLAog
ICAgICAgICAgICAgJ2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCcsCiAgICAgICAg
ICAgICAnaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCcsCiAgICAgICAgICAgICAnaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9scy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBkM2VjNzdhOGFmYWI2ODMwOTFiOGVmMDk3MTIzMzFl
MDY5OTY4NTYyLi5iODIwZjIzYzk2MjQ0Mzk4Y2U4MmEzZjMwMjU4OGEwOWJmNWZkMDkxIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjA4MDUs
MTQgKzYwODA1LDYgQEAKIAkJCQlOYW1lPSJzaGFkb3ciCiAJCQkJPgogCQkJCTxGaWxlCi0JCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmNw
cCIKLQkJCQkJPgotCQkJCTwvRmlsZT4KLQkJCQk8RmlsZQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGh0bWxcc2hhZG93XENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5oIgotCQkJCQk+Ci0JCQkJPC9G
aWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcQ29udGVu
dFNlbGVjdG9yUXVlcnkuY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpAQCAtNjA4ODUsNiArNjA4
NzcsMTQgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGh0bWxcc2hhZG93XEhUTUxDb250ZW50U2VsZWN0b3IuY3BwIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRN
TENvbnRlbnRTZWxlY3Rvci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5caHRtbFxzaGFkb3dcSFRNTFNoYWRvd0VsZW1lbnQuY3BwIgogCQkJ
CQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGJjYzFlNGFlOWJjMWRiOGI2OWE1YTdk
MThjN2Q4MjdkYmJlMWZkYTEuLmY1NzhiOTI4ZTM3MTljZWNhYzBmNjE1ZDIzZDA3MGFiNzNhZDIw
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE2MDMsMTIgKzE2MDMsMTIgQEAKIAkJNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3Bw
ICovOyB9OwogCQk1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzgwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NzNEMTM0NzE0Q0UzOUZGMDA1N0FCQ0EgLyogSW5z
cGVjdG9yVHlwZUJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTczRDEzNDUxNENFMzlGRjAwNTdBQkNBIC8qIEluc3BlY3RvclR5cGVCdWls
ZGVyLmNwcCAqLzsgfTsKLQkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRJbmNs
dXNpb25TZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudEluY2x1c2lvblNlbGVj
dG9yLmNwcCAqLzsgfTsKLQkJNTdCNzkxQTQxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRJbmNs
dXNpb25TZWxlY3Rvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRJbmNsdXNpb25TZWxlY3Rv
ci5oICovOyB9OwogCQk1N0I3OTFBNTE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9y
UXVlcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcCAqLzsg
fTsKIAkJNTdCNzkxQTYxNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBMjE0
QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCAqLzsgfTsKIAkJNTdCNzkx
QTkxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3OTFBNzE0QzZBNjMzMDBGMjAy
RDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmNwcCAqLzsgfTsKIAkJNTdCNzkxQUExNEM2QTYzMzAw
RjIwMkQxIC8qIEhUTUxDb250ZW50RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdCNzkxQTgxNEM2QTYzMzAwRjIwMkQxIC8qIEhUTUxDb250
ZW50RWxlbWVudC5oICovOyB9OworCQk1N0I3OTFBMzE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENv
bnRlbnRTZWxlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5j
cHAgKi87IH07CisJCTU3Qjc5MUE0MTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVj
dG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0I3
OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oICovOyB9OwogCQk1
OTA1QURCRjEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1OTA1QURCRDEzMDJGM0NFMDBGMTE2
REYgLyogWE1MVHJlZVZpZXdlci5jcHAgKi87IH07CiAJCTU5MDVBREMwMTMwMkYzQ0UwMEYxMTZE
RiAvKiBYTUxUcmVlVmlld2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1MVHJlZVZpZXdlci5oICov
OyB9OwogCQk1OTBFMUI0OTExRTRFRjRCMDA2OUY3ODQgLyogRGV2aWNlT3JpZW50YXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU5MEUxQjQ4MTFF
NEVGNEIwMDY5Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDY0LDEyICs4NDY0LDEyIEBACiAJCTU1
MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFF1YWxpZmllZE5hbWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTU3
M0QxMzQ1MTRDRTM5RkYwMDU3QUJDQSAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3M0QxMzQ2MTRDRTM5RkYwMDU3QUJDQSAv
KiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1
N0I3OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRJbmNsdXNpb25TZWxl
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3Qjc5MUEwMTRDNkE2Mjkw
MEYyMDJEMSAvKiBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTU3Qjc5MUExMTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0
b3JRdWVyeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50
U2VsZWN0b3JRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUEy
MTRDNkE2MjkwMEYyMDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50U2VsZWN0b3JRdWVyeS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1N0I3OTFBNzE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb250
ZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3Qjc5MUE4MTRD
NkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSFRNTENvbnRlbnRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTU3Qjc5MTlGMTRDNkE2MjkwMEYyMDJEMSAvKiBIVE1MQ29udGVudFNlbGVjdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDb250ZW50U2Vs
ZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1N0I3OTFBMDE0QzZBNjI5
MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MQ29udGVudFNlbGVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU5MDVBREJEMTMwMkYzQ0UwMEYxMTZERiAvKiBYTUxUcmVlVmlld2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhNTFRyZWVWaWV3ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1OTA1QURCRTEzMDJGM0NFMDBGMTE2REYgLyogWE1M
VHJlZVZpZXdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxUcmVlVmll
d2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU5MEUxQjQ4MTFFNEVGNEIwMDY5
Rjc4NCAvKiBEZXZpY2VPcmllbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBEZXZpY2VPcmllbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTQzMzcsOCArMTQzMzcsNiBAQAogCQk0MTUwRjlFRDEyQjZFMDk5MDAwOEM4NjAgLyogc2hhZG93
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk1N0I3OTE5
RjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmNwcCAqLywKLQkJ
CQk1N0I3OTFBMDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgg
Ki8sCiAJCQkJNTdCNzkxQTExNEM2QTYyOTAwRjIwMkQxIC8qIENvbnRlbnRTZWxlY3RvclF1ZXJ5
LmNwcCAqLywKIAkJCQk1N0I3OTFBMjE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9y
UXVlcnkuaCAqLywKIAkJCQlBN0M5QUJGNjEzNTdBM0JGMDBGNTUwM0YgLyogRGV0YWlsc01hcmtl
ckNvbnRyb2wuY3BwICovLApAQCAtMTQzNDYsNiArMTQzNDQsOCBAQAogCQkJCTU3Qjc5MUE3MTRD
NkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwICovLAogCQkJCTU3Qjc5MUE4
MTRDNkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuaCAqLywKIAkJCQlBN0I3NzQ5
NjE0Q0Y2MzUzMDA0MDQ0QkIgLyogSFRNTENvbnRlbnRFbGVtZW50LmlkbCAqLywKKwkJCQk1N0I3
OTE5RjE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgKi8sCisJCQkJ
NTdCNzkxQTAxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuaCAqLywKIAkJ
CQk0QUJERkYwNzE0REJFMzEyMDA0RDExN0QgLyogSFRNTFNoYWRvd0VsZW1lbnQuY3BwICovLAog
CQkJCTRBQkRGRjA4MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oICovLAog
CQkJCTRBQkRGRjA5MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5pZGwgKi8s
CkBAIC0yMTI3MSw3ICsyMTI3MSw2IEBACiAJCQkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8q
IENvbnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTE0NzA4MTExMDJCMTUwMEVF
QzBGMyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1
RUI5ODEwRTgyMDcyNTAwQjI1OTY1IC8qIENvbnRlbnREYXRhLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1OTEwMkZCQzE0MzI3RDNCMDAzQzlEMDQgLyogQ29udGVudFNl
YXJjaFV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0M0NzFEQzEyRjkyNUJEMDA4NjM1NEIg
LyogQ29udGVudFNlY3VyaXR5UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFBNjE0
QzZBNjI5MDBGMjAyRDEgLyogQ29udGVudFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLApA
QCAtMjIyOTQsNiArMjIyOTMsNyBAQAogCQkJCUE4REYzRkQwMDk3RkEwRkMwMDUyOTgxQiAvKiBI
VE1MQ29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3QjM4NjUxMjI4ODNFOTAwQjgx
RkY4IC8qIEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0I3OTFB
QTE0QzZBNjMzMDBGMjAyRDEgLyogSFRNTENvbnRlbnRFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
KwkJCQk1N0I3OTFBNDE0QzZBNjI5MDBGMjAyRDEgLyogSFRNTENvbnRlbnRTZWxlY3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRCQ0FFODAwN0M5QTRGIC8qIEhUTUxDb252ZXJ0
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUY1QzA0MURCMEZGQ0E3Q0UwMDgzOUQ0QSAvKiBIVE1M
RGF0YUxpc3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzU5RDc4QTEyOUNBMjcxMDAw
NkU1RDIgLyogSFRNTERldGFpbHNFbGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI0Njg4LDcg
KzI0Njg4LDYgQEAKIAkJCQk0MUYwNjE4RjBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3Nh
Z2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTgxODcyMUYwOTc3RDNDMDAwNTgyNkQ5IC8qIENv
bnRhaW5lck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM1RUI5ODAwRTgyMDcyNTAwQjI1
OTY1IC8qIENvbnRlbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTU3Qjc5MUEzMTRDNkE2
MjkwMEYyMDJEMSAvKiBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTkxMDJGQkIxNDMyN0QzQjAwM0M5RDA0IC8qIENvbnRlbnRTZWFyY2hVdGlscy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5N0M0NzFEQjEyRjkyNUJEMDA4NjM1NEIgLyogQ29udGVudFNl
Y3VyaXR5UG9saWN5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE1MTRDNkE2MjkwMEYy
MDJEMSAvKiBDb250ZW50U2VsZWN0b3JRdWVyeS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI1MzQ4
LDYgKzI1MzQ3LDcgQEAKIAkJCQlBOERGM0ZEMTA5N0ZBMEZDMDA1Mjk4MUIgLyogSFRNTENvbGxl
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc3QjM4NjQxMjI4ODNFOTAwQjgxRkY4IC8q
IEhUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU3Qjc5MUE5MTRD
NkE2MzMwMEYyMDJEMSAvKiBIVE1MQ29udGVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTdCNzkxQTMxNEM2QTYyOTAwRjIwMkQxIC8qIEhUTUxDb250ZW50U2VsZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNUQ0RjUxREYxMzI3MjU0ODAwMTZGNTQxIC8qIEhUTUxDb252ZXJ0
ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNUMwNDFEQTBGRkNBN0NFMDA4MzlENEEgLyogSFRN
TERhdGFMaXN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlEMzU5RDc4OTEyOUNBMjcx
MDAwNkU1RDIgLyogSFRNTERldGFpbHNFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNGE5NzA5YTBkZGI1
NmU1M2ZkNDcwMmE3OWIxNjZkZTJlNGFhYjgyZi4uNmZhOTg4YTdkZDgyOWNjMWVhOGZjZjFmZmI4
YTIzZmUyYWE4YzcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCkBAIC0yNyw4ICsyNyw4IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ0NvbnRleHQu
aCIKIAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKLSNpbmNsdWRlICJDb250ZW50SW5jbHVz
aW9uU2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJl
bmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCkBAIC00OCw3
ICs0OCw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2Rl
KiBub2RlKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSgwKQogICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDApCi0gICAgLCBt
X2luY2x1ZGVyKDApCisgICAgLCBtX2luc2VydGlvblBvaW50KDApCiAgICAgLCBtX3N0eWxlKDAp
CiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQogewpAQCAtNjgsMTAgKzY4LDEwIEBAIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAg
ICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93
Um9vdCgpOwogCiAgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QpIHsKLSAgICAg
ICAgICAgIGlmICgobV9pbmNsdWRlciA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aW5jbHVk
ZXJGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jv
b3QtPmlzSW5jbHVzaW9uU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAgICAgICAgaWYgKChtX2lu
c2VydGlvblBvaW50ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dSb290LT5pbnNlcnRpb25Qb2ludEZv
cihtX25vZGUpKQorICAgICAgICAgICAgICAgICYmIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+
aXNTZWxlY3RvckFjdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENv
bnRlbnRGb3J3YXJkZWQ7Ci0gICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luY2x1ZGVyKS5wYXJlbnROb2RlRm9y
UmVuZGVyaW5nQW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnBh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIApAQCAtODIsNyArODIsNyBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKIAogICAgICAgICBpZiAocGFyZW50LT5p
c0NvbnRlbnRFbGVtZW50KCkpIHsKICAgICAgICAgICAgIEhUTUxDb250ZW50RWxlbWVudCogc2hh
ZG93Q29udGVudEVsZW1lbnQgPSB0b0hUTUxDb250ZW50RWxlbWVudChwYXJlbnQpOwotICAgICAg
ICAgICAgaWYgKCFzaGFkb3dDb250ZW50RWxlbWVudC0+aGFzSW5jbHVzaW9uKCkpIHsKKyAgICAg
ICAgICAgIGlmICghc2hhZG93Q29udGVudEVsZW1lbnQtPmhhc1NlbGVjdGlvbigpKSB7CiAgICAg
ICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaENvbnRlbnRGYWxsYmFjazsKICAgICAgICAgICAg
ICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250
ZXh0KHBhcmVudCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtOTksNyArOTksNyBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSwgUmVuZGVyU3R5bGUqIHN0eWxlKQogICAgICwg
bV9ub2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgwKQog
ICAgICwgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290KDApCi0gICAgLCBtX2luY2x1ZGVyKDApCisg
ICAgLCBtX2luc2VydGlvblBvaW50KDApCiAgICAgLCBtX3N0eWxlKHN0eWxlKQogICAgICwgbV9w
YXJlbnRGbG93UmVuZGVyZXIoMCkKIHsKQEAgLTEyMiwxMiArMTIyLDEyIEBAIFBhc3NSZWZQdHI8
UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpyZWxlYXNlU3R5bGUoKQogCiBzdGF0
aWMgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVyZXJPZihIVE1MQ29udGVudEVsZW1lbnQqIHBhcmVu
dCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBTaGFkb3dJbmNsdXNpb24qIGN1cnJlbnRJbmNsdXNp
b24gPSBwYXJlbnQtPmluY2x1c2lvbnMoKS0+ZmluZChjdXJyZW50KTsKLSAgICBpZiAoIWN1cnJl
bnRJbmNsdXNpb24pCisgICAgSFRNTENvbnRlbnRTZWxlY2l0b24qIGN1cnJlbnRTZWxlY3Rpb24g
PSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJyZW50KTsKKyAgICBpZiAoIWN1cnJlbnRT
ZWxlY3Rpb24pCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZm9yIChTaGFkb3dJbmNsdXNpb24q
IGluY2x1c2lvbiA9IGN1cnJlbnRJbmNsdXNpb24tPm5leHQoKTsgaW5jbHVzaW9uOyBpbmNsdXNp
b24gPSBpbmNsdXNpb24tPm5leHQoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IGluY2x1c2lvbi0+Y29udGVudCgpLT5yZW5kZXJlcigpKQorICAgIGZvciAoSFRNTENv
bnRlbnRTZWxlY2l0b24qIHNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2Vs
ZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgeworICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQogICAg
ICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTM4LDEwICsxMzgsMTAgQEAg
c3RhdGljIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlck9mKEhUTUxDb250ZW50RWxlbWVu
dCogcGFyZW50LCBOb2RlKiBjdXJyZW4KIHsKICAgICBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJl
ciA9IDA7CiAKLSAgICBmb3IgKFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uID0gcGFyZW50LT5p
bmNsdXNpb25zKCktPmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5jbHVzaW9uLT5u
ZXh0KCkpIHsKLSAgICAgICAgaWYgKGluY2x1c2lvbi0+Y29udGVudCgpID09IGN1cnJlbnQpCisg
ICAgZm9yIChIVE1MQ29udGVudFNlbGVjaXRvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rp
b25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkp
IHsKKyAgICAgICAgaWYgKHNlbGVjdGlvbi0+bm9kZSgpID09IGN1cnJlbnQpCiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbmNsdXNpb24t
PmNvbnRlbnQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIGxhc3RSZW5k
ZXJlciA9IHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTUwLDggKzE1MCw4IEBAIHN0YXRpYyBSZW5k
ZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJPZihIVE1MQ29udGVudEVsZW1lbnQqIHBhcmVudCwg
Tm9kZSogY3VycmVuCiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZihIVE1M
Q29udGVudEVsZW1lbnQqIHBhcmVudCkKIHsKLSAgICBmb3IgKFNoYWRvd0luY2x1c2lvbiogaW5j
bHVzaW9uID0gcGFyZW50LT5pbmNsdXNpb25zKCktPmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVz
aW9uID0gaW5jbHVzaW9uLT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBpbmNsdXNpb24tPmNvbnRlbnQoKS0+cmVuZGVyZXIoKSkKKyAgICBmb3IgKEhUTUxD
b250ZW50U2VsZWNpdG9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmlyc3Qo
KTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgeworICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigp
KQogICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwogICAgIH0KIApAQCAtMTYwLDggKzE2MCw4
IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZihIVE1MQ29udGVudEVsZW1l
bnQqIHBhcmVudCkKIAogc3RhdGljIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2YoSFRNTENv
bnRlbnRFbGVtZW50KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChTaGFkb3dJbmNsdXNpb24qIGluY2x1
c2lvbiA9IHBhcmVudC0+aW5jbHVzaW9ucygpLT5sYXN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9u
ID0gaW5jbHVzaW9uLT5wcmV2aW91cygpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gaW5jbHVzaW9uLT5jb250ZW50KCktPnJlbmRlcmVyKCkpCisgICAgZm9yIChIVE1M
Q29udGVudFNlbGVjaXRvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmxhc3Qo
KTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkpIHsKKyAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKICAgICB9CiAKQEAgLTE3OCw5ICsx
NzgsOSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIo
KSBjb25zdAogICAgICAgICByZXR1cm4gbV9wYXJlbnRGbG93UmVuZGVyZXItPm5leHRSZW5kZXJl
ckZvck5vZGUobV9ub2RlKTsKIAogICAgIGlmIChtX3BoYXNlID09IEF0dGFjaENvbnRlbnRGb3J3
YXJkZWQpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogZm91bmQgPSBuZXh0UmVuZGVyZXJP
ZihtX2luY2x1ZGVyLCBtX25vZGUpKQorICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBmb3VuZCA9
IG5leHRSZW5kZXJlck9mKG1faW5zZXJ0aW9uUG9pbnQsIG1fbm9kZSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZm91bmQ7Ci0gICAgICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luY2x1
ZGVyKS5uZXh0UmVuZGVyZXIoKTsKKyAgICAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0
KG1faW5zZXJ0aW9uUG9pbnQpLm5leHRSZW5kZXJlcigpOwogICAgIH0KIAogICAgIC8vIEF2b2lk
IGFuIE8obl4yKSBwcm9ibGVtIHdpdGggdGhpcyBmdW5jdGlvbiBieSBub3QgY2hlY2tpbmcgZm9y
CkBAIC0yMTcsOSArMjE3LDkgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBtX3BhcmVudEZsb3dSZW5k
ZXJlci0+cHJldmlvdXNSZW5kZXJlckZvck5vZGUobV9ub2RlKTsKIAogICAgIGlmIChtX3BoYXNl
ID09IEF0dGFjaENvbnRlbnRGb3J3YXJkZWQpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
Zm91bmQgPSBwcmV2aW91c1JlbmRlcmVyT2YobV9pbmNsdWRlciwgbV9ub2RlKSkKKyAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogZm91bmQgPSBwcmV2aW91c1JlbmRlcmVyT2YobV9pbnNlcnRpb25Q
b2ludCwgbV9ub2RlKSkKICAgICAgICAgICAgIHJldHVybiBmb3VuZDsKLSAgICAgICAgcmV0dXJu
IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5jbHVkZXIpLnByZXZpb3VzUmVuZGVyZXIoKTsKKyAg
ICAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnByZXZp
b3VzUmVuZGVyZXIoKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhl
IHNhbWUgTyhOXjIpIGF2b2lkYW5jZSBhcyBuZXh0UmVuZGVyZXIgZG9lcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA2MTA0MjBkMzc3YzgyMzRmNWZjZDJm
MzhmMTc5OTMxNGIyMWE0OTFlLi4zMzcxYjAzY2JkMDRkMzViNWYyMTEzYWZmNTViMDA4MWViODhh
MzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaApAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlcigpIGNv
bnN0OwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyKCkgY29uc3Q7CiAgICAgUmVuZGVy
T2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyKCkgY29uc3Q7Ci0gICAgSFRNTENvbnRlbnRFbGVtZW50
KiBpbmNsdWRlcigpIGNvbnN0OworICAgIEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9p
bnQoKSBjb25zdDsKIAogICAgIFJlbmRlclN0eWxlKiBzdHlsZSgpIGNvbnN0OwogICAgIHZvaWQg
c2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOwpAQCAtODcsNyArODcsNyBAQCBwcml2
YXRlOgogICAgIE5vZGUqIG1fbm9kZTsKICAgICBDb250YWluZXJOb2RlKiBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZTsKICAgICBTaGFkb3dSb290KiBtX3Zpc3VhbFBhcmVudFNoYWRv
d1Jvb3Q7Ci0gICAgSFRNTENvbnRlbnRFbGVtZW50KiBtX2luY2x1ZGVyOworICAgIEhUTUxDb250
ZW50RWxlbWVudCogbV9pbnNlcnRpb25Qb2ludDsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1f
c3R5bGU7CiAgICAgUmVuZGVyRmxvd1RocmVhZCogbV9wYXJlbnRGbG93UmVuZGVyZXI7CiAgICAg
QXRvbWljU3RyaW5nIG1fZmxvd1RocmVhZDsKQEAgLTEwOSw5ICsxMDksOSBAQCBpbmxpbmUgUmVu
ZGVyU3R5bGUqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpzdHlsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fc3R5bGUuZ2V0KCk7CiB9CiAKLWlubGluZSBIVE1MQ29udGVudEVsZW1lbnQqIE5vZGVSZW5k
ZXJpbmdDb250ZXh0OjppbmNsdWRlcigpIGNvbnN0CitpbmxpbmUgSFRNTENvbnRlbnRFbGVtZW50
KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aW5zZXJ0aW9uUG9pbnQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX2luY2x1ZGVyOworICAgIHJldHVybiBtX2luc2VydGlvblBvaW50OwogfQogCiBjbGFz
cyBOb2RlUmVuZGVyZXJGYWN0b3J5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAy
OTBiZTNmNmQ0NTI3OTcxZDI4OTA2YmFlM2I3Yjg4MDA2MjIwOGIyLi4yNzdiN2I4NDljMDcyMjlk
ODg1OWFjZGJiNjYzODFhODBhMWFkNDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBA
IC0yNywxMCArMjcsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAKLSNpbmNsdWRlICJDb250ZW50SW5jbHVzaW9uU2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ29udGVu
dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiU1ZHTmFt
ZXMuaCIKQEAgLTE3MSwxNCArMTcxLDE0IEBAIHZvaWQgU2hhZG93Um9vdDo6c2V0TmVlZHNSZWF0
dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiAgICAgICAgIHNoYWRvd0hvc3QoKS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYygpOwogfQogCi1IVE1MQ29udGVudEVsZW1lbnQqIFNoYWRvd1Jvb3Q6Omlu
Y2x1ZGVyRm9yKE5vZGUqIG5vZGUpIGNvbnN0CitIVE1MQ29udGVudEVsZW1lbnQqIFNoYWRvd1Jv
b3Q6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2lu
Y2x1c2lvbnMpCisgICAgaWYgKCFtX3NlbGVjdG9yKQogICAgICAgICByZXR1cm4gMDsKLSAgICBT
aGFkb3dJbmNsdXNpb24qIGZvdW5kID0gbV9pbmNsdXNpb25zLT5maW5kRm9yKG5vZGUpOworICAg
IEhUTUxDb250ZW50U2VsZWNpdG9uKiBmb3VuZCA9IG1fc2VsZWN0b3ItPmZpbmRGb3Iobm9kZSk7
CiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZvdW5kLT5p
bmNsdWRlcigpOworICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKIH0KIAogdm9p
ZCBTaGFkb3dSb290Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKQEAgLTE5MCw5ICsxOTAsOSBAQCB2
b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogICAgIHNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKIH0KIAotYm9vbCBTaGFkb3dSb290Ojppc0luY2x1
c2lvblNlbGVjdG9yQWN0aXZlKCkgY29uc3QKK2Jvb2wgU2hhZG93Um9vdDo6aXNTZWxlY3RvckFj
dGl2ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW5jbHVzaW9ucyAmJiBtX2luY2x1c2lvbnMt
Pmhhc0NhbmRpZGF0ZXMoKTsKKyAgICByZXR1cm4gbV9zZWxlY3RvciAmJiBtX3NlbGVjdG9yLT5o
YXNDYW5kaWRhdGVzKCk7CiB9CiAKIGJvb2wgU2hhZG93Um9vdDo6aGFzQ29udGVudEVsZW1lbnQo
KSBjb25zdApAQCAtMjE3LDEzICsyMTcsMTMgQEAgdm9pZCBTaGFkb3dSb290OjpzZXRBcHBseUF1
dGhvclNoZWV0cyhib29sIHZhbHVlKQogCiB2b2lkIFNoYWRvd1Jvb3Q6OmF0dGFjaCgpCiB7Ci0g
ICAgLy8gQ2hpbGRyZW4gb2YgbV9pbmNsdXNpb25zIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KLSAg
ICAvLyBlbnN1cmVJbmNsdXNpb25zKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQKKyAg
ICAvLyBDaGlsZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KKyAgICAv
LyBlbnN1cmVTZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0CiAgICAgLy8g
aXQgaXMgaW4gY2xlYW4gc3RhdGUuCi0gICAgQVNTRVJUKCFtX2luY2x1c2lvbnMgfHwgIW1faW5j
bHVzaW9ucy0+aGFzQ2FuZGlkYXRlcygpKTsKKyAgICBBU1NFUlQoIW1fc2VsZWN0b3IgfHwgIW1f
c2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKSk7CiAgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNo
KCk7Ci0gICAgaWYgKG1faW5jbHVzaW9ucykKLSAgICAgICAgbV9pbmNsdXNpb25zLT5kaWRTZWxl
Y3QoKTsKKyAgICBpZiAobV9zZWxlY3RvcikKKyAgICAgICAgbV9zZWxlY3Rvci0+ZGlkU2VsZWN0
KCk7CiB9CiAKIHZvaWQgU2hhZG93Um9vdDo6cmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3co
KQpAQCAtMjQ1LDE3ICsyNDUsMTcgQEAgdm9pZCBTaGFkb3dSb290OjpyZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpCiAgICAgfQogfQogCi1Db250ZW50SW5jbHVzaW9uU2VsZWN0b3IqIFNo
YWRvd1Jvb3Q6OmluY2x1c2lvbnMoKSBjb25zdAorSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93
Um9vdDo6c2VsZWN0b3IoKSBjb25zdAogewotICAgIHJldHVybiBtX2luY2x1c2lvbnMuZ2V0KCk7
CisgICAgcmV0dXJuIG1fc2VsZWN0b3IuZ2V0KCk7CiB9CiAKLUNvbnRlbnRJbmNsdXNpb25TZWxl
Y3RvciogU2hhZG93Um9vdDo6ZW5zdXJlSW5jbHVzaW9ucygpCitIVE1MQ29udGVudFNlbGVjdG9y
KiBTaGFkb3dSb290OjplbnN1cmVTZWxlY3RvcigpCiB7Ci0gICAgaWYgKCFtX2luY2x1c2lvbnMp
Ci0gICAgICAgIG1faW5jbHVzaW9ucyA9IGFkb3B0UHRyKG5ldyBDb250ZW50SW5jbHVzaW9uU2Vs
ZWN0b3IoKSk7Ci0gICAgbV9pbmNsdXNpb25zLT53aWxsU2VsZWN0T3Zlcih0aGlzKTsKLSAgICBy
ZXR1cm4gbV9pbmNsdXNpb25zLmdldCgpOworICAgIGlmICghbV9zZWxlY3RvcikKKyAgICAgICAg
bV9zZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBIVE1MQ29udGVudFNlbGVjdG9yKCkpOworICAgIG1f
c2VsZWN0b3ItPndpbGxTZWxlY3RPdmVyKHRoaXMpOworICAgIHJldHVybiBtX3NlbGVjdG9yLmdl
dCgpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDQwMWVlNWU5ZDY2NTVlMTYw
MmQxMzc0ZmQ5NDc4ZjVlYTQ2NTYwZjUuLjgyNTQ5ZTQxNjFkNjVjYmRhOTgwNGM2MzBjYTAyMWYw
NDhiMjY5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMzMsOSArMzMsOSBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvcjsKIGNs
YXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OworY2xhc3MgSFRNTENvbnRl
bnRTZWxlY3RvcjsKIAogY2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdtZW50
LCBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1YmxpYzoKQEAgLTU4LDkgKzU4LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAgICAg
Ym9vbCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CiAKLSAgICBIVE1MQ29u
dGVudEVsZW1lbnQqIGluY2x1ZGVyRm9yKE5vZGUqKSBjb25zdDsKKyAgICBIVE1MQ29udGVudEVs
ZW1lbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsKICAgICB2b2lkIGhvc3RDaGls
ZHJlbkNoYW5nZWQoKTsKLSAgICBib29sIGlzSW5jbHVzaW9uU2VsZWN0b3JBY3RpdmUoKSBjb25z
dDsKKyAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKICAgICB2b2lkIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CkBA
IC03MCw4ICs3MCw4IEBAIHB1YmxpYzoKIAogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJl
dHVybiBzaGFkb3dIb3N0KCk7IH0KIAotICAgIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvciogaW5j
bHVzaW9ucygpIGNvbnN0OwotICAgIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvciogZW5zdXJlSW5j
bHVzaW9ucygpOworICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7Cisg
ICAgSFRNTENvbnRlbnRTZWxlY3RvciogZW5zdXJlU2VsZWN0b3IoKTsKIAogcHJpdmF0ZToKICAg
ICBTaGFkb3dSb290KERvY3VtZW50Kik7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBib29sIG1fYXBwbHlBdXRob3JTaGVldHMgOiAxOwogICAgIGJvb2wgbV9uZWVkc1JlY2FsY3Vs
YXRlQ29udGVudCA6IDE7Ci0gICAgT3duUHRyPENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcj4gbV9p
bmNsdXNpb25zOworICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOwog
fTsKIAogaW5saW5lIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKERv
Y3VtZW50KiBkb2N1bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50SW5jbHVzaW9uU2VsZWN0b3IuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA2YjU0MWE1YWU4OTg3NTk4ZWI5YTkxMzI3NGE1YzRjNmFjZjgwZGM0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnRJbmNsdXNpb25TZWxlY3Rvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
NTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0
OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDb250ZW50SW5jbHVz
aW9uU2VsZWN0b3IuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnRTZWxlY3RvclF1ZXJ5LmgiCi0jaW5j
bHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9vdC5oIgotCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBTaGFkb3dJbmNsdXNpb246OmFwcGVuZChQYXNz
UmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbmV4dCkKLXsKLSAgICBBU1NFUlQoIW1fbmV4dCk7Ci0g
ICAgQVNTRVJUKCFuZXh0LT5wcmV2aW91cygpKTsKLSAgICBtX25leHQgPSBuZXh0OwotICAgIG1f
bmV4dC0+bV9wcmV2aW91cyA9IHRoaXM7Ci19Ci0KLXZvaWQgU2hhZG93SW5jbHVzaW9uOjp1bmxp
bmsoKQotewotICAgIEFTU0VSVCghbV9wcmV2aW91cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBm
b3IgYSBoZWFkLgotICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGl0ZW0gPSB0aGlzOwotICAg
IHdoaWxlIChpdGVtKSB7Ci0gICAgICAgIEFTU0VSVCghaXRlbS0+cHJldmlvdXMoKSk7Ci0gICAg
ICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IG5leHRJdGVtID0gaXRlbS0+bV9uZXh0OwotICAg
ICAgICBpdGVtLT5tX25leHQuY2xlYXIoKTsKLSAgICAgICAgaWYgKG5leHRJdGVtKQotICAgICAg
ICAgICAgbmV4dEl0ZW0tPm1fcHJldmlvdXMuY2xlYXIoKTsKLSAgICAgICAgaXRlbSA9IG5leHRJ
dGVtOwotICAgIH0KLX0KLQotU2hhZG93SW5jbHVzaW9uTGlzdDo6U2hhZG93SW5jbHVzaW9uTGlz
dCgpCi17Ci19Ci0KLVNoYWRvd0luY2x1c2lvbkxpc3Q6On5TaGFkb3dJbmNsdXNpb25MaXN0KCkK
LXsKLSAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLX0KLQotU2hhZG93SW5jbHVzaW9uKiBTaGFkb3dJ
bmNsdXNpb25MaXN0OjpmaW5kKE5vZGUqIGNvbnRlbnQpIGNvbnN0Ci17Ci0gICAgZm9yIChTaGFk
b3dJbmNsdXNpb24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVtID0gaXRlbS0+bmV4dCgpKSB7
Ci0gICAgICAgIGlmIChjb250ZW50ID09IGl0ZW0tPmNvbnRlbnQoKSkKLSAgICAgICAgICAgIHJl
dHVybiBpdGVtOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBTaGFkb3dJ
bmNsdXNpb25MaXN0OjpjbGVhcigpCi17Ci0gICAgaWYgKGlzRW1wdHkoKSkgewotICAgICAgICBB
U1NFUlQoIW1fbGFzdCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtX2ZpcnN0LT51
bmxpbmsoKTsKLSAgICBtX2ZpcnN0LmNsZWFyKCk7Ci0gICAgbV9sYXN0LmNsZWFyKCk7Ci19Ci0K
LXZvaWQgU2hhZG93SW5jbHVzaW9uTGlzdDo6YXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVz
aW9uPiBjaGlsZCkKLXsKLSAgICBpZiAoaXNFbXB0eSgpKSB7Ci0gICAgICAgIEFTU0VSVCghbV9s
YXN0KTsKLSAgICAgICAgbV9maXJzdCA9IG1fbGFzdCA9IGNoaWxkOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgbV9sYXN0LT5hcHBlbmQoY2hpbGQpOwotICAgIG1fbGFzdCA9IG1fbGFz
dC0+bmV4dCgpOwotfQotCi1Db250ZW50SW5jbHVzaW9uU2VsZWN0b3I6OkNvbnRlbnRJbmNsdXNp
b25TZWxlY3RvcigpCi17Ci19Ci0KLUNvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcjo6fkNvbnRlbnRJ
bmNsdXNpb25TZWxlY3RvcigpCi17Ci0gICAgQVNTRVJUKG1fY2FuZGlkYXRlcy5pc0VtcHR5KCkp
OwotfQotCi12b2lkIENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcjo6c2VsZWN0KEhUTUxDb250ZW50
RWxlbWVudCogY29udGVudEVsZW1lbnQsIFNoYWRvd0luY2x1c2lvbkxpc3QqIGluY2x1c2lvbnMp
Ci17Ci0gICAgQVNTRVJUKGluY2x1c2lvbnMtPmlzRW1wdHkoKSk7Ci0KLSAgICBDb250ZW50U2Vs
ZWN0b3JRdWVyeSBxdWVyeShjb250ZW50RWxlbWVudCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgTm9kZSogY2hpbGQgPSBt
X2NhbmRpZGF0ZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghY2hpbGQpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIFJlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGluY2x1c2lvbiA9
IFNoYWRvd0luY2x1c2lvbjo6Y3JlYXRlKGNvbnRlbnRFbGVtZW50LCBjaGlsZCk7Ci0gICAgICAg
IGluY2x1c2lvbnMtPmFwcGVuZChpbmNsdXNpb24pOwotICAgICAgICBtX2luY2x1c2lvblNldC5h
ZGQoaW5jbHVzaW9uLmdldCgpKTsKLSAgICAgICAgbV9jYW5kaWRhdGVzW2ldID0gMDsKLSAgICB9
Ci19Ci0KLXZvaWQgQ29udGVudEluY2x1c2lvblNlbGVjdG9yOjp1bnNlbGVjdChTaGFkb3dJbmNs
dXNpb25MaXN0KiBsaXN0KQotewotICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24g
PSBsaXN0LT5maXJzdCgpOyBpbmNsdXNpb247IGluY2x1c2lvbiA9IGluY2x1c2lvbi0+bmV4dCgp
KQotICAgICAgICBtX2luY2x1c2lvblNldC5yZW1vdmUoaW5jbHVzaW9uKTsKLSAgICBsaXN0LT5j
bGVhcigpOwotfQotCi1TaGFkb3dJbmNsdXNpb24qIENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcjo6
ZmluZEZvcihOb2RlKiBrZXkpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1faW5jbHVzaW9uU2V0LmZp
bmQoa2V5KTsKLX0KLQotdm9pZCBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3I6OmRpZFNlbGVjdCgp
Ci17Ci0gICAgbV9jYW5kaWRhdGVzLmNsZWFyKCk7Ci19Ci0KLXZvaWQgQ29udGVudEluY2x1c2lv
blNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290KiBzY29wZSkKLXsKLSAgICBpZiAo
IW1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKE5vZGUq
IG5vZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpKQotICAgICAgICBtX2NhbmRpZGF0ZXMuYXBwZW5kKG5vZGUpOwot
fQotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50SW5j
bHVzaW9uU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRJbmNs
dXNpb25TZWxlY3Rvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZjBiMTk3OGVi
Yzc5MWJjNDYzYzIzMDRhOTk3ZjU1MTU0MWI2MjY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRJ
bmNsdXNpb25TZWxlY3Rvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IENvbnRlbnRJbmNsdXNpb25TZWxlY3Rvcl9oCi0jZGVmaW5lIENvbnRlbnRJbmNsdXNpb25TZWxl
Y3Rvcl9oCi0KLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRWxlbWVudDsKLWNsYXNzIEhUTUxDb250
ZW50RWxlbWVudDsKLWNsYXNzIE5vZGU7Ci1jbGFzcyBTaGFkb3dSb290OwotCi1jbGFzcyBTaGFk
b3dJbmNsdXNpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxTaGFkb3dJbmNsdXNpb24+IHsKLXB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+IGNyZWF0ZShIVE1MQ29u
dGVudEVsZW1lbnQqLCBOb2RlKik7Ci0KLSAgICBIVE1MQ29udGVudEVsZW1lbnQqIGluY2x1ZGVy
KCkgY29uc3QgeyByZXR1cm4gbV9pbmNsdWRlcjsgfQotICAgIE5vZGUqIGNvbnRlbnQoKSBjb25z
dCB7IHJldHVybiBtX2NvbnRlbnQuZ2V0KCk7IH0KLSAgICBTaGFkb3dJbmNsdXNpb24qIG5leHQo
KSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KLSAgICBTaGFkb3dJbmNsdXNpb24qIHBy
ZXZpb3VzKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91cy5nZXQoKTsgfQotCi0gICAgdm9pZCBh
cHBlbmQoUGFzc1JlZlB0cjxTaGFkb3dJbmNsdXNpb24+KTsKLSAgICB2b2lkIHVubGluaygpOwot
Ci1wcml2YXRlOgotICAgIFNoYWRvd0luY2x1c2lvbihIVE1MQ29udGVudEVsZW1lbnQqLCBOb2Rl
Kik7Ci0KLSAgICBIVE1MQ29udGVudEVsZW1lbnQqIG1faW5jbHVkZXI7Ci0gICAgUmVmUHRyPE5v
ZGU+IG1fY29udGVudDsKLSAgICBSZWZQdHI8U2hhZG93SW5jbHVzaW9uPiBtX25leHQ7Ci0gICAg
UmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9wcmV2aW91czsKLX07Ci0KLWlubGluZSBTaGFkb3dJ
bmNsdXNpb246OlNoYWRvd0luY2x1c2lvbihIVE1MQ29udGVudEVsZW1lbnQqIGluY2x1ZGVyLCBO
b2RlKiBjb250ZW50KQotICAgIDogbV9pbmNsdWRlcihpbmNsdWRlciksIG1fY29udGVudChjb250
ZW50KQoteyB9Ci0KLWlubGluZSBQYXNzUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gU2hhZG93SW5j
bHVzaW9uOjpjcmVhdGUoSFRNTENvbnRlbnRFbGVtZW50KiBpbmNsdWRlciwgTm9kZSogY29udGVu
dCkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYWRvd0luY2x1c2lvbihpbmNsdWRlciwg
Y29udGVudCkpOwotfQotCi1jbGFzcyBTaGFkb3dJbmNsdXNpb25MaXN0IHsKLXB1YmxpYzoKLSAg
ICBTaGFkb3dJbmNsdXNpb25MaXN0KCk7Ci0gICAgflNoYWRvd0luY2x1c2lvbkxpc3QoKTsKLQot
ICAgIFNoYWRvd0luY2x1c2lvbiogZmlyc3QoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0LmdldCgp
OyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Lmdl
dCgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqKSBjb25zdDsKLSAgICBib29s
IGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhbV9maXJzdDsgfQotCi0gICAgdm9pZCBjbGVhcigp
OwotICAgIHZvaWQgYXBwZW5kKFBhc3NSZWZQdHI8U2hhZG93SW5jbHVzaW9uPik7Ci0KLXByaXZh
dGU6Ci0gICAgUmVmUHRyPFNoYWRvd0luY2x1c2lvbj4gbV9maXJzdDsKLSAgICBSZWZQdHI8U2hh
ZG93SW5jbHVzaW9uPiBtX2xhc3Q7Ci19OwotCi0KLWNsYXNzIFNoYWRvd0luY2x1c2lvblNldCB7
Ci1wdWJsaWM6Ci0gICAgdm9pZCBhZGQoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBtX3NldC5h
ZGQodmFsdWUpOyB9Ci0gICAgdm9pZCByZW1vdmUoU2hhZG93SW5jbHVzaW9uKiB2YWx1ZSkgeyBt
X3NldC5yZW1vdmUodmFsdWUpOyB9Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV9zZXQuaXNFbXB0eSgpOyB9Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kKE5vZGUqIGtleSkg
Y29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFRyYW5zbGF0b3IgewotICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgTm9kZSoga2V5KSB7IHJldHVybiBQ
dHJIYXNoPGNvbnN0IE5vZGUqPjo6aGFzaChrZXkpOyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGVx
dWFsKGNvbnN0IFNoYWRvd0luY2x1c2lvbiogaW5jbHVzaW9uLCBjb25zdCBOb2RlKiBjb250ZW50
KSB7IHJldHVybiBpbmNsdXNpb24tPmNvbnRlbnQoKSA9PSBjb250ZW50OyB9Ci0gICAgfTsKLQot
ICAgIHN0cnVjdCBIYXNoIHsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goU2hhZG93SW5j
bHVzaW9uKiBrZXkpIHsgcmV0dXJuIFB0ckhhc2g8Y29uc3QgTm9kZSo+OjpoYXNoKGtleS0+Y29u
dGVudCgpKTsgfQotICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChTaGFkb3dJbmNsdXNpb24qIGEs
IFNoYWRvd0luY2x1c2lvbiogYikgeyByZXR1cm4gYS0+Y29udGVudCgpID09IGItPmNvbnRlbnQo
KTsgfQotICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCA9IGZhbHNlOwotICAgIH07Ci0KLSAgICB0eXBlZGVmIEhhc2hTZXQ8U2hhZG93SW5jbHVz
aW9uKiwgSGFzaD4gUG9pbnRlclNldDsKLQotICAgIFBvaW50ZXJTZXQgbV9zZXQ7Ci19OwotCi1p
bmxpbmUgU2hhZG93SW5jbHVzaW9uKiBTaGFkb3dJbmNsdXNpb25TZXQ6OmZpbmQoTm9kZSoga2V5
KSBjb25zdAotewotICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxO
b2RlKiwgU2hhZG93SW5jbHVzaW9uU2V0OjpUcmFuc2xhdG9yPihrZXkpOwotICAgIHJldHVybiBm
b3VuZCAhPSBtX3NldC5lbmQoKSA/ICpmb3VuZCA6IDA7Ci19Ci0KLWNsYXNzIENvbnRlbnRJbmNs
dXNpb25TZWxlY3RvciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGVudEluY2x1c2lv
blNlbGVjdG9yKTsKLXB1YmxpYzoKLSAgICBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3IoKTsKLSAg
ICB+Q29udGVudEluY2x1c2lvblNlbGVjdG9yKCk7Ci0KLSAgICB2b2lkIHNlbGVjdChIVE1MQ29u
dGVudEVsZW1lbnQqLCBTaGFkb3dJbmNsdXNpb25MaXN0Kik7Ci0gICAgdm9pZCB1bnNlbGVjdChT
aGFkb3dJbmNsdXNpb25MaXN0Kik7Ci0gICAgU2hhZG93SW5jbHVzaW9uKiBmaW5kRm9yKE5vZGUq
IGtleSkgY29uc3Q7Ci0KLSAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsKLSAg
ICB2b2lkIGRpZFNlbGVjdCgpOwotICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0
dXJuICFtX2NhbmRpZGF0ZXMuaXNFbXB0eSgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCByZW1v
dmVGcm9tU2V0KFNoYWRvd0luY2x1c2lvbkxpc3QqKTsKLSAgICB2b2lkIGFkZFRvU2V0KFNoYWRv
d0luY2x1c2lvbkxpc3QqKTsKLQotICAgIFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiBtX2NhbmRpZGF0
ZXM7Ci0gICAgU2hhZG93SW5jbHVzaW9uU2V0IG1faW5jbHVzaW9uU2V0OwotfTsKLQotfQotCi0j
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuY3BwCmluZGV4IDk2MWRkMWQzMDA0ZjIwMGU1OTFkYWExYTZhYmFkNTM5NThiODUzYjIuLjg1
NDgyYzYyMjkzY2YyYzQ1ZGM4OGEzYjFlYjAzMWEwOGEyMDhhZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcApAQCAtMjcsOCArMjcs
OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5o
IgogCi0jaW5jbHVkZSAiQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ29u
dGVudFNlbGVjdG9yUXVlcnkuaCIKKyNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKQEAgLTYwLDcgKzYwLDcgQEAgUGFzc1JlZlB0cjxIVE1MQ29udGVu
dEVsZW1lbnQ+IEhUTUxDb250ZW50RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHQKIAogSFRNTENvbnRlbnRFbGVtZW50OjpIVE1MQ29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogSFRNTEVsZW1lbnQobmFt
ZSwgZG9jdW1lbnQpCi0gICAgLCBtX2luY2x1c2lvbnMoYWRvcHRQdHIobmV3IFNoYWRvd0luY2x1
c2lvbkxpc3QoKSkpCisgICAgLCBtX3NlbGVjdGlvbnMoYWRvcHRQdHIobmV3IEhUTUxDb250ZW50
U2VsZWN0aW9uTGlzdCgpKSkKIHsKIH0KIApAQCAtNzQsMzEgKzc0LDMxIEBAIHZvaWQgSFRNTENv
bnRlbnRFbGVtZW50OjphdHRhY2goKQogCiAgICAgLy8gQmVmb3JlIGNhbGxpbmcgU3R5bGVkRWxl
bWVudDo6YXR0YWNoLCBzZWxlY3RvciBtdXN0IGJlIGNhbGN1bGF0ZWQuCiAgICAgaWYgKHJvb3Qp
IHsKLSAgICAgICAgQ29udGVudEluY2x1c2lvblNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmVu
c3VyZUluY2x1c2lvbnMoKTsKLSAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KG1faW5jbHVzaW9u
cy5nZXQoKSk7Ci0gICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgbV9pbmNsdXNpb25zLmdl
dCgpKTsKKyAgICAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5lbnN1
cmVTZWxlY3RvcigpOworICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QobV9zZWxlY3Rpb25zLmdl
dCgpKTsKKyAgICAgICAgc2VsZWN0b3ItPnNlbGVjdCh0aGlzLCBtX3NlbGVjdGlvbnMuZ2V0KCkp
OwogICAgIH0KIAogICAgIEhUTUxFbGVtZW50OjphdHRhY2goKTsKIAogICAgIGlmIChyb290KSB7
Ci0gICAgICAgIGZvciAoU2hhZG93SW5jbHVzaW9uKiBpbmNsdXNpb24gPSBtX2luY2x1c2lvbnMt
PmZpcnN0KCk7IGluY2x1c2lvbjsgaW5jbHVzaW9uID0gaW5jbHVzaW9uLT5uZXh0KCkpCi0gICAg
ICAgICAgICBpbmNsdXNpb24tPmNvbnRlbnQoKS0+YXR0YWNoKCk7CisgICAgICAgIGZvciAoSFRN
TENvbnRlbnRTZWxlY2l0b24qIHNlbGVjdGlvbiA9IG1fc2VsZWN0aW9ucy0+Zmlyc3QoKTsgc2Vs
ZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkKKyAgICAgICAgICAgIHNlbGVj
dGlvbi0+bm9kZSgpLT5hdHRhY2goKTsKICAgICB9CiB9CiAKIHZvaWQgSFRNTENvbnRlbnRFbGVt
ZW50OjpkZXRhY2goKQogewogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290
KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewotICAgICAgICBpZiAoQ29udGVudEluY2x1c2lvblNl
bGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPmluY2x1c2lvbnMoKSkKLSAgICAgICAgICAgIHNlbGVj
dG9yLT51bnNlbGVjdChtX2luY2x1c2lvbnMuZ2V0KCkpOworICAgICAgICBpZiAoSFRNTENvbnRl
bnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT5zZWxlY3RvcigpKQorICAgICAgICAgICAgc2Vs
ZWN0b3ItPnVuc2VsZWN0KG1fc2VsZWN0aW9ucy5nZXQoKSk7CiAKLSAgICAgICAgLy8gV2hlbiBj
b250ZW50IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0
ZWQgdG8gcmUtY2FsY3VsYXRlIGluY2x1c2lvbnMgZm9yCisgICAgICAgIC8vIFdoZW4gY29udGVu
dCBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRv
IHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKICAgICAgICAgLy8gb3RoZXIgY29udGVudCBlbGVt
ZW50cy4KICAgICAgICAgcm9vdC0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRv
dygpOwogICAgIH0KIAotICAgIEFTU0VSVChtX2luY2x1c2lvbnMtPmlzRW1wdHkoKSk7CisgICAg
QVNTRVJUKG1fc2VsZWN0aW9ucy0+aXNFbXB0eSgpKTsKICAgICBIVE1MRWxlbWVudDo6ZGV0YWNo
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50LmgKaW5kZXggNmUxODE2Yzc4MDQ0YTJhMTRiMTEyMjdmZjViYzg0NTFkM2U1NzhlYS4uMTc4
Mzg4MDQ1OGJkNTAyZWE3ZWY1NjZlZjVhNWQwZTllYzliY2ZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKQEAgLTMxLDE0ICszMSwxNCBA
QAogI2lmbmRlZiBIVE1MQ29udGVudEVsZW1lbnRfaAogI2RlZmluZSBIVE1MQ29udGVudEVsZW1l
bnRfaAogCi0jaW5jbHVkZSAiQ29udGVudEluY2x1c2lvblNlbGVjdG9yLmgiCisjaW5jbHVkZSAi
SFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50
U2VsZWN0b3JRdWVyeTsKLWNsYXNzIFNoYWRvd0luY2x1c2lvbkxpc3Q7CitjbGFzcyBIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3Q7CiAKIC8vIE5PVEU6IEN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9l
c24ndCBzdXBwb3J0IGR5bmFtaWMgaW5zZXJ0aW9uL2RlbGV0aW9uIG9mIEhUTUxDb250ZW50RWxl
bWVudC4KIC8vIFlvdSBzaG91bGQgY3JlYXRlIEhUTUxDb250ZW50RWxlbWVudCBkdXJpbmcgdGhl
IGhvc3QgY29uc3RydWN0aW9uLgpAQCAtNjAsOCArNjAsOCBAQCBwdWJsaWM6CiAgICAgLy8gU2Vl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MQogICAgIHZvaWQg
c2V0U2VsZWN0KGNvbnN0IEF0b21pY1N0cmluZyYpOwogCi0gICAgY29uc3QgU2hhZG93SW5jbHVz
aW9uTGlzdCogaW5jbHVzaW9ucygpIGNvbnN0IHsgcmV0dXJuIG1faW5jbHVzaW9ucy5nZXQoKTsg
fQotICAgIGJvb2wgaGFzSW5jbHVzaW9uKCkgY29uc3QgeyByZXR1cm4gaW5jbHVzaW9ucygpLT5m
aXJzdCgpOyB9CisgICAgY29uc3QgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25z
KCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25zLmdldCgpOyB9CisgICAgYm9vbCBoYXNTZWxl
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBzZWxlY3Rpb25zKCktPmZpcnN0KCk7IH0KIAogICAgIHZp
cnR1YWwgYm9vbCBpc1NlbGVjdFZhbGlkKCkgY29uc3Q7CiAKQEAgLTc1LDcgKzc1LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBPVkVS
UklERTsKIAotICAgIE93blB0cjxTaGFkb3dJbmNsdXNpb25MaXN0PiBtX2luY2x1c2lvbnM7Cisg
ICAgT3duUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdD4gbV9zZWxlY3Rpb25zOwogfTsKIAog
aW5saW5lIEhUTUxDb250ZW50RWxlbWVudCogdG9IVE1MQ29udGVudEVsZW1lbnQoTm9kZSogbm9k
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2Vs
ZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rv
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYWIyNmQ0ZmE2ZmUxMGRjODRkZDcxNjU0N2E3NTRiOTAzYTc0ZTVk
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuY3BwCkBAIC0wLDAgKzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKworI2luY2x1ZGUgIkNvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgiCisjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCisjaW5jbHVkZSAi
U2hhZG93Um9vdC5oIgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBIVE1MQ29udGVu
dFNlbGVjaXRvbjo6YXBwZW5kKFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0b24+IG5leHQp
Cit7CisgICAgQVNTRVJUKCFtX25leHQpOworICAgIEFTU0VSVCghbmV4dC0+cHJldmlvdXMoKSk7
CisgICAgbV9uZXh0ID0gbmV4dDsKKyAgICBtX25leHQtPm1fcHJldmlvdXMgPSB0aGlzOworfQor
Cit2b2lkIEhUTUxDb250ZW50U2VsZWNpdG9uOjp1bmxpbmsoKQoreworICAgIEFTU0VSVCghbV9w
cmV2aW91cyk7IC8vIENhbiBiZSBjYWxsZWQgb25seSBmb3IgYSBoZWFkLgorICAgIFJlZlB0cjxI
VE1MQ29udGVudFNlbGVjaXRvbj4gaXRlbSA9IHRoaXM7CisgICAgd2hpbGUgKGl0ZW0pIHsKKyAg
ICAgICAgQVNTRVJUKCFpdGVtLT5wcmV2aW91cygpKTsKKyAgICAgICAgUmVmUHRyPEhUTUxDb250
ZW50U2VsZWNpdG9uPiBuZXh0SXRlbSA9IGl0ZW0tPm1fbmV4dDsKKyAgICAgICAgaXRlbS0+bV9u
ZXh0LmNsZWFyKCk7CisgICAgICAgIGlmIChuZXh0SXRlbSkKKyAgICAgICAgICAgIG5leHRJdGVt
LT5tX3ByZXZpb3VzLmNsZWFyKCk7CisgICAgICAgIGl0ZW0gPSBuZXh0SXRlbTsKKyAgICB9Cit9
CisKK0hUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCkK
K3sKK30KKworSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Ojp+SFRNTENvbnRlbnRTZWxlY3Rpb25M
aXN0KCkKK3sKKyAgICBBU1NFUlQoaXNFbXB0eSgpKTsKK30KKworSFRNTENvbnRlbnRTZWxlY2l0
b24qIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdDo6ZmluZChOb2RlKiBub2RlKSBjb25zdAorewor
ICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY2l0b24qIGl0ZW0gPSBmaXJzdCgpOyBpdGVtOyBpdGVt
ID0gaXRlbS0+bmV4dCgpKSB7CisgICAgICAgIGlmIChub2RlID09IGl0ZW0tPm5vZGUoKSkKKyAg
ICAgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gMDsKK30KKwor
dm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmNsZWFyKCkKK3sKKyAgICBpZiAoaXNFbXB0
eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1fZmlyc3QtPnVubGluaygpOworICAgIG1fZmlyc3QuY2xlYXIoKTsKKyAgICBtX2xh
c3QuY2xlYXIoKTsKK30KKwordm9pZCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Q6OmFwcGVuZChQ
YXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWNpdG9uPiBjaGlsZCkKK3sKKyAgICBpZiAoaXNFbXB0
eSgpKSB7CisgICAgICAgIEFTU0VSVCghbV9sYXN0KTsKKyAgICAgICAgbV9maXJzdCA9IG1fbGFz
dCA9IGNoaWxkOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9sYXN0LT5hcHBlbmQo
Y2hpbGQpOworICAgIG1fbGFzdCA9IG1fbGFzdC0+bmV4dCgpOworfQorCitIVE1MQ29udGVudFNl
bGVjdG9yOjpIVE1MQ29udGVudFNlbGVjdG9yKCkKK3sKK30KKworSFRNTENvbnRlbnRTZWxlY3Rv
cjo6fkhUTUxDb250ZW50U2VsZWN0b3IoKQoreworICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNF
bXB0eSgpKTsKK30KKwordm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpzZWxlY3QoSFRNTENvbnRl
bnRFbGVtZW50KiBjb250ZW50RWxlbWVudCwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxl
Y3Rpb25zKQoreworICAgIEFTU0VSVChzZWxlY3Rpb25zLT5pc0VtcHR5KCkpOworCisgICAgQ29u
dGVudFNlbGVjdG9yUXVlcnkgcXVlcnkoY29udGVudEVsZW1lbnQpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9jYW5kaWRhdGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIE5vZGUqIGNo
aWxkID0gbV9jYW5kaWRhdGVzW2ldLmdldCgpOworICAgICAgICBpZiAoIWNoaWxkKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmICghcXVlcnkubWF0Y2hlcyhjaGlsZCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0b24+
IHNlbGVjdGlvbiA9IEhUTUxDb250ZW50U2VsZWNpdG9uOjpjcmVhdGUoY29udGVudEVsZW1lbnQs
IGNoaWxkKTsKKyAgICAgICAgc2VsZWN0aW9ucy0+YXBwZW5kKHNlbGVjdGlvbik7CisgICAgICAg
IG1fc2VsZWN0aW9uU2V0LmFkZChzZWxlY3Rpb24uZ2V0KCkpOworICAgICAgICBtX2NhbmRpZGF0
ZXNbaV0gPSAwOworICAgIH0KK30KKwordm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjp1bnNlbGVj
dChIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIGxpc3QpCit7CisgICAgZm9yIChIVE1MQ29udGVu
dFNlbGVjaXRvbiogc2VsZWN0aW9uID0gbGlzdC0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rp
b24gPSBzZWxlY3Rpb24tPm5leHQoKSkKKyAgICAgICAgbV9zZWxlY3Rpb25TZXQucmVtb3ZlKHNl
bGVjdGlvbik7CisgICAgbGlzdC0+Y2xlYXIoKTsKK30KKworSFRNTENvbnRlbnRTZWxlY2l0b24q
IEhUTUxDb250ZW50U2VsZWN0b3I6OmZpbmRGb3IoTm9kZSoga2V5KSBjb25zdAoreworICAgIHJl
dHVybiBtX3NlbGVjdGlvblNldC5maW5kKGtleSk7Cit9CisKK3ZvaWQgSFRNTENvbnRlbnRTZWxl
Y3Rvcjo6ZGlkU2VsZWN0KCkKK3sKKyAgICBtX2NhbmRpZGF0ZXMuY2xlYXIoKTsKK30KKwordm9p
ZCBIVE1MQ29udGVudFNlbGVjdG9yOjp3aWxsU2VsZWN0T3ZlcihTaGFkb3dSb290KiBzY29wZSkK
K3sKKyAgICBpZiAoIW1fY2FuZGlkYXRlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+c2hhZG93SG9zdCgpLT5maXJzdENoaWxkKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQorICAgICAgICBtX2NhbmRpZGF0ZXMuYXBw
ZW5kKG5vZGUpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
Q29udGVudFNlbGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM5OWZmYjMzYTQ1NWRkNzI3MWVhMTFiMmZh
Yjk3MmEwYTk4ODBlZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSFRNTENv
bnRlbnRTZWxlY3Rvcl9oCisjZGVmaW5lIEhUTUxDb250ZW50U2VsZWN0b3JfaAorCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7CitjbGFz
cyBOb2RlOworY2xhc3MgU2hhZG93Um9vdDsKKworY2xhc3MgSFRNTENvbnRlbnRTZWxlY2l0b24g
OiBwdWJsaWMgUmVmQ291bnRlZDxIVE1MQ29udGVudFNlbGVjaXRvbj4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWNpdG9uPiBjcmVhdGUoSFRNTENvbnRl
bnRFbGVtZW50KiwgTm9kZSopOworCisgICAgSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Q
b2ludCgpIGNvbnN0IHsgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnQ7IH0KKyAgICBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9ub2RlLmdldCgpOyB9CisgICAgSFRNTENvbnRlbnRTZWxlY2l0
b24qIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQuZ2V0KCk7IH0KKyAgICBIVE1MQ29udGVu
dFNlbGVjaXRvbiogcHJldmlvdXMoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzLmdldCgpOyB9
CisKKyAgICB2b2lkIGFwcGVuZChQYXNzUmVmUHRyPEhUTUxDb250ZW50U2VsZWNpdG9uPik7Cisg
ICAgdm9pZCB1bmxpbmsoKTsKKworcHJpdmF0ZToKKyAgICBIVE1MQ29udGVudFNlbGVjaXRvbihI
VE1MQ29udGVudEVsZW1lbnQqLCBOb2RlKik7CisKKyAgICBIVE1MQ29udGVudEVsZW1lbnQqIG1f
aW5zZXJ0aW9uUG9pbnQ7CisgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKKyAgICBSZWZQdHI8SFRN
TENvbnRlbnRTZWxlY2l0b24+IG1fbmV4dDsKKyAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0
b24+IG1fcHJldmlvdXM7Cit9OworCitpbmxpbmUgSFRNTENvbnRlbnRTZWxlY2l0b246OkhUTUxD
b250ZW50U2VsZWNpdG9uKEhUTUxDb250ZW50RWxlbWVudCogaW5zZXJ0aW9uUG9pbnQsIE5vZGUq
IG5vZGUpCisgICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50KSwgbV9ub2RlKG5v
ZGUpCit7IH0KKworaW5saW5lIFBhc3NSZWZQdHI8SFRNTENvbnRlbnRTZWxlY2l0b24+IEhUTUxD
b250ZW50U2VsZWNpdG9uOjpjcmVhdGUoSFRNTENvbnRlbnRFbGVtZW50KiBpbnNlcnRpb25Qb2lu
dCwgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxDb250ZW50U2Vs
ZWNpdG9uKGluc2VydGlvblBvaW50LCBub2RlKSk7Cit9CisKK2NsYXNzIEhUTUxDb250ZW50U2Vs
ZWN0aW9uTGlzdCB7CitwdWJsaWM6CisgICAgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KCk7Cisg
ICAgfkhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCgpOworCisgICAgSFRNTENvbnRlbnRTZWxlY2l0
b24qIGZpcnN0KCkgY29uc3QgeyByZXR1cm4gbV9maXJzdC5nZXQoKTsgfQorICAgIEhUTUxDb250
ZW50U2VsZWNpdG9uKiBsYXN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXN0LmdldCgpOyB9CisgICAg
SFRNTENvbnRlbnRTZWxlY2l0b24qIGZpbmQoTm9kZSopIGNvbnN0OworICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpcnN0OyB9CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAg
dm9pZCBhcHBlbmQoUGFzc1JlZlB0cjxIVE1MQ29udGVudFNlbGVjaXRvbj4pOworCitwcml2YXRl
OgorICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjaXRvbj4gbV9maXJzdDsKKyAgICBSZWZQdHI8
SFRNTENvbnRlbnRTZWxlY2l0b24+IG1fbGFzdDsKK307CisKKworY2xhc3MgSFRNTENvbnRlbnRT
ZWxlY3Rpb25TZXQgeworcHVibGljOgorICAgIHZvaWQgYWRkKEhUTUxDb250ZW50U2VsZWNpdG9u
KiB2YWx1ZSkgeyBtX3NldC5hZGQodmFsdWUpOyB9CisgICAgdm9pZCByZW1vdmUoSFRNTENvbnRl
bnRTZWxlY2l0b24qIHZhbHVlKSB7IG1fc2V0LnJlbW92ZSh2YWx1ZSk7IH0KKyAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3NldC5pc0VtcHR5KCk7IH0KKyAgICBIVE1MQ29udGVu
dFNlbGVjaXRvbiogZmluZChOb2RlKiBrZXkpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0cnVj
dCBUcmFuc2xhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IE5vZGUqIGtleSkgeyByZXR1cm4gUHRySGFzaDxjb25zdCBOb2RlKj46Omhhc2goa2V5
KTsgfQorICAgICAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBIVE1MQ29udGVudFNlbGVjaXRv
biogc2VsZWN0aW9uLCBjb25zdCBOb2RlKiBub2RlKSB7IHJldHVybiBzZWxlY3Rpb24tPm5vZGUo
KSA9PSBub2RlOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBIYXNoIHsKKyAgICAgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goSFRNTENvbnRlbnRTZWxlY2l0b24qIGtleSkgeyByZXR1cm4gUHRySGFz
aDxjb25zdCBOb2RlKj46Omhhc2goa2V5LT5ub2RlKCkpOyB9CisgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKEhUTUxDb250ZW50U2VsZWNpdG9uKiBhLCBIVE1MQ29udGVudFNlbGVjaXRvbiogYikg
eyByZXR1cm4gYS0+bm9kZSgpID09IGItPm5vZGUoKTsgfQorICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IGZhbHNlOworICAgIH07CisKKyAg
ICB0eXBlZGVmIEhhc2hTZXQ8SFRNTENvbnRlbnRTZWxlY2l0b24qLCBIYXNoPiBQb2ludGVyU2V0
OworCisgICAgUG9pbnRlclNldCBtX3NldDsKK307CisKK2lubGluZSBIVE1MQ29udGVudFNlbGVj
aXRvbiogSFRNTENvbnRlbnRTZWxlY3Rpb25TZXQ6OmZpbmQoTm9kZSoga2V5KSBjb25zdAorewor
ICAgIFBvaW50ZXJTZXQ6Oml0ZXJhdG9yIGZvdW5kID0gbV9zZXQuZmluZDxOb2RlKiwgSFRNTENv
bnRlbnRTZWxlY3Rpb25TZXQ6OlRyYW5zbGF0b3I+KGtleSk7CisgICAgcmV0dXJuIGZvdW5kICE9
IG1fc2V0LmVuZCgpID8gKmZvdW5kIDogMDsKK30KKworY2xhc3MgSFRNTENvbnRlbnRTZWxlY3Rv
ciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTENvbnRlbnRTZWxlY3Rvcik7CitwdWJs
aWM6CisgICAgSFRNTENvbnRlbnRTZWxlY3RvcigpOworICAgIH5IVE1MQ29udGVudFNlbGVjdG9y
KCk7CisKKyAgICB2b2lkIHNlbGVjdChIVE1MQ29udGVudEVsZW1lbnQqLCBIVE1MQ29udGVudFNl
bGVjdGlvbkxpc3QqKTsKKyAgICB2b2lkIHVuc2VsZWN0KEhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dCopOworICAgIEhUTUxDb250ZW50U2VsZWNpdG9uKiBmaW5kRm9yKE5vZGUqIGtleSkgY29uc3Q7
CisKKyAgICB2b2lkIHdpbGxTZWxlY3RPdmVyKFNoYWRvd1Jvb3QqKTsKKyAgICB2b2lkIGRpZFNl
bGVjdCgpOworICAgIGJvb2wgaGFzQ2FuZGlkYXRlcygpIGNvbnN0IHsgcmV0dXJuICFtX2NhbmRp
ZGF0ZXMuaXNFbXB0eSgpOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCByZW1vdmVGcm9tU2V0KEhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdCopOworICAgIHZvaWQgYWRkVG9TZXQoSFRNTENvbnRlbnRT
ZWxlY3Rpb25MaXN0Kik7CisKKyAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9jYW5kaWRhdGVz
OworICAgIEhUTUxDb250ZW50U2VsZWN0aW9uU2V0IG1fc2VsZWN0aW9uU2V0OworfTsKKworfQor
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAwNmUzNGNkM2Ni
YmMwZGUxNzhiMTIxN2ZhNDAzODk5YjcyMDk3YmY2Li4xMjY0N2RmZTMxNzkzNjgzOWY5MTMzNGM4
ODY1ZDc0Yzc3NmNlZWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0y
MjYsNyArMjI2LDcgQEAgRWxlbWVudCogSW50ZXJuYWxzOjppbmNsdWRlckZvcihOb2RlKiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0
dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KG5vZGUpLmluY2x1ZGVyKCk7CisgICAgcmV0dXJuIE5v
ZGVSZW5kZXJpbmdDb250ZXh0KG5vZGUpLmluc2VydGlvblBvaW50KCk7CiB9CiAKIFN0cmluZyBJ
bnRlcm5hbHM6OnNoYWRvd1BzZXVkb0lkKEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>