<?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>110146</bug_id>
          
          <creation_ts>2013-02-18 12:03:31 -0800</creation_ts>
          <short_desc>Rename AncestorChainWalker</short_desc>
          <delta_ts>2013-02-19 18:29:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>andersca</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hayato</cc>
    
    <cc>koivisto</cc>
    
    <cc>mjs</cc>
    
    <cc>mkwst</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>835670</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-18 12:03:31 -0800</bug_when>
    <thetext>AncestorChainWalker walker(node);
walker.parent();
return walker.get();

It&apos;s not obvious that the above code should behave differently from:

return node ? node-&gt;parentNode() : 0;

The class name should communicate the semantic difference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835673</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-18 12:08:22 -0800</bug_when>
    <thetext>AncestorChainAcrossInsertionPointWalker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835674</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-18 12:09:10 -0800</bug_when>
    <thetext>Also, m_isCrossingInsertionPoint should be named m_hasCrossedInsertionPoint and parent() should be named moveToParent().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835676</commentid>
    <comment_count>3</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-18 12:10:41 -0800</bug_when>
    <thetext>+Hayato-san, who will likely have opinions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835681</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-18 12:16:25 -0800</bug_when>
    <thetext>EventPathWalker should be a good name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835683</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-18 12:17:10 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; EventPathWalker should be a good name.

I like that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835884</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-18 18:33:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; EventPathWalker should be a good name.

+1. I&apos;ve recently introduced &apos;EventPath&apos; into EventContext in http://trac.webkit.org/changeset/142575.

We should spread this term, which is used in DOM Core spec, to Walker class too.
Hopefully, we can avoid a kind of confusion. This kind of confusion is apparently bad for the project.

AncestorChainWalker was formally called ComposedShadowTreeParentWalker, which was separated from ComposedShadowTreeWalker. I think there are some historical debts. We should clean up now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835886</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-18 18:38:49 -0800</bug_when>
    <thetext>I think that for simple cases we need a function rather than a class so we don’t have use three lines for the idiom Ryosuke quoted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835890</commentid>
    <comment_count>8</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-18 18:58:29 -0800</bug_when>
    <thetext>Let me add one more history.
Before ComposedShadowTreeWalker was introduced, there was a &apos;Reified DOM Tree traversal&apos;.
http://trac.webkit.org/changeset/112055

This is function style APIs. All public APIs are just static functions.

ComposedShadowTreeWalker was introduced, deprecating ReifiedTreeTraversal.
The reasons:
  - We need to parameterize Walker class. It might be good to have a parameter in its constructor.
  - I&apos;d like to optimize the performance of walker without affecting the usage in caller side.

I think NodeTraversal, which was introduced recently, might be wrapper APIs for common use cases for walker.
If we can apply NodeTraversal, we should use it rather than using Walker directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835892</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-02-18 19:00:59 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I think NodeTraversal, which was introduced recently, might be wrapper APIs for common use cases for walker.
&gt; If we can apply NodeTraversal, we should use it rather than using Walker directly.

NodeTraversal isn&apos;t a class though...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836080</commentid>
    <comment_count>10</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-19 00:26:19 -0800</bug_when>
    <thetext>I have to use yet another unfamiliar term, *reprojection*, to explain that. :)

Node can be distributed to more than one insertion point during reprojection.
https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html#reprojection

Therefore, the walker has to visit each insertion point consecutively since an event should be fired on these insertion points.

I am feeling that isCrossingInsertinPoint() is not good name, isVisitingInsertionPointInReprojection() might be a better name.


(In reply to comment #2)
&gt; Also, m_isCrossingInsertionPoint should be named m_hasCrossedInsertionPoint and parent() should be named moveToParent().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>836131</commentid>
    <comment_count>11</comment_count>
      <attachid>189026</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-19 01:46:28 -0800</bug_when>
    <thetext>Created attachment 189026
Renamed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837039</commentid>
    <comment_count>12</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2013-02-19 18:15:25 -0800</bug_when>
    <thetext>Though it seems mac bot and win bot stopped working, let me set cq+ and see what will happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837052</commentid>
    <comment_count>13</comment_count>
      <attachid>189026</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-19 18:29:13 -0800</bug_when>
    <thetext>Comment on attachment 189026
Renamed

Clearing flags on attachment: 189026

Committed r143422: &lt;http://trac.webkit.org/changeset/143422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837053</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-19 18:29:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189026</attachid>
            <date>2013-02-19 01:46:28 -0800</date>
            <delta_ts>2013-02-19 18:29:13 -0800</delta_ts>
            <desc>Renamed</desc>
            <filename>bug-110146-20130219184250.patch</filename>
            <type>text/plain</type>
            <size>33063</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFiOWEzNzBjMjgzODUy
YmM2NGI2MGU5NjU1N2JkYjAwYzgyOWNlZi4uMTYwNTY5ZjFkMzJlYzRiOTE1ZDczYTgxYjgwZWQy
ZDhkNTdjOWFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEzLTAyLTE5ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZW5hbWUgQW5jZXN0b3JD
aGFpbldhbGtlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMDE0NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbmFtZSBBbmNlc3RvckNoYWluV2Fsa2VyIHRvIEV2ZW50UGF0aFdhbGtlci4KKyAgICAg
ICAgVGhlIHRlcm0gb2YgRXZlbnRQYXRoIGlzIHVzZWQgaW4gRE9NIENvcmUgc3BlYy4gIEV2ZW50
UGF0aCB3YXMKKyAgICAgICAgYWxyZWFkeSBpbnRyb2R1Y2VkIGludG8gYSBFdmVudENvbnRleHQu
aCBpbiByMTEyMDU1LiBXZSBzaG91bGQKKyAgICAgICAgc3ByZWFkIHRoaXMgdGVybSBpbnRvIHRo
ZSBXYWxrZXIgY2xhc3Mgc2luY2UgdGhleSBzaGFyZSB0aGUgc2FtZQorICAgICAgICBwdXJwb3Nl
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAg
ICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RPTUFsbEluT25l
LmNwcDoKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKiBkb20v
RXZlbnRQYXRoV2Fsa2VyLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9BbmNl
c3RvckNoYWluV2Fsa2VyLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRQYXRoV2Fsa2VyOjpFdmVudFBhdGhXYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRQYXRoV2Fsa2VyOjpwYXJlbnQpOiBwYXJlbnQoKSBpcyBub3cgYSBzdGF0aWMgZnVuY3Rp
b24gdG8gY292ZXIgc2ltcGxlIHVzZSBjYXNlcy4KKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50UGF0
aFdhbGtlcjo6bW92ZVRvUGFyZW50KTogUmVuYW1lZCBmcm9tIHBhcmVudCgpLgorICAgICAgICAq
IGRvbS9FdmVudFBhdGhXYWxrZXIuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9B
bmNlc3RvckNoYWluV2Fsa2VyLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEV2ZW50
UGF0aFdhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFBhdGhXYWxrZXI6Om5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRQYXRoV2Fsa2VyOjppc1Zpc2l0aW5nSW5zZXJ0aW9uUG9p
bnRJblJlcHJvamVjdGlvbik6IFJlbmFtZWQgZnJvbSBpc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQo
KS4KKyAgICAgICAgKiBkb20vRXZlbnRSZXRhcmdldGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50UmV0YXJnZXRlcjo6Y2FsY3VsYXRlRXZlbnRQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50UmV0YXJnZXRlcjo6YnVpbGRSZWxhdGVkTm9kZU1hcCk6CisgICAgICAgICogZG9tL1Ry
ZWVTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmZvY3VzZWROb2RlKToK
KyAgICAgICAgKiBodG1sL0hUTUxMSUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TExJRWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisK
IDIwMTMtMDItMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TWVyZ2UgaGFuZGxlU3BlY2lhbENoaWxkIGludG8gbGF5b3V0QmxvY2tDaGlsZHJlbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAppbmRleCBkYTZkNmU1ZmJiNDUyMTQ4N2ZhMzhmYjk5ZWE1NDc3OTBkMDVkZDk2
Li42YmMwYmUyZGVkNmNiNmIyYmUxNWRmMjZmNTczNzUzZDVmODk1MWIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMTExNyw3ICsxMTE3LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGNz
cy9XZWJLaXRDU1NWaWV3cG9ydFJ1bGUuY3BwCiAKICAgICBkb20vQWN0aXZlRE9NT2JqZWN0LmNw
cAotICAgIGRvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmNwcAogICAgIGRvbS9BdHRyLmNwcAogICAg
IGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAKICAgICBkb20vQmVmb3JlVW5sb2FkRXZl
bnQuY3BwCkBAIC0xMTc2LDYgKzExNzUsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9t
L0V2ZW50RXhjZXB0aW9uLmNwcAogICAgIGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcAogICAgIGRv
bS9FdmVudE5hbWVzLmNwcAorICAgIGRvbS9FdmVudFBhdGhXYWxrZXIuY3BwCiAgICAgZG9tL0V2
ZW50UmV0YXJnZXRlci5jcHAKICAgICBkb20vRXZlbnRUYXJnZXQuY3BwCiAgICAgZG9tL0V4Y2Vw
dGlvbkJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA2NzE5NmQ0NmFh
YTA0MmUxN2JkYzRmY2M1NWRiZGUxOTA0MTg5ODgzLi41YTA4OGM5OWY3YTllNDc0MTg5N2MyM2U4
ZDAzODAxZWNmYTU4YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTI3NDMs
OCArMjc0Myw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1ZpZXdwb3J0UnVsZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vQWN0aXZlRE9NT2Jq
ZWN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0FjdGl2ZURPTU9iamVjdC5oIFwKLQlTb3Vy
Y2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAgXAotCVNvdXJjZS9XZWJDb3Jl
L2RvbS9BbmNlc3RvckNoYWluV2Fsa2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9BdHRyLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0F0dHIuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0F0
dHJpYnV0ZS5oIFwKQEAgLTI4NzYsNiArMjg3NCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBcCiAJU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRQYXRoV2Fsa2VyLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvZG9tL0V2ZW50UGF0aFdhbGtlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRSZXRh
cmdldGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggYTMzZWQzNWFj
NGFkY2U1Yjk1NmI0MGY4NDgyNWRkZjExYjdiODM0MS4uZTQyNTZjY2RlODFmNzE5OTY3MzJmZmEx
OGM2NmVjNzA5MDFiNDEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0zNTIsNyArMzUyLDYgQEAgU09VUkNF
UyArPSBcCiAgICAgY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBcCiAgICAgY3NzL1dl
YktpdENTU1ZpZXdwb3J0UnVsZS5jcHAgXAogICAgIGRvbS9BY3RpdmVET01PYmplY3QuY3BwIFwK
LSAgICBkb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAgXAogICAgIGRvbS9BdHRyLmNwcCBcCiAg
ICAgZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBcCiAgICAgZG9tL0JlZm9yZVVubG9h
ZEV2ZW50LmNwcCBcCkBAIC00MTAsNiArNDA5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0V2
ZW50RXhjZXB0aW9uLmNwcCBcCiAgICAgZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwIFwKICAgICBk
b20vRXZlbnROYW1lcy5jcHAgXAorICAgIGRvbS9FdmVudFBhdGhXYWxrZXIuY3BwIFwKICAgICBk
b20vRXZlbnRSZXRhcmdldGVyLmNwcCBcCiAgICAgZG9tL0V2ZW50VGFyZ2V0LmNwcCBcCiAgICAg
ZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMTFhZjAyZWZhNjlh
NzhkMjk1OWE4ZjI0NmIyNGU0ZmY2MWUyNDQ5Li4zY2E0MmEyNzVhM2ZjNGVlNWVjNmQ1YTE3N2M3
MzA1ZGE1NTdlZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yNzQwLDggKzI3NDAsNiBAQAogICAg
ICAgICBdLAogICAgICAgICAnd2ViY29yZV9kb21fZmlsZXMnOiBbCiAgICAgICAgICAgICAnZG9t
L0FjdGl2ZURPTU9iamVjdC5jcHAnLAotICAgICAgICAgICAgJ2RvbS9BbmNlc3RvckNoYWluV2Fs
a2VyLmNwcCcsCi0gICAgICAgICAgICAnZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuaCcsCiAgICAg
ICAgICAgICAnZG9tL0F0dHIuY3BwJywKICAgICAgICAgICAgICdkb20vQXV0b2NvbXBsZXRlRXJy
b3JFdmVudC5oJywKICAgICAgICAgICAgICdkb20vQmVmb3JlTG9hZEV2ZW50LmgnLApAQCAtMjg0
NSw2ICsyODQzLDggQEAKICAgICAgICAgICAgICdkb20vRXZlbnRFeGNlcHRpb24uaCcsCiAgICAg
ICAgICAgICAnZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwJywKICAgICAgICAgICAgICdkb20vRXZl
bnROYW1lcy5jcHAnLAorICAgICAgICAgICAgJ2RvbS9FdmVudFBhdGhXYWxrZXIuY3BwJywKKyAg
ICAgICAgICAgICdkb20vRXZlbnRQYXRoV2Fsa2VyLmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVu
dFF1ZXVlLmgnLAogICAgICAgICAgICAgJ2RvbS9FdmVudFNlbmRlci5oJywKICAgICAgICAgICAg
ICdkb20vRXZlbnRUYXJnZXQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyYzY1ZDY0M2UyYjRjNWVjMWI1MzYwMDNiN2Nm
NDQ2NmMzZWY5NjA4Li5hNmNlYzQwMWZjNmMxNGM4NmM4NDAzZTA5NmJlZDEwYzcxOTM4MThiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDYwLDYgKzE0NjAsOCBAQAogCQk0QTlDQzgxODE2QkI5QUM2MDBFQzY0NUEgLyogQ1NT
RGVmYXVsdFN0eWxlU2hlZXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0QTlDQzgxNjE2QkI5QUM2MDBFQzY0NUEgLyogQ1NTRGVmYXVsdFN0eWxlU2hl
ZXRzLmggKi87IH07CiAJCTRBOUNDODIwMTZCRjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0b3JDU1NP
TVdyYXBwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBOUNDODFFMTZCRjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNw
cCAqLzsgfTsKIAkJNEE5Q0M4MjExNkJGOUJCNDAwRUM2NDVBIC8qIEluc3BlY3RvckNTU09NV3Jh
cHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRB
OUNDODFGMTZCRjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmggKi87IH07
CisJCTRBQUFCNEM0MTZEMzc5QjUwMDFEQTQxQiAvKiBFdmVudFBhdGhXYWxrZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFBQUI0QzIxNkQzNzlC
NTAwMURBNDFCIC8qIEV2ZW50UGF0aFdhbGtlci5jcHAgKi87IH07CisJCTRBQUFCNEM1MTZEMzc5
QjUwMDFEQTQxQiAvKiBFdmVudFBhdGhXYWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBQUFCNEMzMTZEMzc5QjUwMDFEQTQxQiAvKiBFdmVudFBh
dGhXYWxrZXIuaCAqLzsgfTsKIAkJNEFCREZGMEIxNERCRTM4NTAwNEQxMTdEIC8qIEhUTUxTaGFk
b3dFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDRBQkRGRjA3MTREQkUzMTIwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5jcHAgKi87
IH07CiAJCTRBQkRGRjBDMTREQkUzODUwMDREMTE3RCAvKiBIVE1MU2hhZG93RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFCREZGMDgxNERC
RTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmggKi87IH07CiAJCTRBQ0JDMEJFMTI3
MTNDQkQwMDk0RjlCMiAvKiBDbGFzc0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEFDQkMwQkMxMjcxM0NCRDAwOTRGOUIyIC8qIENsYXNzTGlz
dC5jcHAgKi87IH07CkBAIC0zOTU4LDggKzM5NjAsNiBAQAogCQlBNzdFMUZGMDE0QUFDQjZFMDA1
QjdDQjYgLyogVHJlZVNjb3BlQWRvcHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc3RTFGRUUxNEFBQ0I2RTAwNUI3Q0I2IC8qIFRyZWVTY29wZUFk
b3B0ZXIuaCAqLzsgfTsKIAkJQTc4MUM2QTcxMzgyOEI1RDAwMTJBNjJBIC8qIERvY3VtZW50TWFy
a2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
ODFDNkE2MTM4MjhCNUQwMDEyQTYyQSAvKiBEb2N1bWVudE1hcmtlci5jcHAgKi87IH07CiAJCUE3
ODQ5NDFCMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8q
IENsaXBib2FyZC5jcHAgKi87IH07Ci0JCUE3OENERDJFMTY5RTkxQTEwMDkxMzZGMyAvKiBBbmNl
c3RvckNoYWluV2Fsa2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3NUNCRTQzMTY5RTkxM0QwMDAzQTYwRiAvKiBBbmNlc3RvckNoYWluV2Fsa2Vy
LmNwcCAqLzsgfTsKLQkJQTc4Q0REMzAxNjlFOTFBNDAwOTEzNkYzIC8qIEFuY2VzdG9yQ2hhaW5X
YWxrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3
NUNCRTQ0MTY5RTkxM0QwMDAzQTYwRiAvKiBBbmNlc3RvckNoYWluV2Fsa2VyLmggKi87IH07CiAJ
CUE3OEU1MjZGMTM0NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc4RTUyNkQxMzQ2QkQx
NzAwQUQ5QzMxIC8qIE1ldGVyU2hhZG93RWxlbWVudC5jcHAgKi87IH07CiAJCUE3OEU1MjcwMTM0
NkJEMTcwMEFEOUMzMSAvKiBNZXRlclNoYWRvd0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OEU1MjZFMTM0NkJEMTcwMEFEOUMzMSAvKiBN
ZXRlclNoYWRvd0VsZW1lbnQuaCAqLzsgfTsKIAkJQTc4RkUxM0IxMjM2NkIxMDAwQUNFOEQwIC8q
IFNwZWxsQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNzhGRTEzOTEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmNwcCAqLzsg
fTsKQEAgLTg4OTQsNiArODg5NCw4IEBACiAJCTRBOUNDODE2MTZCQjlBQzYwMEVDNjQ1QSAvKiBD
U1NEZWZhdWx0U3R5bGVTaGVldHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q1NTRGVmYXVsdFN0eWxlU2hlZXRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRB
OUNDODFFMTZCRjlCQjQwMEVDNjQ1QSAvKiBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNTU09NV3JhcHBlcnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QTlDQzgxRjE2QkY5QkI0MDBFQzY0
NUEgLyogSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JDU1NPTVdyYXBwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTRBQUFCNEMyMTZEMzc5QjUwMDFEQTQxQiAvKiBFdmVudFBhdGhXYWxrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRQYXRoV2Fsa2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNEFBQUI0QzMxNkQzNzlCNTAwMURBNDFCIC8q
IEV2ZW50UGF0aFdhbGtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFdmVu
dFBhdGhXYWxrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFCREZGMDcxNERC
RTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxTaGFkb3dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNEFCREZGMDgxNERCRTMxMjAwNEQxMTdEIC8qIEhUTUxTaGFkb3dFbGVt
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxTaGFkb3dFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRBQkRGRjA5MTREQkUzMTIwMDREMTE3
RCAvKiBIVE1MU2hhZG93RWxlbWVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gSFRNTFNo
YWRvd0VsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0MzQsOCAr
MTE0MzYsNiBAQAogCQlBNzNGOTVGQzEyQzk3QkZFMDAzMUFBRjkgLyogUm91bmRlZFJlY3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUm91bmRlZFJlY3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzNGOTVGRDEyQzk3QkZFMDAzMUFBRjkgLyog
Um91bmRlZFJlY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUm91bmRlZFJl
Y3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc0QkI3NkExM0JEQTg2MzAwRkY3
QkYwIC8qIEV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJQTc1Q0JFNDMxNjlFOTEzRDAwMDNBNjBGIC8qIEFuY2VzdG9yQ2hhaW5XYWxr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQW5jZXN0b3JDaGFp
bldhbGtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE3NUNCRTQ0MTY5RTkx
M0QwMDAzQTYwRiAvKiBBbmNlc3RvckNoYWluV2Fsa2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFuY2VzdG9yQ2hhaW5XYWxrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTc1RTQ5NzQxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc1RTQ5NzUxMDc1MkFDQjAwQzlC
ODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNzVFOEI4MDBFMURFMkQ2MDA3RjI0ODEgLyogRkVCbGVuZC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBGRUJsZW5kLmNwcDsgcGF0aCA9IGZp
bHRlcnMvRkVCbGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjQ0Myw4
ICsyMjQ0Myw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlFMUM0REU2RDBFQTc1QzY1MDAyM0ND
RDYgLyogQWN0aXZlRE9NT2JqZWN0LmNwcCAqLywKIAkJCQlFMUM0REU2ODBFQTc1QzFFMDAyM0ND
RDYgLyogQWN0aXZlRE9NT2JqZWN0LmggKi8sCi0JCQkJQTc1Q0JFNDMxNjlFOTEzRDAwMDNBNjBG
IC8qIEFuY2VzdG9yQ2hhaW5XYWxrZXIuY3BwICovLAotCQkJCUE3NUNCRTQ0MTY5RTkxM0QwMDAz
QTYwRiAvKiBBbmNlc3RvckNoYWluV2Fsa2VyLmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAw
MDNBQzhEIC8qIEF0dHIuY3BwICovLAogCQkJCUE4QzRBN0ZCMDlENTYzMjcwMDAzQUM4RCAvKiBB
dHRyLmggKi8sCiAJCQkJOTNFRUMxRTUwOUMyODc3NzAwQzUxNUQxIC8qIEF0dHIuaWRsICovLApA
QCAtMjI2MDUsNiArMjI2MDMsOCBAQAogCQkJCTkzOTg4NUMxMDhCN0UzRDEwMEU3MDdDNCAvKiBF
dmVudE5hbWVzLmNwcCAqLywKIAkJCQk5Mzk4ODVDMjA4QjdFM0QxMDBFNzA3QzQgLyogRXZlbnRO
YW1lcy5oICovLAogCQkJCUJDOUE2MTQyMTQ2ODU5RDkwMDYwNTdGRCAvKiBFdmVudE5hbWVzLmlu
ICovLAorCQkJCTRBQUFCNEMyMTZEMzc5QjUwMDFEQTQxQiAvKiBFdmVudFBhdGhXYWxrZXIuY3Bw
ICovLAorCQkJCTRBQUFCNEMzMTZEMzc5QjUwMDFEQTQxQiAvKiBFdmVudFBhdGhXYWxrZXIuaCAq
LywKIAkJCQk4RjY3NTYxOTEyODhCMTdCMDA0N0FDQTMgLyogRXZlbnRRdWV1ZS5oICovLAogCQkJ
CTRBNUNCMUMzMTZDM0E1RkQwMEFCMjg4NiAvKiBFdmVudFJldGFyZ2V0ZXIuY3BwICovLAogCQkJ
CTRBNUNCMUM0MTZDM0E1RkQwMEFCMjg4NiAvKiBFdmVudFJldGFyZ2V0ZXIuaCAqLywKQEAgLTIz
MjI2LDcgKzIzMjI2LDYgQEAKIAkJCQlDRTA4QzNEMjE1MkI1OTlBMDAyMUI4QzIgLyogQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U3QjJEQjMxNTg2QUJB
RDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRkQzMTYwM0UxMkIwMjY3NjAwQzFBMzU5IC8qIEFuYWx5c2VyTm9kZS5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJQTc4Q0REMzAxNjlFOTFBNDAwOTEzNkYzIC8qIEFuY2VzdG9yQ2hhaW5XYWxr
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5MDcwN0U3MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdM
RVdlYktpdEJyaWRnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDlFOTEyQUIwRUZBQzkwNjAwOUQw
Q0FGIC8qIEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTIwRTZFMURBNzAw
QkY2MDg4IC8qIEFuaW1hdGlvbkJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjQzMzMsNiArMjQz
MzIsNyBAQAogCQkJCUFENDQ5NUY0MTQxRkMwODkwMDU0MUVERiAvKiBFdmVudExpc3RlbmVyTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0ExOUUxNjBEQzI1NUNBMDA2NUE5OTQgLyogRXZlbnRM
b29wLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4ODVDNDA4QjdFM0QxMDBFNzA3QzQgLyogRXZl
bnROYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNEFBQUI0QzUxNkQzNzlCNTAwMURBNDFCIC8q
IEV2ZW50UGF0aFdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOEY2NzU2MUIxMjg4QjE3QjAw
NDdBQ0EzIC8qIEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUwRkVGMzcyQjE3QzUz
RUFDMUMxRkJFRSAvKiBFdmVudFNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEE1Q0IxQzYx
NkMzQTVGRDAwQUIyODg2IC8qIEV2ZW50UmV0YXJnZXRlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0y
Njk2MSw3ICsyNjk2MSw2IEBACiAJCQkJQ0UwOEMzRDExNTJCNTk5QTAwMjFCOEMyIC8qIEFsdGVy
bmF0aXZlVGV4dENvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3QjJEQjQxNTg2
QUJBRDAwOThCM0ZBIC8qIEFsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCUZEMzE2MDNEMTJCMDI2NzYwMEMxQTM1OSAvKiBBbmFseXNlck5vZGUuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJQTc4Q0REMkUxNjlFOTFBMTAwOTEzNkYzIC8qIEFuY2VzdG9yQ2hh
aW5XYWxrZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDkwNzA3RTYxMjE5QzA0MzAwRDkwRTUx
IC8qIEFOR0xFV2ViS2l0QnJpZGdlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMkFBMEVG
QUM5MDYwMDlEMENBRiAvKiBBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUx
MTEwRTZFMURBNzAwQkY2MDg4IC8qIEFuaW1hdGlvbkJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yNzY4MSw2ICsyNzY4MCw3IEBACiAJCQkJMUNBMTlFMDUwREMyNTU5NTAwNjVBOTk0IC8qIEV2
ZW50TG9vcE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzOTg4NUMzMDhCN0UzRDEwMEU3MDdD
NCAvKiBFdmVudE5hbWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUwRkVGMzcyQjI3QzUzRUFD
MUMxRkJFRSAvKiBFdmVudFNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0QUFBQjRDNDE2
RDM3OUI1MDAxREE0MUIgLyogRXZlbnRQYXRoV2Fsa2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRBNUNCMUM1MTZDM0E1RkQwMEFCMjg4NiAvKiBFdmVudFJldGFyZ2V0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTEyRURCRUEwQjMwOEUwQjAwMjcwNEI2IC8qIEV2ZW50VGFyZ2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUQ2RkRBRUYzMTQ5QzA2MTkwMDM3QjFFNCAvKiBFdmVudFRyYWNl
ci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNl
c3RvckNoYWluV2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWluV2Fs
a2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTcwY2RjMjA1OTdjNTBiMjE4
ZGY0MzEwMzhlNmM1OGI5ZWFiYWFlNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQW5jZXN0b3JDaGFpbldhbGtlci5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
LSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIkFuY2VzdG9yQ2hhaW5XYWxrZXIuaCIKLQotI2luY2x1ZGUgIkNvbnRlbnREaXN0cmli
dXRvci5oIgotI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCi0jaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUFuY2VzdG9yQ2hhaW5XYWxrZXI6OkFuY2Vz
dG9yQ2hhaW5XYWxrZXIoY29uc3QgTm9kZSogbm9kZSkKLSAgICA6IG1fbm9kZShub2RlKQotICAg
ICwgbV9kaXN0cmlidXRlZE5vZGUobm9kZSkKLSAgICAsIG1faXNDcm9zc2luZ0luc2VydGlvblBv
aW50KGZhbHNlKQotewotICAgIEFTU0VSVChub2RlKTsKLX0KLQotdm9pZCBBbmNlc3RvckNoYWlu
V2Fsa2VyOjpwYXJlbnQoKQotewotICAgIEFTU0VSVChtX25vZGUpOwotICAgIEFTU0VSVChtX2Rp
c3RyaWJ1dGVkTm9kZSk7Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09m
UGFyZW50KG1fbm9kZSkpIHsKLSAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCA9IHNoYWRvdy0+ZGlzdHJpYnV0b3IoKS5maW5kSW5zZXJ0aW9uUG9pbnRGb3IobV9kaXN0
cmlidXRlZE5vZGUpKSB7Ci0gICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKLSAg
ICAgICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50ID0gdHJ1ZTsKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIW1fbm9kZS0+aXNTaGFkb3dSb290
KCkpIHsKLSAgICAgICAgbV9ub2RlID0gbV9ub2RlLT5wYXJlbnROb2RlKCk7Ci0gICAgICAgIGlm
ICghKG1fbm9kZSAmJiBtX25vZGUtPmlzU2hhZG93Um9vdCgpICYmIFNjb3BlQ29udGVudERpc3Ry
aWJ1dGlvbjo6YXNzaWduZWRUbyh0b1NoYWRvd1Jvb3QobV9ub2RlKSkpKQotICAgICAgICAgICAg
bV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7Ci0gICAgICAgIG1faXNDcm9zc2luZ0luc2VydGlv
blBvaW50ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBTaGFk
b3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG1fbm9kZSk7Ci0gICAgaWYgKEluc2Vy
dGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1dGlvbjo6YXNz
aWduZWRUbyhzaGFkb3dSb290KSkgewotICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsK
LSAgICAgICAgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9uUG9pbnQgPSB0cnVlOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotICAgIG1fbm9kZSA9IHNoYWRvd1Jvb3QtPmhvc3QoKTsKLSAgICBtX2Rpc3Ry
aWJ1dGVkTm9kZSA9IG1fbm9kZTsKLSAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZh
bHNlOwotfQotCi19IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0FuY2VzdG9yQ2hhaW5XYWxrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9BbmNlc3RvckNoYWlu
V2Fsa2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmNTUyZWI5YWI5NjkzZmI0
NzhhNzczZDk2NGNmNDM2YThhZTQ5ODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0FuY2VzdG9yQ2hhaW5XYWxrZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFuY2VzdG9yQ2hhaW5XYWxr
ZXJfaAotI2RlZmluZSBBbmNlc3RvckNoYWluV2Fsa2VyX2gKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBOb2RlOwotCi1jbGFzcyBBbmNlc3RvckNoYWluV2Fsa2VyIHsKLXB1YmxpYzoK
LSAgICBleHBsaWNpdCBBbmNlc3RvckNoYWluV2Fsa2VyKGNvbnN0IE5vZGUqKTsKLSAgICB2b2lk
IHBhcmVudCgpOwotICAgIE5vZGUqIGdldCgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9k
ZSo+KG1fbm9kZSk7IH0KLSAgICBib29sIGNyb3NzaW5nSW5zZXJ0aW9uUG9pbnQoKSB7IHJldHVy
biBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludDsgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IE5v
ZGUqIG1fbm9kZTsKLSAgICBjb25zdCBOb2RlKiBtX2Rpc3RyaWJ1dGVkTm9kZTsKLSAgICBib29s
IG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUFsbEluT25lLmNwcAppbmRleCBkOGMzMDA3MmFkOTFjZDY2ZjI1
MDg2OWZhMDBhYzdjNDM5OTcxODg3Li40MzUwOGNmMGRhYzRkYTljOWQwOTlmNGE4OTE4ZmM2NmZk
MmY5NzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NQWxsSW5PbmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01BbGxJbk9uZS5jcHAKQEAgLTI2LDcgKzI2LDYgQEAK
IC8vIFRoaXMgYWxsLWluLW9uZSBjcHAgZmlsZSBjdXRzIGRvd24gb24gdGVtcGxhdGUgYmxvYXQg
dG8gYWxsb3cgdXMgdG8gYnVpbGQgb3VyIFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5jcHAiCi0jaW5jbHVkZSAiQW5jZXN0b3JDaGFpbldhbGtlci5j
cHAiCiAjaW5jbHVkZSAiQXR0ci5jcHAiCiAjaW5jbHVkZSAiQmVmb3JlVGV4dEluc2VydGVkRXZl
bnQuY3BwIgogI2luY2x1ZGUgIkJlZm9yZVVubG9hZEV2ZW50LmNwcCIKQEAgLTgwLDYgKzc5LDcg
QEAKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5jcHAiCiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5l
ck1hcC5jcHAiCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5jcHAiCisjaW5jbHVkZSAiRXZlbnRQYXRo
V2Fsa2VyLmNwcCIKICNpbmNsdWRlICJFdmVudFJldGFyZ2V0ZXIuY3BwIgogI2luY2x1ZGUgIkV2
ZW50VGFyZ2V0LmNwcCIKICNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmNwcCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNGM2YzgzNTNjODgwMmFjYjc5YzdkMTAzM2U3
ODg1MDRlOWY0OGE4OC4uMjNlMjM5OGQyNmFiZTJhMDRjZmM5MGJiYjY2MDRiOWE4OGRhZDZhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTI2LDExICsyNiwxMSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkV2ZW50RGlzcGF0Y2hlci5oIgogCi0j
aW5jbHVkZSAiQW5jZXN0b3JDaGFpbldhbGtlci5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUu
aCIKICNpbmNsdWRlICJFbGVtZW50U2hhZG93LmgiCiAjaW5jbHVkZSAiRXZlbnRDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiRXZlbnREaXNwYXRjaE1lZGlhdG9yLmgiCisjaW5jbHVkZSAiRXZlbnRQYXRo
V2Fsa2VyLmgiCiAjaW5jbHVkZSAiRXZlbnRSZXRhcmdldGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50UGF0aFdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRQYXRoV2Fsa2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDE4YmI4MjQ4ODQxNzkzMjRkZWVjODJkMGMy
NDU5OGI5ZjJhZmJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
UGF0aFdhbGtlci5jcHAKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJFdmVudFBhdGhXYWxrZXIuaCIKKworI2luY2x1ZGUgIkNvbnRlbnREaXN0cmlidXRv
ci5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0V2ZW50UGF0aFdhbGtlcjo6RXZlbnRQYXRoV2Fs
a2VyKGNvbnN0IE5vZGUqIG5vZGUpCisgICAgOiBtX25vZGUobm9kZSkKKyAgICAsIG1fZGlzdHJp
YnV0ZWROb2RlKG5vZGUpCisgICAgLCBtX2lzVmlzaXRpbmdJbnNlcnRpb25Qb2ludEluUmVwcm9q
ZWN0aW9uKGZhbHNlKQoreworICAgIEFTU0VSVChub2RlKTsKK30KKworTm9kZSogRXZlbnRQYXRo
V2Fsa2VyOjpwYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICBFdmVudFBhdGhXYWxrZXIg
d2Fsa2VyKG5vZGUpOworICAgIHdhbGtlci5tb3ZlVG9QYXJlbnQoKTsKKyAgICByZXR1cm4gd2Fs
a2VyLm5vZGUoKTsKK30KKwordm9pZCBFdmVudFBhdGhXYWxrZXI6Om1vdmVUb1BhcmVudCgpCit7
CisgICAgQVNTRVJUKG1fbm9kZSk7CisgICAgQVNTRVJUKG1fZGlzdHJpYnV0ZWROb2RlKTsKKyAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobV9ub2RlKSkgewor
ICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5kaXN0
cmlidXRvcigpLmZpbmRJbnNlcnRpb25Qb2ludEZvcihtX2Rpc3RyaWJ1dGVkTm9kZSkpIHsKKyAg
ICAgICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OworICAgICAgICAgICAgbV9pc1Zpc2l0
aW5nSW5zZXJ0aW9uUG9pbnRJblJlcHJvamVjdGlvbiA9IHRydWU7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFtX25vZGUtPmlzU2hhZG93Um9vdCgpKSB7
CisgICAgICAgIG1fbm9kZSA9IG1fbm9kZS0+cGFyZW50Tm9kZSgpOworICAgICAgICBpZiAoISht
X25vZGUgJiYgbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSAmJiBTY29wZUNvbnRlbnREaXN0cmlidXRp
b246OmFzc2lnbmVkVG8odG9TaGFkb3dSb290KG1fbm9kZSkpKSkKKyAgICAgICAgICAgIG1fZGlz
dHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgICAgICBtX2lzVmlzaXRpbmdJbnNlcnRpb25Qb2lu
dEluUmVwcm9qZWN0aW9uID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBj
b25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290ID0gdG9TaGFkb3dSb290KG1fbm9kZSk7CisgICAg
aWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IFNjb3BlQ29udGVudERpc3RyaWJ1
dGlvbjo6YXNzaWduZWRUbyhzaGFkb3dSb290KSkgeworICAgICAgICBtX25vZGUgPSBpbnNlcnRp
b25Qb2ludDsKKyAgICAgICAgbV9pc1Zpc2l0aW5nSW5zZXJ0aW9uUG9pbnRJblJlcHJvamVjdGlv
biA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9ub2RlID0gc2hhZG93Um9v
dC0+aG9zdCgpOworICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgIG1faXNWaXNp
dGluZ0luc2VydGlvblBvaW50SW5SZXByb2plY3Rpb24gPSBmYWxzZTsKK30KKworfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGhXYWxrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGhXYWxrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDA2ZTli
ZmU5ODZiMmE2YjMxNzBiMWUyNjEzYzFiMGQxZTI0ZmFjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aFdhbGtlci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEV2ZW50UGF0aFdhbGtlcl9oCisjZGVmaW5lIEV2ZW50UGF0aFdhbGtlcl9oCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm9kZTsKKworY2xhc3MgRXZlbnRQYXRoV2Fsa2VyIHsK
K3B1YmxpYzoKKyAgICBleHBsaWNpdCBFdmVudFBhdGhXYWxrZXIoY29uc3QgTm9kZSopOworICAg
IHN0YXRpYyBOb2RlKiBwYXJlbnQoY29uc3QgTm9kZSopOworICAgIHZvaWQgbW92ZVRvUGFyZW50
KCk7CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1f
bm9kZSk7IH0KKyAgICBib29sIGlzVmlzaXRpbmdJbnNlcnRpb25Qb2ludEluUmVwcm9qZWN0aW9u
KCkgeyByZXR1cm4gbV9pc1Zpc2l0aW5nSW5zZXJ0aW9uUG9pbnRJblJlcHJvamVjdGlvbjsgfQor
Citwcml2YXRlOgorICAgIGNvbnN0IE5vZGUqIG1fbm9kZTsKKyAgICBjb25zdCBOb2RlKiBtX2Rp
c3RyaWJ1dGVkTm9kZTsKKyAgICBib29sIG1faXNWaXNpdGluZ0luc2VydGlvblBvaW50SW5SZXBy
b2plY3Rpb247Cit9OworCit9IC8vIG5hbWVzcGFjZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFJldGFyZ2V0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50UmV0YXJnZXRlci5jcHAKaW5kZXggOTI3MzBkMGU5YzJlNmU3ZDViYmI5M2M2MmQ0ZmE4
MjE3MjIwMGYyYS4uOTE1ZGE0NzEyMGIwZTgyNjU2NzVmMmFkYTZhZGFjOTJlNWE1Y2JjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50UmV0YXJnZXRlci5jcHAKQEAgLTIwLDkgKzIwLDkgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJFdmVudFJldGFyZ2V0ZXIuaCIKIAotI2luY2x1
ZGUgIkFuY2VzdG9yQ2hhaW5XYWxrZXIuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAj
aW5jbHVkZSAiRXZlbnRDb250ZXh0LmgiCisjaW5jbHVkZSAiRXZlbnRQYXRoV2Fsa2VyLmgiCiAj
aW5jbHVkZSAiRm9jdXNFdmVudC5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCkBAIC03OCwxMSArNzgsMTEgQEAgdm9pZCBFdmVudFJldGFyZ2V0ZXI6
OmNhbGN1bGF0ZUV2ZW50UGF0aChOb2RlKiBub2RlLCBFdmVudCogZXZlbnQsIEV2ZW50UGF0aCYg
ZXYKICAgICBib29sIGlzU1ZHRWxlbWVudCA9IG5vZGUtPmlzU1ZHRWxlbWVudCgpOwogICAgIGJv
b2wgaXNNb3VzZU9yRm9jdXNFdmVudCA9IGV2ZW50LT5pc01vdXNlRXZlbnQoKSB8fCBldmVudC0+
aXNGb2N1c0V2ZW50KCk7CiAgICAgVmVjdG9yPEV2ZW50VGFyZ2V0KiwgMzI+IHRhcmdldFN0YWNr
OwotICAgIGZvciAoQW5jZXN0b3JDaGFpbldhbGtlciB3YWxrZXIobm9kZSk7IHdhbGtlci5nZXQo
KTsgd2Fsa2VyLnBhcmVudCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSB3YWxrZXIuZ2V0KCk7
CisgICAgZm9yIChFdmVudFBhdGhXYWxrZXIgd2Fsa2VyKG5vZGUpOyB3YWxrZXIubm9kZSgpOyB3
YWxrZXIubW92ZVRvUGFyZW50KCkpIHsKKyAgICAgICAgTm9kZSogbm9kZSA9IHdhbGtlci5ub2Rl
KCk7CiAgICAgICAgIGlmICh0YXJnZXRTdGFjay5pc0VtcHR5KCkpCiAgICAgICAgICAgICB0YXJn
ZXRTdGFjay5hcHBlbmQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFyZ2V0UnVsZXMobm9kZSkpOwot
ICAgICAgICBlbHNlIGlmICh3YWxrZXIuY3Jvc3NpbmdJbnNlcnRpb25Qb2ludCgpKQorICAgICAg
ICBlbHNlIGlmICh3YWxrZXIuaXNWaXNpdGluZ0luc2VydGlvblBvaW50SW5SZXByb2plY3Rpb24o
KSkKICAgICAgICAgICAgIHRhcmdldFN0YWNrLmFwcGVuZCh0YXJnZXRTdGFjay5sYXN0KCkpOwog
ICAgICAgICBpZiAoaXNNb3VzZU9yRm9jdXNFdmVudCkKICAgICAgICAgICAgIGV2ZW50UGF0aC5h
cHBlbmQoYWRvcHRQdHIobmV3IE1vdXNlT3JGb2N1c0V2ZW50Q29udGV4dChub2RlLCBldmVudFRh
cmdldFJlc3BlY3RpbmdUYXJnZXRSdWxlcyhub2RlKSwgdGFyZ2V0U3RhY2subGFzdCgpKSkpOwpA
QCAtMTY4LDExICsxNjgsMTEgQEAgdm9pZCBFdmVudFJldGFyZ2V0ZXI6OmJ1aWxkUmVsYXRlZE5v
ZGVNYXAoTm9kZSogcmVsYXRlZE5vZGUsIFJlbGF0ZWROb2RlTWFwJiByZWwKIHsKICAgICBWZWN0
b3I8Tm9kZSosIDMyPiByZWxhdGVkTm9kZVN0YWNrOwogICAgIFRyZWVTY29wZSogbGFzdFRyZWVT
Y29wZSA9IDA7Ci0gICAgZm9yIChBbmNlc3RvckNoYWluV2Fsa2VyIHdhbGtlcihyZWxhdGVkTm9k
ZSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBhcmVudCgpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUg
PSB3YWxrZXIuZ2V0KCk7CisgICAgZm9yIChFdmVudFBhdGhXYWxrZXIgd2Fsa2VyKHJlbGF0ZWRO
b2RlKTsgd2Fsa2VyLm5vZGUoKTsgd2Fsa2VyLm1vdmVUb1BhcmVudCgpKSB7CisgICAgICAgIE5v
ZGUqIG5vZGUgPSB3YWxrZXIubm9kZSgpOwogICAgICAgICBpZiAocmVsYXRlZE5vZGVTdGFjay5p
c0VtcHR5KCkpCiAgICAgICAgICAgICByZWxhdGVkTm9kZVN0YWNrLmFwcGVuZChub2RlKTsKLSAg
ICAgICAgZWxzZSBpZiAod2Fsa2VyLmNyb3NzaW5nSW5zZXJ0aW9uUG9pbnQoKSkKKyAgICAgICAg
ZWxzZSBpZiAod2Fsa2VyLmlzVmlzaXRpbmdJbnNlcnRpb25Qb2ludEluUmVwcm9qZWN0aW9uKCkp
CiAgICAgICAgICAgICByZWxhdGVkTm9kZVN0YWNrLmFwcGVuZChyZWxhdGVkTm9kZVN0YWNrLmxh
c3QoKSk7CiAgICAgICAgIFRyZWVTY29wZSogc2NvcGUgPSBub2RlLT50cmVlU2NvcGUoKTsKICAg
ICAgICAgLy8gU2tpcHMgYWRkaW5nIGEgbm9kZSB0byB0aGUgbWFwIGlmIHRyZWVTY29wZSBkb2Vz
IG5vdCBjaGFuZ2UuIEp1c3QgZm9yIHRoZSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDAzYjQyZmNlODU4Njg2MmNjNDg5OWJiNTEyM2VmOTQ1
NWU5YzVlMGUuLjQ1NGFmNWRhOWRmYTg2NjBkZTBlMzEyNDliZWY5ODZlMWNjN2QwYjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0yNywxMiArMjcsMTIgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKIAotI2luY2x1ZGUgIkFuY2VzdG9yQ2hhaW5X
YWxrZXIuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRE9NU2VsZWN0
aW9uLmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRXZlbnRQYXRoV2Fsa2VyLmgiCiAjaW5jbHVk
ZSAiRm9jdXNDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZVZpZXcuaCIKQEAgLTM1MiwxMSArMzUyLDExIEBAIE5vZGUqIFRyZWVTY29wZTo6Zm9jdXNlZE5v
ZGUoKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgVmVjdG9yPE5vZGUq
PiB0YXJnZXRTdGFjazsKLSAgICBmb3IgKEFuY2VzdG9yQ2hhaW5XYWxrZXIgd2Fsa2VyKG5vZGUp
OyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wYXJlbnQoKSkgewotICAgICAgICBOb2RlKiBub2RlID0g
d2Fsa2VyLmdldCgpOworICAgIGZvciAoRXZlbnRQYXRoV2Fsa2VyIHdhbGtlcihub2RlKTsgd2Fs
a2VyLm5vZGUoKTsgd2Fsa2VyLm1vdmVUb1BhcmVudCgpKSB7CisgICAgICAgIE5vZGUqIG5vZGUg
PSB3YWxrZXIubm9kZSgpOwogICAgICAgICBpZiAodGFyZ2V0U3RhY2suaXNFbXB0eSgpKQogICAg
ICAgICAgICAgdGFyZ2V0U3RhY2suYXBwZW5kKG5vZGUpOwotICAgICAgICBlbHNlIGlmICh3YWxr
ZXIuY3Jvc3NpbmdJbnNlcnRpb25Qb2ludCgpKQorICAgICAgICBlbHNlIGlmICh3YWxrZXIuaXNW
aXNpdGluZ0luc2VydGlvblBvaW50SW5SZXByb2plY3Rpb24oKSkKICAgICAgICAgICAgIHRhcmdl
dFN0YWNrLmFwcGVuZCh0YXJnZXRTdGFjay5sYXN0KCkpOwogICAgICAgICBpZiAobm9kZSA9PSBy
b290Tm9kZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFN0YWNrLmxhc3QoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3BwCmluZGV4IDg1OTBhZTEwMjlkMTRlOTdmYjg5MzNh
YjFlZGEyOTBhOTA3MWRmYjkuLmExN2EzNGY4MmQ4MjBiZjg3NWE4YTRlYmVkMDBlNTA1MTU3ZjZi
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcApAQCAtMjMsMTAgKzIzLDEw
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSFRNTExJRWxlbWVudC5oIgogCi0j
aW5jbHVkZSAiQW5jZXN0b3JDaGFpbldhbGtlci5oIgogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgog
I2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRz
LmgiCisjaW5jbHVkZSAiRXZlbnRQYXRoV2Fsa2VyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKIApAQCAtOTYsMTMgKzk2LDEzIEBAIHZvaWQg
SFRNTExJRWxlbWVudDo6YXR0YWNoKCkKIAogICAgICAgICAvLyBGaW5kIHRoZSBlbmNsb3Npbmcg
bGlzdCBub2RlLgogICAgICAgICBOb2RlKiBsaXN0Tm9kZSA9IDA7Ci0gICAgICAgIEFuY2VzdG9y
Q2hhaW5XYWxrZXIgd2Fsa2VyKHRoaXMpOworICAgICAgICBFdmVudFBhdGhXYWxrZXIgd2Fsa2Vy
KHRoaXMpOwogICAgICAgICB3aGlsZSAoIWxpc3ROb2RlKSB7Ci0gICAgICAgICAgICB3YWxrZXIu
cGFyZW50KCk7Ci0gICAgICAgICAgICBpZiAoIXdhbGtlci5nZXQoKSkKKyAgICAgICAgICAgIHdh
bGtlci5tb3ZlVG9QYXJlbnQoKTsKKyAgICAgICAgICAgIGlmICghd2Fsa2VyLm5vZGUoKSkKICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmICh3YWxrZXIuZ2V0KCktPmhhc1Rh
Z05hbWUodWxUYWcpIHx8IHdhbGtlci5nZXQoKS0+aGFzVGFnTmFtZShvbFRhZykpCi0gICAgICAg
ICAgICAgICAgbGlzdE5vZGUgPSB3YWxrZXIuZ2V0KCk7CisgICAgICAgICAgICBpZiAod2Fsa2Vy
Lm5vZGUoKS0+aGFzVGFnTmFtZSh1bFRhZykgfHwgd2Fsa2VyLm5vZGUoKS0+aGFzVGFnTmFtZShv
bFRhZykpCisgICAgICAgICAgICAgICAgbGlzdE5vZGUgPSB3YWxrZXIubm9kZSgpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBpbiBhIGxpc3QsIHRlbGwgdGhlIHJlbmRl
cmVyIHNvIGl0IGNhbiBwb3NpdGlvbiB1cyBpbnNpZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKaW5kZXggM2JhYzRmMjA5MDExZDQ4MGJiYTlkOTBjNGFkZmE3MTlhZmY4MTNhYy4u
M2I4MTY1ZTc2ZDFkZmViYmQyMzdlN2UwMmNhMGVjZDg2MzE3NDA0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkV2ZW50SGFu
ZGxlci5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgotI2luY2x1ZGUgIkFuY2VzdG9y
Q2hhaW5XYWxrZXIuaCIKICNpbmNsdWRlICJBdXRvc2Nyb2xsQ29udHJvbGxlci5oIgogI2luY2x1
ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCkBAIC00Myw2ICs0Miw3IEBA
CiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkV2ZW50UGF0aFdhbGtlci5oIgogI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKQEAgLTIxMTksMTEgKzIxMTksOCBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6dXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3Qg
UGxhdGZvcm1NbwogICAgICAgICByZXN1bHQgPSBtX2NhcHR1cmluZ01vdXNlRXZlbnRzTm9kZS5n
ZXQoKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCBub2RlIGlzIGEgdGV4
dCBub2RlLCBkaXNwYXRjaCBvbiB0aGUgcGFyZW50IG5vZGUgLSByZGFyOi8vNDE5NjY0NgotICAg
ICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdC0+aXNUZXh0Tm9kZSgpKSB7Ci0gICAgICAgICAgICBB
bmNlc3RvckNoYWluV2Fsa2VyIHdhbGtlcihyZXN1bHQpOwotICAgICAgICAgICAgd2Fsa2VyLnBh
cmVudCgpOwotICAgICAgICAgICAgcmVzdWx0ID0gd2Fsa2VyLmdldCgpOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LT5pc1RleHROb2RlKCkpCisgICAgICAgICAgICBy
ZXN1bHQgPSBFdmVudFBhdGhXYWxrZXI6OnBhcmVudChyZXN1bHQpOwogICAgIH0KICAgICBtX25v
ZGVVbmRlck1vdXNlID0gcmVzdWx0OwogI2lmIEVOQUJMRShTVkcpCkBAIC0yMzMxLDExICsyMzI4
LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiBlKQogCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAg
ICAvLyBXaGVlbCBldmVudHMgc2hvdWxkIG5vdCBkaXNwYXRjaCB0byB0ZXh0IG5vZGVzLgotICAg
IGlmIChub2RlICYmIG5vZGUtPmlzVGV4dE5vZGUoKSkgewotICAgICAgICBBbmNlc3RvckNoYWlu
V2Fsa2VyIHdhbGtlcihub2RlKTsKLSAgICAgICAgd2Fsa2VyLnBhcmVudCgpOwotICAgICAgICBu
b2RlID0gd2Fsa2VyLmdldCgpOwotICAgIH0KKyAgICBpZiAobm9kZSAmJiBub2RlLT5pc1RleHRO
b2RlKCkpCisgICAgICAgIG5vZGUgPSBFdmVudFBhdGhXYWxrZXI6OnBhcmVudChub2RlKTsKIAog
ICAgIGJvb2wgaXNPdmVyV2lkZ2V0OwogICAgIGlmICh1c2VMYXRjaGVkV2hlZWxFdmVudE5vZGUp
IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>