<?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>86847</bug_id>
          
          <creation_ts>2012-05-18 05:46:48 -0700</creation_ts>
          <short_desc>Web Inspector: Support hierarchical context menus</short_desc>
          <delta_ts>2012-05-24 07:53:30 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>86625</dependson>
          <blocked>86630</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>627598</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-05-18 05:46:48 -0700</bug_when>
    <thetext>This is required to implement the pseudo-state emulation on non-selected elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>630488</commentid>
    <comment_count>1</comment_count>
      <attachid>143321</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-05-22 10:10:23 -0700</bug_when>
    <thetext>Created attachment 143321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631404</commentid>
    <comment_count>2</comment_count>
      <attachid>143321</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-23 02:03:28 -0700</bug_when>
    <thetext>Comment on attachment 143321
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        in the Web Inspector&apos;s context menu. ContextMenuItems are also passed/stored by reference/value rather than pointer

I vaguely remember that when it was initially implemented, not all the platforms allowed treating ContextMenuItem as value type. Did this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631408</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-05-23 02:12:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 143321 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143321&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        in the Web Inspector&apos;s context menu. ContextMenuItems are also passed/stored by reference/value rather than pointer
&gt; 
&gt; I vaguely remember that when it was initially implemented, not all the platforms allowed treating ContextMenuItem as value type. Did this change?

Offline, we discovered that the platform objects represented by description are managed by the platform-specific code through the releasePlatformDescription() method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631528</commentid>
    <comment_count>4</comment_count>
      <attachid>143538</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-05-23 05:09:11 -0700</bug_when>
    <thetext>Created attachment 143538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631732</commentid>
    <comment_count>5</comment_count>
      <attachid>143538</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-23 09:32:36 -0700</bug_when>
    <thetext>Comment on attachment 143538
Patch

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

Make sure you implement SoftContextMenu based on the new descriptor.

&gt; Source/WebCore/inspector/front-end/ContextMenu.js:45
&gt; +    this._topLevelMenu = topLevelMenu;

this._contextMenu

&gt; Source/WebCore/inspector/front-end/ContextMenu.js:51
&gt; +    get id()

id: function()

&gt; Source/WebCore/inspector/front-end/ContextMenu.js:56
&gt; +    get type()

type: function()

&gt; Source/WebCore/inspector/front-end/ContextMenu.js:95
&gt; +        this._topLevelMenu.setHandler(item.id, handler);

Make it all private.

&gt; Source/WebCore/inspector/front-end/ContextMenu.js:143
&gt; +    toProtocol: function()

_buildDescriptor:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632628</commentid>
    <comment_count>6</comment_count>
      <attachid>143788</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-05-24 04:56:31 -0700</bug_when>
    <thetext>Created attachment 143788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632751</commentid>
    <comment_count>7</comment_count>
      <attachid>143788</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-05-24 07:13:10 -0700</bug_when>
    <thetext>Comment on attachment 143788
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8InspectorFrontendHostCustom.cpp:80
&gt; +        v8::Local&lt;v8::Value&gt; subItems = item-&gt;Get(v8::String::New(&quot;subItems&quot;));

subItems -&gt; items ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632804</commentid>
    <comment_count>8</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-05-24 07:53:30 -0700</bug_when>
    <thetext>Committed r118374: &lt;http://trac.webkit.org/changeset/118374&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143321</attachid>
            <date>2012-05-22 10:10:23 -0700</date>
            <delta_ts>2012-05-23 05:08:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86847-20120522211021.patch</filename>
            <type>text/plain</type>
            <size>15013</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE3OTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMwODQxYzljNGMyMjNi
ZGM5ZGU1YmZhYjBhNDJjNzNlMmM1NGFhNy4uM2VhYTc5Nzc1YzNjODYxZWY2YWZiZDIxOTIzNzE3
NjM0NDBkZjkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTIyICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3VwcG9ydCBoaWVyYXJjaGljYWwgY29udGV4dCBtZW51cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIHVzZSBvZiB0
aGUgV2ViTWVudUl0ZW1JbmZvIFN1Yk1lbnUgdHlwZSB0byBleHBvc2UgdGhlIGNhcGFiaWxpdHkg
b2YgYnVpbGRpbmcgc3VibWVudSBpdGVtcworICAgICAgICBpbiB0aGUgV2ViIEluc3BlY3Rvcidz
IGNvbnRleHQgbWVudS4gQ29udGV4dE1lbnVJdGVtcyBhcmUgYWxzbyBwYXNzZWQvc3RvcmVkIGJ5
IHJlZmVyZW5jZS92YWx1ZSByYXRoZXIgdGhhbiBwb2ludGVyCisgICAgICAgIGluIG9yZGVyIHRv
IGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gdHlwZWRlZi4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6IEVuYWJsZSBz
dWJtZW51IGl0ZW0gcG9wdWxhdGlvbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudSk6IEV4dHJhY3Qg
dGhlIG1lbnUgcG9wdWxhdGlvbiBwYXJ0IGludG8gcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKCku
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyk6IEVu
YWJsZSBzdWJtZW51IGl0ZW0gcG9wdWxhdGlvbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudUNhbGxi
YWNrKTogRXh0cmFjdCB0aGUgbWVudSBwb3B1bGF0aW9uIHBhcnQgaW50byBwb3B1bGF0ZUNvbnRl
eHRNZW51SXRlbXMoKS4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyb250ZW5kTWVudVByb3ZpZGVyOjpjcmVhdGUpOiBV
c2UgcmVmZXJlbmNlIGluc3RlYWQgb2YgcG9pbnRlciBmb3IgQ29udGV4dE1lbnVJdGVtcy4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyb250ZW5kTWVudVByb3ZpZGVyOjpGcm9udGVuZE1lbnVQcm92aWRl
cik6IFVzZSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBDb250ZXh0TWVudUl0ZW1z
LgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OnBvcHVsYXRlQ29udGV4
dE1lbnUpOiBVc2UgcmVmZXJlbmNlIGluc3RlYWQgb2YgcG9pbnRlciBmb3IgQ29udGV4dE1lbnVJ
dGVtcy4KKyAgICAgICAgKFdlYkNvcmU6OkZyb250ZW5kTWVudVByb3ZpZGVyOjpjb250ZXh0TWVu
dUNsZWFyZWQpOgorICAgICAgICAoRnJvbnRlbmRNZW51UHJvdmlkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUpOiBVc2UgcmVmZXJl
bmNlIGluc3RlYWQgb2YgcG9pbnRlciBmb3IgQ29udGV4dE1lbnVJdGVtcy4KKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg6CisgICAgICAgIChJbnNwZWN0b3JGcm9u
dGVuZEhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51Q2hyb21p
dW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGV4dE1lbnVJdGVtVmVjdG9yKTogSW1wbGVt
ZW50ZWQuCisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0wNS0yMiAgTmlrb2xhcyBaaW1tZXJt
YW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBXZWJDb3JlOjpS
ZW5kZXJTVkdDb250YWluZXI6OnBhaW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggZDgx
OWRhNDkxYTYwMjUyM2IwOWExZDEwNmY5YzFhNjg0ZmMyZDQ3MS4uM2M3MTk5NDYxYTdiMzE3NDY1
OThlYmQyODI3ODIzNDI2MGFmNWJiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcApAQCAtODUs
MTYgKzg1LDkgQEAgSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6cG9ydChFeGVjU3Rh
dGUqIGV4ZWNTdGF0ZSkKICAgICByZXR1cm4ganNTdHJpbmcoZXhlY1N0YXRlLCBwb3J0KTsKIH0K
IAotSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKLSAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
RXZlbnQqIGV2ZW50ID0gdG9FdmVudChleGVjLT5hcmd1bWVudCgwKSk7Ci0KLSAgICBKU0FycmF5
KiBhcnJheSA9IGFzQXJyYXkoZXhlYy0+YXJndW1lbnQoMSkpOwotICAgIFZlY3RvcjxDb250ZXh0
TWVudUl0ZW0qPiBpdGVtczsKLQorc3RhdGljIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1z
KEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIENvbnRleHRNZW51JiBtZW51KQorewog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0aCgpOyArK2kpIHsKICAgICAg
ICAgSlNPYmplY3QqIGl0ZW0gPSBhc09iamVjdChhcnJheS0+Z2V0SW5kZXgoaSkpOwogICAgICAg
ICBKU1ZhbHVlIGxhYmVsID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImxhYmVs
IikpOwpAQCAtMTAyLDI1ICs5NSw1NCBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpzaG93Q29udGV4dE1lbnUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBKU1ZhbHVlIGlkID0g
aXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlkIikpOwogICAgICAgICBKU1ZhbHVl
IGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZW5hYmxlZCIpKTsK
ICAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgImNoZWNrZWQiKSk7CisgICAgICAgIEpTVmFsdWUgc3ViSXRlbXMgPSBpdGVtLT5nZXQoZXhl
YywgSWRlbnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7CiAgICAgICAgIGlmICghdHlwZS5pc1N0
cmluZygpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgU3RyaW5nIHR5cGVTdHJp
bmcgPSB1c3RyaW5nVG9TdHJpbmcodHlwZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwog
ICAgICAgICBpZiAodHlwZVN0cmluZyA9PSAic2VwYXJhdG9yIikgewotICAgICAgICAgICAgaXRl
bXMuYXBwZW5kKG5ldyBDb250ZXh0TWVudUl0ZW0oU2VwYXJhdG9yVHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbUN1c3RvbVRh
Z05vQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U3RyaW5nKCkpKTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFNlcGFyYXRvclR5
cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW1DdXN0
b21UYWdOb0FjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZygp
KTsKKyAgICAgICAgICAgIG1lbnUuYXBwZW5kSXRlbShpdGVtKTsKKyAgICAgICAgfSBlbHNlIGlm
ICh0eXBlU3RyaW5nID09ICJzdWJNZW51IiAmJiBzdWJJdGVtcy5pbmhlcml0cygmSlNBcnJheTo6
c19pbmZvKSkgeworICAgICAgICAgICAgQ29udGV4dE1lbnUgc3ViTWVudTsKKyAgICAgICAgICAg
IEpTQXJyYXkqIHN1Ykl0ZW1zQXJyYXkgPSBhc0FycmF5KHN1Ykl0ZW1zKTsKKyAgICAgICAgICAg
IHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhleGVjLCBzdWJJdGVtc0FycmF5LCBzdWJNZW51KTsK
KyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFN1Ym1lbnVUeXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c3RyaW5nVG9TdHJpbmcobGFiZWwu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICZzdWJNZW51KTsKKyAgICAgICAgICAgIG1lbnUuYXBwZW5kSXRlbShpdGVtKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENvbnRleHRNZW51QWN0aW9uIHR5cGVkSWQgPSBz
dGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1lbnVJdGVtQmFzZUN1c3RvbVRh
ZyArIGlkLnRvSW50MzIoZXhlYykpOwotICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtKiBtZW51
SXRlbSA9IG5ldyBDb250ZXh0TWVudUl0ZW0oKHR5cGVTdHJpbmcgPT0gImNoZWNrYm94IiA/IENo
ZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlKSwgdHlwZWRJZCwgdXN0cmluZ1RvU3RyaW5n
KGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworICAgICAgICAgICAgQ29udGV4
dE1lbnVJdGVtIG1lbnVJdGVtKCh0eXBlU3RyaW5nID09ICJjaGVja2JveCIgPyBDaGVja2FibGVB
Y3Rpb25UeXBlIDogQWN0aW9uVHlwZSksIHR5cGVkSWQsIHVzdHJpbmdUb1N0cmluZyhsYWJlbC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICAgICAgICAgIGlmICghZW5hYmxlZC5p
c1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgIG1lbnVJdGVtLT5zZXRFbmFibGVkKGVuYWJs
ZWQudG9Cb29sZWFuKCkpOworICAgICAgICAgICAgICAgIG1lbnVJdGVtLnNldEVuYWJsZWQoZW5h
YmxlZC50b0Jvb2xlYW4oKSk7CiAgICAgICAgICAgICBpZiAoIWNoZWNrZWQuaXNVbmRlZmluZWQo
KSkKLSAgICAgICAgICAgICAgICBtZW51SXRlbS0+c2V0Q2hlY2tlZChjaGVja2VkLnRvQm9vbGVh
bigpKTsKLSAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChtZW51SXRlbSk7CisgICAgICAgICAgICAg
ICAgbWVudUl0ZW0uc2V0Q2hlY2tlZChjaGVja2VkLnRvQm9vbGVhbigpKTsKKyAgICAgICAgICAg
IG1lbnUuYXBwZW5kSXRlbShtZW51SXRlbSk7CiAgICAgICAgIH0KICAgICB9Cit9CisjZW5kaWYK
IAorSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyAgICBpZiAoZXhlYy0+
YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
RXZlbnQqIGV2ZW50ID0gdG9FdmVudChleGVjLT5hcmd1bWVudCgwKSk7CisKKyAgICBKU0FycmF5
KiBhcnJheSA9IGFzQXJyYXkoZXhlYy0+YXJndW1lbnQoMSkpOworICAgIENvbnRleHRNZW51IG1l
bnU7CisgICAgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKGV4ZWMsIGFycmF5LCBtZW51KTsKKwor
I2lmICFVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUykKKyAgICBWZWN0b3I8Q29udGV4
dE1lbnVJdGVtPiBpdGVtcyA9IGNvbnRleHRNZW51SXRlbVZlY3RvcihtZW51LnBsYXRmb3JtRGVz
Y3JpcHRpb24oKSk7CisjZWxzZQorICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0ZW1zID0g
bWVudS5pdGVtcygpOworI2VuZGlmCiAgICAgaW1wbCgpLT5zaG93Q29udGV4dE1lbnUoZXZlbnQs
IGl0ZW1zKTsKICNlbmRpZgogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3Rv
ckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggMmU4NzFmOWFiMjZmMTA0OWM0M2UxM2EzOTA4
NGZmMDQyMDM1NmE3OS4uZjhiNWUzNTBkYTU1ZGM1NTQwODQwODNkNDk5OGY4YTYxYjljNmE1YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9y
RnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC02OCw0OCArNjgsNjgg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpwb3J0Q2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
fQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dD
b250ZXh0TWVudUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdm9p
ZCBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXModjg6OkxvY2FsPHY4OjpBcnJheT4mIGl0ZW1BcnJh
eSwgQ29udGV4dE1lbnUmIG1lbnUpCiB7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQotICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGV2ZW50V3JhcHBlciA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKTsKLSAg
ICBpZiAoIVY4TW91c2VFdmVudDo6aW5mby5lcXVhbHMoVjhET01XcmFwcGVyOjpkb21XcmFwcGVy
VHlwZShldmVudFdyYXBwZXIpKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQot
ICAgIEV2ZW50KiBldmVudCA9IFY4RXZlbnQ6OnRvTmF0aXZlKGV2ZW50V3JhcHBlcik7Ci0gICAg
aWYgKCFhcmdzWzFdLT5Jc0FycmF5KCkpCi0gICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
Ci0KLSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+
OjpDYXN0KGFyZ3NbMV0pOwotICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0qPiBpdGVtczsKLQot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPkxlbmd0aCgpOyArK2kpIHsKLSAgICAg
ICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGl0ZW0gPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNh
c3QoYXJyYXktPkdldChpKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpdGVtQXJyYXkt
Pkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGl0ZW0gPSB2
ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoaXRlbUFycmF5LT5HZXQoaSkpOwogICAgICAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiB0eXBlID0gaXRlbS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygidHlw
ZSIpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaWQgPSBpdGVtLT5HZXQodjg6OlN0
cmluZzo6TmV3KCJpZCIpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbGFiZWwgPSBp
dGVtLT5HZXQodjg6OlN0cmluZzo6TmV3KCJsYWJlbCIpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gZW5hYmxlZCA9IGl0ZW0tPkdldCh2ODo6U3RyaW5nOjpOZXcoImVuYWJsZWQiKSk7
CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNoZWNrZWQgPSBpdGVtLT5HZXQodjg6OlN0
cmluZzo6TmV3KCJjaGVja2VkIikpOworICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzdWJJ
dGVtcyA9IGl0ZW0tPkdldCh2ODo6U3RyaW5nOjpOZXcoInN1Ykl0ZW1zIikpOwogICAgICAgICBp
ZiAoIXR5cGUtPklzU3RyaW5nKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU3Ry
aW5nIHR5cGVTdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKHR5cGUpOwogICAg
ICAgICBpZiAodHlwZVN0cmluZyA9PSAic2VwYXJhdG9yIikgewotICAgICAgICAgICAgaXRlbXMu
YXBwZW5kKG5ldyBDb250ZXh0TWVudUl0ZW0oU2VwYXJhdG9yVHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbUN1c3RvbVRhZ05v
QWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nKCkpKTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKENvbnRleHRNZW51SXRl
bShTZXBhcmF0b3JUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4
dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcoKSkpOworICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKGl0ZW0pOworICAg
ICAgICB9IGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInN1Yk1lbnUiICYmIHN1Ykl0ZW1zLT5Jc0Fy
cmF5KCkpIHsKKyAgICAgICAgICAgIENvbnRleHRNZW51IHN1Yk1lbnU7CisgICAgICAgICAgICB2
ODo6TG9jYWw8djg6OkFycmF5PiBzdWJJdGVtc0FycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46
OkNhc3Qoc3ViSXRlbXMpOworICAgICAgICAgICAgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKHN1
Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0o
U3VibWVudVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVu
dUl0ZW1DdXN0b21UYWdOb0FjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobGFiZWwpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJnN1Yk1lbnUpOworICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKGl0
ZW0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ29udGV4dE1lbnVBY3Rpb24gdHlw
ZWRJZCA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihDb250ZXh0TWVudUl0ZW1CYXNl
Q3VzdG9tVGFnICsgaWQtPlRvSW50MzIoKS0+VmFsdWUoKSk7Ci0gICAgICAgICAgICBDb250ZXh0
TWVudUl0ZW0qIG1lbnVJdGVtID0gbmV3IENvbnRleHRNZW51SXRlbSgodHlwZVN0cmluZyA9PSAi
Y2hlY2tib3giID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGUpLCB0eXBlZElkLCB0
b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGxhYmVsKSk7CisgICAgICAgICAgICBDb250ZXh0
TWVudUl0ZW0gbWVudUl0ZW0oKHR5cGVTdHJpbmcgPT0gImNoZWNrYm94IiA/IENoZWNrYWJsZUFj
dGlvblR5cGUgOiBBY3Rpb25UeXBlKSwgdHlwZWRJZCwgdG9XZWJDb3JlU3RyaW5nV2l0aE51bGxD
aGVjayhsYWJlbCkpOwogICAgICAgICAgICAgaWYgKGNoZWNrZWQtPklzQm9vbGVhbigpKQotICAg
ICAgICAgICAgICAgIG1lbnVJdGVtLT5zZXRDaGVja2VkKGNoZWNrZWQtPlRvQm9vbGVhbigpLT5W
YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBtZW51SXRlbS5zZXRDaGVja2VkKGNoZWNrZWQtPlRv
Qm9vbGVhbigpLT5WYWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChlbmFibGVkLT5Jc0Jvb2xlYW4o
KSkKLSAgICAgICAgICAgICAgICBtZW51SXRlbS0+c2V0RW5hYmxlZChlbmFibGVkLT5Ub0Jvb2xl
YW4oKS0+VmFsdWUoKSk7Ci0gICAgICAgICAgICBpdGVtcy5hcHBlbmQobWVudUl0ZW0pOworICAg
ICAgICAgICAgICAgIG1lbnVJdGVtLnNldEVuYWJsZWQoZW5hYmxlZC0+VG9Cb29sZWFuKCktPlZh
bHVlKCkpOworICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKG1lbnVJdGVtKTsKICAgICAgICAg
fQogICAgIH0KK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
eworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmlu
ZWQoKTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBldmVudFdyYXBwZXIgPSB2ODo6TG9j
YWw8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSk7CisgICAgaWYgKCFWOE1vdXNlRXZlbnQ6Omlu
Zm8uZXF1YWxzKFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUoZXZlbnRXcmFwcGVyKSkpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBFdmVudCogZXZlbnQgPSBWOEV2
ZW50Ojp0b05hdGl2ZShldmVudFdyYXBwZXIpOworICAgIGlmICghYXJnc1sxXS0+SXNBcnJheSgp
KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisgICAgdjg6OkxvY2FsPHY4OjpB
cnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2FzdChhcmdzWzFdKTsKKyAgICBD
b250ZXh0TWVudSBtZW51OworICAgIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhhcnJheSwgbWVu
dSk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCA9IFY4SW5zcGVj
dG9yRnJvbnRlbmRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyNpZiAhVVNFKENST1NT
X1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gaXRl
bXMgPSBjb250ZXh0TWVudUl0ZW1WZWN0b3IobWVudS5wbGF0Zm9ybURlc2NyaXB0aW9uKCkpOwor
I2Vsc2UKKyAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBpdGVtcyA9IG1lbnUuaXRlbXMoKTsK
KyNlbmRpZgogICAgIGZyb250ZW5kSG9zdC0+c2hvd0NvbnRleHRNZW51KGV2ZW50LCBpdGVtcyk7
CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCAyY2Y1MGJkMDk5Yzc5MGMy
YmU5NWRiMTU3Y2IzMGM4MjE2YzJmN2FkLi45NjNkOWJhNzVjMzFiNDEyMDlkN2ZmZjcxZmNmY2E0
NDNhMTc2ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRIb3N0LmNwcApAQCAtNjAsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBjbGFzcyBGcm9udGVuZE1lbnVQcm92aWRlciA6IHB1
YmxpYyBDb250ZXh0TWVudVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGcm9udGVuZE1lbnVQcm92aWRlcj4gY3JlYXRlKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJv
bnRlbmRIb3N0LCBTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yLCBjb25zdCBWZWN0b3I8Q29udGV4
dE1lbnVJdGVtKj4mIGl0ZW1zKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZyb250ZW5kTWVudVBy
b3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhvc3QsIFNjcmlw
dE9iamVjdCB3ZWJJbnNwZWN0b3IsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVt
cykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRnJvbnRlbmRNZW51UHJvdmlk
ZXIoZnJvbnRlbmRIb3N0LCB3ZWJJbnNwZWN0b3IsIGl0ZW1zKSk7CiAgICAgfQpAQCAtNzIsNyAr
NzIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToKLSAgICBGcm9udGVuZE1lbnVQ
cm92aWRlcihJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgU2NyaXB0T2JqZWN0
IHdlYkluc3BlY3RvciwgIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0qPiYgaXRlbXMpCisg
ICAgRnJvbnRlbmRNZW51UHJvdmlkZXIoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVuZEhv
c3QsIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0
ZW0+JiBpdGVtcykKICAgICAgICAgOiBtX2Zyb250ZW5kSG9zdChmcm9udGVuZEhvc3QpCiAgICAg
ICAgICwgbV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVjdG9yKQogICAgICAgICAsIG1faXRlbXMoaXRl
bXMpCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBvcHVsYXRl
Q29udGV4dE1lbnUoQ29udGV4dE1lbnUqIG1lbnUpCiAgICAgewogICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1faXRlbXMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtZW51LT5hcHBl
bmRJdGVtKCptX2l0ZW1zW2ldKTsKKyAgICAgICAgICAgIG1lbnUtPmFwcGVuZEl0ZW0obV9pdGVt
c1tpXSk7CiAgICAgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCkBAIC0xMTAsMTMgKzExMCwxMiBAQCBwcml2YXRl
OgogCiAgICAgICAgICAgICBtX2Zyb250ZW5kSG9zdC0+bV9tZW51UHJvdmlkZXIgPSAwOwogICAg
ICAgICB9Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2l0ZW1zKTsKICAgICAgICAgbV9pdGVt
cy5jbGVhcigpOwogICAgIH0KIAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdCogbV9mcm9udGVu
ZEhvc3Q7CiAgICAgU2NyaXB0T2JqZWN0IG1fd2ViSW5zcGVjdG9yOwotICAgIFZlY3RvcjxDb250
ZXh0TWVudUl0ZW0qPiBtX2l0ZW1zOworICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IG1faXRl
bXM7CiB9OwogI2VuZGlmCiAKQEAgLTI1OCw3ICsyNTcsNyBAQCB2b2lkIEluc3BlY3RvckZyb250
ZW5kSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogfQog
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6
c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRl
bSo+JiBpdGVtcykKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUo
RXZlbnQqIGV2ZW50LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiYgaXRlbXMpCiB7CiAg
ICAgQVNTRVJUKG1fZnJvbnRlbmRQYWdlKTsKICAgICBTY3JpcHRTdGF0ZSogZnJvbnRlbmRTY3Jp
cHRTdGF0ZSA9IHNjcmlwdFN0YXRlRnJvbVBhZ2UoZGVidWdnZXJXb3JsZCgpLCBtX2Zyb250ZW5k
UGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LmgKaW5kZXggNDRkNTkzMDgzN2U5ODc3YTQ5ZWFiNjg0YWFjMDA4NWJlMDIzZmZlMy4uNjc0
YTVhMmIzYTBkZTgwZDgzMWVkZjA2ODQ3MzA2MzNiZDM5ZmNlOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaApAQCAtODAsNyArODAsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29udGVudCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBbQ3VzdG9tXSBpbXBsZW1lbnRhdGlv
bnMuCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQqLCBjb25zdCBWZWN0b3I8Q29udGV4
dE1lbnVJdGVtKj4mIGl0ZW1zKTsKKyAgICB2b2lkIHNob3dDb250ZXh0TWVudShFdmVudCosIGNv
bnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcyk7CiAgICAgdm9pZCBzZW5kTWVzc2Fn
ZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAgICAgU3RyaW5nIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiB1cmwpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUNocm9taXVtLmNwcAppbmRl
eCBlNDE1MTM4ZDkyNTQzYzUxOTc5MTFmOGQ5ZDliMmRjOGM2OGM0YTkyLi5hOTI4Y2FkNDU1MWIw
NTYwZDAwNjg0MjE4ZTRjMTdmYTczYjFkYzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUNocm9taXVtLmNwcApAQCAtOTksNCAr
OTksOSBAQCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBDb250ZXh0TWVudTo6cmVsZWFzZVBsYXRm
b3JtRGVzY3JpcHRpb24oKQogICAgIHJldHVybiAwOwogfQogCitWZWN0b3I8Q29udGV4dE1lbnVJ
dGVtPiBjb250ZXh0TWVudUl0ZW1WZWN0b3IoY29uc3QgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24g
bWVudURlc2NyaXB0aW9uKQoreworICAgIHJldHVybiAqbWVudURlc2NyaXB0aW9uOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143538</attachid>
            <date>2012-05-23 05:09:11 -0700</date>
            <delta_ts>2012-05-24 04:56:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86847-20120523160909.patch</filename>
            <type>text/plain</type>
            <size>22304</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YzODEyZWZiZDQzMDJj
ZTA1MmZjNjYxODlmYzRlMDM3NDFkYjc5NS4uZTgyNjU0YjkxNjEwNDQ2NWY3YTY0M2FjZGRmZWU5
NjZiZjA2Y2Q3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA1LTIyICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3VwcG9ydCBoaWVyYXJjaGljYWwgY29udGV4dCBtZW51cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdXNlIG9mIHRo
ZSBXZWJNZW51SXRlbUluZm8gU3ViTWVudSB0eXBlIHRvIGV4cG9zZSB0aGUgY2FwYWJpbGl0eSBv
ZiBidWlsZGluZyBzdWJtZW51IGl0ZW1zCisgICAgICAgIGluIHRoZSBXZWIgSW5zcGVjdG9yJ3Mg
Y29udGV4dCBtZW51LiBDb250ZXh0TWVudUl0ZW1zIGFyZSBhbHNvIHBhc3NlZC9zdG9yZWQgYnkg
cmVmZXJlbmNlL3ZhbHVlIHJhdGhlciB0aGFuIHBvaW50ZXIKKyAgICAgICAgaW4gb3JkZXIgdG8g
YmUgY29uc2lzdGVudCB3aXRoIHRoZSBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiB0eXBlZGVmLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKTogRW5hYmxlIHN1
Ym1lbnUgaXRlbSBwb3B1bGF0aW9uLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KTogRXh0cmFjdCB0
aGUgbWVudSBwb3B1bGF0aW9uIHBhcnQgaW50byBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoKS4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKTogRW5h
YmxlIHN1Ym1lbnUgaXRlbSBwb3B1bGF0aW9uLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51Q2FsbGJh
Y2spOiBFeHRyYWN0IHRoZSBtZW51IHBvcHVsYXRpb24gcGFydCBpbnRvIHBvcHVsYXRlQ29udGV4
dE1lbnVJdGVtcygpLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNyZWF0ZSk6IFVz
ZSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBDb250ZXh0TWVudUl0ZW1zLgorICAg
ICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OkZyb250ZW5kTWVudVByb3ZpZGVy
KTogVXNlIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHBvaW50ZXIgZm9yIENvbnRleHRNZW51SXRlbXMu
CisgICAgICAgIChXZWJDb3JlOjpGcm9udGVuZE1lbnVQcm92aWRlcjo6cG9wdWxhdGVDb250ZXh0
TWVudSk6IFVzZSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBDb250ZXh0TWVudUl0
ZW1zLgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNvbnRleHRNZW51
Q2xlYXJlZCk6CisgICAgICAgIChGcm9udGVuZE1lbnVQcm92aWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudSk6IFVzZSByZWZlcmVu
Y2UgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBDb250ZXh0TWVudUl0ZW1zLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKEluc3BlY3RvckZyb250
ZW5kSG9zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qczog
TW9kaWZpZWQgdG8gc3VwcG9ydCB0aGUgdHJlZS1saWtlIHN0cnVjdHVyZSBvZiBjb250ZXh0IG1l
bnVzLgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtLnByb3RvdHlwZS5nZXQgaWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbS5wcm90b3R5cGUuZ2V0IHR5cGUpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbS5wcm90b3R5cGUudG9Qcm90b2NvbCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90eXBlLmFwcGVuZEl0ZW0pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuYXBwZW5kU3ViTWVu
dUl0ZW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5
cGUuYXBwZW5kQ2hlY2tib3hJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZXh0U3Vi
TWVudUl0ZW0ucHJvdG90eXBlLmFwcGVuZFNlcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29udGV4dFN1Yk1lbnVJdGVtLnByb3RvdHlwZS5yZW1vdmVUcmFpbGluZ1NlcGFyYXRvcnMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUudG9Q
cm90b2NvbCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZS5uZXh0SWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudS5wcm90b3R5cGUuc2V0SGFuZGxlcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBlLnRvUHJvdG9jb2wpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVmVjdG9yKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlKToK
KwogMjAxMi0wNS0yMyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQG5va2lh
LmNvbT4KIAogICAgICAgICBbUXRdIEZsb2F0U2l6ZSBRdCBTdXBwb3J0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1
c3RvbS5jcHAKaW5kZXggZDgxOWRhNDkxYTYwMjUyM2IwOWExZDEwNmY5YzFhNjg0ZmMyZDQ3MS4u
M2M3MTk5NDYxYTdiMzE3NDY1OThlYmQyODI3ODIzNDI2MGFmNWJiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0
Q3VzdG9tLmNwcApAQCAtODUsMTYgKzg1LDkgQEAgSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5k
SG9zdDo6cG9ydChFeGVjU3RhdGUqIGV4ZWNTdGF0ZSkKICAgICByZXR1cm4ganNTdHJpbmcoZXhl
Y1N0YXRlLCBwb3J0KTsKIH0KIAotSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2hv
d0NvbnRleHRNZW51KEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgRXZlbnQqIGV2ZW50ID0gdG9FdmVudChleGVjLT5hcmd1bWVudCgw
KSk7Ci0KLSAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkoZXhlYy0+YXJndW1lbnQoMSkpOwot
ICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0qPiBpdGVtczsKLQorc3RhdGljIHZvaWQgcG9wdWxh
dGVDb250ZXh0TWVudUl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNBcnJheSogYXJyYXksIENvbnRl
eHRNZW51JiBtZW51KQorewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPmxlbmd0
aCgpOyArK2kpIHsKICAgICAgICAgSlNPYmplY3QqIGl0ZW0gPSBhc09iamVjdChhcnJheS0+Z2V0
SW5kZXgoaSkpOwogICAgICAgICBKU1ZhbHVlIGxhYmVsID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgImxhYmVsIikpOwpAQCAtMTAyLDI1ICs5NSw1NCBAQCBKU1ZhbHVlIEpTSW5z
cGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICBKU1ZhbHVlIGlkID0gaXRlbS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImlkIikp
OwogICAgICAgICBKU1ZhbHVlIGVuYWJsZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCAiZW5hYmxlZCIpKTsKICAgICAgICAgSlNWYWx1ZSBjaGVja2VkID0gaXRlbS0+Z2V0KGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgImNoZWNrZWQiKSk7CisgICAgICAgIEpTVmFsdWUgc3ViSXRl
bXMgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAic3ViSXRlbXMiKSk7CiAgICAg
ICAgIGlmICghdHlwZS5pc1N0cmluZygpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgU3RyaW5nIHR5cGVTdHJpbmcgPSB1c3RyaW5nVG9TdHJpbmcodHlwZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOwogICAgICAgICBpZiAodHlwZVN0cmluZyA9PSAic2VwYXJhdG9yIikg
ewotICAgICAgICAgICAgaXRlbXMuYXBwZW5kKG5ldyBDb250ZXh0TWVudUl0ZW0oU2VwYXJhdG9y
VHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRl
eHRNZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRl
bSBpdGVtKFNlcGFyYXRvclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFN0cmluZygpKTsKKyAgICAgICAgICAgIG1lbnUuYXBwZW5kSXRlbShpdGVtKTsK
KyAgICAgICAgfSBlbHNlIGlmICh0eXBlU3RyaW5nID09ICJzdWJNZW51IiAmJiBzdWJJdGVtcy5p
bmhlcml0cygmSlNBcnJheTo6c19pbmZvKSkgeworICAgICAgICAgICAgQ29udGV4dE1lbnUgc3Vi
TWVudTsKKyAgICAgICAgICAgIEpTQXJyYXkqIHN1Ykl0ZW1zQXJyYXkgPSBhc0FycmF5KHN1Ykl0
ZW1zKTsKKyAgICAgICAgICAgIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhleGVjLCBzdWJJdGVt
c0FycmF5LCBzdWJNZW51KTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFN1Ym1l
bnVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVt
Q3VzdG9tVGFnTm9BY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c3Ry
aW5nVG9TdHJpbmcobGFiZWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJNZW51KTsKKyAgICAgICAgICAgIG1lbnUuYXBw
ZW5kSXRlbShpdGVtKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIENvbnRleHRNZW51
QWN0aW9uIHR5cGVkSWQgPSBzdGF0aWNfY2FzdDxDb250ZXh0TWVudUFjdGlvbj4oQ29udGV4dE1l
bnVJdGVtQmFzZUN1c3RvbVRhZyArIGlkLnRvSW50MzIoZXhlYykpOwotICAgICAgICAgICAgQ29u
dGV4dE1lbnVJdGVtKiBtZW51SXRlbSA9IG5ldyBDb250ZXh0TWVudUl0ZW0oKHR5cGVTdHJpbmcg
PT0gImNoZWNrYm94IiA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlKSwgdHlwZWRJ
ZCwgdXN0cmluZ1RvU3RyaW5nKGxhYmVsLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwor
ICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIG1lbnVJdGVtKCh0eXBlU3RyaW5nID09ICJjaGVj
a2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZSksIHR5cGVkSWQsIHVzdHJp
bmdUb1N0cmluZyhsYWJlbC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKICAgICAgICAg
ICAgIGlmICghZW5hYmxlZC5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgICAgIG1lbnVJdGVt
LT5zZXRFbmFibGVkKGVuYWJsZWQudG9Cb29sZWFuKCkpOworICAgICAgICAgICAgICAgIG1lbnVJ
dGVtLnNldEVuYWJsZWQoZW5hYmxlZC50b0Jvb2xlYW4oKSk7CiAgICAgICAgICAgICBpZiAoIWNo
ZWNrZWQuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICBtZW51SXRlbS0+c2V0Q2hlY2tl
ZChjaGVja2VkLnRvQm9vbGVhbigpKTsKLSAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChtZW51SXRl
bSk7CisgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0Q2hlY2tlZChjaGVja2VkLnRvQm9vbGVh
bigpKTsKKyAgICAgICAgICAgIG1lbnUuYXBwZW5kSXRlbShtZW51SXRlbSk7CiAgICAgICAgIH0K
ICAgICB9Cit9CisjZW5kaWYKIAorSlNWYWx1ZSBKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2hv
d0NvbnRleHRNZW51KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgRXZlbnQqIGV2ZW50ID0gdG9FdmVudChleGVjLT5hcmd1bWVudCgw
KSk7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkoZXhlYy0+YXJndW1lbnQoMSkpOwor
ICAgIENvbnRleHRNZW51IG1lbnU7CisgICAgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKGV4ZWMs
IGFycmF5LCBtZW51KTsKKworI2lmICFVU0UoQ1JPU1NfUExBVEZPUk1fQ09OVEVYVF9NRU5VUykK
KyAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBpdGVtcyA9IGNvbnRleHRNZW51SXRlbVZlY3Rv
cihtZW51LnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CisjZWxzZQorICAgIFZlY3RvcjxDb250ZXh0
TWVudUl0ZW0+IGl0ZW1zID0gbWVudS5pdGVtcygpOworI2VuZGlmCiAgICAgaW1wbCgpLT5zaG93
Q29udGV4dE1lbnUoZXZlbnQsIGl0ZW1zKTsKICNlbmRpZgogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5z
cGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKaW5kZXggMmU4NzFmOWFi
MjZmMTA0OWM0M2UxM2EzOTA4NGZmMDQyMDM1NmE3OS4uZjhiNWUzNTBkYTU1ZGM1NTQwODQwODNk
NDk5OGY4YTYxYjljNmE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
CkBAIC02OCw0OCArNjgsNjggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Ojpwb3J0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICByZXR1cm4g
djg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCitzdGF0aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXModjg6OkxvY2FsPHY4
OjpBcnJheT4mIGl0ZW1BcnJheSwgQ29udGV4dE1lbnUmIG1lbnUpCiB7Ci0gICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAyKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAgdjg6
OkxvY2FsPHY4OjpPYmplY3Q+IGV2ZW50V3JhcHBlciA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzBdKTsKLSAgICBpZiAoIVY4TW91c2VFdmVudDo6aW5mby5lcXVhbHMoVjhET01X
cmFwcGVyOjpkb21XcmFwcGVyVHlwZShldmVudFdyYXBwZXIpKSkKLSAgICAgICAgcmV0dXJuIHY4
OjpVbmRlZmluZWQoKTsKLQotICAgIEV2ZW50KiBldmVudCA9IFY4RXZlbnQ6OnRvTmF0aXZlKGV2
ZW50V3JhcHBlcik7Ci0gICAgaWYgKCFhcmdzWzFdLT5Jc0FycmF5KCkpCi0gICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBhcnJheSA9IHY4
OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KGFyZ3NbMV0pOwotICAgIFZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0qPiBpdGVtczsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJyYXktPkxlbmd0
aCgpOyArK2kpIHsKLSAgICAgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGl0ZW0gPSB2ODo6TG9j
YWw8djg6Ok9iamVjdD46OkNhc3QoYXJyYXktPkdldChpKSk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpdGVtQXJyYXktPkxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgdjg6OkxvY2FsPHY4
OjpPYmplY3Q+IGl0ZW0gPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoaXRlbUFycmF5LT5H
ZXQoaSkpOwogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB0eXBlID0gaXRlbS0+R2V0KHY4
OjpTdHJpbmc6Ok5ldygidHlwZSIpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gaWQg
PSBpdGVtLT5HZXQodjg6OlN0cmluZzo6TmV3KCJpZCIpKTsKICAgICAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gbGFiZWwgPSBpdGVtLT5HZXQodjg6OlN0cmluZzo6TmV3KCJsYWJlbCIpKTsKICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZW5hYmxlZCA9IGl0ZW0tPkdldCh2ODo6U3RyaW5n
OjpOZXcoImVuYWJsZWQiKSk7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGNoZWNrZWQg
PSBpdGVtLT5HZXQodjg6OlN0cmluZzo6TmV3KCJjaGVja2VkIikpOworICAgICAgICB2ODo6TG9j
YWw8djg6OlZhbHVlPiBzdWJJdGVtcyA9IGl0ZW0tPkdldCh2ODo6U3RyaW5nOjpOZXcoInN1Ykl0
ZW1zIikpOwogICAgICAgICBpZiAoIXR5cGUtPklzU3RyaW5nKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgU3RyaW5nIHR5cGVTdHJpbmcgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVs
bENoZWNrKHR5cGUpOwogICAgICAgICBpZiAodHlwZVN0cmluZyA9PSAic2VwYXJhdG9yIikgewot
ICAgICAgICAgICAgaXRlbXMuYXBwZW5kKG5ldyBDb250ZXh0TWVudUl0ZW0oU2VwYXJhdG9yVHlw
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRN
ZW51SXRlbUN1c3RvbVRhZ05vQWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBp
dGVtKENvbnRleHRNZW51SXRlbShTZXBhcmF0b3JUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rpb24sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcoKSkpOworICAgICAgICAgICAgbWVudS5hcHBl
bmRJdGVtKGl0ZW0pOworICAgICAgICB9IGVsc2UgaWYgKHR5cGVTdHJpbmcgPT0gInN1Yk1lbnUi
ICYmIHN1Ykl0ZW1zLT5Jc0FycmF5KCkpIHsKKyAgICAgICAgICAgIENvbnRleHRNZW51IHN1Yk1l
bnU7CisgICAgICAgICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBzdWJJdGVtc0FycmF5ID0gdjg6
OkxvY2FsPHY4OjpBcnJheT46OkNhc3Qoc3ViSXRlbXMpOworICAgICAgICAgICAgcG9wdWxhdGVD
b250ZXh0TWVudUl0ZW1zKHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOworICAgICAgICAgICAgQ29u
dGV4dE1lbnVJdGVtIGl0ZW0oU3VibWVudVR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobGFiZWwpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1Yk1lbnUpOworICAgICAgICAgICAg
bWVudS5hcHBlbmRJdGVtKGl0ZW0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ29u
dGV4dE1lbnVBY3Rpb24gdHlwZWRJZCA9IHN0YXRpY19jYXN0PENvbnRleHRNZW51QWN0aW9uPihD
b250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnICsgaWQtPlRvSW50MzIoKS0+VmFsdWUoKSk7Ci0g
ICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0qIG1lbnVJdGVtID0gbmV3IENvbnRleHRNZW51SXRl
bSgodHlwZVN0cmluZyA9PSAiY2hlY2tib3giID8gQ2hlY2thYmxlQWN0aW9uVHlwZSA6IEFjdGlv
blR5cGUpLCB0eXBlZElkLCB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGxhYmVsKSk7Cisg
ICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gbWVudUl0ZW0oKHR5cGVTdHJpbmcgPT0gImNoZWNr
Ym94IiA/IENoZWNrYWJsZUFjdGlvblR5cGUgOiBBY3Rpb25UeXBlKSwgdHlwZWRJZCwgdG9XZWJD
b3JlU3RyaW5nV2l0aE51bGxDaGVjayhsYWJlbCkpOwogICAgICAgICAgICAgaWYgKGNoZWNrZWQt
PklzQm9vbGVhbigpKQotICAgICAgICAgICAgICAgIG1lbnVJdGVtLT5zZXRDaGVja2VkKGNoZWNr
ZWQtPlRvQm9vbGVhbigpLT5WYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBtZW51SXRlbS5zZXRD
aGVja2VkKGNoZWNrZWQtPlRvQm9vbGVhbigpLT5WYWx1ZSgpKTsKICAgICAgICAgICAgIGlmIChl
bmFibGVkLT5Jc0Jvb2xlYW4oKSkKLSAgICAgICAgICAgICAgICBtZW51SXRlbS0+c2V0RW5hYmxl
ZChlbmFibGVkLT5Ub0Jvb2xlYW4oKS0+VmFsdWUoKSk7Ci0gICAgICAgICAgICBpdGVtcy5hcHBl
bmQobWVudUl0ZW0pOworICAgICAgICAgICAgICAgIG1lbnVJdGVtLnNldEVuYWJsZWQoZW5hYmxl
ZC0+VG9Cb29sZWFuKCktPlZhbHVlKCkpOworICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKG1l
bnVJdGVtKTsKICAgICAgICAgfQogICAgIH0KK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKKyAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBldmVu
dFdyYXBwZXIgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSk7CisgICAgaWYg
KCFWOE1vdXNlRXZlbnQ6OmluZm8uZXF1YWxzKFY4RE9NV3JhcHBlcjo6ZG9tV3JhcHBlclR5cGUo
ZXZlbnRXcmFwcGVyKSkpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICBF
dmVudCogZXZlbnQgPSBWOEV2ZW50Ojp0b05hdGl2ZShldmVudFdyYXBwZXIpOworICAgIGlmICgh
YXJnc1sxXS0+SXNBcnJheSgpKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworCisg
ICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gYXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2Fz
dChhcmdzWzFdKTsKKyAgICBDb250ZXh0TWVudSBtZW51OworICAgIHBvcHVsYXRlQ29udGV4dE1l
bnVJdGVtcyhhcnJheSwgbWVudSk7CiAKICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250
ZW5kSG9zdCA9IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKKyNpZiAhVVNFKENST1NTX1BMQVRGT1JNX0NPTlRFWFRfTUVOVVMpCisgICAgVmVjdG9yPENv
bnRleHRNZW51SXRlbT4gaXRlbXMgPSBjb250ZXh0TWVudUl0ZW1WZWN0b3IobWVudS5wbGF0Zm9y
bURlc2NyaXB0aW9uKCkpOworI2Vsc2UKKyAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBpdGVt
cyA9IG1lbnUuaXRlbXMoKTsKKyNlbmRpZgogICAgIGZyb250ZW5kSG9zdC0+c2hvd0NvbnRleHRN
ZW51KGV2ZW50LCBpdGVtcyk7CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRl
eCAyY2Y1MGJkMDk5Yzc5MGMyYmU5NWRiMTU3Y2IzMGM4MjE2YzJmN2FkLi45NjNkOWJhNzVjMzFi
NDEyMDlkN2ZmZjcxZmNmY2E0NDNhMTc2ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAtNjAsNyArNjAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiBjbGFzcyBGcm9udGVu
ZE1lbnVQcm92aWRlciA6IHB1YmxpYyBDb250ZXh0TWVudVByb3ZpZGVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxGcm9udGVuZE1lbnVQcm92aWRlcj4gY3JlYXRlKEluc3BlY3Rv
ckZyb250ZW5kSG9zdCogZnJvbnRlbmRIb3N0LCBTY3JpcHRPYmplY3Qgd2ViSW5zcGVjdG9yLCBj
b25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtKj4mIGl0ZW1zKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEZyb250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBm
cm9udGVuZEhvc3QsIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IsIGNvbnN0IFZlY3RvcjxDb250
ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
RnJvbnRlbmRNZW51UHJvdmlkZXIoZnJvbnRlbmRIb3N0LCB3ZWJJbnNwZWN0b3IsIGl0ZW1zKSk7
CiAgICAgfQpAQCAtNzIsNyArNzIsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogcHJpdmF0ZToK
LSAgICBGcm9udGVuZE1lbnVQcm92aWRlcihJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5k
SG9zdCwgU2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvciwgIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0qPiYgaXRlbXMpCisgICAgRnJvbnRlbmRNZW51UHJvdmlkZXIoSW5zcGVjdG9yRnJvbnRl
bmRIb3N0KiBmcm9udGVuZEhvc3QsIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IsIGNvbnN0IFZl
Y3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKICAgICAgICAgOiBtX2Zyb250ZW5kSG9zdChm
cm9udGVuZEhvc3QpCiAgICAgICAgICwgbV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVjdG9yKQogICAg
ICAgICAsIG1faXRlbXMoaXRlbXMpCkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnUoQ29udGV4dE1lbnUqIG1lbnUpCiAgICAgewog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1faXRlbXMuc2l6ZSgpOyArK2kpCi0gICAg
ICAgICAgICBtZW51LT5hcHBlbmRJdGVtKCptX2l0ZW1zW2ldKTsKKyAgICAgICAgICAgIG1lbnUt
PmFwcGVuZEl0ZW0obV9pdGVtc1tpXSk7CiAgICAgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBj
b250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCkBAIC0xMTAsMTMg
KzExMCwxMiBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICBtX2Zyb250ZW5kSG9zdC0+bV9tZW51
UHJvdmlkZXIgPSAwOwogICAgICAgICB9Ci0gICAgICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2l0ZW1z
KTsKICAgICAgICAgbV9pdGVtcy5jbGVhcigpOwogICAgIH0KIAogICAgIEluc3BlY3RvckZyb250
ZW5kSG9zdCogbV9mcm9udGVuZEhvc3Q7CiAgICAgU2NyaXB0T2JqZWN0IG1fd2ViSW5zcGVjdG9y
OwotICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0qPiBtX2l0ZW1zOworICAgIFZlY3RvcjxDb250
ZXh0TWVudUl0ZW0+IG1faXRlbXM7CiB9OwogI2VuZGlmCiAKQEAgLTI1OCw3ICsyNTcsNyBAQCB2
b2lkIEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi12b2lkIEluc3Bl
Y3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KEV2ZW50KiBldmVudCwgY29uc3QgVmVj
dG9yPENvbnRleHRNZW51SXRlbSo+JiBpdGVtcykKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpzaG93Q29udGV4dE1lbnUoRXZlbnQqIGV2ZW50LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJ
dGVtPiYgaXRlbXMpCiB7CiAgICAgQVNTRVJUKG1fZnJvbnRlbmRQYWdlKTsKICAgICBTY3JpcHRT
dGF0ZSogZnJvbnRlbmRTY3JpcHRTdGF0ZSA9IHNjcmlwdFN0YXRlRnJvbVBhZ2UoZGVidWdnZXJX
b3JsZCgpLCBtX2Zyb250ZW5kUGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKaW5kZXggNDRkNTkzMDgzN2U5ODc3YTQ5ZWFiNjg0YWFj
MDA4NWJlMDIzZmZlMy4uNjc0YTVhMmIzYTBkZTgwZDgzMWVkZjA2ODQ3MzA2MzNiZDM5ZmNlOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9z
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aApAQCAtODAsNyArODAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmQoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29udGVudCk7CiAKICAgICAvLyBDYWxsZWQgZnJvbSBbQ3Vz
dG9tXSBpbXBsZW1lbnRhdGlvbnMuCi0gICAgdm9pZCBzaG93Q29udGV4dE1lbnUoRXZlbnQqLCBj
b25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtKj4mIGl0ZW1zKTsKKyAgICB2b2lkIHNob3dDb250
ZXh0TWVudShFdmVudCosIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcyk7CiAg
ICAgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwogCiAg
ICAgU3RyaW5nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiB1cmwpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVu
dS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29udGV4dE1lbnUuanMK
aW5kZXggYWZiZDQzZmQ3M2Y3Y2IwYmExYTcxNzkzZDI1ZDY0NzU2MjI1ZmRkOC4uMjU5YTA4MWU5
ZDlmMGY3YWM1MWE0ZjQwNDMxMTU4OTE5ZmRkYzhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzCkBAIC0zMCwzNCArMzAsNzcgQEAK
IAogLyoqCiAgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnRleHRT
dWJNZW51SXRlbX0gdG9wTGV2ZWxNZW51CisgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQorICogQHBh
cmFtIHtzdHJpbmc9fSBsYWJlbAorICogQHBhcmFtIHtib29sZWFuPX0gZGlzYWJsZWQKKyAqIEBw
YXJhbSB7Ym9vbGVhbj19IGNoZWNrZWQKICAqLwotV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51ID0g
ZnVuY3Rpb24oKSB7Ci0gICAgdGhpcy5faXRlbXMgPSBbXTsKLSAgICB0aGlzLl9oYW5kbGVycyA9
IHt9OworV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSA9IGZ1bmN0aW9uKHRvcExldmVsTWVu
dSwgdHlwZSwgbGFiZWwsIGRpc2FibGVkLCBjaGVja2VkKQoreworICAgIHRoaXMuX3R5cGUgPSB0
eXBlOworICAgIHRoaXMuX2xhYmVsID0gbGFiZWw7CisgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNh
YmxlZDsKKyAgICB0aGlzLl9jaGVja2VkID0gY2hlY2tlZDsKKyAgICB0aGlzLl90b3BMZXZlbE1l
bnUgPSB0b3BMZXZlbE1lbnU7CisgICAgaWYgKHR5cGUgPT09ICJpdGVtIiB8fCB0eXBlID09PSAi
Y2hlY2tib3giKQorICAgICAgICB0aGlzLl9pZCA9IHRvcExldmVsTWVudS5uZXh0SWQoKTsKIH0K
IAotV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsKLSAgICBzaG93OiBmdW5j
dGlvbihldmVudCkKK1dlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0ucHJvdG90eXBlID0gewor
ICAgIGdldCBpZCgpCiAgICAgewotICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgc2VwYXJhdG9y
LgotICAgICAgICB3aGlsZSAodGhpcy5faXRlbXMubGVuZ3RoID4gMCAmJiAhKCJpZCIgaW4gdGhp
cy5faXRlbXNbdGhpcy5faXRlbXMubGVuZ3RoIC0gMV0pKQotICAgICAgICAgICAgdGhpcy5faXRl
bXMuc3BsaWNlKHRoaXMuX2l0ZW1zLmxlbmd0aCAtIDEsIDEpOworICAgICAgICByZXR1cm4gdGhp
cy5faWQ7CisgICAgfSwKIAotICAgICAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51ID0gdGhpczsKLSAgICAgICAgICAgIElu
c3BlY3RvckZyb250ZW5kSG9zdC5zaG93Q29udGV4dE1lbnUoZXZlbnQsIHRoaXMuX2l0ZW1zKTsK
LSAgICAgICAgfQotICAgICAgICBldmVudC5jb25zdW1lKCk7CisgICAgZ2V0IHR5cGUoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CiAgICAgfSwKIAorICAgIHRvUHJvdG9jb2w6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcy5fdHlwZSkgeworICAgICAg
ICBjYXNlICJpdGVtIjoKKyAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJpdGVtIiwgaWQ6IHRo
aXMuX2lkLCBsYWJlbDogdGhpcy5fbGFiZWwsIGVuYWJsZWQ6ICF0aGlzLl9kaXNhYmxlZCB9Owor
ICAgICAgICBjYXNlICJzZXBhcmF0b3IiOgorICAgICAgICAgICAgcmV0dXJuIHsgdHlwZTogInNl
cGFyYXRvciIgfTsKKyAgICAgICAgY2FzZSAiY2hlY2tib3giOgorICAgICAgICAgICAgcmV0dXJu
IHsgdHlwZTogImNoZWNrYm94IiwgaWQ6IHRoaXMuX2lkLCBsYWJlbDogdGhpcy5fbGFiZWwsIGNo
ZWNrZWQ6ICEhdGhpcy5fY2hlY2tlZCwgZW5hYmxlZDogIXRoaXMuX2Rpc2FibGVkIH07CisgICAg
ICAgIH0KKyAgICB9Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbX0KKyAqIEBwYXJhbSB0b3BMZXZlbE1lbnUKKyAqIEBw
YXJhbSB7c3RyaW5nPX0gbGFiZWwKKyAqIEBwYXJhbSB7Ym9vbGVhbj19IGRpc2FibGVkCisgKi8K
K1dlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0gPSBmdW5jdGlvbih0b3BMZXZlbE1lbnUs
IGxhYmVsLCBkaXNhYmxlZCkKK3sKKyAgICBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtLmNh
bGwodGhpcywgdG9wTGV2ZWxNZW51LCAic3ViTWVudSIsIGxhYmVsLCBkaXNhYmxlZCk7CisgICAg
dGhpcy5faXRlbXMgPSBbXTsKK30KKworV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5w
cm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtib29sZWFuPX0gZGlzYWJsZWQK
ICAgICAgKi8KICAgICBhcHBlbmRJdGVtOiBmdW5jdGlvbihsYWJlbCwgaGFuZGxlciwgZGlzYWJs
ZWQpCiAgICAgewotICAgICAgICB2YXIgaWQgPSB0aGlzLl9pdGVtcy5sZW5ndGg7Ci0gICAgICAg
IHRoaXMuX2l0ZW1zLnB1c2goe3R5cGU6ICJpdGVtIiwgaWQ6IGlkLCBsYWJlbDogbGFiZWwsIGVu
YWJsZWQ6ICFkaXNhYmxlZH0pOwotICAgICAgICB0aGlzLl9oYW5kbGVyc1tpZF0gPSBoYW5kbGVy
OworICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRo
aXMuX3RvcExldmVsTWVudSwgIml0ZW0iLCBsYWJlbCwgZGlzYWJsZWQpOworICAgICAgICB0aGlz
Ll9pdGVtcy5wdXNoKGl0ZW0pOworICAgICAgICB0aGlzLl90b3BMZXZlbE1lbnUuc2V0SGFuZGxl
cihpdGVtLmlkLCBoYW5kbGVyKTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfSwKKworICAg
IGFwcGVuZFN1Yk1lbnVJdGVtOiBmdW5jdGlvbihsYWJlbCwgZGlzYWJsZWQpCisgICAgeworICAg
ICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtKHRoaXMu
X3RvcExldmVsTWVudSwgbGFiZWwsIGRpc2FibGVkKTsKKyAgICAgICAgdGhpcy5faXRlbXMucHVz
aChpdGVtKTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNjUs
MTkgKzEwOCwyMiBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIGFwcGVuZENoZWNrYm94SXRlbTogZnVuY3Rpb24obGFiZWwsIGhhbmRsZXIsIGNo
ZWNrZWQsIGRpc2FibGVkKQogICAgIHsKLSAgICAgICAgdmFyIGlkID0gdGhpcy5faXRlbXMubGVu
Z3RoOwotICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKHt0eXBlOiAiY2hlY2tib3giLCBpZDogaWQs
IGxhYmVsOiBsYWJlbCwgY2hlY2tlZDogISFjaGVja2VkLCBlbmFibGVkOiAhZGlzYWJsZWR9KTsK
LSAgICAgICAgdGhpcy5faGFuZGxlcnNbaWRdID0gaGFuZGxlcjsKKyAgICAgICAgdmFyIGl0ZW0g
PSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSh0aGlzLl90b3BMZXZlbE1lbnUsICJj
aGVja2JveCIsIGxhYmVsLCBkaXNhYmxlZCwgY2hlY2tlZCk7CisgICAgICAgIHRoaXMuX2l0ZW1z
LnB1c2goaXRlbSk7CisgICAgICAgIHRoaXMuX3RvcExldmVsTWVudS5zZXRIYW5kbGVyKGl0ZW0u
aWQsIGhhbmRsZXIpOworICAgICAgICByZXR1cm4gaXRlbTsKICAgICB9LAogCiAgICAgYXBwZW5k
U2VwYXJhdG9yOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBObyBzZXBhcmF0b3IgZHVw
ZXMgYWxsb3dlZC4KICAgICAgICAgaWYgKHRoaXMuX2l0ZW1zLmxlbmd0aCA9PT0gMCkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCEoImlkIiBpbiB0aGlzLl9pdGVtc1t0aGlzLl9p
dGVtcy5sZW5ndGggLSAxXSkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2l0
ZW1zLnB1c2goe3R5cGU6ICJzZXBhcmF0b3IifSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICAgICAgaWYgKHRoaXMuX2l0ZW1zW3RoaXMuX2l0ZW1zLmxlbmd0aCAtIDFdLnR5cGUgPT09
ICJzZXBhcmF0b3IiKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHZhciBpdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fdG9wTGV2ZWxNZW51LCAi
c2VwYXJhdG9yIik7CisgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRlbSk7CisgICAgICAgIHJl
dHVybiBpdGVtOwogICAgIH0sCiAKICAgICAvKioKQEAgLTg4LDYgKzEzNCw2NiBAQCBXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gIXRoaXMuX2l0
ZW1zLmxlbmd0aDsKICAgICB9LAogCisgICAgcmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3JzOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB3aGlsZSAodGhpcy5faXRlbXMubGVuZ3RoID4gMCAmJiB0
aGlzLl9pdGVtc1t0aGlzLl9pdGVtcy5sZW5ndGggLSAxXS50eXBlID09PSAic2VwYXJhdG9yIikK
KyAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnNwbGljZSh0aGlzLl9pdGVtcy5sZW5ndGggLSAxLCAx
KTsKKyAgICB9LAorCisgICAgdG9Qcm90b2NvbDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5yZW1vdmVUcmFpbGluZ1NlcGFyYXRvcnMoKTsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHsg
dHlwZTogInN1Yk1lbnUiLCBsYWJlbDogdGhpcy5fbGFiZWwsIGVuYWJsZWQ6ICF0aGlzLl9kaXNh
YmxlZCwgc3ViSXRlbXM6IFtdIH07CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5f
aXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQuc3ViSXRlbXMucHVzaCh0aGlz
Ll9pdGVtc1tpXS50b1Byb3RvY29sKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
K30KKworV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbS5wcm90b3R5cGU7CisKKy8qKgorICogQGNv
bnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbX0K
KyAqLworV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51ID0gZnVuY3Rpb24oKSB7CisgICAgV2ViSW5z
cGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5jYWxsKHRoaXMsIHRoaXMsICIiKTsKKyAgICB0aGlz
Ll9oYW5kbGVycyA9IHt9OworICAgIHRoaXMuX2lkID0gMDsKK30KKworV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51LnByb3RvdHlwZSA9IHsKKyAgICBuZXh0SWQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9pZCsrOworICAgIH0sCisKKyAgICBzaG93OiBmdW5jdGlvbihl
dmVudCkKKyAgICB7CisgICAgICAgIHZhciBtZW51T2JqZWN0ID0gdGhpcy50b1Byb3RvY29sKCk7
CisKKyAgICAgICAgaWYgKG1lbnVPYmplY3QubGVuZ3RoKSB7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuX2NvbnRleHRNZW51ID0gdGhpczsKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5zaG93Q29udGV4dE1lbnUoZXZlbnQsIG1lbnVPYmplY3QpOworICAgICAgICB9CisgICAg
ICAgIGV2ZW50LmNvbnN1bWUoKTsKKyAgICB9LAorCisgICAgc2V0SGFuZGxlcjogZnVuY3Rpb24o
aWQsIGhhbmRsZXIpCisgICAgeworICAgICAgICBpZiAoaGFuZGxlcikKKyAgICAgICAgICAgIHRo
aXMuX2hhbmRsZXJzW2lkXSA9IGhhbmRsZXI7CisgICAgfSwKKworICAgIHRvUHJvdG9jb2w6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVtb3ZlVHJhaWxpbmdTZXBhcmF0b3JzKCk7
CisgICAgICAgIHZhciByZXN1bHQgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9pdGVtcy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX2l0
ZW1zW2ldLnRvUHJvdG9jb2woKSk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSwKKwog
ICAgIF9pdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X2hhbmRsZXJzW2lkXSkKQEAgLTEwOCw2ICsyMTQsOCBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1l
bnUucHJvdG90eXBlID0gewogICAgIH0KIH0KIAorV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtLnByb3Rv
dHlwZTsKKwogLyoqCiAgKiBAaW50ZXJmYWNlCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVDaHJvbWl1bS5jcHAKaW5kZXggZTQx
NTEzOGQ5MjU0M2M1MTk3OTExZjhkOWQ5YjJkYzhjNjhjNGE5Mi4uYTkyOGNhZDQ1NTFiMDU2MGQw
MDY4NDIxOGU0YzE3ZmE3M2IxZGMyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vQ29udGV4dE1lbnVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vQ29udGV4dE1lbnVDaHJvbWl1bS5jcHAKQEAgLTk5LDQgKzk5LDkg
QEAgUGxhdGZvcm1NZW51RGVzY3JpcHRpb24gQ29udGV4dE1lbnU6OnJlbGVhc2VQbGF0Zm9ybURl
c2NyaXB0aW9uKCkKICAgICByZXR1cm4gMDsKIH0KIAorVmVjdG9yPENvbnRleHRNZW51SXRlbT4g
Y29udGV4dE1lbnVJdGVtVmVjdG9yKGNvbnN0IFBsYXRmb3JtTWVudURlc2NyaXB0aW9uIG1lbnVE
ZXNjcmlwdGlvbikKK3sKKyAgICByZXR1cm4gKm1lbnVEZXNjcmlwdGlvbjsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143788</attachid>
            <date>2012-05-24 04:56:31 -0700</date>
            <delta_ts>2012-05-24 07:13:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-86847-20120524155629.patch</filename>
            <type>text/plain</type>
            <size>37347</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTZkNTNjNTY5MDQxODll
OWY2ODJkZWZjOGY4MmY1OWIyMWM0OTQyZS4uY2MwMWJhNzU2YzkwODdlNzM2OGRlNGZiMjNlNDQ0
M2M5OWQ5YThmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA1LTI0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogU3VwcG9ydCBoaWVyYXJjaGljYWwgY29udGV4dCBtZW51cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY4NDcKKworICAgICAgICBSZXZpZXdl
ZCBieSBQYXZlbCBGZWxkbWFuLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgdXNlIG9mIHRo
ZSBXZWJNZW51SXRlbUluZm8gU3ViTWVudSB0eXBlIHRvIGV4cG9zZSB0aGUgY2FwYWJpbGl0eSBv
ZiBidWlsZGluZyBzdWJtZW51IGl0ZW1zCisgICAgICAgIGluIHRoZSBXZWIgSW5zcGVjdG9yJ3Mg
Y29udGV4dCBtZW51LiBDb250ZXh0TWVudUl0ZW1zIGFyZSBhbHNvIHBhc3NlZC9zdG9yZWQgYnkg
cmVmZXJlbmNlL3ZhbHVlIHJhdGhlciB0aGFuIHBvaW50ZXIKKyAgICAgICAgaW4gb3JkZXIgdG8g
YmUgY29uc2lzdGVudCB3aXRoIHRoZSBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiB0eXBlZGVmLgor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKTogRW5hYmxlIHN1
Ym1lbnUgaXRlbSBwb3B1bGF0aW9uLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0luc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51KTogRXh0cmFjdCB0
aGUgbWVudSBwb3B1bGF0aW9uIHBhcnQgaW50byBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoKS4K
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKTogRW5h
YmxlIHN1Ym1lbnUgaXRlbSBwb3B1bGF0aW9uLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRleHRNZW51Q2FsbGJh
Y2spOiBFeHRyYWN0IHRoZSBtZW51IHBvcHVsYXRpb24gcGFydCBpbnRvIHBvcHVsYXRlQ29udGV4
dE1lbnVJdGVtcygpLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNyZWF0ZSk6IFVz
ZSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBDb250ZXh0TWVudUl0ZW1zLgorICAg
ICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OkZyb250ZW5kTWVudVByb3ZpZGVy
KTogVXNlIHJlZmVyZW5jZSBpbnN0ZWFkIG9mIHBvaW50ZXIgZm9yIENvbnRleHRNZW51SXRlbXMu
CisgICAgICAgIChXZWJDb3JlOjpGcm9udGVuZE1lbnVQcm92aWRlcjo6cG9wdWxhdGVDb250ZXh0
TWVudSk6IFVzZSByZWZlcmVuY2UgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBDb250ZXh0TWVudUl0
ZW1zLgorICAgICAgICAoV2ViQ29yZTo6RnJvbnRlbmRNZW51UHJvdmlkZXI6OmNvbnRleHRNZW51
Q2xlYXJlZCk6CisgICAgICAgIChGcm9udGVuZE1lbnVQcm92aWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudSk6IFVzZSByZWZlcmVu
Y2UgaW5zdGVhZCBvZiBwb2ludGVyIGZvciBDb250ZXh0TWVudUl0ZW1zLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaDoKKyAgICAgICAgKEluc3BlY3RvckZyb250
ZW5kSG9zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qczog
U3VwcG9ydCB0aGUgdHJlZS1saWtlIHN0cnVjdHVyZSBvZiBjb250ZXh0IG1lbnVzLgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29udGV4dE1lbnVJdGVtLnByb3RvdHlwZS5pZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29u
dGV4dE1lbnVJdGVtLnByb3RvdHlwZS50eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250
ZXh0TWVudUl0ZW0ucHJvdG90eXBlLl9idWlsZERlc2NyaXB0b3IpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4
dFN1Yk1lbnVJdGVtLnByb3RvdHlwZS5hcHBlbmRJdGVtKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90eXBlLmFwcGVuZFN1Yk1lbnVJdGVtKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90eXBlLmFwcGVuZENoZWNr
Ym94SXRlbSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtLnByb3Rv
dHlwZS5hcHBlbmRTZXBhcmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJN
ZW51SXRlbS5wcm90b3R5cGUuX2J1aWxkRGVzY3JpcHRvcik6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3Rv
dHlwZS5uZXh0SWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlw
ZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5wcm90b3R5cGUuX3Nl
dEhhbmRsZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZS5f
YnVpbGREZXNjcmlwdG9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250
ZXh0TWVudS5qczoKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuU29mdENvbnRleHRNZW51KTogU3Vw
cG9ydCBzdWItbWVudXMuCisgICAgICAgICguV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5w
cm90b3R5cGUuc2hvdyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5w
cm90b3R5cGUuX3BhcmVudEdsYXNzUGFuZUVsZW1lbnQpOgorICAgICAgICAoLldlYkluc3BlY3Rv
ci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90eXBlLl9jcmVhdGVNZW51SXRlbSk6CisgICAgICAgICgu
V2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUuX2NyZWF0ZVN1Yk1lbnUpOgor
ICAgICAgICAoLldlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90eXBlLl9jcmVhdGVT
ZXBhcmF0b3IpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90
eXBlLl9tZW51SXRlbU1vdXNlVXApOgorICAgICAgICAoLldlYkluc3BlY3Rvci5Tb2Z0Q29udGV4
dE1lbnUucHJvdG90eXBlLl9mb2N1cyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLlNvZnRDb250
ZXh0TWVudS5wcm90b3R5cGUuX3RyaWdnZXJBY3Rpb24pOgorICAgICAgICAoLldlYkluc3BlY3Rv
ci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90eXBlLl9zaG93U3ViTWVudSk6CisgICAgICAgICguV2Vi
SW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUuX2J1aWxkTW91c2VFdmVudEZvclN1
Yk1lbnUpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90eXBl
Ll9oaWRlU3ViTWVudSk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5w
cm90b3R5cGUuX21lbnVJdGVtTW91c2VPdXQpOgorICAgICAgICAoLldlYkluc3BlY3Rvci5Tb2Z0
Q29udGV4dE1lbnUucHJvdG90eXBlLl9oaWdobGlnaHRNZW51SXRlbSk6CisgICAgICAgICguV2Vi
SW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUuX21lbnVLZXlEb3duKToKKyAgICAg
ICAgKC5XZWJJbnNwZWN0b3IuU29mdENvbnRleHRNZW51LnByb3RvdHlwZS5fZ2xhc3NQYW5lTW91
c2VVcCk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUu
X2Rpc2NhcmRNZW51KToKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuU29mdENvbnRleHRNZW51LnBy
b3RvdHlwZS5fZGlzY2FyZFN1Yk1lbnVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5jc3M6IFN1cHBvcnQgZm9yIHN1Yi1tZW51cywgc2VwYXJhdG9yIGltcHJvdmVt
ZW50LgorICAgICAgICAoLnNvZnQtY29udGV4dC1tZW51LXNlcGFyYXRvcik6CisgICAgICAgICgu
c29mdC1jb250ZXh0LW1lbnUtc2VwYXJhdG9yID4gLnNlcGFyYXRvci1saW5lKToKKyAgICAgICAg
KC5zb2Z0LWNvbnRleHQtbWVudS1pdGVtLXN1Ym1lbnUtYXJyb3cpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y29udGV4dE1lbnVJdGVtVmVjdG9yKTogSW1wbGVtZW50ZWQuCisgICAgICAgIChXZWJDb3JlKToK
KwogMjAxMi0wNS0xNyAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IGFkZCBpbnNwZWN0b3IgaW5zdHJ1bWVudGF0aW9uIGludGVy
ZmFjZSBmb3IgY29tcG9zaXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCBkODE5ZGE0
OTFhNjAyNTIzYjA5YTFkMTA2ZjljMWE2ODRmYzJkNDcxLi4zYzcxOTk0NjFhN2IzMTc0NjU5OGVi
ZDI4Mjc4MjM0MjYwYWY1YmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC04NSwxNiAr
ODUsOSBAQCBKU1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpwb3J0KEV4ZWNTdGF0ZSog
ZXhlY1N0YXRlKQogICAgIHJldHVybiBqc1N0cmluZyhleGVjU3RhdGUsIHBvcnQpOwogfQogCi1K
U1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICBFdmVu
dCogZXZlbnQgPSB0b0V2ZW50KGV4ZWMtPmFyZ3VtZW50KDApKTsKLQotICAgIEpTQXJyYXkqIGFy
cmF5ID0gYXNBcnJheShleGVjLT5hcmd1bWVudCgxKSk7Ci0gICAgVmVjdG9yPENvbnRleHRNZW51
SXRlbSo+IGl0ZW1zOwotCitzdGF0aWMgdm9pZCBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoRXhl
Y1N0YXRlKiBleGVjLCBKU0FycmF5KiBhcnJheSwgQ29udGV4dE1lbnUmIG1lbnUpCit7CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAgICBK
U09iamVjdCogaXRlbSA9IGFzT2JqZWN0KGFycmF5LT5nZXRJbmRleChpKSk7CiAgICAgICAgIEpT
VmFsdWUgbGFiZWwgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAibGFiZWwiKSk7
CkBAIC0xMDIsMjUgKzk1LDU0IEBAIEpTVmFsdWUgSlNJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNo
b3dDb250ZXh0TWVudShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIEpTVmFsdWUgaWQgPSBpdGVt
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaWQiKSk7CiAgICAgICAgIEpTVmFsdWUgZW5h
YmxlZCA9IGl0ZW0tPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJlbmFibGVkIikpOwogICAg
ICAgICBKU1ZhbHVlIGNoZWNrZWQgPSBpdGVtLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAi
Y2hlY2tlZCIpKTsKKyAgICAgICAgSlNWYWx1ZSBzdWJJdGVtcyA9IGl0ZW0tPmdldChleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsICJzdWJJdGVtcyIpKTsKICAgICAgICAgaWYgKCF0eXBlLmlzU3RyaW5n
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9
IHVzdHJpbmdUb1N0cmluZyh0eXBlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CiAgICAg
ICAgIGlmICh0eXBlU3RyaW5nID09ICJzZXBhcmF0b3IiKSB7Ci0gICAgICAgICAgICBpdGVtcy5h
cHBlbmQobmV3IENvbnRleHRNZW51SXRlbShTZXBhcmF0b3JUeXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9B
Y3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJp
bmcoKSkpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oU2VwYXJhdG9yVHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbUN1c3RvbVRh
Z05vQWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nKCkpOwor
ICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKGl0ZW0pOworICAgICAgICB9IGVsc2UgaWYgKHR5
cGVTdHJpbmcgPT0gInN1Yk1lbnUiICYmIHN1Ykl0ZW1zLmluaGVyaXRzKCZKU0FycmF5OjpzX2lu
Zm8pKSB7CisgICAgICAgICAgICBDb250ZXh0TWVudSBzdWJNZW51OworICAgICAgICAgICAgSlNB
cnJheSogc3ViSXRlbXNBcnJheSA9IGFzQXJyYXkoc3ViSXRlbXMpOworICAgICAgICAgICAgcG9w
dWxhdGVDb250ZXh0TWVudUl0ZW1zKGV4ZWMsIHN1Ykl0ZW1zQXJyYXksIHN1Yk1lbnUpOworICAg
ICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oU3VibWVudVR5cGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW1DdXN0b21UYWdOb0FjdGlvbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzdHJpbmdUb1N0cmluZyhsYWJlbC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnN1Yk1lbnUpOworICAgICAgICAgICAgbWVudS5hcHBlbmRJdGVtKGl0ZW0pOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgQ29udGV4dE1lbnVBY3Rpb24gdHlwZWRJZCA9IHN0YXRp
Y19jYXN0PENvbnRleHRNZW51QWN0aW9uPihDb250ZXh0TWVudUl0ZW1CYXNlQ3VzdG9tVGFnICsg
aWQudG9JbnQzMihleGVjKSk7Ci0gICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0qIG1lbnVJdGVt
ID0gbmV3IENvbnRleHRNZW51SXRlbSgodHlwZVN0cmluZyA9PSAiY2hlY2tib3giID8gQ2hlY2th
YmxlQWN0aW9uVHlwZSA6IEFjdGlvblR5cGUpLCB0eXBlZElkLCB1c3RyaW5nVG9TdHJpbmcobGFi
ZWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgICAgICBDb250ZXh0TWVu
dUl0ZW0gbWVudUl0ZW0oKHR5cGVTdHJpbmcgPT0gImNoZWNrYm94IiA/IENoZWNrYWJsZUFjdGlv
blR5cGUgOiBBY3Rpb25UeXBlKSwgdHlwZWRJZCwgdXN0cmluZ1RvU3RyaW5nKGxhYmVsLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwogICAgICAgICAgICAgaWYgKCFlbmFibGVkLmlzVW5k
ZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgbWVudUl0ZW0tPnNldEVuYWJsZWQoZW5hYmxlZC50
b0Jvb2xlYW4oKSk7CisgICAgICAgICAgICAgICAgbWVudUl0ZW0uc2V0RW5hYmxlZChlbmFibGVk
LnRvQm9vbGVhbigpKTsKICAgICAgICAgICAgIGlmICghY2hlY2tlZC5pc1VuZGVmaW5lZCgpKQot
ICAgICAgICAgICAgICAgIG1lbnVJdGVtLT5zZXRDaGVja2VkKGNoZWNrZWQudG9Cb29sZWFuKCkp
OwotICAgICAgICAgICAgaXRlbXMuYXBwZW5kKG1lbnVJdGVtKTsKKyAgICAgICAgICAgICAgICBt
ZW51SXRlbS5zZXRDaGVja2VkKGNoZWNrZWQudG9Cb29sZWFuKCkpOworICAgICAgICAgICAgbWVu
dS5hcHBlbmRJdGVtKG1lbnVJdGVtKTsKICAgICAgICAgfQogICAgIH0KK30KKyNlbmRpZgogCitK
U1ZhbHVlIEpTSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnUoRXhlY1N0YXRl
KiBleGVjKQoreworI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQorICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBFdmVu
dCogZXZlbnQgPSB0b0V2ZW50KGV4ZWMtPmFyZ3VtZW50KDApKTsKKworICAgIEpTQXJyYXkqIGFy
cmF5ID0gYXNBcnJheShleGVjLT5hcmd1bWVudCgxKSk7CisgICAgQ29udGV4dE1lbnUgbWVudTsK
KyAgICBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoZXhlYywgYXJyYXksIG1lbnUpOworCisjaWYg
IVVTRShDUk9TU19QTEFURk9STV9DT05URVhUX01FTlVTKQorICAgIFZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0+IGl0ZW1zID0gY29udGV4dE1lbnVJdGVtVmVjdG9yKG1lbnUucGxhdGZvcm1EZXNjcmlw
dGlvbigpKTsKKyNlbHNlCisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gaXRlbXMgPSBtZW51
Lml0ZW1zKCk7CisjZW5kaWYKICAgICBpbXBsKCktPnNob3dDb250ZXh0TWVudShldmVudCwgaXRl
bXMpOwogI2VuZGlmCiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCAyZTg3MWY5YWIyNmYxMDQ5YzQzZTEzYTM5MDg0ZmYw
NDIwMzU2YTc5Li5mOGI1ZTM1MGRhNTVkYzU1NDA4NDA4M2Q0OTk4ZjhhNjFiOWM2YTVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKQEAgLTY4LDQ4ICs2OCw2OCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBvcnRDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6c2hvd0NvbnRl
eHRNZW51Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2b2lkIHBv
cHVsYXRlQ29udGV4dE1lbnVJdGVtcyh2ODo6TG9jYWw8djg6OkFycmF5PiYgaXRlbUFycmF5LCBD
b250ZXh0TWVudSYgbWVudSkKIHsKLSAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCi0gICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0KLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZXZl
bnRXcmFwcGVyID0gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pOwotICAgIGlm
ICghVjhNb3VzZUV2ZW50OjppbmZvLmVxdWFscyhWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBl
KGV2ZW50V3JhcHBlcikpKQotICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwotCi0gICAg
RXZlbnQqIGV2ZW50ID0gVjhFdmVudDo6dG9OYXRpdmUoZXZlbnRXcmFwcGVyKTsKLSAgICBpZiAo
IWFyZ3NbMV0tPklzQXJyYXkoKSkKLSAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQot
ICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNh
c3QoYXJnc1sxXSk7Ci0gICAgVmVjdG9yPENvbnRleHRNZW51SXRlbSo+IGl0ZW1zOwotCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcnJheS0+TGVuZ3RoKCk7ICsraSkgewotICAgICAgICB2
ODo6TG9jYWw8djg6Ok9iamVjdD4gaXRlbSA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChh
cnJheS0+R2V0KGkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGl0ZW1BcnJheS0+TGVu
Z3RoKCk7ICsraSkgeworICAgICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaXRlbSA9IHY4OjpM
b2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChpdGVtQXJyYXktPkdldChpKSk7CiAgICAgICAgIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHR5cGUgPSBpdGVtLT5HZXQodjg6OlN0cmluZzo6TmV3KCJ0eXBlIikp
OwogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBpZCA9IGl0ZW0tPkdldCh2ODo6U3RyaW5n
OjpOZXcoImlkIikpOwogICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBsYWJlbCA9IGl0ZW0t
PkdldCh2ODo6U3RyaW5nOjpOZXcoImxhYmVsIikpOwogICAgICAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiBlbmFibGVkID0gaXRlbS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZW5hYmxlZCIpKTsKICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gY2hlY2tlZCA9IGl0ZW0tPkdldCh2ODo6U3RyaW5n
OjpOZXcoImNoZWNrZWQiKSk7CisgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHN1Ykl0ZW1z
ID0gaXRlbS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygic3ViSXRlbXMiKSk7CiAgICAgICAgIGlmICgh
dHlwZS0+SXNTdHJpbmcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBTdHJpbmcg
dHlwZVN0cmluZyA9IHRvV2ViQ29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sodHlwZSk7CiAgICAgICAg
IGlmICh0eXBlU3RyaW5nID09ICJzZXBhcmF0b3IiKSB7Ci0gICAgICAgICAgICBpdGVtcy5hcHBl
bmQobmV3IENvbnRleHRNZW51SXRlbShTZXBhcmF0b3JUeXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtQ3VzdG9tVGFnTm9BY3Rp
b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmco
KSkpOworICAgICAgICAgICAgQ29udGV4dE1lbnVJdGVtIGl0ZW0oQ29udGV4dE1lbnVJdGVtKFNl
cGFyYXRvclR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0TWVu
dUl0ZW1DdXN0b21UYWdOb0FjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0cmluZygpKSk7CisgICAgICAgICAgICBtZW51LmFwcGVuZEl0ZW0oaXRlbSk7CisgICAgICAg
IH0gZWxzZSBpZiAodHlwZVN0cmluZyA9PSAic3ViTWVudSIgJiYgc3ViSXRlbXMtPklzQXJyYXko
KSkgeworICAgICAgICAgICAgQ29udGV4dE1lbnUgc3ViTWVudTsKKyAgICAgICAgICAgIHY4OjpM
b2NhbDx2ODo6QXJyYXk+IHN1Ykl0ZW1zQXJyYXkgPSB2ODo6TG9jYWw8djg6OkFycmF5Pjo6Q2Fz
dChzdWJJdGVtcyk7CisgICAgICAgICAgICBwb3B1bGF0ZUNvbnRleHRNZW51SXRlbXMoc3ViSXRl
bXNBcnJheSwgc3ViTWVudSk7CisgICAgICAgICAgICBDb250ZXh0TWVudUl0ZW0gaXRlbShTdWJt
ZW51VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRNZW51SXRl
bUN1c3RvbVRhZ05vQWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9X
ZWJDb3JlU3RyaW5nV2l0aE51bGxDaGVjayhsYWJlbCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmc3ViTWVudSk7CisgICAgICAgICAgICBtZW51LmFwcGVuZEl0ZW0oaXRlbSk7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDb250ZXh0TWVudUFjdGlvbiB0eXBlZElk
ID0gc3RhdGljX2Nhc3Q8Q29udGV4dE1lbnVBY3Rpb24+KENvbnRleHRNZW51SXRlbUJhc2VDdXN0
b21UYWcgKyBpZC0+VG9JbnQzMigpLT5WYWx1ZSgpKTsKLSAgICAgICAgICAgIENvbnRleHRNZW51
SXRlbSogbWVudUl0ZW0gPSBuZXcgQ29udGV4dE1lbnVJdGVtKCh0eXBlU3RyaW5nID09ICJjaGVj
a2JveCIgPyBDaGVja2FibGVBY3Rpb25UeXBlIDogQWN0aW9uVHlwZSksIHR5cGVkSWQsIHRvV2Vi
Q29yZVN0cmluZ1dpdGhOdWxsQ2hlY2sobGFiZWwpKTsKKyAgICAgICAgICAgIENvbnRleHRNZW51
SXRlbSBtZW51SXRlbSgodHlwZVN0cmluZyA9PSAiY2hlY2tib3giID8gQ2hlY2thYmxlQWN0aW9u
VHlwZSA6IEFjdGlvblR5cGUpLCB0eXBlZElkLCB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNr
KGxhYmVsKSk7CiAgICAgICAgICAgICBpZiAoY2hlY2tlZC0+SXNCb29sZWFuKCkpCi0gICAgICAg
ICAgICAgICAgbWVudUl0ZW0tPnNldENoZWNrZWQoY2hlY2tlZC0+VG9Cb29sZWFuKCktPlZhbHVl
KCkpOworICAgICAgICAgICAgICAgIG1lbnVJdGVtLnNldENoZWNrZWQoY2hlY2tlZC0+VG9Cb29s
ZWFuKCktPlZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKGVuYWJsZWQtPklzQm9vbGVhbigpKQot
ICAgICAgICAgICAgICAgIG1lbnVJdGVtLT5zZXRFbmFibGVkKGVuYWJsZWQtPlRvQm9vbGVhbigp
LT5WYWx1ZSgpKTsKLSAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChtZW51SXRlbSk7CisgICAgICAg
ICAgICAgICAgbWVudUl0ZW0uc2V0RW5hYmxlZChlbmFibGVkLT5Ub0Jvb2xlYW4oKS0+VmFsdWUo
KSk7CisgICAgICAgICAgICBtZW51LmFwcGVuZEl0ZW0obWVudUl0ZW0pOwogICAgICAgICB9CiAg
ICAgfQorfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6
OnNob3dDb250ZXh0TWVudUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7Cisg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGV2ZW50V3JhcHBlciA9IHY4OjpMb2NhbDx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKTsKKyAgICBpZiAoIVY4TW91c2VFdmVudDo6aW5mby5l
cXVhbHMoVjhET01XcmFwcGVyOjpkb21XcmFwcGVyVHlwZShldmVudFdyYXBwZXIpKSkKKyAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKworICAgIEV2ZW50KiBldmVudCA9IFY4RXZlbnQ6
OnRvTmF0aXZlKGV2ZW50V3JhcHBlcik7CisgICAgaWYgKCFhcmdzWzFdLT5Jc0FycmF5KCkpCisg
ICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisKKyAgICB2ODo6TG9jYWw8djg6OkFycmF5
PiBhcnJheSA9IHY4OjpMb2NhbDx2ODo6QXJyYXk+OjpDYXN0KGFyZ3NbMV0pOworICAgIENvbnRl
eHRNZW51IG1lbnU7CisgICAgcG9wdWxhdGVDb250ZXh0TWVudUl0ZW1zKGFycmF5LCBtZW51KTsK
IAogICAgIEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRlbmRIb3N0ID0gVjhJbnNwZWN0b3JG
cm9udGVuZEhvc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworI2lmICFVU0UoQ1JPU1NfUExB
VEZPUk1fQ09OVEVYVF9NRU5VUykKKyAgICBWZWN0b3I8Q29udGV4dE1lbnVJdGVtPiBpdGVtcyA9
IGNvbnRleHRNZW51SXRlbVZlY3RvcihtZW51LnBsYXRmb3JtRGVzY3JpcHRpb24oKSk7CisjZWxz
ZQorICAgIFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGl0ZW1zID0gbWVudS5pdGVtcygpOworI2Vu
ZGlmCiAgICAgZnJvbnRlbmRIb3N0LT5zaG93Q29udGV4dE1lbnUoZXZlbnQsIGl0ZW1zKTsKIAog
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3QuY3BwCmluZGV4IDJjZjUwYmQwOTljNzkwYzJiZTk1
ZGIxNTdjYjMwYzgyMTZjMmY3YWQuLjk2M2Q5YmE3NWMzMWI0MTIwOWQ3ZmZmNzFmY2ZjYTQ0M2Ex
NzZlNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZEhvc3QuY3BwCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKIGNsYXNzIEZyb250ZW5kTWVudVByb3ZpZGVyIDogcHVibGlj
IENvbnRleHRNZW51UHJvdmlkZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZy
b250ZW5kTWVudVByb3ZpZGVyPiBjcmVhdGUoSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBmcm9udGVu
ZEhvc3QsIFNjcmlwdE9iamVjdCB3ZWJJbnNwZWN0b3IsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0qPiYgaXRlbXMpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJvbnRlbmRNZW51UHJvdmlk
ZXI+IGNyZWF0ZShJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwgU2NyaXB0T2Jq
ZWN0IHdlYkluc3BlY3RvciwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGcm9udGVuZE1lbnVQcm92aWRlcihm
cm9udGVuZEhvc3QsIHdlYkluc3BlY3RvciwgaXRlbXMpKTsKICAgICB9CkBAIC03Miw3ICs3Miw3
IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiBwcml2YXRlOgotICAgIEZyb250ZW5kTWVudVByb3Zp
ZGVyKEluc3BlY3RvckZyb250ZW5kSG9zdCogZnJvbnRlbmRIb3N0LCBTY3JpcHRPYmplY3Qgd2Vi
SW5zcGVjdG9yLCAgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbSo+JiBpdGVtcykKKyAgICBG
cm9udGVuZE1lbnVQcm92aWRlcihJbnNwZWN0b3JGcm9udGVuZEhvc3QqIGZyb250ZW5kSG9zdCwg
U2NyaXB0T2JqZWN0IHdlYkluc3BlY3RvciwgY29uc3QgVmVjdG9yPENvbnRleHRNZW51SXRlbT4m
IGl0ZW1zKQogICAgICAgICA6IG1fZnJvbnRlbmRIb3N0KGZyb250ZW5kSG9zdCkKICAgICAgICAg
LCBtX3dlYkluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpCiAgICAgICAgICwgbV9pdGVtcyhpdGVtcykK
QEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVDb250
ZXh0TWVudShDb250ZXh0TWVudSogbWVudSkKICAgICB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9pdGVtcy5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIG1lbnUtPmFwcGVuZEl0
ZW0oKm1faXRlbXNbaV0pOworICAgICAgICAgICAgbWVudS0+YXBwZW5kSXRlbShtX2l0ZW1zW2ld
KTsKICAgICB9CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGNvbnRleHRNZW51SXRlbVNlbGVjdGVk
KENvbnRleHRNZW51SXRlbSogaXRlbSkKQEAgLTExMCwxMyArMTEwLDEyIEBAIHByaXZhdGU6CiAK
ICAgICAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5tX21lbnVQcm92aWRlciA9IDA7CiAgICAgICAg
IH0KLSAgICAgICAgZGVsZXRlQWxsVmFsdWVzKG1faXRlbXMpOwogICAgICAgICBtX2l0ZW1zLmNs
ZWFyKCk7CiAgICAgfQogCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0KiBtX2Zyb250ZW5kSG9z
dDsKICAgICBTY3JpcHRPYmplY3QgbV93ZWJJbnNwZWN0b3I7Ci0gICAgVmVjdG9yPENvbnRleHRN
ZW51SXRlbSo+IG1faXRlbXM7CisgICAgVmVjdG9yPENvbnRleHRNZW51SXRlbT4gbV9pdGVtczsK
IH07CiAjZW5kaWYKIApAQCAtMjU4LDcgKzI1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0OjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB9CiAKICNp
ZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLXZvaWQgSW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93
Q29udGV4dE1lbnUoRXZlbnQqIGV2ZW50LCBjb25zdCBWZWN0b3I8Q29udGV4dE1lbnVJdGVtKj4m
IGl0ZW1zKQordm9pZCBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnNob3dDb250ZXh0TWVudShFdmVu
dCogZXZlbnQsIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVudUl0ZW0+JiBpdGVtcykKIHsKICAgICBB
U1NFUlQobV9mcm9udGVuZFBhZ2UpOwogICAgIFNjcmlwdFN0YXRlKiBmcm9udGVuZFNjcmlwdFN0
YXRlID0gc2NyaXB0U3RhdGVGcm9tUGFnZShkZWJ1Z2dlcldvcmxkKCksIG1fZnJvbnRlbmRQYWdl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZEhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEhvc3Qu
aAppbmRleCA0NGQ1OTMwODM3ZTk4NzdhNDllYWI2ODRhYWMwMDg1YmUwMjNmZmUzLi42NzRhNWEy
YjNhMGRlODBkODMxZWRmMDY4NDczMDYzM2JkMzlmY2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5oCkBAIC04MCw3ICs4MCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFwcGVuZChjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBj
b250ZW50KTsKIAogICAgIC8vIENhbGxlZCBmcm9tIFtDdXN0b21dIGltcGxlbWVudGF0aW9ucy4K
LSAgICB2b2lkIHNob3dDb250ZXh0TWVudShFdmVudCosIGNvbnN0IFZlY3RvcjxDb250ZXh0TWVu
dUl0ZW0qPiYgaXRlbXMpOworICAgIHZvaWQgc2hvd0NvbnRleHRNZW51KEV2ZW50KiwgY29uc3Qg
VmVjdG9yPENvbnRleHRNZW51SXRlbT4mIGl0ZW1zKTsKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9C
YWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiAKICAgICBTdHJpbmcgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShjb25zdCBTdHJpbmcmIHVybCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnRleHRNZW51LmpzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9Db250ZXh0TWVudS5qcwppbmRleCBhZmJkNDNmZDczZjdjYjBi
YTFhNzE3OTNkMjVkNjQ3NTYyMjVmZGQ4Li5iZDU1NjBjOGQzOTE0NWJmMjYxMTM4Yzc3YTgxNDIx
N2M0MWJjN2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NvbnRleHRNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q29udGV4dE1lbnUuanMKQEAgLTMwLDM0ICszMCw3NyBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3Rv
cgorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtfSB0b3BMZXZlbE1l
bnUKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCisgKiBAcGFyYW0ge3N0cmluZz19IGxhYmVsCisg
KiBAcGFyYW0ge2Jvb2xlYW49fSBkaXNhYmxlZAorICogQHBhcmFtIHtib29sZWFuPX0gY2hlY2tl
ZAogICovCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUgPSBmdW5jdGlvbigpIHsKLSAgICB0aGlz
Ll9pdGVtcyA9IFtdOwotICAgIHRoaXMuX2hhbmRsZXJzID0ge307CitXZWJJbnNwZWN0b3IuQ29u
dGV4dE1lbnVJdGVtID0gZnVuY3Rpb24odG9wTGV2ZWxNZW51LCB0eXBlLCBsYWJlbCwgZGlzYWJs
ZWQsIGNoZWNrZWQpCit7CisgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgdGhpcy5fbGFiZWwg
PSBsYWJlbDsKKyAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkOworICAgIHRoaXMuX2NoZWNr
ZWQgPSBjaGVja2VkOworICAgIHRoaXMuX2NvbnRleHRNZW51ID0gdG9wTGV2ZWxNZW51OworICAg
IGlmICh0eXBlID09PSAiaXRlbSIgfHwgdHlwZSA9PT0gImNoZWNrYm94IikKKyAgICAgICAgdGhp
cy5faWQgPSB0b3BMZXZlbE1lbnUubmV4dElkKCk7CiB9CiAKLVdlYkluc3BlY3Rvci5Db250ZXh0
TWVudS5wcm90b3R5cGUgPSB7Ci0gICAgc2hvdzogZnVuY3Rpb24oZXZlbnQpCitXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnVJdGVtLnByb3RvdHlwZSA9IHsKKyAgICBpZDogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgLy8gUmVtb3ZlIHRyYWlsaW5nIHNlcGFyYXRvci4KLSAgICAgICAgd2hpbGUg
KHRoaXMuX2l0ZW1zLmxlbmd0aCA+IDAgJiYgISgiaWQiIGluIHRoaXMuX2l0ZW1zW3RoaXMuX2l0
ZW1zLmxlbmd0aCAtIDFdKSkKLSAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnNwbGljZSh0aGlzLl9p
dGVtcy5sZW5ndGggLSAxLCAxKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0sCiAK
LSAgICAgICAgaWYgKHRoaXMuX2l0ZW1zLmxlbmd0aCkgewotICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLl9jb250ZXh0TWVudSA9IHRoaXM7Ci0gICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3Quc2hvd0NvbnRleHRNZW51KGV2ZW50LCB0aGlzLl9pdGVtcyk7Ci0gICAgICAgIH0KLSAgICAg
ICAgZXZlbnQuY29uc3VtZSgpOworICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0aGlzLl90eXBlOwogICAgIH0sCiAKKyAgICBfYnVpbGREZXNjcmlwdG9yOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMuX3R5cGUpIHsKKyAgICAgICAgY2Fz
ZSAiaXRlbSI6CisgICAgICAgICAgICByZXR1cm4geyB0eXBlOiAiaXRlbSIsIGlkOiB0aGlzLl9p
ZCwgbGFiZWw6IHRoaXMuX2xhYmVsLCBlbmFibGVkOiAhdGhpcy5fZGlzYWJsZWQgfTsKKyAgICAg
ICAgY2FzZSAic2VwYXJhdG9yIjoKKyAgICAgICAgICAgIHJldHVybiB7IHR5cGU6ICJzZXBhcmF0
b3IiIH07CisgICAgICAgIGNhc2UgImNoZWNrYm94IjoKKyAgICAgICAgICAgIHJldHVybiB7IHR5
cGU6ICJjaGVja2JveCIsIGlkOiB0aGlzLl9pZCwgbGFiZWw6IHRoaXMuX2xhYmVsLCBjaGVja2Vk
OiAhIXRoaXMuX2NoZWNrZWQsIGVuYWJsZWQ6ICF0aGlzLl9kaXNhYmxlZCB9OworICAgICAgICB9
CisgICAgfQorfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudUl0ZW19CisgKiBAcGFyYW0gdG9wTGV2ZWxNZW51CisgKiBAcGFyYW0g
e3N0cmluZz19IGxhYmVsCisgKiBAcGFyYW0ge2Jvb2xlYW49fSBkaXNhYmxlZAorICovCitXZWJJ
bnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtID0gZnVuY3Rpb24odG9wTGV2ZWxNZW51LCBsYWJl
bCwgZGlzYWJsZWQpCit7CisgICAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbS5jYWxsKHRo
aXMsIHRvcExldmVsTWVudSwgInN1Yk1lbnUiLCBsYWJlbCwgZGlzYWJsZWQpOworICAgIHRoaXMu
X2l0ZW1zID0gW107Cit9CisKK1dlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90
eXBlID0gewogICAgIC8qKgogICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGRpc2FibGVkCiAgICAg
ICovCiAgICAgYXBwZW5kSXRlbTogZnVuY3Rpb24obGFiZWwsIGhhbmRsZXIsIGRpc2FibGVkKQog
ICAgIHsKLSAgICAgICAgdmFyIGlkID0gdGhpcy5faXRlbXMubGVuZ3RoOwotICAgICAgICB0aGlz
Ll9pdGVtcy5wdXNoKHt0eXBlOiAiaXRlbSIsIGlkOiBpZCwgbGFiZWw6IGxhYmVsLCBlbmFibGVk
OiAhZGlzYWJsZWR9KTsKLSAgICAgICAgdGhpcy5faGFuZGxlcnNbaWRdID0gaGFuZGxlcjsKKyAg
ICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSh0aGlzLl9j
b250ZXh0TWVudSwgIml0ZW0iLCBsYWJlbCwgZGlzYWJsZWQpOworICAgICAgICB0aGlzLl9pdGVt
cy5wdXNoKGl0ZW0pOworICAgICAgICB0aGlzLl9jb250ZXh0TWVudS5fc2V0SGFuZGxlcihpdGVt
LmlkKCksIGhhbmRsZXIpOworICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9LAorCisgICAgYXBw
ZW5kU3ViTWVudUl0ZW06IGZ1bmN0aW9uKGxhYmVsLCBkaXNhYmxlZCkKKyAgICB7CisgICAgICAg
IHZhciBpdGVtID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0odGhpcy5fY29u
dGV4dE1lbnUsIGxhYmVsLCBkaXNhYmxlZCk7CisgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRl
bSk7CisgICAgICAgIHJldHVybiBpdGVtOwogICAgIH0sCiAKICAgICAvKioKQEAgLTY1LDE5ICsx
MDgsMjIgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsKICAgICAgKi8K
ICAgICBhcHBlbmRDaGVja2JveEl0ZW06IGZ1bmN0aW9uKGxhYmVsLCBoYW5kbGVyLCBjaGVja2Vk
LCBkaXNhYmxlZCkKICAgICB7Ci0gICAgICAgIHZhciBpZCA9IHRoaXMuX2l0ZW1zLmxlbmd0aDsK
LSAgICAgICAgdGhpcy5faXRlbXMucHVzaCh7dHlwZTogImNoZWNrYm94IiwgaWQ6IGlkLCBsYWJl
bDogbGFiZWwsIGNoZWNrZWQ6ICEhY2hlY2tlZCwgZW5hYmxlZDogIWRpc2FibGVkfSk7Ci0gICAg
ICAgIHRoaXMuX2hhbmRsZXJzW2lkXSA9IGhhbmRsZXI7CisgICAgICAgIHZhciBpdGVtID0gbmV3
IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUsICJjaGVja2Jv
eCIsIGxhYmVsLCBkaXNhYmxlZCwgY2hlY2tlZCk7CisgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2go
aXRlbSk7CisgICAgICAgIHRoaXMuX2NvbnRleHRNZW51Ll9zZXRIYW5kbGVyKGl0ZW0uaWQoKSwg
aGFuZGxlcik7CisgICAgICAgIHJldHVybiBpdGVtOwogICAgIH0sCiAKICAgICBhcHBlbmRTZXBh
cmF0b3I6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIC8vIE5vIHNlcGFyYXRvciBkdXBlcyBh
bGxvd2VkLgogICAgICAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoID09PSAwKQotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBpZiAoISgiaWQiIGluIHRoaXMuX2l0ZW1zW3RoaXMuX2l0ZW1z
Lmxlbmd0aCAtIDFdKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5faXRlbXMu
cHVzaCh7dHlwZTogInNlcGFyYXRvciJ9KTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAg
ICAgICBpZiAodGhpcy5faXRlbXNbdGhpcy5faXRlbXMubGVuZ3RoIC0gMV0udHlwZSgpID09PSAi
c2VwYXJhdG9yIikKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB2YXIgaXRlbSA9
IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2NvbnRleHRNZW51LCAic2Vw
YXJhdG9yIik7CisgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRlbSk7CisgICAgICAgIHJldHVy
biBpdGVtOwogICAgIH0sCiAKICAgICAvKioKQEAgLTg4LDYgKzEzNCw1OCBAQCBXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gIXRoaXMuX2l0ZW1z
Lmxlbmd0aDsKICAgICB9LAogCisgICAgX2J1aWxkRGVzY3JpcHRvcjogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IHsgdHlwZTogInN1Yk1lbnUiLCBsYWJlbDogdGhpcy5f
bGFiZWwsIGVuYWJsZWQ6ICF0aGlzLl9kaXNhYmxlZCwgc3ViSXRlbXM6IFtdIH07CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5faXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAg
ICByZXN1bHQuc3ViSXRlbXMucHVzaCh0aGlzLl9pdGVtc1tpXS5fYnVpbGREZXNjcmlwdG9yKCkp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KKworV2ViSW5zcGVjdG9yLkNvbnRl
eHRTdWJNZW51SXRlbS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51SXRlbS5wcm90b3R5cGU7CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7
V2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbX0KKyAqLworV2ViSW5zcGVjdG9yLkNvbnRl
eHRNZW51ID0gZnVuY3Rpb24oKSB7CisgICAgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRl
bS5jYWxsKHRoaXMsIHRoaXMsICIiKTsKKyAgICB0aGlzLl9oYW5kbGVycyA9IHt9OworICAgIHRo
aXMuX2lkID0gMDsKK30KKworV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsK
KyAgICBuZXh0SWQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pZCsr
OworICAgIH0sCisKKyAgICBzaG93OiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHZh
ciBtZW51T2JqZWN0ID0gdGhpcy5fYnVpbGREZXNjcmlwdG9yKCk7CisKKyAgICAgICAgaWYgKG1l
bnVPYmplY3QubGVuZ3RoKSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51
ID0gdGhpczsKKyAgICAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zaG93Q29udGV4dE1l
bnUoZXZlbnQsIG1lbnVPYmplY3QpOworICAgICAgICB9CisgICAgICAgIGV2ZW50LmNvbnN1bWUo
KTsKKyAgICB9LAorCisgICAgX3NldEhhbmRsZXI6IGZ1bmN0aW9uKGlkLCBoYW5kbGVyKQorICAg
IHsKKyAgICAgICAgaWYgKGhhbmRsZXIpCisgICAgICAgICAgICB0aGlzLl9oYW5kbGVyc1tpZF0g
PSBoYW5kbGVyOworICAgIH0sCisKKyAgICBfYnVpbGREZXNjcmlwdG9yOiBmdW5jdGlvbigpCisg
ICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5faXRlbXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICByZXN1bHQucHVzaCh0aGlz
Ll9pdGVtc1tpXS5fYnVpbGREZXNjcmlwdG9yKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0sCisKICAgICBfaXRlbVNlbGVjdGVkOiBmdW5jdGlvbihpZCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9oYW5kbGVyc1tpZF0pCkBAIC0xMDgsNiArMjA2LDggQEAgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5Db250
ZXh0TWVudS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51
SXRlbS5wcm90b3R5cGU7CisKIC8qKgogICogQGludGVyZmFjZQogICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NvZnRDb250ZXh0TWVudS5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU29mdENvbnRleHRNZW51LmpzCmluZGV4
IDBiNDAwYTQzZTU3Y2MzMmM5NDZiMGQxZDNhNWZlODUyYjNjMDIzNTIuLjQ1MjFlMjA2ODFjZTg3
N2UwMTBlNWY3MWVkNjI4Y2IzZTIwYWQ1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU29mdENvbnRleHRNZW51LmpzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU29mdENvbnRleHRNZW51LmpzCkBAIC0yNywxMCArMjcsMTIg
QEAgaWYgKCFJbnNwZWN0b3JGcm9udGVuZEhvc3Quc2hvd0NvbnRleHRNZW51KSB7CiAKIC8qKgog
ICogQGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnU9
fSBwYXJlbnRNZW51CiAgKi8KLVdlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUgPSBmdW5jdGlv
bihpdGVtcykKK1dlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUgPSBmdW5jdGlvbihpdGVtcywg
cGFyZW50TWVudSkKIHsKICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zOworICAgIHRoaXMuX3BhcmVu
dE1lbnUgPSBwYXJlbnRNZW51OwogfQogCiBXZWJJbnNwZWN0b3IuU29mdENvbnRleHRNZW51LnBy
b3RvdHlwZSA9IHsKQEAgLTUxLDEyICs1Myw2IEBAIFdlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1l
bnUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGFyZ2V0RWxlbWVudCA9IGZyYW1lRWxlbWVu
dDsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEluc3RhbGwgZ2xhc3MgcGFuZSBjYXB0dXJpbmcg
ZXZlbnRzLgotICAgICAgICB0aGlzLl9nbGFzc1BhbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuX2dsYXNzUGFuZUVsZW1lbnQuY2xhc3NOYW1l
ID0gInNvZnQtY29udGV4dC1tZW51LWdsYXNzLXBhbmUiOwotICAgICAgICB0aGlzLl9nbGFzc1Bh
bmVFbGVtZW50LnRhYkluZGV4ID0gMDsKLSAgICAgICAgdGhpcy5fZ2xhc3NQYW5lRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5fZ2xhc3NQYW5lTW91c2VVcC5iaW5kKHRo
aXMpLCBmYWxzZSk7Ci0KICAgICAgICAgLy8gQ3JlYXRlIGNvbnRleHQgbWVudS4KICAgICAgICAg
dGhpcy5fY29udGV4dE1lbnVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CiAgICAgICAgIHRoaXMuX2NvbnRleHRNZW51RWxlbWVudC5jbGFzc05hbWUgPSAic29mdC1jb250
ZXh0LW1lbnUiOwpAQCAtNjQsMTYgKzYwLDIzIEBAIFdlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1l
bnUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jb250ZXh0TWVudUVsZW1lbnQuc3R5bGUu
dG9wID0gYWJzb2x1dGVZICsgInB4IjsKICAgICAgICAgdGhpcy5fY29udGV4dE1lbnVFbGVtZW50
LnN0eWxlLmxlZnQgPSBhYnNvbHV0ZVggKyAicHgiOwogCi0gICAgICAgIHRoaXMuX2NvbnRleHRN
ZW51RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9kaXNjYXJkTWVu
dS5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2NvbnRleHRNZW51RWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgY29uc3VtZUV2ZW50LCBmYWxzZSk7CiAgICAgICAg
IHRoaXMuX2NvbnRleHRNZW51RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cy5fbWVudUtleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLl9jb250ZXh0
TWVudUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2Rpc2NhcmRNZW51LmJp
bmQodGhpcyksIGZhbHNlKTsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2l0
ZW1zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fY29udGV4dE1lbnVFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2NyZWF0ZU1lbnVJdGVtKHRoaXMuX2l0ZW1zW2ldKSk7CiAKLSAgICAg
ICAgdGhpcy5fZ2xhc3NQYW5lRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZXh0TWVudUVs
ZW1lbnQpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuX2dsYXNzUGFu
ZUVsZW1lbnQpOwotICAgICAgICB0aGlzLl9jb250ZXh0TWVudUVsZW1lbnQuZm9jdXMoKTsKKyAg
ICAgICAgLy8gSW5zdGFsbCBnbGFzcyBwYW5lIGNhcHR1cmluZyBldmVudHMuCisgICAgICAgIGlm
ICghdGhpcy5fcGFyZW50TWVudSkgeworICAgICAgICAgICAgdGhpcy5fZ2xhc3NQYW5lRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgdGhpcy5fZ2xh
c3NQYW5lRWxlbWVudC5jbGFzc05hbWUgPSAic29mdC1jb250ZXh0LW1lbnUtZ2xhc3MtcGFuZSI7
CisgICAgICAgICAgICB0aGlzLl9nbGFzc1BhbmVFbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICAg
ICAgICAgIHRoaXMuX2dsYXNzUGFuZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIs
IHRoaXMuX2dsYXNzUGFuZU1vdXNlVXAuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICAgICAg
dGhpcy5fZ2xhc3NQYW5lRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZXh0TWVudUVsZW1l
bnQpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLl9nbGFzc1Bh
bmVFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2ZvY3VzKCk7CisgICAgICAgIH0gZWxzZQor
ICAgICAgICAgICAgdGhpcy5fcGFyZW50TWVudS5fcGFyZW50R2xhc3NQYW5lRWxlbWVudCgpLmFw
cGVuZENoaWxkKHRoaXMuX2NvbnRleHRNZW51RWxlbWVudCk7CiAKICAgICAgICAgLy8gUmUtcG9z
aXRpb24gbWVudSBpbiBjYXNlIGl0IGRvZXMgbm90IGZpdC4KICAgICAgICAgaWYgKGRvY3VtZW50
LmJvZHkub2Zmc2V0V2lkdGggPCAgdGhpcy5fY29udGV4dE1lbnVFbGVtZW50Lm9mZnNldExlZnQg
KyB0aGlzLl9jb250ZXh0TWVudUVsZW1lbnQub2Zmc2V0V2lkdGgpCkBAIC04NCwxMSArODcsMjMg
QEAgV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGV2
ZW50LmNvbnN1bWUodHJ1ZSk7CiAgICAgfSwKIAorICAgIF9wYXJlbnRHbGFzc1BhbmVFbGVtZW50
OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAodGhpcy5fZ2xhc3NQYW5lRWxlbWVudCkK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9nbGFzc1BhbmVFbGVtZW50OworICAgICAgICBpZiAo
dGhpcy5fcGFyZW50TWVudSkKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRNZW51Ll9w
YXJlbnRHbGFzc1BhbmVFbGVtZW50KCk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisK
ICAgICBfY3JlYXRlTWVudUl0ZW06IGZ1bmN0aW9uKGl0ZW0pCiAgICAgewogICAgICAgICBpZiAo
aXRlbS50eXBlID09PSAic2VwYXJhdG9yIikKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVh
dGVTZXBhcmF0b3IoKTsKIAorICAgICAgICBpZiAoaXRlbS50eXBlID09PSAic3ViTWVudSIpCisg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlU3ViTWVudShpdGVtKTsKKwogICAgICAgICB2
YXIgbWVudUl0ZW1FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAg
ICAgIG1lbnVJdGVtRWxlbWVudC5jbGFzc05hbWUgPSAic29mdC1jb250ZXh0LW1lbnUtaXRlbSI7
CiAKQEAgLTExMiwxMSArMTI3LDQzIEBAIFdlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gbWVudUl0ZW1FbGVtZW50OwogICAgIH0sCiAKKyAg
ICBfY3JlYXRlU3ViTWVudTogZnVuY3Rpb24oaXRlbSkKKyAgICB7CisgICAgICAgIHZhciBtZW51
SXRlbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgbWVu
dUl0ZW1FbGVtZW50LmNsYXNzTmFtZSA9ICJzb2Z0LWNvbnRleHQtbWVudS1pdGVtIjsKKyAgICAg
ICAgbWVudUl0ZW1FbGVtZW50Ll9zdWJJdGVtcyA9IGl0ZW0uc3ViSXRlbXM7CisKKyAgICAgICAg
Ly8gT2NjdXB5IHRoZSBzYW1lIHNwYWNlIG9uIHRoZSBsZWZ0IGluIGFsbCBpdGVtcy4KKyAgICAg
ICAgdmFyIGNoZWNrTWFya0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CisgICAgICAgIGNoZWNrTWFya0VsZW1lbnQudGV4dENvbnRlbnQgPSAiXHUyNzEzICI7IC8vIENo
ZWNrbWFyayBVbmljb2RlIHN5bWJvbAorICAgICAgICBjaGVja01hcmtFbGVtZW50LmNsYXNzTmFt
ZSA9ICJzb2Z0LWNvbnRleHQtbWVudS1pdGVtLWNoZWNrbWFyayI7CisgICAgICAgIGNoZWNrTWFy
a0VsZW1lbnQuc3R5bGUub3BhY2l0eSA9ICIwIjsKKyAgICAgICAgbWVudUl0ZW1FbGVtZW50LmFw
cGVuZENoaWxkKGNoZWNrTWFya0VsZW1lbnQpOworCisgICAgICAgIHZhciBzdWJNZW51QXJyb3dF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICBzdWJNZW51
QXJyb3dFbGVtZW50LnRleHRDb250ZW50ID0gIlx1MjVCNiI7IC8vIEJMQUNLIFJJR0hULVBPSU5U
SU5HIFRSSUFOR0xFCisgICAgICAgIHN1Yk1lbnVBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gInNv
ZnQtY29udGV4dC1tZW51LWl0ZW0tc3VibWVudS1hcnJvdyI7CisKKyAgICAgICAgbWVudUl0ZW1F
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGl0ZW0ubGFiZWwpKTsK
KyAgICAgICAgbWVudUl0ZW1FbGVtZW50LmFwcGVuZENoaWxkKHN1Yk1lbnVBcnJvd0VsZW1lbnQp
OworCisgICAgICAgIG1lbnVJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLl9tZW51SXRlbU1vdXNlRG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIG1l
bnVJdGVtRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5fbWVudUl0ZW1N
b3VzZVVwLmJpbmQodGhpcyksIGZhbHNlKTsKKworICAgICAgICAvLyBNYW51YWxseSBtYW5hZ2Ug
aG92ZXIgaGlnaGxpZ2h0IHNpbmNlIDpob3ZlciBkb2VzIG5vdCB3b3JrIGluIGNhc2Ugb2YgY2xp
Y2stYW5kLWhvbGQgbWVudSBpbnZvY2F0aW9uLgorICAgICAgICBtZW51SXRlbUVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbWVudUl0ZW1Nb3VzZU92ZXIuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgICAgICBtZW51SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VvdXQiLCB0aGlzLl9tZW51SXRlbU1vdXNlT3V0LmJpbmQodGhpcyksIGZhbHNlKTsKKwor
ICAgICAgICByZXR1cm4gbWVudUl0ZW1FbGVtZW50OworICAgIH0sCisKICAgICBfY3JlYXRlU2Vw
YXJhdG9yOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgc2VwYXJhdG9yRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBzZXBhcmF0b3JFbGVtZW50
LmNsYXNzTmFtZSA9ICJzb2Z0LWNvbnRleHQtbWVudS1zZXBhcmF0b3IiOwogICAgICAgICBzZXBh
cmF0b3JFbGVtZW50Ll9pc1NlcGFyYXRvciA9IHRydWU7CisgICAgICAgIHNlcGFyYXRvckVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5faGlkZVN1Yk1lbnUuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgICAgICBzZXBhcmF0b3JFbGVtZW50LmNyZWF0ZUNoaWxkKCJkaXYi
LCAic2VwYXJhdG9yLWxpbmUiKTsKICAgICAgICAgcmV0dXJuIHNlcGFyYXRvckVsZW1lbnQ7CiAg
ICAgfSwKIApAQCAtMTI5LDE1ICsxNzYsNTggQEAgV2ViSW5zcGVjdG9yLlNvZnRDb250ZXh0TWVu
dS5wcm90b3R5cGUgPSB7CiAgICAgX21lbnVJdGVtTW91c2VVcDogZnVuY3Rpb24oZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl90cmlnZ2VyQWN0aW9uKGV2ZW50LnRhcmdldCwgZXZlbnQpOwor
ICAgICAgICBldmVudC5jb25zdW1lKCk7CisgICAgfSwKKworICAgIF9mb2N1czogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fY29udGV4dE1lbnVFbGVtZW50LmZvY3VzKCk7CiAgICAg
fSwKIAogICAgIF90cmlnZ2VyQWN0aW9uOiBmdW5jdGlvbihtZW51SXRlbUVsZW1lbnQsIGV2ZW50
KQogICAgIHsKLSAgICAgICAgdGhpcy5fZGlzY2FyZE1lbnUoZXZlbnQpOwotICAgICAgICBpZiAo
dHlwZW9mIG1lbnVJdGVtRWxlbWVudC5fYWN0aW9uSWQgIT09ICJ1bmRlZmluZWQiKSB7Ci0gICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuY29udGV4dE1lbnVJdGVtU2VsZWN0ZWQobWVudUl0ZW1FbGVt
ZW50Ll9hY3Rpb25JZCk7Ci0gICAgICAgICAgICBkZWxldGUgbWVudUl0ZW1FbGVtZW50Ll9hY3Rp
b25JZDsKKyAgICAgICAgaWYgKCFtZW51SXRlbUVsZW1lbnQuX3N1Ykl0ZW1zKSB7CisgICAgICAg
ICAgICB0aGlzLl9kaXNjYXJkTWVudSh0cnVlLCBldmVudCk7CisgICAgICAgICAgICBpZiAodHlw
ZW9mIG1lbnVJdGVtRWxlbWVudC5fYWN0aW9uSWQgIT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKG1lbnVJdGVtRWxl
bWVudC5fYWN0aW9uSWQpOworICAgICAgICAgICAgICAgIGRlbGV0ZSBtZW51SXRlbUVsZW1lbnQu
X2FjdGlvbklkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgdGhpcy5fc2hvd1N1Yk1lbnUobWVudUl0ZW1FbGVtZW50LCBldmVudCk7Cisg
ICAgICAgIGV2ZW50LmNvbnN1bWUoKTsKKyAgICB9LAorCisgICAgX3Nob3dTdWJNZW51OiBmdW5j
dGlvbihtZW51SXRlbUVsZW1lbnQsIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKG1lbnVJdGVt
RWxlbWVudC5fc3ViTWVudVRpbWVyKSB7CisgICAgICAgICAgICBjbGVhclRpbWVvdXQobWVudUl0
ZW1FbGVtZW50Ll9zdWJNZW51VGltZXIpOworICAgICAgICAgICAgZGVsZXRlIG1lbnVJdGVtRWxl
bWVudC5fc3ViTWVudVRpbWVyOwogICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLl9zdWJNZW51
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3N1Yk1lbnUgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNvZnRDb250ZXh0TWVudShtZW51SXRlbUVsZW1lbnQuX3N1Ykl0ZW1zLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5fc3ViTWVudS5zaG93KHRoaXMuX2J1aWxkTW91c2VFdmVudEZvclN1
Yk1lbnUobWVudUl0ZW1FbGVtZW50KSk7CisgICAgfSwKKworICAgIF9idWlsZE1vdXNlRXZlbnRG
b3JTdWJNZW51OiBmdW5jdGlvbihzdWJNZW51SXRlbUVsZW1lbnQpCisgICAgeworICAgICAgICB2
YXIgc3ViTWVudU9mZnNldCA9IHsgeDogc3ViTWVudUl0ZW1FbGVtZW50Lm9mZnNldFdpZHRoIC0g
MywgeTogc3ViTWVudUl0ZW1FbGVtZW50Lm9mZnNldFRvcCAtIDEgfTsKKyAgICAgICAgdmFyIHRh
cmdldFggPSB0aGlzLl94ICsgc3ViTWVudU9mZnNldC54OworICAgICAgICB2YXIgdGFyZ2V0WSA9
IHRoaXMuX3kgKyBzdWJNZW51T2Zmc2V0Lnk7CisgICAgICAgIHZhciB0YXJnZXRQYWdlWCA9IHBh
cnNlSW50KHRoaXMuX2NvbnRleHRNZW51RWxlbWVudC5zdHlsZS5sZWZ0LCAxMCkgKyBzdWJNZW51
T2Zmc2V0Lng7CisgICAgICAgIHZhciB0YXJnZXRQYWdlWSA9IHBhcnNlSW50KHRoaXMuX2NvbnRl
eHRNZW51RWxlbWVudC5zdHlsZS50b3AsIDEwKSArIHN1Yk1lbnVPZmZzZXQueTsKKyAgICAgICAg
cmV0dXJuIHsgeDogdGFyZ2V0WCwgeTogdGFyZ2V0WSwgcGFnZVg6IHRhcmdldFBhZ2VYLCBwYWdl
WTogdGFyZ2V0UGFnZVksIGNvbnN1bWU6IGZ1bmN0aW9uKCkge30gfTsKKyAgICB9LAorCisgICAg
X2hpZGVTdWJNZW51OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3N1Yk1l
bnUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX3N1Yk1lbnUuX2Rpc2NhcmRT
dWJNZW51cygpOworICAgICAgICB0aGlzLl9mb2N1cygpOwogICAgIH0sCiAKICAgICBfbWVudUl0
ZW1Nb3VzZU92ZXI6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTQ3LDE2ICsyMzcsMzYgQEAgV2ViSW5z
cGVjdG9yLlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUgPSB7CiAKICAgICBfbWVudUl0ZW1Nb3Vz
ZU91dDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLl9oaWdobGlnaHRNZW51
SXRlbShudWxsKTsKKyAgICAgICAgaWYgKCF0aGlzLl9zdWJNZW51IHx8ICFldmVudC5yZWxhdGVk
VGFyZ2V0KSB7CisgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRNZW51SXRlbShudWxsKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciByZWxhdGVkVGFyZ2V0
ID0gZXZlbnQucmVsYXRlZFRhcmdldDsKKyAgICAgICAgaWYgKHRoaXMuX2NvbnRleHRNZW51RWxl
bWVudC5pc1NlbGZPckFuY2VzdG9yKHJlbGF0ZWRUYXJnZXQpIHx8IHJlbGF0ZWRUYXJnZXQuaGFz
U3R5bGVDbGFzcygic29mdC1jb250ZXh0LW1lbnUtZ2xhc3MtcGFuZSIpKQorICAgICAgICAgICAg
dGhpcy5faGlnaGxpZ2h0TWVudUl0ZW0obnVsbCk7CiAgICAgfSwKIAogICAgIF9oaWdobGlnaHRN
ZW51SXRlbTogZnVuY3Rpb24obWVudUl0ZW1FbGVtZW50KQogICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50KQorICAgICAgICBpZiAodGhpcy5faGlnaGxp
Z2h0ZWRNZW51SXRlbUVsZW1lbnQgPT09ICBtZW51SXRlbUVsZW1lbnQpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy5faGlkZVN1Yk1lbnUoKTsKKyAgICAgICAgaWYgKHRoaXMu
X2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50KSB7CiAgICAgICAgICAgICB0aGlzLl9oaWdobGln
aHRlZE1lbnVJdGVtRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJzb2Z0LWNvbnRleHQtbWVudS1p
dGVtLW1vdXNlLW92ZXIiKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9oaWdobGlnaHRlZE1lbnVJ
dGVtRWxlbWVudC5fc3ViSXRlbXMgJiYgdGhpcy5faGlnaGxpZ2h0ZWRNZW51SXRlbUVsZW1lbnQu
X3N1Yk1lbnVUaW1lcikgeworICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWdo
bGlnaHRlZE1lbnVJdGVtRWxlbWVudC5fc3ViTWVudVRpbWVyKTsKKyAgICAgICAgICAgICAgICBk
ZWxldGUgdGhpcy5faGlnaGxpZ2h0ZWRNZW51SXRlbUVsZW1lbnQuX3N1Yk1lbnVUaW1lcjsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICB0aGlzLl9oaWdobGlnaHRlZE1lbnVJdGVt
RWxlbWVudCA9IG1lbnVJdGVtRWxlbWVudDsKLSAgICAgICAgaWYgKHRoaXMuX2hpZ2hsaWdodGVk
TWVudUl0ZW1FbGVtZW50KQorICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0ZWRNZW51SXRlbUVs
ZW1lbnQpIHsKICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoInNvZnQtY29udGV4dC1tZW51LWl0ZW0tbW91c2Utb3ZlciIpOworICAgICAg
ICAgICAgdGhpcy5fY29udGV4dE1lbnVFbGVtZW50LmZvY3VzKCk7CisgICAgICAgICAgICBpZiAo
dGhpcy5faGlnaGxpZ2h0ZWRNZW51SXRlbUVsZW1lbnQuX3N1Ykl0ZW1zICYmICF0aGlzLl9oaWdo
bGlnaHRlZE1lbnVJdGVtRWxlbWVudC5fc3ViTWVudVRpbWVyKQorICAgICAgICAgICAgICAgIHRo
aXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50Ll9zdWJNZW51VGltZXIgPSBzZXRUaW1lb3V0
KHRoaXMuX3Nob3dTdWJNZW51LmJpbmQodGhpcywgdGhpcy5faGlnaGxpZ2h0ZWRNZW51SXRlbUVs
ZW1lbnQsIHRoaXMuX2J1aWxkTW91c2VFdmVudEZvclN1Yk1lbnUodGhpcy5faGlnaGxpZ2h0ZWRN
ZW51SXRlbUVsZW1lbnQpKSwgMTUwKTsKKyAgICAgICAgfQogICAgIH0sCiAKICAgICBfaGlnaGxp
Z2h0UHJldmlvdXM6IGZ1bmN0aW9uKCkKQEAgLTE4NCw4ICsyOTQsMjMgQEAgV2ViSW5zcGVjdG9y
LlNvZnRDb250ZXh0TWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9oaWdobGln
aHRQcmV2aW91cygpOyBicmVhazsKICAgICAgICAgY2FzZSAiRG93biI6CiAgICAgICAgICAgICB0
aGlzLl9oaWdobGlnaHROZXh0KCk7IGJyZWFrOworICAgICAgICBjYXNlICJMZWZ0IjoKKyAgICAg
ICAgICAgIGlmICh0aGlzLl9wYXJlbnRNZW51KSB7CisgICAgICAgICAgICAgICAgdGhpcy5faGln
aGxpZ2h0TWVudUl0ZW0obnVsbCk7CisgICAgICAgICAgICAgICAgdGhpcy5fcGFyZW50TWVudS5f
Zm9jdXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
ICJSaWdodCI6CisgICAgICAgICAgICBpZiAoIXRoaXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVt
ZW50KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKHRoaXMuX2hpZ2hs
aWdodGVkTWVudUl0ZW1FbGVtZW50Ll9zdWJJdGVtcykgeworICAgICAgICAgICAgICAgIHRoaXMu
X3Nob3dTdWJNZW51KHRoaXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50LCB0aGlzLl9idWls
ZE1vdXNlRXZlbnRGb3JTdWJNZW51KHRoaXMuX2hpZ2hsaWdodGVkTWVudUl0ZW1FbGVtZW50KSk7
CisgICAgICAgICAgICAgICAgdGhpcy5fc3ViTWVudS5fZm9jdXMoKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9zdWJNZW51Ll9oaWdobGlnaHROZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSAiVSswMDFCIjogLy8gRXNjYXBlCi0gICAgICAgICAg
ICB0aGlzLl9kaXNjYXJkTWVudShldmVudCk7IGJyZWFrOworICAgICAgICAgICAgdGhpcy5fZGlz
Y2FyZE1lbnUodHJ1ZSwgZXZlbnQpOyBicmVhazsKICAgICAgICAgY2FzZSAiRW50ZXIiOgogICAg
ICAgICAgICAgaWYgKCFpc0VudGVyS2V5KGV2ZW50KSkKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTIwMywxOSArMzI4LDQ5IEBAIFdlYkluc3BlY3Rvci5Tb2Z0Q29udGV4dE1lbnUucHJvdG90
eXBlID0gewogICAgICAgICAvLyBSZXR1cm4gaWYgdGhpcyBpcyBzaW1wbGUgJ2NsaWNrJywgc2lu
Y2UgZGlzcGF0Y2hlZCBvbiBnbGFzcyBwYW5lLCBjYW4ndCB1c2UgJ2NsaWNrJyBldmVudC4KICAg
ICAgICAgaWYgKGV2ZW50LnggPT09IHRoaXMuX3ggJiYgZXZlbnQueSA9PT0gdGhpcy5feSAmJiBu
ZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRoaXMuX3RpbWUgPCAzMDApCiAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIHRoaXMuX2Rpc2NhcmRNZW51KGV2ZW50KTsKKyAgICAgICAgdGhpcy5fZGlz
Y2FyZE1lbnUodHJ1ZSwgZXZlbnQpOworICAgICAgICBldmVudC5jb25zdW1lKCk7CiAgICAgfSwK
IAotICAgIF9kaXNjYXJkTWVudTogZnVuY3Rpb24oZXZlbnQpCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtib29sZWFufSBjbG9zZVBhcmVudE1lbnVzCisgICAgICogQHBhcmFtIHtFdmVudD19IGV2
ZW50CisgICAgICovCisgICAgX2Rpc2NhcmRNZW51OiBmdW5jdGlvbihjbG9zZVBhcmVudE1lbnVz
LCBldmVudCkKICAgICB7CisgICAgICAgIGlmICh0aGlzLl9zdWJNZW51ICYmICFjbG9zZVBhcmVu
dE1lbnVzKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAodGhpcy5fZ2xhc3NQYW5l
RWxlbWVudCkgewogICAgICAgICAgICAgdmFyIGdsYXNzUGFuZSA9IHRoaXMuX2dsYXNzUGFuZUVs
ZW1lbnQ7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fZ2xhc3NQYW5lRWxlbWVudDsKICAgICAg
ICAgICAgIC8vIFRoaXMgY2FuIHJlLWVudGVyIGRpc2NhcmRNZW51IGR1ZSB0byBibHVyLgogICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChnbGFzc1BhbmUpOwotCi0gICAgICAg
ICAgICBldmVudC5jb25zdW1lKHRydWUpOworICAgICAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1l
bnUpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcGFyZW50TWVudS5fc3ViTWVudTsK
KyAgICAgICAgICAgICAgICBpZiAoY2xvc2VQYXJlbnRNZW51cykKKyAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fcGFyZW50TWVudS5fZGlzY2FyZE1lbnUoY2xvc2VQYXJlbnRNZW51cywgZXZlbnQp
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZXZlbnQpCisgICAgICAgICAgICAg
ICAgZXZlbnQuY29uc3VtZSh0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9wYXJlbnRN
ZW51ICYmIHRoaXMuX2NvbnRleHRNZW51RWxlbWVudC5wYXJlbnRFbGVtZW50KSB7CisgICAgICAg
ICAgICB0aGlzLl9kaXNjYXJkU3ViTWVudXMoKTsKKyAgICAgICAgICAgIGlmIChjbG9zZVBhcmVu
dE1lbnVzKQorICAgICAgICAgICAgICAgIHRoaXMuX3BhcmVudE1lbnUuX2Rpc2NhcmRNZW51KGNs
b3NlUGFyZW50TWVudXMsIGV2ZW50KTsKKworICAgICAgICAgICAgaWYgKGV2ZW50KQorICAgICAg
ICAgICAgICAgIGV2ZW50LmNvbnN1bWUodHJ1ZSk7CiAgICAgICAgIH0KKyAgICB9LAorCisgICAg
X2Rpc2NhcmRTdWJNZW51czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3N1
Yk1lbnUpCisgICAgICAgICAgICB0aGlzLl9zdWJNZW51Ll9kaXNjYXJkU3ViTWVudXMoKTsKKyAg
ICAgICAgaWYgKHRoaXMuX2NvbnRleHRNZW51RWxlbWVudC5wYXJlbnRFbGVtZW50KQorICAgICAg
ICAgICAgdGhpcy5fY29udGV4dE1lbnVFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQo
dGhpcy5fY29udGV4dE1lbnVFbGVtZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX3BhcmVudE1lbnUp
CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fcGFyZW50TWVudS5fc3ViTWVudTsKICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVj
dG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNz
cwppbmRleCA0NGMxYTBkNDg1NDIwYTE1Y2I1YzljMjRkNTBhNDdkM2JjNDBmY2JjLi40ZGI2YzIz
NjgxMjA1M2NlNjc3Y2FlMDZkZjY5MzJkYzA4NGE2ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0yMzQ1LDggKzIzNDUsMTUg
QEAgYS53b3JrZXItaXRlbTpob3ZlciB7CiB9CiAKIC5zb2Z0LWNvbnRleHQtbWVudS1zZXBhcmF0
b3IgewotICAgIG1hcmdpbjogNXB4IDFweCA2cHggMXB4OworICAgIGhlaWdodDogMTBweDsKKyAg
ICBtYXJnaW46IDAgMXB4OworfQorCisuc29mdC1jb250ZXh0LW1lbnUtc2VwYXJhdG9yID4gLnNl
cGFyYXRvci1saW5lIHsKKyAgICBtYXJnaW46IDA7CisgICAgaGVpZ2h0OiA1cHg7CiAgICAgYm9y
ZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYigyMjcsIDIyNywgMjI3KTsKKyAgICBwb2ludGVyLWV2
ZW50czogbm9uZTsKIH0KIAogLnNvZnQtY29udGV4dC1tZW51LWl0ZW0tbW91c2Utb3ZlciB7CkBA
IC0yMzY3LDYgKzIzNzQsMTIgQEAgYm9keS5wbGF0Zm9ybS1tYWMgLnNvZnQtY29udGV4dC1tZW51
LWl0ZW0tbW91c2Utb3ZlciB7CiAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiB9CiAKKy5zb2Z0
LWNvbnRleHQtbWVudS1pdGVtLXN1Ym1lbnUtYXJyb3cgeworICAgIGNvbG9yOiBibGFjazsKKyAg
ICBmbG9hdDogcmlnaHQ7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7Cit9CisKIC5zb2Z0LWNv
bnRleHQtbWVudS1pdGVtLW1vdXNlLW92ZXIgLnNvZnQtY29udGV4dC1tZW51LWl0ZW0tY2hlY2tt
YXJrIHsKICAgICBjb2xvcjogd2hpdGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9Db250ZXh0TWVudUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwCmluZGV4IGU0MTUxMzhk
OTI1NDNjNTE5NzkxMWY4ZDlkOWIyZGM4YzY4YzRhOTIuLmE5MjhjYWQ0NTUxYjA1NjBkMDA2ODQy
MThlNGMxN2ZhNzNiMWRjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NvbnRleHRNZW51Q2hyb21pdW0uY3BwCkBAIC05OSw0ICs5OSw5IEBAIFBs
YXRmb3JtTWVudURlc2NyaXB0aW9uIENvbnRleHRNZW51OjpyZWxlYXNlUGxhdGZvcm1EZXNjcmlw
dGlvbigpCiAgICAgcmV0dXJuIDA7CiB9CiAKK1ZlY3RvcjxDb250ZXh0TWVudUl0ZW0+IGNvbnRl
eHRNZW51SXRlbVZlY3Rvcihjb25zdCBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbiBtZW51RGVzY3Jp
cHRpb24pCit7CisgICAgcmV0dXJuICptZW51RGVzY3JpcHRpb247Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUK
</data>
<flag name="review"
          id="150441"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>