<?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>130392</bug_id>
          
          <creation_ts>2014-03-18 05:47:28 -0700</creation_ts>
          <short_desc>[CSSRegions] Compute region ranges for children of inline blocks</short_desc>
          <delta_ts>2014-03-19 05:42:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>129478</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihnea Ovidenie">mihnea</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>WebkitBugTracker</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>991623</commentid>
    <comment_count>0</comment_count>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-03-18 05:47:28 -0700</bug_when>
    <thetext>Extend region range computation also for children of inline blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991635</commentid>
    <comment_count>1</comment_count>
      <attachid>227044</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-03-18 06:19:27 -0700</bug_when>
    <thetext>Created attachment 227044
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991639</commentid>
    <comment_count>2</comment_count>
      <attachid>227044</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-03-18 06:41:01 -0700</bug_when>
    <thetext>Comment on attachment 227044
Patch

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

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:801
&gt; +            endRegion = startRegion;

An unsplittable box should always have startRegion == endRegion. Shouldn&apos;t this line be an assertion instead?

&gt; Source/WebCore/rendering/RenderObject.cpp:529
&gt; +    if (flowThread &amp;&amp; (flowThreadState() == flowThread-&gt;flowThreadState()))

What&apos;s this change for?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992050</commentid>
    <comment_count>3</comment_count>
      <attachid>227044</attachid>
    <who name="Mihnea Ovidenie">mihnea</who>
    <bug_when>2014-03-19 01:18:56 -0700</bug_when>
    <thetext>Comment on attachment 227044
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:801
&gt;&gt; +            endRegion = startRegion;
&gt; 
&gt; An unsplittable box should always have startRegion == endRegion. Shouldn&apos;t this line be an assertion instead?

Yes, you are right :)

&gt;&gt; Source/WebCore/rendering/RenderObject.cpp:529
&gt;&gt; +    if (flowThread &amp;&amp; (flowThreadState() == flowThread-&gt;flowThreadState()))
&gt; 
&gt; What&apos;s this change for?

Assume you have a region-based multicolumn flow thread inside a named flow and you have the multi-column flow thread set as the current flow thread. Now suppose you want to compute borderBoxRectInRegion for the multicolumnflowthread and the region being the rendermulticolumnset. When you ask for containingBlock renderBoxRegionInfo, you go out of rendermulticolumnthread boundary and for these boxes, flowThreadContainingBlock() will return the wrong result.

There are some possible solutions to this problem:
* the check above, which ensures that when you are in the middle of layout and you cross the flow thread boundary, you still get the right result
* add a check in RenderBox::renderBoxRegionInfo so that we return 0 if the flowThreadContainingBlock flowThreadState is different than the box flowThreadState</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992074</commentid>
    <comment_count>4</comment_count>
      <attachid>227044</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-03-19 04:47:10 -0700</bug_when>
    <thetext>Comment on attachment 227044
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992080</commentid>
    <comment_count>5</comment_count>
      <attachid>227044</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-19 05:39:19 -0700</bug_when>
    <thetext>Comment on attachment 227044
Patch

Clearing flags on attachment: 227044

Committed r165890: &lt;http://trac.webkit.org/changeset/165890&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>992081</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-03-19 05:42:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>227044</attachid>
            <date>2014-03-18 06:19:27 -0700</date>
            <delta_ts>2014-03-19 05:39:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>130392.patch</filename>
            <type>text/plain</type>
            <size>44358</size>
            <attacher name="Mihnea Ovidenie">mihnea</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5OWEwMGE3Li5jYTgzZmJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTQtMDMt
MTggIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CisKKyAgICAgICAgW0NTU1Jl
Z2lvbnNdIENvbXB1dGUgcmVnaW9uIHJhbmdlcyBmb3IgY2hpbGRyZW4gb2YgaW5saW5lIGJsb2Nr
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMwMzky
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0
L3JlZ2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1jaGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy1l
eHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2Nr
LWlubGluZS1jaGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2Nrcy1keW4tZW5sYXJnZWQtcmVnaW9ucy1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2Nrcy1keW4t
ZW5sYXJnZWQtcmVnaW9ucy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvaW5s
aW5lLWJsb2Nrcy1keW4tc2hydW5rLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9yZWdpb25zL2lubGluZS1ibG9ja3MtZHluLXNocnVuay1yZWdpb25zLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWluLXR3by1yZWdp
b25zLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9pbmxpbmUt
YmxvY2tzLWluLXR3by1yZWdpb25zLmh0bWw6IEFkZGVkLgorCiAyMDE0LTAzLTE3ICBUaWJvciBN
ZXN6YXJvcyAgPHRtZXN6YXJvcy51LXN6ZWdlZEBwYXJ0bmVyLnNhbXN1bmcuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBNYXRoLmh5cG90CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvaW5saW5lLWJsb2NrLWlubGluZS1jaGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9jay1pbmxpbmUt
Y2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43OTVhNzFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJl
Z2lvbnMtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAjcmVnaW9uMSB7
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAxNTBweDsgbGVmdDogMTAwcHg7IHdpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxMDBweDsgfQorICAgICAgICAgICAgI2NvbnRlbnQxIHsgZGlzcGxheTogaW5s
aW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAy
NTBweDsgfQorCisgICAgICAgICAgICAjaW5zaWRlMSB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsg
YmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMjUwcHg7fQor
ICAgICAgICAgICAgI2luc2lkZTIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMjAwcHg7IH0KKyAgICAgICAgICAg
ICNpbnNpZGUzIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBibHVl
OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTUwcHg7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgdGhhdCBhbiBpbmxpbmUgYmxvY2sg
d2l0aCBpbmxpbmUgYmxvY2sgY2hpbGRyZW4gaXMgY29ycmVjdGx5IGRpc3BsYXllZCBpbiBhIHJl
Z2lvbi48L3A+CisgICAgICAgIDxwPk9uIHN1Y2Nlc3MgeW91IHNob3VsZCBzZWUgYSBibHVlIHJl
Y3RhbmdsZSwgZm9sbG93ZWQgYnkgYSBncmVlbiByZWN0YW5nbGUgYW5kIGFuIG9yYW5nZSByZWN0
YW5nbGUuPC9wPgorICAgICAgICA8cD5Zb3Ugc2hvdWxkIG5vdCBzZWUgYW55IHJlZCBiZWxvdy48
L3A+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjEiPgorICAgICAgICAgICAgPGRpdiBpZD0iY29u
dGVudDEiPgorICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imluc2lkZTEiPgorICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGlkPSJpbnNpZGUyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYg
aWQ9Imluc2lkZTMiPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAg
ICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5s
aW5lLWJsb2NrLWlubGluZS1jaGlsZHJlbi1mbG93ZWQtaW4tcmVnaW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWlu
LXJlZ2lvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjY3MWI0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9j
ay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMuaHRtbApAQCAtMCwwICsxLDI2IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c3R5bGU+Cisg
ICAgICAgICAgICAjcmVnaW9uMSB7IC13ZWJraXQtZmxvdy1mcm9tOiBmbG93OyBwb3NpdGlvbjog
YWJzb2x1dGU7IHRvcDogMTUwcHg7IGxlZnQ6IDEwMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDog
MTAwcHg7IH0KKyAgICAgICAgICAgICNjb250ZW50MSB7IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93
OyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQtY29sb3I6IHJlZDsgd2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDI1MHB4OyB9CisKKyAgICAgICAgICAgICNpbnNpZGUxIHsgZGlzcGxheTog
aW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7IHdpZHRoOiAxMDBweDsgaGVp
Z2h0OiAyNTBweDt9CisgICAgICAgICAgICAjaW5zaWRlMiB7IGRpc3BsYXk6IGlubGluZS1ibG9j
azsgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAyMDBweDsg
fQorICAgICAgICAgICAgI2luc2lkZTMgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91
bmQtY29sb3I6IGJsdWU7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiAxNTBweDsgfQorICAgICAgICA8
L3N0eWxlPgorICAgIDwvaGVhZD4KKyAgICA8Ym9keT4KKyAgICAgICAgPHA+VGVzdCB0aGF0IGFu
IGlubGluZSBibG9jayB3aXRoIGlubGluZSBibG9jayBjaGlsZHJlbiBpcyBjb3JyZWN0bHkgZGlz
cGxheWVkIGluIGEgcmVnaW9uLjwvcD4KKyAgICAgICAgPHA+T24gc3VjY2VzcyB5b3Ugc2hvdWxk
IHNlZSBhIGJsdWUgcmVjdGFuZ2xlLCBmb2xsb3dlZCBieSBhIGdyZWVuIHJlY3RhbmdsZSBhbmQg
YW4gb3JhbmdlIHJlY3RhbmdsZS48L3A+CisgICAgICAgIDxwPllvdSBzaG91bGQgbm90IHNlZSBh
bnkgcmVkIGJlbG93LjwvcD4KKyAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+CisgICAg
ICAgIDxkaXYgaWQ9ImNvbnRlbnQxIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9Imluc2lkZTEiPgor
ICAgICAgICAgICAgICAgIDxkaXYgaWQ9Imluc2lkZTIiPgorICAgICAgICAgICAgICAgICAgICA8
ZGl2IGlkPSJpbnNpZGUzIj48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAg
ICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2Nrcy1keW4tZW5sYXJnZWQt
cmVnaW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1i
bG9ja3MtZHluLWVubGFyZ2VkLXJlZ2lvbnMtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kMzJkNTU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9ja3MtZHluLWVubGFyZ2VkLXJlZ2lvbnMtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxo
ZWFkPgorICAgICAgICA8c3R5bGU+CisgICAgICAgICAgICAjZ3JlZW5Db250YWluZXIgeworICAg
ICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICB0b3A6IDEw
MHB4OworICAgICAgICAgICAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgICAgICAgICAgIHdpZHRo
OiAxMDBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNncmVlbjEsICNncmVlbjIgewor
ICAgICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEw
MHB4OworICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICAg
ICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9z
dHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgdGhhdCBpbmxp
bmUgYmxvY2tzIGFyZSBjb3JyZWN0bHkgZGlzcGxheWVkIGluIHJlZ2lvbnMgd2hlbiB0aGUgaGVp
Z2h0IG9mIHRoZSByZWdpb25zIGlzIGR5bmFtaWNhbGx5IGluY3JlYXNlZC48L3A+CisgICAgICAg
IDxwPk9uIHN1Y2Nlc3MgeW91IHNob3VsZCBzZWUgMiBncmVlbiByZWN0YW5nbGVzIGFuZCBubyBy
ZWQuPC9wPgorICAgICAgICA8ZGl2IGlkPSJncmVlbkNvbnRhaW5lciI+CisgICAgICAgICAgICA8
ZGl2IGlkPSJncmVlbjEiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0iZ3JlZW4yIj48L2Rp
dj4KKyAgICAgICAgPC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGluZS1ibG9ja3MtZHluLWVubGFyZ2VkLXJlZ2lvbnMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWR5bi1lbmxhcmdl
ZC1yZWdpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlYTE0
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxv
Y2tzLWR5bi1lbmxhcmdlZC1yZWdpb25zLmh0bWwKQEAgLTAsMCArMSw2NSBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAg
I2FydGljbGUgeworICAgICAgICAgICAgICAgIC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgI2FydGljbGUxLCAjYXJ0aWNsZTIgeyBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7IH0KKworICAgICAgICAgICAgI2luc2lkZTEsICNpbnNpZGUyIHsKKyAgICAg
ICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsK
KyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgI3JlZ2lvbjEsICNyZWdpb24yIHsKKyAgICAgICAgICAgICAgICAtd2Vi
a2l0LWZsb3ctZnJvbTogZmxvdzsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAg
ICAgICAgICAgICAgaGVpZ2h0OiAxMjBweDsKKyAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgICAgICAgICAgICAgICAgdG9wOiAxMDBweDsKKyAgICAgICAgICAgICAgICBsZWZ0
OiAxMDBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNyZWdpb24xIHsgbGVmdDogMTAw
cHg7IH0KKyAgICAgICAgICAgICNyZWdpb24yIHsgbGVmdDogMzAwcHg7IH0KKworICAgICAgICAg
ICAgI3JlZENvbnRhaW5lciB7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgICAgICAgICAgIHRvcDogMTAwcHg7CisgICAgICAgICAgICAgICAgbGVmdDogMTAwcHg7
CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgI3JlZDEsICNyZWQyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7CisgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgICAgICAg
ICAgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVnaW9uMSIp
LnN0eWxlLmhlaWdodCA9ICIzMDBweCI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
KTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5PgorICAgICAgICA8
cD5UZXN0IHRoYXQgaW5saW5lIGJsb2NrcyBhcmUgY29ycmVjdGx5IGRpc3BsYXllZCBpbiByZWdp
b25zIHdoZW4gdGhlIGhlaWdodCBvZiB0aGUgcmVnaW9ucyBpcyBkeW5hbWljYWxseSBpbmNyZWFz
ZWQuPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzIHlvdSBzaG91bGQgc2VlIDIgZ3JlZW4gcmVj
dGFuZ2xlcyBhbmQgbm8gcmVkLjwvcD4KKyAgICAgICAgPGRpdiBpZD0icmVkQ29udGFpbmVyIj4K
KyAgICAgICAgICAgIDxkaXYgaWQ9InJlZDEiPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBpZD0i
cmVkMiI+PC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJhcnRpY2xlIj4K
KyAgICAgICAgICAgIDxkaXYgaWQ9ImFydGljbGUxIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlk
PSJpbnNpZGUxIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PjxkaXYgaWQ9ImFydGljbGUyIj4K
KyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbnNpZGUyIj48L2Rpdj4KKyAgICAgICAgICAgIDwv
ZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0icmVnaW9uMSI+PC9kaXY+Cisg
ICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgIDwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWR5bi1zaHJ1
bmstcmVnaW9ucy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2lubGlu
ZS1ibG9ja3MtZHluLXNocnVuay1yZWdpb25zLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOTEyMTNiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWR5bi1zaHJ1bmstcmVnaW9ucy1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNncmVlbjEsICNncmVlbjIgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICB0b3A6IDEwMHB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgI2dyZWVuMSB7IGxlZnQ6IDEwMHB4OyB9CisgICAgICAg
ICAgICAjZ3JlZW4yIHsgbGVmdDogMzAwcHg7IH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8L2hl
YWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgdGhhdCBpbmxpbmUgYmxvY2tzIGFyZSBj
b3JyZWN0bHkgZGlzcGxheWVkIGluIHJlZ2lvbnMgd2hlbiB0aGUgaGVpZ2h0IG9mIHRoZSByZWdp
b25zIGlzIGR5bmFtaWNhbGx5IHNocnVuay48L3A+CisgICAgICAgIDxwPk9uIHN1Y2Nlc3MgeW91
IHNob3VsZCBzZWUgMiBncmVlbiByZWN0YW5nbGVzIGFuZCBubyByZWQuPC9wPgorICAgICAgICA8
ZGl2IGlkPSJncmVlbjEiPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJncmVlbjIiPjwvZGl2Pgor
ICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9u
cy9pbmxpbmUtYmxvY2tzLWR5bi1zaHJ1bmstcmVnaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2lubGluZS1ibG9ja3MtZHluLXNocnVuay1yZWdpb25zLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlMGZhMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWR5bi1zaHJ1bmstcmVnaW9ucy5o
dG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhlYWQ+
CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNhcnRpY2xlIHsKKyAgICAgICAgICAgICAg
ICAtd2Via2l0LWZsb3ctaW50bzogZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICNh
cnRpY2xlMSwgI2FydGljbGUyIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyB9CisKKyAgICAgICAg
ICAgICNpbnNpZGUxLCAjaW5zaWRlMiB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogZ3JlZW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNyZWdpb24xLCAj
cmVnaW9uMiB7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7CisgICAg
ICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMzAwcHg7
CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgICAgIHRv
cDogMTAwcHg7CisgICAgICAgICAgICAgICAgbGVmdDogMTAwcHg7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAjcmVnaW9uMSB7IGxlZnQ6IDEwMHB4OyB9CisgICAgICAgICAgICAjcmVnaW9u
MiB7IGxlZnQ6IDMwMHB4OyB9CisKKyAgICAgICAgICAgICNyZWQxLCAjcmVkMiB7CisgICAgICAg
ICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7Cisg
ICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgICAgICAgICAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICB0b3A6IDEwMHB4OworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgI3JlZDEgeyBsZWZ0OiAxMDBweDsgfQorICAgICAgICAgICAgI3Jl
ZDIgeyBsZWZ0OiAzMDBweDsgfQorICAgICAgICA8L3N0eWxlPgorICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLAorICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicmVnaW9uMSIpLnN0eWxlLmhlaWdodCA9ICIxMjBweCI7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgKTsKKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxi
b2R5PgorICAgICAgICA8cD5UZXN0IHRoYXQgaW5saW5lIGJsb2NrcyBhcmUgY29ycmVjdGx5IGRp
c3BsYXllZCBpbiByZWdpb25zIHdoZW4gdGhlIGhlaWdodCBvZiB0aGUgcmVnaW9ucyBpcyBkeW5h
bWljYWxseSBzaHJ1bmsuPC9wPgorICAgICAgICA8cD5PbiBzdWNjZXNzIHlvdSBzaG91bGQgc2Vl
IDIgZ3JlZW4gcmVjdGFuZ2xlcyBhbmQgbm8gcmVkLjwvcD4KKyAgICAgICAgPGRpdiBpZD0icmVk
MSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InJlZDIiPjwvZGl2PgorICAgICAgICA8ZGl2IGlk
PSJhcnRpY2xlIj4KKyAgICAgICAgICAgIDxkaXYgaWQ9ImFydGljbGUxIj4KKyAgICAgICAgICAg
ICAgICA8ZGl2IGlkPSJpbnNpZGUxIj48L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PjxkaXYgaWQ9
ImFydGljbGUyIj4KKyAgICAgICAgICAgICAgICA8ZGl2IGlkPSJpbnNpZGUyIj48L2Rpdj4KKyAg
ICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0icmVnaW9u
MSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjIiPjwvZGl2PgorICAgIDwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxv
Y2tzLWluLXR3by1yZWdpb25zLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvaW5saW5lLWJsb2Nrcy1pbi10d28tcmVnaW9ucy1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOGMyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvaW5saW5lLWJsb2Nrcy1pbi10d28tcmVnaW9ucy1leHBlY3Rl
ZC5odG1sCkBAIC0wLDAgKzEsMjYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPGhl
YWQ+CisgICAgICAgIDxzdHlsZT4KKyAgICAgICAgICAgICNncmVlbjEsICNncmVlbjIgeworICAg
ICAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgICAgICAgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgICAgICB0b3A6IDEwMHB4OworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgI2dyZWVuMSB7CisgICAgICAgICAgICAgICAgbGVmdDog
MTAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjZ3JlZW4yIHsKKyAgICAgICAgICAg
ICAgICBsZWZ0OiAzMDBweDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zdHlsZT4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgdGhhdCAyIGlubGluZSBibG9ja3Mg
YXJlIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gMiByZWdpb25zLjwvcD4KKyAgICAgICAgPHA+T24g
c3VjY2VzcyB5b3Ugc2hvdWxkIHNlZSAyIGdyZWVuIHJlY3RhbmdsZXMgYW5kIG5vIHJlZC48L3A+
CisgICAgICAgIDxkaXYgaWQ9ImdyZWVuMSI+PC9kaXY+CisgICAgICAgIDxkaXYgaWQ9ImdyZWVu
MiI+PC9kaXY+CisgICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2lubGluZS1ibG9ja3MtaW4tdHdvLXJlZ2lvbnMuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWluLXR3by1yZWdpb25zLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ1MzJkMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWluLXR3by1yZWdpb25zLmh0
bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4K
KyAgICAgICAgPHN0eWxlPgorICAgICAgICAgICAgI2FydGljbGUgeworICAgICAgICAgICAgICAg
IC13ZWJraXQtZmxvdy1pbnRvOiBmbG93OworICAgICAgICAgICAgfQorICAgICAgICAgICAgI2Fy
dGljbGUxLCAjYXJ0aWNsZTIgeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KKworICAgICAgICAg
ICAgI3JlZDEsICNyZWQyIHsKKyAgICAgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAg
ICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAg
ICAgIHRvcDogMTAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjcmVkMSB7CisgICAg
ICAgICAgICAgICAgbGVmdDogMTAwcHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjcmVk
MiB7CisgICAgICAgICAgICAgICAgbGVmdDogMzAwcHg7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICNpbnNpZGUxLCAjaW5zaWRlMiB7CisgICAgICAgICAgICAgICAgd2lkdGg6IDEwMHB4
OworICAgICAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICAgICAgYmFja2dy
b3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNyZWdpb24x
LCAjcmVnaW9uMiB7CisgICAgICAgICAgICAgICAgLXdlYmtpdC1mbG93LWZyb206IGZsb3c7Cisg
ICAgICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgICAgIGhlaWdodDogMTIw
cHg7CisgICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICAgICAgICAg
IHRvcDogMTAwcHg7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNyZWdpb24xIHsgbGVm
dDogMTAwcHg7IH0KKyAgICAgICAgICAgICNyZWdpb24yIHsgbGVmdDogMzAwcHg7IH0KKyAgICAg
ICAgPC9zdHlsZT4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHk+CisgICAgICAgIDxwPlRlc3QgdGhh
dCAyIGlubGluZSBibG9ja3MgYXJlIGNvcnJlY3RseSBkaXNwbGF5ZWQgaW4gMiByZWdpb25zLjwv
cD4KKyAgICAgICAgPHA+T24gc3VjY2VzcyB5b3Ugc2hvdWxkIHNlZSAyIGdyZWVuIHJlY3Rhbmds
ZXMgYW5kIG5vIHJlZC48L3A+CisgICAgICAgIDxkaXYgaWQ9InJlZDEiPjwvZGl2PgorICAgICAg
ICA8ZGl2IGlkPSJyZWQyIj48L2Rpdj4KKyAgICAgICAgPGRpdiBpZD0iYXJ0aWNsZSI+CisgICAg
ICAgICAgICA8ZGl2IGlkPSJhcnRpY2xlMSI+CisgICAgICAgICAgICAgICAgPGRpdiBpZD0iaW5z
aWRlMSI+PC9kaXY+CisgICAgICAgICAgICA8L2Rpdj48ZGl2IGlkPSJhcnRpY2xlMiI+CisgICAg
ICAgICAgICAgICAgPGRpdiBpZD0iaW5zaWRlMiI+PC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4K
KyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgaWQ9InJlZ2lvbjEiPjwvZGl2PgorICAgICAg
ICA8ZGl2IGlkPSJyZWdpb24yIj48L2Rpdj4KKyAgICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYmU3YjExYi4uOTY1ZTk3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE0
LTAzLTE4ICBNaWhuZWEgT3ZpZGVuaWUgIDxtaWhuZWFAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBDb21wdXRlIHJlZ2lvbiByYW5nZXMgZm9yIGNoaWxkcmVuIG9mIGlubGluZSBi
bG9ja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
MDM5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4
dGVuZCB0aGUgcmVnaW9uIHJhbmdlcyBjb21wdXRhdGlvbiBmb3IgY2hpbGRyZW4gb2YgaW5saW5l
IGJsb2Nrcy4KKyAgICAgICAgV2hlbiB3ZSBjYW5ub3QgcmV0cmlldmUgdGhlIHJlZ2lvbiByYW5n
ZSBmb3IgYSBib3ggdXNpbmcgY2FjaGVkIGluZm9ybWF0aW9uLAorICAgICAgICBlaXRoZXIgZnJv
bSByZWdpb24gcmFuZ2UgbWFwIG9yIGZyb20gdGhlIHJlZ2lvbiBjYWNoZWQgb24gdGhlIFJvb3RJ
bmxpbmVCb3gsCisgICAgICAgIHRyeSB0byBmaW5kIHRoZSB0b3AgbW9zdCB1bnNwbGl0dGFibGUg
Ym94IHVwIHRvIHRoZSBmbG93IHRocmVhZCBib3VuZGFyeS4KKyAgICAgICAgSWYgd2UgZmluZCBz
dWNoIHVuc3BsaXR0YWJsZSBib3ggYW5kIHRoZSBib3ggaGFzIGEgcmVnaW9uIHJhbmdlLCB0aGVu
IHJldHVybgorICAgICAgICB0aGlzIHJhbmdlLgorCisgICAgICAgIEJlZm9yZSB0aGlzIHBhdGNo
LCBtZXRob2QgZ2V0UmVnaW9uUmFuZ2VGb3JCb3ggZGlkIG5vdCByZXR1cm4gdHJ1ZS9mYWxzZQor
ICAgICAgICBpZiBpdCB3YXMgYWJsZSB0byByZXRyaWV2ZSB0aGUgcmFuZ2UgYW5kIHRoZSBjYWxs
ZXIgY2hlY2tlZCB0aGUgcmV0dXJuZWQKKyAgICAgICAgcmVnaW9uIHZhbHVlcy4gSSBtb2RpZmll
ZCB0aGUgbWV0aG9kIHRvIHJldHVybiB0cnVlIGlmIHdlIHdlcmUgYWJsZSB0byBjb21wdXRlCisg
ICAgICAgIHRoZSByYW5nZS4KKworICAgICAgICBUZXN0czogZmFzdC9yZWdpb25zL2lubGluZS1i
bG9jay1pbmxpbmUtY2hpbGRyZW4tZmxvd2VkLWluLXJlZ2lvbnMuaHRtbAorICAgICAgICAgICAg
ICAgZmFzdC9yZWdpb25zL2lubGluZS1ibG9ja3MtZHluLWVubGFyZ2VkLXJlZ2lvbnMuaHRtbAor
ICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2lubGluZS1ibG9ja3MtZHluLXNocnVuay1yZWdp
b25zLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9pbmxpbmUtYmxvY2tzLWluLXR3
by1yZWdpb25zLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yUmVuZGVyZXJGcmFnbWVudHMpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCbG9jazo6dXBkYXRlUmVnaW9uUmFuZ2VGb3JCb3hDaGlsZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
a0Zsb3c6Omhhc05leHRQYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmJvcmRlckJveFJlY3RJblJlZ2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmxheW91dE92ZXJmbG93UmVjdEZvclByb3BhZ2F0aW9u
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRlVG9Mb2NhbFBvaW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25Gb3JDb21wb3NpdGVkTGF5ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZl
VG9PZmZzZXRQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVt
b3ZlUmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhy
ZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zRm9yQmxvY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyRmxvd1RocmVhZDo6Z2V0UmVnaW9uUmFuZ2VGb3JCb3hGcm9tQ2FjaGVkSW5m
byk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpnZXRSZWdpb25SYW5nZUZv
ckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpvYmplY3RTaG91bGRQ
YWludEluRmxvd1JlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpv
YmplY3RJbkZsb3dSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
YWRkUmVnaW9uc1Zpc3VhbEVmZmVjdE92ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OmFkZFJlZ2lvbnNWaXN1YWxPdmVyZmxvd0Zyb21UaGVtZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zT3ZlcmZsb3dGcm9tQ2hpbGQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc0xheW91dE92
ZXJmbG93KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OmFkZFJlZ2lvbnNW
aXN1YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjbGVh
clJlZ2lvbnNPdmVyZmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZnJhZ21lbnRGcm9tQWJzb2x1dGVQ
b2ludEFuZEJveCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2F0ZUZsb3dUaHJlYWRDb250YWluaW5nQmxv
Y2spOgorICAgICAgICBNYWtlIHN1cmUgd2UgcmV0dXJuIHRoZSByaWdodCByZW5kZXIgZmxvdyB0
aHJlYWQgaW4gdGhlIGNhc2Ugb2YKKyAgICAgICAgcmVnaW9uLWJhc2VkIG11bHRpY29sdW1uIGlu
c2lkZSBuYW1lZCBmbG93cy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyUmVnaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclJlZ2lvbjo6cmVjdEZsb3dQb3J0aW9uRm9yQm94KToK
KwogMjAxNC0wMy0xNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgUmVtb3RlQ29tbWFuZExpc3RlbmVyIHN1cHBvcnQgdG8gTWVkaWFTZXNzaW9uTWFuYWdl
ci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAppbmRl
eCA3NTE0NTE2Li4wYzI5MGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCkBAIC01MTYsMTEgKzUxNiwxMSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JBcnJheT4gYnVpbGRPYmplY3RGb3JSZW5kZXJlckZyYWdtZW50cyhSZW5kZXJPYmpl
Y3QqCiAgICAgICAgIFJlbmRlckJveCogZW5jbG9zaW5nQm94ID0gcmVuZGVyZXItPmVuY2xvc2lu
Z0JveCgpOwogICAgICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKICAg
ICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOwotICAgICAgICBjb250YWlu
aW5nRmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goZW5jbG9zaW5nQm94LCBzdGFydFJl
Z2lvbiwgZW5kUmVnaW9uKTsKLSAgICAgICAgaWYgKCFzdGFydFJlZ2lvbikgeworICAgICAgICBp
ZiAoIWNvbnRhaW5pbmdGbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveChlbmNsb3NpbmdC
b3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKSB7CiAgICAgICAgICAgICAvLyBUaGUgZmxvdyBo
YXMgbm8gdmlzaWJsZSByZWdpb25zLiBUaGUgcmVuZGVyZXIgaXMgbm90IHZpc2libGUgb24gc2Ny
ZWVuLgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KKwogICAgICAgICBj
b25zdCBSZW5kZXJSZWdpb25MaXN0JiByZWdpb25MaXN0ID0gY29udGFpbmluZ0Zsb3dUaHJlYWQt
PnJlbmRlclJlZ2lvbkxpc3QoKTsKICAgICAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25z
dF9pdGVyYXRvciBpdGVyID0gcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRlciAhPSBy
ZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gKml0ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRl
eCAzYmNkYTcyLi4zMzljYTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKQEAgLTUwOTksMTQgKzUwOTksMTQgQEAgYm9vbCBSZW5kZXJCbG9jazo6dXBkYXRlUmVn
aW9uUmFuZ2VGb3JCb3hDaGlsZChjb25zdCBSZW5kZXJCb3gmIGJveCkgY29uc3QKICAgICBpZiAo
IWNhbkNvbXB1dGVSZWdpb25SYW5nZUZvckJveCh0aGlzLCBib3gsIGZsb3dUaHJlYWQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsK
LSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFy
dFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRy
OwogICAgIGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94KCZib3gsIHN0YXJ0UmVnaW9u
LCBlbmRSZWdpb24pOwogCiAgICAgY29tcHV0ZVJlZ2lvblJhbmdlRm9yQm94Q2hpbGQoYm94KTsK
IAotICAgIFJlbmRlclJlZ2lvbiogbmV3U3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lv
biogbmV3RW5kUmVnaW9uID0gMDsKKyAgICBSZW5kZXJSZWdpb24qIG5ld1N0YXJ0UmVnaW9uID0g
bnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIG5ld0VuZFJlZ2lvbiA9IG51bGxwdHI7CiAgICAg
Zmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goJmJveCwgbmV3U3RhcnRSZWdpb24sIG5l
d0VuZFJlZ2lvbik7CiAKICAgICAvLyBUaGUgcmVnaW9uIHJhbmdlIG9mIHRoZSBib3ggaGFzIGNo
YW5nZWQuIFNvbWUgYm94ZXMgKGUuZyBmbG9hdHMpIG1heSBoYXZlIGJlZW4gcG9zaXRpb25lZCBh
c3N1bWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcApp
bmRleCBlMTFmZTgzLi5iODNhM2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2tGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcApAQCAtMTY3NCwxNyArMTY3NCwxNSBAQCBib29sIFJlbmRlckJsb2Nr
Rmxvdzo6aGFzTmV4dFBhZ2UoTGF5b3V0VW5pdCBsb2dpY2FsT2Zmc2V0LCBQYWdlQm91bmRhcnlS
dWxlIHBhZwogICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gZmxvd1RocmVhZC0+cmVnaW9uQXRC
bG9ja09mZnNldCh0aGlzLCBwYWdlT2Zmc2V0LCB0cnVlKTsKICAgICBpZiAoIXJlZ2lvbikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKHJlZ2lvbi0+aXNMYXN0UmVnaW9uKCkpCiAg
ICAgICAgIHJldHVybiByZWdpb24tPmlzUmVuZGVyUmVnaW9uU2V0KCkgfHwgcmVnaW9uLT5zdHls
ZSgpLnJlZ2lvbkZyYWdtZW50KCkgPT0gQnJlYWtSZWdpb25GcmFnbWVudAogICAgICAgICAgICAg
fHwgKHBhZ2VCb3VuZGFyeVJ1bGUgPT0gSW5jbHVkZVBhZ2VCb3VuZGFyeSAmJiBwYWdlT2Zmc2V0
ID09IHJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRDb250ZW50KCkpOwogCi0gICAgUmVu
ZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24g
PSAwOworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRl
clJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKICAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25S
YW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKLQotICAgIGlmIChyZWdp
b24gPT0gZW5kUmVnaW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7
CisgICAgcmV0dXJuIHJlZ2lvbiAhPSBlbmRSZWdpb247CiB9CiAKIExheW91dFVuaXQgUmVuZGVy
QmxvY2tGbG93OjphZGp1c3RGb3JVbnNwbGl0dGFibGVDaGlsZChSZW5kZXJCb3gmIGNoaWxkLCBM
YXlvdXRVbml0IGxvZ2ljYWxPZmZzZXQsIGJvb2wgaW5jbHVkZU1hcmdpbnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDIyNTQ1ODUuLjViN2JjYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC0xMzEsMTMgKzEzMSwxNCBAQCBSZW5k
ZXJSZWdpb24qIFJlbmRlckJveDo6Y2xhbXBUb1N0YXJ0QW5kRW5kUmVnaW9ucyhSZW5kZXJSZWdp
b24qIHJlZ2lvbikgY29uc3QKICAgICAvLyBsb2dpY2FsIHRvcCBvciBsb2dpY2FsIGJvdHRvbSBv
ZiB0aGUgYmxvY2sgdG8gc2l6ZSBhcyB0aG91Z2ggdGhlIGJvcmRlciBib3ggaW4gdGhlIGZpcnN0
IGFuZAogICAgIC8vIGxhc3QgcmVnaW9ucyBleHRlbmRlZCBpbmZpbml0ZWx5LiBPdGhlcndpc2Ug
dGhlIGxpbmVzIGFyZSBnb2luZyB0byBzaXplIGFjY29yZGluZyB0byB0aGUgcmVnaW9ucwogICAg
IC8vIHRoZXkgb3ZlcmZsb3cgaW50bywgd2hpY2ggbWFrZXMgbm8gc2Vuc2Ugd2hlbiB0aGlzIGJs
b2NrIGRvZXNuJ3QgZXhpc3QgaW4gfHJlZ2lvbnwgYXQgYWxsLgotICAgIFJlbmRlclJlZ2lvbiog
c3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBm
bG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVn
aW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5k
ZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFmbG93VGhyZWFkLT5nZXRS
ZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAgICAgICAg
cmV0dXJuIHJlZ2lvbjsKIAotICAgIGlmIChzdGFydFJlZ2lvbiAmJiByZWdpb24tPmxvZ2ljYWxU
b3BGb3JGbG93VGhyZWFkQ29udGVudCgpIDwgc3RhcnRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93
VGhyZWFkQ29udGVudCgpKQorICAgIGlmIChyZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFk
Q29udGVudCgpIDwgc3RhcnRSZWdpb24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgp
KQogICAgICAgICByZXR1cm4gc3RhcnRSZWdpb247Ci0gICAgaWYgKGVuZFJlZ2lvbiAmJiByZWdp
b24tPmxvZ2ljYWxUb3BGb3JGbG93VGhyZWFkQ29udGVudCgpID4gZW5kUmVnaW9uLT5sb2dpY2Fs
VG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSkKKyAgICBpZiAocmVnaW9uLT5sb2dpY2FsVG9wRm9y
Rmxvd1RocmVhZENvbnRlbnQoKSA+IGVuZFJlZ2lvbi0+bG9naWNhbFRvcEZvckZsb3dUaHJlYWRD
b250ZW50KCkpCiAgICAgICAgIHJldHVybiBlbmRSZWdpb247CiAKICAgICByZXR1cm4gcmVnaW9u
OwpAQCAtMTY0LDE0ICsxNjUsMTMgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6OmJvcmRlckJveFJl
Y3RJblJlZ2lvbihSZW5kZXJSZWdpb24qIHJlZ2lvbiwgUmVuZGVyQm94UmVnaW8KICAgICBpZiAo
IWZsb3dUaHJlYWQpCiAgICAgICAgIHJldHVybiBib3JkZXJCb3hSZWN0KCk7CiAKLSAgICBSZW5k
ZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9
IDA7Ci0gICAgZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgc3RhcnRSZWdp
b24sIGVuZFJlZ2lvbik7Ci0gICAgCi0gICAgLy8gRklYTUU6IEluIGEgcGVyZmVjdCB3b3JsZCB0
aGlzIGNvbmRpdGlvbiBzaG91bGQgbmV2ZXIgaGFwcGVuLgotICAgIGlmICghc3RhcnRSZWdpb24g
fHwgIWVuZFJlZ2lvbikKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsK
KyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgaWYgKCFmbG93VGhy
ZWFkLT5nZXRSZWdpb25SYW5nZUZvckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkg
eworICAgICAgICAvLyBGSVhNRTogSW4gYSBwZXJmZWN0IHdvcmxkIHRoaXMgY29uZGl0aW9uIHNo
b3VsZCBuZXZlciBoYXBwZW4uCiAgICAgICAgIHJldHVybiBib3JkZXJCb3hSZWN0KCk7Ci0KKyAg
ICB9CisgICAgCiAgICAgQVNTRVJUKGZsb3dUaHJlYWQtPnJlZ2lvbkluUmFuZ2UocmVnaW9uLCBz
dGFydFJlZ2lvbiwgZW5kUmVnaW9uKSk7CiAKICAgICAvLyBDb21wdXRlIHRoZSBsb2dpY2FsIHdp
ZHRoIGFuZCBwbGFjZW1lbnQgaW4gdGhpcyByZWdpb24uCkBAIC0yMTAzLDEwICsyMTAzLDkgQEAg
dm9pZCBSZW5kZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG8tPmlz
UmVuZGVyRmxvd1RocmVhZCgpKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogZmlyc3RSZWdpb24g
PSAwOwotICAgICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWdpb24gPSAwOwotICAgICAgICB0b1Jl
bmRlckZsb3dUaHJlYWQobyktPmdldFJlZ2lvblJhbmdlRm9yQm94KHRoaXMsIGZpcnN0UmVnaW9u
LCBsYXN0UmVnaW9uKTsKLSAgICAgICAgaWYgKGZpcnN0UmVnaW9uKQorICAgICAgICBSZW5kZXJS
ZWdpb24qIGZpcnN0UmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiBsYXN0
UmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKHRvUmVuZGVyRmxvd1RocmVhZChvKS0+Z2V0
UmVnaW9uUmFuZ2VGb3JCb3godGhpcywgZmlyc3RSZWdpb24sIGxhc3RSZWdpb24pKQogICAgICAg
ICAgICAgcmVjdC5tb3ZlQnkoZmlyc3RSZWdpb24tPmZsb3dUaHJlYWRQb3J0aW9uUmVjdCgpLmxv
Y2F0aW9uKCkpOwogICAgIH0KIApAQCAtNDUzNiwxMSArNDUzNSw5IEBAIExheW91dFJlY3QgUmVu
ZGVyQm94OjpvdmVyZmxvd1JlY3RGb3JQYWludFJlamVjdGlvbihSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCogbmFtCiAgICAgLy8gdG8gdGhlIGZsb3cgdGhyZWFkLCBub3QgdGhlIGxhc3QgcmVnaW9u
IChpbiB3aGljaCBpdCB3aWxsIGVuZCB1cCBiZWNhdXNlIG9mIGJvdHRvbTowcHgpCiAgICAgaWYg
KG5hbWVkRmxvd0ZyYWdtZW50KSB7CiAgICAgICAgIGlmIChSZW5kZXJGbG93VGhyZWFkKiBmbG93
VGhyZWFkID0gbmFtZWRGbG93RnJhZ21lbnQtPmZsb3dUaHJlYWQoKSkgewotICAgICAgICAgICAg
UmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgICAgICAgICBSZW5kZXJSZWdpb24q
IGVuZFJlZ2lvbiA9IDA7Ci0gICAgICAgICAgICBmbG93VGhyZWFkLT5nZXRSZWdpb25SYW5nZUZv
ckJveCh0aGlzLCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKLQotICAgICAgICAgICAgaWYgKHN0
YXJ0UmVnaW9uICYmIGVuZFJlZ2lvbikKKyAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRS
ZWdpb24gPSBudWxscHRyOworICAgICAgICAgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBu
dWxscHRyOworICAgICAgICAgICAgaWYgKGZsb3dUaHJlYWQtPmdldFJlZ2lvblJhbmdlRm9yQm94
KHRoaXMsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQogICAgICAgICAgICAgICAgIG92ZXJmbG93
UmVjdC51bml0ZShuYW1lZEZsb3dGcmFnbWVudC0+dmlzdWFsT3ZlcmZsb3dSZWN0Rm9yQm94KHRo
aXMpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDg5ZjM3NmMuLjcyNmRhNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAt
MjYzMiwxMCArMjYzMiw5IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om1hcEFic29sdXRl
VG9Mb2NhbFBvaW50KE1hcENvb3JkaW5hdGVzRmxhZ3MgbW9kZSwgVHJhCiAgICAgLy8gVGhlIHBv
aW50IGluc2lkZSBhIGJveCB0aGF0J3MgaW5zaWRlIGEgcmVnaW9uIGhhcyBpdHMgY29vcmRpbmF0
ZXMgcmVsYXRpdmUgdG8gdGhlIHJlZ2lvbiwKICAgICAvLyBub3QgdGhlIEZsb3dUaHJlYWQgdGhh
dCBpcyBpdHMgY29udGFpbmVyIGluIHRoZSBSZW5kZXJPYmplY3QgdHJlZS4KICAgICBpZiAoby0+
aXNSZW5kZXJGbG93VGhyZWFkKCkgJiYgaXNCb3goKSkgewotICAgICAgICBSZW5kZXJSZWdpb24q
IHN0YXJ0UmVnaW9uOwotICAgICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKLSAgICAgICAg
dG9SZW5kZXJGbG93VGhyZWFkKG8pLT5nZXRSZWdpb25SYW5nZUZvckJveCh0b1JlbmRlckJveCh0
aGlzKSwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0gICAgICAgIGlmIChzdGFydFJlZ2lvbikK
KyAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgICAgIFJl
bmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKHRvUmVuZGVyRmxv
d1RocmVhZChvKS0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3godG9SZW5kZXJCb3godGhpcyksIHN0YXJ0
UmVnaW9uLCBlbmRSZWdpb24pKQogICAgICAgICAgICAgbyA9IHN0YXJ0UmVnaW9uOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4
IDc1Y2Q5YzkuLjAzNTBhZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Rmxvd1RocmVhZC5jcHAKQEAgLTIzOCw5ICsyMzgsMTAgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFk
OjpsYXlvdXQoKQogCiBib29sIFJlbmRlckZsb3dUaHJlYWQ6Omhhc0NvbXBvc2l0aW5nUmVnaW9u
RGVzY2VuZGFudCgpIGNvbnN0CiB7Ci0gICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxp
c3QpCisgICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKICAgICAgICAgaWYg
KHRvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQocmVnaW9uKS0+bGF5ZXJPd25lcigpLmxheWVyKCkt
Pmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjU4LDExICsyNTksOSBAQCBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCogUmVuZGVyRmxvd1RocmVhZDo6cmVnaW9uRm9yQ29tcG9zaXRlZExh
eWVyKFJlbmRlckxheWVyJgogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmIChjaGlsZExheWVy
LnJlbmRlckJveCgpKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOwot
ICAgICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgICAgIGdldFJlZ2lvblJh
bmdlRm9yQm94KGNoaWxkTGF5ZXIucmVuZGVyQm94KCksIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24p
OwotICAgICAgICAvLyBUaGUgdmlkZW8gdGFnIGlzIHN1Y2ggYSBib3ggdGhhdCBkb2Vzbid0IGhh
dmUgYSByZWdpb24gcmFuZ2UgYmVjYXVzZSBpdCdzIGlubGluZSAoYnkgZGVmYXVsdCkuCi0gICAg
ICAgIGlmIChzdGFydFJlZ2lvbikKKyAgICAgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9
IG51bGxwdHI7CisgICAgICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKGdldFJlZ2lvblJhbmdlRm9yQm94KGNoaWxkTGF5ZXIucmVuZGVyQm94KCksIHN0
YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQogICAgICAgICAgICAgcmV0dXJuIHRvUmVuZGVyTmFtZWRG
bG93RnJhZ21lbnQoc3RhcnRSZWdpb24pOwogICAgIH0KIApAQCAtMzE0LDExICszMTMsMTMgQEAg
Ym9vbCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVBbGxMYXllclRvUmVnaW9uTWFwcGluZ3MoKQog
ICAgIExheWVyVG9SZWdpb25NYXAgbGF5ZXJUb1JlZ2lvbk1hcDsKICAgICBSZWdpb25Ub0xheWVy
TGlzdE1hcCByZWdpb25Ub0xheWVyTGlzdE1hcDsKIAotICAgIFJlbmRlckxheWVyTGlzdCogbGlz
dHNbXSA9IHsgbGF5ZXIoKS0+bmVnWk9yZGVyTGlzdCgpLCBsYXllcigpLT5ub3JtYWxGbG93TGlz
dCgpLCBsYXllcigpLT5wb3NaT3JkZXJMaXN0KCl9OwotICAgIGZvciAoc2l6ZV90IGxpc3RJbmRl
eCA9IDA7IGxpc3RJbmRleCA8IHNpemVvZihsaXN0cykgLyBzaXplb2YobGlzdHNbMF0pOyArK2xp
c3RJbmRleCkKLSAgICAgICAgaWYgKFJlbmRlckxheWVyTGlzdCogbGlzdCA9IGxpc3RzW2xpc3RJ
bmRleF0pCisgICAgUmVuZGVyTGF5ZXJMaXN0KiBsaXN0c1tdID0geyBsYXllcigpLT5uZWdaT3Jk
ZXJMaXN0KCksIGxheWVyKCktPm5vcm1hbEZsb3dMaXN0KCksIGxheWVyKCktPnBvc1pPcmRlckxp
c3QoKSB9OworICAgIGZvciAoc2l6ZV90IGxpc3RJbmRleCA9IDA7IGxpc3RJbmRleCA8IHNpemVv
ZihsaXN0cykgLyBzaXplb2YobGlzdHNbMF0pOyArK2xpc3RJbmRleCkgeworICAgICAgICBpZiAo
UmVuZGVyTGF5ZXJMaXN0KiBsaXN0ID0gbGlzdHNbbGlzdEluZGV4XSkgewogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDAsIGxpc3RTaXplID0gbGlzdC0+c2l6ZSgpOyBpIDwgbGlzdFNpemU7
ICsraSkKICAgICAgICAgICAgICAgICB1cGRhdGVMYXllclRvUmVnaW9uTWFwcGluZ3MoKmxpc3Qt
PmF0KGkpLCBsYXllclRvUmVnaW9uTWFwLCByZWdpb25Ub0xheWVyTGlzdE1hcCwgbmVlZHNMYXll
clVwZGF0ZSk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBpZiAobmVlZHNMYXllclVwZGF0ZSkg
ewogICAgICAgICBpZiAoIW1fbGF5ZXJUb1JlZ2lvbk1hcCkKQEAgLTQ2NSwxMCArNDY2LDkgQEAg
TGF5b3V0UG9pbnQgUmVuZGVyRmxvd1RocmVhZDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9P
ZmZzZXRQYXJlbnQoY29uc3QgUmVuZGUKICAgICAgICAgYm9vbCB3YXNDb21wdXRlZFJlbGF0aXZl
VG9PdGhlclJlZ2lvbiA9IGZhbHNlOwogICAgICAgICB3aGlsZSAob2JqQ29udGFpbmluZ0Jsb2Nr
ICYmICFvYmpDb250YWluaW5nQmxvY2stPmlzUmVuZGVyTmFtZWRGbG93VGhyZWFkKCkpIHsKICAg
ICAgICAgICAgIC8vIENoZWNrIGlmIHRoaXMgb2JqZWN0IGlzIGluIGEgZGlmZmVyZW50IHJlZ2lv
bi4KLSAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcGFyZW50U3RhcnRSZWdpb24gPSAwOwotICAg
ICAgICAgICAgUmVuZGVyUmVnaW9uKiBwYXJlbnRFbmRSZWdpb24gPSAwOwotICAgICAgICAgICAg
Z2V0UmVnaW9uUmFuZ2VGb3JCb3gob2JqQ29udGFpbmluZ0Jsb2NrLCBwYXJlbnRTdGFydFJlZ2lv
biwgcGFyZW50RW5kUmVnaW9uKTsKLSAgICAgICAgICAgIGlmIChwYXJlbnRTdGFydFJlZ2lvbiAm
JiBwYXJlbnRTdGFydFJlZ2lvbiAhPSBzdGFydFJlZ2lvbikgeworICAgICAgICAgICAgUmVuZGVy
UmVnaW9uKiBwYXJlbnRTdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgICAgICAgICBSZW5kZXJS
ZWdpb24qIHBhcmVudEVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoZ2V0UmVn
aW9uUmFuZ2VGb3JCb3gob2JqQ29udGFpbmluZ0Jsb2NrLCBwYXJlbnRTdGFydFJlZ2lvbiwgcGFy
ZW50RW5kUmVnaW9uKSAmJiBwYXJlbnRTdGFydFJlZ2lvbiAhPSBzdGFydFJlZ2lvbikgewogICAg
ICAgICAgICAgICAgIHdhc0NvbXB1dGVkUmVsYXRpdmVUb090aGVyUmVnaW9uID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTU5Myw4ICs1OTMsOCBAQCB2
b2lkIFJlbmRlckZsb3dUaHJlYWQ6OnJlbW92ZVJlbmRlckJveFJlZ2lvbkluZm8oUmVuZGVyQm94
KiBib3gpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0
UmVnaW9uOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uOworICAgIFJlbmRlclJlZ2lvbiog
c3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVs
bHB0cjsKICAgICBnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdp
b24pOwogCiAgICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3JlZ2lvbkxpc3QpIHsKQEAgLTYzMCwx
MCArNjMwLDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5S
ZWdpb25zRm9yQmxvY2soY29uc3QgUmVuZGVyQmxvY2sqIGIKICAgICBpZiAocmVsYXlvdXRDaGls
ZHJlbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbjsK
LSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbjsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChi
bG9jaywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7Ci0KICAgICAvLyBOb3QgbmVjZXNzYXJ5IGZv
ciB0aGUgZmxvdyB0aHJlYWQsIHNpbmNlIHdlIGFscmVhZHkgY29tcHV0ZWQgdGhlIGNvcnJlY3Qg
aW5mbyBmb3IgaXQuCiAgICAgLy8gSWYgdGhlIHJlZ2lvbnMgaGF2ZSBjaGFuZ2VkIGludmFsaWRh
dGUgdGhlIGNoaWxkcmVuLgogICAgIGlmIChibG9jayA9PSB0aGlzKSB7CkBAIC02NDEsNiArNjM3
LDEwIEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6bG9naWNhbFdpZHRoQ2hhbmdlZEluUmVnaW9u
c0ZvckJsb2NrKGNvbnN0IFJlbmRlckJsb2NrKiBiCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdp
b24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7CisgICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYmxvY2ss
IHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworCiAgICAgZm9yIChhdXRvJiByZWdpb24gOiBtX3Jl
Z2lvbkxpc3QpIHsKICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRzTGF5b3V0KCkgfHwgcmVn
aW9uLT5pc1JlbmRlclJlZ2lvblNldCgpKTsKIApAQCAtNzQ5LDI1ICs3NDksNjEgQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjpzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqIGJv
eCwgUmVuZGVyUmVnaW9uKgogICAgIHJhbmdlLnNldFJhbmdlKHN0YXJ0UmVnaW9uLCBlbmRSZWdp
b24pOwogfQogCi12b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmdldFJlZ2lvblJhbmdlRm9yQm94KGNv
bnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdpb24qJiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVn
aW9uKiYgZW5kUmVnaW9uKSBjb25zdAorYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpnZXRSZWdpb25S
YW5nZUZvckJveEZyb21DYWNoZWRJbmZvKGNvbnN0IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdp
b24qJiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9uKSBjb25zdAogewotICAg
IHN0YXJ0UmVnaW9uID0gZW5kUmVnaW9uID0gMDsKLSAgICBhdXRvIGl0ID0gbV9yZWdpb25SYW5n
ZU1hcC5maW5kKGJveCk7CisgICAgQVNTRVJUKGJveCk7CisgICAgQVNTRVJUKGhhc1ZhbGlkUmVn
aW9uSW5mbygpKTsKKyAgICBBU1NFUlQoKHN0YXJ0UmVnaW9uID09IG51bGxwdHIpICYmIChlbmRS
ZWdpb24gPT0gbnVsbHB0cikpOwogCisgICAgYXV0byBpdCA9IG1fcmVnaW9uUmFuZ2VNYXAuZmlu
ZChib3gpOwogICAgIGlmIChpdCAhPSBtX3JlZ2lvblJhbmdlTWFwLmVuZCgpKSB7CiAgICAgICAg
IGNvbnN0IFJlbmRlclJlZ2lvblJhbmdlJiByYW5nZSA9IGl0LT52YWx1ZTsKICAgICAgICAgc3Rh
cnRSZWdpb24gPSByYW5nZS5zdGFydFJlZ2lvbigpOwogICAgICAgICBlbmRSZWdpb24gPSByYW5n
ZS5lbmRSZWdpb24oKTsKICAgICAgICAgQVNTRVJUKG1fcmVnaW9uTGlzdC5jb250YWlucyhzdGFy
dFJlZ2lvbikgJiYgbV9yZWdpb25MaXN0LmNvbnRhaW5zKGVuZFJlZ2lvbikpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIElubGluZUVsZW1lbnRC
b3gqIGJveFdyYXBwZXIgPSBib3gtPmlubGluZUJveFdyYXBwZXIoKTsKLSAgICBpZiAoYm94V3Jh
cHBlcikgewotICAgICAgICBjb25zdCBSb290SW5saW5lQm94JiBib3hXcmFwcGVyUm9vdElubGlu
ZUJveCA9ICBib3hXcmFwcGVyLT5yb290KCk7Ci0gICAgICAgIHN0YXJ0UmVnaW9uID0gZW5kUmVn
aW9uID0gYm94V3JhcHBlclJvb3RJbmxpbmVCb3guY29udGFpbmluZ1JlZ2lvbigpOwotICAgICAg
ICByZXR1cm47CisgICAgaWYgKGJveFdyYXBwZXIgJiYgYm94V3JhcHBlci0+cm9vdCgpLmNvbnRh
aW5pbmdSZWdpb24oKSkgeworICAgICAgICBzdGFydFJlZ2lvbiA9IGVuZFJlZ2lvbiA9IGJveFdy
YXBwZXItPnJvb3QoKS5jb250YWluaW5nUmVnaW9uKCk7CisgICAgICAgIEFTU0VSVChtX3JlZ2lv
bkxpc3QuY29udGFpbnMoc3RhcnRSZWdpb24pICYmIG1fcmVnaW9uTGlzdC5jb250YWlucyhlbmRS
ZWdpb24pKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQorCisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIFJlbmRlckZsb3dUaHJlYWQ6OmdldFJlZ2lvblJhbmdlRm9yQm94KGNvbnN0
IFJlbmRlckJveCogYm94LCBSZW5kZXJSZWdpb24qJiBzdGFydFJlZ2lvbiwgUmVuZGVyUmVnaW9u
KiYgZW5kUmVnaW9uKSBjb25zdAoreworICAgIEFTU0VSVChib3gpOworCisgICAgc3RhcnRSZWdp
b24gPSBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghaGFzVmFsaWRSZWdpb25JbmZvKCkp
IC8vIFdlIGNsZWFyIHRoZSByYW5nZXMgd2hlbiB3ZSBpbnZhbGlkYXRlIHRoZSByZWdpb25zLgor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZ2V0UmVnaW9uUmFuZ2VGb3JCb3hGcm9t
Q2FjaGVkSW5mbyhib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKworICAgIC8vIENoZWNrIGlmIHRoZSBib3ggaXMgY29udGFpbmVkIGluIGFuIHVuc3Bs
aXR0YWJsZSBib3guCisgICAgLy8gSWYgdGhlIHVuc3BsaXR0YWJsZSBib3ggaGFzIHJlZ2lvbiBy
YW5nZSwgdGhlbiB0aGUgc3RhcnQgYW5kIGVuZCByZWdpb24gZm9yIHRoZSBib3gKKyAgICAvLyBz
aG91bGQgYmUgZXF1YWwgd2l0aCB0aGUgcmVnaW9uIGZvciB0aGUgdW5zcGxpdHRhYmxlIGJveCBp
ZiBhbnkuCisgICAgUmVuZGVyQm94KiB0b3BNb3N0VW5zcGxpdHRhYmxlID0gbnVsbHB0cjsKKyAg
ICBSZW5kZXJCb3gqIGNiID0gY29uc3RfY2FzdDxSZW5kZXJCb3gqPihib3gpOworICAgIGRvIHsK
KyAgICAgICAgaWYgKGNiLT5pc1Vuc3BsaXR0YWJsZUZvclBhZ2luYXRpb24oKSkKKyAgICAgICAg
ICAgIHRvcE1vc3RVbnNwbGl0dGFibGUgPSBjYjsKKyAgICAgICAgY2IgPSBjYi0+cGFyZW50KCkt
PmVuY2xvc2luZ0JveCgpOworICAgIH0gd2hpbGUgKCFjYi0+aXNSZW5kZXJGbG93VGhyZWFkKCkp
OworCisgICAgaWYgKHRvcE1vc3RVbnNwbGl0dGFibGUpIHsKKyAgICAgICAgaWYgKGdldFJlZ2lv
blJhbmdlRm9yQm94RnJvbUNhY2hlZEluZm8odG9wTW9zdFVuc3BsaXR0YWJsZSwgc3RhcnRSZWdp
b24sIGVuZFJlZ2lvbikpIHsKKyAgICAgICAgICAgIGVuZFJlZ2lvbiA9IHN0YXJ0UmVnaW9uOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YXBwbHlCcmVha0FmdGVyQ29udGVu
dChMYXlvdXRVbml0IGNsaWVudEhlaWdodCkKQEAgLTgwMCwxNyArODM2LDE3IEBAIGJvb2wgUmVu
ZGVyRmxvd1RocmVhZDo6b2JqZWN0U2hvdWxkUGFpbnRJbkZsb3dSZWdpb24oY29uc3QgUmVuZGVy
T2JqZWN0KiBvYmplY3QsCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IG9iamVj
dC0+Zmxvd1RocmVhZENvbnRhaW5pbmdCbG9jaygpOwogICAgIGlmIChmbG93VGhyZWFkICE9IHRo
aXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghbV9yZWdpb25MaXN0LmNvbnRh
aW5zKGNvbnN0X2Nhc3Q8UmVuZGVyUmVnaW9uKj4ocmVnaW9uKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKICAgICBSZW5kZXJCb3gqIGVuY2xvc2luZ0JveCA9IG9iamVjdC0+ZW5jbG9z
aW5nQm94KCk7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiA9IDA7
Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmNsb3NpbmdCb3hFbmRSZWdpb24gPSAwOwotICAgIGdldFJl
Z2lvblJhbmdlRm9yQm94KGVuY2xvc2luZ0JveCwgZW5jbG9zaW5nQm94U3RhcnRSZWdpb24sIGVu
Y2xvc2luZ0JveEVuZFJlZ2lvbik7Ci0gICAgCisgICAgUmVuZGVyUmVnaW9uKiBlbmNsb3NpbmdC
b3hTdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmNsb3NpbmdCb3hF
bmRSZWdpb24gPSBudWxscHRyOwogICAgIC8vIElmIHRoZSBib3ggaGFzIG5vIHJhbmdlLCBkbyBu
b3QgY2hlY2sgcmVnaW9uSW5SYW5nZS4gQm94ZXMgaW5zaWRlIGlubGluZXMgZG8gbm90IGdldCBy
YW5nZXMuCiAgICAgLy8gSW5zdGVhZCwgdGhlIGNvbnRhaW5pbmcgUm9vdElubGluZUJveCB3aWxs
IGFib3J0IHdoZW4gdHJ5aW5nIHRvIHBhaW50IGluc2lkZSB0aGUgd3JvbmcgcmVnaW9uLgotICAg
IGlmIChlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiAmJiBlbmNsb3NpbmdCb3hFbmRSZWdpb24gJiYg
IXJlZ2lvbkluUmFuZ2UocmVnaW9uLCBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiwgZW5jbG9zaW5n
Qm94RW5kUmVnaW9uKSkKKyAgICBpZiAoZ2V0UmVnaW9uUmFuZ2VGb3JCb3goZW5jbG9zaW5nQm94
LCBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiwgZW5jbG9zaW5nQm94RW5kUmVnaW9uKQorICAgICAg
ICAmJiAhcmVnaW9uSW5SYW5nZShyZWdpb24sIGVuY2xvc2luZ0JveFN0YXJ0UmVnaW9uLCBlbmNs
b3NpbmdCb3hFbmRSZWdpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgcmV0
dXJuIG9iamVjdC0+aXNCb3goKSB8fCBvYmplY3QtPmlzUmVuZGVySW5saW5lKCk7CkBAIC04MjQs
MTMgKzg2MCwxNiBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6Om9iamVjdEluRmxvd1JlZ2lvbihj
b25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZAogICAgIFJlbmRlckZsb3dUaHJl
YWQqIGZsb3dUaHJlYWQgPSBvYmplY3QtPmZsb3dUaHJlYWRDb250YWluaW5nQmxvY2soKTsKICAg
ICBpZiAoZmxvd1RocmVhZCAhPSB0aGlzKQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBp
ZiAoIW1fcmVnaW9uTGlzdC5jb250YWlucyhjb25zdF9jYXN0PFJlbmRlclJlZ2lvbio+KHJlZ2lv
bikpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZW5kZXJCb3gqIGVuY2xvc2luZ0Jv
eCA9IG9iamVjdC0+ZW5jbG9zaW5nQm94KCk7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmNsb3NpbmdC
b3hTdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmNsb3NpbmdCb3hFbmRSZWdp
b24gPSAwOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGVuY2xvc2luZ0JveCwgZW5jbG9zaW5n
Qm94U3RhcnRSZWdpb24sIGVuY2xvc2luZ0JveEVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9u
KiBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBl
bmNsb3NpbmdCb3hFbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VG
b3JCb3goZW5jbG9zaW5nQm94LCBlbmNsb3NpbmdCb3hTdGFydFJlZ2lvbiwgZW5jbG9zaW5nQm94
RW5kUmVnaW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgaWYgKCFyZWdpb25JblJh
bmdlKHJlZ2lvbiwgZW5jbG9zaW5nQm94U3RhcnRSZWdpb24sIGVuY2xvc2luZ0JveEVuZFJlZ2lv
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtODgzLDggKzkyMiw3IEBAIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6aW5pdGlhbGl6ZVJlZ2lvbnNDb21wdXRlZEF1dG9IZWlnaHQoUmVuZGVy
UmVnaW9uKiBzdGFydFJlCiAgICAgaWYgKCFoYXNBdXRvTG9naWNhbEhlaWdodFJlZ2lvbnMoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChhdXRvIHJlZ2lvbkl0ZXIgPSBzdGFydFJlZ2lv
biA/IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKSA6IG1fcmVnaW9uTGlzdC5iZWdpbigp
LAotICAgICAgICBlbmQgPSBtX3JlZ2lvbkxpc3QuZW5kKCk7IHJlZ2lvbkl0ZXIgIT0gZW5kOyAr
K3JlZ2lvbkl0ZXIpIHsKKyAgICBmb3IgKGF1dG8gcmVnaW9uSXRlciA9IHN0YXJ0UmVnaW9uID8g
bV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pIDogbV9yZWdpb25MaXN0LmJlZ2luKCksIGVu
ZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgcmVnaW9uSXRlciAhPSBlbmQ7ICsrcmVnaW9uSXRlcikg
ewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICpyZWdpb25JdGVyOwogICAgICAgICBp
ZiAocmVnaW9uLT5oYXNBdXRvTG9naWNhbEhlaWdodCgpKSB7CiAgICAgICAgICAgICBSZW5kZXJO
YW1lZEZsb3dGcmFnbWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSB0b1JlbmRlck5hbWVkRmxvd0Zy
YWdtZW50KHJlZ2lvbik7CkBAIC0xMTc5LDkgKzEyMTcsMTAgQEAgdm9pZCBSZW5kZXJGbG93VGhy
ZWFkOjptYXBMb2NhbFRvQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJl
cGFpbnQKICAgICBpZiAodGhpcyA9PSByZXBhaW50Q29udGFpbmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoUmVuZGVyUmVnaW9uKiByZWdpb24gPSBtYXBGcm9tRmxvd1RvUmVnaW9uKHRy
YW5zZm9ybVN0YXRlKSkKKyAgICBpZiAoUmVuZGVyUmVnaW9uKiByZWdpb24gPSBtYXBGcm9tRmxv
d1RvUmVnaW9uKHRyYW5zZm9ybVN0YXRlKSkgewogICAgICAgICAvLyBGSVhNRTogVGhlIGNhc3Qg
YmVsb3cgaXMgcHJvYmFibHkgbm90IHRoZSBiZXN0IHNvbHV0aW9uLCB3ZSBtYXkgbmVlZCB0byBm
aW5kIGEgYmV0dGVyIHdheS4KICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgUmVuZGVyT2JqZWN0
Kj4ocmVnaW9uKS0+bWFwTG9jYWxUb0NvbnRhaW5lcihyZWdpb24tPmNvbnRhaW5lckZvclJlcGFp
bnQoKSwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKKyAgICB9CiB9CiAKIC8vIEZJ
WE1FOiBNYWtlIHRoaXMgZnVuY3Rpb24gZmFzdGVyLiBXYWxraW5nIHRoZSByZW5kZXIgdHJlZSBp
cyBzbG93LCBiZXR0ZXIgdXNlIGEgY2FjaGluZyBtZWNoYW5pc20gKGUuZy4gfGNhY2hlZE9mZnNl
dEZyb21Mb2dpY2FsVG9wT2ZGaXJzdFJlZ2lvbnwpLgpAQCAtMTI0MSw5ICsxMjgwLDEwIEBAIHZv
aWQgUmVuZGVyRmxvd1RocmVhZDo6ZmxpcEZvcldyaXRpbmdNb2RlTG9jYWxDb29yZGluYXRlcyhM
YXlvdXRSZWN0JiByZWN0KSBjb25zCiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9u
c1Zpc3VhbEVmZmVjdE92ZXJmbG93KGNvbnN0IFJlbmRlckJveCogYm94KQogewotICAgIFJlbmRl
clJlZ2lvbiogc3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0g
MDsKLSAgICBnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24p
OworICAgIFJlbmRlclJlZ2lvbiogc3RhcnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJl
Z2lvbiogZW5kUmVnaW9uID0gbnVsbHB0cjsKKyAgICBpZiAoIWdldFJlZ2lvblJhbmdlRm9yQm94
KGJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbikpCisgICAgICAgIHJldHVybjsKIAogICAgIGZv
ciAoYXV0byBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pLCBlbmQgPSBtX3Jl
Z2lvbkxpc3QuZW5kKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSAqaXRlcjsKQEAgLTEyNjAsOSArMTMwMCwxMCBAQCB2b2lkIFJlbmRlckZs
b3dUaHJlYWQ6OmFkZFJlZ2lvbnNWaXN1YWxFZmZlY3RPdmVyZmxvdyhjb25zdCBSZW5kZXJCb3gq
IGJveCkKIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjphZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3dG
cm9tVGhlbWUoY29uc3QgUmVuZGVyQmxvY2sqIGJsb2NrKQogewotICAgIFJlbmRlclJlZ2lvbiog
c3RhcnRSZWdpb24gPSAwOwotICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gMDsKLSAgICBn
ZXRSZWdpb25SYW5nZUZvckJveChibG9jaywgc3RhcnRSZWdpb24sIGVuZFJlZ2lvbik7CisgICAg
UmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBl
bmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYmxvY2ss
IHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQorICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1
dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKSwgZW5kID0gbV9yZWdpb25M
aXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiog
cmVnaW9uID0gKml0ZXI7CkBAIC0xMjgxLDEzICsxMzIyLDE1IEBAIHZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6YWRkUmVnaW9uc1Zpc3VhbE92ZXJmbG93RnJvbVRoZW1lKGNvbnN0IFJlbmRlckJsb2Nr
KiBibG9jCiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc092ZXJmbG93RnJvbUNo
aWxkKGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBSZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBM
YXlvdXRTaXplJiBkZWx0YSkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsK
LSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JC
b3goY2hpbGQsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pOworICAgIFJlbmRlclJlZ2lvbiogc3Rh
cnRSZWdpb24gPSBudWxscHRyOworICAgIFJlbmRlclJlZ2lvbiogZW5kUmVnaW9uID0gbnVsbHB0
cjsKKyAgICBpZiAoIWdldFJlZ2lvblJhbmdlRm9yQm94KGNoaWxkLCBzdGFydFJlZ2lvbiwgZW5k
UmVnaW9uKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyUmVnaW9uKiBjb250YWluZXJT
dGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBjb250YWluZXJFbmRSZWdpb24gPSAw
OwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgY29udGFpbmVyU3RhcnRSZWdpb24sIGNv
bnRhaW5lckVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9uKiBjb250YWluZXJTdGFydFJlZ2lv
biA9IG51bGxwdHI7CisgICAgUmVuZGVyUmVnaW9uKiBjb250YWluZXJFbmRSZWdpb24gPSBudWxs
cHRyOworICAgIGlmICghZ2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBjb250YWluZXJTdGFydFJl
Z2lvbiwgY29udGFpbmVyRW5kUmVnaW9uKSkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChh
dXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJlZ2lvbiksIGVuZCA9IG1fcmVnaW9u
TGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9ICppdGVyOwpAQCAtMTMxNyw5ICsxMzYwLDEwIEBAIHZvaWQgUmVuZGVyRmxvd1Ro
cmVhZDo6YWRkUmVnaW9uc092ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCogYm94LCBj
b25zdCBSCiAgICAgCiB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmFkZFJlZ2lvbnNMYXlvdXRPdmVy
Zmxvdyhjb25zdCBSZW5kZXJCb3gqIGJveCwgY29uc3QgTGF5b3V0UmVjdCYgbGF5b3V0T3ZlcmZs
b3cpCiB7Ci0gICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVn
aW9uKiBlbmRSZWdpb24gPSAwOwotICAgIGdldFJlZ2lvblJhbmdlRm9yQm94KGJveCwgc3RhcnRS
ZWdpb24sIGVuZFJlZ2lvbik7CisgICAgUmVuZGVyUmVnaW9uKiBzdGFydFJlZ2lvbiA9IG51bGxw
dHI7CisgICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSBudWxscHRyOworICAgIGlmICghZ2V0
UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuZmluZChzdGFydFJl
Z2lvbiksIGVuZCA9IG1fcmVnaW9uTGlzdC5lbmQoKTsgaXRlciAhPSBlbmQ7ICsraXRlcikgewog
ICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwpAQCAtMTMzNCw5ICsxMzc4LDEw
IEBAIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRkUmVnaW9uc0xheW91dE92ZXJmbG93KGNvbnN0
IFJlbmRlckJveCogYm94LCBjb25zdCBMYXlvCiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6YWRk
UmVnaW9uc1Zpc3VhbE92ZXJmbG93KGNvbnN0IFJlbmRlckJveCogYm94LCBjb25zdCBMYXlvdXRS
ZWN0JiB2aXN1YWxPdmVyZmxvdykKIHsKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0g
MDsKLSAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VG
b3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0
YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxw
dHI7CisgICAgaWYgKCFnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRS
ZWdpb24pKQorICAgICAgICByZXR1cm47CiAgICAgCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0
OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24pOyBpdGVyICE9
IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gKml0ZXI7CkBAIC0xMzUxLDkgKzEzOTYsMTAgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFk
OjphZGRSZWdpb25zVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyQm94KiBib3gsIGNvbnN0IExh
eW8KIAogdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpjbGVhclJlZ2lvbnNPdmVyZmxvdyhjb25zdCBS
ZW5kZXJCb3gqIGJveCkKIHsKLSAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVnaW9uID0gMDsKLSAg
ICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IDA7Ci0gICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3go
Ym94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKTsKKyAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7Cisg
ICAgaWYgKCFnZXRSZWdpb25SYW5nZUZvckJveChib3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24p
KQorICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5m
aW5kKHN0YXJ0UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsg
KytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRleCAyZTMxYTI5Li4yOTU3
MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAg
LTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVQcmV2aW91c1JlZ2lvbkNv
dW50KCkgeyBtX3ByZXZpb3VzUmVnaW9uQ291bnQgPSBtX3JlZ2lvbkxpc3Quc2l6ZSgpOyB9Owog
CiAgICAgdm9pZCBzZXRSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJS
ZWdpb24qLCBSZW5kZXJSZWdpb24qKTsKLSAgICB2b2lkIGdldFJlZ2lvblJhbmdlRm9yQm94KGNv
bnN0IFJlbmRlckJveCosIFJlbmRlclJlZ2lvbiomIHN0YXJ0UmVnaW9uLCBSZW5kZXJSZWdpb24q
JiBlbmRSZWdpb24pIGNvbnN0OworICAgIGJvb2wgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goY29uc3Qg
UmVuZGVyQm94KiwgUmVuZGVyUmVnaW9uKiYgc3RhcnRSZWdpb24sIFJlbmRlclJlZ2lvbiomIGVu
ZFJlZ2lvbikgY29uc3Q7CiAgICAgYm9vbCBoYXNSZWdpb25SYW5nZUZvckJveChjb25zdCBSZW5k
ZXJCb3gqIGJveCkgY29uc3QgeyBBU1NFUlQoYm94KTsgcmV0dXJuIG1fcmVnaW9uUmFuZ2VNYXAu
Y29udGFpbnMoYm94KTsgfQogCiAgICAgLy8gQ2hlY2sgaWYgdGhlIG9iamVjdCBpcyBpbiByZWdp
b24gYW5kIHRoZSByZWdpb24gaXMgcGFydCBvZiB0aGlzIGZsb3cgdGhyZWFkLgpAQCAtMjQ1LDYg
KzI0NSw4IEBAIHByb3RlY3RlZDoKIAogICAgIGlubGluZSBjb25zdCBSZW5kZXJCb3gqIGN1cnJl
bnRBY3RpdmVSZW5kZXJCb3goKSBjb25zdDsKIAorICAgIGJvb2wgZ2V0UmVnaW9uUmFuZ2VGb3JC
b3hGcm9tQ2FjaGVkSW5mbyhjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb24qJiBzdGFydFJl
Z2lvbiwgUmVuZGVyUmVnaW9uKiYgZW5kUmVnaW9uKSBjb25zdDsKKwogICAgIFJlbmRlclJlZ2lv
bkxpc3QgbV9yZWdpb25MaXN0OwogICAgIHVuc2lnbmVkIHNob3J0IG1fcHJldmlvdXNSZWdpb25D
b3VudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd0ZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dGcmFnbWVudC5jcHAKaW5kZXggNDU5MGY5ZC4uNjAyZDJkNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd0ZyYWdtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQuY3BwCkBAIC0yODMs
OSArMjgzLDEwIEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQ6OmxheW91dEJsb2NrKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgTGF5b3V0VW5pdCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCi0gICAgICAgIGlmICgob2xkUmVnaW9uUmVjdC53aWR0aCgpICE9IHBhZ2VMb2dp
Y2FsV2lkdGgoKSB8fCBvbGRSZWdpb25SZWN0LmhlaWdodCgpICE9IHBhZ2VMb2dpY2FsSGVpZ2h0
KCkpICYmICFtX2Zsb3dUaHJlYWQtPmluRmluYWxMYXlvdXRQaGFzZSgpKQorICAgICAgICBpZiAo
KG9sZFJlZ2lvblJlY3Qud2lkdGgoKSAhPSBwYWdlTG9naWNhbFdpZHRoKCkgfHwgb2xkUmVnaW9u
UmVjdC5oZWlnaHQoKSAhPSBwYWdlTG9naWNhbEhlaWdodCgpKSAmJiAhbV9mbG93VGhyZWFkLT5p
bkZpbmFsTGF5b3V0UGhhc2UoKSkgewogICAgICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGV2
ZW4gaWYgd2UgYXJlIGluIHRoZSBpbkNvbnN0cmFpbmVkTGF5b3V0UGhhc2UgYW5kIGl0IHdpbGwg
dHJpZ2dlciBhIHBhdGhvbG9naWNhbCBsYXlvdXQgb2YgdGhlIGZsb3cgdGhyZWFkLgogICAgICAg
ICAgICAgbV9mbG93VGhyZWFkLT5pbnZhbGlkYXRlUmVnaW9ucygpOworICAgICAgICB9CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dU
aHJlYWQuY3BwCmluZGV4IDRlMTUzNDkuLjdmMGE0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0zNjksOSArMzY5LDcg
QEAgUmVuZGVyTmFtZWRGbG93RnJhZ21lbnQqIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZnJhZ21l
bnRGcm9tQWJzb2x1dGVQb2ludEFuZEJveCgKIHsKICAgICBSZW5kZXJSZWdpb24qIHN0YXJ0UmVn
aW9uID0gbnVsbHB0cjsKICAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lvbiA9IG51bGxwdHI7Ci0g
ICAgZ2V0UmVnaW9uUmFuZ2VGb3JCb3goJmZsb3dlZEJveCwgc3RhcnRSZWdpb24sIGVuZFJlZ2lv
bik7Ci0gICAgCi0gICAgaWYgKCFzdGFydFJlZ2lvbikKKyAgICBpZiAoIWdldFJlZ2lvblJhbmdl
Rm9yQm94KCZmbG93ZWRCb3gsIHN0YXJ0UmVnaW9uLCBlbmRSZWdpb24pKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKICAgICBmb3IgKGF1dG8gaXRlciA9IG1fcmVnaW9uTGlzdC5maW5k
KHN0YXJ0UmVnaW9uKSwgZW5kID0gbV9yZWdpb25MaXN0LmVuZCgpOyBpdGVyICE9IGVuZDsgKytp
dGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGNj
MjM1OWMuLmQ2MjY5YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC01MjYsNyArNTI2LDcgQEAgUmVuZGVyRmxvd1RocmVhZCogUmVuZGVyT2JqZWN0Ojps
b2NhdGVGbG93VGhyZWFkQ29udGFpbmluZ0Jsb2NrKCkgY29uc3QKIAogICAgIC8vIFNlZSBpZiB3
ZSBoYXZlIHRoZSB0aHJlYWQgY2FjaGVkIGJlY2F1c2Ugd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBs
YXlvdXQuCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHZpZXcoKS5mbG93VGhy
ZWFkQ29udHJvbGxlcigpLmN1cnJlbnRSZW5kZXJGbG93VGhyZWFkKCk7Ci0gICAgaWYgKGZsb3dU
aHJlYWQpCisgICAgaWYgKGZsb3dUaHJlYWQgJiYgKGZsb3dUaHJlYWRTdGF0ZSgpID09IGZsb3dU
aHJlYWQtPmZsb3dUaHJlYWRTdGF0ZSgpKSkKICAgICAgICAgcmV0dXJuIGZsb3dUaHJlYWQ7CiAg
ICAgCiAgICAgLy8gTm90IGluIHRoZSBtaWRkbGUgb2YgbGF5b3V0IHNvIGhhdmUgdG8gZmluZCB0
aGUgdGhyZWFkIHRoZSBzbG93IHdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZWdpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJl
Z2lvbi5jcHAKaW5kZXggNjQ1YTFlZC4uYjFjYzNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclJlZ2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclJlZ2lvbi5jcHAKQEAgLTQ3MywxMSArNDczLDkgQEAgTGF5b3V0UmVjdCBSZW5k
ZXJSZWdpb246OnJlY3RGbG93UG9ydGlvbkZvckJveChjb25zdCBSZW5kZXJCb3gqIGJveCwgY29u
c3QgTGF5b3UKIHsKICAgICBMYXlvdXRSZWN0IG1hcHBlZFJlY3QgPSBtX2Zsb3dUaHJlYWQtPm1h
cEZyb21Mb2NhbFRvRmxvd1RocmVhZChib3gsIHJlY3QpOwogCi0gICAgUmVuZGVyUmVnaW9uKiBz
dGFydFJlZ2lvbiA9IDA7Ci0gICAgUmVuZGVyUmVnaW9uKiBlbmRSZWdpb24gPSAwOwotICAgIG1f
Zmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3goYm94LCBzdGFydFJlZ2lvbiwgZW5kUmVn
aW9uKTsKLQotICAgIGlmIChzdGFydFJlZ2lvbiAmJiBlbmRSZWdpb24pIHsKKyAgICBSZW5kZXJS
ZWdpb24qIHN0YXJ0UmVnaW9uID0gbnVsbHB0cjsKKyAgICBSZW5kZXJSZWdpb24qIGVuZFJlZ2lv
biA9IG51bGxwdHI7CisgICAgaWYgKG1fZmxvd1RocmVhZC0+Z2V0UmVnaW9uUmFuZ2VGb3JCb3go
Ym94LCBzdGFydFJlZ2lvbiwgZW5kUmVnaW9uKSkgewogICAgICAgICBpZiAoZmxvd1RocmVhZCgp
LT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICBpZiAodGhpcyAhPSBz
dGFydFJlZ2lvbikKICAgICAgICAgICAgICAgICBtYXBwZWRSZWN0LnNoaWZ0WUVkZ2VUbyhzdGQ6
Om1heDxMYXlvdXRVbml0Pihsb2dpY2FsVG9wRm9yRmxvd1RocmVhZENvbnRlbnQoKSwgbWFwcGVk
UmVjdC55KCkpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>