<?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>220886</bug_id>
          
          <creation_ts>2021-01-22 19:55:33 -0800</creation_ts>
          <short_desc>[iOS WK2] theverge.com - rubber band scrolling at the top of the page causes an abrupt jump</short_desc>
          <delta_ts>2021-01-25 09:46:20 -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>Scrolling</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>220875</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1721811</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-22 19:55:33 -0800</bug_when>
    <thetext>theverge.com - rubber band scrolling at the top of the page causes an abrupt jump</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721822</commentid>
    <comment_count>1</comment_count>
      <attachid>418212</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-22 21:54:37 -0800</bug_when>
    <thetext>Created attachment 418212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721823</commentid>
    <comment_count>2</comment_count>
      <attachid>418213</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-01-22 21:59:36 -0800</bug_when>
    <thetext>Created attachment 418213
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721888</commentid>
    <comment_count>3</comment_count>
      <attachid>418213</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-01-23 16:15:41 -0800</bug_when>
    <thetext>Comment on attachment 418213
Patch

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

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:3840
&gt; +    FrameView&amp; frameView = *frame.view();

You could use auto here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721934</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-24 16:47:37 -0800</bug_when>
    <thetext>Committed r271786: &lt;https://trac.webkit.org/changeset/271786&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 418213.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1721935</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-24 16:48:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/73552275&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418212</attachid>
            <date>2021-01-22 21:54:37 -0800</date>
            <delta_ts>2021-01-22 21:59:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220886-20210122215436.patch</filename>
            <type>text/plain</type>
            <size>55185</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg4NWM5Yjk4OGRiOTY4
YThmNDBlMGYxOGFmNWQzOWJlYTRlNzBhNC4uMDBlOWMwMDIyMzdjN2I5NDhkODE5ZmI4YjVkMzE0
MzA4ZjUyOTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTAxLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSB0
aGV2ZXJnZS5jb20gLSBydWJiZXIgYmFuZCBzY3JvbGxpbmcgYXQgdGhlIHRvcCBvZiB0aGUgcGFn
ZSBjYXVzZXMgYW4gYWJydXB0IGp1bXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDg4NgorICAgICAgICA8cmRhcjovLzcxMTc3NTY2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRoZXZlcmdlLmNvbSBv
biBpT1MgaXMgYSBwYWdlIHRoYXQgaGFzIGxvbmcgbWFpbiB0aHJlYWQgc3RhbGxzIHdpdGggZm9y
Y2VkIGxheW91dHMgb24gYSB0aW1lcgorICAgICAgICB0aGF0IGFsdGVyIHRoZSBwYWdlIGhlaWdo
dDsgdGhpcyBjYXVzZWQgdGhlIHBvc3QtbGF5b3V0IHVwZGF0ZVNjcm9sbGJhcnMoKSBjYWxsZWQg
ZnJvbQorICAgICAgICBGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKCkgdG8gY2FsbCBzY3JvbGxU
b1Bvc2l0aW9uKCkgYWZ0ZXIgYWRqdXN0aW5nIHRoZSBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAg
dG8gdGhlIGFsbG93ZWQgcmFuZ2UuCisKKyAgICAgICAgSWYgdGhlIHBhZ2UgbGFpZCBvdXQgd2hp
bGUgcnViYmVyYmFuZGluZyB3YXMgaGFwcGVuaW5nLCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRp
b24gd291bGQKKyAgICAgICAgYmUgbmVnYXRpdmUsIHRoZW4gY2xhbXBlZCB0byAwLCB0aGVuIHNl
bnQgdG8gdGhlIFVJIHByb2Nlc3MgYXMgYSByZXF1ZXN0ZWQgc2Nyb2xsIHRvIDAsCisgICAgICAg
IHRyaWdnZXJpbmcgdGhlIGp1bXAgdG8gdG9wIGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAg
IFRoZXJlJ3MgZXhpc3RpbmcgY29kZSB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcgaWYg
d2Uga25vdyB0aGF0IHJ1YmJlcmJhbmRpbmcgaXMKKyAgICAgICAgaGFwcGVuaW5nOyB0aGlzIHBh
dGNoIG1ha2VzIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSB3b3JrIGZvciBpT1MgV0syLiBJdCBk
b2VzIHNvCisgICAgICAgIGJ5IGhhdmluZyB1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKCkgcHVz
aCBpbmZvcm1hdGlvbiBhYm91dCBydWJiZXJiYW5kaW5nIG5vZGVzIG9udG8KKyAgICAgICAgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuCisKKyAgICAgICAgV2UgcmVtb3ZlIGFuIHVubmVjZXNz
YXJ5IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkgY2hlY2sg
aW4KKyAgICAgICAgRnJhbWVWaWV3Ojppc1J1YmJlckJhbmRJblByb2dyZXNzKCkgLSBpZiBpdCdz
IHRydWUsIHRoZW4gdGhlIHNjcm9sbGluZyBjb29yZGluYXRvcgorICAgICAgICB3b24ndCBzZWUg
YW55IHJ1YmJlcmJhbmRpbmcgbm9kZXMgYW55d2F5LgorICAgICAgICAKKyAgICAgICAgVGVzdDog
ZmFzdC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQu
aHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3Ojppc1J1YmJlckJhbmRJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisKIDIwMjEtMDEtMjEg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xs
LWNoYWluaW5nIG5vdCB0cmlnZ2VyaW5nIGJlZm9yZSBjb21wbGV0ZSBlbmQgb2Ygb3ZlcnNjcm9s
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkZmY5YzZmMjk1YzQyZGVjYjkyOTlmNmEwMTgyMTEwOWE5NjRlY2NjLi4y
NDNmYzUyMDc5ZGM3MTIxMGUwOTM4YWRhMDk0NTIyNzFlYmYzMjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDk2IEBACisyMDIxLTAxLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1MgV0syXSB0aGV2ZXJnZS5jb20gLSBydWJiZXIgYmFuZCBzY3Jv
bGxpbmcgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSBjYXVzZXMgYW4gYWJydXB0IGp1bXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg4NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFkZE5vZGVXaXRoQWN0aXZlUnViYmVyQmFuZGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVO
b2RlV2l0aEFjdGl2ZVJ1YmJlckJhbmRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlz
aWJsZUNvbnRlbnRSZWN0cyk6CisKKzIwMjEtMDEtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZy
YXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJl
ciBiYW5kIHNjcm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQg
anVtcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIw
ODg2CisgICAgICAgIDxyZGFyOi8vNzExNzc1NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICB0aGV2ZXJnZS5jb20gb24gaU9TIGlzIGEg
cGFnZSB0aGF0IGhhcyBsb25nIG1haW4gdGhyZWFkIHN0YWxscyB3aXRoIGZvcmNlZCBsYXlvdXRz
IG9uIGEgdGltZXIKKyAgICAgICAgdGhhdCBhbHRlciB0aGUgcGFnZSBoZWlnaHQ7IHRoaXMgY2F1
c2VkIHRoZSBwb3N0LWxheW91dCB1cGRhdGVTY3JvbGxiYXJzKCkgY2FsbGVkIGZyb20KKyAgICAg
ICAgRnJhbWVWaWV3OjphZGp1c3RWaWV3U2l6ZSgpIHRvIGNhbGwgc2Nyb2xsVG9Qb3NpdGlvbigp
IGFmdGVyIGFkanVzdGluZyB0aGUgc2Nyb2xsIHBvc2l0aW9uCisgICAgICAgIHRvIHRoZSBhbGxv
d2VkIHJhbmdlLgorCisgICAgICAgIElmIHRoZSBwYWdlIGxhaWQgb3V0IHdoaWxlIHJ1YmJlcmJh
bmRpbmcgd2FzIGhhcHBlbmluZywgdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0aW9uIHdvdWxkCisg
ICAgICAgIGJlIG5lZ2F0aXZlLCB0aGVuIGNsYW1wZWQgdG8gMCwgdGhlbiBzZW50IHRvIHRoZSBV
SSBwcm9jZXNzIGFzIGEgcmVxdWVzdGVkIHNjcm9sbCB0byAwLAorICAgICAgICB0cmlnZ2VyaW5n
IHRoZSBqdW1wIHRvIHRvcCBpbiB0aGUgVUkgcHJvY2Vzcy4KKworICAgICAgICBUaGVyZSdzIGV4
aXN0aW5nIGNvZGUgdG8gcHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nIGlmIHdlIGtub3cgdGhh
dCBydWJiZXJiYW5kaW5nIGlzCisgICAgICAgIGhhcHBlbmluZzsgdGhpcyBwYXRjaCBtYWtlcyBp
c1J1YmJlckJhbmRJblByb2dyZXNzKCkgd29yayBmb3IgaU9TIFdLMi4gSXQgZG9lcyBzbworICAg
ICAgICBieSBoYXZpbmcgdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cygpIHB1c2ggaW5mb3JtYXRp
b24gYWJvdXQgcnViYmVyYmFuZGluZyBub2RlcyBvbnRvCisgICAgICAgIFJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLgorCisgICAgICAgIFdlIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBzaG91bGRV
cGRhdGVTY3JvbGxMYXllclBvc2l0aW9uU3luY2hyb25vdXNseSgpIGNoZWNrIGluCisgICAgICAg
IEZyYW1lVmlldzo6aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIC0gaWYgaXQncyB0cnVlLCB0aGVu
IHRoZSBzY3JvbGxpbmcgY29vcmRpbmF0b3IKKyAgICAgICAgd29uJ3Qgc2VlIGFueSBydWJiZXJi
YW5kaW5nIG5vZGVzIGFueXdheS4KKyAgICAgICAgCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFkZE5vZGVXaXRoQWN0aXZlUnViYmVyQmFuZGluZyk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZW1vdmVOb2Rl
V2l0aEFjdGl2ZVJ1YmJlckJhbmRpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlVmlzaWJs
ZUNvbnRlbnRSZWN0cyk6CisKKzIwMjEtMDEtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXSzJdIE1ha2UgdGhlICJpbiBzdGFibGUgc3Rh
dGUiIGJpdCBpbiB2aXNpYmxlIGNvbnRlbnQgcmVjdCB1cGRhdGVzIG1vcmUgZmluZS1ncmFpbmVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4NzUK
KworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgIFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm8gY29udGFpbnMgYSBzaW5nbGUgImluIHN0YWJsZSBzdGF0ZSIgYml0
LCBidXQgaW4gYSBmdXR1cmUKKyAgICAgICAgcGF0Y2ggdGhlIHdlYiBwcm9jZXNzIHdpbGwgbmVl
ZCB0byBrbm93IGlmIHRoZSBVSSBwcm9jZXNzIGlzIHJ1YmJlcmJhbmRpbmcuIEluIGFkZGl0aW9u
LAorICAgICAgICB3ZSBjYW4gZm9sZCAiaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3Rp
dmVseSIgaW50byB0aGUgc2FtZSBzdGF0ZSBiaXRzLgorCisgICAgICAgIFNvIGdpdmUgVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyBhIE9wdGlvblNldDxWaWV3U3RhYmlsaXR5RmxhZz4uCisK
KyAgICAgICAgVG8gZ2l2ZSB0aGUgY29ycmVjdCBzdGF0ZSBmb3Igbm9uLW1haW4gVUlTY3JvbGxW
aWV3cywgaGF2ZSBfc2Nyb2xsVmlld0lzUnViYmVyQmFuZGluZworICAgICAgICB0YWtlIHRoZSBV
SVNjcm9sbFZpZXcgaW4gcXVlc3Rpb24sIGFuZCBvbmx5IGluY2x1ZGUgaXNDaGFuZ2luZ09ic2N1
cmVkSW5zZXRzSW50ZXJhY3RpdmVseQorICAgICAgICBpZiB0aGUgcXVlc3Rpb24gaXMgYmVpbmcg
YXNrZWQgb2YgdGhlIG1haW4gVUlTY3JvbGxWaWV3LgorCisgICAgICAgICogU2hhcmVkL1Zpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpkZWNvZGUpOgorICAgICAgICAoV2ViS2l0OjpvcGVy
YXRvcjw8KToKKyAgICAgICAgKiBTaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5o
OgorICAgICAgICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjpWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvKToKKyAgICAgICAgKFdlYktpdDo6VmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mbzo6aW5TdGFibGVTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlZp
c2libGVDb250ZW50UmVjdFVwZGF0ZUluZm86OnZpZXdTdGFiaWxpdHkgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvOjppc0ZpcnN0VXBkYXRlRm9y
TmV3Vmlld1NpemUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbzo6aXNDaGFuZ2luZ09ic2N1
cmVkSW5zZXRzSW50ZXJhY3RpdmVseSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld0lPUy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRSZWxhdW5j
aFByb2Nlc3NdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxWaWV3SXNSdWJiZXJCYW5k
aW5nOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ZpZXdTdGFiaWxpdHlTdGF0ZTpdKToKKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9zY2hlZHVsZVZpc2libGVDb250ZW50UmVjdFVwZGF0ZUFmdGVy
U2Nyb2xsSW5WaWV3Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3VwZGF0ZVZpc2libGVDb250
ZW50UmVjdHNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zY3JvbGxWaWV3SXNSdWJiZXJCYW5k
aW5nXSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfc2Nyb2xsVmlld0lzSW5TdGFi
bGVTdGF0ZTpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgZGlkVXBkYXRlVmlzaWJsZVJlY3Q6dW5vYnNjdXJlZFJlY3Q6Y29u
dGVudEluc2V0czp1bm9ic2N1cmVkUmVjdEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzOm9ic2N1cmVk
SW5zZXRzOnVub2JzY3VyZWRTYWZlQXJlYUluc2V0czppbnB1dFZpZXdCb3VuZHM6c2NhbGU6bWlu
aW11bVNjYWxlOnZpZXdTdGFiaWxpdHk6ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXc6
c2VuZEV2ZW5JZlVuY2hhbmdlZDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBkaWRVcGRh
dGVWaXNpYmxlUmVjdDp1bm9ic2N1cmVkUmVjdDpjb250ZW50SW5zZXRzOnVub2JzY3VyZWRSZWN0
SW5TY3JvbGxWaWV3Q29vcmRpbmF0ZXM6b2JzY3VyZWRJbnNldHM6dW5vYnNjdXJlZFNhZmVBcmVh
SW5zZXRzOmlucHV0Vmlld0JvdW5kczpzY2FsZTptaW5pbXVtU2NhbGU6aW5TdGFibGVTdGF0ZTpp
c0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5OmVuY2xvc2VkSW5TY3JvbGxhYmxl
QW5jZXN0b3JWaWV3OnNlbmRFdmVuSWZVbmNoYW5nZWQ6XSk6IERlbGV0ZWQuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKToKKwogMjAyMS0wMS0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBleHBl
cmltZW50YWwgZmVhdHVyZSB0byB1c2UgbmV0d29yayBsb2FkZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCBmYzJiMzU3ODYzMzkxNmYzNDMyZTkzNTJjMWVjY2IxNzcwNDQ2NWNhLi5m
YWMyODM0M2ZkMmFhYjEwNjRhM2E3YTI1ODRiNWNjODI3Y2FkMWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC0yNjY1LDEwICsyNjY1LDggQEAgYm9vbCBGcmFtZVZpZXc6OmlzUnVi
YmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdAogICAgIGlmIChzY3JvbGxiYXJzU3VwcHJlc3NlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoYXV0byBzY3JvbGxpbmdDb29yZGlu
YXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsKLSAgICAgICAgaWYgKCFzY3Jv
bGxpbmdDb29yZGluYXRvci0+c2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvblN5bmNocm9u
b3VzbHkoKnRoaXMpKQotICAgICAgICAgICAgcmV0dXJuIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5p
c1J1YmJlckJhbmRJblByb2dyZXNzKHNjcm9sbGluZ05vZGVJRCgpKTsKLSAgICB9CisgICAgaWYg
KGF1dG8gc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRvcigp
KQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmlzUnViYmVyQmFuZEluUHJv
Z3Jlc3Moc2Nyb2xsaW5nTm9kZUlEKCkpOwogCiAgICAgaWYgKGF1dG8gc2Nyb2xsQW5pbWF0b3Ig
PSBleGlzdGluZ1Njcm9sbEFuaW1hdG9yKCkpCiAgICAgICAgIHJldHVybiBzY3JvbGxBbmltYXRv
ci0+aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXgg
YmRmZTI3ODQ5ZjI5NjFjNmRkZTVlOWZmOGRkYjUxMDIxNWYzMTcyNy4uYmVlZjI3ZmI0MDE1ZWU1
YWIyZjY0ZDkyYWRjZjEwNWJmMTRkMjI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC0x
NjcsNyArMTY3LDcgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgVGlsZWRCYWNraW5n
KiB0aWxlZEJhY2tpbmcoKSBjb25zdDsKIAotICAgIFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdO
b2RlSUQoKSBjb25zdCBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBTY3JvbGxpbmdOb2Rl
SUQgc2Nyb2xsaW5nTm9kZUlEKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhRm9yU2Nyb2xsaW5nTm9kZUlEKFNjcm9sbGluZ05vZGVJRCkgY29uc3Q7
CiAgICAgYm9vbCB1c2VzQXN5bmNTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAppbmRleCA2YTFlNzc0OGVmZjViNTRiYTljMTk3NGIw
ZDNiYmI3NGM5MmQ0ZDgzLi5mYTI3ZjY5MmNlNDA2N2I5MTY0ODMxNjM3Mzk2OWYxZTg5YTQ5MTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApAQCAtNTg2LDcgKzU4Niw3
IEBAIGJvb2wgU2Nyb2xsVmlldzo6bWFuYWdlc1Njcm9sbGJhcnMoKSBjb25zdAogCiB2b2lkIFNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgU2Nyb2xsUG9zaXRpb24mIGRlc2lyZWRQ
b3NpdGlvbikKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlNj
cm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMgIiA8PCBkZXNpcmVkUG9zaXRpb24pOworICAgIExP
R19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsVmlldzo6dXBkYXRlU2Ny
b2xsYmFycyAiIDw8IGRlc2lyZWRQb3NpdGlvbiA8PCAiIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3Mg
IiA8PCBpc1J1YmJlckJhbmRJblByb2dyZXNzKCkpOwogCiAgICAgaWYgKG1faW5VcGRhdGVTY3Jv
bGxiYXJzIHx8IHByb2hpYml0c1Njcm9sbGluZygpIHx8IHBsYXRmb3JtV2lkZ2V0KCkpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlSW5mby5jcHAKaW5kZXggZWFlNWQxNmQ2NjMxN2FlODE3NjNjNDNjODYzODI5
YmVkNGY3YmQ3NC4uMGE4MWI3NDg4MjUzMjFjYzUxNjJiYTZhMjQ4ZmIyMWZkM2RjZDU1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
by5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mby5jcHAKQEAgLTQ5LDkgKzQ5LDggQEAgdm9pZCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwg
bV9zY3JvbGxWZWxvY2l0eTsKICAgICBlbmNvZGVyIDw8IG1fbGFzdExheWVyVHJlZVRyYW5zYWN0
aW9uSUQ7CiAgICAgZW5jb2RlciA8PCBtX3NjYWxlOwotICAgIGVuY29kZXIgPDwgbV9pblN0YWJs
ZVN0YXRlOworICAgIGVuY29kZXIgPDwgbV92aWV3U3RhYmlsaXR5OwogICAgIGVuY29kZXIgPDwg
bV9pc0ZpcnN0VXBkYXRlRm9yTmV3Vmlld1NpemU7Ci0gICAgZW5jb2RlciA8PCBtX2lzQ2hhbmdp
bmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk7CiAgICAgZW5jb2RlciA8PCBtX2FsbG93U2hy
aW5rVG9GaXQ7CiAgICAgZW5jb2RlciA8PCBtX2VuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JW
aWV3OwogfQpAQCAtODAsMTIgKzc5LDEwIEBAIGJvb2wgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mbzo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgVmlzaWJsZUNvbnRlbnRSCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX3NjYWxl
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0
Lm1faW5TdGFibGVTdGF0ZSkpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV92aWV3
U3RhYmlsaXR5KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0Lm1faXNGaXJzdFVwZGF0ZUZvck5ld1ZpZXdTaXplKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1faXNDaGFuZ2luZ09ic2N1
cmVkSW5zZXRzSW50ZXJhY3RpdmVseSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2FsbG93U2hyaW5rVG9GaXQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQubV9lbmNsb3NlZEluU2Ny
b2xsYWJsZUFuY2VzdG9yVmlldykpCkBAIC0xMDEsNiArOTgsMTggQEAgU3RyaW5nIFZpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm86OmR1bXAoKSBjb25zdAogICAgIHJldHVybiBzdHJlYW0ucmVs
ZWFzZSgpOwogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBWaWV3
U3RhYmlsaXR5RmxhZyBzdGFiaWxpdHlGbGFnKQoreworICAgIHN3aXRjaCAoc3RhYmlsaXR5Rmxh
ZykgeworICAgIGNhc2UgVmlld1N0YWJpbGl0eUZsYWc6OlNjcm9sbFZpZXdJbnRlcmFjdGluZzog
dHMgPDwgInNjcm9sbCB2aWV3IGludGVyYWN0aW5nIjsgYnJlYWs7CisgICAgY2FzZSBWaWV3U3Rh
YmlsaXR5RmxhZzo6U2Nyb2xsVmlld0FuaW1hdGVkU2Nyb2xsT3Jab29tOiB0cyA8PCAic2Nyb2xs
IHZpZXcgYW5pbWF0ZWQgc2Nyb2xsIG9yIHpvb20iOyBicmVhazsKKyAgICBjYXNlIFZpZXdTdGFi
aWxpdHlGbGFnOjpTY3JvbGxWaWV3UnViYmVyQmFuZGluZzogdHMgPDwgInNjcm9sbCB2aWV3IHJ1
YmJlcmJhbmRpbmciOyBicmVhazsKKyAgICBjYXNlIFZpZXdTdGFiaWxpdHlGbGFnOjpDaGFuZ2lu
Z09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseTogdHMgPDwgImNoYW5naW5nIG9ic2N1cmVkIGlu
c2V0cyBpbnRlcmFjdGl2ZWx5IjsgYnJlYWs7CisgICAgY2FzZSBWaWV3U3RhYmlsaXR5RmxhZzo6
VW5zdGFibGVGb3JUZXN0aW5nOiB0cyA8PCAidW5zdGFibGUgZm9yIHRlc3RpbmciOyBicmVhazsK
KyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiBpbmZvKQogewog
ICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgc2NvcGUodHMpOwpAQCAtMTE5LDEwICsxMjgsOCBA
QCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBWaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvJiBpbmZvKQogICAgIHRzLmR1bXBQcm9wZXJ0eSgidW5vYnNjdXJl
ZFNhZmVBcmVhSW5zZXRzIiwgaW5mby51bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMoKSk7CiAKICAg
ICB0cy5kdW1wUHJvcGVydHkoInNjYWxlIiwgaW5mby5zY2FsZSgpKTsKLSAgICB0cy5kdW1wUHJv
cGVydHkoImluU3RhYmxlU3RhdGUiLCBpbmZvLmluU3RhYmxlU3RhdGUoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJ2aWV3U3RhYmlsaXR5IiwgaW5mby52aWV3U3RhYmlsaXR5KCkpOwogICAgIHRz
LmR1bXBQcm9wZXJ0eSgiaXNGaXJzdFVwZGF0ZUZvck5ld1ZpZXdTaXplIiwgaW5mby5pc0ZpcnN0
VXBkYXRlRm9yTmV3Vmlld1NpemUoKSk7Ci0gICAgaWYgKGluZm8uaXNDaGFuZ2luZ09ic2N1cmVk
SW5zZXRzSW50ZXJhY3RpdmVseSgpKQotICAgICAgICB0cy5kdW1wUHJvcGVydHkoImlzQ2hhbmdp
bmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHkiLCBpbmZvLmlzQ2hhbmdpbmdPYnNjdXJlZElu
c2V0c0ludGVyYWN0aXZlbHkoKSk7CiAgICAgaWYgKGluZm8uZW5jbG9zZWRJblNjcm9sbGFibGVB
bmNlc3RvclZpZXcoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJlbmNsb3NlZEluU2Nyb2xs
YWJsZUFuY2VzdG9yVmlldyIsIGluZm8uZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXco
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8uaAppbmRleCA5NjdmMzQ0NDVlZTM5OGQ5NDJlOThiNGNjYTBiMzk2MDM3ODQwZjQ2
Li44MGNkMTBmMjBlNDU2NjE3Y2UxNjQ4NDIwYTM1ZDQ3OGIwNDU5MDdjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGhCb3guaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1ZlbG9jaXR5RGF0YS5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTQ1LDExICs0NiwxOSBAQCBjbGFzcyBUZXh0U3RyZWFt
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorZW51bSBjbGFzcyBWaWV3U3RhYmlsaXR5RmxhZyA6
IHVpbnQ4X3QgeworICAgIFNjcm9sbFZpZXdJbnRlcmFjdGluZyAgICAgICAgICAgICAgID0gMSA8
PCAwLCAvLyBEcmFnZ2luZywgem9vbWluZywgaW50ZXJydXB0aW5nIGRlY2VsZXJhdGlvbgorICAg
IFNjcm9sbFZpZXdBbmltYXRlZFNjcm9sbE9yWm9vbSAgICAgID0gMSA8PCAxLCAvLyBEZWNlbGVy
YXRpbmcsIHNjcm9sbGluZyB0byB0b3AsIGFuaW1hdGVkIHpvb20KKyAgICBTY3JvbGxWaWV3UnVi
YmVyQmFuZGluZyAgICAgICAgICAgICA9IDEgPDwgMiwKKyAgICBDaGFuZ2luZ09ic2N1cmVkSW5z
ZXRzSW50ZXJhY3RpdmVseSA9IDEgPDwgMywKKyAgICBVbnN0YWJsZUZvclRlc3RpbmcgICAgICAg
ICAgICAgICAgICA9IDEgPDwgNAorfTsKKwogY2xhc3MgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mbyB7CiBwdWJsaWM6CiAgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbygpID0gZGVm
YXVsdDsKIAotICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8oY29uc3QgV2ViQ29yZTo6
RmxvYXRSZWN0JiBleHBvc2VkQ29udGVudFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
dW5vYnNjdXJlZENvbnRlbnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgY29u
dGVudEluc2V0cywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkUmVjdEluU2Ny
b2xsVmlld0Nvb3JkaW5hdGVzLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRD
b250ZW50UmVjdFJlc3BlY3RpbmdJbnB1dFZpZXdCb3VuZHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYgbGF5b3V0Vmlld3BvcnRSZWN0LCBjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYg
b2JzY3VyZWRJbnNldHMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiB1bm9ic2N1cmVk
U2FmZUFyZWFJbnNldHMsIGRvdWJsZSBzY2FsZSwgYm9vbCBpblN0YWJsZVN0YXRlLCBib29sIGlz
Rmlyc3RVcGRhdGVGb3JOZXdWaWV3U2l6ZSwgYm9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJ
bnRlcmFjdGl2ZWx5LCBib29sIGFsbG93U2hyaW5rVG9GaXQsIGJvb2wgZW5jbG9zZWRJblNjcm9s
bGFibGVBbmNlc3RvclZpZXcsIGNvbnN0IFdlYkNvcmU6OlZlbG9jaXR5RGF0YSYgc2Nyb2xsVmVs
b2NpdHksIFRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRyYW5zYWN0aW9uSWQpCisgICAgVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyhjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGV4cG9z
ZWRDb250ZW50UmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiB1bm9ic2N1cmVkQ29udGVu
dFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBjb250ZW50SW5zZXRzLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHVub2JzY3VyZWRSZWN0SW5TY3JvbGxWaWV3Q29vcmRpbmF0
ZXMsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgdW5vYnNjdXJlZENvbnRlbnRSZWN0UmVzcGVj
dGluZ0lucHV0Vmlld0JvdW5kcywgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBsYXlvdXRWaWV3
cG9ydFJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBvYnNjdXJlZEluc2V0cywg
Y29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIHVub2JzY3VyZWRTYWZlQXJlYUluc2V0cywg
ZG91YmxlIHNjYWxlLCBPcHRpb25TZXQ8Vmlld1N0YWJpbGl0eUZsYWc+IHZpZXdTdGFiaWxpdHks
IGJvb2wgaXNGaXJzdFVwZGF0ZUZvck5ld1ZpZXdTaXplLCBib29sIGFsbG93U2hyaW5rVG9GaXQs
IGJvb2wgZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcsIGNvbnN0IFdlYkNvcmU6OlZl
bG9jaXR5RGF0YSYgc2Nyb2xsVmVsb2NpdHksIFRyYW5zYWN0aW9uSUQgbGFzdExheWVyVHJlZVRy
YW5zYWN0aW9uSWQpCiAgICAgICAgIDogbV9leHBvc2VkQ29udGVudFJlY3QoZXhwb3NlZENvbnRl
bnRSZWN0KQogICAgICAgICAsIG1fdW5vYnNjdXJlZENvbnRlbnRSZWN0KHVub2JzY3VyZWRDb250
ZW50UmVjdCkKICAgICAgICAgLCBtX2NvbnRlbnRJbnNldHMoY29udGVudEluc2V0cykKQEAgLTYx
LDkgKzcwLDggQEAgcHVibGljOgogICAgICAgICAsIG1fc2Nyb2xsVmVsb2NpdHkoc2Nyb2xsVmVs
b2NpdHkpCiAgICAgICAgICwgbV9sYXN0TGF5ZXJUcmVlVHJhbnNhY3Rpb25JRChsYXN0TGF5ZXJU
cmVlVHJhbnNhY3Rpb25JZCkKICAgICAgICAgLCBtX3NjYWxlKHNjYWxlKQotICAgICAgICAsIG1f
aW5TdGFibGVTdGF0ZShpblN0YWJsZVN0YXRlKQorICAgICAgICAsIG1fdmlld1N0YWJpbGl0eSh2
aWV3U3RhYmlsaXR5KQogICAgICAgICAsIG1faXNGaXJzdFVwZGF0ZUZvck5ld1ZpZXdTaXplKGlz
Rmlyc3RVcGRhdGVGb3JOZXdWaWV3U2l6ZSkKLSAgICAgICAgLCBtX2lzQ2hhbmdpbmdPYnNjdXJl
ZEluc2V0c0ludGVyYWN0aXZlbHkoaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVs
eSkKICAgICAgICAgLCBtX2FsbG93U2hyaW5rVG9GaXQoYWxsb3dTaHJpbmtUb0ZpdCkKICAgICAg
ICAgLCBtX2VuY2xvc2VkSW5TY3JvbGxhYmxlQW5jZXN0b3JWaWV3KGVuY2xvc2VkSW5TY3JvbGxh
YmxlQW5jZXN0b3JWaWV3KQogICAgIHsKQEAgLTgwLDkgKzg4LDkgQEAgcHVibGljOgogICAgIGNv
bnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMoKSBj
b25zdCB7IHJldHVybiBtX3Vub2JzY3VyZWRTYWZlQXJlYUluc2V0czsgfQogCiAgICAgZG91Ymxl
IHNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZTsgfQotICAgIGJvb2wgaW5TdGFibGVTdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5TdGFibGVTdGF0ZTsgfQorICAgIGJvb2wgaW5TdGFibGVT
dGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlld1N0YWJpbGl0eS5pc0VtcHR5KCk7IH0KKyAgICBP
cHRpb25TZXQ8Vmlld1N0YWJpbGl0eUZsYWc+IHZpZXdTdGFiaWxpdHkoKSBjb25zdCB7IHJldHVy
biBtX3ZpZXdTdGFiaWxpdHk7IH0KICAgICBib29sIGlzRmlyc3RVcGRhdGVGb3JOZXdWaWV3U2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNGaXJzdFVwZGF0ZUZvck5ld1ZpZXdTaXplOyB9Ci0gICAg
Ym9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5KCkgY29uc3QgeyByZXR1
cm4gbV9pc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5OyB9CiAgICAgYm9vbCBh
bGxvd1Nocmlua1RvRml0KCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd1Nocmlua1RvRml0OyB9CiAg
ICAgYm9vbCBlbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldygpIGNvbnN0IHsgcmV0dXJu
IG1fZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXc7IH0KICAgICBUcmFuc2FjdGlvbklE
IGxhc3RMYXllclRyZWVUcmFuc2FjdGlvbklEKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGF5ZXJU
cmVlVHJhbnNhY3Rpb25JRDsgfQpAQCAtMTA2LDkgKzExNCw4IEBAIHByaXZhdGU6CiAgICAgV2Vi
Q29yZTo6VmVsb2NpdHlEYXRhIG1fc2Nyb2xsVmVsb2NpdHk7CiAgICAgVHJhbnNhY3Rpb25JRCBt
X2xhc3RMYXllclRyZWVUcmFuc2FjdGlvbklEOwogICAgIGRvdWJsZSBtX3NjYWxlIHsgLTEgfTsK
LSAgICBib29sIG1faW5TdGFibGVTdGF0ZSB7IGZhbHNlIH07CisgICAgT3B0aW9uU2V0PFZpZXdT
dGFiaWxpdHlGbGFnPiBtX3ZpZXdTdGFiaWxpdHk7CiAgICAgYm9vbCBtX2lzRmlyc3RVcGRhdGVG
b3JOZXdWaWV3U2l6ZSB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX2lzQ2hhbmdpbmdPYnNjdXJlZElu
c2V0c0ludGVyYWN0aXZlbHkgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd1Nocmlua1RvRml0
IHsgZmFsc2UgfTsKICAgICBib29sIG1fZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcg
eyBmYWxzZSB9OwogfTsKQEAgLTEyNSwxNCArMTMyLDMwIEBAIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgYSwgY29uc3QgVmlzaWJsZUNv
bnRlCiAgICAgICAgICYmIGEub2JzY3VyZWRJbnNldHMoKSA9PSBiLm9ic2N1cmVkSW5zZXRzKCkK
ICAgICAgICAgJiYgYS51bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMoKSA9PSBiLnVub2JzY3VyZWRT
YWZlQXJlYUluc2V0cygpCiAgICAgICAgICYmIGEuc2Nyb2xsVmVsb2NpdHkoKS5lcXVhbElnbm9y
aW5nVGltZXN0YW1wKGIuc2Nyb2xsVmVsb2NpdHkoKSkKLSAgICAgICAgJiYgYS5pblN0YWJsZVN0
YXRlKCkgPT0gYi5pblN0YWJsZVN0YXRlKCkKKyAgICAgICAgJiYgYS52aWV3U3RhYmlsaXR5KCkg
PT0gYi52aWV3U3RhYmlsaXR5KCkKICAgICAgICAgJiYgYS5pc0ZpcnN0VXBkYXRlRm9yTmV3Vmll
d1NpemUoKSA9PSBiLmlzRmlyc3RVcGRhdGVGb3JOZXdWaWV3U2l6ZSgpCiAgICAgICAgICYmIGEu
YWxsb3dTaHJpbmtUb0ZpdCgpID09IGIuYWxsb3dTaHJpbmtUb0ZpdCgpCiAgICAgICAgICYmIGEu
ZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcoKSA9PSBiLmVuY2xvc2VkSW5TY3JvbGxh
YmxlQW5jZXN0b3JWaWV3KCk7CiB9CiAKK1dURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6
OlRleHRTdHJlYW0mLCBWaWV3U3RhYmlsaXR5RmxhZyk7CiBXVEY6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
byYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAorbmFtZXNwYWNlIFdURiB7CisKK3RlbXBs
YXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpWaWV3U3RhYmlsaXR5RmxhZz4geworICAg
IHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8CisgICAgICAgIFdlYktpdDo6Vmlld1N0YWJpbGl0
eUZsYWcsCisgICAgICAgIFdlYktpdDo6Vmlld1N0YWJpbGl0eUZsYWc6OlNjcm9sbFZpZXdJbnRl
cmFjdGluZywKKyAgICAgICAgV2ViS2l0OjpWaWV3U3RhYmlsaXR5RmxhZzo6U2Nyb2xsVmlld0Fu
aW1hdGVkU2Nyb2xsT3Jab29tLAorICAgICAgICBXZWJLaXQ6OlZpZXdTdGFiaWxpdHlGbGFnOjpT
Y3JvbGxWaWV3UnViYmVyQmFuZGluZywKKyAgICAgICAgV2ViS2l0OjpWaWV3U3RhYmlsaXR5Rmxh
Zzo6Q2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHksCisgICAgICAgIFdlYktpdDo6
Vmlld1N0YWJpbGl0eUZsYWc6OlVuc3RhYmxlRm9yVGVzdGluZworICAgID47Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXVEYKKwogI2VuZGlmIC8vIEVOQUJMRShVSV9TSURFX0NPTVBPU0lUSU5HKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50
ZXJuYWwuaAppbmRleCAxMTNmZGI3Zjg1Nzg3ZjBlYTY1ZjNhZjY2ZmYyYTM2OGQ3YTNhZGE5Li5h
Nzg2YzdhNjQ4MjY0ZWYwMmNjNmM2NzYxMzRkMjE1YjhhYzRhM2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAt
MjMxLDcgKzIzMSw3IEBAIGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKICAgICBSZXRhaW5Q
dHI8V0tQYXNzd29yZFZpZXc+IF9wYXNzd29yZFZpZXc7CiAKICAgICBCT09MIF9oYXNTY2hlZHVs
ZWRWaXNpYmxlUmVjdFVwZGF0ZTsKLSAgICBCT09MIF92aXNpYmxlQ29udGVudFJlY3RVcGRhdGVT
Y2hlZHVsZWRGcm9tU2Nyb2xsVmlld0luU3RhYmxlU3RhdGU7CisgICAgT3B0aW9uU2V0PFdlYktp
dDo6Vmlld1N0YWJpbGl0eUZsYWc+IF92aWV3U3RhYmlsaXR5V2hlblZpc2libGVDb250ZW50UmVj
dFVwZGF0ZVNjaGVkdWxlZDsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OldoZWVsU2Nyb2xsR2Vz
dHVyZVN0YXRlPiBfY3VycmVudFNjcm9sbEdlc3R1cmVTdGF0ZTsKICAgICB1aW50NjRfdCBfd2hl
ZWxFdmVudENvdW50SW5DdXJyZW50U2Nyb2xsR2VzdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3SU9TLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdJT1MubW0KaW5kZXggOTE0ZGQ2NTE1NGQxOGU4M2Zm
OGFkY2IwMTIxZjBmOWU1YjI0MWFjNi4uMjEzNGRhZTc0ZDIwY2EyM2Q5NzU5MTU4NjFiMjFmZWVh
MTMzNjc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZp
ZXdJT1MubW0KQEAgLTcwMSw3ICs3MDEsNyBAQCAtICh2b2lkKV9kaWRSZWxhdW5jaFByb2Nlc3MK
IHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCIlcCAtW1dLV2ViVmlldyBfZGlkUmVsYXVu
Y2hQcm9jZXNzXSIsIHNlbGYpOwogICAgIF9oYXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSA9
IE5POwotICAgIF92aXNpYmxlQ29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWRGcm9tU2Nyb2xsVmll
d0luU3RhYmxlU3RhdGUgPSBZRVM7CisgICAgX3ZpZXdTdGFiaWxpdHlXaGVuVmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlU2NoZWR1bGVkID0geyB9OwogICAgIGlmIChfZ2VzdHVyZUNvbnRyb2xsZXIp
CiAgICAgICAgIF9nZXN0dXJlQ29udHJvbGxlci0+Y29ubmVjdFRvUHJvY2VzcygpOwogfQpAQCAt
MTg4OCwxMiArMTg4OCwxMiBAQCAtIChDR1JlY3QpX2NvbnRlbnRSZWN0Rm9yVXNlckludGVyYWN0
aW9uCiB9CiAKIC8vIElkZWFsbHkgVUlTY3JvbGxWaWV3IHdvdWxkIGV4cG9zZSB0aGlzIGZvciB1
czogPHJkYXI6Ly9wcm9ibGVtLzIxMzk0NTY3Pi4KLS0gKEJPT0wpX3Njcm9sbFZpZXdJc1J1YmJl
ckJhbmRpbmcKKy0gKEJPT0wpX3Njcm9sbFZpZXdJc1J1YmJlckJhbmRpbmc6KFVJU2Nyb2xsVmll
dyAqKXNjcm9sbFZpZXcKIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IF9wYWdlLT5k
ZXZpY2VTY2FsZUZhY3RvcigpOwogCi0gICAgQ0dQb2ludCBjb250ZW50T2Zmc2V0ID0gW19zY3Jv
bGxWaWV3IGNvbnRlbnRPZmZzZXRdOwotICAgIENHUG9pbnQgYm91bmRlZE9mZnNldCA9IGNvbnRl
bnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKF9zY3JvbGxWaWV3LmdldCgpLCBjb250ZW50T2Zm
c2V0KTsKKyAgICBDR1BvaW50IGNvbnRlbnRPZmZzZXQgPSBbc2Nyb2xsVmlldyBjb250ZW50T2Zm
c2V0XTsKKyAgICBDR1BvaW50IGJvdW5kZWRPZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRlZElu
VmFsaWRSYW5nZShzY3JvbGxWaWV3LCBjb250ZW50T2Zmc2V0KTsKICAgICByZXR1cm4gIXBvaW50
c0VxdWFsSW5EZXZpY2VQaXhlbHMoY29udGVudE9mZnNldCwgYm91bmRlZE9mZnNldCwgZGV2aWNl
U2NhbGVGYWN0b3IpOwogfQogCkBAIC0xOTIwLDIzICsxOTIwLDMwIEBAIC0gKHZvaWQpX3NjaGVk
dWxlRm9yY2VkVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlCiAgICAgW3NlbGYgX3NjaGVkdWxlVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlXTsKIH0KIAotLSAoQk9PTClfc2Nyb2xsVmlld0lzSW5TdGFi
bGVTdGF0ZTooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldworLSAoT3B0aW9uU2V0PFdlYktpdDo6
Vmlld1N0YWJpbGl0eUZsYWc+KV92aWV3U3RhYmlsaXR5U3RhdGU6KFVJU2Nyb2xsVmlldyAqKXNj
cm9sbFZpZXcKIHsKLSAgICBCT09MIGlzU3RhYmxlU3RhdGUgPSAhKFtzY3JvbGxWaWV3IGlzRHJh
Z2dpbmddIHx8IFtzY3JvbGxWaWV3IGlzRGVjZWxlcmF0aW5nXSB8fCBbc2Nyb2xsVmlldyBpc1pv
b21pbmddIHx8IFtzY3JvbGxWaWV3IF9pc0FuaW1hdGluZ1pvb21dIHx8IFtzY3JvbGxWaWV3IF9p
c1Njcm9sbGluZ1RvVG9wXSk7CisgICAgT3B0aW9uU2V0PFdlYktpdDo6Vmlld1N0YWJpbGl0eUZs
YWc+IHN0YWJpbGl0eUZsYWdzOworCisgICAgaWYgKHNjcm9sbFZpZXcuaXNEcmFnZ2luZyB8fCBz
Y3JvbGxWaWV3LmlzWm9vbWluZyB8fCBzY3JvbGxWaWV3Ll9pc0ludGVycnVwdGluZ0RlY2VsZXJh
dGlvbikKKyAgICAgICAgc3RhYmlsaXR5RmxhZ3MuYWRkKFdlYktpdDo6Vmlld1N0YWJpbGl0eUZs
YWc6OlNjcm9sbFZpZXdJbnRlcmFjdGluZyk7CiAKLSAgICBpZiAoaXNTdGFibGVTdGF0ZSAmJiBz
Y3JvbGxWaWV3ID09IF9zY3JvbGxWaWV3LmdldCgpKQotICAgICAgICBpc1N0YWJsZVN0YXRlID0g
IV9pc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5OworICAgIGlmIChzY3JvbGxW
aWV3LmlzRGVjZWxlcmF0aW5nIHx8IHNjcm9sbFZpZXcuX2lzQW5pbWF0aW5nWm9vbSB8fCBzY3Jv
bGxWaWV3Ll9pc1Njcm9sbGluZ1RvVG9wKQorICAgICAgICBzdGFiaWxpdHlGbGFncy5hZGQoV2Vi
S2l0OjpWaWV3U3RhYmlsaXR5RmxhZzo6U2Nyb2xsVmlld0FuaW1hdGVkU2Nyb2xsT3Jab29tKTsK
IAotICAgIGlmIChpc1N0YWJsZVN0YXRlICYmIHNjcm9sbFZpZXcgPT0gX3Njcm9sbFZpZXcuZ2V0
KCkpCi0gICAgICAgIGlzU3RhYmxlU3RhdGUgPSAhW3NlbGYgX3Njcm9sbFZpZXdJc1J1YmJlckJh
bmRpbmddOworICAgIGlmIChzY3JvbGxWaWV3ID09IF9zY3JvbGxWaWV3LmdldCgpICYmIF9pc0No
YW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5KQorICAgICAgICBzdGFiaWxpdHlGbGFn
cy5hZGQoV2ViS2l0OjpWaWV3U3RhYmlsaXR5RmxhZzo6Q2hhbmdpbmdPYnNjdXJlZEluc2V0c0lu
dGVyYWN0aXZlbHkpOwogCi0gICAgaWYgKGlzU3RhYmxlU3RhdGUpCi0gICAgICAgIGlzU3RhYmxl
U3RhdGUgPSAhc2Nyb2xsVmlldy5faXNJbnRlcnJ1cHRpbmdEZWNlbGVyYXRpb247CisgICAgaWYg
KFtzZWxmIF9zY3JvbGxWaWV3SXNSdWJiZXJCYW5kaW5nOnNjcm9sbFZpZXddKQorICAgICAgICBz
dGFiaWxpdHlGbGFncy5hZGQoV2ViS2l0OjpWaWV3U3RhYmlsaXR5RmxhZzo6U2Nyb2xsVmlld1J1
YmJlckJhbmRpbmcpOwogCi0gICAgaWYgKE5TTnVtYmVyICpzdGFibGVPdmVycmlkZSA9IHNlbGYu
X3N0YWJsZVN0YXRlT3ZlcnJpZGUpCi0gICAgICAgIGlzU3RhYmxlU3RhdGUgPSBzdGFibGVPdmVy
cmlkZS5ib29sVmFsdWU7CisgICAgaWYgKE5TTnVtYmVyICpzdGFibGVPdmVycmlkZSA9IHNlbGYu
X3N0YWJsZVN0YXRlT3ZlcnJpZGUpIHsKKyAgICAgICAgaWYgKHN0YWJsZU92ZXJyaWRlLmJvb2xW
YWx1ZSkKKyAgICAgICAgICAgIHN0YWJpbGl0eUZsYWdzID0geyB9OworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzdGFiaWxpdHlGbGFncy5hZGQoV2ViS2l0OjpWaWV3U3RhYmlsaXR5RmxhZzo6
VW5zdGFibGVGb3JUZXN0aW5nKTsKKyAgICB9CiAKLSAgICByZXR1cm4gaXNTdGFibGVTdGF0ZTsK
KyAgICByZXR1cm4gc3RhYmlsaXR5RmxhZ3M7CiB9CiAKIC0gKHZvaWQpX2FkZFVwZGF0ZVZpc2li
bGVDb250ZW50UmVjdFByZUNvbW1pdEhhbmRsZXIKQEAgLTE5NjAsNyArMTk2Nyw3IEBAIC0gKHZv
aWQpX2FkZFVwZGF0ZVZpc2libGVDb250ZW50UmVjdFByZUNvbW1pdEhhbmRsZXIKIAogLSAodm9p
ZClfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlldzooVUlT
Y3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewotICAgIF92aXNpYmxlQ29udGVudFJlY3RVcGRhdGVT
Y2hlZHVsZWRGcm9tU2Nyb2xsVmlld0luU3RhYmxlU3RhdGUgPSBbc2VsZiBfc2Nyb2xsVmlld0lz
SW5TdGFibGVTdGF0ZTpzY3JvbGxWaWV3XTsKKyAgICBfdmlld1N0YWJpbGl0eVdoZW5WaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVTY2hlZHVsZWQgPSBbc2VsZiBfdmlld1N0YWJpbGl0eVN0YXRlOnNj
cm9sbFZpZXddOwogCiAgICAgaWYgKF9oYXNTY2hlZHVsZWRWaXNpYmxlUmVjdFVwZGF0ZSkgewog
ICAgICAgICBhdXRvIHRpbWVOb3cgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKQEAgLTIwNTQsNyAr
MjA2MSw3IEBAIC0gKFVJRWRnZUluc2V0cyljdXJyZW50bHlWaXNpYmxlQ29udGVudEluc2V0c1dp
dGhTY2FsZTooQ0dGbG9hdClzY2FsZUZhY3RvciBvYnNjCiAKIC0gKHZvaWQpX3VwZGF0ZVZpc2li
bGVDb250ZW50UmVjdHMKIHsKLSAgICBCT09MIGluU3RhYmxlU3RhdGUgPSBfdmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlU2NoZWR1bGVkRnJvbVNjcm9sbFZpZXdJblN0YWJsZVN0YXRlOworICAgIGF1
dG8gdmlld1N0YWJpbGl0eSA9IF92aWV3U3RhYmlsaXR5V2hlblZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZVNjaGVkdWxlZDsKIAogICAgIGlmICghW3NlbGYgdXNlc1N0YW5kYXJkQ29udGVudFZpZXdd
KSB7CiAgICAgICAgIFtfcGFzc3dvcmRWaWV3IHNldEZyYW1lOnNlbGYuYm91bmRzXTsKQEAgLTIx
MTAsNyArMjExNyw3IEBAIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICBh
dXRvIGNvbnRlbnRJbnNldHMgPSBbc2VsZiBjdXJyZW50bHlWaXNpYmxlQ29udGVudEluc2V0c1dp
dGhTY2FsZTpzY2FsZUZhY3RvciBvYnNjdXJlZEluc2V0czpjb21wdXRlZENvbnRlbnRJbnNldFVu
YWRqdXN0ZWRGb3JLZXlib2FyZF07CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKSAmJiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQotICAgIGlmIChpblN0YWJsZVN0YXRlKSB7CisgICAgaWYg
KHZpZXdTdGFiaWxpdHkuaXNFbXB0eSgpKSB7CiAgICAgICAgIFdlYktpdDo6UmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3JQcm94eSogY29vcmRpbmF0b3IgPSBfcGFnZS0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3JQcm94eSgpOwogICAgICAgICBpZiAoY29vcmRpbmF0b3IgJiYgY29vcmRpbmF0b3ItPmhh
c0FjdGl2ZVNuYXBQb2ludCgpKSB7CiAgICAgICAgICAgICBDR1BvaW50IGN1cnJlbnRQb2ludCA9
IFtfc2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XTsKQEAgLTIxMzQsOCArMjE0MSw3IEBAIC0gKHZv
aWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHMKICAgICAgICAgdW5vYnNjdXJlZFNhZmVBcmVh
SW5zZXRzOltzZWxmIF9jb21wdXRlZFVub2JzY3VyZWRTYWZlQXJlYUluc2V0XQogICAgICAgICBp
bnB1dFZpZXdCb3VuZHM6X2lucHV0Vmlld0JvdW5kcwogICAgICAgICBzY2FsZTpzY2FsZUZhY3Rv
ciBtaW5pbXVtU2NhbGU6W19zY3JvbGxWaWV3IG1pbmltdW1ab29tU2NhbGVdCi0gICAgICAgIGlu
U3RhYmxlU3RhdGU6aW5TdGFibGVTdGF0ZQotICAgICAgICBpc0NoYW5naW5nT2JzY3VyZWRJbnNl
dHNJbnRlcmFjdGl2ZWx5Ol9pc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5Cisg
ICAgICAgIHZpZXdTdGFiaWxpdHk6dmlld1N0YWJpbGl0eQogICAgICAgICBlbmNsb3NlZEluU2Ny
b2xsYWJsZUFuY2VzdG9yVmlldzpzY3JvbGxWaWV3Q2FuU2Nyb2xsKFtzZWxmIF9zY3JvbGxlcl0p
CiAgICAgICAgIHNlbmRFdmVuSWZVbmNoYW5nZWQ6X2Fsd2F5c1NlbmROZXh0VmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlXTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGQ4MTg5ZmRjODkyNzRmMDljOGViMjY0YThj
NWRhNWY0NTg1ZDVjZDAuLjczNzJmZjI5Zjc1OWIyMDEwODc2NjU4MWRkMTA0MThiOGI0ODM2YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3Mv
UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
UHJveHlJT1MubW0KQEAgLTEyNSw2ICsxMjUsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yUHJveHk6OnNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZShTY3JvbAog
ICAgIG1fd2ViUGFnZVByb3h5LnNjcm9sbGluZ05vZGVTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2Vz
dHVyZSgpOwogfQogCisvLyBUaGlzIGlzIG5vdCBjYWxsZWQgZm9yIHRoZSBtYWluIHNjcm9sbCB2
aWV3Lgogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxpbmdUcmVl
Tm9kZVdpbGxTdGFydFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogewogICAgIG1fd2Vi
UGFnZVByb3h5LnNjcm9sbGluZ05vZGVTY3JvbGxXaWxsU3RhcnRTY3JvbGwoKTsKQEAgLTEzMyw2
ICsxMzQsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNjcm9sbGlu
Z1RyZWVOb2RlV2lsbFN0YXJ0U2Nyb2xsKFNjcm9sbGluZwogICAgIHNlbmRVSVN0YXRlQ2hhbmdl
ZElmTmVjZXNzYXJ5KCk7CiB9CiAKKy8vIFRoaXMgaXMgbm90IGNhbGxlZCBmb3IgdGhlIG1haW4g
c2Nyb2xsIHZpZXcuCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNjcm9s
bGluZ1RyZWVOb2RlRGlkRW5kU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiB7CiAgICAg
bV93ZWJQYWdlUHJveHkuc2Nyb2xsaW5nTm9kZVNjcm9sbERpZEVuZFNjcm9sbCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3LmgKaW5kZXggNTM5MTllMWExZGQ0
NmQ3OWE4YjQxZDdkMmYzYjMwYzA5NDQ3Mjk4NS4uYTVjNGE0MzFlNDY2MjUzNmY3MTlhNmE5YmI0
YzRmNTY4MzIyMGE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5oCkBAIC01MSw2ICs1MSw3IEBAIGNsYXNzIFdlYkZyYW1lUHJveHk7CiBjbGFzcyBXZWJQ
YWdlUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUHJveHk7CiBjbGFzcyBXZWJQcm9jZXNzUG9vbDsK
K2VudW0gY2xhc3MgVmlld1N0YWJpbGl0eUZsYWcgOiB1aW50OF90OwogfQogCiBAaW50ZXJmYWNl
IFdLQ29udGVudFZpZXcgOiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcgewpAQCAtODEs
OCArODIsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKICAgICB1bm9ic2N1cmVkU2FmZUFyZWFJ
bnNldHM6KFVJRWRnZUluc2V0cyl1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMKICAgICBpbnB1dFZp
ZXdCb3VuZHM6KENHUmVjdClpbnB1dFZpZXdCb3VuZHMKICAgICBzY2FsZTooQ0dGbG9hdClzY2Fs
ZSBtaW5pbXVtU2NhbGU6KENHRmxvYXQpbWluaW11bVNjYWxlCi0gICAgaW5TdGFibGVTdGF0ZToo
Qk9PTClpc1N0YWJsZVN0YXRlCi0gICAgaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3Rp
dmVseTooQk9PTClpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5CisgICAgdmll
d1N0YWJpbGl0eTooT3B0aW9uU2V0PFdlYktpdDo6Vmlld1N0YWJpbGl0eUZsYWc+KXZpZXdTdGFi
aWxpdHkKICAgICBlbmNsb3NlZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldzooQk9PTCllbmNsb3Nl
ZEluU2Nyb2xsYWJsZUFuY2VzdG9yVmlldwogICAgIHNlbmRFdmVuSWZVbmNoYW5nZWQ6KEJPT0wp
c2VuZEV2ZW5JZlVuY2hhbmdlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlldy5tbQppbmRleCBkMzFiNjNlYTBiMGU0MWI0YjI4MTZmNDBmZjIyYzYxZjI3NWMz
YjAyLi45Njk3MDA3YmExYzhlZjAwOTNhNGNjMmVjOTAxOTVhNWRiZDc1ODQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNDM2LDggKzQzNiw3
IEBAIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2aXNpYmxlQ29udGVudFJl
Y3QKICAgICB1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHM6KFVJRWRnZUluc2V0cyl1bm9ic2N1cmVk
U2FmZUFyZWFJbnNldHMKICAgICBpbnB1dFZpZXdCb3VuZHM6KENHUmVjdClpbnB1dFZpZXdCb3Vu
ZHMKICAgICBzY2FsZTooQ0dGbG9hdCl6b29tU2NhbGUgbWluaW11bVNjYWxlOihDR0Zsb2F0KW1p
bmltdW1TY2FsZQotICAgIGluU3RhYmxlU3RhdGU6KEJPT0wpaXNTdGFibGVTdGF0ZQotICAgIGlz
Q2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHk6KEJPT0wpaXNDaGFuZ2luZ09ic2N1
cmVkSW5zZXRzSW50ZXJhY3RpdmVseQorICAgIHZpZXdTdGFiaWxpdHk6KE9wdGlvblNldDxXZWJL
aXQ6OlZpZXdTdGFiaWxpdHlGbGFnPil2aWV3U3RhYmlsaXR5CiAgICAgZW5jbG9zZWRJblNjcm9s
bGFibGVBbmNlc3RvclZpZXc6KEJPT0wpZW5jbG9zZWRJblNjcm9sbGFibGVBbmNlc3RvclZpZXcK
ICAgICBzZW5kRXZlbklmVW5jaGFuZ2VkOihCT09MKXNlbmRFdmVuSWZVbmNoYW5nZWQKIHsKQEAg
LTQ0Nyw3ICs0NDYsOCBAQCAtICh2b2lkKWRpZFVwZGF0ZVZpc2libGVSZWN0OihDR1JlY3Qpdmlz
aWJsZUNvbnRlbnRSZWN0CiAKICAgICBNb25vdG9uaWNUaW1lIHRpbWVzdGFtcCA9IE1vbm90b25p
Y1RpbWU6Om5vdygpOwogICAgIFdlYkNvcmU6OlZlbG9jaXR5RGF0YSB2ZWxvY2l0eURhdGE7Ci0g
ICAgaWYgKCFpc1N0YWJsZVN0YXRlKQorICAgIGJvb2wgaW5TdGFibGVTdGF0ZSA9IHZpZXdTdGFi
aWxpdHkuaXNFbXB0eSgpOworICAgIGlmICghaW5TdGFibGVTdGF0ZSkKICAgICAgICAgdmVsb2Np
dHlEYXRhID0gX2hpc3RvcmljYWxLaW5lbWF0aWNEYXRhLnZlbG9jaXR5Rm9yTmV3RGF0YSh2aXNp
YmxlQ29udGVudFJlY3Qub3JpZ2luLCB6b29tU2NhbGUsIHRpbWVzdGFtcCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIF9oaXN0b3JpY2FsS2luZW1hdGljRGF0YS5jbGVhcigpOwpAQCAtNDY3LDkgKzQ2
Nyw4IEBAIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2aXNpYmxlQ29udGVu
dFJlY3QKICAgICAgICAgZmxvYXRCb3hFeHRlbnQob2JzY3VyZWRJbnNldHMpLAogICAgICAgICBm
bG9hdEJveEV4dGVudCh1bm9ic2N1cmVkU2FmZUFyZWFJbnNldHMpLAogICAgICAgICB6b29tU2Nh
bGUsCi0gICAgICAgIGlzU3RhYmxlU3RhdGUsCisgICAgICAgIHZpZXdTdGFiaWxpdHksCiAgICAg
ICAgIF9zaXplQ2hhbmdlZFNpbmNlTGFzdFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSwKLSAgICAg
ICAgaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVseSwKICAgICAgICAgc2VsZi53
ZWJWaWV3Ll9hbGxvd3NWaWV3cG9ydFNocmlua1RvRml0LAogICAgICAgICBlbmNsb3NlZEluU2Ny
b2xsYWJsZUFuY2VzdG9yVmlldywKICAgICAgICAgdmVsb2NpdHlEYXRhLApAQCAtNDkwLDcgKzQ4
OSw3IEBAIC0gKHZvaWQpZGlkVXBkYXRlVmlzaWJsZVJlY3Q6KENHUmVjdCl2aXNpYmxlQ29udGVu
dFJlY3QKICAgICAKICAgICBbc2VsZiB1cGRhdGVGaXhlZENsaXBwaW5nVmlldzpsYXlvdXRWaWV3
cG9ydF07CiAKLSAgICBpZiAod2FzU3RhYmxlU3RhdGUgJiYgIWlzU3RhYmxlU3RhdGUpCisgICAg
aWYgKHdhc1N0YWJsZVN0YXRlICYmICFpblN0YWJsZVN0YXRlKQogICAgICAgICBbc2VsZiBfZGlk
RXhpdFN0YWJsZVN0YXRlXTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCBjN2VhMTczMWYxZDEzOGUxZjk5MDY1NGFjOTg3
ZWIxZjQwMzFjMDg2Li5jZThkNzQ0MmNhYTAzYTAxYWFiMjA5ODQ2ZjBmODhmYjcxYmY3Njc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3Iu
aApAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNjcm9sbGluZ1N0YXRlSW5V
SVByb2Nlc3NDaGFuZ2VkKGNvbnN0IFJlbW90ZVNjcm9sbGluZ1VJU3RhdGUmKTsKIAorICAgIHZv
aWQgYWRkTm9kZVdpdGhBY3RpdmVSdWJiZXJCYW5kaW5nKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJ
RCk7CisgICAgdm9pZCByZW1vdmVOb2RlV2l0aEFjdGl2ZVJ1YmJlckJhbmRpbmcoV2ViQ29yZTo6
U2Nyb2xsaW5nTm9kZUlEKTsKKwogcHJpdmF0ZToKICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGlu
YXRvcihXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3Io
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci5tbQppbmRleCA3MjhkZTNlNTE0YzQ3MDBiYjZhMGI1ODdkYzg3MWIyZDJmM2FlNjc0Li5lY2Rh
NjNiMGMyMmRlZmE4ZTdlYmExODE4ODA5NmYxNDU4OTMwMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCkBAIC0xMjUsNiArMTI1
LDE2IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlSW5V
SVByb2Nlc3NDaGFuZ2VkKGNvbnN0IFJlbW90ZVNjCiAgICAgICAgIG1fbm9kZXNXaXRoQWN0aXZl
VXNlclNjcm9sbHMgPSB1aVN0YXRlLm5vZGVzV2l0aEFjdGl2ZVVzZXJTY3JvbGxzKCk7CiB9CiAK
K3ZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmFkZE5vZGVXaXRoQWN0aXZlUnViYmVy
QmFuZGluZyhTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQoreworICAgIG1fbm9kZXNXaXRoQWN0aXZl
UnViYmVyQmFuZGluZy5hZGQobm9kZUlEKTsKK30KKwordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvcjo6cmVtb3ZlTm9kZVdpdGhBY3RpdmVSdWJiZXJCYW5kaW5nKFNjcm9sbGluZ05vZGVJ
RCBub2RlSUQpCit7CisgICAgbV9ub2Rlc1dpdGhBY3RpdmVSdWJiZXJCYW5kaW5nLnJlbW92ZShu
b2RlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDk4ZDNmNzkxM2IyY2IxMWE3NjRmNGYxOTMyMDFmYzM2
ZWI3ZWRhZjMuLmQ2YTBlNzFhNjQzODkwODdiNzY0NTQwNWMxZGYxNWVlZWYxYWFhM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0ICJQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJQcmlu
dEluZm8uaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmgiCisjaW1wb3J0
ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGll
cy5oIgogI2ltcG9ydCAiU2hhcmVkTWVtb3J5LmgiCiAjaW1wb3J0ICJTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUuaCIKQEAgLTM4MzUsNiArMzgzNiwxOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0
ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYg
dmlzaQogICAgIEZsb2F0UmVjdCBhZGp1c3RlZEV4cG9zZWRDb250ZW50UmVjdCA9IGFkanVzdEV4
cG9zZWRSZWN0Rm9yTmV3U2NhbGUoZXhwb3NlZENvbnRlbnRSZWN0LCB2aXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvLnNjYWxlKCksIHNjYWxlVG9Vc2UpOwogICAgIG1fZHJhd2luZ0FyZWEtPnNl
dEV4cG9zZWRDb250ZW50UmVjdChhZGp1c3RlZEV4cG9zZWRDb250ZW50UmVjdCk7CiAKKyAgICBh
dXRvJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZp
ZXcgPSAqZnJhbWUudmlldygpOworCisgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9y
ID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgeworICAgICAgICBhdXRvJiByZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvciA9IGRvd25jYXN0PFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
Pigqc2Nyb2xsaW5nQ29vcmRpbmF0b3IpOworICAgICAgICBpZiAoYXV0byBtYWluRnJhbWVTY3Jv
bGxpbmdOb2RlSUQgPSBmcmFtZVZpZXcuc2Nyb2xsaW5nTm9kZUlEKCkpIHsKKyAgICAgICAgICAg
IGlmICh2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLnZpZXdTdGFiaWxpdHkoKS5jb250YWlu
cyhWaWV3U3RhYmlsaXR5RmxhZzo6U2Nyb2xsVmlld1J1YmJlckJhbmRpbmcpKQorICAgICAgICAg
ICAgICAgIHJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmFkZE5vZGVXaXRoQWN0aXZlUnViYmVy
QmFuZGluZyhtYWluRnJhbWVTY3JvbGxpbmdOb2RlSUQpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIHJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLnJlbW92ZU5vZGVXaXRoQWN0
aXZlUnViYmVyQmFuZGluZyhtYWluRnJhbWVTY3JvbGxpbmdOb2RlSUQpOworICAgICAgICB9Cisg
ICAgfQorCiAgICAgSW50UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQodmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby51bm9ic2N1cmVkQ29udGVudFJlY3QoKS5sb2NhdGlv
bigpKTsKIAogICAgIGJvb2wgcGFnZUhhc0JlZW5TY2FsZWRTaW5jZUxhc3RMYXllclRyZWVDb21t
aXRUaGF0Q2hhbmdlZFBhZ2VTY2FsZSA9IChbJl0gewpAQCAtMzg3MCw4ICszODg0LDYgQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mIHZpc2kKICAgICAgICAgfQogICAgIH0KIAotICAgIGF1dG8mIGZyYW1l
ID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAgICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICpmcmFt
ZS52aWV3KCk7CiAgICAgaWYgKHNjcm9sbFBvc2l0aW9uICE9IGZyYW1lVmlldy5zY3JvbGxQb3Np
dGlvbigpKQogICAgICAgICBtX2R5bmFtaWNTaXplVXBkYXRlSGlzdG9yeS5jbGVhcigpOwogCkBA
IC0zOTIwLDE0ICszOTMyLDE1IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlVmlzaWJsZUNvbnRlbnRS
ZWN0cyhjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpCiAgICAgICAgIGZy
YW1lVmlldy5sYXlvdXRPclZpc3VhbFZpZXdwb3J0Q2hhbmdlZCgpOwogICAgIH0KIAotICAgIGlm
ICghdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5pc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJ
bnRlcmFjdGl2ZWx5KCkpCisgICAgYm9vbCBpc0NoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFj
dGl2ZWx5ID0gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby52aWV3U3RhYmlsaXR5KCkuY29u
dGFpbnMoVmlld1N0YWJpbGl0eUZsYWc6OkNoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2
ZWx5KTsKKyAgICBpZiAoIWlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHkpCiAg
ICAgICAgIGZyYW1lVmlldy5zZXRDdXN0b21TaXplRm9yUmVzaXplRXZlbnQoZXhwYW5kZWRJbnRT
aXplKHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8udW5vYnNjdXJlZFJlY3RJblNjcm9sbFZp
ZXdDb29yZGluYXRlcygpLnNpemUoKSkpOwogCi0gICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9y
KiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpIHsK
LSAgICAgICAgVmlld3BvcnRSZWN0U3RhYmlsaXR5IHZpZXdwb3J0U3RhYmlsaXR5ID0gVmlld3Bv
cnRSZWN0U3RhYmlsaXR5OjpTdGFibGU7Ci0gICAgICAgIFNjcm9sbGluZ0xheWVyUG9zaXRpb25B
Y3Rpb24gbGF5ZXJBY3Rpb24gPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jOwor
ICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpIHsKKyAgICAgICAgYXV0byB2aWV3cG9ydFN0YWJpbGl0eSA9IFZpZXdwb3J0UmVj
dFN0YWJpbGl0eTo6U3RhYmxlOworICAgICAgICBhdXRvIGxheWVyQWN0aW9uID0gU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYzsKICAgICAgICAgCi0gICAgICAgIGlmICh2aXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvLmlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZl
bHkoKSkgeworICAgICAgICBpZiAoaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJhY3RpdmVs
eSkgewogICAgICAgICAgICAgdmlld3BvcnRTdGFiaWxpdHkgPSBWaWV3cG9ydFJlY3RTdGFiaWxp
dHk6OkNoYW5naW5nT2JzY3VyZWRJbnNldHNJbnRlcmFjdGl2ZWx5OwogICAgICAgICAgICAgbGF5
ZXJBY3Rpb24gPSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXRBcHByb3hpbWF0ZTsK
ICAgICAgICAgfSBlbHNlIGlmICghbV9pc0luU3RhYmxlU3RhdGUpIHsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA1N2QyZmEzZGMyZTU5OTE4ZDUx
MTViZDg1MjcyNTAxNTFjMjk2ZWJhLi41Y2I5YTdmMDJiNjc0NjNkZWU4NGFhNjNkYWI1M2NiMzZm
OTVhY2YyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMzUgQEAKKzIwMjEtMDEtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CisKKyAgICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBi
YW5kIHNjcm9sbGluZyBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVt
cAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODg2
CisgICAgICAgIDxyZGFyOi8vNzExNzc1NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gYWxsb3cgVUlT
Y3JpcHRDb250cm9sbGVyOjpzY3JvbGxUb09mZnNldCgpIGFuZAorICAgICAgICBVSVNjcmlwdENv
bnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KCkgdG8gdGFrZSBhbiBvcHRpb25zIGFy
Z3VtZW50IHdpdGgKKyAgICAgICAgYSAndW5jb25zdHJhaW5lZCcgcHJvcGVydHksIHdoaWNoIGFs
bG93cyBzY3JvbGxpbmcgdG8gdW5zdGFibGUgb2Zmc2V0IHRvIHNpbXVsYXRlCisgICAgICAgIHJ1
YmJlcmJhbmRpbmcuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2Fy
eSk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2Nyb2xsVG9PZmZzZXQp
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmltbWVkaWF0ZVNjcm9sbFRv
T2Zmc2V0KToKKyAgICAgICAgKFdUUjo6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2Up
OiBEZWxldGVkLgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0Jp
bmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6c2Nyb2xsVG9PZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlw
dENvbnRyb2xsZXI6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKiBUZXN0UnVu
bmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXJTaGFyZWQuY3BwOgor
ICAgICAgICAoV1RSOjp0b1Njcm9sbFRvT3B0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpjb250ZW50
T2Zmc2V0Qm91bmRlZElmTmVjZXNzYXJ5KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVySU9TOjpzY3JvbGxUb09mZnNldCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxl
cklPUzo6aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQpOgorICAgICAgICAoV1RSOjpjb250ZW50T2Zm
c2V0Qm91bmRlZEluVmFsaWRSYW5nZSk6IERlbGV0ZWQuCisKIDIwMjEtMDEtMjEgIEFha2FzaCBK
YWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtld3NdIFVzZSBnaXRodWIg
aW5zdGVhZCBvZiBzdm4ud2Via2l0Lm9yZyB0byBmZXRjaCBjb250cmlidXRvcnMuanNvbgpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCmluZGV4
IDJiODUxMWU5Yzk3NTRjNDQ1NDgyOGNhNzRmNDkwNjMyNTA4ZWZmNTIuLjQ1NjRlNDk3ZjQ0ZDFk
N2JlMDY3OGE1NDI1YmUxYjNmMWMyYjRmZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgog
ICAgIGRvdWJsZSB6b29tU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgY29udGVu
dE9mZnNldFgoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgY29udGVudE9mZnNldFkoKSBj
b25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KSBv
dmVycmlkZTsKLSAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5
KSBvdmVycmlkZTsKKyAgICB2b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3Jv
bGxUb09wdGlvbnMqKSBvdmVycmlkZTsKKyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0
KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMqKSBvdmVycmlkZTsKICAgICB2b2lkIGlt
bWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgZG91YmxlIG1p
bmltdW1ab29tU2NhbGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgbWF4aW11bVpvb21T
Y2FsZSgpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9V
SVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggM2UyNmNmN2Y1NmVmZmVmNThlOTM4ZjE4ZTkx
MjZiYjI2ZWNlN2ZjZi4uMjExZjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCkBAIC03NSwxOSArNzUsMjQgQEAgZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9v
bVNjYWxlKCkgY29uc3QKICAgICByZXR1cm4gZ1dlYlNjcm9sbFZpZXcuem9vbVNjYWxlOwogfQog
Ci1zdGF0aWMgQ0dQb2ludCBjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShVSVNjcm9s
bFZpZXcgKnNjcm9sbFZpZXcsIENHUG9pbnQgY29udGVudE9mZnNldCkKK3N0YXRpYyBDR1BvaW50
IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3NhcnkoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3
LCBsb25nIHgsIGxvbmcgeSwgU2Nyb2xsVG9PcHRpb25zKiBvcHRpb25zKQogewotICAgIFVJRWRn
ZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7Ci0gICAgQ0dT
aXplIGNvbnRlbnRTaXplID0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZTsKLSAgICBDR1NpemUgc2Ny
b2xsVmlld1NpemUgPSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplOworICAgIGF1dG8gY29udGVudE9m
ZnNldCA9IENHUG9pbnRNYWtlKHgsIHkpOworICAgIGJvb2wgY29uc3RyYWluID0gIW9wdGlvbnMg
fHwgIW9wdGlvbnMtPnVuY29uc3RyYWluZWQ7CisgICAgaWYgKGNvbnN0cmFpbikgeworICAgICAg
ICBVSUVkZ2VJbnNldHMgY29udGVudEluc2V0cyA9IHNjcm9sbFZpZXcuY29udGVudEluc2V0Owor
ICAgICAgICBDR1NpemUgY29udGVudFNpemUgPSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplOworICAg
ICAgICBDR1NpemUgc2Nyb2xsVmlld1NpemUgPSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplOworCisg
ICAgICAgIENHRmxvYXQgbWF4SG9yaXpvbnRhbE9mZnNldCA9IGNvbnRlbnRTaXplLndpZHRoICsg
Y29udGVudEluc2V0cy5yaWdodCAtIHNjcm9sbFZpZXdTaXplLndpZHRoOworICAgICAgICBjb250
ZW50T2Zmc2V0LnggPSBzdGQ6Om1pbihtYXhIb3Jpem9udGFsT2Zmc2V0LCBjb250ZW50T2Zmc2V0
LngpOworICAgICAgICBjb250ZW50T2Zmc2V0LnggPSBzdGQ6Om1heCgtY29udGVudEluc2V0cy5s
ZWZ0LCBjb250ZW50T2Zmc2V0LngpOworCisgICAgICAgIENHRmxvYXQgbWF4VmVydGljYWxPZmZz
ZXQgPSBjb250ZW50U2l6ZS5oZWlnaHQgKyBjb250ZW50SW5zZXRzLmJvdHRvbSAtIHNjcm9sbFZp
ZXdTaXplLmhlaWdodDsKKyAgICAgICAgY29udGVudE9mZnNldC55ID0gc3RkOjptaW4obWF4VmVy
dGljYWxPZmZzZXQsIGNvbnRlbnRPZmZzZXQueSk7CisgICAgICAgIGNvbnRlbnRPZmZzZXQueSA9
IHN0ZDo6bWF4KC1jb250ZW50SW5zZXRzLnRvcCwgY29udGVudE9mZnNldC55KTsKKyAgICB9CiAK
LSAgICBDR0Zsb2F0IG1heEhvcml6b250YWxPZmZzZXQgPSBjb250ZW50U2l6ZS53aWR0aCArIGNv
bnRlbnRJbnNldHMucmlnaHQgLSBzY3JvbGxWaWV3U2l6ZS53aWR0aDsKLSAgICBjb250ZW50T2Zm
c2V0LnggPSBzdGQ6Om1pbihtYXhIb3Jpem9udGFsT2Zmc2V0LCBjb250ZW50T2Zmc2V0LngpOwot
ICAgIGNvbnRlbnRPZmZzZXQueCA9IHN0ZDo6bWF4KC1jb250ZW50SW5zZXRzLmxlZnQsIGNvbnRl
bnRPZmZzZXQueCk7Ci0KLSAgICBDR0Zsb2F0IG1heFZlcnRpY2FsT2Zmc2V0ID0gY29udGVudFNp
emUuaGVpZ2h0ICsgY29udGVudEluc2V0cy5ib3R0b20gLSBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQ7
Ci0gICAgY29udGVudE9mZnNldC55ID0gc3RkOjptaW4obWF4VmVydGljYWxPZmZzZXQsIGNvbnRl
bnRPZmZzZXQueSk7Ci0gICAgY29udGVudE9mZnNldC55ID0gc3RkOjptYXgoLWNvbnRlbnRJbnNl
dHMudG9wLCBjb250ZW50T2Zmc2V0LnkpOwogICAgIHJldHVybiBjb250ZW50T2Zmc2V0OwogfQog
CkBAIC0xMDEsMTQgKzEwNiwxNiBAQCBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjpjb250
ZW50T2Zmc2V0WSgpIGNvbnN0CiAgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBjb250ZW50T2Zm
c2V0XS55OwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2Nyb2xsVG9PZmZzZXQo
bG9uZyB4LCBsb25nIHkpCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2Nyb2xsVG9PZmZz
ZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyogb3B0aW9ucykKIHsKLSAgICBbZ1dl
YlNjcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRS
YW5nZShnV2ViU2Nyb2xsVmlldywgQ0dQb2ludE1ha2UoeCwgeSkpIGFuaW1hdGVkOllFU107Cisg
ICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRlZElmTmVjZXNzYXJ5KGdXZWJTY3Jv
bGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBbZ1dlYlNjcm9sbFZpZXcgc2V0Q29udGVudE9m
ZnNldDpvZmZzZXQgYW5pbWF0ZWQ6WUVTXTsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJ
T1M6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQordm9pZCBVSVNjcmlw
dENvbnRyb2xsZXJJT1M6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBT
Y3JvbGxUb09wdGlvbnMqIG9wdGlvbnMpCiB7Ci0gICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRl
bnRPZmZzZXQ6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoZ1dlYlNjcm9sbFZpZXcs
IENHUG9pbnRNYWtlKHgsIHkpKSBhbmltYXRlZDpOT107CisgICAgYXV0byBvZmZzZXQgPSBjb250
ZW50T2Zmc2V0Qm91bmRlZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25z
KTsKKyAgICBbZ1dlYlNjcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpvZmZzZXQgYW5pbWF0ZWQ6
Tk9dOwogfQogCiB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlWm9vbVRvU2Nh
bGUoZG91YmxlIHNjYWxlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5p
ZGwKaW5kZXggM2UwNWViMTMzMDJjMzI2MjE2OTg1M2Y4MTRlZDgzMzM4M2JiNmFhNS4uYmRjNDUx
ZTA1YWU0ZTJhMTE1MzA5ZjE2YTNlNDY4ZDc4ZTliYzhlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5n
cy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCkBAIC0zOCw2ICszOCwxMCBAQCBlbnVtIE1vZGlmaWVy
S2V5IHsKICAgICAic2hpZnQiCiB9OwogCitkaWN0aW9uYXJ5IFNjcm9sbFRvT3B0aW9ucyB7Cisg
ICAgYm9vbGVhbiB1bmNvbnN0cmFpbmVkID0gZmFsc2U7Cit9OworCiBpbnRlcmZhY2UgVUlTY3Jp
cHRDb250cm9sbGVyIHsKIAogICAgIHVuZGVmaW5lZCBkb0FzeW5jVGFzayhvYmplY3QgY2FsbGJh
Y2spOyAvLyBVc2VkIHRvIHRlc3QgdGhlIGhhcm5lc3MuCkBAIC0yODIsMTAgKzI4NiwxMCBAQCBp
bnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKIAogICAgIGF0dHJpYnV0ZSBib29sZWFuIHNj
cm9sbFVwZGF0ZXNEaXNhYmxlZDsgLy8gVHVybnMgb2ZmIG5vdGlmaWNhdGlvbnMgYmFjayB0byB0
aGUgd2ViIHByb2Nlc3MgYWZ0ZXIgc2Nyb2xscyAodXNlZCBmb3IgdGVzdGluZyBzY3JvbGxpbmcg
dHJlZSkuCiAKLSAgICB1bmRlZmluZWQgc2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpOyAv
LyBJbml0aWF0ZSBhbiBhbmltYXRlZCBzY3JvbGwgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgdW5k
ZWZpbmVkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMgb3B0
aW9ucyk7IC8vIEluaXRpYXRlIGFuIGFuaW1hdGVkIHNjcm9sbCBpbiB0aGUgVUkgcHJvY2Vzcy4K
ICAgICBhdHRyaWJ1dGUgb2JqZWN0IGRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrOwogCi0gICAgdW5k
ZWZpbmVkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsgLy8gU2V0IHRo
ZSBzY3JvbGwgcG9zaXRpb24gaW4gdGhlIFVJIHByb2Nlc3Mgd2l0aG91dCBhbmltYXRpb24uCisg
ICAgdW5kZWZpbmVkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3Jv
bGxUb09wdGlvbnMgb3B0aW9ucyk7IC8vIFNldCB0aGUgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBV
SSBwcm9jZXNzIHdpdGhvdXQgYW5pbWF0aW9uLgogICAgIHVuZGVmaW5lZCBpbW1lZGlhdGVab29t
VG9TY2FsZShkb3VibGUgc2NhbGUpOyAvLyBTZXQgdGhlIHpvb20gc2NhbGUgaW4gdGhlIFVJIHBy
b2Nlc3Mgd2l0aG91dCBhbmltYXRpb24uCiAKICAgICAvLyBGaW5kIHRoZSBzY3JvbGxlciBmb3Ig
dGhlIGdpdmVuIHBvaW50IGluIGNvbnRlbnQgKCJhYnNvbHV0ZSIpIGNvb3JkaW5hdGVzLCBhbmQg
ZG8gYW4gaW1tZWRpYXRlIHNjcm9sbC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggN2U0ODA3
YjE1NGZiYTQ2MzZhOTY1ZTJhZWEwYmI3MDliYjViNmRhOC4uNGQ4MjVjODdiM2JhNzU5MGQ3OTBm
OGRlZWJhZWY2YTU5MTRkYzIxZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9V
SVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5l
clNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDggKzIz
LDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVm
IFVJU2NyaXB0Q29udHJvbGxlcl9oCi0jZGVmaW5lIFVJU2NyaXB0Q29udHJvbGxlcl9oCisjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNSZXRhaW5QdHIuaD4KQEAgLTUyLDYgKzUxLDEyIEBAIGVudW0gY2xhc3MgRGV2aWNl
T3JpZW50YXRpb24gewogCiBEZXZpY2VPcmllbnRhdGlvbiogdG9EZXZpY2VPcmllbnRhdGlvbihK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOwogCitzdHJ1Y3QgU2Nyb2xsVG9PcHRpb25zIHsKKyAg
ICBib29sIHVuY29uc3RyYWluZWQgeyBmYWxzZSB9OworfTsKKworU2Nyb2xsVG9PcHRpb25zKiB0
b1Njcm9sbFRvT3B0aW9ucyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworCiBjbGFzcyBVSVNj
cmlwdENvbnRyb2xsZXIgOiBwdWJsaWMgSlNXcmFwcGFibGUgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8VUlTY3JpcHRDb250cm9sbGVyPiBjcmVhdGUoVUlTY3JpcHRDb250ZXh0Jik7CkBAIC0x
MzMsOSArMTM4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxVcGRhdGVzRGlz
YWJsZWQoKSBjb25zdCB7IG5vdEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JvbGxVcGRhdGVzRGlzYWJsZWQoYm9vbCkgeyBub3RJbXBsZW1lbnRl
ZCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9PZmZzZXQobG9uZywgbG9uZykgeyBu
b3RJbXBsZW1lbnRlZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcs
IGxvbmcsIFNjcm9sbFRvT3B0aW9ucyopIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcsIGxvbmcpIHsgbm90SW1wbGVt
ZW50ZWQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxUb09mZnNldChsb25n
LCBsb25nLCBTY3JvbGxUb09wdGlvbnMqKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgaW1tZWRpYXRlU2Nyb2xsRWxlbWVudEF0Q29udGVudFBvaW50VG9PZmZzZXQobG9u
ZywgbG9uZywgbG9uZywgbG9uZykgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKICAgICB2aXJ0dWFs
IGRvdWJsZSBjb250ZW50T2Zmc2V0WCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJu
IDA7IH0KQEAgLTM2MCw1ICszNjUsMyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9Ci0KLSNlbmRpZiAv
LyBVSVNjcmlwdENvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyU2hhcmVkLmNwcCBiL1Rvb2xzL1Rl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlclNoYXJlZC5j
cHAKaW5kZXggOWU0OTQwY2UzYThiMTAyMjdmZWRlMWZlMmUyZjgxZjE5YThkYTY0Ni4uOTIwYWUz
OGNlOTk1YWJkNTE4Nzg2YjdjOTg3YmZmMzY3ODE5NzM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyU2hhcmVkLmNw
cAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXJTaGFyZWQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiVUlTY3JpcHRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJKU0Jhc2ljcy5o
IgogI2luY2x1ZGUgIkpTVUlTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVUlTY3JpcHRD
b250ZXh0LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgpAQCAtNTMs
NiArNTQsMTYgQEAgRGV2aWNlT3JpZW50YXRpb24qIHRvRGV2aWNlT3JpZW50YXRpb24oSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKK1Njcm9sbFRvT3B0aW9ucyogdG9TY3JvbGxUb09wdGlvbnMoSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTVmFsdWVSZWYgYXJndW1lbnQpCit7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29u
dGV4dCwgYXJndW1lbnQpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBT
Y3JvbGxUb09wdGlvbnMgb3B0aW9uczsKKyAgICBvcHRpb25zLnVuY29uc3RyYWluZWQgPSBib29s
ZWFuUHJvcGVydHkoY29udGV4dCwgKEpTT2JqZWN0UmVmKWFyZ3VtZW50LCAidW5jb25zdHJhaW5l
ZCIsIGZhbHNlKTsKKyAgICByZXR1cm4gJm9wdGlvbnM7Cit9CisKIFVJU2NyaXB0Q29udHJvbGxl
cjo6VUlTY3JpcHRDb250cm9sbGVyKFVJU2NyaXB0Q29udGV4dCYgY29udGV4dCkKICAgICA6IG1f
Y29udGV4dCgmY29udGV4dCkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
VUlTY3JpcHRDb250cm9sbGVySU9TLmgKaW5kZXggODU0NjQ0NzY2ZDhiYzVhODE1ZDI2N2U5YTdi
YTRhMjA1ZDZlNjEyMi4uM2ZkN2I4ZDMzZDY2ZDcwZTAyNWVkY2QzNjM1OWQ5NmJhMzVmNGE3NiAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLmgKQEAgLTk0LDggKzk0LDggQEAgcHJpdmF0ZToKICAgICBkb3VibGUgY29udGVudE9mZnNl
dFkoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNjcm9sbFVwZGF0ZXNEaXNhYmxlZCgpIGNv
bnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2Nyb2xsVXBkYXRlc0Rpc2FibGVkKGJvb2wpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpIG92ZXJyaWRl
OwotICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpIG92ZXJy
aWRlOworICAgIHZvaWQgc2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0
aW9ucyopIG92ZXJyaWRlOworICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4
LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyopIG92ZXJyaWRlOwogICAgIHZvaWQgaW1tZWRpYXRl
U2Nyb2xsRWxlbWVudEF0Q29udGVudFBvaW50VG9PZmZzZXQobG9uZyB4LCBsb25nIHksIGxvbmcg
eFNjcm9sbE9mZnNldCwgbG9uZyB5U2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkIGlt
bWVkaWF0ZVpvb21Ub1NjYWxlKGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBrZXli
b2FyZEFjY2Vzc29yeUJhck5leHQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA3YWY2ZWNmNTA5ODVm
MTVlZjQ3YzE5MThiNjVhMmViZGE2ZDI2YTA4Li41ZGQxZmU3NWU2MjI5MWFjZmE3MDNlMDBiZTgy
YmE0YTNhZTlmZTJhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlT
Y3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC02MTIsMTkgKzYxMiwyNCBAQCBib29sIFVJU2NyaXB0
Q29udHJvbGxlcklPUzo6aXNQcmVzZW50aW5nTW9kYWxseSgpIGNvbnN0CiAgICAgcmV0dXJuICEh
d2ViVmlldygpLndpbmRvdy5yb290Vmlld0NvbnRyb2xsZXIucHJlc2VudGVkVmlld0NvbnRyb2xs
ZXI7CiB9CiAKLXN0YXRpYyBDR1BvaW50IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdl
KFVJU2Nyb2xsVmlldyAqc2Nyb2xsVmlldywgQ0dQb2ludCBjb250ZW50T2Zmc2V0KQotewotICAg
IFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7Ci0g
ICAgQ0dTaXplIGNvbnRlbnRTaXplID0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZTsKLSAgICBDR1Np
emUgc2Nyb2xsVmlld1NpemUgPSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplOwotCi0gICAgQ0dGbG9h
dCBtYXhIb3Jpem9udGFsT2Zmc2V0ID0gY29udGVudFNpemUud2lkdGggKyBjb250ZW50SW5zZXRz
LnJpZ2h0IC0gc2Nyb2xsVmlld1NpemUud2lkdGg7Ci0gICAgY29udGVudE9mZnNldC54ID0gc3Rk
OjptaW4obWF4SG9yaXpvbnRhbE9mZnNldCwgY29udGVudE9mZnNldC54KTsKLSAgICBjb250ZW50
T2Zmc2V0LnggPSBzdGQ6Om1heCgtY29udGVudEluc2V0cy5sZWZ0LCBjb250ZW50T2Zmc2V0Lngp
Oworc3RhdGljIENHUG9pbnQgY29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShVSVNjcm9s
bFZpZXcgKnNjcm9sbFZpZXcsIGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMqIG9wdGlv
bnMpCit7CisgICAgYXV0byBjb250ZW50T2Zmc2V0ID0gQ0dQb2ludE1ha2UoeCwgeSk7CisgICAg
Ym9vbCBjb25zdHJhaW4gPSAhb3B0aW9ucyB8fCAhb3B0aW9ucy0+dW5jb25zdHJhaW5lZDsKKyAg
ICBpZiAoY29uc3RyYWluKSB7CisgICAgICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0g
c2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7CisgICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNj
cm9sbFZpZXcuY29udGVudFNpemU7CisgICAgICAgIENHU2l6ZSBzY3JvbGxWaWV3U2l6ZSA9IHNj
cm9sbFZpZXcuYm91bmRzLnNpemU7CisKKyAgICAgICAgQ0dGbG9hdCBtYXhIb3Jpem9udGFsT2Zm
c2V0ID0gY29udGVudFNpemUud2lkdGggKyBjb250ZW50SW5zZXRzLnJpZ2h0IC0gc2Nyb2xsVmll
d1NpemUud2lkdGg7CisgICAgICAgIGNvbnRlbnRPZmZzZXQueCA9IHN0ZDo6bWluKG1heEhvcml6
b250YWxPZmZzZXQsIGNvbnRlbnRPZmZzZXQueCk7CisgICAgICAgIGNvbnRlbnRPZmZzZXQueCA9
IHN0ZDo6bWF4KC1jb250ZW50SW5zZXRzLmxlZnQsIGNvbnRlbnRPZmZzZXQueCk7CisKKyAgICAg
ICAgQ0dGbG9hdCBtYXhWZXJ0aWNhbE9mZnNldCA9IGNvbnRlbnRTaXplLmhlaWdodCArIGNvbnRl
bnRJbnNldHMuYm90dG9tIC0gc2Nyb2xsVmlld1NpemUuaGVpZ2h0OworICAgICAgICBjb250ZW50
T2Zmc2V0LnkgPSBzdGQ6Om1pbihtYXhWZXJ0aWNhbE9mZnNldCwgY29udGVudE9mZnNldC55KTsK
KyAgICAgICAgY29udGVudE9mZnNldC55ID0gc3RkOjptYXgoLWNvbnRlbnRJbnNldHMudG9wLCBj
b250ZW50T2Zmc2V0LnkpOworICAgIH0KIAotICAgIENHRmxvYXQgbWF4VmVydGljYWxPZmZzZXQg
PSBjb250ZW50U2l6ZS5oZWlnaHQgKyBjb250ZW50SW5zZXRzLmJvdHRvbSAtIHNjcm9sbFZpZXdT
aXplLmhlaWdodDsKLSAgICBjb250ZW50T2Zmc2V0LnkgPSBzdGQ6Om1pbihtYXhWZXJ0aWNhbE9m
ZnNldCwgY29udGVudE9mZnNldC55KTsKLSAgICBjb250ZW50T2Zmc2V0LnkgPSBzdGQ6Om1heCgt
Y29udGVudEluc2V0cy50b3AsIGNvbnRlbnRPZmZzZXQueSk7CiAgICAgcmV0dXJuIGNvbnRlbnRP
ZmZzZXQ7CiB9CiAKQEAgLTY0OCwxNiArNjUzLDE4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
SU9TOjpzZXRTY3JvbGxVcGRhdGVzRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKICAgICB3ZWJWaWV3
KCkuX3Njcm9sbGluZ1VwZGF0ZXNEaXNhYmxlZEZvclRlc3RpbmcgPSBkaXNhYmxlZDsKIH0KIAot
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5
KQordm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9u
ZyB5LCBTY3JvbGxUb09wdGlvbnMqIG9wdGlvbnMpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmll
dyAqd2ViVmlldyA9IHRoaXMtPndlYlZpZXcoKTsKLSAgICBbd2ViVmlldy5zY3JvbGxWaWV3IHNl
dENvbnRlbnRPZmZzZXQ6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2Uod2ViVmlldy5z
Y3JvbGxWaWV3LCBDR1BvaW50TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6WUVTXTsKKyAgICBhdXRvIG9m
ZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3Nhcnkod2ViVmlldy5zY3JvbGxWaWV3
LCB4LCB5LCBvcHRpb25zKTsKKyAgICBbd2ViVmlldy5zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZz
ZXQ6b2Zmc2V0IGFuaW1hdGVkOllFU107CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9T
OjppbW1lZGlhdGVTY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSkKK3ZvaWQgVUlTY3JpcHRD
b250cm9sbGVySU9TOjppbW1lZGlhdGVTY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSwgU2Ny
b2xsVG9PcHRpb25zKiBvcHRpb25zKQogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZp
ZXcgPSB0aGlzLT53ZWJWaWV3KCk7Ci0gICAgW3dlYlZpZXcuc2Nyb2xsVmlldyBzZXRDb250ZW50
T2Zmc2V0OmNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKHdlYlZpZXcuc2Nyb2xsVmll
dywgQ0dQb2ludE1ha2UoeCwgeSkpIGFuaW1hdGVkOk5PXTsKKyAgICBhdXRvIG9mZnNldCA9IGNv
bnRlbnRPZmZzZXRCb3VuZGVkSWZOZWNlc3Nhcnkod2ViVmlldy5zY3JvbGxWaWV3LCB4LCB5LCBv
cHRpb25zKTsKKyAgICBbd2ViVmlldy5zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0
IGFuaW1hdGVkOk5PXTsKIH0KIAogc3RhdGljIFVJU2Nyb2xsVmlldyAqZW5jbG9zaW5nU2Nyb2xs
Vmlld0luY2x1ZGluZ1NlbGYoVUlWaWV3ICp2aWV3KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1YTVmOGQwNWQ5MTNlOWE4
ZTIxYzBhYjAyYzk4NGJkYWU5YjJhNjIuLmEwZWM3Y2JiMWQyY2NhNTQ1ZWJjY2MzODQ5YjIzOTY5
YTJkNTQzNjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0wMS0yMiAgU2ltb24gRnJhc2Vy
ICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2Uu
Y29tIC0gcnViYmVyIGJhbmQgc2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2Vz
IGFuIGFicnVwdCBqdW1wCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjA4ODYKKyAgICAgICAgPHJkYXI6Ly83MTE3NzU2Nj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBpbmZyYXN0cnVjdHVy
ZSB0byBhbGxvdyBVSVNjcmlwdENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zmc2V0KCkgYW5kCisgICAg
ICAgIFVJU2NyaXB0Q29udHJvbGxlcjo6aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQoKSB0byB0YWtl
IGFuIG9wdGlvbnMgYXJndW1lbnQgd2l0aAorICAgICAgICBhICd1bmNvbnN0cmFpbmVkJyBwcm9w
ZXJ0eSwgd2hpY2ggYWxsb3dzIHNjcm9sbGluZyB0byB1bnN0YWJsZSBvZmZzZXQgdG8gc2ltdWxh
dGUKKyAgICAgICAgcnViYmVyYmFuZGluZy4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2lv
cy9jb250ZW50LXNpemUtY2hhbmdlLWR1cmluZy1ydWJiZXJiYW5kLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVy
aW5nLXJ1YmJlcmJhbmQuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBl
ci5qczoKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5zY3JvbGxUby5yZXR1cm4ubmV3LlByb21p
c2UuKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5zY3JvbGxUby5yZXR1cm4ubmV3LlByb21p
c2UpOgorICAgICAgICAod2luZG93LlVJSGVscGVyLnNjcm9sbFRvKToKKyAgICAgICAgKHdpbmRv
dy5VSUhlbHBlci5pbW1lZGlhdGVTY3JvbGxUbyk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIu
aW1tZWRpYXRlVW5zdGFibGVTY3JvbGxUbyk6CisKIDIwMjEtMDEtMjEgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xsLWNoYWluaW5nIG5vdCB0
cmlnZ2VyaW5nIGJlZm9yZSBjb21wbGV0ZSBlbmQgb2Ygb3ZlcnNjcm9sbApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5n
LXJ1YmJlcmJhbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9z
L2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjkwZmViMmMxNWExNDdmNjc3MTI2OTM0MzY3MWNlYzhlMDZjZWYyNTAKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvY29udGVudC1zaXplLWNo
YW5nZS1kdXJpbmctcnViYmVyYmFuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUb3AK
K1BBU1Mgd2luZG93LnBhZ2VZT2Zmc2V0IGlzIC0xMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3Njcm9sbGluZy9pb3MvY29udGVudC1zaXplLWNoYW5nZS1kdXJpbmctcnViYmVyYmFuZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVy
aW5nLXJ1YmJlcmJhbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOTNmOTAyNTQ3YjExNmNjYTEyZDU5ODgz
NDg3MGYyNzhmMmZlMzU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3Jv
bGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQuaHRtbApAQCAt
MCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBB
c3luY092ZXJmbG93U2Nyb2xsaW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgor
ICAgIDxzdHlsZT4KKyAgICAgICAgLmNvbnRlbnQgeworICAgICAgICAgICAgaGVpZ2h0OiAyMDAw
cHg7CisgICAgICAgIH0KKworICAgICAgICBib2R5LmNoYW5nZWQgLmNvbnRlbnQgeworICAgICAg
ICAgICAgaGVpZ2h0OiAyMTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAg
IDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0PgorICAgICAgICB2YXIganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAg
ICAgYXN5bmMgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3Qg
dW5jb25zdHJhaW5lZCA9IHRydWU7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5zY3JvbGxU
bygwLCAtMTAwLCB1bmNvbnN0cmFpbmVkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdjaGFuZ2VkJyk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGF3YWl0IFVJSGVscGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICAgICAgc2hv
dWxkQmUoJ3dpbmRvdy5wYWdlWU9mZnNldCcsICctMTAwJyk7CisgICAgICAgICAgICBmaW5pc2hK
U1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgKCkgPT4geworICAgICAgICAgICAgZG9UZXN0KCk7CisgICAgICAgIH0sIGZhbHNlKTsK
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgIFRvcAorICAgIDxkaXYgY2xhc3M9
ImNvbnRlbnQiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxw
ZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IDIyZWU1MmY1
MWM1Yjg4MGU3NzMyMGRmNDMyYzYzMDg3YmU1YmNlM2YuLjkxYmQwNjZkZDUyZTQ5YjEyZjUzNmM2
MmNiNjhiMmMwMzU4NjExMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1o
ZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtNDIz
LDggKzQyMywyNiBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgewog
ICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUs
IG1zKSk7CiAgICAgfQorCisgICAgc3RhdGljIHNjcm9sbFRvKHgsIHksIHVuY29uc3RyYWluZWQp
CisgICAgeworICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpIHsKKyAgICAgICAgICAgIHdp
bmRvdy5zY3JvbGxUbyh4LCB5KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUo
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsK
KyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQoYAorICAgICAgICAgICAgICAgIChm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZEVuZFNjcm9s
bGluZ0NhbGxiYWNrID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1aUNv
bnRyb2xsZXIudWlTY3JpcHRDb21wbGV0ZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5zY3JvbGxUb09mZnNldCgke3h9LCAke3l9LCB7
IHVuY29uc3RyYWluZWQ6ICR7dW5jb25zdHJhaW5lZH0gfSk7CisgICAgICAgICAgICAgICAgfSko
KWAsIHJlc29sdmUpOworICAgICAgICB9KTsKKyAgICB9CiAgICAgCi0gICAgc3RhdGljIGltbWVk
aWF0ZVNjcm9sbFRvKHgsIHkpCisgICAgc3RhdGljIGltbWVkaWF0ZVNjcm9sbFRvKHgsIHksIHVu
Y29uc3RyYWluZWQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpIHsKICAg
ICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh4LCB5KTsKQEAgLTQzMywxMSArNDUxLDExIEBAIHdp
bmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVscGVyIHsKIAogICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAK
LSAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQoJHt4
fSwgJHt5fSk7YCwgcmVzb2x2ZSk7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmltbWVk
aWF0ZVNjcm9sbFRvT2Zmc2V0KCR7eH0sICR7eX0sIHsgdW5jb25zdHJhaW5lZDogJHt1bmNvbnN0
cmFpbmVkfSB9KTtgLCByZXNvbHZlKTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGlj
IGltbWVkaWF0ZVVuc3RhYmxlU2Nyb2xsVG8oeCwgeSkKKyAgICBzdGF0aWMgaW1tZWRpYXRlVW5z
dGFibGVTY3JvbGxUbyh4LCB5LCB1bmNvbnN0cmFpbmVkKQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLmlzV2ViS2l0MigpKSB7CiAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeCwgeSk7CkBA
IC00NDcsNyArNDY1LDcgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAg
ICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgICAgICB0ZXN0UnVu
bmVyLnJ1blVJU2NyaXB0KGAKICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc3RhYmxlU3Rh
dGVPdmVycmlkZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbW1lZGlh
dGVTY3JvbGxUb09mZnNldCgke3h9LCAke3l9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgICAgICAg
ICB1aUNvbnRyb2xsZXIuaW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQoJHt4fSwgJHt5fSwgeyB1bmNv
bnN0cmFpbmVkOiAke3VuY29uc3RyYWluZWR9IH0pO2AsIHJlc29sdmUpOwogICAgICAgICB9KTsK
ICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418213</attachid>
            <date>2021-01-22 21:59:36 -0800</date>
            <delta_ts>2021-01-24 16:47:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220886-20210122215935.patch</filename>
            <type>text/plain</type>
            <size>32937</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxNzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg4NWM5Yjk4OGRiOTY4
YThmNDBlMGYxOGFmNWQzOWJlYTRlNzBhNC4uMDBlOWMwMDIyMzdjN2I5NDhkODE5ZmI4YjVkMzE0
MzA4ZjUyOTI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTAxLTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1MgV0syXSB0
aGV2ZXJnZS5jb20gLSBydWJiZXIgYmFuZCBzY3JvbGxpbmcgYXQgdGhlIHRvcCBvZiB0aGUgcGFn
ZSBjYXVzZXMgYW4gYWJydXB0IGp1bXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIyMDg4NgorICAgICAgICA8cmRhcjovLzcxMTc3NTY2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHRoZXZlcmdlLmNvbSBv
biBpT1MgaXMgYSBwYWdlIHRoYXQgaGFzIGxvbmcgbWFpbiB0aHJlYWQgc3RhbGxzIHdpdGggZm9y
Y2VkIGxheW91dHMgb24gYSB0aW1lcgorICAgICAgICB0aGF0IGFsdGVyIHRoZSBwYWdlIGhlaWdo
dDsgdGhpcyBjYXVzZWQgdGhlIHBvc3QtbGF5b3V0IHVwZGF0ZVNjcm9sbGJhcnMoKSBjYWxsZWQg
ZnJvbQorICAgICAgICBGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKCkgdG8gY2FsbCBzY3JvbGxU
b1Bvc2l0aW9uKCkgYWZ0ZXIgYWRqdXN0aW5nIHRoZSBzY3JvbGwgcG9zaXRpb24KKyAgICAgICAg
dG8gdGhlIGFsbG93ZWQgcmFuZ2UuCisKKyAgICAgICAgSWYgdGhlIHBhZ2UgbGFpZCBvdXQgd2hp
bGUgcnViYmVyYmFuZGluZyB3YXMgaGFwcGVuaW5nLCB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRp
b24gd291bGQKKyAgICAgICAgYmUgbmVnYXRpdmUsIHRoZW4gY2xhbXBlZCB0byAwLCB0aGVuIHNl
bnQgdG8gdGhlIFVJIHByb2Nlc3MgYXMgYSByZXF1ZXN0ZWQgc2Nyb2xsIHRvIDAsCisgICAgICAg
IHRyaWdnZXJpbmcgdGhlIGp1bXAgdG8gdG9wIGluIHRoZSBVSSBwcm9jZXNzLgorCisgICAgICAg
IFRoZXJlJ3MgZXhpc3RpbmcgY29kZSB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmcgaWYg
d2Uga25vdyB0aGF0IHJ1YmJlcmJhbmRpbmcgaXMKKyAgICAgICAgaGFwcGVuaW5nOyB0aGlzIHBh
dGNoIG1ha2VzIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSB3b3JrIGZvciBpT1MgV0syLiBJdCBk
b2VzIHNvCisgICAgICAgIGJ5IGhhdmluZyB1cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzKCkgcHVz
aCBpbmZvcm1hdGlvbiBhYm91dCBydWJiZXJiYW5kaW5nIG5vZGVzIG9udG8KKyAgICAgICAgUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuCisKKyAgICAgICAgV2UgcmVtb3ZlIGFuIHVubmVjZXNz
YXJ5IHNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25TeW5jaHJvbm91c2x5KCkgY2hlY2sg
aW4KKyAgICAgICAgRnJhbWVWaWV3Ojppc1J1YmJlckJhbmRJblByb2dyZXNzKCkgLSBpZiBpdCdz
IHRydWUsIHRoZW4gdGhlIHNjcm9sbGluZyBjb29yZGluYXRvcgorICAgICAgICB3b24ndCBzZWUg
YW55IHJ1YmJlcmJhbmRpbmcgbm9kZXMgYW55d2F5LgorICAgICAgICAKKyAgICAgICAgVGVzdDog
ZmFzdC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQu
aHRtbAorCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3Ojppc1J1YmJlckJhbmRJblByb2dyZXNzIGNvbnN0KToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisKIDIwMjEtMDEtMjEg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2Nyb2xs
LWNoYWluaW5nIG5vdCB0cmlnZ2VyaW5nIGJlZm9yZSBjb21wbGV0ZSBlbmQgb2Ygb3ZlcnNjcm9s
bApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCAyY2VlOThjYWNhY2MyMzZmZTZiMjAzODJiNTUyNjFjYjIwOTFmODAyLi5j
NDc3MjBmZjQzOWIyZmZlYzhiOGM1N2VjZWE2M2U2MmQ2ODg0MWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDM3IEBACisyMDIxLTAxLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1MgV0syXSB0aGV2ZXJnZS5jb20gLSBydWJiZXIgYmFuZCBzY3Jv
bGxpbmcgYXQgdGhlIHRvcCBvZiB0aGUgcGFnZSBjYXVzZXMgYW4gYWJydXB0IGp1bXAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDg4NgorICAgICAg
ICA8cmRhcjovLzcxMTc3NTY2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorICAgICAgICAKKyAgICAgICAgdGhldmVyZ2UuY29tIG9uIGlPUyBpcyBhIHBhZ2UgdGhhdCBo
YXMgbG9uZyBtYWluIHRocmVhZCBzdGFsbHMgd2l0aCBmb3JjZWQgbGF5b3V0cyBvbiBhIHRpbWVy
CisgICAgICAgIHRoYXQgYWx0ZXIgdGhlIHBhZ2UgaGVpZ2h0OyB0aGlzIGNhdXNlZCB0aGUgcG9z
dC1sYXlvdXQgdXBkYXRlU2Nyb2xsYmFycygpIGNhbGxlZCBmcm9tCisgICAgICAgIEZyYW1lVmll
dzo6YWRqdXN0Vmlld1NpemUoKSB0byBjYWxsIHNjcm9sbFRvUG9zaXRpb24oKSBhZnRlciBhZGp1
c3RpbmcgdGhlIHNjcm9sbCBwb3NpdGlvbgorICAgICAgICB0byB0aGUgYWxsb3dlZCByYW5nZS4K
KworICAgICAgICBJZiB0aGUgcGFnZSBsYWlkIG91dCB3aGlsZSBydWJiZXJiYW5kaW5nIHdhcyBo
YXBwZW5pbmcsIHRoZSBjdXJyZW50IHNjcm9sbCBwb3NpdGlvbiB3b3VsZAorICAgICAgICBiZSBu
ZWdhdGl2ZSwgdGhlbiBjbGFtcGVkIHRvIDAsIHRoZW4gc2VudCB0byB0aGUgVUkgcHJvY2VzcyBh
cyBhIHJlcXVlc3RlZCBzY3JvbGwgdG8gMCwKKyAgICAgICAgdHJpZ2dlcmluZyB0aGUganVtcCB0
byB0b3AgaW4gdGhlIFVJIHByb2Nlc3MuCisKKyAgICAgICAgVGhlcmUncyBleGlzdGluZyBjb2Rl
IHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZyBpZiB3ZSBrbm93IHRoYXQgcnViYmVyYmFu
ZGluZyBpcworICAgICAgICBoYXBwZW5pbmc7IHRoaXMgcGF0Y2ggbWFrZXMgaXNSdWJiZXJCYW5k
SW5Qcm9ncmVzcygpIHdvcmsgZm9yIGlPUyBXSzIuIEl0IGRvZXMgc28KKyAgICAgICAgYnkgaGF2
aW5nIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoKSBwdXNoIGluZm9ybWF0aW9uIGFib3V0IHJ1
YmJlcmJhbmRpbmcgbm9kZXMgb250bworICAgICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci4KKworICAgICAgICBXZSByZW1vdmUgYW4gdW5uZWNlc3Nhcnkgc2hvdWxkVXBkYXRlU2Nyb2xs
TGF5ZXJQb3NpdGlvblN5bmNocm9ub3VzbHkoKSBjaGVjayBpbgorICAgICAgICBGcmFtZVZpZXc6
OmlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSAtIGlmIGl0J3MgdHJ1ZSwgdGhlbiB0aGUgc2Nyb2xs
aW5nIGNvb3JkaW5hdG9yCisgICAgICAgIHdvbid0IHNlZSBhbnkgcnViYmVyYmFuZGluZyBub2Rl
cyBhbnl3YXkuCisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
U2Nyb2xsaW5nQ29vcmRpbmF0b3IubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjphZGROb2RlV2l0aEFjdGl2ZVJ1YmJlckJhbmRpbmcpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlTm9kZVdpdGhBY3RpdmVS
dWJiZXJCYW5kaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHMpOgorCiAyMDIxLTAxLTIyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1MgV0syXSBNYWtlIHRoZSAiaW4gc3RhYmxlIHN0YXRlIiBiaXQgaW4g
dmlzaWJsZSBjb250ZW50IHJlY3QgdXBkYXRlcyBtb3JlIGZpbmUtZ3JhaW5lZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuY3BwCmluZGV4IGZjMmIzNTc4NjMzOTE2ZjM0MzJlOTM1MmMxZWNjYjE3NzA0
NDY1Y2EuLmZhYzI4MzQzZmQyYWFiMTA2NGEzYTdhMjU4NGI1Y2M4MjdjYWQxYjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTI2NjUsMTAgKzI2NjUsOCBAQCBib29sIEZyYW1lVmll
dzo6aXNSdWJiZXJCYW5kSW5Qcm9ncmVzcygpIGNvbnN0CiAgICAgaWYgKHNjcm9sbGJhcnNTdXBw
cmVzc2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChhdXRvIHNjcm9sbGlu
Z0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkgewotICAgICAgICBp
ZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9u
U3luY2hyb25vdXNseSgqdGhpcykpCi0gICAgICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmlzUnViYmVyQmFuZEluUHJvZ3Jlc3Moc2Nyb2xsaW5nTm9kZUlEKCkpOwotICAgIH0K
KyAgICBpZiAoYXV0byBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCkpCisgICAgICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+aXNSdWJiZXJC
YW5kSW5Qcm9ncmVzcyhzY3JvbGxpbmdOb2RlSUQoKSk7CiAKICAgICBpZiAoYXV0byBzY3JvbGxB
bmltYXRvciA9IGV4aXN0aW5nU2Nyb2xsQW5pbWF0b3IoKSkKICAgICAgICAgcmV0dXJuIHNjcm9s
bEFuaW1hdG9yLT5pc1J1YmJlckJhbmRJblByb2dyZXNzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
aAppbmRleCBiZGZlMjc4NDlmMjk2MWM2ZGRlNWU5ZmY4ZGRiNTEwMjE1ZjMxNzI3Li5iZWVmMjdm
YjQwMTVlZTVhYjJmNjRkOTJhZGNmMTA1YmYxNGQyMjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmgKQEAgLTE2Nyw3ICsxNjcsNyBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBUaWxl
ZEJhY2tpbmcqIHRpbGVkQmFja2luZygpIGNvbnN0OwogCi0gICAgU2Nyb2xsaW5nTm9kZUlEIHNj
cm9sbGluZ05vZGVJRCgpIGNvbnN0IG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9s
bGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQoKSBjb25zdCBvdmVycmlkZTsKICAgICBTY3JvbGxh
YmxlQXJlYSogc2Nyb2xsYWJsZUFyZWFGb3JTY3JvbGxpbmdOb2RlSUQoU2Nyb2xsaW5nTm9kZUlE
KSBjb25zdDsKICAgICBib29sIHVzZXNBc3luY1Njcm9sbGluZygpIGNvbnN0IGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IDZhMWU3NzQ4ZWZmNWI1NGJh
OWMxOTc0YjBkM2JiYjc0YzkyZDRkODMuLmZhMjdmNjkyY2U0MDY3YjkxNjQ4MzE2MzczOTY5ZjFl
ODlhNDkxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC01ODYs
NyArNTg2LDcgQEAgYm9vbCBTY3JvbGxWaWV3OjptYW5hZ2VzU2Nyb2xsYmFycygpIGNvbnN0CiAK
IHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCBTY3JvbGxQb3NpdGlvbiYg
ZGVzaXJlZFBvc2l0aW9uKQogewotICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVh
bSA8PCAiU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyAiIDw8IGRlc2lyZWRQb3NpdGlvbik7
CisgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJTY3JvbGxWaWV3Ojp1
cGRhdGVTY3JvbGxiYXJzICIgPDwgZGVzaXJlZFBvc2l0aW9uIDw8ICIgaXNSdWJiZXJCYW5kSW5Q
cm9ncmVzcyAiIDw8IGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSk7CiAKICAgICBpZiAobV9pblVw
ZGF0ZVNjcm9sbGJhcnMgfHwgcHJvaGliaXRzU2Nyb2xsaW5nKCkgfHwgcGxhdGZvcm1XaWRnZXQo
KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9SZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IGQ4MTg5ZmRjODkyNzRmMDljOGViMjY0
YThjNWRhNWY0NTg1ZDVjZDAuLjczNzJmZjI5Zjc1OWIyMDEwODc2NjU4MWRkMTA0MThiOGI0ODM2
YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5h
dG9yUHJveHlJT1MubW0KQEAgLTEyNSw2ICsxMjUsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yUHJveHk6OnNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZShTY3Jv
bAogICAgIG1fd2ViUGFnZVByb3h5LnNjcm9sbGluZ05vZGVTY3JvbGxWaWV3V2lsbFN0YXJ0UGFu
R2VzdHVyZSgpOwogfQogCisvLyBUaGlzIGlzIG5vdCBjYWxsZWQgZm9yIHRoZSBtYWluIHNjcm9s
bCB2aWV3Lgogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5OjpzY3JvbGxpbmdU
cmVlTm9kZVdpbGxTdGFydFNjcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogewogICAgIG1f
d2ViUGFnZVByb3h5LnNjcm9sbGluZ05vZGVTY3JvbGxXaWxsU3RhcnRTY3JvbGwoKTsKQEAgLTEz
Myw2ICsxMzQsNyBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNjcm9s
bGluZ1RyZWVOb2RlV2lsbFN0YXJ0U2Nyb2xsKFNjcm9sbGluZwogICAgIHNlbmRVSVN0YXRlQ2hh
bmdlZElmTmVjZXNzYXJ5KCk7CiB9CiAKKy8vIFRoaXMgaXMgbm90IGNhbGxlZCBmb3IgdGhlIG1h
aW4gc2Nyb2xsIHZpZXcuCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHk6OnNj
cm9sbGluZ1RyZWVOb2RlRGlkRW5kU2Nyb2xsKFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiB7CiAg
ICAgbV93ZWJQYWdlUHJveHkuc2Nyb2xsaW5nTm9kZVNjcm9sbERpZEVuZFNjcm9sbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRl
eCBjN2VhMTczMWYxZDEzOGUxZjk5MDY1NGFjOTg3ZWIxZjQwMzFjMDg2Li5jZThkNzQ0MmNhYTAz
YTAxYWFiMjA5ODQ2ZjBmODhmYjcxYmY3Njc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaApAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNjcm9sbGluZ1N0YXRlSW5VSVByb2Nlc3NDaGFuZ2VkKGNvbnN0IFJlbW90
ZVNjcm9sbGluZ1VJU3RhdGUmKTsKIAorICAgIHZvaWQgYWRkTm9kZVdpdGhBY3RpdmVSdWJiZXJC
YW5kaW5nKFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCk7CisgICAgdm9pZCByZW1vdmVOb2RlV2l0
aEFjdGl2ZVJ1YmJlckJhbmRpbmcoV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsKKwogcHJpdmF0
ZToKICAgICBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcihXZWJQYWdlKik7CiAgICAgdmlydHVh
bCB+UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQppbmRleCA3MjhkZTNlNTE0YzQ3MDBi
YjZhMGI1ODdkYzg3MWIyZDJmM2FlNjc0Li5lY2RhNjNiMGMyMmRlZmE4ZTdlYmExODE4ODA5NmYx
NDU4OTMwMzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLm1tCkBAIC0xMjUsNiArMTI1LDE2IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3I6OnNjcm9sbGluZ1N0YXRlSW5VSVByb2Nlc3NDaGFuZ2VkKGNvbnN0IFJlbW90
ZVNjCiAgICAgICAgIG1fbm9kZXNXaXRoQWN0aXZlVXNlclNjcm9sbHMgPSB1aVN0YXRlLm5vZGVz
V2l0aEFjdGl2ZVVzZXJTY3JvbGxzKCk7CiB9CiAKK3ZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmFkZE5vZGVXaXRoQWN0aXZlUnViYmVyQmFuZGluZyhTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlEKQoreworICAgIG1fbm9kZXNXaXRoQWN0aXZlUnViYmVyQmFuZGluZy5hZGQobm9kZUlEKTsK
K30KKwordm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6cmVtb3ZlTm9kZVdpdGhBY3Rp
dmVSdWJiZXJCYW5kaW5nKFNjcm9sbGluZ05vZGVJRCBub2RlSUQpCit7CisgICAgbV9ub2Rlc1dp
dGhBY3RpdmVSdWJiZXJCYW5kaW5nLnJlbW92ZShub2RlSUQpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIw
MTljOWRlMmEyMjdhNGQ3MGE4YWZjY2YyNWZhNWJjNTViMThhYjAuLmQ2YTBlNzFhNjQzODkwODdi
NzY0NTQwNWMxZGYxNWVlZWYxYWFhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MCw2ICs0MCw3IEBACiAjaW1wb3J0
ICJQbHVnaW5WaWV3LmgiCiAjaW1wb3J0ICJQcmludEluZm8uaCIKICNpbXBvcnQgIlJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmgiCisjaW1wb3J0ICJSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci5oIgogI2ltcG9ydCAiU2FuZGJveFV0aWxpdGllcy5oIgogI2ltcG9ydCAiU2hhcmVkTWVtb3J5
LmgiCiAjaW1wb3J0ICJTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUuaCIKQEAgLTM4MzUsNiAr
MzgzNiwxOSBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaQogICAgIEZsb2F0UmVjdCBhZGp1c3Rl
ZEV4cG9zZWRDb250ZW50UmVjdCA9IGFkanVzdEV4cG9zZWRSZWN0Rm9yTmV3U2NhbGUoZXhwb3Nl
ZENvbnRlbnRSZWN0LCB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLnNjYWxlKCksIHNjYWxl
VG9Vc2UpOwogICAgIG1fZHJhd2luZ0FyZWEtPnNldEV4cG9zZWRDb250ZW50UmVjdChhZGp1c3Rl
ZEV4cG9zZWRDb250ZW50UmVjdCk7CiAKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZy
YW1lKCk7CisgICAgRnJhbWVWaWV3JiBmcmFtZVZpZXcgPSAqZnJhbWUudmlldygpOworCisgICAg
aWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0
b3IoKSkgeworICAgICAgICBhdXRvJiByZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvciA9IGRvd25j
YXN0PFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yPigqc2Nyb2xsaW5nQ29vcmRpbmF0b3IpOwor
ICAgICAgICBpZiAoYXV0byBtYWluRnJhbWVTY3JvbGxpbmdOb2RlSUQgPSBmcmFtZVZpZXcuc2Ny
b2xsaW5nTm9kZUlEKCkpIHsKKyAgICAgICAgICAgIGlmICh2aXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvLnZpZXdTdGFiaWxpdHkoKS5jb250YWlucyhWaWV3U3RhYmlsaXR5RmxhZzo6U2Nyb2xs
Vmlld1J1YmJlckJhbmRpbmcpKQorICAgICAgICAgICAgICAgIHJlbW90ZVNjcm9sbGluZ0Nvb3Jk
aW5hdG9yLmFkZE5vZGVXaXRoQWN0aXZlUnViYmVyQmFuZGluZyhtYWluRnJhbWVTY3JvbGxpbmdO
b2RlSUQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlbW90ZVNjcm9sbGlu
Z0Nvb3JkaW5hdG9yLnJlbW92ZU5vZGVXaXRoQWN0aXZlUnViYmVyQmFuZGluZyhtYWluRnJhbWVT
Y3JvbGxpbmdOb2RlSUQpOworICAgICAgICB9CisgICAgfQorCiAgICAgSW50UG9pbnQgc2Nyb2xs
UG9zaXRpb24gPSByb3VuZGVkSW50UG9pbnQodmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby51
bm9ic2N1cmVkQ29udGVudFJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIGJvb2wgcGFnZUhhc0Jl
ZW5TY2FsZWRTaW5jZUxhc3RMYXllclRyZWVDb21taXRUaGF0Q2hhbmdlZFBhZ2VTY2FsZSA9IChb
Jl0gewpAQCAtMzg3MCw4ICszODg0LDYgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVWaXNpYmxlQ29u
dGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2kKICAgICAg
ICAgfQogICAgIH0KIAotICAgIGF1dG8mIGZyYW1lID0gbV9wYWdlLT5tYWluRnJhbWUoKTsKLSAg
ICBGcmFtZVZpZXcmIGZyYW1lVmlldyA9ICpmcmFtZS52aWV3KCk7CiAgICAgaWYgKHNjcm9sbFBv
c2l0aW9uICE9IGZyYW1lVmlldy5zY3JvbGxQb3NpdGlvbigpKQogICAgICAgICBtX2R5bmFtaWNT
aXplVXBkYXRlSGlzdG9yeS5jbGVhcigpOwogCkBAIC0zOTI0LDkgKzM5MzYsOSBAQCB2b2lkIFdl
YlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mbyYgdmlzaQogICAgIGlmICghaXNDaGFuZ2luZ09ic2N1cmVkSW5zZXRzSW50ZXJh
Y3RpdmVseSkKICAgICAgICAgZnJhbWVWaWV3LnNldEN1c3RvbVNpemVGb3JSZXNpemVFdmVudChl
eHBhbmRlZEludFNpemUodmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby51bm9ic2N1cmVkUmVj
dEluU2Nyb2xsVmlld0Nvb3JkaW5hdGVzKCkuc2l6ZSgpKSk7CiAKLSAgICBpZiAoU2Nyb2xsaW5n
Q29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRp
bmF0b3IoKSkgewotICAgICAgICBWaWV3cG9ydFJlY3RTdGFiaWxpdHkgdmlld3BvcnRTdGFiaWxp
dHkgPSBWaWV3cG9ydFJlY3RTdGFiaWxpdHk6OlN0YWJsZTsKLSAgICAgICAgU2Nyb2xsaW5nTGF5
ZXJQb3NpdGlvbkFjdGlvbiBsYXllckFjdGlvbiA9IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rp
b246OlN5bmM7CisgICAgaWYgKGF1dG8qIHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Ny
b2xsaW5nQ29vcmRpbmF0b3IoKSkgeworICAgICAgICBhdXRvIHZpZXdwb3J0U3RhYmlsaXR5ID0g
Vmlld3BvcnRSZWN0U3RhYmlsaXR5OjpTdGFibGU7CisgICAgICAgIGF1dG8gbGF5ZXJBY3Rpb24g
PSBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jOwogICAgICAgICAKICAgICAgICAg
aWYgKGlzQ2hhbmdpbmdPYnNjdXJlZEluc2V0c0ludGVyYWN0aXZlbHkpIHsKICAgICAgICAgICAg
IHZpZXdwb3J0U3RhYmlsaXR5ID0gVmlld3BvcnRSZWN0U3RhYmlsaXR5OjpDaGFuZ2luZ09ic2N1
cmVkSW5zZXRzSW50ZXJhY3RpdmVseTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCA1N2QyZmEzZGMyZTU5OTE4ZDUxMTViZDg1MjcyNTAxNTFjMjk2
ZWJhLi41Y2I5YTdmMDJiNjc0NjNkZWU4NGFhNjNkYWI1M2NiMzZmOTVhY2YyIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAK
KzIwMjEtMDEtMjIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAg
ICAgICAgW2lPUyBXSzJdIHRoZXZlcmdlLmNvbSAtIHJ1YmJlciBiYW5kIHNjcm9sbGluZyBhdCB0
aGUgdG9wIG9mIHRoZSBwYWdlIGNhdXNlcyBhbiBhYnJ1cHQganVtcAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwODg2CisgICAgICAgIDxyZGFyOi8v
NzExNzc1NjY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gYWxsb3cgVUlTY3JpcHRDb250cm9sbGVyOjpz
Y3JvbGxUb09mZnNldCgpIGFuZAorICAgICAgICBVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVkaWF0
ZVNjcm9sbFRvT2Zmc2V0KCkgdG8gdGFrZSBhbiBvcHRpb25zIGFyZ3VtZW50IHdpdGgKKyAgICAg
ICAgYSAndW5jb25zdHJhaW5lZCcgcHJvcGVydHksIHdoaWNoIGFsbG93cyBzY3JvbGxpbmcgdG8g
dW5zdGFibGUgb2Zmc2V0IHRvIHNpbXVsYXRlCisgICAgICAgIHJ1YmJlcmJhbmRpbmcuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmg6CisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAg
ICAgKFdUUjo6Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeSk6CisgICAgICAgIChXVFI6
OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2Nyb2xsVG9PZmZzZXQpOgorICAgICAgICAoV1RSOjpV
SVNjcmlwdENvbnRyb2xsZXJJT1M6OmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAg
KFdUUjo6Y29udGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UpOiBEZWxldGVkLgorICAgICAg
ICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29u
dHJvbGxlci5pZGw6CisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
c2Nyb2xsVG9PZmZzZXQpOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmltbWVk
aWF0ZVNjcm9sbFRvT2Zmc2V0KToKKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXJTaGFyZWQuY3BwOgorICAgICAgICAoV1RSOjp0b1Nj
cm9sbFRvT3B0aW9ucyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjpjb250ZW50T2Zmc2V0Qm91bmRlZElmTmVj
ZXNzYXJ5KToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVySU9TOjpzY3JvbGxUb09m
ZnNldCk6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlU2Ny
b2xsVG9PZmZzZXQpOgorICAgICAgICAoV1RSOjpjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRS
YW5nZSk6IERlbGV0ZWQuCisKIDIwMjEtMDEtMjEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFtld3NdIFVzZSBnaXRodWIgaW5zdGVhZCBvZiBzdm4ud2Vi
a2l0Lm9yZyB0byBmZXRjaCBjb250cmlidXRvcnMuanNvbgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5oCmluZGV4IDJiODUxMWU5Yzk3NTRjNDQ1
NDgyOGNhNzRmNDkwNjMyNTA4ZWZmNTIuLjQ1NjRlNDk3ZjQ0ZDFkN2JlMDY3OGE1NDI1YmUxYjNm
MWMyYjRmZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLmgKQEAgLTQzLDggKzQzLDggQEAgcHVibGljOgogICAgIGRvdWJsZSB6b29tU2Nh
bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgY29udGVudE9mZnNldFgoKSBjb25zdCBv
dmVycmlkZTsKICAgICBkb3VibGUgY29udGVudE9mZnNldFkoKSBjb25zdCBvdmVycmlkZTsKLSAg
ICB2b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KSBvdmVycmlkZTsKLSAgICB2b2lk
IGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KSBvdmVycmlkZTsKKyAgICB2
b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMqKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBT
Y3JvbGxUb09wdGlvbnMqKSBvdmVycmlkZTsKICAgICB2b2lkIGltbWVkaWF0ZVpvb21Ub1NjYWxl
KGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgZG91YmxlIG1pbmltdW1ab29tU2NhbGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICBkb3VibGUgbWF4aW11bVpvb21TY2FsZSgpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJ
T1MubW0KaW5kZXggM2UyNmNmN2Y1NmVmZmVmNThlOTM4ZjE4ZTkxMjZiYjI2ZWNlN2ZjZi4uMjEx
Zjg2MGZiMWM2NWY1MTg0NzZjOTkxNzU1MzBlZWU3NjJiMGI0MSAxMDA2NDQKLS0tIGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC03NSwxOSArNzUs
MjQgQEAgZG91YmxlIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6em9vbVNjYWxlKCkgY29uc3QKICAg
ICByZXR1cm4gZ1dlYlNjcm9sbFZpZXcuem9vbVNjYWxlOwogfQogCi1zdGF0aWMgQ0dQb2ludCBj
b250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcs
IENHUG9pbnQgY29udGVudE9mZnNldCkKK3N0YXRpYyBDR1BvaW50IGNvbnRlbnRPZmZzZXRCb3Vu
ZGVkSWZOZWNlc3NhcnkoVUlTY3JvbGxWaWV3ICpzY3JvbGxWaWV3LCBsb25nIHgsIGxvbmcgeSwg
U2Nyb2xsVG9PcHRpb25zKiBvcHRpb25zKQogewotICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5z
ZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7Ci0gICAgQ0dTaXplIGNvbnRlbnRTaXplID0g
c2Nyb2xsVmlldy5jb250ZW50U2l6ZTsKLSAgICBDR1NpemUgc2Nyb2xsVmlld1NpemUgPSBzY3Jv
bGxWaWV3LmJvdW5kcy5zaXplOworICAgIGF1dG8gY29udGVudE9mZnNldCA9IENHUG9pbnRNYWtl
KHgsIHkpOworICAgIGJvb2wgY29uc3RyYWluID0gIW9wdGlvbnMgfHwgIW9wdGlvbnMtPnVuY29u
c3RyYWluZWQ7CisgICAgaWYgKGNvbnN0cmFpbikgeworICAgICAgICBVSUVkZ2VJbnNldHMgY29u
dGVudEluc2V0cyA9IHNjcm9sbFZpZXcuY29udGVudEluc2V0OworICAgICAgICBDR1NpemUgY29u
dGVudFNpemUgPSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplOworICAgICAgICBDR1NpemUgc2Nyb2xs
Vmlld1NpemUgPSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplOworCisgICAgICAgIENHRmxvYXQgbWF4
SG9yaXpvbnRhbE9mZnNldCA9IGNvbnRlbnRTaXplLndpZHRoICsgY29udGVudEluc2V0cy5yaWdo
dCAtIHNjcm9sbFZpZXdTaXplLndpZHRoOworICAgICAgICBjb250ZW50T2Zmc2V0LnggPSBzdGQ6
Om1pbihtYXhIb3Jpem9udGFsT2Zmc2V0LCBjb250ZW50T2Zmc2V0LngpOworICAgICAgICBjb250
ZW50T2Zmc2V0LnggPSBzdGQ6Om1heCgtY29udGVudEluc2V0cy5sZWZ0LCBjb250ZW50T2Zmc2V0
LngpOworCisgICAgICAgIENHRmxvYXQgbWF4VmVydGljYWxPZmZzZXQgPSBjb250ZW50U2l6ZS5o
ZWlnaHQgKyBjb250ZW50SW5zZXRzLmJvdHRvbSAtIHNjcm9sbFZpZXdTaXplLmhlaWdodDsKKyAg
ICAgICAgY29udGVudE9mZnNldC55ID0gc3RkOjptaW4obWF4VmVydGljYWxPZmZzZXQsIGNvbnRl
bnRPZmZzZXQueSk7CisgICAgICAgIGNvbnRlbnRPZmZzZXQueSA9IHN0ZDo6bWF4KC1jb250ZW50
SW5zZXRzLnRvcCwgY29udGVudE9mZnNldC55KTsKKyAgICB9CiAKLSAgICBDR0Zsb2F0IG1heEhv
cml6b250YWxPZmZzZXQgPSBjb250ZW50U2l6ZS53aWR0aCArIGNvbnRlbnRJbnNldHMucmlnaHQg
LSBzY3JvbGxWaWV3U2l6ZS53aWR0aDsKLSAgICBjb250ZW50T2Zmc2V0LnggPSBzdGQ6Om1pbiht
YXhIb3Jpem9udGFsT2Zmc2V0LCBjb250ZW50T2Zmc2V0LngpOwotICAgIGNvbnRlbnRPZmZzZXQu
eCA9IHN0ZDo6bWF4KC1jb250ZW50SW5zZXRzLmxlZnQsIGNvbnRlbnRPZmZzZXQueCk7Ci0KLSAg
ICBDR0Zsb2F0IG1heFZlcnRpY2FsT2Zmc2V0ID0gY29udGVudFNpemUuaGVpZ2h0ICsgY29udGVu
dEluc2V0cy5ib3R0b20gLSBzY3JvbGxWaWV3U2l6ZS5oZWlnaHQ7Ci0gICAgY29udGVudE9mZnNl
dC55ID0gc3RkOjptaW4obWF4VmVydGljYWxPZmZzZXQsIGNvbnRlbnRPZmZzZXQueSk7Ci0gICAg
Y29udGVudE9mZnNldC55ID0gc3RkOjptYXgoLWNvbnRlbnRJbnNldHMudG9wLCBjb250ZW50T2Zm
c2V0LnkpOwogICAgIHJldHVybiBjb250ZW50T2Zmc2V0OwogfQogCkBAIC0xMDEsMTQgKzEwNiwx
NiBAQCBkb3VibGUgVUlTY3JpcHRDb250cm9sbGVySU9TOjpjb250ZW50T2Zmc2V0WSgpIGNvbnN0
CiAgICAgcmV0dXJuIFtnV2ViU2Nyb2xsVmlldyBjb250ZW50T2Zmc2V0XS55OwogfQogCi12b2lk
IFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpCit2
b2lkIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6c2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHks
IFNjcm9sbFRvT3B0aW9ucyogb3B0aW9ucykKIHsKLSAgICBbZ1dlYlNjcm9sbFZpZXcgc2V0Q29u
dGVudE9mZnNldDpjb250ZW50T2Zmc2V0Qm91bmRlZEluVmFsaWRSYW5nZShnV2ViU2Nyb2xsVmll
dywgQ0dQb2ludE1ha2UoeCwgeSkpIGFuaW1hdGVkOllFU107CisgICAgYXV0byBvZmZzZXQgPSBj
b250ZW50T2Zmc2V0Qm91bmRlZElmTmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRp
b25zKTsKKyAgICBbZ1dlYlNjcm9sbFZpZXcgc2V0Q29udGVudE9mZnNldDpvZmZzZXQgYW5pbWF0
ZWQ6WUVTXTsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6OmltbWVkaWF0ZVNjcm9s
bFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQordm9pZCBVSVNjcmlwdENvbnRyb2xsZXJJT1M6Omlt
bWVkaWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMqIG9w
dGlvbnMpCiB7Ci0gICAgW2dXZWJTY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29udGVudE9m
ZnNldEJvdW5kZWRJblZhbGlkUmFuZ2UoZ1dlYlNjcm9sbFZpZXcsIENHUG9pbnRNYWtlKHgsIHkp
KSBhbmltYXRlZDpOT107CisgICAgYXV0byBvZmZzZXQgPSBjb250ZW50T2Zmc2V0Qm91bmRlZElm
TmVjZXNzYXJ5KGdXZWJTY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBbZ1dlYlNjcm9s
bFZpZXcgc2V0Q29udGVudE9mZnNldDpvZmZzZXQgYW5pbWF0ZWQ6Tk9dOwogfQogCiB2b2lkIFVJ
U2NyaXB0Q29udHJvbGxlcklPUzo6aW1tZWRpYXRlWm9vbVRvU2NhbGUoZG91YmxlIHNjYWxlKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGlu
Z3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggM2UwNWViMTMz
MDJjMzI2MjE2OTg1M2Y4MTRlZDgzMzM4M2JiNmFhNS4uYmRjNDUxZTA1YWU0ZTJhMTE1MzA5ZjE2
YTNlNDY4ZDc4ZTliYzhlNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xs
ZXIuaWRsCkBAIC0zOCw2ICszOCwxMCBAQCBlbnVtIE1vZGlmaWVyS2V5IHsKICAgICAic2hpZnQi
CiB9OwogCitkaWN0aW9uYXJ5IFNjcm9sbFRvT3B0aW9ucyB7CisgICAgYm9vbGVhbiB1bmNvbnN0
cmFpbmVkID0gZmFsc2U7Cit9OworCiBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsKIAog
ICAgIHVuZGVmaW5lZCBkb0FzeW5jVGFzayhvYmplY3QgY2FsbGJhY2spOyAvLyBVc2VkIHRvIHRl
c3QgdGhlIGhhcm5lc3MuCkBAIC0yODIsMTAgKzI4NiwxMCBAQCBpbnRlcmZhY2UgVUlTY3JpcHRD
b250cm9sbGVyIHsKIAogICAgIGF0dHJpYnV0ZSBib29sZWFuIHNjcm9sbFVwZGF0ZXNEaXNhYmxl
ZDsgLy8gVHVybnMgb2ZmIG5vdGlmaWNhdGlvbnMgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgYWZ0
ZXIgc2Nyb2xscyAodXNlZCBmb3IgdGVzdGluZyBzY3JvbGxpbmcgdHJlZSkuCiAKLSAgICB1bmRl
ZmluZWQgc2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpOyAvLyBJbml0aWF0ZSBhbiBhbmlt
YXRlZCBzY3JvbGwgaW4gdGhlIFVJIHByb2Nlc3MuCisgICAgdW5kZWZpbmVkIHNjcm9sbFRvT2Zm
c2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMgb3B0aW9ucyk7IC8vIEluaXRpYXRl
IGFuIGFuaW1hdGVkIHNjcm9sbCBpbiB0aGUgVUkgcHJvY2Vzcy4KICAgICBhdHRyaWJ1dGUgb2Jq
ZWN0IGRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrOwogCi0gICAgdW5kZWZpbmVkIGltbWVkaWF0ZVNj
cm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KTsgLy8gU2V0IHRoZSBzY3JvbGwgcG9zaXRpb24g
aW4gdGhlIFVJIHByb2Nlc3Mgd2l0aG91dCBhbmltYXRpb24uCisgICAgdW5kZWZpbmVkIGltbWVk
aWF0ZVNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMgb3B0aW9u
cyk7IC8vIFNldCB0aGUgc2Nyb2xsIHBvc2l0aW9uIGluIHRoZSBVSSBwcm9jZXNzIHdpdGhvdXQg
YW5pbWF0aW9uLgogICAgIHVuZGVmaW5lZCBpbW1lZGlhdGVab29tVG9TY2FsZShkb3VibGUgc2Nh
bGUpOyAvLyBTZXQgdGhlIHpvb20gc2NhbGUgaW4gdGhlIFVJIHByb2Nlc3Mgd2l0aG91dCBhbmlt
YXRpb24uCiAKICAgICAvLyBGaW5kIHRoZSBzY3JvbGxlciBmb3IgdGhlIGdpdmVuIHBvaW50IGlu
IGNvbnRlbnQgKCJhYnNvbHV0ZSIpIGNvb3JkaW5hdGVzLCBhbmQgZG8gYW4gaW1tZWRpYXRlIHNj
cm9sbC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0
L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggN2U0ODA3YjE1NGZiYTQ2MzZhOTY1ZTJh
ZWEwYmI3MDliYjViNmRhOC4uNGQ4MjVjODdiM2JhNzU5MGQ3OTBmOGRlZWJhZWY2YTU5MTRkYzIx
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlT
Y3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFVJU2NyaXB0Q29udHJvbGxl
cl9oCi0jZGVmaW5lIFVJU2NyaXB0Q29udHJvbGxlcl9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkpTV3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIu
aD4KQEAgLTUyLDYgKzUxLDEyIEBAIGVudW0gY2xhc3MgRGV2aWNlT3JpZW50YXRpb24gewogCiBE
ZXZpY2VPcmllbnRhdGlvbiogdG9EZXZpY2VPcmllbnRhdGlvbihKU0NvbnRleHRSZWYsIEpTVmFs
dWVSZWYpOwogCitzdHJ1Y3QgU2Nyb2xsVG9PcHRpb25zIHsKKyAgICBib29sIHVuY29uc3RyYWlu
ZWQgeyBmYWxzZSB9OworfTsKKworU2Nyb2xsVG9PcHRpb25zKiB0b1Njcm9sbFRvT3B0aW9ucyhK
U0NvbnRleHRSZWYsIEpTVmFsdWVSZWYpOworCiBjbGFzcyBVSVNjcmlwdENvbnRyb2xsZXIgOiBw
dWJsaWMgSlNXcmFwcGFibGUgewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VUlTY3JpcHRDb250
cm9sbGVyPiBjcmVhdGUoVUlTY3JpcHRDb250ZXh0Jik7CkBAIC0xMzMsOSArMTM4LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxVcGRhdGVzRGlzYWJsZWQoKSBjb25zdCB7IG5v
dEltcGxlbWVudGVkKCk7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTY3Jv
bGxVcGRhdGVzRGlzYWJsZWQoYm9vbCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2Nyb2xsVG9PZmZzZXQobG9uZywgbG9uZykgeyBub3RJbXBsZW1lbnRlZCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0KGxvbmcsIGxvbmcsIFNjcm9sbFRvT3B0
aW9ucyopIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIGltbWVkaWF0
ZVNjcm9sbFRvT2Zmc2V0KGxvbmcsIGxvbmcpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBpbW1lZGlhdGVTY3JvbGxUb09mZnNldChsb25nLCBsb25nLCBTY3JvbGxUb09w
dGlvbnMqKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW1tZWRpYXRl
U2Nyb2xsRWxlbWVudEF0Q29udGVudFBvaW50VG9PZmZzZXQobG9uZywgbG9uZywgbG9uZywgbG9u
ZykgeyBub3RJbXBsZW1lbnRlZCgpOyB9CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBjb250ZW50T2Zm
c2V0WCgpIGNvbnN0IHsgbm90SW1wbGVtZW50ZWQoKTsgcmV0dXJuIDA7IH0KQEAgLTM2MCw1ICsz
NjUsMyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiB9Ci0KLSNlbmRpZiAvLyBVSVNjcmlwdENvbnRyb2xs
ZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQv
VUlTY3JpcHRDb250cm9sbGVyU2hhcmVkLmNwcCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlclNoYXJlZC5jcHAKaW5kZXggOWU0OTQwY2Uz
YThiMTAyMjdmZWRlMWZlMmUyZjgxZjE5YThkYTY0Ni4uOTIwYWUzOGNlOTk1YWJkNTE4Nzg2Yjdj
OTg3YmZmMzY3ODE5NzM2YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyU2hhcmVkLmNwcAorKysgYi9Ub29scy9UZXN0
UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXJTaGFyZWQuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVUlTY3Jp
cHRDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJKU0Jhc2ljcy5oIgogI2luY2x1ZGUgIkpTVUlT
Y3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVUlTY3JpcHRDb250ZXh0LmgiCiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgpAQCAtNTMsNiArNTQsMTYgQEAgRGV2aWNl
T3JpZW50YXRpb24qIHRvRGV2aWNlT3JpZW50YXRpb24oSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgdmFsdWUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK1Njcm9sbFRvT3B0aW9u
cyogdG9TY3JvbGxUb09wdGlvbnMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgYXJn
dW1lbnQpCit7CisgICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgYXJndW1lbnQpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHN0YXRpYyBTY3JvbGxUb09wdGlvbnMgb3B0
aW9uczsKKyAgICBvcHRpb25zLnVuY29uc3RyYWluZWQgPSBib29sZWFuUHJvcGVydHkoY29udGV4
dCwgKEpTT2JqZWN0UmVmKWFyZ3VtZW50LCAidW5jb25zdHJhaW5lZCIsIGZhbHNlKTsKKyAgICBy
ZXR1cm4gJm9wdGlvbnM7Cit9CisKIFVJU2NyaXB0Q29udHJvbGxlcjo6VUlTY3JpcHRDb250cm9s
bGVyKFVJU2NyaXB0Q29udGV4dCYgY29udGV4dCkKICAgICA6IG1fY29udGV4dCgmY29udGV4dCkK
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJv
bGxlcklPUy5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLmgKaW5kZXggODU0NjQ0NzY2ZDhiYzVhODE1ZDI2N2U5YTdiYTRhMjA1ZDZlNjEyMi4uM2Zk
N2I4ZDMzZDY2ZDcwZTAyNWVkY2QzNjM1OWQ5NmJhMzVmNGE3NiAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLmgKQEAgLTk0LDggKzk0
LDggQEAgcHJpdmF0ZToKICAgICBkb3VibGUgY29udGVudE9mZnNldFkoKSBjb25zdCBvdmVycmlk
ZTsKICAgICBib29sIHNjcm9sbFVwZGF0ZXNEaXNhYmxlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAg
IHZvaWQgc2V0U2Nyb2xsVXBkYXRlc0Rpc2FibGVkKGJvb2wpIG92ZXJyaWRlOwotICAgIHZvaWQg
c2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpIG92ZXJyaWRlOwotICAgIHZvaWQgaW1tZWRp
YXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHkpIG92ZXJyaWRlOworICAgIHZvaWQgc2Ny
b2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRvT3B0aW9ucyopIG92ZXJyaWRlOwor
ICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQobG9uZyB4LCBsb25nIHksIFNjcm9sbFRv
T3B0aW9ucyopIG92ZXJyaWRlOwogICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsRWxlbWVudEF0Q29u
dGVudFBvaW50VG9PZmZzZXQobG9uZyB4LCBsb25nIHksIGxvbmcgeFNjcm9sbE9mZnNldCwgbG9u
ZyB5U2Nyb2xsT2Zmc2V0KSBvdmVycmlkZTsKICAgICB2b2lkIGltbWVkaWF0ZVpvb21Ub1NjYWxl
KGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBrZXlib2FyZEFjY2Vzc29yeUJhck5l
eHQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJ
U2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2Ny
aXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA3YWY2ZWNmNTA5ODVmMTVlZjQ3YzE5MThiNjVhMmVi
ZGE2ZDI2YTA4Li41ZGQxZmU3NWU2MjI5MWFjZmE3MDNlMDBiZTgyYmE0YTNhZTlmZTJhIDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCkBAIC02MTIsMTkgKzYxMiwyNCBAQCBib29sIFVJU2NyaXB0Q29udHJvbGxlcklPUzo6aXNQ
cmVzZW50aW5nTW9kYWxseSgpIGNvbnN0CiAgICAgcmV0dXJuICEhd2ViVmlldygpLndpbmRvdy5y
b290Vmlld0NvbnRyb2xsZXIucHJlc2VudGVkVmlld0NvbnRyb2xsZXI7CiB9CiAKLXN0YXRpYyBD
R1BvaW50IGNvbnRlbnRPZmZzZXRCb3VuZGVkSW5WYWxpZFJhbmdlKFVJU2Nyb2xsVmlldyAqc2Ny
b2xsVmlldywgQ0dQb2ludCBjb250ZW50T2Zmc2V0KQotewotICAgIFVJRWRnZUluc2V0cyBjb250
ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50SW5zZXQ7Ci0gICAgQ0dTaXplIGNvbnRlbnRT
aXplID0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZTsKLSAgICBDR1NpemUgc2Nyb2xsVmlld1NpemUg
PSBzY3JvbGxWaWV3LmJvdW5kcy5zaXplOwotCi0gICAgQ0dGbG9hdCBtYXhIb3Jpem9udGFsT2Zm
c2V0ID0gY29udGVudFNpemUud2lkdGggKyBjb250ZW50SW5zZXRzLnJpZ2h0IC0gc2Nyb2xsVmll
d1NpemUud2lkdGg7Ci0gICAgY29udGVudE9mZnNldC54ID0gc3RkOjptaW4obWF4SG9yaXpvbnRh
bE9mZnNldCwgY29udGVudE9mZnNldC54KTsKLSAgICBjb250ZW50T2Zmc2V0LnggPSBzdGQ6Om1h
eCgtY29udGVudEluc2V0cy5sZWZ0LCBjb250ZW50T2Zmc2V0LngpOworc3RhdGljIENHUG9pbnQg
Y29udGVudE9mZnNldEJvdW5kZWRJZk5lY2Vzc2FyeShVSVNjcm9sbFZpZXcgKnNjcm9sbFZpZXcs
IGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlvbnMqIG9wdGlvbnMpCit7CisgICAgYXV0byBj
b250ZW50T2Zmc2V0ID0gQ0dQb2ludE1ha2UoeCwgeSk7CisgICAgYm9vbCBjb25zdHJhaW4gPSAh
b3B0aW9ucyB8fCAhb3B0aW9ucy0+dW5jb25zdHJhaW5lZDsKKyAgICBpZiAoY29uc3RyYWluKSB7
CisgICAgICAgIFVJRWRnZUluc2V0cyBjb250ZW50SW5zZXRzID0gc2Nyb2xsVmlldy5jb250ZW50
SW5zZXQ7CisgICAgICAgIENHU2l6ZSBjb250ZW50U2l6ZSA9IHNjcm9sbFZpZXcuY29udGVudFNp
emU7CisgICAgICAgIENHU2l6ZSBzY3JvbGxWaWV3U2l6ZSA9IHNjcm9sbFZpZXcuYm91bmRzLnNp
emU7CisKKyAgICAgICAgQ0dGbG9hdCBtYXhIb3Jpem9udGFsT2Zmc2V0ID0gY29udGVudFNpemUu
d2lkdGggKyBjb250ZW50SW5zZXRzLnJpZ2h0IC0gc2Nyb2xsVmlld1NpemUud2lkdGg7CisgICAg
ICAgIGNvbnRlbnRPZmZzZXQueCA9IHN0ZDo6bWluKG1heEhvcml6b250YWxPZmZzZXQsIGNvbnRl
bnRPZmZzZXQueCk7CisgICAgICAgIGNvbnRlbnRPZmZzZXQueCA9IHN0ZDo6bWF4KC1jb250ZW50
SW5zZXRzLmxlZnQsIGNvbnRlbnRPZmZzZXQueCk7CisKKyAgICAgICAgQ0dGbG9hdCBtYXhWZXJ0
aWNhbE9mZnNldCA9IGNvbnRlbnRTaXplLmhlaWdodCArIGNvbnRlbnRJbnNldHMuYm90dG9tIC0g
c2Nyb2xsVmlld1NpemUuaGVpZ2h0OworICAgICAgICBjb250ZW50T2Zmc2V0LnkgPSBzdGQ6Om1p
bihtYXhWZXJ0aWNhbE9mZnNldCwgY29udGVudE9mZnNldC55KTsKKyAgICAgICAgY29udGVudE9m
ZnNldC55ID0gc3RkOjptYXgoLWNvbnRlbnRJbnNldHMudG9wLCBjb250ZW50T2Zmc2V0LnkpOwor
ICAgIH0KIAotICAgIENHRmxvYXQgbWF4VmVydGljYWxPZmZzZXQgPSBjb250ZW50U2l6ZS5oZWln
aHQgKyBjb250ZW50SW5zZXRzLmJvdHRvbSAtIHNjcm9sbFZpZXdTaXplLmhlaWdodDsKLSAgICBj
b250ZW50T2Zmc2V0LnkgPSBzdGQ6Om1pbihtYXhWZXJ0aWNhbE9mZnNldCwgY29udGVudE9mZnNl
dC55KTsKLSAgICBjb250ZW50T2Zmc2V0LnkgPSBzdGQ6Om1heCgtY29udGVudEluc2V0cy50b3As
IGNvbnRlbnRPZmZzZXQueSk7CiAgICAgcmV0dXJuIGNvbnRlbnRPZmZzZXQ7CiB9CiAKQEAgLTY0
OCwxNiArNjUzLDE4IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjpzZXRTY3JvbGxVcGRh
dGVzRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKICAgICB3ZWJWaWV3KCkuX3Njcm9sbGluZ1VwZGF0
ZXNEaXNhYmxlZEZvclRlc3RpbmcgPSBkaXNhYmxlZDsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5KQordm9pZCBVSVNjcmlwdENv
bnRyb2xsZXJJT1M6OnNjcm9sbFRvT2Zmc2V0KGxvbmcgeCwgbG9uZyB5LCBTY3JvbGxUb09wdGlv
bnMqIG9wdGlvbnMpCiB7CiAgICAgVGVzdFJ1bm5lcldLV2ViVmlldyAqd2ViVmlldyA9IHRoaXMt
PndlYlZpZXcoKTsKLSAgICBbd2ViVmlldy5zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6Y29u
dGVudE9mZnNldEJvdW5kZWRJblZhbGlkUmFuZ2Uod2ViVmlldy5zY3JvbGxWaWV3LCBDR1BvaW50
TWFrZSh4LCB5KSkgYW5pbWF0ZWQ6WUVTXTsKKyAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZz
ZXRCb3VuZGVkSWZOZWNlc3Nhcnkod2ViVmlldy5zY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsK
KyAgICBbd2ViVmlldy5zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0IGFuaW1hdGVk
OllFU107CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjppbW1lZGlhdGVTY3JvbGxU
b09mZnNldChsb25nIHgsIGxvbmcgeSkKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVySU9TOjppbW1l
ZGlhdGVTY3JvbGxUb09mZnNldChsb25nIHgsIGxvbmcgeSwgU2Nyb2xsVG9PcHRpb25zKiBvcHRp
b25zKQogewogICAgIFRlc3RSdW5uZXJXS1dlYlZpZXcgKndlYlZpZXcgPSB0aGlzLT53ZWJWaWV3
KCk7Ci0gICAgW3dlYlZpZXcuc2Nyb2xsVmlldyBzZXRDb250ZW50T2Zmc2V0OmNvbnRlbnRPZmZz
ZXRCb3VuZGVkSW5WYWxpZFJhbmdlKHdlYlZpZXcuc2Nyb2xsVmlldywgQ0dQb2ludE1ha2UoeCwg
eSkpIGFuaW1hdGVkOk5PXTsKKyAgICBhdXRvIG9mZnNldCA9IGNvbnRlbnRPZmZzZXRCb3VuZGVk
SWZOZWNlc3Nhcnkod2ViVmlldy5zY3JvbGxWaWV3LCB4LCB5LCBvcHRpb25zKTsKKyAgICBbd2Vi
Vmlldy5zY3JvbGxWaWV3IHNldENvbnRlbnRPZmZzZXQ6b2Zmc2V0IGFuaW1hdGVkOk5PXTsKIH0K
IAogc3RhdGljIFVJU2Nyb2xsVmlldyAqZW5jbG9zaW5nU2Nyb2xsVmlld0luY2x1ZGluZ1NlbGYo
VUlWaWV3ICp2aWV3KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGE1YTVmOGQwNWQ5MTNlOWE4ZTIxYzBhYjAyYzk4NGJkYWU5
YjJhNjIuLmEwZWM3Y2JiMWQyY2NhNTQ1ZWJjY2MzODQ5YjIzOTY5YTJkNTQzNjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNSBAQAorMjAyMS0wMS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KKworICAgICAgICBbaU9TIFdLMl0gdGhldmVyZ2UuY29tIC0gcnViYmVyIGJhbmQg
c2Nyb2xsaW5nIGF0IHRoZSB0b3Agb2YgdGhlIHBhZ2UgY2F1c2VzIGFuIGFicnVwdCBqdW1wCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjA4ODYKKyAg
ICAgICAgPHJkYXI6Ly83MTE3NzU2Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGVzdCBpbmZyYXN0cnVjdHVyZSB0byBhbGxvdyBVSVNjcmlw
dENvbnRyb2xsZXI6OnNjcm9sbFRvT2Zmc2V0KCkgYW5kCisgICAgICAgIFVJU2NyaXB0Q29udHJv
bGxlcjo6aW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQoKSB0byB0YWtlIGFuIG9wdGlvbnMgYXJndW1l
bnQgd2l0aAorICAgICAgICBhICd1bmNvbnN0cmFpbmVkJyBwcm9wZXJ0eSwgd2hpY2ggYWxsb3dz
IHNjcm9sbGluZyB0byB1bnN0YWJsZSBvZmZzZXQgdG8gc2ltdWxhdGUKKyAgICAgICAgcnViYmVy
YmFuZGluZy4KKworICAgICAgICAqIGZhc3Qvc2Nyb2xsaW5nL2lvcy9jb250ZW50LXNpemUtY2hh
bmdlLWR1cmluZy1ydWJiZXJiYW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQuaHRt
bDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAgICAgICAgKHdp
bmRvdy5VSUhlbHBlci5zY3JvbGxUby5yZXR1cm4ubmV3LlByb21pc2UuKToKKyAgICAgICAgKHdp
bmRvdy5VSUhlbHBlci5zY3JvbGxUby5yZXR1cm4ubmV3LlByb21pc2UpOgorICAgICAgICAod2lu
ZG93LlVJSGVscGVyLnNjcm9sbFRvKToKKyAgICAgICAgKHdpbmRvdy5VSUhlbHBlci5pbW1lZGlh
dGVTY3JvbGxUbyk6CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIuaW1tZWRpYXRlVW5zdGFibGVT
Y3JvbGxUbyk6CisKIDIwMjEtMDEtMjEgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2Nyb2xsLWNoYWluaW5nIG5vdCB0cmlnZ2VyaW5nIGJlZm9yZSBj
b21wbGV0ZSBlbmQgb2Ygb3ZlcnNjcm9sbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFu
Z2UtZHVyaW5nLXJ1YmJlcmJhbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwZmViMmMxNWEx
NDdmNjc3MTI2OTM0MzY3MWNlYzhlMDZjZWYyNTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvY29udGVudC1zaXplLWNoYW5nZS1kdXJpbmctcnViYmVy
YmFuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACitUb3AKK1BBU1Mgd2luZG93LnBhZ2VZ
T2Zmc2V0IGlzIC0xMDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvY29u
dGVudC1zaXplLWNoYW5nZS1kdXJpbmctcnViYmVyYmFuZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQtc2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wOTNmOTAyNTQ3YjExNmNjYTEyZDU5ODgzNDg3MGYyNzhmMmZlMzU2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL2NvbnRlbnQt
c2l6ZS1jaGFuZ2UtZHVyaW5nLXJ1YmJlcmJhbmQuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURP
Q1RZUEUgaHRtbD4gPCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBBc3luY092ZXJmbG93U2Nyb2xs
aW5nRW5hYmxlZD10cnVlIF0gLS0+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAg
ICAgLmNvbnRlbnQgeworICAgICAgICAgICAgaGVpZ2h0OiAyMDAwcHg7CisgICAgICAgIH0KKwor
ICAgICAgICBib2R5LmNoYW5nZWQgLmNvbnRlbnQgeworICAgICAgICAgICAgaGVpZ2h0OiAyMTAw
cHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
ICAgICB2YXIganNUZXN0SXNBc3luYyA9IHRydWU7CisKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24g
ZG9UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgY29uc3QgdW5jb25zdHJhaW5lZCA9IHRy
dWU7CisgICAgICAgICAgICBhd2FpdCBVSUhlbHBlci5zY3JvbGxUbygwLCAtMTAwLCB1bmNvbnN0
cmFpbmVkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xp
c3QuYWRkKCdjaGFuZ2VkJyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGF3YWl0IFVJSGVs
cGVyLnJlbmRlcmluZ1VwZGF0ZSgpOworICAgICAgICAgICAgc2hvdWxkQmUoJ3dpbmRvdy5wYWdl
WU9mZnNldCcsICctMTAwJyk7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAg
fQorCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4geworICAg
ICAgICAgICAgZG9UZXN0KCk7CisgICAgICAgIH0sIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorICAgIFRvcAorICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0
cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IDIyZWU1MmY1MWM1Yjg4MGU3NzMyMGRmNDMy
YzYzMDg3YmU1YmNlM2YuLjkxYmQwNjZkZDUyZTQ5YjEyZjUzNmM2MmNiNjhiMmMwMzU4NjExMzcg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91aS1oZWxwZXIuanMKKysrIGIvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpAQCAtNDIzLDggKzQyMywyNiBAQCB3aW5k
b3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgewogICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7CiAgICAgfQorCisg
ICAgc3RhdGljIHNjcm9sbFRvKHgsIHksIHVuY29uc3RyYWluZWQpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMuaXNXZWJLaXQyKCkpIHsKKyAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbyh4LCB5
KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKKyAgICAgICAgICAgIHRlc3RS
dW5uZXIucnVuVUlTY3JpcHQoYAorICAgICAgICAgICAgICAgIChmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmRpZEVuZFNjcm9sbGluZ0NhbGxiYWNrID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRD
b21wbGV0ZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHVp
Q29udHJvbGxlci5zY3JvbGxUb09mZnNldCgke3h9LCAke3l9LCB7IHVuY29uc3RyYWluZWQ6ICR7
dW5jb25zdHJhaW5lZH0gfSk7CisgICAgICAgICAgICAgICAgfSkoKWAsIHJlc29sdmUpOworICAg
ICAgICB9KTsKKyAgICB9CiAgICAgCi0gICAgc3RhdGljIGltbWVkaWF0ZVNjcm9sbFRvKHgsIHkp
CisgICAgc3RhdGljIGltbWVkaWF0ZVNjcm9sbFRvKHgsIHksIHVuY29uc3RyYWluZWQpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQyKCkpIHsKICAgICAgICAgICAgIHdpbmRvdy5z
Y3JvbGxUbyh4LCB5KTsKQEAgLTQzMywxMSArNDUxLDExIEBAIHdpbmRvdy5VSUhlbHBlciA9IGNs
YXNzIFVJSGVscGVyIHsKIAogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7
CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIuaW1tZWRpYXRlU2Nyb2xsVG9PZmZzZXQoJHt4fSwgJHt5fSk7YCwgcmVzb2x2
ZSk7CisgICAgICAgICAgICAgICAgdWlDb250cm9sbGVyLmltbWVkaWF0ZVNjcm9sbFRvT2Zmc2V0
KCR7eH0sICR7eX0sIHsgdW5jb25zdHJhaW5lZDogJHt1bmNvbnN0cmFpbmVkfSB9KTtgLCByZXNv
bHZlKTsKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgc3RhdGljIGltbWVkaWF0ZVVuc3RhYmxl
U2Nyb2xsVG8oeCwgeSkKKyAgICBzdGF0aWMgaW1tZWRpYXRlVW5zdGFibGVTY3JvbGxUbyh4LCB5
LCB1bmNvbnN0cmFpbmVkKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2ViS2l0MigpKSB7
CiAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeCwgeSk7CkBAIC00NDcsNyArNDY1LDcgQEAg
d2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICByZXR1cm4gbmV3IFBy
b21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAK
ICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuc3RhYmxlU3RhdGVPdmVycmlkZSA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5pbW1lZGlhdGVTY3JvbGxUb09mZnNldCgk
e3h9LCAke3l9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIuaW1t
ZWRpYXRlU2Nyb2xsVG9PZmZzZXQoJHt4fSwgJHt5fSwgeyB1bmNvbnN0cmFpbmVkOiAke3VuY29u
c3RyYWluZWR9IH0pO2AsIHJlc29sdmUpOwogICAgICAgICB9KTsKICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>