<?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>78202</bug_id>
          
          <creation_ts>2012-02-08 21:49:02 -0800</creation_ts>
          <short_desc>[Shadow]: Expose one ShadowRoot in the Elements panel</short_desc>
          <delta_ts>2012-02-27 07:22:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>62220</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>caseq</cc>
    
    <cc>dglazkov</cc>
    
    <cc>morrita</cc>
    
    <cc>paulirish</cc>
    
    <cc>pfeldman</cc>
    
    <cc>silviapf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>552843</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-02-08 21:49:02 -0800</bug_when>
    <thetext>Despite r85751 being rolled out (see bug 60160 and bug 62188) a few people are using ad-hoc variants of that patch for development, eg of video text tracks in the video element. I’m filing this bug to move discussion about the evolution of that patch from bug 60160 to here, firstly because bug 60160 is closed, and secondly because ShadowRoot is now available from JavaScript (if the SHADOW_DOM feature is enabled) so we might want to revisit this patch as the basis of accessing author shadows in the Inspector. Note that the Shadow DOM spec has changed since the bug 60160-era and soon elements will be able to have multiple shadow roots attached in a stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552845</commentid>
    <comment_count>1</comment_count>
      <attachid>126236</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-02-08 21:52:57 -0800</bug_when>
    <thetext>Created attachment 126236
WIP patch based on attachment 120263

This works for inspecting the UA shadows of &lt;video&gt;, etc. in Chromium r120954/WebKit r106990 but the flakiness is considerable. No tests, no ChangeLog, harmful to puppies and children.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559996</commentid>
    <comment_count>2</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-02-19 20:34:25 -0800</bug_when>
    <thetext>Does anybody have an opinion on these questions regarding multiple shadow roots? Given

var b = document.querySelector(&apos;body&apos;)
var s = new ShadowRoot(b);
var t = new ShadowRoot(b);
var u = new ShadowRoot(b);

There are three questions I am wondering about:

• When multiple shadow roots are present, should they be presented at the top-level or underneath a &quot;shadows&quot; node, eg. this:

V &lt;html&gt;
    …
    V &lt;body&gt;
        V (shadows)
            &gt; (shadow)
            &gt; (shadow)
            &gt; (shadow)
        &gt; &lt;p&gt;&quot;Lorem ipsum …&quot;&lt;/p&gt;

Or this?

V &lt;html&gt;
    …
    V &lt;body&gt;
        &gt; (shadow)
        &gt; (shadow)
        &gt; (shadow)
        &gt; &lt;p&gt;&quot;Lorem ipsum …&quot;&lt;/p&gt;

• Should they be presented before the child content, or after it? eg. this:

V &lt;html&gt;
    …
    V &lt;body&gt;
        * shadows appear here *
        &gt; &lt;p&gt;&quot;Lorem ipsum …&quot;&lt;/p&gt;

Or this?

V &lt;html&gt;
    …
    V &lt;body&gt;
        &gt; &lt;p&gt;&quot;Lorem ipsum …&quot;&lt;/p&gt;
        * shadows appear here *

• Lastly, should the &quot;youngest&quot; shadow be displayed closest to the child content, or furthest away from it? 

You could ask this third question as: should the &quot;youngest&quot; shadow be displayed at the top or at the bottom? However I’m going to argue that the question should be one of closer or farther from child content, which means displaying shadow roots oldest-to-youngest if you display them above the light children, or youngest-to-oldest if you display them below the light children.

The reason is I think you want to display the youngest shadow  closest to the light children. When you are debugging shadow DOM, you will probably want to experiment with how &lt;content&gt; distribution happens. Since younger shadow roots get &quot;first dibs&quot; on light children, I think shadow DOM in the inspector will be easier to use/understand if you put the younger shadow roots in closer proximity to the light children.

Unrelated to the question of multiple shadows:

• Should &quot;user-agent shadows&quot; (aka built-in shadows) be displayed in the inspector? If so, should they be presented differently somehow? Should they be displayed by default? Should there be an option not to display them? If so, where should it go?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560067</commentid>
    <comment_count>3</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-19 23:55:25 -0800</bug_when>
    <thetext>Interesting point. We should definitely discuss this.

&gt; • When multiple shadow roots are present, should they be presented at the top-level or underneath a &quot;shadows&quot; node, eg. this:
&gt; 
&gt; V &lt;html&gt;
&gt;     …
&gt;     V &lt;body&gt;
&gt;         V (shadows)
&gt;             &gt; (shadow)
&gt;             &gt; (shadow)
&gt;             &gt; (shadow)
&gt;         &gt; &lt;p&gt;&quot;Lorem ipsum …&quot;&lt;/p&gt;

&quot;shadows&quot; sounds cool. We should have a way to hide them at once.
And &quot;shadows&quot; would be one os them.


&gt; • Lastly, should the &quot;youngest&quot; shadow be displayed closest to the child content, or furthest away from it? 

Considering people may want to see what they see visually, yougest-first sounds viable for me.
Also, it would be great if we have some visual cue to represent which node is &quot;distributed&quot;,
that means, a part of final composed tree. 
Ideally we should have a view for final composed tree. But it would need further investigation.

&gt; • Should &quot;user-agent shadows&quot; (aka built-in shadows) be displayed in the inspector? If so, should they be presented differently somehow? Should they be displayed by default? Should there be an option not to display them? If so, where should it go?

This is a tricky bit. When people start decorating existing form controls, they would be frustrated
if we don&apos;t provide this. On the other hand, we should never allow to modify these user-agent trees.
If we can make them read-only. it looks ideal for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564919</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-25 02:19:40 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Does anybody have an opinion on these questions regarding multiple shadow roots? Given

How often does this happen / you expect this to happen?

&gt; 
&gt; • Should they be presented before the child content, or after it? eg. this:
&gt; 

Given that shadow roots do not happen often, I would put them in front

&gt; 
&gt; • Lastly, should the &quot;youngest&quot; shadow be displayed closest to the child content, or furthest away from it? 
&gt; 

This one is hard for me to understand. When you have a list of child nodes (say absolutely positioned), they are painted in the order of appearance in the list. So the order matters for regular DOM nodes, and you expect the last item to be on top of the others. Are you suggesting the opposite for shadow roots?

&gt; • Should &quot;user-agent shadows&quot; (aka built-in shadows) be displayed in the inspector? If so, should they be presented differently somehow? Should they be displayed by default? Should there be an option not to display them? If so, where should it go?

Definitely OFF by default, probably behind the inspector setting. We use gray background for UA stylesheets to distinguish them and point out that they are read-only. I guess same applies to the user-agent shadows. We will need to introduce a concept of a read-only node in the inspector + make sure $0 does not work for the UA shadows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565614</commentid>
    <comment_count>5</comment_count>
      <attachid>129028</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 06:35:39 -0800</bug_when>
    <thetext>Created attachment 129028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565615</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 06:38:53 -0800</bug_when>
    <thetext>I uploaded a straw man implementation for shadow roots in the inspector. I&apos;d like to test is using web facing API, but I can&apos;t find tutorials on the feature that would work. This makes me think that it is still too early to add support for it in the inspector by default.

Anyways, I am all for landing this patch so that the WebKit team could use this experiment. As a follow up, one might want to make nodes under user roots editable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565637</commentid>
    <comment_count>7</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-27 07:22:51 -0800</bug_when>
    <thetext>Committed r108993: &lt;http://trac.webkit.org/changeset/108993&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126236</attachid>
            <date>2012-02-08 21:52:57 -0800</date>
            <delta_ts>2012-02-27 06:35:30 -0800</delta_ts>
            <desc>WIP patch based on attachment 120263</desc>
            <filename>0001-Rough-stuff.patch</filename>
            <type>text/plain</type>
            <size>18731</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">RnJvbSBmODA1ZDBkMGU2MzRmMjkwNDU5M2EwN2QyMDc5YzBjYmVmMDUzZTM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBEb21pbmljIENvb25leSA8ZG9taW5pY2NAY2hyb21pdW0ub3Jn
PgpEYXRlOiBUaHUsIDkgRmViIDIwMTIgMTQ6MzU6MTIgKzA5MDAKU3ViamVjdDogW1BBVENIXSBS
b3VnaCBzdHVmZgoKLS0tCiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgICAgICAgICAg
ICAgICAgICAgICB8ICAgIDQgKysKIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbiAgICAgICAgICAgIHwgICAgOCArKysKIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAgICAgIHwgICAxOSArKysrKystLQogU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcyAgICAgfCAgIDQ5ICsrKysrKysrKysrKysrKysr
KysrCiAuLi4vV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMgICB8
ICAgIDQgKysKIC4uLi9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMg
ICAgIHwgICAzNyArKysrKysrKysrKystLQogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuY3NzICAgfCAgICA0ICsrCiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL3V0aWxpdGllcy5qcyAgICB8ICAgIDIgKwogOCBmaWxlcyBjaGFuZ2VkLCAxMTcg
aW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4
IDliMDIzZGYuLjE5NmYwNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTExODQsNiArMTE4
NCw3IEBAIHZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+
IHBycFNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmCiAgICAgcmVtb3ZlU2hhZG93Um9vdCgpOwog
CiAgICAgZW5zdXJlUmFyZURhdGEoKS0+bV9zaGFkb3dSb290ID0gc2hhZG93Um9vdC5nZXQoKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxJbnNlcnRET01Ob2RlKGRvY3VtZW50
KCksIHNoYWRvd1Jvb3QuZ2V0KCksIHRoaXMpOwogICAgIHNoYWRvd1Jvb3QtPnNldFNoYWRvd0hv
c3QodGhpcyk7CiAgICAgaWYgKGluRG9jdW1lbnQoKSkKICAgICAgICAgc2hhZG93Um9vdC0+aW5z
ZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKQEAgLTExOTIsNiArMTE5Myw4IEBAIHZvaWQgRWxlbWVudDo6
c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHBycFNoYWRvd1Jvb3QsIEV4Y2Vw
dGlvbkNvZGUmCiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICAgICAgY2hpbGQtPmRldGFj
aCgpOwogICAgIH0KKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5v
ZGUoZG9jdW1lbnQoKSwgc2hhZG93Um9vdC5nZXQoKSk7CisgCiB9CiAKIFNoYWRvd1Jvb3QqIEVs
ZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQpAQCAtMTIxMiw2ICsxMjE1LDcgQEAgdm9pZCBFbGVt
ZW50OjpyZW1vdmVTaGFkb3dSb290KCkKIAogICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IHJh
cmVEYXRhKCk7CiAgICAgaWYgKFJlZlB0cjxTaGFkb3dSb290PiBvbGRSb290ID0gZGF0YS0+bV9z
aGFkb3dSb290KSB7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92
ZURPTU5vZGUoZG9jdW1lbnQoKSwgb2xkUm9vdC5nZXQoKSk7CiAgICAgICAgIGRhdGEtPm1fc2hh
ZG93Um9vdCA9IDA7CiAgICAgICAgIGRvY3VtZW50KCktPnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0
cmVlKG9sZFJvb3QuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24KaW5kZXggZTIwNGQ5Yy4uNmEzMjYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3IuanNvbgpAQCAtMTU5OCw2ICsxNTk4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibm9kZUlkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIklkIG9m
IHRoZSBub2RlIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZC4iIH0KICAgICAgICAgICAgICAgICBdLAog
ICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJNaXJyb3JzIDxjb2RlPkRPTU5vZGVSZW1v
dmVkPC9jb2RlPiBldmVudC4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJuYW1lIjogInNoYWRvd1Jvb3RVcGRhdGVkIiwKKyAgICAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJob3N0SWQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlNoYWRvdyBob3N0IG5vZGUgSUQuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBheWxvYWQiLCAiJHJlZiI6ICJOb2Rl
IiwgImRlc2NyaXB0aW9uIjogIlVwZGF0ZWQgc2hhZG93IHJvb3QgKG51bGwgaWYgcmVtb3ZlZCku
IiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RmlyZWQgd2hlbiBhIFNoYWRvd1Jvb3QgaXMgYXNzb2NpYXRlZCB3aXRoIGEgaG9zdCBlbGVtZW50
LiIKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA1MWM4YTQ3Li5jY2VlYTBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAg
LTc5LDYgKzc5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogI2luY2x1
ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVk
ZSAiU3R5bGVTaGVldExpc3QuaCIKICNpbmNsdWRlICJUZXh0LmgiCkBAIC02MTgsNyArNjE5LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiYgcm9vdCkKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnB1c2hD
aGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkKQogewogICAgIE5vZGUqIG5vZGUgPSBub2Rl
Rm9ySWQobm9kZUlkKTsKLSAgICBpZiAoIW5vZGUgfHwgKG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9k
ZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfTk9E
RSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUpKQor
ICAgIGlmICghbm9kZSB8fCAobm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUg
JiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBOb2RlOjpET0NVTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVU
eXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgp
ICE9IE5vZGU6OlNIQURPV19ST09UX05PREUpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKG1f
Y2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTM3Nyw2ICsxMzc4LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRP
TUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9kZSogbm9kZSwgaW4KICAgICBjYXNlIE5vZGU6
OkFUVFJJQlVURV9OT0RFOgogICAgICAgICBsb2NhbE5hbWUgPSBub2RlLT5sb2NhbE5hbWUoKTsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgIGNh
c2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9OT0RFOgpAQCAtMTQxMSw2ICsxNDEzLDggQEAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvck5vZGUoTm9k
ZSogbm9kZSwgaW4KICAgICAgICAgICAgIGlmIChkb2MpCiAgICAgICAgICAgICAgICAgdmFsdWUt
PnNldENvbnRlbnREb2N1bWVudChidWlsZE9iamVjdEZvck5vZGUoZG9jLCAwLCBub2Rlc01hcCkp
OwogICAgICAgICB9CisgICAgICAgIGlmIChTaGFkb3dSb290KiBzaGFkb3dSb290ID0gZWxlbWVu
dC0+c2hhZG93Um9vdCgpKQorICAgICAgICAgICAgdmFsdWUtPnNldE9iamVjdCgic2hhZG93Um9v
dCIsIGJ1aWxkT2JqZWN0Rm9yTm9kZShzaGFkb3dSb290LCBkZXB0aCwgbm9kZXNNYXApKTsKICAg
ICB9IGVsc2UgaWYgKG5vZGUtPmlzRG9jdW1lbnROb2RlKCkpIHsKICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihub2RlKTsKICAgICAgICAgdmFsdWUt
PnNldERvY3VtZW50VVJMKGRvY3VtZW50VVJMU3RyaW5nKGRvY3VtZW50KSk7CkBAIC0xNTc4LDEy
ICsxNTgyLDE3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEluc2VydERPTU5vZGUoTm9k
ZSogbm9kZSkKICAgICAvLyBXZSBjb3VsZCBiZSBhdHRhY2hpbmcgZXhpc3Rpbmcgc3VidHJlZS4g
Rm9yZ2V0IHRoZSBiaW5kaW5ncy4KICAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1lbnROb2RlVG9J
ZE1hcCk7CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7
CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS0+aXNTaGFkb3dSb290KCkgPyBub2Rl
LT5zaGFkb3dIb3N0KCkgOiBub2RlLT5wYXJlbnROb2RlKCk7CiAgICAgaW50IHBhcmVudElkID0g
bV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChwYXJlbnQpOwogICAgIC8vIFJldHVybiBpZiBwYXJl
bnQgaXMgbm90IG1hcHBlZCB5ZXQuCiAgICAgaWYgKCFwYXJlbnRJZCkKICAgICAgICAgcmV0dXJu
OwogCisgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3Vt
ZW50Tm9kZVRvSWRNYXApOworICAgICAgICBtX2Zyb250ZW5kLT5zaGFkb3dSb290VXBkYXRlZChw
YXJlbnRJZCwgdmFsdWUucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KICAgICBp
ZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CiAgICAgICAgIC8v
IE5vIGNoaWxkcmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2Yg
aGFzQ2hpbGRyZW4uCiAgICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUNvdW50VXBkYXRlZChw
YXJlbnRJZCwgaW5uZXJDaGlsZE5vZGVDb3VudChwYXJlbnQpKTsKQEAgLTE2MDEsNyArMTYxMCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkK
ICAgICBpZiAoaXNXaGl0ZXNwYWNlKG5vZGUpKQogICAgICAgICByZXR1cm47CiAKLSAgICBDb250
YWluZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50ID0gbm9kZS0+aXNTaGFkb3dSb290KCkgPyBub2RlLT5zaGFkb3dIb3N0KCkgOiBu
b2RlLT5wYXJlbnROb2RlKCk7CiAgICAgaW50IHBhcmVudElkID0gbV9kb2N1bWVudE5vZGVUb0lk
TWFwLmdldChwYXJlbnQpOwogICAgIC8vIElmIHBhcmVudCBpcyBub3QgbWFwcGVkIHlldCAtPiBp
Z25vcmUgdGhlIGV2ZW50LgogICAgIGlmICghcGFyZW50SWQpCkBAIC0xNjEwLDcgKzE2MTksOSBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCiAg
ICAgaWYgKG1fZG9tTGlzdGVuZXIpCiAgICAgICAgIG1fZG9tTGlzdGVuZXItPmRpZFJlbW92ZURP
TU5vZGUobm9kZSk7CiAKLSAgICBpZiAoIW1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFy
ZW50SWQpKSB7CisgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICBtX2Zyb250
ZW5kLT5zaGFkb3dSb290VXBkYXRlZChwYXJlbnRJZCwgMCk7CisgICAgZWxzZSBpZiAoIW1fY2hp
bGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMocGFyZW50SWQpKSB7CiAgICAgICAgIC8vIE5vIGNoaWxk
cmVuIGFyZSBtYXBwZWQgeWV0IC0+IG9ubHkgbm90aWZ5IG9uIGNoYW5nZXMgb2YgaGFzQ2hpbGRy
ZW4uCiAgICAgICAgIGlmIChpbm5lckNoaWxkTm9kZUNvdW50KHBhcmVudCkgPT0gMSkKICAgICAg
ICAgICAgIG1fZnJvbnRlbmQtPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTUFnZW50Lmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwppbmRleCA5
OThiNzI2Li5jZTQ4OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0RPTUFnZW50LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRE9NQWdlbnQuanMKQEAgLTM5LDcgKzM5LDEyIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlID0g
ZnVuY3Rpb24oZG9tQWdlbnQsIGRvYywgcGF5bG9hZCkgewogICAgIHRoaXMuX2RvbUFnZW50ID0g
ZG9tQWdlbnQ7CiAgICAgdGhpcy5vd25lckRvY3VtZW50ID0gZG9jOwogCisvLyBGSVhNRTogcmVt
b3ZlIHRoaXMgZGVidWdnaW5nIHNjcmVlCit0cnkgewogICAgIHRoaXMuaWQgPSBwYXlsb2FkLm5v
ZGVJZDsKK30gY2F0Y2ggKGUpIHsKKyAgICBjb25zb2xlLmxvZygnKioqIG5vIHBheWxvYWQ6ICoq
KicgKyBlLnN0YWNrKTsKK30KICAgICB0aGlzLl9ub2RlVHlwZSA9IHBheWxvYWQubm9kZVR5cGU7
CiAgICAgdGhpcy5fbm9kZU5hbWUgPSBwYXlsb2FkLm5vZGVOYW1lOwogICAgIHRoaXMuX2xvY2Fs
TmFtZSA9IHBheWxvYWQubG9jYWxOYW1lOwpAQCAtNzQsNiArNzksOCBAQCBXZWJJbnNwZWN0b3Iu
RE9NTm9kZSA9IGZ1bmN0aW9uKGRvbUFnZW50LCBkb2MsIHBheWxvYWQpIHsKICAgICAgICAgICAg
IHRoaXMub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPSB0aGlzOwogICAgICAgICBpZiAo
dGhpcy5vd25lckRvY3VtZW50ICYmICF0aGlzLm93bmVyRG9jdW1lbnQuYm9keSAmJiB0aGlzLl9u
b2RlTmFtZSA9PT0gIkJPRFkiKQogICAgICAgICAgICAgdGhpcy5vd25lckRvY3VtZW50LmJvZHkg
PSB0aGlzOworICAgICAgICBpZiAocGF5bG9hZC5zaGFkb3dSb290KQorICAgICAgICAgICAgdGhp
cy5fc2V0U2hhZG93Um9vdFBheWxvYWQocGF5bG9hZC5zaGFkb3dSb290KTsKICAgICB9IGVsc2Ug
aWYgKHRoaXMuX25vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERSkgewogICAgICAg
ICB0aGlzLnB1YmxpY0lkID0gcGF5bG9hZC5wdWJsaWNJZDsKICAgICAgICAgdGhpcy5zeXN0ZW1J
ZCA9IHBheWxvYWQuc3lzdGVtSWQ7CkBAIC0xMjgsNiArMTM1LDE0IEBAIFdlYkluc3BlY3Rvci5E
T01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7
Ym9vbGVhbn0KKyAgICAgKi8KKyAgICBpblNoYWRvd1RyZWU6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9pblNoYWRvd1RyZWU7CisgICAgfSwgCisKKyAgICAvKioKICAg
ICAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgICAgICovCiAgICAgbm9kZU5hbWU6IGZ1bmN0aW9uKCkK
QEAgLTQ0MCw2ICs0NTUsMjAgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9yZW51bWJlcigpOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0RPTUFnZW50Lk5vZGV9IHBheWxvYWQKKyAgICAgKi8KKyAgICBfc2V0U2hhZG93Um9vdFBh
eWxvYWQ6IGZ1bmN0aW9uKHBheWxvYWQpCisgICAgeworICAgICAgICBpZiAoIXBheWxvYWQpIHsK
KyAgICAgICAgICAgIHRoaXMuc2hhZG93Um9vdCA9IG51bGw7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5zaGFkb3dSb290ID0gbmV3IFdlYkluc3BlY3Rvci5E
T01Ob2RlKHRoaXMuX2RvbUFnZW50LCB0aGlzLm93bmVyRG9jdW1lbnQsIHBheWxvYWQpOworICAg
ICAgICB0aGlzLnNoYWRvd1Jvb3QucGFyZW50Tm9kZSA9IHRoaXM7CisgICAgICAgIHRoaXMuc2hh
ZG93Um9vdC5faW5TaGFkb3dUcmVlID0gdHJ1ZTsKKyAgICB9LAorCiAgICAgX3JlbnVtYmVyOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLl9jaGlsZE5vZGVDb3VudCA9IHRoaXMuY2hp
bGRyZW4ubGVuZ3RoOwpAQCAtNDU2LDYgKzQ4NSw3IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gaSArIDEgPCB0aGlz
Ll9jaGlsZE5vZGVDb3VudCA/IHRoaXMuY2hpbGRyZW5baSArIDFdIDogbnVsbDsKICAgICAgICAg
ICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IGkgLSAxID49IDAgPyB0aGlzLmNoaWxkcmVuW2kg
LSAxXSA6IG51bGw7CiAgICAgICAgICAgICBjaGlsZC5wYXJlbnROb2RlID0gdGhpczsKKyAgICAg
ICAgICAgIGNoaWxkLl9pblNoYWRvd1RyZWUgPSB0aGlzLl9pblNoYWRvd1RyZWU7CiAgICAgICAg
IH0KICAgICB9LAogCkBAIC02NzYsNiArNzA2LDcgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2
ZW50cyA9IHsKICAgICBOb2RlUmVtb3ZlZDogIk5vZGVSZW1vdmVkIiwKICAgICBEb2N1bWVudFVw
ZGF0ZWQ6ICJEb2N1bWVudFVwZGF0ZWQiLAogICAgIENoaWxkTm9kZUNvdW50VXBkYXRlZDogIkNo
aWxkTm9kZUNvdW50VXBkYXRlZCIsCisgICAgU2hhZG93Um9vdFVwZGF0ZWQ6ICJTaGFkb3dSb290
VXBkYXRlZCIsCiAgICAgSW5zcGVjdEVsZW1lbnRSZXF1ZXN0ZWQ6ICJJbnNwZWN0RWxlbWVudFJl
cXVlc3RlZCIsCiAgICAgU3R5bGVJbnZhbGlkYXRlZDogIlN0eWxlSW52YWxpZGF0ZWQiCiB9CkBA
IC05MTgsNiArOTQ5LDggQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5baV07CiAgICAgICAgICAgICB0aGlzLl9pZFRvRE9N
Tm9kZVtjaGlsZC5pZF0gPSBjaGlsZDsKKyAgICAgICAgICAgIGlmIChjaGlsZC5zaGFkb3dSb290
KQorICAgICAgICAgICAgICAgIHRoaXMuX2lkVG9ET01Ob2RlW2NoaWxkLnNoYWRvd1Jvb3QuaWRd
ID0gY2hpbGQuc2hhZG93Um9vdDsKICAgICAgICAgICAgIGlmIChjaGlsZC5jaGlsZHJlbikKICAg
ICAgICAgICAgICAgICB0aGlzLl9iaW5kTm9kZXMoY2hpbGQuY2hpbGRyZW4pOwogICAgICAgICB9
CkBAIC0xMDUwLDYgKzEwODMsMTcgQEAgV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9ycywg
dGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrQ2FzdCkpOwogICAgIH0sCiAKKyAgICBf
c2hhZG93Um9vdFVwZGF0ZWQ6IGZ1bmN0aW9uKGhvc3RJZCwgcGF5bG9hZCkKKyAgICB7CisgICAg
ICAgIHZhciBob3N0ID0gdGhpcy5faWRUb0RPTU5vZGVbaG9zdElkXTsKKyAgICAgICAgaWYgKGhv
c3Quc2hhZG93Um9vdCAmJiAhcGF5bG9hZCkKKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZFRv
RE9NTm9kZVtob3N0LnNoYWRvd1Jvb3QuaWRdOworICAgICAgICBob3N0Ll9zZXRTaGFkb3dSb290
UGF5bG9hZChwYXlsb2FkKTsKKyAgICAgICAgaWYgKGhvc3Quc2hhZG93Um9vdCkKKyAgICAgICAg
ICAgIHRoaXMuX2lkVG9ET01Ob2RlW2hvc3Quc2hhZG93Um9vdC5pZF0gPSBob3N0LnNoYWRvd1Jv
b3Q7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5E
T01BZ2VudC5FdmVudHMuU2hhZG93Um9vdFVwZGF0ZWQsIGhvc3QpOworICAgIH0sCisKICAgICAv
KioKICAgICAgKiBAcGFyYW0gez9udW1iZXJ9IG5vZGVJZAogICAgICAqIEBwYXJhbSB7c3RyaW5n
PX0gbW9kZQpAQCAtMTI1OCw2ICsxMzAyLDExIEBAIFdlYkluc3BlY3Rvci5ET01EaXNwYXRjaGVy
LnByb3RvdHlwZSA9IHsKICAgICBjaGlsZE5vZGVSZW1vdmVkOiBmdW5jdGlvbihwYXJlbnROb2Rl
SWQsIG5vZGVJZCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RvbUFnZW50Ll9jaGlsZE5vZGVSZW1v
dmVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKTsKKyAgICB9LAorCisgICAgc2hhZG93Um9vdFVwZGF0
ZWQ6IGZ1bmN0aW9uKGhvc3RJZCwgc2hhZG93Um9vdCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Rv
bUFnZW50Ll9zaGFkb3dSb290VXBkYXRlZChob3N0SWQsIHNoYWRvd1Jvb3QpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Bh
bmVsLmpzCmluZGV4IGNhYWU3ZTguLmFhNjlhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWwuanMKQEAgLTU2NCw2ICs1NjQsMTAg
QEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgICAgICBjcnVtYlRpdGxlID0gIjwhRE9DVFlQRT4iOwogICAgICAgICAgICAgICAgICAgICBi
cmVhazsKIAorICAgICAgICAgICAgICAgIGNhc2UgTm9kZS5TSEFET1dfUk9PVF9OT0RFOgorICAg
ICAgICAgICAgICAgICAgICBjcnVtYlRpdGxlID0gIihzaGFkb3cpIjsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
ICAgICBjcnVtYlRpdGxlID0gY3VycmVudC5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNUcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCAwOGVlMWRhLi5lNWI4YzU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxp
bmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1Ry
ZWVPdXRsaW5lLmpzCkBAIC01MTQsNyArNTE0LDcgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJl
ZU91dGxpbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZTsKIFdl
Ykluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50ID0gZnVuY3Rpb24obm9kZSwgZWxlbWVudENs
b3NlVGFnKQogewogICAgIHRoaXMuX2VsZW1lbnRDbG9zZVRhZyA9IGVsZW1lbnRDbG9zZVRhZzsK
LSAgICB2YXIgaGFzQ2hpbGRyZW5PdmVycmlkZSA9ICFlbGVtZW50Q2xvc2VUYWcgJiYgbm9kZS5o
YXNDaGlsZE5vZGVzKCkgJiYgIXRoaXMuX3Nob3dJbmxpbmVUZXh0KG5vZGUpOworICAgIHZhciBo
YXNDaGlsZHJlbk92ZXJyaWRlID0gIWVsZW1lbnRDbG9zZVRhZyAmJiAobm9kZS5oYXNDaGlsZE5v
ZGVzKCkgfHwgbm9kZS5zaGFkb3dSb290KSAmJiAhdGhpcy5fc2hvd0lubGluZVRleHQobm9kZSk7
CiAKICAgICAvLyBUaGUgdGl0bGUgd2lsbCBiZSB1cGRhdGVkIGluIG9uYXR0YWNoLgogICAgIFRy
ZWVFbGVtZW50LmNhbGwodGhpcywgIiIsIG5vZGUsIGhhc0NoaWxkcmVuT3ZlcnJpZGUpOwpAQCAt
ODM5LDYgKzgzOSwxNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0U2libGluZzsKICAgICAg
ICAgICAgICAgICArK3RyZWVDaGlsZEluZGV4OwogICAgICAgICAgICAgfQorICAgICAgICAgICAg
Ly8gSWYgd2UgZXZlciBoYWQgc2hhZG93IHJvb3QgY2hpbGQsIGl0J3MgZ29pbmcgdG8gYmUgc2Vj
b25kIHRvIGxhc3QgKGJlZm9yZSBjbG9zaW5nIHRhZykKKyAgICAgICAgICAgIHZhciBzaGFkb3dS
b290Q2hpbGQgPSB0cmVlRWxlbWVudC5jaGlsZHJlblt0cmVlRWxlbWVudC5jaGlsZHJlbi5sZW5n
dGggLSAyXTsKKyAgICAgICAgICAgIGlmIChzaGFkb3dSb290Q2hpbGQgJiYgc2hhZG93Um9vdENo
aWxkLnJlcHJlc2VudGVkT2JqZWN0Lm5vZGVUeXBlKCkgPT09IE5vZGUuU0hBRE9XX1JPT1RfTk9E
RSkgeworICAgICAgICAgICAgICAgIGlmICghbm9kZS5zaGFkb3dSb290KQorICAgICAgICAgICAg
ICAgICAgICB0cmVlRWxlbWVudC5yZW1vdmVDaGlsZChzaGFkb3dSb290Q2hpbGQpOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQucmVwcmVzZW50
ZWRPYmplY3QgPSBub2RlLnNoYWRvd1Jvb3Q7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUu
c2hhZG93Um9vdCkKKyAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5pbnNlcnRDaGlsZEVsZW1l
bnQobm9kZS5zaGFkb3dSb290LCB0cmVlQ2hpbGRJbmRleCk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBSZW1vdmUgYW55IHRyZWUgZWxlbWVudHMgdGhhdCBubyBsb25nZXIgaGF2ZSB0aGlzIG5v
ZGUgKG9yIHRoaXMgbm9kZSdzIGNvbnRlbnREb2N1bWVudCkgYXMgdGhlaXIgcGFyZW50LgpAQCAt
MTUyMiwxMiArMTUzMSwxNCBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbihzdHJpbmcsIHN0cmlu
Zywgc3RyaW5nLCBib29sZWFuPSwgc3RyaW5nPSk9fSBsaW5raWZ5CiAgICAgICovCi0gICAgX2J1
aWxkVGFnRE9NOiBmdW5jdGlvbihwYXJlbnRFbGVtZW50LCB0YWdOYW1lLCBpc0Nsb3NpbmdUYWcs
IGlzRGlzdGluY3RUcmVlRWxlbWVudCwgbGlua2lmeSkKKyAgICBfYnVpbGRUYWdET006IGZ1bmN0
aW9uKHBhcmVudEVsZW1lbnQsIHRhZ05hbWUsIGlzQ2xvc2luZ1RhZywgaXNEaXN0aW5jdFRyZWVF
bGVtZW50LCBsaW5raWZ5LCBpc1NoYWRvdykKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gLyoq
IEB0eXBlIFdlYkluc3BlY3Rvci5ET01Ob2RlICovIHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAg
ICAgICAgIHZhciBjbGFzc2VzID0gWyAid2Via2l0LWh0bWwtdGFnIiBdOwogICAgICAgICBpZiAo
aXNDbG9zaW5nVGFnICYmIGlzRGlzdGluY3RUcmVlRWxlbWVudCkKICAgICAgICAgICAgIGNsYXNz
ZXMucHVzaCgiY2xvc2UiKTsKKyAgICAgICAgaWYgKGlzU2hhZG93KQorICAgICAgICAgICAgY2xh
c3Nlcy5wdXNoKCJzaGFkb3ciKTsKICAgICAgICAgdmFyIHRhZ0VsZW1lbnQgPSBwYXJlbnRFbGVt
ZW50LmNyZWF0ZUNoaWxkKCJzcGFuIiwgY2xhc3Nlcy5qb2luKCIgIikpOwogICAgICAgICB0YWdF
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8IikpOwogICAgICAg
ICB2YXIgdGFnTmFtZUVsZW1lbnQgPSB0YWdFbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIiwgaXND
bG9zaW5nVGFnID8gIiIgOiAid2Via2l0LWh0bWwtdGFnLW5hbWUiKTsKQEAgLTE1NjIsMTIgKzE1
NzMsMTIgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKICAgICAgICAgICAgICAgICB2YXIg
dGFnTmFtZSA9IG5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7CiAgICAgICAgICAgICAgICAg
aWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9i
dWlsZFRhZ0RPTShpbmZvLnRpdGxlRE9NLCB0YWdOYW1lLCB0cnVlLCB0cnVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhpcy5fYnVpbGRUYWdET00oaW5mby50aXRsZURPTSwgdGFnTmFtZSwgdHJ1
ZSwgdHJ1ZSwgZmFsc2UsIG5vZGUuaW5TaGFkb3dUcmVlKCkpOwogICAgICAgICAgICAgICAgICAg
ICBpbmZvLmhhc0NoaWxkcmVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHRoaXMuX2J1aWxkVGFnRE9NKGlu
Zm8udGl0bGVET00sIHRhZ05hbWUsIGZhbHNlLCBmYWxzZSwgbGlua2lmeSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fYnVpbGRUYWdET00oaW5mby50aXRsZURPTSwgdGFnTmFtZSwgZmFsc2UsIGZh
bHNlLCBsaW5raWZ5LCBub2RlLmluU2hhZG93VHJlZSgpKTsKIAogICAgICAgICAgICAgICAgIHZh
ciB0ZXh0Q2hpbGQgPSB0aGlzLl9zaW5nbGVUZXh0Q2hpbGQobm9kZSk7CiAgICAgICAgICAgICAg
ICAgdmFyIHNob3dJbmxpbmVUZXh0ID0gdGV4dENoaWxkICYmIHRleHRDaGlsZC5ub2RlVmFsdWUo
KS5sZW5ndGggPCBQcmVmZXJlbmNlcy5tYXhJbmxpbmVUZXh0Q2hpbGRMZW5ndGg7CkBAIC0xNTc4
LDcgKzE1ODksNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Tm9kZUVsZW1lbnQudGV4dENvbnRlbnQg
PSAiXHUyMDI2IjsKICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8udGl0bGVET00uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MjAwQiIpKTsKICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB0aGlzLl9idWlsZFRhZ0RPTShpbmZvLnRpdGxl
RE9NLCB0YWdOYW1lLCB0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2J1
aWxkVGFnRE9NKGluZm8udGl0bGVET00sIHRhZ05hbWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgbm9k
ZS5pblNoYWRvd1RyZWUoKSk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
Ly8gSWYgdGhpcyBlbGVtZW50IG9ubHkgaGFzIGEgc2luZ2xlIGNoaWxkIHRoYXQgaXMgYSB0ZXh0
IG5vZGUsCkBAIC0xNjM5LDYgKzE2NTAsMTIgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZhciBjZGF0YUVsZW1lbnQgPSBp
bmZvLnRpdGxlRE9NLmNyZWF0ZUNoaWxkKCJzcGFuIiwgIndlYmtpdC1odG1sLXRleHQtbm9kZSIp
OwogICAgICAgICAgICAgICAgIGNkYXRhRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZSgiPCFbQ0RBVEFbIiArIG5vZGUubm9kZVZhbHVlKCkgKyAiXV0+IikpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIE5vZGUuU0hBRE9XX1JPT1Rf
Tk9ERToKKyAgICAgICAgICAgICAgICB2YXIgY2RhdGFFbGVtZW50ID0gaW5mby50aXRsZURPTS5j
cmVhdGVDaGlsZCgic3BhbiIsICJkb20tc2hhZG93LXJvb3QiKTsKKyAgICAgICAgICAgICAgICBj
ZGF0YUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIihzaGFkb3cp
IikpOworICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgICAgIHZhciBkZWZhdWx0RWxlbWVudCA9IGluZm8udGl0bGVET00uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKS5j
b2xsYXBzZVdoaXRlc3BhY2UoKSkpOwogICAgICAgICB9CkBAIC0xNjQ4LDcgKzE2NjUsNyBAQCBX
ZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfc2lu
Z2xlVGV4dENoaWxkOiBmdW5jdGlvbihub2RlKQogICAgIHsKLSAgICAgICAgaWYgKCFub2RlKQor
ICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5zaGFkb3dSb290KQogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAKICAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQ7CkBAIC0x
Nzc4LDYgKzE3OTUsNyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlVXBkYXRlciA9IGZ1bmN0
aW9uKHRyZWVPdXRsaW5lKQogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0
aGlzLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21B
Z2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuRG9jdW1l
bnRVcGRhdGVkLCB0aGlzLl9kb2N1bWVudFVwZGF0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMu
Q2hpbGROb2RlQ291bnRVcGRhdGVkLCB0aGlzLl9jaGlsZE5vZGVDb3VudFVwZGF0ZWQsIHRoaXMp
OworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01BZ2VudC5FdmVudHMuU2hhZG93Um9vdFVwZGF0ZWQsIHRoaXMuX3NoYWRvd1Jvb3RVcGRh
dGVkLCB0aGlzKTsKIAogICAgIHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7CiAgICAg
dGhpcy5fcmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107CkBAIC0xODI0LDYgKzE4NDIsMTMgQEAg
V2ViSW5zcGVjdG9yLkVsZW1lbnRzVHJlZVVwZGF0ZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKICAgICB9LAogCisgICAgX3NoYWRv
d1Jvb3RVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlY2Vu
dGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC5kYXRhLCBwYXJlbnQ6IGV2ZW50LmRh
dGEucGFyZW50Tm9kZSwgaW5zZXJ0ZWQ6IHRydWV9KTsKKyAgICAgICAgaWYgKHRoaXMuX3RyZWVP
dXRsaW5lLl92aXNpYmxlKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nv
b24oKTsKKyAgICB9LAorCiAgICAgX2NoaWxkTm9kZUNvdW50VXBkYXRlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLl90cmVlT3V0bGluZS5m
aW5kVHJlZUVsZW1lbnQoZXZlbnQuZGF0YSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXggNzBmMGUxMy4uYzhiZjc2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAt
MTA3MSw2ICsxMDcxLDEwIEBAIGlmcmFtZS5wYW5lbC5leHRlbnNpb24gewogICAgIG1hcmdpbi1s
ZWZ0OiAtMTJweAogfQogCisub3V0bGluZS1kaXNjbG9zdXJlIGxpIC53ZWJraXQtaHRtbC10YWcu
c2hhZG93IHsKKyBvcGFjaXR5OiAwLjc7Cit9CisKIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkgLndl
YmtpdC1odG1sLXRhZy5jbG9zZSB7CiAgICAgbWFyZ2luLWxlZnQ6IC0xMnB4OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qcwppbmRleCBlMmM0
MzY2Li45NTRjOTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3V0aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L3V0aWxpdGllcy5qcwpAQCAtMjE3LDYgKzIxNyw4IEBAIE5vZGUucHJvdG90eXBlLmVuY2xvc2lu
Z05vZGVXaXRoQ2xhc3MgPSBmdW5jdGlvbihjbGFzc05hbWUpCiAgICAgcmV0dXJuIHRoaXMucGFy
ZW50Tm9kZS5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKGNsYXNzTmFtZSk7CiB9CiAKK05v
ZGUuU0hBRE9XX1JPT1RfTk9ERSA9IDE0OworCiBFbGVtZW50LnByb3RvdHlwZS5xdWVyeSA9IGZ1
bmN0aW9uKHF1ZXJ5KQogewogICAgIHJldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuZXZhbHVhdGUo
cXVlcnksIHRoaXMsIG51bGwsIFhQYXRoUmVzdWx0LkZJUlNUX09SREVSRURfTk9ERV9UWVBFLCBu
dWxsKS5zaW5nbGVOb2RlVmFsdWU7Ci0tIAoxLjcuNy40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129028</attachid>
            <date>2012-02-27 06:35:39 -0800</date>
            <delta_ts>2012-02-27 07:06:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78202-20120227183537.patch</filename>
            <type>text/plain</type>
            <size>31341</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTQyZWE0ZWVhMmYyOGIz
NzAxZTg1NTIyZDVmOWRiNTlkNTRjNmYyYS4uZTFkYWIwMDM4MWRmN2M3NDUwYzRjMTIxMDUyZDAw
MzA2ZTMxYTk2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAyLTI3ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93XTogRXhw
b3NlIG9uZSBTaGFkb3dSb290IGluIHRoZSBFbGVtZW50cyBwYW5lbCAodW5kZXIgZXhwZXJpbWVu
dCBmbGFnKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzgyMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGRvbS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnB1c2hT
aGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OnBvcFNoYWRvd1Jvb3Qp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
QWdlbnQ6OnVuYmluZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YXNz
ZXJ0RWRpdGFibGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojph
c3NlcnRFZGl0YWJsZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01BZ2VudDo6c2V0QXR0cmlidXRlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OnNldEF0dHJpYnV0ZXNBc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6cmVtb3ZlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6c2V0T3V0ZXJIVE1MKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFn
ZW50OjpzZXROb2RlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
Om1vdmVUbyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRQdXNo
U2hhZG93Um9vdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50Ojp3aWxsUG9wU2hhZG93Um9vdCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3Rv
ckRPTUFnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUHVz
aFNoYWRvd1Jvb3RJbXBsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUHVzaFNoYWRvd1Jvb3QpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdCk6
CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZUNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZSk6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01O
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5oYXNDaGlsZE5v
ZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5pc0luU2hhZG93
VHJlZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUuX2luc2VydENo
aWxkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZS5fc2V0Q2hpbGRy
ZW5QYXlsb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01Eb2N1bWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NQWdlbnQucHJvdG90eXBlLl9zZXREZXRhY2hlZFJvb3QpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTUFnZW50LnByb3RvdHlwZS5fc2hhZG93Um9vdFBvcHBlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUuY2hpbGROb2Rl
UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUu
c2hhZG93Um9vdFB1c2hlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5w
cm90b3R5cGUuc2hhZG93Um9vdFBvcHBlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
TWVtb3J5U3RhdGlzdGljcy5qczoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4cGVyaW1lbnRzU2V0dGluZ3MpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC53ZWJr
aXQtaHRtbC10YWcuc2hhZG93LCAud2Via2l0LWh0bWwtZnJhZ21lbnQuc2hhZG93KToKKwogMjAx
Mi0wMi0yNyAgRGFuIEJlYW0gIDxkYmVhbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQ2xvc2UgVGFiYmVkUGFuZXMgb24gbWlkZGxlIGNsaWNrIG9mIHRhYiBoYW5kbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAppbmRleCBmMWM2ODI2NWE2ZmI0YTAxYzNhODBjNmZm
ZmU2NzU4YzIxNmI5YjczLi5mMDQ2YzNmMDA1MmZmNGRlNGYzODExMDdiYTZhN2MxNzkxMTFmMjhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRl
bnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2lu
Y2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290Lmgi
CiAjaW5jbHVkZSAiVGV4dC5oIgpAQCAtNTYsNiArNTcsNyBAQCB2b2lkIFNoYWRvd1RyZWU6OnB1
c2hTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCiAjZW5kaWYKIAogICAgIG1fc2hh
ZG93Um9vdHMucHVzaChzaGFkb3dSb290KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFB1c2hTaGFkb3dSb290KGhvc3QoKSwgc2hhZG93Um9vdCk7CiB9CiAKIFNoYWRvd1Jvb3Qq
IFNoYWRvd1RyZWU6OnBvcFNoYWRvd1Jvb3QoKQpAQCAtNjMsNiArNjUsNyBAQCBTaGFkb3dSb290
KiBTaGFkb3dUcmVlOjpwb3BTaGFkb3dSb290KCkKICAgICBpZiAoIWhhc1NoYWRvd1Jvb3QoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQ
b3BTaGFkb3dSb290KGhvc3QoKSwgbV9zaGFkb3dSb290cy5oZWFkKCkpOwogICAgIHJldHVybiBt
X3NoYWRvd1Jvb3RzLnJlbW92ZUhlYWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvci5qc29uCmluZGV4IDI0ZWM3MmVjOThkMjQ5YTYwNDg1YjliNTIxNDI3MWI0ZDQ2NTg0
ZDEuLmJhMWQ3YmRjMTY3ZjQyZTkyMmE1NDI5NmI5ZGY4NzZlMzk5N2U5YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTEyOTgsNyArMTI5OCw4IEBACiAgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAieG1sVmVyc2lvbiIsICJ0eXBlIjogInN0cmluZyIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICI8Y29kZT5Eb2N1bWVudDwvY29kZT4n
cyBYTUwgdmVyc2lvbiBpbiBjYXNlIG9mIFhNTCBkb2N1bWVudHMuIiB9LAogICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiPGNvZGU+QXR0cjwvY29kZT4ncyBuYW1lLiIgfSwKICAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YWx1ZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICI8Y29kZT5BdHRyPC9jb2RlPidzIHZhbHVlLiIg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjb250ZW50RG9jdW1lbnQiLCAiJHJl
ZiI6ICJOb2RlIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIkNvbnRlbnQgZG9j
dW1lbnQgZm9yIGZyYW1lIG93bmVyIGVsZW1lbnRzLiIgfQorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImNvbnRlbnREb2N1bWVudCIsICIkcmVmIjogIk5vZGUiLCAib3B0aW9uYWwiOiB0
cnVlLCAiZGVzY3JpcHRpb24iOiAiQ29udGVudCBkb2N1bWVudCBmb3IgZnJhbWUgb3duZXIgZWxl
bWVudHMuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNoYWRvd1Jvb3RzIiwg
InR5cGUiOiAiYXJyYXkiLCAib3B0aW9uYWwiOiB0cnVlLCAiaXRlbXMiOiB7ICIkcmVmIjogIk5v
ZGUiIH0sICJkZXNjcmlwdGlvbiI6ICJTaGFkb3cgcm9vdCBsaXN0IGZvciBnaXZlbiBlbGVtZW50
IGhvc3QuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRp
b24iOiAiRE9NIGludGVyYWN0aW9uIGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mIG1pcnJvciBv
YmplY3RzIHRoYXQgcmVwcmVzZW50IHRoZSBhY3R1YWwgRE9NIG5vZGVzLiBET01Ob2RlIGlzIGEg
YmFzZSBub2RlIG1pcnJvciB0eXBlLiIKICAgICAgICAgICAgIH0sCkBAIC0xNjgyLDYgKzE2ODMs
MjQgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAiJHJlZiI6ICJO
b2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiSWQgb2YgdGhlIG5vZGUgdGhhdCBoYXMgYmVlbiByZW1v
dmVkLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIk1pcnJvcnMgPGNvZGU+RE9NTm9kZVJlbW92ZWQ8L2NvZGU+IGV2ZW50LiIKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAic2hhZG93Um9v
dFB1c2hlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiaG9zdElkIiwgIiRyZWYiOiAiTm9kZUlkIiwgImRlc2NyaXB0aW9u
IjogIkhvc3QgZWxlbWVudCBpZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
cm9vdCIsICIkcmVmIjogIk5vZGUiLCAiZGVzY3JpcHRpb24iOiAiU2hhZG93IHJvb3QuIiB9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FsbGVk
IHdoZW4gc2hhZG93IHJvb3QgaXMgcHVzaGVkIGludG8gdGhlIGVsZW1lbnQuIiwKKyAgICAgICAg
ICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJzaGFkb3dSb290UG9wcGVkIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJob3N0SWQi
LCAiJHJlZiI6ICJOb2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiSG9zdCBlbGVtZW50IGlkLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJyb290SWQiLCAiJHJlZiI6ICJOb2RlSWQi
LCAiZGVzY3JpcHRpb24iOiAiU2hhZG93IHJvb3QgaWQuIiB9CisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2FsbGVkIHdoZW4gc2hhZG93IHJvb3Qg
aXMgcG9wcGVkIGZyb20gdGhlIGVsZW1lbnQuIiwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjog
dHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDBkZWE4NTlmYTgzZjQxODkz
ZGY5ZjI3OGEyODNhOGYyODgxZWE0YjUuLjlhMzQ4MGQ1MjVhZjA3ZWJmNWVjNjAyMjM3MjUwY2Vl
N2U2NDVlM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcApAQCAtODEsNiArODEsOCBAQAogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgorI2luY2x1ZGUgIlNoYWRvd1RyZWUuaCIKICNp
bmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIK
ICNpbmNsdWRlICJUZXh0LmgiCkBAIC0zMzUsNiArMzM3LDExIEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnVuYmluZChOb2RlKiBub2RlLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApCiAgICAgICAg
IHVuYmluZChmcmFtZU93bmVyLT5jb250ZW50RG9jdW1lbnQoKSwgbm9kZXNNYXApOwogICAgIH0K
IAorICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KG5vZGUpLT5oYXNT
aGFkb3dSb290KCkpIHsKKyAgICAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gdG9FbGVtZW50
KG5vZGUpLT5zaGFkb3dUcmVlKCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOyByb290OyByb290ID0g
cm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAgICAgICB1bmJpbmQocm9vdCwgbm9kZXNN
YXApOworICAgIH0KKwogICAgIG5vZGVzTWFwLT5yZW1vdmUobm9kZSk7CiAgICAgYm9vbCBjaGls
ZHJlblJlcXVlc3RlZCA9IG1fY2hpbGRyZW5SZXF1ZXN0ZWQuY29udGFpbnMoaWQpOwogICAgIGlm
IChjaGlsZHJlblJlcXVlc3RlZCkgewpAQCAtMzcxLDE4ICszNzgsMzEgQEAgRWxlbWVudCogSW5z
cGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkKQogICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiB9CiAKK05vZGUqIEluc3Bl
Y3RvckRPTUFnZW50Ojphc3NlcnRFZGl0YWJsZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkKQoreworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5n
LCBub2RlSWQpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAo
bm9kZS0+aXNJblNoYWRvd1RyZWUoKSkgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ2FuIG5v
dCBlZGl0IG5vZGVzIGZyb20gc2hhZG93IHRyZWVzIjsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCisgICAgcmV0dXJuIG5vZGU7Cit9CiAKLUhUTUxFbGVtZW50KiBJbnNwZWN0b3JET01BZ2Vu
dDo6YXNzZXJ0SFRNTEVsZW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
KQorRWxlbWVudCogSW5zcGVjdG9yRE9NQWdlbnQ6OmFzc2VydEVkaXRhYmxlRWxlbWVudChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiB7CiAgICAgRWxlbWVudCogZWxlbWVu
dCA9IGFzc2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFlbGVtZW50
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICghZWxlbWVudC0+aXNIVE1MRWxlbWVudCgp
KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJOb2RlIGlzIG5vdCBhbiBIVE1MIEVsZW1lbnQi
OworICAgIGlmIChlbGVtZW50LT5pc0luU2hhZG93VHJlZSgpKSB7CisgICAgICAgICplcnJvclN0
cmluZyA9ICJDYW4gbm90IGVkaXQgZWxlbWVudHMgZnJvbSBzaGFkb3cgdHJlZXMiOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7Cisg
ICAgcmV0dXJuIGVsZW1lbnQ7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldERvY3Vt
ZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIHJvb3QpCkBAIC00MDMs
NyArNDIzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RG9jdW1lbnQoRXJyb3JTdHJp
bmcqLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgcm9vdCkKIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkKQogewogICAgIE5vZGUqIG5v
ZGUgPSBub2RlRm9ySWQobm9kZUlkKTsKLSAgICBpZiAoIW5vZGUgfHwgKG5vZGUtPm5vZGVUeXBl
KCkgIT0gTm9kZTo6RUxFTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9D
VU1FTlRfTk9ERSAmJiBub2RlLT5ub2RlVHlwZSgpICE9IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREUpIHx8IG5vZGUtPmlzU2hhZG93Um9vdCgpKQorICAgIGlmICghbm9kZSB8fCAobm9kZS0+
bm9kZVR5cGUoKSAhPSBOb2RlOjpFTEVNRU5UX05PREUgJiYgbm9kZS0+bm9kZVR5cGUoKSAhPSBO
b2RlOjpET0NVTUVOVF9OT0RFICYmIG5vZGUtPm5vZGVUeXBlKCkgIT0gTm9kZTo6RE9DVU1FTlRf
RlJBR01FTlRfTk9ERSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAobV9jaGlsZHJlblJlcXVl
c3RlZC5jb250YWlucyhub2RlSWQpKQogICAgICAgICByZXR1cm47CkBAIC01MzQsNyArNTU0LDcg
QEAgaW50IEluc3BlY3RvckRPTUFnZW50Ojpib3VuZE5vZGVJZChOb2RlKiBub2RlKQogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKLSAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmlu
ZywgZWxlbWVudElkKTsKKyAgICBFbGVtZW50KiBlbGVtZW50ID0gYXNzZXJ0RWRpdGFibGVFbGVt
ZW50KGVycm9yU3RyaW5nLCBlbGVtZW50SWQpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC01NDMsNyArNTYzLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0
QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZWxlbWVudEkKIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QXR0cmlidXRlc0FzVGV4dChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3Ry
aW5nKiBjb25zdCBuYW1lKQogewotICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhc3NlcnRFbGVtZW50
KGVycm9yU3RyaW5nLCBlbGVtZW50SWQpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBhc3NlcnRF
ZGl0YWJsZUVsZW1lbnQoZXJyb3JTdHJpbmcsIGVsZW1lbnRJZCk7CiAgICAgaWYgKCFlbGVtZW50
KQogICAgICAgICByZXR1cm47CiAKQEAgLTU4OCw3ICs2MDgsNyBAQCB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpzZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IGVsZW1lbgogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVBdHRyaWJ1dGUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7
Ci0gICAgRWxlbWVudCogZWxlbWVudCA9IGFzc2VydEVsZW1lbnQoZXJyb3JTdHJpbmcsIGVsZW1l
bnRJZCk7CisgICAgRWxlbWVudCogZWxlbWVudCA9IGFzc2VydEVkaXRhYmxlRWxlbWVudChlcnJv
clN0cmluZywgZWxlbWVudElkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtNTk3LDcgKzYxNyw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUF0dHJp
YnV0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBlbGVtZW50SWQsCiAKIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnJlbW92ZU5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQg
bm9kZUlkKQogewotICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCBub2Rl
SWQpOworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnRFZGl0YWJsZU5vZGUoZXJyb3JTdHJpbmcsIG5v
ZGVJZCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAKQEAgLTY2Miw3ICs2ODIs
NyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRPdXRlckhUTUwoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7CisgICAgTm9k
ZSogbm9kZSA9IGFzc2VydEVkaXRhYmxlTm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtNjkwLDcgKzcxMCw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldE91dGVySFRNTChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBub2RlSWQsIGNvbnN0CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldE5vZGVWYWx1ZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFsdWUp
CiB7Ci0gICAgTm9kZSogbm9kZSA9IGFzc2VydE5vZGUoZXJyb3JTdHJpbmcsIG5vZGVJZCk7Cisg
ICAgTm9kZSogbm9kZSA9IGFzc2VydEVkaXRhYmxlTm9kZShlcnJvclN0cmluZywgbm9kZUlkKTsK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTAzOCwxNyArMTA1OCwxNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWRlSGlnaGxpZ2h0KEVycm9yU3RyaW5nKikKIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6bW92ZVRvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCwgaW50IHRhcmdldEVsZW1lbnRJZCwgY29uc3QgaW50KiBjb25zdCBhbmNob3JO
b2RlSWQsIGludCogbmV3Tm9kZUlkKQogewotICAgIE5vZGUqIG5vZGUgPSBhc3NlcnROb2RlKGVy
cm9yU3RyaW5nLCBub2RlSWQpOworICAgIE5vZGUqIG5vZGUgPSBhc3NlcnRFZGl0YWJsZU5vZGUo
ZXJyb3JTdHJpbmcsIG5vZGVJZCk7CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gYXNzZXJ0RWxlbWVudChlcnJvclN0cmluZywg
dGFyZ2V0RWxlbWVudElkKTsKKyAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gYXNzZXJ0RWRp
dGFibGVFbGVtZW50KGVycm9yU3RyaW5nLCB0YXJnZXRFbGVtZW50SWQpOwogICAgIGlmICghdGFy
Z2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTm9kZSogYW5jaG9yTm9kZSA9IDA7
CiAgICAgaWYgKGFuY2hvck5vZGVJZCAmJiAqYW5jaG9yTm9kZUlkKSB7Ci0gICAgICAgIGFuY2hv
ck5vZGUgPSBhc3NlcnROb2RlKGVycm9yU3RyaW5nLCAqYW5jaG9yTm9kZUlkKTsKKyAgICAgICAg
YW5jaG9yTm9kZSA9IGFzc2VydEVkaXRhYmxlTm9kZShlcnJvclN0cmluZywgKmFuY2hvck5vZGVJ
ZCk7CiAgICAgICAgIGlmICghYW5jaG9yTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgaWYgKGFuY2hvck5vZGUtPnBhcmVudE5vZGUoKSAhPSB0YXJnZXRFbGVtZW50KSB7CkBAIC0x
MTU5LDkgKzExNzksNiBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gSW5zcGVjdG9yRE9N
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTm9kZShOb2RlKiBub2RlLCBpbgogICAgICAgICBsb2NhbE5h
bWUgPSBub2RlLT5sb2NhbE5hbWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOb2RlOjpE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBpZiAoIW5vZGUtPmlzU2hhZG93Um9vdCgp
KQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIC8vIEZhbGwgdGhyb3VnaAogICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICBjYXNlIE5vZGU6OkVMRU1FTlRfTk9ERToKICAgICBk
ZWZhdWx0OgpAQCAtMTE5NCw2ICsxMjExLDEyIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JOb2RlKE5vZGUqIG5vZGUsIGluCiAg
ICAgICAgICAgICBpZiAoZG9jKQogICAgICAgICAgICAgICAgIHZhbHVlLT5zZXRDb250ZW50RG9j
dW1lbnQoYnVpbGRPYmplY3RGb3JOb2RlKGRvYywgMCwgbm9kZXNNYXApKTsKICAgICAgICAgfQor
ICAgICAgICBpZiAoZWxlbWVudC0+aGFzU2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+IHNoYWRvd1Jvb3RzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgp
OworICAgICAgICAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gZWxlbWVudC0+c2hhZG93VHJl
ZSgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93
Um9vdCgpKQorICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3RzLT5wdXNoT2JqZWN0KGJ1aWxkT2Jq
ZWN0Rm9yTm9kZShyb290LCAwLCBub2Rlc01hcCkpOworICAgICAgICAgICAgdmFsdWUtPnNldFNo
YWRvd1Jvb3RzKHNoYWRvd1Jvb3RzKTsKKyAgICAgICAgfQogICAgIH0gZWxzZSBpZiAobm9kZS0+
aXNEb2N1bWVudE5vZGUoKSkgewogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNf
Y2FzdDxEb2N1bWVudCo+KG5vZGUpOwogICAgICAgICB2YWx1ZS0+c2V0RG9jdW1lbnRVUkwoZG9j
dW1lbnRVUkxTdHJpbmcoZG9jdW1lbnQpKTsKQEAgLTE0NzUsNiArMTQ5OCwyMSBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUqIG5vZGUpCiAgICAg
bV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+c2NoZWR1bGVGb3Ioc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG5vZGUpKTsKIH0KIAordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUHVzaFNoYWRvd1Jv
b3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBpbnQgaG9zdElkID0g
bV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChob3N0KTsKKyAgICBpZiAoaG9zdElkKQorICAgICAg
ICBtX2Zyb250ZW5kLT5zaGFkb3dSb290UHVzaGVkKGhvc3RJZCwgYnVpbGRPYmplY3RGb3JOb2Rl
KHJvb3QsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApKTsKK30KKwordm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCogcm9v
dCkKK3sKKyAgICBpbnQgaG9zdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChob3N0KTsK
KyAgICBpbnQgcm9vdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChyb290KTsKKyAgICBp
ZiAoaG9zdElkICYmIHJvb3RJZCkKKyAgICAgICAgbV9mcm9udGVuZC0+c2hhZG93Um9vdFBvcHBl
ZChob3N0SWQsIHJvb3RJZCk7Cit9CisKIE5vZGUqIEluc3BlY3RvckRPTUFnZW50Ojpub2RlRm9y
UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCiB7CiAgICAgLy8gVGhlIHBhdGggaXMgb2YgZm9ybSAi
MSxIVE1MLDIsQk9EWSwxLERJViIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKaW5kZXggZTQ1ZDQ2MzZhY2VhNzczZGIzODE4YmUzMzFmZTc2YTRiOWFhYmZh
Yi4uNWExNTAwMWY4OWU3OWQ0MDUyZWY5M2E2NzRlZjBmMWVkODY2MTM3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTY5LDYgKzY5LDcgQEAg
Y2xhc3MgTmFtZU5vZGVNYXA7CiBjbGFzcyBOb2RlOwogY2xhc3MgUmV2YWxpZGF0ZVN0eWxlQXR0
cmlidXRlVGFzazsKIGNsYXNzIFNjcmlwdFZhbHVlOworY2xhc3MgU2hhZG93Um9vdDsKIAogc3Ry
dWN0IEhpZ2hsaWdodDsKIHN0cnVjdCBIaWdobGlnaHREYXRhOwpAQCAtMTY3LDYgKzE2OCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHN0eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9y
PEVsZW1lbnQqPiYgZWxlbWVudHMpOwogICAgIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKENo
YXJhY3RlckRhdGEqKTsKICAgICB2b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSopOwor
ICAgIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwor
ICAgIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwog
CiAgICAgTm9kZSogbm9kZUZvcklkKGludCBub2RlSWQpOwogICAgIGludCBib3VuZE5vZGVJZChO
b2RlKik7CkBAIC0yMDcsOCArMjEwLDEwIEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoTWFw
PFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKICAgICBpbnQgYmluZChOb2RlKiwgTm9k
ZVRvSWRNYXAqKTsKICAgICB2b2lkIHVuYmluZChOb2RlKiwgTm9kZVRvSWRNYXAqKTsKKwogICAg
IEVsZW1lbnQqIGFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKLSAgICBI
VE1MRWxlbWVudCogYXNzZXJ0SFRNTEVsZW1lbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsK
KyAgICBOb2RlKiBhc3NlcnRFZGl0YWJsZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsK
KyAgICBFbGVtZW50KiBhc3NlcnRFZGl0YWJsZUVsZW1lbnQoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkKTsKIAogICAgIGludCBwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqKTsKICAgICB2b2lk
IHB1c2hDaGlsZE5vZGVzVG9Gcm9udGVuZChpbnQgbm9kZUlkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNTMy
ZWI4NjY1M2I1ZTFmNTk2ZmM3OTFlOTIxMDVkODVjNzI3NTZlMy4uN2ExZjQ5YmY5YTllNzQ4MDVh
MDU3MjQyNTMyMGVkOTY4YjBkZjFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTIwMSw2ICsyMDEsMTggQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKgogICAgICAgICBjc3NBZ2VudC0+bWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFB1c2hT
aGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBF
bGVtZW50KiBob3N0LCBTaGFkb3dSb290KiByb290KQoreworICAgIGlmIChJbnNwZWN0b3JET01B
Z2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JET01BZ2VudCgp
KQorICAgICAgICBkb21BZ2VudC0+ZGlkUHVzaFNoYWRvd1Jvb3QoaG9zdCwgcm9vdCk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCogaG9zdCwgU2hh
ZG93Um9vdCogcm9vdCkKK3sKKyAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKKyAgICAgICAgZG9tQWdl
bnQtPndpbGxQb3BTaGFkb3dSb290KGhvc3QsIHJvb3QpOworfQorCiB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwg
dW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCA1ZDVjMmQzZDNkYjY0OTRjNTBmZWNjYzYxYWU0ZGEwY2Q2NjMwYmJkLi43ZDU4ODcwZjAy
N2Y2ZWVkNzlhZjc2ZGE4NGIyMGNkYTIzNWFlY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC02NCw2ICs2NCw3IEBA
IGNsYXNzIFNjcmlwdEFyZ3VtZW50czsKIGNsYXNzIFNjcmlwdENhbGxTdGFjazsKIGNsYXNzIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBTY3JpcHRQcm9maWxlOworY2xhc3MgU2hhZG93
Um9vdDsKIGNsYXNzIFN0b3JhZ2VBcmVhOwogY2xhc3MgV29ya2VyQ29udGV4dDsKIGNsYXNzIFdv
cmtlckNvbnRleHRQcm94eTsKQEAgLTkzLDYgKzk0LDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2
b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoRG9jdW1lbnQqLCBOb2RlKik7CiAgICAgc3RhdGlj
IHZvaWQgZnJhbWVXaW5kb3dEaXNjYXJkZWQoRnJhbWUqLCBET01XaW5kb3cqKTsKICAgICBzdGF0
aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZChEb2N1bWVudCopOworICAgIHN0YXRpYyB2
b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKKyAgICBz
dGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7
CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiwgY29uc3Qg
SGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29s
IGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjQzLDYgKzI0Niw4IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0ckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIE5vZGUqKTsKICAgICBzdGF0aWMgdm9pZCBmcmFtZVdpbmRvd0Rpc2NhcmRlZEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIERPTVdpbmRvdyopOwogICAgIHN0YXRpYyB2b2lkIG1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGlj
IHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50
KiBob3N0LCBTaGFkb3dSb290Kik7CisgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAK
ICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsK
ICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
Kik7CkBAIC00NzgsNiArNDgzLDI0IEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoRG9jdW1lbnQqIGRvY3VtZW50CiAjZW5kaWYK
IH0KIAoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQdXNoU2hhZG93
Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290KiByb290KQoreworI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYg
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5n
QWdlbnRzRm9yRG9jdW1lbnQoaG9zdC0+b3duZXJEb2N1bWVudCgpKSkKKyAgICAgICAgZGlkUHVz
aFNoYWRvd1Jvb3RJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGhvc3QsIHJvb3QpOworI2VuZGlm
Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCogcm9vdCkKK3sKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckRvY3VtZW50KGhvc3QtPm93bmVyRG9jdW1lbnQoKSkpCisgICAgICAgIHdpbGxQ
b3BTaGFkb3dSb290SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBob3N0LCByb290KTsKKyNlbmRp
ZgorfQorCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KFBhZ2UqIHBhZ2UsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCmluZGV4IGZjZDFmM2QwYmI5
YzdmOGQ3Yjc4NGMzMjU5NWZlZmZmZjJlM2UzYmUuLmE2ZTdhYThiNmRjZmIzMjNkMzM0YzA0NjQ4
NWM3ZWNlNjQ4ZWI1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
Q29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNv
bGVBZ2VudC5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKIHZvaWQgUGFnZUNvbnNvbGVB
Z2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2Rl
SWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IG1faW5zcGVjdG9yRE9NQWdlbnQtPm5vZGVGb3JJZChu
b2RlSWQpOwotICAgIGlmICghbm9kZSkgeworICAgIGlmICghbm9kZSB8fCBub2RlLT5pc0luU2hh
ZG93VHJlZSgpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJub2RlSWQgaXMgbm90IHZhbGlk
IjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTUFnZW50LmpzCmluZGV4IDJlZjAxNjk0MzMzMDI1ZDZjMGRhZTk0MzhjNjYw
MjFhMmM3YmI3ZWYuLjM2NmQ0YThjMGI4NGZkMDJkODgzMjU5NTMyOTc1ZGRlMzI4YzRjODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NQWdlbnQuanMK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01BZ2VudC5qcwpAQCAt
MzMsMTEgKzMzLDEzIEBACiAgKiBAY29uc3RydWN0b3IKICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9y
LkRPTUFnZW50fSBkb21BZ2VudAogICogQHBhcmFtIHs/V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50
fSBkb2MKKyAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNJblNoYWRvd1RyZWUKICAqIEBwYXJhbSB7RE9N
QWdlbnQuTm9kZX0gcGF5bG9hZAogICovCi1XZWJJbnNwZWN0b3IuRE9NTm9kZSA9IGZ1bmN0aW9u
KGRvbUFnZW50LCBkb2MsIHBheWxvYWQpIHsKK1dlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rp
b24oZG9tQWdlbnQsIGRvYywgaXNJblNoYWRvd1RyZWUsIHBheWxvYWQpIHsKICAgICB0aGlzLl9k
b21BZ2VudCA9IGRvbUFnZW50OwogICAgIHRoaXMub3duZXJEb2N1bWVudCA9IGRvYzsKKyAgICB0
aGlzLl9pc0luU2hhZG93VHJlZSA9IGlzSW5TaGFkb3dUcmVlOwogCiAgICAgdGhpcy5pZCA9IHBh
eWxvYWQubm9kZUlkOwogICAgIGRvbUFnZW50Ll9pZFRvRE9NTm9kZVt0aGlzLmlkXSA9IHRoaXM7
CkBAIC00Niw2ICs0OCw4IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rpb24oZG9tQWdl
bnQsIGRvYywgcGF5bG9hZCkgewogICAgIHRoaXMuX2xvY2FsTmFtZSA9IHBheWxvYWQubG9jYWxO
YW1lOwogICAgIHRoaXMuX25vZGVWYWx1ZSA9IHBheWxvYWQubm9kZVZhbHVlOwogCisgICAgdGhp
cy5fc2hhZG93Um9vdHMgPSBbXTsKKwogICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSBbXTsKICAgICB0
aGlzLl9hdHRyaWJ1dGVzTWFwID0ge307CiAgICAgaWYgKHBheWxvYWQuYXR0cmlidXRlcykKQEAg
LTY5LDYgKzczLDE0IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rpb24oZG9tQWdlbnQs
IGRvYywgcGF5bG9hZCkgewogICAgICAgICB0aGlzLl9yZW51bWJlcigpOwogICAgIH0KIAorICAg
IGlmIChwYXlsb2FkLnNoYWRvd1Jvb3RzICYmIFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRp
bmdzLnNob3dTaGFkb3dET00uaXNFbmFibGVkKCkpIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBwYXlsb2FkLnNoYWRvd1Jvb3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIg
cm9vdCA9IHBheWxvYWQuc2hhZG93Um9vdHNbaV07CisgICAgICAgICAgICB2YXIgbm9kZSA9IG5l
dyBXZWJJbnNwZWN0b3IuRE9NTm9kZSh0aGlzLl9kb21BZ2VudCwgdGhpcy5vd25lckRvY3VtZW50
LCB0cnVlLCByb290KTsKKyAgICAgICAgICAgIHRoaXMuX3NoYWRvd1Jvb3RzLnB1c2gobm9kZSk7
CisgICAgICAgIH0KKyAgICB9CisKICAgICBpZiAodGhpcy5fbm9kZVR5cGUgPT09IE5vZGUuRUxF
TUVOVF9OT0RFKSB7CiAgICAgICAgIC8vIEhUTUwgYW5kIEJPRFkgZnJvbSBpbnRlcm5hbCBpZnJh
bWVzIHNob3VsZCBub3Qgb3ZlcndyaXRlIHRvcC1sZXZlbCBvbmVzLgogICAgICAgICBpZiAodGhp
cy5vd25lckRvY3VtZW50ICYmICF0aGlzLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYm
IHRoaXMuX25vZGVOYW1lID09PSAiSFRNTCIpCkBAIC0xMTcsNyArMTI5LDcgQEAgV2ViSW5zcGVj
dG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAqLwogICAgIGhhc0NoaWxkTm9kZXM6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9jaGlsZE5vZGVDb3VudCA+IDA7
CisgICAgICAgIHJldHVybiB0aGlzLl9jaGlsZE5vZGVDb3VudCA+IDAgfHwgISF0aGlzLl9zaGFk
b3dSb290cy5sZW5ndGg7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTM3LDYgKzE0OSwxNCBAQCBX
ZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCisgICAgaXNJblNoYWRvd1RyZWU6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pc0luU2hhZG93VHJlZTsKKyAgICB9
LAorCisgICAgLyoqCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwogICAgIG5vZGVO
YW1lSW5Db3JyZWN0Q2FzZTogZnVuY3Rpb24oKQpAQCAtNDAwLDExICs0MjAsMTEgQEAgV2ViSW5z
cGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9pbnNlcnRDaGlsZDog
ZnVuY3Rpb24ocHJldiwgcGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHZhciBub2RlID0gbmV3IFdl
Ykluc3BlY3Rvci5ET01Ob2RlKHRoaXMuX2RvbUFnZW50LCB0aGlzLm93bmVyRG9jdW1lbnQsIHBh
eWxvYWQpOworICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NTm9kZSh0aGlz
Ll9kb21BZ2VudCwgdGhpcy5vd25lckRvY3VtZW50LCB0aGlzLl9pc0luU2hhZG93VHJlZSwgcGF5
bG9hZCk7CiAgICAgICAgIGlmICghcHJldikgewogICAgICAgICAgICAgaWYgKCF0aGlzLmNoaWxk
cmVuKSB7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3Qgbm9kZQotICAgICAgICAgICAgICAgIHRo
aXMuY2hpbGRyZW4gPSBbIG5vZGUgXTsKKyAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuID0g
dGhpcy5fc2hhZG93Um9vdHMuY29uY2F0KFsgbm9kZSBdKTsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4udW5zaGlmdChub2RlKTsKICAgICAgICAgfSBl
bHNlCkBAIC00MzIsMTAgKzQ1MiwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGlmICh0aGlzLl9jb250ZW50RG9jdW1lbnQpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOworICAgICAgICB0aGlzLmNoaWxkcmVu
ID0gdGhpcy5fc2hhZG93Um9vdHMuc2xpY2UoKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBwYXlsb2Fkcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHBheWxvYWQgPSBwYXls
b2Fkc1tpXTsKLSAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5ET01Ob2Rl
KHRoaXMuX2RvbUFnZW50LCB0aGlzLm93bmVyRG9jdW1lbnQsIHBheWxvYWQpOworICAgICAgICAg
ICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUodGhpcy5fZG9tQWdlbnQsIHRo
aXMub3duZXJEb2N1bWVudCwgdGhpcy5faXNJblNoYWRvd1RyZWUsIHBheWxvYWQpOwogICAgICAg
ICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKG5vZGUpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMu
X3JlbnVtYmVyKCk7CkBAIC02NDIsNyArNjYyLDcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJv
dG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnQgPSBmdW5jdGlvbihkb21B
Z2VudCwgcGF5bG9hZCkKIHsKLSAgICBXZWJJbnNwZWN0b3IuRE9NTm9kZS5jYWxsKHRoaXMsIGRv
bUFnZW50LCB0aGlzLCBwYXlsb2FkKTsKKyAgICBXZWJJbnNwZWN0b3IuRE9NTm9kZS5jYWxsKHRo
aXMsIGRvbUFnZW50LCB0aGlzLCBmYWxzZSwgcGF5bG9hZCk7CiAgICAgdGhpcy5kb2N1bWVudFVS
TCA9IHBheWxvYWQuZG9jdW1lbnRVUkwgfHwgIiI7CiAgICAgdGhpcy54bWxWZXJzaW9uID0gcGF5
bG9hZC54bWxWZXJzaW9uOwogICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9OwpAQCAtODg3LDcgKzkw
Nyw3IEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAg
X3NldERldGFjaGVkUm9vdDogZnVuY3Rpb24ocGF5bG9hZCkKICAgICB7Ci0gICAgICAgIG5ldyBX
ZWJJbnNwZWN0b3IuRE9NTm9kZSh0aGlzLCBudWxsLCBwYXlsb2FkKTsKKyAgICAgICAgbmV3IFdl
Ykluc3BlY3Rvci5ET01Ob2RlKHRoaXMsIG51bGwsIGZhbHNlLCBwYXlsb2FkKTsKICAgICB9LAog
CiAgICAgLyoqCkBAIC05NDQsNiArOTY0LDEzIEBAIFdlYkluc3BlY3Rvci5ET01BZ2VudC5wcm90
b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9k
ZUlkfSByb290SWQKKyAgICAgKi8KKyAgICBfc2hhZG93Um9vdFBvcHBlZDogZnVuY3Rpb24ocm9v
dElkKQorICAgIHsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01BZ2VudC5O
b2RlfSBub2RlCiAgICAgICovCiAgICAgX3VuYmluZDogZnVuY3Rpb24obm9kZSkKQEAgLTEyNTMs
NiArMTI4MCwyNCBAQCBXZWJJbnNwZWN0b3IuRE9NRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAg
ICAgY2hpbGROb2RlUmVtb3ZlZDogZnVuY3Rpb24ocGFyZW50Tm9kZUlkLCBub2RlSWQpCiAgICAg
ewogICAgICAgICB0aGlzLl9kb21BZ2VudC5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnROb2RlSWQs
IG5vZGVJZCk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9k
ZUlkfSBob3N0SWQKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGV9IHJvb3QKKyAgICAgKi8K
KyAgICBzaGFkb3dSb290UHVzaGVkOiBmdW5jdGlvbihob3N0SWQsIHJvb3QpCisgICAgeworICAg
ICAgICB0aGlzLl9kb21BZ2VudC5fY2hpbGROb2RlSW5zZXJ0ZWQoaG9zdElkLCAwLCByb290KTsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGhvc3RJ
ZAorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSByb290SWQKKyAgICAgKi8KKyAgICBz
aGFkb3dSb290UG9wcGVkOiBmdW5jdGlvbihob3N0SWQsIHJvb3RJZCkKKyAgICB7CisgICAgICAg
IHRoaXMuX2RvbUFnZW50Ll9jaGlsZE5vZGVSZW1vdmVkKGhvc3RJZCwgcm9vdElkKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxl
bWVudHNUcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RWxlbWVudHNUcmVlT3V0bGluZS5qcwppbmRleCAxMzY3ZmRlZjYwNmM1MDdhZTVhYWE5YWE2NGY5
YjlkYTYyYmE3NTEzLi4wNzgxN2U4Y2NiZDdlMmRiYTZjZWY2MjFkNDE5NTRlYTMzNzBjNjMzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJl
ZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVt
ZW50c1RyZWVPdXRsaW5lLmpzCkBAIC0xNTA1LDYgKzE1MDUsOCBAQCBXZWJJbnNwZWN0b3IuRWxl
bWVudHNUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjbGFzc2VzID0gWyAi
d2Via2l0LWh0bWwtdGFnIiBdOwogICAgICAgICBpZiAoaXNDbG9zaW5nVGFnICYmIGlzRGlzdGlu
Y3RUcmVlRWxlbWVudCkKICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgiY2xvc2UiKTsKKyAgICAg
ICAgaWYgKG5vZGUuaXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgICAgIGNsYXNzZXMucHVzaCgi
c2hhZG93Iik7CiAgICAgICAgIHZhciB0YWdFbGVtZW50ID0gcGFyZW50RWxlbWVudC5jcmVhdGVD
aGlsZCgic3BhbiIsIGNsYXNzZXMuam9pbigiICIpKTsKICAgICAgICAgdGFnRWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiPCIpKTsKICAgICAgICAgdmFyIHRhZ05h
bWVFbGVtZW50ID0gdGFnRWxlbWVudC5jcmVhdGVDaGlsZCgic3BhbiIsIGlzQ2xvc2luZ1RhZyA/
ICIiIDogIndlYmtpdC1odG1sLXRhZy1uYW1lIik7CkBAIC0xNTI3LDEwICsxNTI5LDYgQEAgV2Vi
SW5zcGVjdG9yLkVsZW1lbnRzVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB2YXIg
aW5mbyA9IHt0aXRsZURPTTogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLCBoYXND
aGlsZHJlbjogdGhpcy5oYXNDaGlsZHJlbn07CiAKICAgICAgICAgc3dpdGNoIChub2RlLm5vZGVU
eXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgot
ICAgICAgICAgICAgICAgIGluZm8udGl0bGVET00uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIkRvY3VtZW50IEZyYWdtZW50IikpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
CiAgICAgICAgICAgICBjYXNlIE5vZGUuQVRUUklCVVRFX05PREU6CiAgICAgICAgICAgICAgICAg
dmFyIHZhbHVlID0gbm9kZS52YWx1ZSB8fCAiXHUyMDBCIjsgLy8gWmVybyB3aWR0aCBzcGFjZSB0
byBmb3JjZSBzaG93aW5nIGFuIGVtcHR5IHZhbHVlLgogICAgICAgICAgICAgICAgIHRoaXMuX2J1
aWxkQXR0cmlidXRlRE9NKGluZm8udGl0bGVET00sIG5vZGUubmFtZSwgdmFsdWUpOwpAQCAtMTYx
NiwxMCArMTYxNCwxNSBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIGNkYXRhRWxlbWVudCA9IGluZm8udGl0bGVET00u
Y3JlYXRlQ2hpbGQoInNwYW4iLCAid2Via2l0LWh0bWwtdGV4dC1ub2RlIik7CiAgICAgICAgICAg
ICAgICAgY2RhdGFFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCI8
IVtDREFUQVsiICsgbm9kZS5ub2RlVmFsdWUoKSArICJdXT4iKSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAg
ICAgICAgICAgICAgICB2YXIgZnJhZ21lbnRFbGVtZW50ID0gaW5mby50aXRsZURPTS5jcmVhdGVD
aGlsZCgic3BhbiIsICJ3ZWJraXQtaHRtbC1mcmFnbWVudCIpOworICAgICAgICAgICAgICAgIGZy
YWdtZW50RWxlbWVudC50ZXh0Q29udGVudCA9IG5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCku
Y29sbGFwc2VXaGl0ZXNwYWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuaXNJblNoYWRv
d1RyZWUoKSkKKyAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnRFbGVtZW50LmFkZFN0eWxlQ2xh
c3MoInNoYWRvdyIpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICB2YXIgZGVmYXVsdEVsZW1lbnQgPSBpbmZvLnRpdGxlRE9NLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5vZGUubm9kZU5hbWVJbkNvcnJlY3RD
YXNlKCkuY29sbGFwc2VXaGl0ZXNwYWNlKCkpKTsKKyAgICAgICAgICAgICAgICBpbmZvLnRpdGxl
RE9NLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG5vZGUubm9kZU5hbWVJbkNv
cnJlY3RDYXNlKCkuY29sbGFwc2VXaGl0ZXNwYWNlKCkpKTsKICAgICAgICAgfQotCiAgICAgICAg
IHJldHVybiBpbmZvOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvTWVtb3J5U3RhdGlzdGljcy5qcwppbmRleCBiYzVlZDljMjU0MzQ1YTU3
ZDI0YzI1OGNjZjM1M2E0ZjFlYTZkZTE2Li5kNDJmNmIyNjczMTA0Y2M3MTRkMjA2Nzc2MmU0YmNm
NjNmMDc0MzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L01lbW9yeVN0YXRpc3RpY3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9NZW1vcnlTdGF0aXN0aWNzLmpzCkBAIC03OSw3ICs3OSwxMCBAQCBXZWJJbnNwZWN0b3Iu
TWVtb3J5U3RhdGlzdGljcyA9IGZ1bmN0aW9uKHRpbWVsaW5lUGFuZWwsIHNpZGViYXJXaWR0aCkK
ICAgICBUaW1lbGluZUFnZW50LnNldEluY2x1ZGVNZW1vcnlEZXRhaWxzKHRydWUpOwogfQogCi0K
Ky8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0K
KyAqLwogV2ViSW5zcGVjdG9yLlN3YXRjaENoZWNrYm94ID0gZnVuY3Rpb24odGl0bGUsIGNvbG9y
KQogewogICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpA
QCAtMTE5LDcgKzEyMiw5IEBAIFdlYkluc3BlY3Rvci5Td2F0Y2hDaGVja2JveC5wcm90b3R5cGUg
PSB7CiAKIFdlYkluc3BlY3Rvci5Td2F0Y2hDaGVja2JveC5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CiAKLQorLyoqCisgKiBAY29uc3RydWN0b3IK
KyAqLwogV2ViSW5zcGVjdG9yLkNvdW50ZXJVSSA9IGZ1bmN0aW9uKG1lbW9yeUNvdW50ZXJzUGFu
ZSwgdGl0bGUsIGN1cnJlbnRWYWx1ZUxhYmVsLCByZ2IsIHZhbHVlR2V0dGVyKQogewogICAgIHRo
aXMuX21lbW9yeUNvdW50ZXJzUGFuZSA9IG1lbW9yeUNvdW50ZXJzUGFuZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDJiYTQ2NGU3ZThl
ZGYzMDhmNjBmZDY2ZGIwODk0MzMxMDk4Y2E1ZWMuLjUyNjNjZjU2MTgwYzQxYTJkYzdjNjZiYzcx
YTc5NWRlODJiZGMxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TZXR0aW5ncy5qcwpAQCAtMTgwLDYgKzE4MCw3IEBAIFdlYkluc3BlY3Rvci5FeHBlcmltZW50
c1NldHRpbmdzID0gZnVuY3Rpb24oKQogICAgIC8vIEZJWE1FOiBFbmFibGUgaHR0cC90ZXN0cy9p
bnNwZWN0b3IvaW5kZXhlZGRiL3Jlc291cmNlcy1wYW5lbC5odG1sIHdoZW4gcmVtb3ZlZCBmcm9t
IGV4cGVyaW1lbnRzLgogICAgIHRoaXMuc2hvd0luZGV4ZWREQiA9IHRoaXMuX2NyZWF0ZUV4cGVy
aW1lbnQoInNob3dJbmRleGVkREIiLCAiU2hvdyBJbmRleGVkREIgaW4gUmVzb3VyY2VzIHBhbmVs
Iik7CiAgICAgdGhpcy5kZWJ1Z0NTUyA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoImRlYnVnQ1NT
IiwgIkxvYWQgQ1NTIHZpYSBsaW5rIHRhZ3MgZm9yIGRlYnVnZ2luZyIpOworICAgIHRoaXMuc2hv
d1NoYWRvd0RPTSA9IHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnQoInNob3dTaGFkb3dET00iLCAiU2hv
dyBzaGFkb3cgRE9NIik7CiAKICAgICB0aGlzLl9jbGVhblVwU2V0dGluZygpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IDQ5
MGMxZjUyYjE0Mjc2Nzk4Nzk4NmVmZjdhM2I4MWFmOWI2OGJiMDcuLjI4OTc4ZDhiYTUyOTE4YjEx
ODM3ZWE5NTdiNDk1MjViNDcyNGM3M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKQEAgLTEwNzUsNiArMTA3NSwxMCBAQCBpZnJhbWUu
cGFuZWwuZXh0ZW5zaW9uIHsKICAgICBtYXJnaW4tbGVmdDogLTEycHg7CiB9CiAKKy53ZWJraXQt
aHRtbC10YWcuc2hhZG93LCAud2Via2l0LWh0bWwtZnJhZ21lbnQuc2hhZG93IHsKKyAgICBvcGFj
aXR5OiAwLjY7Cit9CisKIC5vdXRsaW5lLWRpc2Nsb3N1cmUgbGkucGFyZW50OjpiZWZvcmUgewog
ICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvdHJlZVJpZ2h0VHJpYW5nbGVCbGFjay5wbmcpOwogICAg
IGZsb2F0OiBsZWZ0OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDllNDlkMGU1NTljYjZmNWZlYzg1MDBlY2YzZGFlYTU0OGNk
OTFlNGMuLmFkNjBhNmY2ODNjNGVjMjcxYzRiYzA3MmQ1YWIyYmJiMDkxNDk3Y2UgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMiBAQAorMjAxMi0wMi0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgW1NoYWRvd106IEV4cG9zZSBvbmUgU2hhZG93Um9vdCBpbiB0aGUg
RWxlbWVudHMgcGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4MjAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9jb25zb2xlLWRpcnhtbC1leHBlY3RlZC50eHQ6CisK
IDIwMTItMDItMjcgIENzYWJhIE9zenRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBbUXRdIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLCBza2lwIHRoZSBmb2xsb3dpbmcgY3Jhc2hp
bmcgc3ZnIHRlc3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9j
b25zb2xlLWRpcnhtbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29s
ZS9jb25zb2xlLWRpcnhtbC1leHBlY3RlZC50eHQKaW5kZXggNmFkY2JiZTFmZmZmMTEyYjgyM2Zi
ZTkzY2ZkMDAyNDEzYWM4ZjE4ZS4uZDI4YzFkOWRkZDVlZTBmMGZhOTcxMTIxMjNhMzkxZjgwY2Zj
MGU4YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29uc29sZS1k
aXJ4bWwtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jb25zb2xlL2Nv
bnNvbGUtZGlyeG1sLWV4cGVjdGVkLnR4dApAQCAtNSw3ICs1LDcgQEAgQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE1OiBbb2JqZWN0IEhUTUxQYXJhZ3JhcGhFbGVtZW50XQogVGVzdHMgdGhhdCBjb25z
b2xlIGxvZ2dpbmcgZHVtcHMgcHJvcGVyIG1lc3NhZ2VzLgogCiBjb25zb2xlLWRpcnhtbC5odG1s
OjEyI2RvY3VtZW50Ci1jb25zb2xlLWRpcnhtbC5odG1sOjEzRG9jdW1lbnQgRnJhZ21lbnQKK2Nv
bnNvbGUtZGlyeG1sLmh0bWw6MTMjZG9jdW1lbnQtZnJhZ21lbnQKIGNvbnNvbGUtZGlyeG1sLmh0
bWw6MTQ8cD48L3A+CiBjb25zb2xlLWRpcnhtbC5odG1sOjE1WzxwPjwvcD5dCiAK
</data>
<flag name="review"
          id="131568"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>