<?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>75963</bug_id>
          
          <creation_ts>2012-01-10 07:43:09 -0800</creation_ts>
          <short_desc>Web Inspector: [Chromium] Allow emulation of arbitrary (mobile) device metrics</short_desc>
          <delta_ts>2012-04-10 08:54:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76532</dependson>
    
    <dependson>77014</dependson>
    
    <dependson>82612</dependson>
    
    <dependson>82827</dependson>
    
    <dependson>82891</dependson>
    
    <dependson>83280</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>peter</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533064</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-10 07:43:09 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543068</commentid>
    <comment_count>1</comment_count>
      <attachid>124106</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-26 04:43:56 -0800</bug_when>
    <thetext>Created attachment 124106
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589006</commentid>
    <comment_count>2</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-03-27 10:14:48 -0700</bug_when>
    <thetext>I have come up with a solution that does not involve OS-specific changes and will attach the corresponding strawman proposal shortly.

We need to emulate not only the device resolution but also other metrics, like the font scale factor (e.g., Android magnifies fonts when displaying pages.) That&apos;s why the patch includes the corresponding protocol changes, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589026</commentid>
    <comment_count>3</comment_count>
      <attachid>134097</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-03-27 10:32:09 -0700</bug_when>
    <thetext>Created attachment 134097
Patch

This is a strawman proposal of the device metrics emulation solution</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124106</attachid>
            <date>2012-01-26 04:43:56 -0800</date>
            <delta_ts>2012-03-27 10:32:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75963-20120126164354.patch</filename>
            <type>text/plain</type>
            <size>43457</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1OTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjEzMmZjMjNlY2U4NDcx
OTBlMTMzNDRmYTJmZDM2ODhkODJkODU4NS4uZTQ2MDIwNTliZGExZmM1YzU0MTM5NmJjMDgzNDVh
ZDljMDU1NzBmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDEyLTAxLTI2ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogQWxsb3cgZW11bGF0aW9uIG9mIGFyYml0cmFyeSAobW9iaWxlKSBkZXZpY2UgcmVzb2x1
dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1
OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
bGllbnQ6OmludmFsaWRhdGVIb3N0V2luZG93KToKKyAgICAgICAgKEluc3BlY3RvckNsaWVudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnJlc3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
c2V0U2NyZWVuU2l6ZU92ZXJyaWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VB
Z2VudDo6dXBkYXRlQ3VzdG9tRnJhbWVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clBhZ2VBZ2VudDo6Y2xlYXJDdXN0b21GcmFtZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yUGFnZUFnZW50OjpzZXRDdXN0b21GcmFtZVNpemUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuc2V0U3R5bGVTaGVldFRleHQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9yZXNvbHV0
aW9uU2V0dGluZ0NoYW5nZWQuZ2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLnByb3RvdHlwZS5fcmVzb2x1dGlvblNldHRpbmdDaGFuZ2VkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNl
dHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5SZXNvbHV0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TZXR0aW5nc1NjcmVlbi5SZXNvbHV0aW9uLnBhcnNlRnJvbVNldHRpbmdzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5SZXNvbHV0aW9uLnBhcnNlRnJvbVVzZXJJbnB1
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uUmVzb2x1dGlvbi5wcm90
b3R5cGUuaXNWYWxpZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uUmVz
b2x1dGlvbi5wcm90b3R5cGUuaXNXaWR0aFZhbGlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
ZXR0aW5nc1NjcmVlbi5SZXNvbHV0aW9uLnByb3RvdHlwZS5pc0hlaWdodFZhbGlkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5SZXNvbHV0aW9uLnByb3RvdHlwZS50b1Nl
dHRpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5SZXNvbHV0aW9u
LnByb3RvdHlwZS53aWR0aFRvSW5wdXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdz
U2NyZWVuLlJlc29sdXRpb24ucHJvdG90eXBlLmhlaWdodFRvSW5wdXQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLnByb3RvdHlwZS5fY3JlYXRlVXNlckFnZW50U2VsZWN0
Um93RWxlbWVudC5nZXQgY29uc3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2Ny
ZWVuLnByb3RvdHlwZS5zZXQgX2FwcGx5U2NyZWVuU2l6ZVVzZXJJbnB1dCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4ucHJvdG90eXBlLl9zZXRSZXNvbHV0aW9uT3ZlcnJp
ZGUuc2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5wcm90b3R5
cGUuX2NyZWF0ZVJlc29sdXRpb25FbGVtZW50LmNyZWF0ZUlucHV0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5wcm90b3R5cGUuX2NyZWF0ZVJlc29sdXRpb25FbGVtZW50
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2hlbHBTY3JlZW4uY3NzOgorICAgICAg
ICAoI3Jlc29sdXRpb24tb3ZlcnJpZGUtc2VjdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuY3NzOgorICAgICAgICAoLmhpZGRlbik6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEZyYW1l
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldEZyYW1lUmVjdFdpdGhPdmVy
cmlkZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0T3JpZ2luYWxNZXRyaWNz
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAoRnJhbWVWaWV3KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJhbWVNZXRyaWNzOjpGcmFtZU1ldHJpY3MpOgor
ICAgICAgICAoRnJhbWVNZXRyaWNzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6RnJh
bWVNZXRyaWNzOjphcHBseSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgor
CiAyMDEyLTAxLTI2ICBOaWtvbGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgog
CiAgICAgICAgIE5vdCByZXZpZXdlZC4gVHJ5IHRvIGZpeCBHdGsgYnVpbGQgLSBKU1NoYWRvd1Jv
b3QuY3BwIGNhbid0IGJlIGZvdW5kLCBmaXggYnkgbG9va2luZyBmb3IgaXQgaW4gdGhlIGRlcml2
ZWQgc291cmNlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZGE5MjBkNWQwYjhiYzFk
NTI0MGNmYTU4MWZhYjM3ZmFiNWM3ZDRiYi4uNzZhNWQxOTEyYmM0ZmFmOWQ3NTM3MDNlY2IyMGRk
NzVjMTYyMjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxMi0wMS0yNiAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEFsbG93IGVtdWxhdGlvbiBvZiBhcmJpdHJhcnkgKG1vYmls
ZSkgZGV2aWNlIHJlc29sdXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTk2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnRJbXBsOjppbnZhbGlkYXRlSG9zdFdpbmRvdyk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAqIHNyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmg6CisgICAgICAg
IChJbnNwZWN0b3JDbGllbnRJbXBsKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGFpbnQpOgorCiAyMDEyLTAxLTI1ICBHcmVn
IEJpbGxvY2sgIDxnYmlsbG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBJbnRlbnRSZXF1
ZXN0IGluY2x1ZGUgZm9yIEZyYW1lTG9hZGVyQ2xpZW50SW1wbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRl
eCBkODdlMDRjMjc3ZDQ0NjZhYjg3MmRmYjhiNTE0NzhiZTRjOWNiM2EwLi40ZTAwZmY0ZTQ1OWM0
Nzk3NTc4NTg0NzY2NzEwMzAyOThiMTZiNDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTItMDEtMjYgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBBbGxvdyBlbXVsYXRpb24gb2YgYXJiaXRyYXJ5
IChtb2JpbGUpIGRldmljZSByZXNvbHV0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnRFZmw6OmludmFsaWRhdGVIb3N0
V2luZG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5oOgorICAgICAgICAoSW5zcGVjdG9yQ2xpZW50RWZsKToKKwogMjAx
Mi0wMS0xNyAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtFRkxdIFVzZSBzdGF0aWMgY29uc3QgaW5zdGVkIG9mICNkZWZpbmUgbWFjcm8uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggNTNiNTVjNWVhYmIx
NzA0N2RiMjU0NzI2OGY5NmY0YjdhNmQxNDdhOC4uMjk5NjMzYWY2NGM4NjY4MjEzNDVjZTZjMjI5
ZjE1YWFmZDg2YjBlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGll
bnQuaApAQCAtNTUsNiArNTUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkNsZWFy
QnJvd3NlckNvb2tpZXMoKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckJyb3dzZXJDb29raWVzKCkgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZUhvc3RX
aW5kb3coKSB7IH0KKwogICAgIGJvb2wgZG9EaXNwYXRjaE1lc3NhZ2VPbkZyb250ZW5kUGFnZShQ
YWdlKiBmcm9udGVuZFBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CiB9OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYWI2
ZjA3ODVkZTdmNmRlMTU1NzgzMjA0NzEwYTdkNjFlMWY5NTM1MC4uOWNkYzcwMDQxNjIyYjJjMzQ4
Zjk5YzgxMGNhNjUxMTAxM2Y2NTMzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtODMsNyArODMsNyBAQCBJbnNwZWN0b3JDb250
cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCog
aW5zcGVjdG9yQwogICAgIG1faW5zcGVjdG9yQWdlbnQgPSBpbnNwZWN0b3JBZ2VudFB0ci5nZXQo
KTsKICAgICBtX2FnZW50cy5hcHBlbmQoaW5zcGVjdG9yQWdlbnRQdHIucmVsZWFzZSgpKTsKIAot
ICAgIE93blB0cjxJbnNwZWN0b3JQYWdlQWdlbnQ+IHBhZ2VBZ2VudFB0cihJbnNwZWN0b3JQYWdl
QWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIHBhZ2UsIG1fc3RhdGUu
Z2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKSk7CisgICAgT3duUHRyPEluc3Bl
Y3RvclBhZ2VBZ2VudD4gcGFnZUFnZW50UHRyKEluc3BlY3RvclBhZ2VBZ2VudDo6Y3JlYXRlKG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZSwgbV9zdGF0ZS5nZXQoKSwgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXIuZ2V0KCksIGluc3BlY3RvckNsaWVudCkpOwogICAgIEluc3BlY3RvclBh
Z2VBZ2VudCogcGFnZUFnZW50ID0gcGFnZUFnZW50UHRyLmdldCgpOwogICAgIG1fYWdlbnRzLmFw
cGVuZChwYWdlQWdlbnRQdHIucmVsZWFzZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCA0NDAwNGJjOGNhZGIwZDgyOWQ2Yjli
NWUyMjJjOGM2YjEwYjMyNzYwLi5jY2ZkMDBkYTk1MDYzOWI3NGFiY2MzMzExM2JkMzA4MGNkYzJk
NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcApAQCAtNTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUg
IklkZW50aWZpZXJzRmFjdG9yeS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yU3RhdGUuaCIKQEAgLTE4Miw5ICsxODMsOSBAQCBib29sIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2hhcmVkQnVmZmVyQ29udGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVy
LCBjbwogICAgIHJldHVybiBkZWNvZGVTaGFyZWRCdWZmZXIoYnVmZmVyLCB0ZXh0RW5jb2RpbmdO
YW1lLCByZXN1bHQpOwogfQogCi1QYXNzT3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gSW5zcGVj
dG9yUGFnZUFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgUGFnZSogcGFnZSwgSW5zcGVjdG9yU3RhdGUqIHN0YXRlLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1Bhc3NPd25QdHI8SW5zcGVjdG9yUGFnZUFn
ZW50PiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNyZWF0ZShJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluamVj
dGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBJbnNwZWN0b3JDbGllbnQq
IGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvclBhZ2VBZ2VudChp
bnN0cnVtZW50aW5nQWdlbnRzLCBwYWdlLCBzdGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JQYWdlQWdlbnQoaW5zdHJ1bWVudGlu
Z0FnZW50cywgcGFnZSwgc3RhdGUsIGluamVjdGVkU2NyaXB0TWFuYWdlciwgY2xpZW50KSk7CiB9
CiAKIC8vIHN0YXRpYwpAQCAtMjY1LDEwICsyNjYsMTEgQEAgU3RyaW5nIEluc3BlY3RvclBhZ2VB
Z2VudDo6Y2FjaGVkUmVzb3VyY2VUeXBlU3RyaW5nKGNvbnN0IENhY2hlZFJlc291cmNlJiBjYWNo
ZWQKICAgICByZXR1cm4gcmVzb3VyY2VUeXBlU3RyaW5nKGNhY2hlZFJlc291cmNlVHlwZShjYWNo
ZWRSZXNvdXJjZSkpOwogfQogCi1JbnNwZWN0b3JQYWdlQWdlbnQ6Okluc3BlY3RvclBhZ2VBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQYWdlKiBwYWdlLCBJ
bnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKQorSW5zcGVjdG9yUGFnZUFnZW50OjpJbnNwZWN0b3JQYWdlQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgUGFnZSogcGFnZSwg
SW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlciwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgOiBJbnNw
ZWN0b3JCYXNlQWdlbnQ8SW5zcGVjdG9yUGFnZUFnZW50PigiUGFnZSIsIGluc3RydW1lbnRpbmdB
Z2VudHMsIGluc3BlY3RvclN0YXRlKQogICAgICwgbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcihpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBtX2NsaWVudChj
bGllbnQpCiAgICAgLCBtX2Zyb250ZW5kKDApCiAgICAgLCBtX2xhc3RTY3JpcHRJZGVudGlmaWVy
KDApCiAgICAgLCBtX29yaWdpbmFsVXNlRml4ZWRMYXlvdXQoZmFsc2UpCkBAIC0yOTYsNyArMjk4
LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc3RvcmUoKQogICAgICAgICAvLyBXaGVu
IHJlc3RvcmluZyB0aGUgYWdlbnQsIG92ZXJyaWRlIHZhbHVlcyBhcmUgcmVzdG9yZWQgaW50byB0
aGUgRnJhbWVWaWV3LgogICAgICAgICBpbnQgd2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KG1fc3Rh
dGUtPmdldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVlbldpZHRoT3ZlcnJpZGUp
KTsKICAgICAgICAgaW50IGhlaWdodCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9u
ZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGUpKTsKLSAgICAg
ICAgdXBkYXRlRnJhbWVWaWV3Rml4ZWRMYXlvdXQod2lkdGgsIGhlaWdodCk7CisgICAgICAgIHVw
ZGF0ZUN1c3RvbUZyYW1lU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKICAgICB9CiB9CiAKQEAgLTMxNCw3
ICszMTYsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyop
CiAgICAgLy8gV2hlbiBkaXNhYmxpbmcgdGhlIGFnZW50LCByZXNldCB0aGUgb3ZlcnJpZGUgdmFs
dWVzLgogICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2VudFNjcmVl
bldpZHRoT3ZlcnJpZGUsIDApOwogICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6
OnBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlLCAwKTsKLSAgICB1cGRhdGVGcmFtZVZpZXdG
aXhlZExheW91dCgwLCAwKTsKKyAgICB1cGRhdGVDdXN0b21GcmFtZVNpemUoMCwgMCk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjphZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzb3VyY2UsIFN0cmluZyogaWRlbnRpZmllcikKQEAgLTU4
NCw2ICs1ODYsMTEgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldFNjcmVlblNpemVPdmVy
cmlkZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIGlmICghd2lkdGggXiAhaGVpZ2h0KSB7CisgICAgICAgICplcnJvclN0cmlu
ZyA9ICJCb3RoIHdpZHRoIGFuZCBoZWlnaHQgbXVzdCBiZSBlaXRoZXIgemVybyBvciBub24temVy
byBhdCBvbmNlLiI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBUaGVzZSB0d28g
YWx3YXlzIGZpdCBhbiBpbnQuCiAgICAgaW50IGN1cnJlbnRXaWR0aCA9IHN0YXRpY19jYXN0PGlu
dD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhP
dmVycmlkZSkpOwogICAgIGludCBjdXJyZW50SGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihtX3N0
YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlk
ZSkpOwpAQCAtNTk0LDcgKzYwMSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTY3Jl
ZW5TaXplT3ZlcnJpZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpCiAgICAgbV9z
dGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlk
ZSwgd2lkdGgpOwogICAgIG1fc3RhdGUtPnNldExvbmcoUGFnZUFnZW50U3RhdGU6OnBhZ2VBZ2Vu
dFNjcmVlbkhlaWdodE92ZXJyaWRlLCBoZWlnaHQpOwogCi0gICAgdXBkYXRlRnJhbWVWaWV3Rml4
ZWRMYXlvdXQod2lkdGgsIGhlaWdodCk7CisgICAgdXBkYXRlQ3VzdG9tRnJhbWVTaXplKHdpZHRo
LCBoZWlnaHQpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGlkQ2xlYXJXaW5kb3dP
YmplY3RJbldvcmxkKEZyYW1lKiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkKiB3b3JsZCkKQEAgLTc3
NiwzOCArNzgzLDMxIEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBJbnNwZWN0b3JQYWdl
QWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKiBmCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnVwZGF0ZUZyYW1lVmlld0ZpeGVkTGF5
b3V0KGludCB3aWR0aCwgaW50IGhlaWdodCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp1cGRh
dGVDdXN0b21GcmFtZVNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmICghd2lk
dGggJiYgIWhlaWdodCkKLSAgICAgICAgY2xlYXJGcmFtZVZpZXdGaXhlZExheW91dCgpOworICAg
ICAgICBjbGVhckN1c3RvbUZyYW1lU2l6ZSgpOwogICAgIGVsc2UKLSAgICAgICAgc2V0RnJhbWVW
aWV3Rml4ZWRMYXlvdXQod2lkdGgsIGhlaWdodCk7CisgICAgICAgIHNldEN1c3RvbUZyYW1lU2l6
ZSh3aWR0aCwgaGVpZ2h0KTsKIAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1haW5GcmFtZSgp
LT5kb2N1bWVudCgpOwogICAgIGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNT
dHlsZUltbWVkaWF0ZWx5KTsKKyAgICBtYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7CisgICAgbV9jbGllbnQtPmludmFsaWRhdGVIb3N0V2luZG93KCk7CiAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZChkb2N1bWVudCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpjbGVhckZyYW1lVmlld0ZpeGVkTGF5b3V0KCkK
K3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpjbGVhckN1c3RvbUZyYW1lU2l6ZSgpCiB7Ci0gICAg
aWYgKG1fb3JpZ2luYWxGaXhlZExheW91dFNpemUpIHsKLSAgICAgICAgLy8gVHVybmluZyBvZmYg
ZXhpc3Rpbmcgb3ZlcnJpZGVzIChuby1vcCBvdGhlcndpc2UpIC0gcmV2ZXJ0IHRoZSBhZmZlY3Rl
ZCBGcmFtZVZpZXcgdG8gdGhlIHJlbWVtYmVyZWQgZml4ZWQgbGF5b3V0IHNldHRpbmdzLgotICAg
ICAgICBtYWluRnJhbWUoKS0+dmlldygpLT5zZXRGaXhlZExheW91dFNpemUoKm1fb3JpZ2luYWxG
aXhlZExheW91dFNpemUpOwotICAgICAgICBtX29yaWdpbmFsRml4ZWRMYXlvdXRTaXplLmNsZWFy
KCk7Ci0gICAgICAgIG1haW5GcmFtZSgpLT52aWV3KCktPnNldFVzZUZpeGVkTGF5b3V0KG1fb3Jp
Z2luYWxVc2VGaXhlZExheW91dCk7Ci0gICAgfQorICAgIG1haW5GcmFtZSgpLT52aWV3KCktPnJl
c2V0T3JpZ2luYWxNZXRyaWNzKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRG
cmFtZVZpZXdGaXhlZExheW91dChpbnQgd2lkdGgsIGludCBoZWlnaHQpCit2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2V0Q3VzdG9tRnJhbWVTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsK
LSAgICBpZiAoIW1fb3JpZ2luYWxGaXhlZExheW91dFNpemUpIHsKLSAgICAgICAgLy8gVHVybmlu
ZyBvbiB0aGUgb3ZlcnJpZGVzIChub25lIGN1cnJlbnRseSBleGlzdCkgLSByZW1lbWJlciBleGlz
dGluZyBmaXhlZCBsYXlvdXQgZm9yIHRoZSBhZmZlY3RlZCBGcmFtZVZpZXcuCi0gICAgICAgIG1f
b3JpZ2luYWxGaXhlZExheW91dFNpemUgPSBhZG9wdFB0cihuZXcgSW50U2l6ZShtYWluRnJhbWUo
KS0+dmlldygpLT5maXhlZExheW91dFNpemUoKSkpOwotICAgICAgICBtX29yaWdpbmFsVXNlRml4
ZWRMYXlvdXQgPSBtYWluRnJhbWUoKS0+dmlldygpLT51c2VGaXhlZExheW91dCgpOwotICAgIH0K
LQotICAgIG1haW5GcmFtZSgpLT52aWV3KCktPnNldEZpeGVkTGF5b3V0U2l6ZShJbnRTaXplKHdp
ZHRoLCBoZWlnaHQpKTsKLSAgICBtYWluRnJhbWUoKS0+dmlldygpLT5zZXRVc2VGaXhlZExheW91
dCh0cnVlKTsKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSBtYWluRnJhbWUoKS0+dmlldygpOworICAg
IHZpZXctPnNldElnbm9yZU9yaWdpbmFsTWV0cmljQ2hhbmdlcyh0cnVlKTsKKyAgICB2aWV3LT5y
ZXNpemUod2lkdGgsIGhlaWdodCk7CisgICAgdmlldy0+c2V0SWdub3JlT3JpZ2luYWxNZXRyaWND
aGFuZ2VzKGZhbHNlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IGQ2MWMwOTM5ZWMwMThl
MGYwMTY0YzljMzY3MTZlMTg2ODc0ZjRmZDguLmNjYjk1YzAwYWE1MmUyNzU0ZjQ1MjliMDZiOTYy
YTM5OTg3M2JiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFn
ZUFnZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBGcm9udGVuZDsK
IGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIEluc3BlY3RvckFycmF5OworY2xh
c3MgSW5zcGVjdG9yQ2xpZW50OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVj
dG9yU3RhdGU7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwpAQCAtNzQsNyArNzUsNyBAQCBw
dWJsaWM6CiAgICAgICAgIE90aGVyUmVzb3VyY2UKICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NP
d25QdHI8SW5zcGVjdG9yUGFnZUFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIFBh
Z2UqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPEluc3BlY3RvclBhZ2VBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBQYWdlKiwgSW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnNw
ZWN0b3JDbGllbnQqKTsKIAogICAgIHN0YXRpYyBib29sIGNhY2hlZFJlc291cmNlQ29udGVudChD
YWNoZWRSZXNvdXJjZSosIFN0cmluZyogcmVzdWx0LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKICAg
ICBzdGF0aWMgYm9vbCBzaGFyZWRCdWZmZXJDb250ZW50KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVy
PiwgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lLCBib29sIHdpdGhCYXNlNjRFbmNvZGUs
IFN0cmluZyogcmVzdWx0KTsKQEAgLTEyNywxNSArMTI4LDE2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgRG9jdW1lbnRMb2FkZXIqIGFzc2VydERvY3VtZW50TG9hZGVyKEVycm9yU3RyaW5nKiwgRnJh
bWUqKTsKIAogcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIFBhZ2UqLCBJbnNwZWN0b3JTdGF0ZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwot
ICAgIHZvaWQgdXBkYXRlRnJhbWVWaWV3Rml4ZWRMYXlvdXQoaW50LCBpbnQpOwotICAgIHZvaWQg
c2V0RnJhbWVWaWV3Rml4ZWRMYXlvdXQoaW50LCBpbnQpOwotICAgIHZvaWQgY2xlYXJGcmFtZVZp
ZXdGaXhlZExheW91dCgpOworICAgIEluc3BlY3RvclBhZ2VBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgUGFnZSosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5z
cGVjdG9yQ2xpZW50Kik7CisgICAgdm9pZCB1cGRhdGVDdXN0b21GcmFtZVNpemUoaW50LCBpbnQp
OworICAgIHZvaWQgc2V0Q3VzdG9tRnJhbWVTaXplKGludCwgaW50KTsKKyAgICB2b2lkIGNsZWFy
Q3VzdG9tRnJhbWVTaXplKCk7CiAKICAgICBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVp
bGRPYmplY3RGb3JGcmFtZShGcmFtZSopOwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBidWlsZE9iamVjdEZvckZyYW1lVHJlZShGcmFtZSopOwogICAgIFBhZ2UqIG1fcGFnZTsKICAg
ICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOworICAgIElu
c3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgSW5zcGVjdG9yRnJvbnRlbmQ6OlBhZ2UqIG1f
ZnJvbnRlbmQ7CiAgICAgbG9uZyBtX2xhc3RTY3JpcHRJZGVudGlmaWVyOwogICAgIFN0cmluZyBt
X3BlbmRpbmdTY3JpcHRUb0V2YWx1YXRlT25Mb2FkT25jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCAxZWI3ZDAzMmZh
YWQ1YTVjMDEyM2E2NzVhNTZkOGJlMmU5ODZkMmExLi44NTM2ZjVkYTYyZjMyZDY5ZjhjZDYyMGU0
MWUyOGJmMzQ5NWFhNTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0zNyw2ICszNyw5IEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsID0gZnVuY3Rpb24oKQogICAgIG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbFJlc291cmNlQmluZGluZyh0aGlzKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVy
Q1NTRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIodGhpcykpOwogICAg
IENTU0FnZW50LmVuYWJsZSgpOworICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb2x1
dGlvbi5nZXQoKSkKKyAgICAgICAgdGhpcy5fcmVzb2x1dGlvblNldHRpbmdDaGFuZ2VkKCk7Cisg
ICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc29sdXRpb24uYWRkQ2hhbmdlTGlzdGVuZXIodGhp
cy5fcmVzb2x1dGlvblNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKIH0KIAogV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwucGFyc2VSdWxlQXJyYXlQYXlsb2FkID0gZnVuY3Rpb24ocnVsZUFycmF5KQpA
QCAtMjk0LDYgKzI5NywyMyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZVNo
ZWV0SWQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2sgPyB1c2VyQ2FsbGJhY2suYmluZCh0aGlz
LCBlcnJvcikgOiBudWxsKTsKICAgICAgICAgfQogICAgICAgICBDU1NBZ2VudC5zZXRTdHlsZVNo
ZWV0VGV4dChzdHlsZVNoZWV0SWQsIG5ld1RleHQsIGNhbGxiYWNrLmJpbmQodGhpcykpOworICAg
IH0sCisKKyAgICBfcmVzb2x1dGlvblNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgewor
ICAgICAgICB2YXIgd2lkdGggPSAwOworICAgICAgICB2YXIgaGVpZ2h0ID0gMDsKKworICAgICAg
ICB2YXIgcmVzb2x1dGlvbk92ZXJyaWRlID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc29sdXRp
b24uZ2V0KCk7CisgICAgICAgIGlmIChyZXNvbHV0aW9uT3ZlcnJpZGUpIHsKKyAgICAgICAgICAg
IHZhciBzcGxpdFJlc29sdXRpb24gPSByZXNvbHV0aW9uT3ZlcnJpZGUuc3BsaXQoIngiKTsKKyAg
ICAgICAgICAgIGlmIChzcGxpdFJlc29sdXRpb24ubGVuZ3RoID09PSAyKSB7CisgICAgICAgICAg
ICAgICAgd2lkdGggPSBwYXJzZUludChzcGxpdFJlc29sdXRpb25bMF0sIDEwKTsKKyAgICAgICAg
ICAgICAgICBoZWlnaHQgPSBwYXJzZUludChzcGxpdFJlc29sdXRpb25bMV0sIDEwKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFBhZ2VBZ2VudC5zZXRTY3JlZW5TaXplT3Zl
cnJpZGUod2lkdGgsIGhlaWdodCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCBiMGM1NzYzOGY2ZjMzMjg5MzAzNzgz
ODBkM2VhYzMzZGMwNDE1ZjM4Li5kNTVmYjk1NTg3Njc3OWI2YjQyMTQ2NGU3ODc2Y2E4MzI2ZjRk
MzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3Mu
anMKQEAgLTg2LDYgKzg2LDcgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQog
ICAgIHRoaXMuY2FjaGVEaXNhYmxlZCA9IHRoaXMuY3JlYXRlU2V0dGluZygiY2FjaGVEaXNhYmxl
ZCIsIGZhbHNlKTsKICAgICB0aGlzLm92ZXJyaWRlVXNlckFnZW50ID0gdGhpcy5jcmVhdGVTZXR0
aW5nKCJvdmVycmlkZVVzZXJBZ2VudCIsICIiKTsKICAgICB0aGlzLnVzZXJBZ2VudCA9IHRoaXMu
Y3JlYXRlU2V0dGluZygidXNlckFnZW50IiwgIiIpOworICAgIHRoaXMucmVzb2x1dGlvbiA9IHRo
aXMuY3JlYXRlU2V0dGluZygicmVzb2x1dGlvbiIsICIiKTsKICAgICB0aGlzLnNob3dTY3JpcHRG
b2xkZXJzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJzaG93U2NyaXB0Rm9sZGVycyIsIHRydWUpOwog
ICAgIHRoaXMuZG9ja1RvUmlnaHQgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImRvY2tUb1JpZ2h0Iiwg
ZmFsc2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NldHRpbmdzU2NyZWVuLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
ZXR0aW5nc1NjcmVlbi5qcwppbmRleCBhMmUwN2I0ZThkOGMyODUwZjkyZjE0MzQ3MDIwMTUzODVm
ZTU0NjQ0Li4wODMwZDMwOTY0OGVlYjA1ZmFlMTk5NGEyZDAxNWVmZGQxYTI2Zjg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3NTY3JlZW4u
anMKQEAgLTY2LDcgKzY2LDggQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuID0gZnVuY3Rp
b24oKQogICAgIHAgPSB0aGlzLl9hcHBlbmRTZWN0aW9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TmV0d29yayIpLCB0cnVlKTsKICAgICBpZiAoUHJlZmVyZW5jZXMuZXhwb3NlRGlzYWJsZUNhY2hl
KQogICAgICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUNoZWNrYm94U2V0dGluZyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgY2FjaGUiKSwgV2ViSW5zcGVjdG9yLnNldHRpbmdz
LmNhY2hlRGlzYWJsZWQpKTsKLSAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVVzZXJBY3Rp
b25Db250cm9sKCkpOworICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlVXNlckFnZW50Q29u
dHJvbCgpKTsKKyAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVJlc29sdXRpb25Db250cm9s
KCkpOwogCiAgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTY3JpcHRzIiksIHRydWUpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2ti
b3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBzY3JpcHQgZm9sZGVycyIpLCBX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMpKTsKQEAgLTkzLDcgKzk0LDcg
QEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuID0gZnVuY3Rpb24oKQogICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGV4cGVyaW1lbnRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgZXhw
ZXJpbWVudHNTZWN0aW9uLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZUV4cGVyaW1lbnRDaGVja2Jv
eChleHBlcmltZW50c1tpXSkpOwogICAgIH0KLSAgICAKKwogICAgIHZhciB0YWJsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7CiAgICAgdGFibGUuY2xhc3NOYW1lID0gImhlbHAt
dGFibGUiOwogICAgIHZhciB0ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7CkBAIC0x
MDMsNiArMTA0LDkwIEBAIFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbiA9IGZ1bmN0aW9uKCkK
ICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRhYmxlKTsKIH0KIAorLyoqCisg
KiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aAorICogQHBhcmFtIHtudW1i
ZXJ9IGhlaWdodAorICovCitXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uUmVzb2x1dGlvbiA9
IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpCit7CisgICAgdGhpcy53aWR0aCA9IHdpZHRoOworICAg
IHRoaXMuaGVpZ2h0ID0gaGVpZ2h0Cit9CisKKy8qKgorICogQHJldHVybiB7V2ViSW5zcGVjdG9y
LlNldHRpbmdzU2NyZWVuLlJlc29sdXRpb259CisgKi8KK1dlYkluc3BlY3Rvci5TZXR0aW5nc1Nj
cmVlbi5SZXNvbHV0aW9uLnBhcnNlRnJvbVNldHRpbmdzID0gZnVuY3Rpb24odmFsdWUpCit7Cisg
ICAgaWYgKHZhbHVlKSB7CisgICAgICAgIHZhciBzcGxpdFJlc29sdXRpb24gPSB2YWx1ZS5zcGxp
dCgieCIpOworICAgICAgICBpZiAoc3BsaXRSZXNvbHV0aW9uLmxlbmd0aCA9PT0gMikKKyAgICAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLlJlc29sdXRpb24o
cGFyc2VJbnQoc3BsaXRSZXNvbHV0aW9uWzBdLCAxMCksIHBhcnNlSW50KHNwbGl0UmVzb2x1dGlv
blsxXSwgMTApKTsKKyAgICB9CisgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZ3NT
Y3JlZW4uUmVzb2x1dGlvbigwLCAwKTsKK30KKworLyoqCisgKiBAcmV0dXJuIHs/V2ViSW5zcGVj
dG9yLlNldHRpbmdzU2NyZWVuLlJlc29sdXRpb259CisgKi8KK1dlYkluc3BlY3Rvci5TZXR0aW5n
c1NjcmVlbi5SZXNvbHV0aW9uLnBhcnNlRnJvbVVzZXJJbnB1dCA9IGZ1bmN0aW9uKHdpZHRoU3Ry
aW5nLCBoZWlnaHRTdHJpbmcpCit7CisgICAgZnVuY3Rpb24gaXNVc2VySW5wdXRWYWxpZCh2YWx1
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhdmFsdWUgfHwgL15bMF0qWzEtOV1bXGRdKiQvLnRl
c3QodmFsdWUpOworICAgIH0KKworICAgIGlmICghd2lkdGhTdHJpbmcgXiAhaGVpZ2h0U3RyaW5n
KQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIHZhciBpc1dpZHRoVmFsaWQgPSBpc1VzZXJJ
bnB1dFZhbGlkKHdpZHRoU3RyaW5nKTsKKyAgICB2YXIgaXNIZWlnaHRWYWxpZCA9IGlzVXNlcklu
cHV0VmFsaWQoaGVpZ2h0U3RyaW5nKTsKKworICAgIGlmICghaXNXaWR0aFZhbGlkICYmICFpc0hl
aWdodFZhbGlkKQorICAgICAgICByZXR1cm4gbnVsbDsKKworICAgIHZhciB3aWR0aCA9IGlzV2lk
dGhWYWxpZCA/IHBhcnNlSW50KHdpZHRoU3RyaW5nIHx8ICIwIiwgMTApIDogLTE7CisgICAgdmFy
IGhlaWdodCA9IGlzSGVpZ2h0VmFsaWQgPyBwYXJzZUludChoZWlnaHRTdHJpbmcgfHwgIjAiLCAx
MCkgOiAtMTsKKworICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLlJl
c29sdXRpb24od2lkdGgsIGhlaWdodCk7Cit9CisKK1dlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVl
bi5SZXNvbHV0aW9uLnByb3RvdHlwZSA9IHsKKyAgICBpc1ZhbGlkOiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy53aWR0aCA+PSAwICYmIHRoaXMuaGVpZ2h0ID49IDA7Cisg
ICAgfSwKKworICAgIGlzV2lkdGhWYWxpZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMud2lkdGggPj0gMDsKKyAgICB9LAorCisgICAgaXNIZWlnaHRWYWxpZDogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaGVpZ2h0ID49IDA7CisgICAgfSwKKwor
ICAgIHRvU2V0dGluZ3M6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5pc1Zh
bGlkKCkpCisgICAgICAgICAgICByZXR1cm4gIiI7CisKKyAgICAgICAgcmV0dXJuIHRoaXMud2lk
dGggJiYgdGhpcy5oZWlnaHQgPyB0aGlzLndpZHRoICsgIngiICsgdGhpcy5oZWlnaHQgOiAiIjsK
KyAgICB9LAorCisgICAgd2lkdGhUb0lucHV0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBy
ZXR1cm4gdGhpcy5pc1dpZHRoVmFsaWQoKSAmJiB0aGlzLndpZHRoID8gU3RyaW5nKHRoaXMud2lk
dGgpIDogIiI7CisgICAgfSwKKworICAgIGhlaWdodFRvSW5wdXQ6IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiB0aGlzLmlzSGVpZ2h0VmFsaWQoKSAmJiB0aGlzLmhlaWdodCA/IFN0
cmluZyh0aGlzLmhlaWdodCkgOiAiIjsKKyAgICB9Cit9CisKIFdlYkluc3BlY3Rvci5TZXR0aW5n
c1NjcmVlbi5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKQEAgLTI1NCw3ICszMzksNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4ucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gcDsKICAgICB9LAogCi0gICAgX2NyZWF0ZVVzZXJBY3Rp
b25Db250cm9sOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZVVzZXJBZ2VudENvbnRyb2w6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHZhciB1c2VyQWdlbnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MudXNlckFnZW50LmdldCgpOwogCkBAIC0yOTgsMTIgKzM4MywxMiBAQCBXZWJJbnNwZWN0b3Iu
U2V0dGluZ3NTY3JlZW4ucHJvdG90eXBlID0gewogICAgICAgICAgICAgWyJGaXJlZm94IDQgXHUy
MDE0IFdpbmRvd3MiLCAiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBydjoyLjAuMSkgR2Vj
a28vMjAxMDAxMDEgRmlyZWZveC80LjAuMSJdLAogICAgICAgICAgICAgWyJGaXJlZm94IDQgXHUy
MDE0IE1hYyIsICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBy
djoyLjAuMSkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC80LjAuMSJdLAogCi0gICAgICAgICAgICBb
ImlQaG9uZSBcdTIwMTQgaU9TIDUiLCAiTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBP
UyA1XzAgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNTM0LjQ2IChLSFRNTCwgbGlrZSBHZWNr
bykgVmVyc2lvbi81LjEgTW9iaWxlLzlBMzM0IFNhZmFyaS83NTM0LjQ4LjMiXSwKLSAgICAgICAg
ICAgIFsiaVBob25lIFx1MjAxNCBpT1MgNCIsICJNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUg
aVBob25lIE9TIDRfM18yIGxpa2UgTWFjIE9TIFg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTcu
OSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjIgTW9iaWxlLzhINyBTYWZhcmkvNjUz
My4xOC41Il0sCi0gICAgICAgICAgICBbImlQYWQgXHUyMDE0IGlPUyA1IiwgIk1vemlsbGEvNS4w
IChpUGFkOyBDUFUgT1MgNV8wIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzUzNC40NiAoS0hU
TUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4xIE1vYmlsZS85QTMzNCBTYWZhcmkvNzUzNC40OC4z
Il0sCi0gICAgICAgICAgICBbImlQYWQgXHUyMDE0IGlPUyA0IiwgIk1vemlsbGEvNS4wIChpUGFk
OyBDUFUgT1MgNF8zXzIgbGlrZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy45
IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMiBNb2JpbGUvOEg3IFNhZmFyaS82NTMz
LjE4LjUiXSwKKyAgICAgICAgICAgIFsiaVBob25lIFx1MjAxNCBpT1MgNSIsICJNb3ppbGxhLzUu
MCAoaVBob25lOyBDUFUgaVBob25lIE9TIDVfMCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC81
MzQuNDYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUuMSBNb2JpbGUvOUEzMzQgU2FmYXJp
Lzc1MzQuNDguMyIsICI2NDB4OTYwIl0sCisgICAgICAgICAgICBbImlQaG9uZSBcdTIwMTQgaU9T
IDQiLCAiTW96aWxsYS81LjAgKGlQaG9uZTsgVTsgQ1BVIGlQaG9uZSBPUyA0XzNfMiBsaWtlIE1h
YyBPUyBYOyBlbi11cykgQXBwbGVXZWJLaXQvNTMzLjE3LjkgKEtIVE1MLCBsaWtlIEdlY2tvKSBW
ZXJzaW9uLzUuMC4yIE1vYmlsZS84SDcgU2FmYXJpLzY1MzMuMTguNSIsICI2NDB4OTYwIl0sCisg
ICAgICAgICAgICBbImlQYWQgXHUyMDE0IGlPUyA1IiwgIk1vemlsbGEvNS4wIChpUGFkOyBDUFUg
T1MgNV8wIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzUzNC40NiAoS0hUTUwsIGxpa2UgR2Vj
a28pIFZlcnNpb24vNS4xIE1vYmlsZS85QTMzNCBTYWZhcmkvNzUzNC40OC4zIiwgIjEwMjR4NzY4
Il0sCisgICAgICAgICAgICBbImlQYWQgXHUyMDE0IGlPUyA0IiwgIk1vemlsbGEvNS4wIChpUGFk
OyBDUFUgT1MgNF8zXzIgbGlrZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy45
IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjAuMiBNb2JpbGUvOEg3IFNhZmFyaS82NTMz
LjE4LjUiLCAiMTAyNHg3NjgiXSwKIAotICAgICAgICAgICAgWyJBbmRyb2lkIDIuMyBcdTIwMTQg
TmV4dXMgUyIsICJNb3ppbGxhLzUuMCAoTGludXg7IFU7IEFuZHJvaWQgMi4zLjY7IGVuLXVzOyBO
ZXh1cyBTIEJ1aWxkL0dSSzM5RikgQXBwbGVXZWJLaXQvNTMzLjEgKEtIVE1MLCBsaWtlIEdlY2tv
KSBWZXJzaW9uLzQuMCBNb2JpbGUgU2FmYXJpLzUzMy4xIl0sCisgICAgICAgICAgICBbIkFuZHJv
aWQgMi4zIFx1MjAxNCBOZXh1cyBTIiwgIk1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCAy
LjMuNjsgZW4tdXM7IE5leHVzIFMgQnVpbGQvR1JLMzlGKSBBcHBsZVdlYktpdC81MzMuMSAoS0hU
TUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIE1vYmlsZSBTYWZhcmkvNTMzLjEiLCAiNDgweDgw
MCJdLAogICAgICAgICAgICAgW1dlYkluc3BlY3Rvci5VSVN0cmluZygiT3RoZXIuLi4iKSwgIk90
aGVyIl0KICAgICAgICAgXTsKIApAQCAtMzE2LDcgKzQwMSw5IEBAIFdlYkluc3BlY3Rvci5TZXR0
aW5nc1NjcmVlbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3Rpb25SZXN0b3JlZCA9
IGZhbHNlOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJBZ2VudHMubGVuZ3RoOyAr
K2kpIHsKICAgICAgICAgICAgIHZhciBhZ2VudCA9IHVzZXJBZ2VudHNbaV07Ci0gICAgICAgICAg
ICBzZWxlY3RFbGVtZW50LmFkZChuZXcgT3B0aW9uKGFnZW50WzBdLCBhZ2VudFsxXSkpOworICAg
ICAgICAgICAgdmFyIG9wdGlvbiA9IG5ldyBPcHRpb24oYWdlbnRbMF0sIGFnZW50WzFdKTsKKyAg
ICAgICAgICAgIG9wdGlvbi5fcmVzb2x1dGlvbiA9IGFnZW50WzJdID8gYWdlbnRbMl0gOiAiIjsK
KyAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQuYWRkKG9wdGlvbik7CiAgICAgICAgICAgICBpZiAo
dXNlckFnZW50ID09PSBhZ2VudFsxXSkgewogICAgICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQu
c2VsZWN0ZWRJbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgc2VsZWN0aW9uUmVzdG9yZWQgPSB0
cnVlOwpAQCAtMzMwLDkgKzQxNywxMiBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4ucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9
IHVzZXJBZ2VudHMubGVuZ3RoIC0gMTsKICAgICAgICAgfQogCi0gICAgICAgIHNlbGVjdEVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgc2VsZWN0aW9uQ2hhbmdlZC5iaW5kKHRoaXMp
LCBmYWxzZSk7CisgICAgICAgIHNlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdl
Iiwgc2VsZWN0aW9uQ2hhbmdlZC5iaW5kKHRoaXMsIHRydWUpLCBmYWxzZSk7CiAKLSAgICAgICAg
ZnVuY3Rpb24gc2VsZWN0aW9uQ2hhbmdlZCgpCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFy
YW0ge2Jvb2xlYW49fSBpc1VzZXJHZXN0dXJlCisgICAgICAgICAqLworICAgICAgICBmdW5jdGlv
biBzZWxlY3Rpb25DaGFuZ2VkKGlzVXNlckdlc3R1cmUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IHZhciB2YWx1ZSA9IHNlbGVjdEVsZW1lbnQub3B0aW9uc1tzZWxlY3RFbGVtZW50LnNlbGVjdGVk
SW5kZXhdLnZhbHVlOwogICAgICAgICAgICAgaWYgKHZhbHVlICE9PSAiT3RoZXIiKSB7CkBAIC0z
NDQsNiArNDM0LDExIEBAIFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgb3RoZXJVc2VyQWdlbnRFbGVtZW50LmRpc2FibGVkID0gZmFsc2U7
CiAgICAgICAgICAgICAgICAgb3RoZXJVc2VyQWdlbnRFbGVtZW50LmZvY3VzKCk7CiAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc1VzZXJHZXN0dXJlKSB7CisgICAgICAgICAgICAg
ICAgdmFyIHJlc29sdXRpb24gPSBzZWxlY3RFbGVtZW50Lm9wdGlvbnNbc2VsZWN0RWxlbWVudC5z
ZWxlY3RlZEluZGV4XS5fcmVzb2x1dGlvbjsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRSZXNv
bHV0aW9uT3ZlcnJpZGUoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLlJlc29sdXRpb24ucGFy
c2VGcm9tU2V0dGluZ3MocmVzb2x1dGlvbiksIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIGZpZWxkc2V0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJk
YmxjbGljayIsIHRleHREb3VibGVDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKQEAgLTM2Miw2
ICs0NTcsMTA3IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgc2VsZWN0aW9uQ2hhbmdlZC5jYWxsKHRoaXMpOwogICAgICAgICByZXR1cm4gZmll
bGRzZXRFbGVtZW50OworICAgIH0sCisKKyAgICBfY3JlYXRlUmVzb2x1dGlvbkNvbnRyb2w6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnN0IHJlc29sdXRpb25TZXR0aW5nID0gV2ViSW5z
cGVjdG9yLnNldHRpbmdzLnJlc29sdXRpb24uZ2V0KCk7CisgICAgICAgIHZhciByZXNvbHV0aW9u
ID0gV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLlJlc29sdXRpb24ucGFyc2VGcm9tU2V0dGlu
Z3MocmVzb2x1dGlvblNldHRpbmcpOworCisgICAgICAgIGNvbnN0IHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJwIik7CisgICAgICAgIGNvbnN0IGxhYmVsRWxlbWVudCA9IHAuY3JlYXRlQ2hp
bGQoImxhYmVsIik7CisgICAgICAgIGNvbnN0IGNoZWNrYm94RWxlbWVudCA9IGxhYmVsRWxlbWVu
dC5jcmVhdGVDaGlsZCgiaW5wdXQiKTsKKyAgICAgICAgY2hlY2tib3hFbGVtZW50LmlkID0gInJl
c29sdXRpb24tb3ZlcnJpZGUtY2hlY2tib3giOworICAgICAgICBjaGVja2JveEVsZW1lbnQudHlw
ZSA9ICJjaGVja2JveCI7CisgICAgICAgIGNoZWNrYm94RWxlbWVudC5jaGVja2VkID0gIXJlc29s
dXRpb24gfHwgKHJlc29sdXRpb24ud2lkdGggJiYgcmVzb2x1dGlvbi5oZWlnaHQpOworICAgICAg
ICBjaGVja2JveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vblJlc29s
dXRpb25DaGVja2JveENsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLl9y
ZXNvbHV0aW9uQ2hlY2tib3hFbGVtZW50ID0gY2hlY2tib3hFbGVtZW50OworICAgICAgICBsYWJl
bEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJPdmVycmlkZSBEZXZpY2UgUmVzb2x1dGlvbiIpKSk7CisKKyAgICAgICAgY29u
c3QgcmVzb2x1dGlvblNlY3Rpb25FbGVtZW50ID0gdGhpcy5fY3JlYXRlUmVzb2x1dGlvbkVsZW1l
bnQocmVzb2x1dGlvbik7CisgICAgICAgIHAuYXBwZW5kQ2hpbGQocmVzb2x1dGlvblNlY3Rpb25F
bGVtZW50KTsKKyAgICAgICAgdGhpcy5fcmVzb2x1dGlvblNlY3Rpb25FbGVtZW50ID0gcmVzb2x1
dGlvblNlY3Rpb25FbGVtZW50OworCisgICAgICAgIHRoaXMuX3NldFJlc29sdXRpb25PdmVycmlk
ZShyZXNvbHV0aW9uLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfSwK
KworICAgIF9vblJlc29sdXRpb25DaGVja2JveENsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9yZXNvbHV0aW9uQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc29sdXRpb25TZWN0aW9uRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNz
KCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHZhciByZXNvbHV0aW9uID0gV2ViSW5zcGVjdG9yLlNl
dHRpbmdzU2NyZWVuLlJlc29sdXRpb24ucGFyc2VGcm9tVXNlcklucHV0KHRoaXMuX3dpZHRoT3Zl
cnJpZGVFbGVtZW50LnZhbHVlLCB0aGlzLl9oZWlnaHRPdmVycmlkZUVsZW1lbnQudmFsdWUpOwor
ICAgICAgICAgICAgaWYgKHJlc29sdXRpb24gJiYgcmVzb2x1dGlvbi5pc1ZhbGlkICYmIHJlc29s
dXRpb24ud2lkdGggJiYgcmVzb2x1dGlvbi5oZWlnaHQpCisgICAgICAgICAgICAgICAgdGhpcy5f
c2V0UmVzb2x1dGlvbk92ZXJyaWRlKHJlc29sdXRpb24sIGZhbHNlLCBmYWxzZSk7CisgICAgICAg
ICAgICBpZiAoIXRoaXMuX3dpZHRoT3ZlcnJpZGVFbGVtZW50LnZhbHVlKQorICAgICAgICAgICAg
ICAgIHRoaXMuX3dpZHRoT3ZlcnJpZGVFbGVtZW50LmZvY3VzKCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICB0aGlzLl9yZXNvbHV0aW9uU2VjdGlvbkVsZW1lbnQuYWRkU3R5bGVDbGFz
cygiaGlkZGVuIik7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc29s
dXRpb24uZ2V0KCkpCisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc29s
dXRpb24uc2V0KCIiKTsKKyAgICAgICAgfQorICAgIH0sCisKKyAgICBfYXBwbHlTY3JlZW5TaXpl
VXNlcklucHV0OiBmdW5jdGlvbih1c2VySW5wdXRNb2RpZmllZCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3NldFJlc29sdXRpb25PdmVycmlkZShXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uUmVz
b2x1dGlvbi5wYXJzZUZyb21Vc2VySW5wdXQodGhpcy5fd2lkdGhPdmVycmlkZUVsZW1lbnQudmFs
dWUudHJpbSgpLCB0aGlzLl9oZWlnaHRPdmVycmlkZUVsZW1lbnQudmFsdWUudHJpbSgpKSwgdXNl
cklucHV0TW9kaWZpZWQsIGZhbHNlKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFt
IHs/V2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLlJlc29sdXRpb259IHJlc29sdXRpb24KKyAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVzZXJJbnB1dE1vZGlmaWVkCisgICAgICovCisgICAgX3Nl
dFJlc29sdXRpb25PdmVycmlkZTogZnVuY3Rpb24ocmVzb2x1dGlvbiwgdXNlcklucHV0TW9kaWZp
ZWQsIHVwZGF0ZUNoZWNrYm94KQorICAgIHsKKyAgICAgICAgY29uc3QgaW52YWxpZEJhY2tncm91
bmRWYWx1ZSA9ICJyZ2IoMjIwLCAxMzAsIDEzMCkiOworCisgICAgICAgIHRoaXMuX3dpZHRoT3Zl
cnJpZGVFbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSByZXNvbHV0aW9uICYmIHJlc29sdXRpb24u
aXNXaWR0aFZhbGlkKCkgPyAiIiA6IGludmFsaWRCYWNrZ3JvdW5kVmFsdWU7CisgICAgICAgIHRo
aXMuX2hlaWdodE92ZXJyaWRlRWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kID0gcmVzb2x1dGlvbiAm
JiByZXNvbHV0aW9uLmlzSGVpZ2h0VmFsaWQoKSA/ICIiIDogaW52YWxpZEJhY2tncm91bmRWYWx1
ZTsKKworICAgICAgICBpZiAoIXJlc29sdXRpb24pCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgaWYgKCF1c2VySW5wdXRNb2RpZmllZCkgeworICAgICAgICAgICAgdGhpcy5fd2lkdGhP
dmVycmlkZUVsZW1lbnQudmFsdWUgPSByZXNvbHV0aW9uLndpZHRoVG9JbnB1dCgpOworICAgICAg
ICAgICAgdGhpcy5faGVpZ2h0T3ZlcnJpZGVFbGVtZW50LnZhbHVlID0gcmVzb2x1dGlvbi5oZWln
aHRUb0lucHV0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVzb2x1dGlvbi5pc1ZhbGlk
KCkpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJlc29sdXRpb24udG9TZXR0aW5ncygpOwor
ICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb2x1dGlv
bi5nZXQoKSkKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb2x1dGlv
bi5zZXQodmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3Jlc29sdXRpb25D
aGVja2JveEVsZW1lbnQgJiYgdXBkYXRlQ2hlY2tib3gpIHsKKyAgICAgICAgICAgIHRoaXMuX3Jl
c29sdXRpb25DaGVja2JveEVsZW1lbnQuY2hlY2tlZCA9ICEhcmVzb2x1dGlvbi50b1NldHRpbmdz
KCk7CisgICAgICAgICAgICB0aGlzLl9vblJlc29sdXRpb25DaGVja2JveENsaWNrZWQoKTsKKyAg
ICAgICAgfQorICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5T
ZXR0aW5nc1NjcmVlbi5SZXNvbHV0aW9ufSByZXNvbHV0aW9uCisgICAgICovCisgICAgX2NyZWF0
ZVJlc29sdXRpb25FbGVtZW50OiBmdW5jdGlvbihyZXNvbHV0aW9uKQorICAgIHsKKyAgICAgICAg
dmFyIGZpZWxkc2V0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7
CisgICAgICAgIGZpZWxkc2V0RWxlbWVudC5pZCA9ICJyZXNvbHV0aW9uLW92ZXJyaWRlLXNlY3Rp
b24iOworCisgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZUlucHV0KGlkLCBkZWZhdWx0VGV4dCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBmaWVsZHNldEVsZW1lbnQuY3JlYXRl
Q2hpbGQoImlucHV0Iik7CisgICAgICAgICAgICBlbGVtZW50LmlkID0gaWQ7CisgICAgICAgICAg
ICBlbGVtZW50Lm1heExlbmd0aCA9IDY7CisgICAgICAgICAgICBlbGVtZW50LnN0eWxlLndpZHRo
ID0gIjU0cHgiOworICAgICAgICAgICAgZWxlbWVudC52YWx1ZSA9IGRlZmF1bHRUZXh0OworICAg
ICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5fYXBwbHlTY3Jl
ZW5TaXplVXNlcklucHV0LmJpbmQodGhpcywgdHJ1ZSksIGZhbHNlKTsKKyAgICAgICAgICAgIHJl
dHVybiBlbGVtZW50OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fd2lkdGhPdmVycmlkZUVs
ZW1lbnQgPSBjcmVhdGVJbnB1dC5jYWxsKHRoaXMsICJyZXNvbHV0aW9uLW92ZXJyaWRlLXdpZHRo
IiwgU3RyaW5nKHJlc29sdXRpb24ud2lkdGggfHwgc2NyZWVuLndpZHRoKSk7CisgICAgICAgIGZp
ZWxkc2V0RWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIFx1MDBE
NyAiKSk7CisgICAgICAgIHRoaXMuX2hlaWdodE92ZXJyaWRlRWxlbWVudCA9IGNyZWF0ZUlucHV0
LmNhbGwodGhpcywgInJlc29sdXRpb24tb3ZlcnJpZGUtaGVpZ2h0IiwgU3RyaW5nKHJlc29sdXRp
b24uaGVpZ2h0IHx8IHNjcmVlbi5oZWlnaHQpKTsKKyAgICAgICAgcmV0dXJuIGZpZWxkc2V0RWxl
bWVudDsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaGVscFNjcmVlbi5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2hlbHBTY3JlZW4uY3NzCmluZGV4IDc4MTY2OTY4MDhiOTg1NzNkODI0N2Y1YjNiZTZmZDk1
NDQ4Y2YwODkuLjUzZmVkOGU4OTE4NGFmYTg5YzRjNWU2ZWUzYzBhOTgwNDRmNWQ1YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaGVscFNjcmVlbi5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9oZWxwU2NyZWVuLmNzcwpA
QCAtMTk2LDYgKzE5NiwxMCBAQCBib2R5LnBsYXRmb3JtLW1hYyAuaGVscC1rZXkgewogICAgIGNv
bG9yOiByZ2IoMTUwLCAxNTAsIDE1MCk7CiB9CiAKKyNyZXNvbHV0aW9uLW92ZXJyaWRlLXNlY3Rp
b24geworICAgIG1hcmdpbi1sZWZ0OiAxM3B4OworfQorCiAuaGVscC1jb250ZW50IGlucHV0W3R5
cGU9Y2hlY2tib3hdIHsKICAgICBoZWlnaHQ6IDEzcHg7CiAgICAgd2lkdGg6IDEzcHg7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3Mg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKaW5kZXgg
NzBmMGUxMzZmYTk2ODllYmVlMTBmOGMwYjA3ZTFmMDVhZjAxY2U2OC4uN2M0MGU0YmEwN2RhZTJi
OGVlN2Q3Y2JmMmZkNThhMGRjYzUzYzc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMzksNiArMzksMTAgQEAgaW5wdXRbdHlw
ZT0ic2VhcmNoIl06Zm9jdXMsIGlucHV0W3R5cGU9InRleHQiXTpmb2N1cyB7CiAgICAgYm90dG9t
OiAwOwogfQogCisuaGlkZGVuIHsKKyAgICBkaXNwbGF5OiBub25lOworfQorCiAjdG9vbGJhciB7
CiAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgIHRvcDogMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcAppbmRleCAyMTk0OGYzZmM2MGZjYjE3YjUyOTMzNDRhYTgwNmY1OWQ2OTY0ZTc2Li42
ZWIzZmZiMzcxYTQ5MGVkYjNhM2QyZDc2ZjY4MWIzZmJlOGFjZTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCkBAIC02MSw2ICs2MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKKyNp
bmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogCkBAIC05Miw2ICs5Myw3IEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Cit1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBkb3VibGUgRnJhbWVWaWV3OjpzQ3VycmVudFBhaW50VGltZVN0YW1wID0gMC4wOwog
CkBAIC0xNzEsNiArMTczLDEyIEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZyYW1lKiBmcmFtZSkK
IFBhc3NSZWZQdHI8RnJhbWVWaWV3PiBGcmFtZVZpZXc6OmNyZWF0ZShGcmFtZSogZnJhbWUpCiB7
CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGFkb3B0UmVmKG5ldyBGcmFtZVZpZXcoZnJh
bWUpKTsKKyAgICBsb25nIHdpZHRoID0gMDsKKyAgICBsb25nIGhlaWdodCA9IDA7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVNjcmVlbldpZHRoT3ZlcnJpZGUoZnJhbWUsICZ3
aWR0aCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseVNjcmVlbkhlaWdodE92
ZXJyaWRlKGZyYW1lLCAmaGVpZ2h0KTsKKyAgICBpZiAod2lkdGggJiYgaGVpZ2h0KQorICAgICAg
ICB2aWV3LT5zZXRGcmFtZVJlY3RXaXRoT3ZlcnJpZGUoSW50UmVjdCh2aWV3LT5sb2NhdGlvbigp
LCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpKSwgdHJ1ZSk7CiAgICAgdmlldy0+c2hvdygpOwogICAg
IHJldHVybiB2aWV3LnJlbGVhc2UoKTsKIH0KQEAgLTE3OCw3ICsxODYsNyBAQCBQYXNzUmVmUHRy
PEZyYW1lVmlldz4gRnJhbWVWaWV3OjpjcmVhdGUoRnJhbWUqIGZyYW1lKQogUGFzc1JlZlB0cjxG
cmFtZVZpZXc+IEZyYW1lVmlldzo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgSW50U2l6ZSYg
aW5pdGlhbFNpemUpCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGFkb3B0UmVmKG5l
dyBGcmFtZVZpZXcoZnJhbWUpKTsKLSAgICB2aWV3LT5XaWRnZXQ6OnNldEZyYW1lUmVjdChJbnRS
ZWN0KHZpZXctPmxvY2F0aW9uKCksIGluaXRpYWxTaXplKSk7CisgICAgdmlldy0+c2V0RnJhbWVS
ZWN0V2l0aE92ZXJyaWRlKEludFJlY3Qodmlldy0+bG9jYXRpb24oKSwgaW5pdGlhbFNpemUpLCB0
cnVlKTsKICAgICB2aWV3LT5zaG93KCk7CiAgICAgcmV0dXJuIHZpZXcucmVsZWFzZSgpOwogfQpA
QCAtNDE4LDcgKzQyNiw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50
UmVjdCYgbmV3UmVjdCkKICAgICB9CiAjZW5kaWYKIAotICAgIFNjcm9sbFZpZXc6OnNldEZyYW1l
UmVjdChuZXdSZWN0KTsKKyAgICBzZXRGcmFtZVJlY3RXaXRoT3ZlcnJpZGUobmV3UmVjdCwgZmFs
c2UpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChSZW5kZXJW
aWV3KiByb290ID0gcm9vdFJlbmRlcmVyKHRoaXMpKSB7CkBAIC00MjgsNiArNDM2LDUyIEBAIHZv
aWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKICNlbmRp
ZgogfQogCit2b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0V2l0aE92ZXJyaWRlKGNvbnN0IElu
dFJlY3QmIG5ld1JlY3QsIGJvb2wgdXNlV2lkZ2V0U2V0dGVyKQoreworICAgIGxvbmcgd2lkdGgg
PSAwOworICAgIGxvbmcgaGVpZ2h0ID0gMDsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmFwcGx5U2NyZWVuV2lkdGhPdmVycmlkZShtX2ZyYW1lLmdldCgpLCAmd2lkdGgpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlTY3JlZW5IZWlnaHRPdmVycmlkZShtX2ZyYW1l
LmdldCgpLCAmaGVpZ2h0KTsKKyAgICBpZiAoIXdpZHRoICYmICFoZWlnaHQpIHsKKyAgICAgICAg
aWYgKHVzZVdpZGdldFNldHRlcikKKyAgICAgICAgICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KG5l
d1JlY3QpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBTY3JvbGxWaWV3OjpzZXRGcmFtZVJl
Y3QobmV3UmVjdCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV9vcmln
aW5hbEZyYW1lTWV0cmljcykKKyAgICAgICAgbV9vcmlnaW5hbEZyYW1lTWV0cmljcyA9IGFkb3B0
UHRyKG5ldyBGcmFtZU1ldHJpY3ModGhpcykpOworICAgIGVsc2UgaWYgKCFtX29yaWdpbmFsRnJh
bWVNZXRyaWNzLT5pZ25vcmVDaGFuZ2VzKQorICAgICAgICBtX29yaWdpbmFsRnJhbWVNZXRyaWNz
LT5zaXplID0gbmV3UmVjdC5zaXplKCk7CisKKyAgICBpZiAodmVydGljYWxTY3JvbGxiYXJMb2Nr
KCkpCisgICAgICAgIHNldFZlcnRpY2FsU2Nyb2xsYmFyTG9jayhmYWxzZSk7CisgICAgaWYgKGhv
cml6b250YWxTY3JvbGxiYXJMb2NrKCkpCisgICAgICAgIHNldEhvcml6b250YWxTY3JvbGxiYXJM
b2NrKGZhbHNlKTsKKyAgICBzZXRTY3JvbGxiYXJNb2RlcyhTY3JvbGxiYXJBbHdheXNPbiwgU2Ny
b2xsYmFyQWx3YXlzT24sIHRydWUsIHRydWUpOworCisgICAgSW50UmVjdCByZWN0KG5ld1JlY3Qp
OworICAgIGlmICh3aWR0aCkgeworICAgICAgICBpbnQgdmVydGljYWxTY3JvbGxiYXJXaWR0aCA9
IDA7CisgICAgICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2FsQmFyID0gdmVydGljYWxTY3JvbGxi
YXIoKSkKKyAgICAgICAgICAgIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGggPSAhdmVydGljYWxCYXIt
PmlzT3ZlcmxheVNjcm9sbGJhcigpID8gdmVydGljYWxCYXItPndpZHRoKCkgOiAwOworICAgICAg
ICByZWN0LnNldFdpZHRoKG1pbihzdGF0aWNfY2FzdDxpbnQ+KHdpZHRoKSwgbmV3UmVjdC53aWR0
aCgpKSArIHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgpOworICAgIH0KKyAgICBpZiAoaGVpZ2h0KSB7
CisgICAgICAgIGludCBob3Jpem9udGFsU2Nyb2xsYmFySGVpZ2h0ID0gMDsKKyAgICAgICAgaWYg
KFNjcm9sbGJhciogaG9yaXpvbnRhbEJhciA9IGhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAg
ICAgICAgIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQgPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVy
bGF5U2Nyb2xsYmFyKCkgPyBob3Jpem9udGFsQmFyLT5oZWlnaHQoKSA6IDA7CisgICAgICAgIHJl
Y3Quc2V0SGVpZ2h0KG1pbihzdGF0aWNfY2FzdDxpbnQ+KGhlaWdodCksIG5ld1JlY3QuaGVpZ2h0
KCkpICsgaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCk7CisgICAgfQorCisgICAgaWYgKHVzZVdp
ZGdldFNldHRlcikKKyAgICAgICAgV2lkZ2V0OjpzZXRGcmFtZVJlY3QocmVjdCk7CisgICAgZWxz
ZQorICAgICAgICBTY3JvbGxWaWV3OjpzZXRGcmFtZVJlY3QocmVjdCk7Cit9CisKICNpZiBFTkFC
TEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCiB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVBbmlt
YXRpb24oKQogewpAQCAtMzI2MCw2ICszMzE0LDIwIEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRUcmFj
a3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMpCiAgICAgbV9pc1RyYWNraW5nUmVwYWludHMg
PSB0cmFja1JlcGFpbnRzOwogfQogCit2b2lkIEZyYW1lVmlldzo6cmVzZXRPcmlnaW5hbE1ldHJp
Y3MoKQoreworICAgIGlmICghbV9vcmlnaW5hbEZyYW1lTWV0cmljcykKKyAgICAgICAgcmV0dXJu
OworICAgIE93blB0cjxGcmFtZU1ldHJpY3M+IG1ldHJpY3MgPSBtX29yaWdpbmFsRnJhbWVNZXRy
aWNzLnJlbGVhc2UoKTsKKyAgICBtZXRyaWNzLT5hcHBseSh0aGlzKTsKK30KKwordm9pZCBGcmFt
ZVZpZXc6OnNldElnbm9yZU9yaWdpbmFsTWV0cmljQ2hhbmdlcyhib29sIGlnbm9yZSkKK3sKKyAg
ICBpZiAobV9vcmlnaW5hbEZyYW1lTWV0cmljcykKKyAgICAgICAgbV9vcmlnaW5hbEZyYW1lTWV0
cmljcy0+aWdub3JlQ2hhbmdlcyA9IGlnbm9yZTsKK30KKwogYm9vbCBGcmFtZVZpZXc6OmlzVmVy
dGljYWxEb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyVmlldyogcm9vdCA9IHJvb3RSZW5k
ZXJlcih0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDEyYWEwN2ExMzY0ZjQ0NzRi
NDQ0YTBmYTQwMDAzOTYwNDg5ZDJmZDQuLmI4YzBjOWYxODZjMjFkNDNhMmFmNGM1NTA5MGRmYzBl
M2VhNTViYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNjgsNiArNjgsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKIAorICAgIHZvaWQg
c2V0RnJhbWVSZWN0V2l0aE92ZXJyaWRlKGNvbnN0IEludFJlY3QmLCBib29sKTsKKwogI2lmIEVO
QUJMRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRSkKICAgICB2b2lkIHNjaGVkdWxlQW5pbWF0aW9u
KCk7CiAjZW5kaWYKQEAgLTMwOCw2ICszMTAsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1RyYWNr
aW5nUmVwYWludHMoKSBjb25zdCB7IHJldHVybiBtX2lzVHJhY2tpbmdSZXBhaW50czsgfQogICAg
IHZvaWQgcmVzZXRUcmFja2VkUmVwYWludHMoKSB7IG1fdHJhY2tlZFJlcGFpbnRSZWN0cy5jbGVh
cigpOyB9CiAgICAgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0cmFja2VkUmVwYWludFJlY3RzKCkg
Y29uc3QgeyByZXR1cm4gbV90cmFja2VkUmVwYWludFJlY3RzOyB9CisgICAgdm9pZCByZXNldE9y
aWdpbmFsTWV0cmljcygpOworICAgIHZvaWQgc2V0SWdub3JlT3JpZ2luYWxNZXRyaWNDaGFuZ2Vz
KGJvb2wpOwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNjcm9sbENvbnRlbnRzRmFz
dFBhdGgoY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Nj
cm9sbCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpOwpAQCAtMzE3LDYgKzMyMSwzMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIGlzRmxpcHBlZERvY3VtZW50KCkgY29uc3Q7CiAKIHBy
aXZhdGU6CisgICAgc3RydWN0IEZyYW1lTWV0cmljcyB7CisgICAgICAgIEZyYW1lTWV0cmljcyhG
cmFtZVZpZXcqIHZpZXcpCisgICAgICAgICAgICA6IGlnbm9yZUNoYW5nZXMoZmFsc2UpLCBzaXpl
KHZpZXctPmZyYW1lUmVjdCgpLnNpemUoKSkKKyAgICAgICAgICAgICwgdmVydGljYWxTY3JvbGxi
YXJNb2RlKHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyTW9kZSgpKSwgdmVydGljYWxTY3JvbGxiYXJM
b2NrKHZpZXctPnZlcnRpY2FsU2Nyb2xsYmFyTG9jaygpKQorICAgICAgICAgICAgLCBob3Jpem9u
dGFsU2Nyb2xsYmFyTW9kZSh2aWV3LT5ob3Jpem9udGFsU2Nyb2xsYmFyTW9kZSgpKSwgaG9yaXpv
bnRhbFNjcm9sbGJhckxvY2sodmlldy0+aG9yaXpvbnRhbFNjcm9sbGJhckxvY2soKSkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBhcHBseShGcmFtZVZpZXcqIHZpZXcpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZpZXctPnNldFZlcnRpY2FsU2Nyb2xsYmFyTG9jayhmYWxz
ZSk7CisgICAgICAgICAgICB2aWV3LT5zZXRIb3Jpem9udGFsU2Nyb2xsYmFyTG9jayhmYWxzZSk7
CisgICAgICAgICAgICB2aWV3LT5zZXRTY3JvbGxiYXJNb2Rlcyhob3Jpem9udGFsU2Nyb2xsYmFy
TW9kZSwgdmVydGljYWxTY3JvbGxiYXJNb2RlLCBob3Jpem9udGFsU2Nyb2xsYmFyTG9jaywgdmVy
dGljYWxTY3JvbGxiYXJMb2NrKTsKKyAgICAgICAgICAgIHZpZXctPnJlc2l6ZShzaXplKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGJvb2wgaWdub3JlQ2hhbmdlczsKKyAgICAgICAgSW50U2l6ZSBz
aXplOworICAgICAgICBTY3JvbGxiYXJNb2RlIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZTsKKyAgICAg
ICAgYm9vbCB2ZXJ0aWNhbFNjcm9sbGJhckxvY2s7CisgICAgICAgIFNjcm9sbGJhck1vZGUgaG9y
aXpvbnRhbFNjcm9sbGJhck1vZGU7CisgICAgICAgIGJvb2wgaG9yaXpvbnRhbFNjcm9sbGJhckxv
Y2s7CisgICAgfTsKKwogICAgIEZyYW1lVmlldyhGcmFtZSopOwogCiAgICAgdm9pZCByZXNldCgp
OwpAQCAtNDg5LDYgKzUxNyw4IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHVwcGVyIGJvdW5kIG9u
IHRoZSBzaXplIHdoZW4gYXV0b3NpemluZy4KICAgICBJbnRTaXplIG1fbWF4QXV0b1NpemU7CiAK
KyAgICBPd25QdHI8RnJhbWVNZXRyaWNzPiBtX29yaWdpbmFsRnJhbWVNZXRyaWNzOworCiAgICAg
c3RhdGljIGRvdWJsZSBzX2RlZmVycmVkUmVwYWludERlbGF5OwogICAgIHN0YXRpYyBkb3VibGUg
c19pbml0aWFsRGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nOwogICAgIHN0YXRpYyBk
b3VibGUgc19tYXhEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggYzg4NThjNjVhZmIwZWQxM2Y2MzJiYjU4
MGU3MWJlYjAxZmU4Y2U5My4uNDJjMDM1Y2JlOWUzNWEwZDRiNDM4MTY3YzNhYTg5MjZiMjYwNGZh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93
bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCmluZGV4IDMxN2I1
NzY5MzRhOWM4ZWRiNTdjNTJlMGY2MWI2OGNiMzJhNTYzMTEuLmE2YTQxOTNjZDJjYjAzNjU1NGI3
YTk3NDczNmNkYTI1ZDkzOTVjMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0xMjgsNiArMTI4LDE0IEBAIHZvaWQgSW5z
cGVjdG9yQ2xpZW50SW1wbDo6Y2xlYXJCcm93c2VyQ29va2llcygpCiAgICAgICAgIGFnZW50LT5j
bGVhckJyb3dzZXJDb29raWVzKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6aW52
YWxpZGF0ZUhvc3RXaW5kb3coKQoreworICAgIGNvbnN0IFdlYlNpemUmIHNpemUgPSBtX2luc3Bl
Y3RlZFdlYlZpZXctPnNpemUoKTsKKyAgICBXZWJSZWN0IGRhbWFnZWRSZWN0KDAsIDAsIHNpemUu
d2lkdGgsIHNpemUuaGVpZ2h0KTsKKyAgICBpZiAobV9pbnNwZWN0ZWRXZWJWaWV3LT5jbGllbnQo
KSkKKyAgICAgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5jbGllbnQoKS0+ZGlkSW52YWxpZGF0ZVJl
Y3QoZGFtYWdlZFJlY3QpOworfQorCiBXZWJEZXZUb29sc0FnZW50SW1wbCogSW5zcGVjdG9yQ2xp
ZW50SW1wbDo6ZGV2VG9vbHNBZ2VudCgpCiB7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkRl
dlRvb2xzQWdlbnRJbXBsKj4obV9pbnNwZWN0ZWRXZWJWaWV3LT5kZXZUb29sc0FnZW50KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCmlu
ZGV4IGIxNmI2ZjQ2ODE4YzMzY2U0Mjk1ZTVmODNhNmE3NWM5YjVlMjFkMmMuLjk0MmI5MjIxZjg5
ZDQyYzNkOThhNmZjYTllNDNmMDNiY2E5OTAzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDYWNoZSgpOwogICAgIHZpcnR1YWwgYm9v
bCBjYW5DbGVhckJyb3dzZXJDb29raWVzKCk7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3Nl
ckNvb2tpZXMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlSG9zdFdpbmRvdygpOwog
cHJpdmF0ZToKICAgICBXZWJEZXZUb29sc0FnZW50SW1wbCogZGV2VG9vbHNBZ2VudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNjZhOGE5ZDlj
MGE2MjdjN2NiZDExZmU0N2FjYjkzMTI5OGY3ZTZiMC4uYzBjNWI1MGVjNTE0YzJhYTljOTkzZDdi
ZDMyMmQ2NmM4YjM4YzdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmgiCisjaW5jbHVkZSAicGFpbnRpbmcvR3JhcGhpY3NDb250ZXh0QnVpbGRlci5o
IgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0xMzEsNiArMTMyLDcgQEAKICNpbmNs
dWRlICJXZWJQb3B1cE1lbnVJbXBsLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2UuaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJSZWN0LmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2l6ZS5oIgogI2lu
Y2x1ZGUgIldlYlJ1bnRpbWVGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYlNldHRpbmdzSW1wbC5o
IgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgpAQCAtMTIzMiw4ICsxMjM0LDI0IEBA
IHZvaWQgV2ViVmlld0ltcGw6OnBhaW50KFdlYkNhbnZhcyogY2FudmFzLCBjb25zdCBXZWJSZWN0
JiByZWN0KQogICAgIH0gZWxzZSB7CiAgICAgICAgIGRvdWJsZSBwYWludFN0YXJ0ID0gY3VycmVu
dFRpbWUoKTsKICAgICAgICAgV2ViRnJhbWVJbXBsKiB3ZWJmcmFtZSA9IG1haW5GcmFtZUltcGwo
KTsKLSAgICAgICAgaWYgKHdlYmZyYW1lKQorICAgICAgICBpZiAod2ViZnJhbWUpIHsKKyAgICAg
ICAgICAgIEludFJlY3QgZnJhbWVSZWN0ID0gd2ViZnJhbWUtPmZyYW1lVmlldygpLT5mcmFtZVJl
Y3QoKTsKKyAgICAgICAgICAgIFdlYlNpemUgdmlld1NpemUgPSBzaXplKCk7CisgICAgICAgICAg
ICBpZiAoZnJhbWVSZWN0LnNpemUoKSAhPSBJbnRTaXplKHZpZXdTaXplKSkgeworICAgICAgICAg
ICAgICAgIC8vIFBhaW50IHRoZSBzdXJyb3VuZGluZyBhcmVhIHdpdGggd2hpdGUuCisgICAgICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0QnVpbGRlciBidWlsZGVyKGNhbnZhcyk7CisgICAgICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0JiBnYyA9IGJ1aWxkZXIuY29udGV4dCgpOworICAgICAg
ICAgICAgICAgIGlmIChmcmFtZVJlY3QueSgpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgZ2Mu
ZmlsbFJlY3QoSW50UmVjdCgwLCAwLCB2aWV3U2l6ZS53aWR0aCwgZnJhbWVSZWN0LnkoKSksIENv
bG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICAgICAgaWYgKGZy
YW1lUmVjdC5tYXhZKCkgPCB2aWV3U2l6ZS5oZWlnaHQpCisgICAgICAgICAgICAgICAgICAgIGdj
LmZpbGxSZWN0KEludFJlY3QoMCwgZnJhbWVSZWN0Lm1heFkoKSwgdmlld1NpemUud2lkdGgsIHZp
ZXdTaXplLmhlaWdodCAtIGZyYW1lUmVjdC5tYXhZKCkpLCBDb2xvcjo6d2hpdGUsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGlmIChmcmFtZVJlY3QueCgpID4gMCkKKyAg
ICAgICAgICAgICAgICAgICAgZ2MuZmlsbFJlY3QoSW50UmVjdCgwLCBmcmFtZVJlY3QueSgpLCBm
cmFtZVJlY3QueCgpLCBmcmFtZVJlY3QuaGVpZ2h0KCkpLCBDb2xvcjo6d2hpdGUsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOworICAgICAgICAgICAgICAgIGlmIChmcmFtZVJlY3QubWF4WCgpIDwgdmll
d1NpemUud2lkdGgpCisgICAgICAgICAgICAgICAgICAgIGdjLmZpbGxSZWN0KEludFJlY3QoZnJh
bWVSZWN0Lm1heFgoKSwgZnJhbWVSZWN0LnkoKSwgdmlld1NpemUud2lkdGggLSBmcmFtZVJlY3Qu
bWF4WCgpLCBmcmFtZVJlY3QuaGVpZ2h0KCkpLCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgd2ViZnJhbWUtPnBhaW50KGNhbnZh
cywgcmVjdCk7CisgICAgICAgIH0KICAgICAgICAgZG91YmxlIHBhaW50RW5kID0gY3VycmVudFRp
bWUoKTsKICAgICAgICAgZG91YmxlIHBpeGVsc1BlclNlYyA9IChyZWN0LndpZHRoICogcmVjdC5o
ZWlnaHQpIC8gKHBhaW50RW5kIC0gcGFpbnRTdGFydCk7CiAgICAgICAgIFBsYXRmb3JtU3VwcG9y
dDo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuU29mdHdhcmVQYWludER1cmF0aW9u
TVMiLCAocGFpbnRFbmQgLSBwYWludFN0YXJ0KSAqIDEwMDAsIDAsIDEyMCwgMzApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5jcHAKaW5kZXggN2UyOTc1OGJkZDExNzE5NGI1Mjg0ZWU1Y2RiOTQ3OTgxNzA4Zjg5NS4uYmMx
OTJiNTYzNGZhYjk4NGE2ZWZlMDlhOGRmNDE2MDFhMTI2MDRjNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCkBA
IC01OCw2ICs1OCwxMSBAQCB2b2lkIEluc3BlY3RvckNsaWVudEVmbDo6aGlkZUhpZ2hsaWdodCgp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDbGllbnRFZmw6Omlu
dmFsaWRhdGVIb3N0V2luZG93KCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lk
IEluc3BlY3RvckNsaWVudEVmbDo6cG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYsIFN0cmlu
ZyopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKaW5kZXggZjkyZTk0ZGRhODEz
YzViNzI5ZTA3OWYzZjY3MWIzNThlMWZmNjliMS4uNjM5NTBhMDcwMWVmNWQyMWVmMzdkNzM4MzFh
ODQxZWRjYWM5ZWRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmgKQEAgLTQ5LDYgKzQ5LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBoaWdobGlnaHQoKTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUhpZ2hsaWdo
dCgpOwogCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVIb3N0V2luZG93KCk7CisKICAgICB2
aXJ0dWFsIHZvaWQgcG9wdWxhdGVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBTdHJpbmcqIHZh
bHVlKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134097</attachid>
            <date>2012-03-27 10:32:09 -0700</date>
            <delta_ts>2012-03-29 06:47:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75963-20120327213206.patch</filename>
            <type>text/plain</type>
            <size>53206</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBlZTFjYTFlMWNiNjBh
YThlMzQyNjM4ODU1ZmZiOTQ3MzMxMGQwMC4uNDY0ODVkMTk3Zjk1ZTkwOGY3MjBkMDIxNDI5OGIy
MjBiNjQwZGVmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYyIEBACiAyMDEyLTAzLTI3ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogW0Nocm9taXVtXSBBbGxvdyBlbXVsYXRpb24gb2YgYXJiaXRyYXJ5IChtb2JpbGUpIGRl
dmljZSByZXNvbHV0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzU5NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDbGllbnQ6OmVt
dWxhdGVEZXZpY2VNZXRyaWNzKToKKyAgICAgICAgKEluc3BlY3RvckNsaWVudCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHA6CisgICAgICAgIChQYWdlQWdlbnRT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OnJlc3RvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6dXBkYXRlVmlld01ldHJpY3Mp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
U3RhdGU6OmdldERvdWJsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yU3RhdGUuaDoKKyAgICAgICAgKEluc3BlY3RvclN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclN0YXRlOjpzZXREb3VibGUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLnByb3RvdHlwZS5fdW5kb1JlZG9Db21wbGV0ZWQpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9kZXZpY2VNZXRyaWNzU2V0dGluZ0NoYW5n
ZWQuZ2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlw
ZS5fZGV2aWNlTWV0cmljc1NldHRpbmdDaGFuZ2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGlu
Z3NTY3JlZW4uanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4pOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmljZU1ldHJpY3MpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmljZU1ldHJpY3MucGFyc2VGcm9tU2V0
dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmljZU1ldHJp
Y3MucGFyc2VGcm9tVXNlcklucHV0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1Nj
cmVlbi5EZXZpY2VNZXRyaWNzLnByb3RvdHlwZS5pc1ZhbGlkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TZXR0aW5nc1NjcmVlbi5EZXZpY2VNZXRyaWNzLnByb3RvdHlwZS5pc1dpZHRoVmFsaWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmljZU1ldHJpY3MucHJv
dG90eXBlLmlzSGVpZ2h0VmFsaWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2Ny
ZWVuLkRldmljZU1ldHJpY3MucHJvdG90eXBlLmlzRm9udFNjYWxlRmFjdG9yVmFsaWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmljZU1ldHJpY3MucHJvdG90eXBl
LnRvU2V0dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmlj
ZU1ldHJpY3MucHJvdG90eXBlLndpZHRoVG9JbnB1dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2V0dGluZ3NTY3JlZW4uRGV2aWNlTWV0cmljcy5wcm90b3R5cGUuaGVpZ2h0VG9JbnB1dCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uRGV2aWNlTWV0cmljcy5wcm90b3R5
cGUuZm9udFNjYWxlRmFjdG9yVG9JbnB1dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGlu
Z3NTY3JlZW4ucHJvdG90eXBlLl9jcmVhdGVVc2VyQWdlbnRTZWxlY3RSb3dFbGVtZW50LmdldCBj
b25zdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4ucHJvdG90eXBlLl9z
aG93UGFpbnRSZWN0c0NoYW5nZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzU2Ny
ZWVuLnByb3RvdHlwZS5zZXQgX2FwcGx5RGV2aWNlTWV0cmljc1VzZXJJbnB1dCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4ucHJvdG90eXBlLl9zZXREZXZpY2VNZXRyaWNz
T3ZlcnJpZGUuc2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5w
cm90b3R5cGUuX2NyZWF0ZURldmljZU1ldHJpY3NFbGVtZW50LmNyZWF0ZUlucHV0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5wcm90b3R5cGUuX2NyZWF0ZURldmljZU1l
dHJpY3NFbGVtZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2hlbHBTY3JlZW4u
Y3NzOgorICAgICAgICAoLmhlbHAtdGFibGUgPiB0ciA+IHRoKToKKyAgICAgICAgKC5oZWxwLXRh
YmxlID4gdHIgPiB0ZCk6CisgICAgICAgICgjcmVzb2x1dGlvbi1vdmVycmlkZS1zZWN0aW9uKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAgICgu
aGlkZGVuKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lOjpjcmVhdGVWaWV3KToKKworMjAxMi0wMy0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZs
b3ZAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSAibnVtYmVy
IiBwYXJhbWV0ZXJzIGluIHRoZSB3ZWIgaW5zcGVjdG9yIHByb3RvY29sIG1ldGhvZHMKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMzM0CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggY2JkMjZlMDY4MDE1ZTkzYmFhMjE2NGMwYWIwODgwNWQw
YTllNTEwMi4uNjk0ZDAzOTdhNDM2YTJmM2MyZTg2MjI1Y2ZiMzk1N2RiNGUyZjY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAxMi0wMy0yNyAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtDaHJvbWl1bV0gQWxsb3cgZW11bGF0aW9uIG9mIGFyYml0cmFyeSAobW9iaWxlKSBkZXZp
Y2UgcmVzb2x1dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBzcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
c3BlY3RvckNsaWVudEltcGw6OmVtdWxhdGVEZXZpY2VNZXRyaWNzKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogc3JjL0luc3BlY3RvckNsaWVudEltcGwuaDoKKyAgICAgICAgKEluc3Bl
Y3RvckNsaWVudEltcGwpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6V2lkZ2V0RnJhbWVNZXRy
aWNzOjpXaWRnZXRGcmFtZU1ldHJpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
V2lkZ2V0RnJhbWVNZXRyaWNzOjpmcmFtZVZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
SW1wbDo6V2lkZ2V0RnJhbWVNZXRyaWNzOjpzZXRFbXVsYXRlZFNpemUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJWaWV3SW1wbDo6V2lkZ2V0RnJhbWVNZXRyaWNzOjpzZXRTaXplKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlld0ltcGw6OldlYlZpZXdJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnJlc2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjplbXVsYXRl
RGV2aWNlTWV0cmljcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpzZXRab29tTGV2
ZWwpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cGFpbnRWaWV3cG9ydEd1dHRlcik6
CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRyZWVWaWV3cG9ydCk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisgICAgICAgIChXZWJWaWV3SW1wbCk6Cisg
ICAgICAgIChXaWRnZXRGcmFtZU1ldHJpY3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6V2lkZ2V0RnJhbWVNZXRyaWNzOjppc1NpemVFbXVsYXRlZCk6CisgICAgICAgIChWaWV3cG9y
dEd1dHRlck92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6Vmlld3BvcnRH
dXR0ZXJPdmVybGF5OjpWaWV3cG9ydEd1dHRlck92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3SW1wbDo6Vmlld3BvcnRHdXR0ZXJPdmVybGF5OjpwYWludFBhZ2VPdmVybGF5KToKKyAg
ICAgICAgKiBzcmMvanMvRGV2VG9vbHMuanM6CisKIDIwMTItMDMtMjYgIFN0ZXBoZW4gV2hpdGUg
IDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRGlzYWJsZSBDQ0xheWVyVHJl
ZUhvc3RUZXN0U2V0U2luZ2xlTG9zdENvbnRleHQucnVuTXVsdGlUaHJlYWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggYmExZDdiZGMxNjdmNDJlOTIyYTU0Mjk2
YjlkZjg3NmUzOTk3ZTljOC4uYmZhMjgxYzU0OGQxZmEyMTNmNDExM2NmZjRjNzE3ZWIxZWZhZmE2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMzEwLDExICsz
MTAsMTIgQEAKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfSwK
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRTY3JlZW5TaXplT3Zl
cnJpZGUiLAorICAgICAgICAgICAgICAgICJuYW1lIjogInNldERldmljZU1ldHJpY3NPdmVycmlk
ZSIsCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIk92ZXJyaWRlcyB0aGUgdmFsdWVz
IG9mIHdpbmRvdy5zY3JlZW4ud2lkdGgsIHdpbmRvdy5zY3JlZW4uaGVpZ2h0LCB3aW5kb3cuaW5u
ZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0LCBhbmQgXCJkZXZpY2Utd2lkdGhcIi9cImRldmlj
ZS1oZWlnaHRcIi1yZWxhdGVkIENTUyBtZWRpYSBxdWVyeSByZXN1bHRzIiwKICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aWR0
aCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiT3ZlcnJpZGluZyB3aWR0aCB2
YWx1ZSBpbiBwaXhlbHMgKG1pbmltdW0gMCwgbWF4aW11bSAxMDAwMDAwMCkuIDAgZGlzYWJsZXMg
dGhlIG92ZXJyaWRlLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoZWlnaHQi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk92ZXJyaWRpbmcgaGVpZ2h0IHZh
bHVlIGluIHBpeGVscyAobWluaW11bSAwLCBtYXhpbXVtIDEwMDAwMDAwKS4gMCBkaXNhYmxlcyB0
aGUgb3ZlcnJpZGUuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGVpZ2h0Iiwg
InR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJPdmVycmlkaW5nIGhlaWdodCB2YWx1
ZSBpbiBwaXhlbHMgKG1pbmltdW0gMCwgbWF4aW11bSAxMDAwMDAwMCkuIDAgZGlzYWJsZXMgdGhl
IG92ZXJyaWRlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmb250U2NhbGVG
YWN0b3IiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24iOiAiT3ZlcnJpZGluZyBmb250
IHNjYWxlIGZhY3RvciB2YWx1ZSAobXVzdCBiZSBwb3NpdGl2ZSkuIDEgZGlzYWJsZXMgdGhlIG92
ZXJyaWRlLiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6
IHRydWUKICAgICAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2xpZW50LmgKaW5kZXggZTRkYTY4OGUzMWNkOTQzNjRlYjYyMTIzZDgwZDA1OGVmM2QzNTMwMC4u
NmVmYTQxYWY2OWE5NGVlNWQzOTU4MzljOTYyNmRiMWUzMGYxODcyZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDbGllbnQuaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCBib29sIGNhbkNsZWFyQnJvd3NlckNvb2tpZXMoKSB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhckJyb3dzZXJDb29raWVzKCkgeyB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgZW11bGF0ZURldmljZU1ldHJpY3MoaW50IC8qd2lkdGgqLywgaW50IC8qaGVp
Z2h0Ki8sIGZsb2F0IC8qZm9udFNjYWxlRmFjdG9yKi8pIHsgfQorCiAgICAgYm9vbCBkb0Rpc3Bh
dGNoTWVzc2FnZU9uRnJvbnRlbmRQYWdlKFBhZ2UqIGZyb250ZW5kUGFnZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKaW5kZXggYTU5YTRjOWJiNmY3OGVjZTY0OGZhODk4NDlkNGU4NzRkM2Rk
MTdhYS4uMzY5OGZkMDZmZTI4YWViOGM5OTRiMTdhMTE4NjFjMGFjMzUwZWQ4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTg0LDYg
Kzg0LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50RW5hYmxlZFtdID0gInBhZ2VBZ2Vu
dEVuYWJsZWQiOwogc3RhdGljIGNvbnN0IGNoYXIgcGFnZUFnZW50U2NyaXB0c1RvRXZhbHVhdGVP
bkxvYWRbXSA9ICJwYWdlQWdlbnRTY3JpcHRzVG9FdmFsdWF0ZU9uTG9hZCI7CiBzdGF0aWMgY29u
c3QgY2hhciBwYWdlQWdlbnRTY3JlZW5XaWR0aE92ZXJyaWRlW10gPSAicGFnZUFnZW50U2NyZWVu
V2lkdGhPdmVycmlkZSI7CiBzdGF0aWMgY29uc3QgY2hhciBwYWdlQWdlbnRTY3JlZW5IZWlnaHRP
dmVycmlkZVtdID0gInBhZ2VBZ2VudFNjcmVlbkhlaWdodE92ZXJyaWRlIjsKK3N0YXRpYyBjb25z
dCBjaGFyIHBhZ2VBZ2VudEZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlW10gPSAicGFnZUFnZW50Rm9u
dFNjYWxlRmFjdG9yT3ZlcnJpZGUiOwogc3RhdGljIGNvbnN0IGNoYXIgc2hvd1BhaW50UmVjdHNb
XSA9ICJzaG93UGFpbnRSZWN0cyI7CiB9CiAKQEAgLTMzNiw3ICszMzcsOCBAQCB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6cmVzdG9yZSgpCiAgICAgICAgIC8vIFdoZW4gcmVzdG9yaW5nIHRoZSBh
Z2VudCwgb3ZlcnJpZGUgdmFsdWVzIGFyZSByZXN0b3JlZCBpbnRvIHRoZSBGcmFtZVZpZXcuCiAg
ICAgICAgIGludCB3aWR0aCA9IHN0YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdl
QWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlkZSkpOwogICAgICAgICBpbnQg
aGVpZ2h0ID0gc3RhdGljX2Nhc3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRl
OjpwYWdlQWdlbnRTY3JlZW5IZWlnaHRPdmVycmlkZSkpOwotICAgICAgICB1cGRhdGVGcmFtZVZp
ZXdGaXhlZExheW91dCh3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZG91YmxlIGZvbnRTY2FsZUZh
Y3RvciA9IG1fc3RhdGUtPmdldERvdWJsZShQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50Rm9udFNj
YWxlRmFjdG9yT3ZlcnJpZGUpOworICAgICAgICB1cGRhdGVWaWV3TWV0cmljcyh3aWR0aCwgaGVp
Z2h0LCBmb250U2NhbGVGYWN0b3IpOwogICAgIH0KIH0KIApAQCAtMzU0LDcgKzM1Niw4IEBAIHZv
aWQgSW5zcGVjdG9yUGFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKICAgICAvLyBXaGVu
IGRpc2FibGluZyB0aGUgYWdlbnQsIHJlc2V0IHRoZSBvdmVycmlkZSB2YWx1ZXMuCiAgICAgbV9z
dGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2NyZWVuV2lkdGhPdmVycmlk
ZSwgMCk7CiAgICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50U2Ny
ZWVuSGVpZ2h0T3ZlcnJpZGUsIDApOwotICAgIHVwZGF0ZUZyYW1lVmlld0ZpeGVkTGF5b3V0KDAs
IDApOworICAgIG1fc3RhdGUtPnNldERvdWJsZShQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50Rm9u
dFNjYWxlRmFjdG9yT3ZlcnJpZGUsIDEpOworICAgIHVwZGF0ZVZpZXdNZXRyaWNzKDAsIDAsIDEp
OwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YWRkU2NyaXB0VG9FdmFsdWF0ZU9uTG9h
ZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc291cmNlLCBTdHJpbmcqIGlkZW50aWZpZXIp
CkBAIC02MzYsNyArNjM5LDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNldERvY3VtZW50
Q29udGVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmkKICAgICBET01QYXRj
aFN1cHBvcnQ6OnBhdGNoRG9jdW1lbnQoZG9jdW1lbnQsIGh0bWwpOwogfQogCi12b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVuU2l6ZU92ZXJyaWRlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgaW50IHdpZHRoLCBjb25zdCBpbnQgaGVpZ2h0KQordm9pZCBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OnNldERldmljZU1ldHJpY3NPdmVycmlkZShFcnJvclN0cmluZyogZXJyb3JTdHJp
bmcsIGNvbnN0IGludCB3aWR0aCwgY29uc3QgaW50IGhlaWdodCwgZG91YmxlIGZvbnRTY2FsZUZh
Y3RvcikKIHsKICAgICBjb25zdCBzdGF0aWMgbG9uZyBtYXhEaW1lbnNpb24gPSAxMDAwMDAwMDsK
IApAQCAtNjQ1LDYgKzY0OCwxNiBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0U2NyZWVu
U2l6ZU92ZXJyaWRlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCisgICAgaWYgKCF3aWR0aCBeICFoZWlnaHQpIHsKKyAgICAgICAgKmVy
cm9yU3RyaW5nID0gIkJvdGggd2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIGVpdGhlciB6ZXJvIG9y
IG5vbi16ZXJvIGF0IG9uY2UiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKGZv
bnRTY2FsZUZhY3RvciA8PSAwKSB7CisgICAgICAgICplcnJvclN0cmluZyA9ICJmb250U2NhbGVG
YWN0b3IgbXVzdCBiZSBwb3NpdGl2ZSI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAv
LyBUaGVzZSB0d28gYWx3YXlzIGZpdCBhbiBpbnQuCiAgICAgaW50IGN1cnJlbnRXaWR0aCA9IHN0
YXRpY19jYXN0PGludD4obV9zdGF0ZS0+Z2V0TG9uZyhQYWdlQWdlbnRTdGF0ZTo6cGFnZUFnZW50
U2NyZWVuV2lkdGhPdmVycmlkZSkpOwogICAgIGludCBjdXJyZW50SGVpZ2h0ID0gc3RhdGljX2Nh
c3Q8aW50PihtX3N0YXRlLT5nZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3JlZW5I
ZWlnaHRPdmVycmlkZSkpOwpAQCAtNjU0LDggKzY2Nyw5IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFn
ZW50OjpzZXRTY3JlZW5TaXplT3ZlcnJpZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBpCiAKICAgICBtX3N0YXRlLT5zZXRMb25nKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRTY3Jl
ZW5XaWR0aE92ZXJyaWRlLCB3aWR0aCk7CiAgICAgbV9zdGF0ZS0+c2V0TG9uZyhQYWdlQWdlbnRT
dGF0ZTo6cGFnZUFnZW50U2NyZWVuSGVpZ2h0T3ZlcnJpZGUsIGhlaWdodCk7CisgICAgbV9zdGF0
ZS0+c2V0RG91YmxlKFBhZ2VBZ2VudFN0YXRlOjpwYWdlQWdlbnRGb250U2NhbGVGYWN0b3JPdmVy
cmlkZSwgZm9udFNjYWxlRmFjdG9yKTsKIAotICAgIHVwZGF0ZUZyYW1lVmlld0ZpeGVkTGF5b3V0
KHdpZHRoLCBoZWlnaHQpOworICAgIHVwZGF0ZVZpZXdNZXRyaWNzKHdpZHRoLCBoZWlnaHQsIGZv
bnRTY2FsZUZhY3Rvcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRTaG93UGFp
bnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykKQEAgLTg3NSw0MCArODg5LDE1IEBAIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmJ1aWxkT2JqZWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OnVwZGF0ZUZyYW1lVmlld0ZpeGVkTGF5b3V0KGludCB3aWR0aCwgaW50
IGhlaWdodCkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50Ojp1cGRhdGVWaWV3TWV0cmljcyhpbnQg
d2lkdGgsIGludCBoZWlnaHQsIGRvdWJsZSBmb250U2NhbGVGYWN0b3IpCiB7Ci0gICAgaWYgKCF3
aWR0aCAmJiAhaGVpZ2h0KQotICAgICAgICBjbGVhckZyYW1lVmlld0ZpeGVkTGF5b3V0KCk7Ci0g
ICAgZWxzZQotICAgICAgICBzZXRGcmFtZVZpZXdGaXhlZExheW91dCh3aWR0aCwgaGVpZ2h0KTsK
KyAgICBtX2NsaWVudC0+ZW11bGF0ZURldmljZU1ldHJpY3Mod2lkdGgsIGhlaWdodCwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGZvbnRTY2FsZUZhY3RvcikpOwogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3JD
aGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoZG9jdW1lbnQpOwogfQogCi12b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6Y2xlYXJGcmFtZVZpZXdGaXhlZExheW91dCgpCi17Ci0gICAgaWYgKG1f
b3JpZ2luYWxGaXhlZExheW91dFNpemUpIHsKLSAgICAgICAgLy8gVHVybmluZyBvZmYgZXhpc3Rp
bmcgb3ZlcnJpZGVzIChuby1vcCBvdGhlcndpc2UpIC0gcmV2ZXJ0IHRoZSBhZmZlY3RlZCBGcmFt
ZVZpZXcgdG8gdGhlIHJlbWVtYmVyZWQgZml4ZWQgbGF5b3V0IHNldHRpbmdzLgotICAgICAgICBt
YWluRnJhbWUoKS0+dmlldygpLT5zZXRGaXhlZExheW91dFNpemUoKm1fb3JpZ2luYWxGaXhlZExh
eW91dFNpemUpOwotICAgICAgICBtX29yaWdpbmFsRml4ZWRMYXlvdXRTaXplLmNsZWFyKCk7Ci0g
ICAgICAgIG1haW5GcmFtZSgpLT52aWV3KCktPnNldFVzZUZpeGVkTGF5b3V0KG1fb3JpZ2luYWxV
c2VGaXhlZExheW91dCk7Ci0gICAgfQotfQotCi12b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0
RnJhbWVWaWV3Rml4ZWRMYXlvdXQoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQotewotICAgIGlmICgh
bV9vcmlnaW5hbEZpeGVkTGF5b3V0U2l6ZSkgewotICAgICAgICAvLyBUdXJuaW5nIG9uIHRoZSBv
dmVycmlkZXMgKG5vbmUgY3VycmVudGx5IGV4aXN0KSAtIHJlbWVtYmVyIGV4aXN0aW5nIGZpeGVk
IGxheW91dCBmb3IgdGhlIGFmZmVjdGVkIEZyYW1lVmlldy4KLSAgICAgICAgbV9vcmlnaW5hbEZp
eGVkTGF5b3V0U2l6ZSA9IGFkb3B0UHRyKG5ldyBJbnRTaXplKG1haW5GcmFtZSgpLT52aWV3KCkt
PmZpeGVkTGF5b3V0U2l6ZSgpKSk7Ci0gICAgICAgIG1fb3JpZ2luYWxVc2VGaXhlZExheW91dCA9
IG1haW5GcmFtZSgpLT52aWV3KCktPnVzZUZpeGVkTGF5b3V0KCk7Ci0gICAgfQotCi0gICAgbWFp
bkZyYW1lKCktPnZpZXcoKS0+c2V0Rml4ZWRMYXlvdXRTaXplKEludFNpemUod2lkdGgsIGhlaWdo
dCkpOwotICAgIG1haW5GcmFtZSgpLT52aWV3KCktPnNldFVzZUZpeGVkTGF5b3V0KHRydWUpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9S
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4
IDFlM2UxMmE5NmM3ZmFlMmZjZjNmYzliODZhM2I5ZWIzYjBlNGY0YTQuLmRlNDE3YmUzMmMyMWE2
N2U2NzRhMTZkMjVkNjk4NTRiZTlmMDExMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNlYXJjaEluUmVzb3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBi
b29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoTWF0Y2g+
ID4mKTsKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1Jl
Z2V4LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpQYWdlOjpTZWFyY2hS
ZXN1bHQ+ID4mKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRTY3JlZW5TaXplT3ZlcnJpZGUoRXJyb3JTdHJpbmcqLCBpbnQgd2lkdGgs
IGludCBoZWlnaHQpOworICAgIHZpcnR1YWwgdm9pZCBzZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUo
RXJyb3JTdHJpbmcqLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGRvdWJsZSBmb250U2NhbGVGYWN0
b3IpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJv
b2wgc2hvdyk7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCkBAIC0xMzMs
OSArMTMzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEluc3BlY3RvclBhZ2VBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZSosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiwgSW5zcGVjdG9yQ2xpZW50Kik7Ci0gICAgdm9pZCB1cGRhdGVGcmFtZVZpZXdG
aXhlZExheW91dChpbnQsIGludCk7Ci0gICAgdm9pZCBzZXRGcmFtZVZpZXdGaXhlZExheW91dChp
bnQsIGludCk7Ci0gICAgdm9pZCBjbGVhckZyYW1lVmlld0ZpeGVkTGF5b3V0KCk7CisgICAgdm9p
ZCB1cGRhdGVWaWV3TWV0cmljcyhpbnQsIGludCwgZG91YmxlKTsKIAogICAgIFBhc3NSZWZQdHI8
VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lPiBidWlsZE9iamVjdEZvckZyYW1lKEZyYW1lKik7CiAg
ICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWVSZXNvdXJjZVRyZWU+IGJ1aWxk
T2JqZWN0Rm9yRnJhbWVUcmVlKEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0YXRlLmNwcAppbmRleCA2NzRmODY2YzNiNTNkNWU5YWY0NDY1MTUwYmNkMmJmYzcz
Yjc4YTQ1Li43ZTAyZWI3YTIxYmVkZjE3NDdmOGY4NzhhNDc4MDdjYjgwOWQ1N2U0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKQEAgLTEwMiw2ICsxMDIs
MTUgQEAgbG9uZyBJbnNwZWN0b3JTdGF0ZTo6Z2V0TG9uZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK2RvdWJsZSBJbnNwZWN0b3JTdGF0ZTo6Z2V0
RG91YmxlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQoreworICAgIEluc3BlY3Rvck9iamVj
dDo6aXRlcmF0b3IgaXQgPSBtX3Byb3BlcnRpZXMtPmZpbmQocHJvcGVydHlOYW1lKTsKKyAgICBk
b3VibGUgdmFsdWUgPSAwOworICAgIGlmIChpdCAhPSBtX3Byb3BlcnRpZXMtPmVuZCgpKQorICAg
ICAgICBpdC0+c2Vjb25kLT5hc051bWJlcigmdmFsdWUpOworICAgIHJldHVybiB2YWx1ZTsKK30K
KwogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IEluc3BlY3RvclN0YXRlOjpnZXRPYmplY3Qo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSW5zcGVjdG9yT2JqZWN0OjppdGVy
YXRvciBpdCA9IG1fcHJvcGVydGllcy0+ZmluZChwcm9wZXJ0eU5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaAppbmRleCBhYjEyYWFlN2Y5ZmZhMDJkZThjNjJh
ODk1MGE5NDAzODU4YzRhNGNhLi5hNDBlMzUwNDE1YzBhMDZiNjdkNGU3MjU3NjI2ZmI0NmJiNTVm
NGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaApAQCAtNTYs
MTEgKzU2LDEzIEBAIHB1YmxpYzoKICAgICBib29sIGdldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eU5hbWUpOwogICAgIFN0cmluZyBnZXRTdHJpbmcoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpOwogICAgIGxvbmcgZ2V0TG9uZyhjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7Cisg
ICAgZG91YmxlIGdldERvdWJsZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAgICAgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGdldE9iamVjdChjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSk7CiAKICAgICB2b2lkIHNldEJvb2xlYW4oY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUs
IGJvb2wgdmFsdWUpIHsgc2V0VmFsdWUocHJvcGVydHlOYW1lLCBJbnNwZWN0b3JCYXNpY1ZhbHVl
OjpjcmVhdGUodmFsdWUpKTsgfQogICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IFN0cmluZyYgcHJv
cGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKSB7IHNldFZhbHVlKHByb3BlcnR5TmFtZSwg
SW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUodmFsdWUpKTsgfQogICAgIHZvaWQgc2V0TG9uZyhjb25z
dCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgbG9uZyB2YWx1ZSkgeyBzZXRWYWx1ZShwcm9wZXJ0eU5h
bWUsIEluc3BlY3RvckJhc2ljVmFsdWU6OmNyZWF0ZSgoZG91YmxlKXZhbHVlKSk7IH0KKyAgICB2
b2lkIHNldERvdWJsZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgZG91YmxlIHZhbHVlKSB7
IHNldFZhbHVlKHByb3BlcnR5TmFtZSwgSW5zcGVjdG9yQmFzaWNWYWx1ZTo6Y3JlYXRlKHZhbHVl
KSk7IH0KICAgICB2b2lkIHNldE9iamVjdChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgUGFz
c1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHZhbHVlKSB7IHNldFZhbHVlKHByb3BlcnR5TmFtZSwg
dmFsdWUpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggYmNlZTAxZDU3ZTNkZjVkYTk2M2I0ZDdl
Y2NhMTM4NWEzZjFmYzhjNy4uZTBkMzAxZjZiYmMxNDNhNmIwMTliODk4NGNkMWI4YTJkOWQwZjYy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHls
ZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5
bGVNb2RlbC5qcwpAQCAtNDAsNiArNDAsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCA9
IGZ1bmN0aW9uKCkKICAgICBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJp
bmRpbmcodGhpcyk7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIo
bmV3IFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyKHRoaXMpKTsKICAgICBDU1NBZ2VudC5lbmFi
bGUoKTsKKyAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLmRldmljZU1ldHJpY3MuZ2V0KCkp
CisgICAgICAgIHRoaXMuX2RldmljZU1ldHJpY3NTZXR0aW5nQ2hhbmdlZCgpOworICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5kZXZpY2VNZXRyaWNzLmFkZENoYW5nZUxpc3RlbmVyKHRoaXMuX2Rl
dmljZU1ldHJpY3NTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLnBhcnNlUnVsZUFycmF5UGF5bG9hZCA9IGZ1bmN0aW9uKHJ1bGVBcnJheSkKQEAg
LTI5OCw2ICszMDEsMjUgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0g
ewogICAgIF91bmRvUmVkb0NvbXBsZXRlZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhp
cy5fcGVuZGluZ0NvbW1hbmRzTWFqb3JTdGF0ZS5wb3AoKTsKKyAgICB9LAorCisgICAgX2Rldmlj
ZU1ldHJpY3NTZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHdp
ZHRoID0gMDsKKyAgICAgICAgdmFyIGhlaWdodCA9IDA7CisgICAgICAgIHZhciBmb250U2NhbGVG
YWN0b3IgPSAxOworCisgICAgICAgIHZhciBtZXRyaWNzT3ZlcnJpZGUgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MuZGV2aWNlTWV0cmljcy5nZXQoKTsKKyAgICAgICAgaWYgKG1ldHJpY3NPdmVycmlk
ZSkgeworICAgICAgICAgICAgdmFyIHNwbGl0TWV0cmljcyA9IG1ldHJpY3NPdmVycmlkZS5zcGxp
dCgieCIpOworICAgICAgICAgICAgaWYgKHNwbGl0TWV0cmljcy5sZW5ndGggPT09IDMpIHsKKyAg
ICAgICAgICAgICAgICB3aWR0aCA9IHBhcnNlSW50KHNwbGl0TWV0cmljc1swXSwgMTApOworICAg
ICAgICAgICAgICAgIGhlaWdodCA9IHBhcnNlSW50KHNwbGl0TWV0cmljc1sxXSwgMTApOworICAg
ICAgICAgICAgICAgIGZvbnRTY2FsZUZhY3RvciA9IHBhcnNlRmxvYXQoc3BsaXRNZXRyaWNzWzJd
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFBhZ2VBZ2VudC5zZXREZXZp
Y2VNZXRyaWNzT3ZlcnJpZGUod2lkdGgsIGhlaWdodCwgZm9udFNjYWxlRmFjdG9yKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpz
CmluZGV4IDI0MDJhN2I5ZWQwZmNlMWRkZGQ4Y2Q5ZGMwM2M2Zjc2YTBhYmJiNWMuLjIwMTY5MzM0
ZmY3N2M4ZGNhMmFmMjI0OThjYWJhNDllYTlkMTgxNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtNDQsNyArNDQsOCBAQCB2YXIgUHJl
ZmVyZW5jZXMgPSB7CiAgICAgZXhwb3NlV29ya2Vyc0luc3BlY3Rpb246IGZhbHNlLAogICAgIGFw
cGxpY2F0aW9uVGl0bGU6ICJXZWIgSW5zcGVjdG9yIC0gJXMiLAogICAgIHNob3dIZWFwU25hcHNo
b3RPYmplY3RzSGlkZGVuUHJvcGVydGllczogZmFsc2UsCi0gICAgc2hvd0RvY2tUb1JpZ2h0OiBm
YWxzZQorICAgIHNob3dEb2NrVG9SaWdodDogZmFsc2UsCisgICAgZXhwb3NlRGV2aWNlTWV0cmlj
c0VtdWxhdGlvbjogZmFsc2UKIH0KIAogdmFyIENhcGFiaWxpdGllcyA9IHsKQEAgLTg2LDYgKzg3
LDcgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQogICAgIHRoaXMuY2FjaGVE
aXNhYmxlZCA9IHRoaXMuY3JlYXRlU2V0dGluZygiY2FjaGVEaXNhYmxlZCIsIGZhbHNlKTsKICAg
ICB0aGlzLm92ZXJyaWRlVXNlckFnZW50ID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJvdmVycmlkZVVz
ZXJBZ2VudCIsICIiKTsKICAgICB0aGlzLnVzZXJBZ2VudCA9IHRoaXMuY3JlYXRlU2V0dGluZygi
dXNlckFnZW50IiwgIiIpOworICAgIHRoaXMuZGV2aWNlTWV0cmljcyA9IHRoaXMuY3JlYXRlU2V0
dGluZygiZGV2aWNlTWV0cmljcyIsICIiKTsKICAgICB0aGlzLnNob3dTY3JpcHRGb2xkZXJzID0g
dGhpcy5jcmVhdGVTZXR0aW5nKCJzaG93U2NyaXB0Rm9sZGVycyIsIHRydWUpOwogICAgIHRoaXMu
ZG9ja1RvUmlnaHQgPSB0aGlzLmNyZWF0ZVNldHRpbmcoImRvY2tUb1JpZ2h0IiwgZmFsc2UpOwog
ICAgIHRoaXMuZW11bGF0ZVRvdWNoRXZlbnRzID0gdGhpcy5jcmVhdGVTZXR0aW5nKCJlbXVsYXRl
VG91Y2hFdmVudHMiLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NldHRpbmdzU2NyZWVuLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TZXR0aW5nc1NjcmVlbi5qcwppbmRleCBmOTJmYjFlOWJkNmJlMTFjNWI4M2Fm
MzY0ZDI3NjFkZWI5ZDEzNWNlLi4zNTE2YTAwMGQ5Yjk4MWZlYmYxYzgxM2U0ZDJjNDQ4NDAwYjRj
MTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRp
bmdzU2NyZWVuLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3NTY3JlZW4uanMKQEAgLTcyLDcgKzcyLDkgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2Ny
ZWVuID0gZnVuY3Rpb24oKQogICAgICAgICBdLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudGV4dEVk
aXRvckluZGVudCkpOwogCiAgICAgcCA9IHRoaXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJVc2VyIEFnZW50IiksIHRydWUpOwotICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5f
Y3JlYXRlVXNlckFjdGlvbkNvbnRyb2woKSk7CisgICAgcC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVh
dGVVc2VyQWdlbnRDb250cm9sKCkpOworICAgIGlmIChQcmVmZXJlbmNlcy5leHBvc2VEZXZpY2VN
ZXRyaWNzRW11bGF0aW9uKQorICAgICAgICBwLmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZURldmlj
ZU1ldHJpY3NDb250cm9sKCkpOwogICAgIHAuYXBwZW5kQ2hpbGQodGhpcy5fY3JlYXRlQ2hlY2ti
b3hTZXR0aW5nKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW11bGF0ZSB0b3VjaCBldmVudHMiKSwg
V2ViSW5zcGVjdG9yLnNldHRpbmdzLmVtdWxhdGVUb3VjaEV2ZW50cykpOwogCiAgICAgcCA9IHRo
aXMuX2FwcGVuZFNlY3Rpb24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY3JpcHRzIiksIHRydWUp
OwpAQCAtMTAxLDcgKzEwMyw3IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbiA9IGZ1bmN0
aW9uKCkKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlcmltZW50cy5sZW5ndGg7ICsr
aSkKICAgICAgICAgICAgIGV4cGVyaW1lbnRzU2VjdGlvbi5hcHBlbmRDaGlsZCh0aGlzLl9jcmVh
dGVFeHBlcmltZW50Q2hlY2tib3goZXhwZXJpbWVudHNbaV0pKTsKICAgICB9Ci0gICAgCisKICAg
ICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwogICAgIHRhYmxl
LmNsYXNzTmFtZSA9ICJoZWxwLXRhYmxlIjsKICAgICB2YXIgdHIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJ0ciIpOwpAQCAtMTExLDYgKzExMywxMDYgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdz
U2NyZWVuID0gZnVuY3Rpb24oKQogICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGFibGUpOwogfQogCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtudW1iZXJ9IHdp
ZHRoCisgKiBAcGFyYW0ge251bWJlcn0gaGVpZ2h0CisgKiBAcGFyYW0ge251bWJlcn0gZm9udFNj
YWxlRmFjdG9yCisgKi8KK1dlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5EZXZpY2VNZXRyaWNz
ID0gZnVuY3Rpb24od2lkdGgsIGhlaWdodCwgZm9udFNjYWxlRmFjdG9yKQoreworICAgIHRoaXMu
d2lkdGggPSB3aWR0aDsKKyAgICB0aGlzLmhlaWdodCA9IGhlaWdodDsKKyAgICB0aGlzLmZvbnRT
Y2FsZUZhY3RvciA9IGZvbnRTY2FsZUZhY3RvcjsKK30KKworLyoqCisgKiBAcmV0dXJuIHtXZWJJ
bnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uRGV2aWNlTWV0cmljc30KKyAqLworV2ViSW5zcGVjdG9y
LlNldHRpbmdzU2NyZWVuLkRldmljZU1ldHJpY3MucGFyc2VGcm9tU2V0dGluZ3MgPSBmdW5jdGlv
bih2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgdmFyIHNwbGl0TWV0cmljcyA9
IHZhbHVlLnNwbGl0KCJ4Iik7CisgICAgICAgIGlmIChzcGxpdE1ldHJpY3MubGVuZ3RoID09PSAz
KQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uRGV2
aWNlTWV0cmljcyhwYXJzZUludChzcGxpdE1ldHJpY3NbMF0sIDEwKSwgcGFyc2VJbnQoc3BsaXRN
ZXRyaWNzWzFdLCAxMCksIHBhcnNlRmxvYXQoc3BsaXRNZXRyaWNzWzJdKSk7CisgICAgfQorICAg
IHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmljZU1ldHJpY3MoMCwg
MCwgMSk7Cit9CisKKy8qKgorICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVl
bi5EZXZpY2VNZXRyaWNzfQorICovCitXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uRGV2aWNl
TWV0cmljcy5wYXJzZUZyb21Vc2VySW5wdXQgPSBmdW5jdGlvbih3aWR0aFN0cmluZywgaGVpZ2h0
U3RyaW5nLCBmb250U2NhbGVGYWN0b3JTdHJpbmcpCit7CisgICAgZnVuY3Rpb24gaXNVc2VySW5w
dXRWYWxpZCh2YWx1ZSwgaXNJbnRlZ2VyKQorICAgIHsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gaXNJbnRlZ2VyID8gL15bMF0q
WzEtOV1bXGRdKiQvLnRlc3QodmFsdWUpIDogL15bMF0qKFsxLTldW1xkXSooXC5cZCspP3xcLlxk
KykkLy50ZXN0KHZhbHVlKTsKKyAgICB9CisKKyAgICBpZiAoIXdpZHRoU3RyaW5nIF4gIWhlaWdo
dFN0cmluZykKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICB2YXIgaXNXaWR0aFZhbGlkID0g
aXNVc2VySW5wdXRWYWxpZCh3aWR0aFN0cmluZywgdHJ1ZSk7CisgICAgdmFyIGlzSGVpZ2h0VmFs
aWQgPSBpc1VzZXJJbnB1dFZhbGlkKGhlaWdodFN0cmluZywgdHJ1ZSk7CisgICAgdmFyIGlzRm9u
dFNjYWxlRmFjdG9yVmFsaWQgPSBpc1VzZXJJbnB1dFZhbGlkKGZvbnRTY2FsZUZhY3RvclN0cmlu
ZywgZmFsc2UpOworCisgICAgaWYgKCFpc1dpZHRoVmFsaWQgJiYgIWlzSGVpZ2h0VmFsaWQgJiYg
IWlzRm9udFNjYWxlRmFjdG9yVmFsaWQpCisgICAgICAgIHJldHVybiBudWxsOworCisgICAgdmFy
IHdpZHRoID0gaXNXaWR0aFZhbGlkID8gcGFyc2VJbnQod2lkdGhTdHJpbmcgfHwgIjAiLCAxMCkg
OiAtMTsKKyAgICB2YXIgaGVpZ2h0ID0gaXNIZWlnaHRWYWxpZCA/IHBhcnNlSW50KGhlaWdodFN0
cmluZyB8fCAiMCIsIDEwKSA6IC0xOworICAgIHZhciBmb250U2NhbGVGYWN0b3IgPSBpc0ZvbnRT
Y2FsZUZhY3RvclZhbGlkID8gcGFyc2VGbG9hdChmb250U2NhbGVGYWN0b3JTdHJpbmcpIDogLTE7
CisKKyAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5EZXZpY2VNZXRy
aWNzKHdpZHRoLCBoZWlnaHQsIGZvbnRTY2FsZUZhY3Rvcik7Cit9CisKK1dlYkluc3BlY3Rvci5T
ZXR0aW5nc1NjcmVlbi5EZXZpY2VNZXRyaWNzLnByb3RvdHlwZSA9IHsKKyAgICBpc1ZhbGlkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pc1dpZHRoVmFsaWQoKSAmJiB0
aGlzLmlzSGVpZ2h0VmFsaWQoKSAmJiB0aGlzLmlzRm9udFNjYWxlRmFjdG9yVmFsaWQoKTsKKyAg
ICB9LAorCisgICAgaXNXaWR0aFZhbGlkOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy53aWR0aCA+PSAwOworICAgIH0sCisKKyAgICBpc0hlaWdodFZhbGlkOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5oZWlnaHQgPj0gMDsKKyAgICB9LAorCisg
ICAgaXNGb250U2NhbGVGYWN0b3JWYWxpZDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRoaXMuZm9udFNjYWxlRmFjdG9yID4gMDsKKyAgICB9LAorCisgICAgdG9TZXR0aW5nczog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLmlzVmFsaWQoKSkKKyAgICAgICAg
ICAgIHJldHVybiAiIjsKKworICAgICAgICByZXR1cm4gdGhpcy53aWR0aCAmJiB0aGlzLmhlaWdo
dCA/IHRoaXMud2lkdGggKyAieCIgKyB0aGlzLmhlaWdodCArICJ4IiArIHRoaXMuZm9udFNjYWxl
RmFjdG9yIDogIiI7CisgICAgfSwKKworICAgIHdpZHRoVG9JbnB1dDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNXaWR0aFZhbGlkKCkgJiYgdGhpcy53aWR0aCA/IFN0
cmluZyh0aGlzLndpZHRoKSA6ICIiOworICAgIH0sCisKKyAgICBoZWlnaHRUb0lucHV0OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5pc0hlaWdodFZhbGlkKCkgJiYgdGhp
cy5oZWlnaHQgPyBTdHJpbmcodGhpcy5oZWlnaHQpIDogIiI7CisgICAgfSwKKworICAgIGZvbnRT
Y2FsZUZhY3RvclRvSW5wdXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
LmlzRm9udFNjYWxlRmFjdG9yVmFsaWQoKSAmJiB0aGlzLmZvbnRTY2FsZUZhY3RvciA/IFN0cmlu
Zyh0aGlzLmZvbnRTY2FsZUZhY3RvcikgOiAiIjsKKyAgICB9Cit9CisKIFdlYkluc3BlY3Rvci5T
ZXR0aW5nc1NjcmVlbi5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKQEAgLTI2Miw3ICszNjQsNyBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4u
cHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gcDsKICAgICB9LAogCi0gICAgX2NyZWF0ZVVz
ZXJBY3Rpb25Db250cm9sOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZVVzZXJBZ2VudENvbnRyb2w6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciB1c2VyQWdlbnQgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MudXNlckFnZW50LmdldCgpOwogCkBAIC0yOTYsNiArMzk4LDExIEBAIFdlYkluc3Bl
Y3Rvci5TZXR0aW5nc1NjcmVlbi5wcm90b3R5cGUgPSB7CiAgICAgX2NyZWF0ZVVzZXJBZ2VudFNl
bGVjdFJvd0VsZW1lbnQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciB1c2VyQWdlbnQg
PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudXNlckFnZW50LmdldCgpOworCisgICAgICAgIC8vIFdo
ZXJldmVyIHByZXNlbnQsIHRoZSB0aGlyZCBlbGVtZW50IGxpc3RzIGRldmljZSBtZXRyaWNzIHNl
cGFyYXRlZCBieSAneCc6CisgICAgICAgIC8vIC0gc2NyZWVuIHdpZHRoLAorICAgICAgICAvLyAt
IHNjcmVlbiBoZWlnaHQsCisgICAgICAgIC8vIC0gZm9udCBzY2FsZSBmYWN0b3IuCiAgICAgICAg
IGNvbnN0IHVzZXJBZ2VudHMgPSBbCiAgICAgICAgICAgICBbIkludGVybmV0IEV4cGxvcmVyIDki
LCAiTW96aWxsYS81LjAgKGNvbXBhdGlibGU7IE1TSUUgOS4wOyBXaW5kb3dzIE5UIDYuMTsgVHJp
ZGVudC81LjApIl0sCiAgICAgICAgICAgICBbIkludGVybmV0IEV4cGxvcmVyIDgiLCAiTW96aWxs
YS80LjAgKGNvbXBhdGlibGU7IE1TSUUgOC4wOyBXaW5kb3dzIE5UIDYuMDsgVHJpZGVudC80LjAp
Il0sCkBAIC0zMDYsMTggKzQxMywxOCBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4ucHJv
dG90eXBlID0gewogICAgICAgICAgICAgWyJGaXJlZm94IDQgXHUyMDE0IFdpbmRvd3MiLCAiTW96
aWxsYS81LjAgKFdpbmRvd3MgTlQgNi4xOyBydjoyLjAuMSkgR2Vja28vMjAxMDAxMDEgRmlyZWZv
eC80LjAuMSJdLAogICAgICAgICAgICAgWyJGaXJlZm94IDQgXHUyMDE0IE1hYyIsICJNb3ppbGxh
LzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMC42OyBydjoyLjAuMSkgR2Vja28vMjAx
MDAxMDEgRmlyZWZveC80LjAuMSJdLAogCi0gICAgICAgICAgICBbImlQaG9uZSBcdTIwMTQgaU9T
IDUiLCAiTW96aWxsYS81LjAgKGlQaG9uZTsgQ1BVIGlQaG9uZSBPUyA1XzAgbGlrZSBNYWMgT1Mg
WCkgQXBwbGVXZWJLaXQvNTM0LjQ2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi81LjEgTW9i
aWxlLzlBMzM0IFNhZmFyaS83NTM0LjQ4LjMiXSwKLSAgICAgICAgICAgIFsiaVBob25lIFx1MjAx
NCBpT1MgNCIsICJNb3ppbGxhLzUuMCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfM18yIGxp
a2UgTWFjIE9TIFg7IGVuLXVzKSBBcHBsZVdlYktpdC81MzMuMTcuOSAoS0hUTUwsIGxpa2UgR2Vj
a28pIFZlcnNpb24vNS4wLjIgTW9iaWxlLzhINyBTYWZhcmkvNjUzMy4xOC41Il0sCi0gICAgICAg
ICAgICBbImlQYWQgXHUyMDE0IGlPUyA1IiwgIk1vemlsbGEvNS4wIChpUGFkOyBDUFUgT1MgNV8w
IGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0LzUzNC40NiAoS0hUTUwsIGxpa2UgR2Vja28pIFZl
cnNpb24vNS4xIE1vYmlsZS85QTMzNCBTYWZhcmkvNzUzNC40OC4zIl0sCi0gICAgICAgICAgICBb
ImlQYWQgXHUyMDE0IGlPUyA0IiwgIk1vemlsbGEvNS4wIChpUGFkOyBDUFUgT1MgNF8zXzIgbGlr
ZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy45IChLSFRNTCwgbGlrZSBHZWNr
bykgVmVyc2lvbi81LjAuMiBNb2JpbGUvOEg3IFNhZmFyaS82NTMzLjE4LjUiXSwKKyAgICAgICAg
ICAgIFsiaVBob25lIFx1MjAxNCBpT1MgNSIsICJNb3ppbGxhLzUuMCAoaVBob25lOyBDUFUgaVBo
b25lIE9TIDVfMCBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC81MzQuNDYgKEtIVE1MLCBsaWtl
IEdlY2tvKSBWZXJzaW9uLzUuMSBNb2JpbGUvOUEzMzQgU2FmYXJpLzc1MzQuNDguMyIsICI2NDB4
OTYweDEiXSwKKyAgICAgICAgICAgIFsiaVBob25lIFx1MjAxNCBpT1MgNCIsICJNb3ppbGxhLzUu
MCAoaVBob25lOyBVOyBDUFUgaVBob25lIE9TIDRfM18yIGxpa2UgTWFjIE9TIFg7IGVuLXVzKSBB
cHBsZVdlYktpdC81MzMuMTcuOSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNS4wLjIgTW9i
aWxlLzhINyBTYWZhcmkvNjUzMy4xOC41IiwgIjY0MHg5NjB4MSJdLAorICAgICAgICAgICAgWyJp
UGFkIFx1MjAxNCBpT1MgNSIsICJNb3ppbGxhLzUuMCAoaVBhZDsgQ1BVIE9TIDVfMCBsaWtlIE1h
YyBPUyBYKSBBcHBsZVdlYktpdC81MzQuNDYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzUu
MSBNb2JpbGUvOUEzMzQgU2FmYXJpLzc1MzQuNDguMyIsICIxMDI0eDc2OHgxIl0sCisgICAgICAg
ICAgICBbImlQYWQgXHUyMDE0IGlPUyA0IiwgIk1vemlsbGEvNS4wIChpUGFkOyBDUFUgT1MgNF8z
XzIgbGlrZSBNYWMgT1MgWDsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMy4xNy45IChLSFRNTCwgbGlr
ZSBHZWNrbykgVmVyc2lvbi81LjAuMiBNb2JpbGUvOEg3IFNhZmFyaS82NTMzLjE4LjUiLCAiMTAy
NHg3Njh4MSJdLAogCi0gICAgICAgICAgICBbIkFuZHJvaWQgMi4zIFx1MjAxNCBOZXh1cyBTIiwg
Ik1vemlsbGEvNS4wIChMaW51eDsgVTsgQW5kcm9pZCAyLjMuNjsgZW4tdXM7IE5leHVzIFMgQnVp
bGQvR1JLMzlGKSBBcHBsZVdlYktpdC81MzMuMSAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24v
NC4wIE1vYmlsZSBTYWZhcmkvNTMzLjEiXSwKKyAgICAgICAgICAgIFsiQW5kcm9pZCAyLjMgXHUy
MDE0IE5leHVzIFMiLCAiTW96aWxsYS81LjAgKExpbnV4OyBVOyBBbmRyb2lkIDIuMy42OyBlbi11
czsgTmV4dXMgUyBCdWlsZC9HUkszOUYpIEFwcGxlV2ViS2l0LzUzMy4xIChLSFRNTCwgbGlrZSBH
ZWNrbykgVmVyc2lvbi80LjAgTW9iaWxlIFNhZmFyaS81MzMuMSIsICI0ODB4ODAweDIiXSwKIAot
ICAgICAgICAgICAgWyJCbGFja0JlcnJ5IFx1MjAxNCBQbGF5Qm9vayAxLjAiLCJNb3ppbGxhLzUu
MCAoUGxheUJvb2s7IFU7IFJJTSBUYWJsZXQgT1MgMS4wLjA7IGVuLVVTKSBBcHBsZVdlYktpdC81
MzQuMTErIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi83LjEuMC43IFNhZmFyaS81MzQuMTEr
Il0sCi0gICAgICAgICAgICBbIkJsYWNrQmVycnkgXHUyMDE0IFBsYXlCb29rIDIuMCIsICJNb3pp
bGxhLzUuMCAoUGxheUJvb2s7IFU7IFJJTSBUYWJsZXQgT1MgMi4wLjA7IGVuLVVTKSBBcHBsZVdl
YktpdC81MzUuOCsgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzcuMi4wLjAgU2FmYXJpLzUz
NS44KyJdLAotICAgICAgICAgICAgWyJCbGFja0JlcnJ5IFx1MjAxNCA5OTAwIiwgIk1vemlsbGEv
NS4wIChCbGFja0JlcnJ5OyBVOyBCbGFja0JlcnJ5IDk5MDA7IGVuLVVTKSBBcHBsZVdlYktpdC81
MzQuMTErIChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi83LjAuMC4xODcgTW9iaWxlIFNhZmFy
aS81MzQuMTErIl0sCisgICAgICAgICAgICBbIkJsYWNrQmVycnkgXHUyMDE0IFBsYXlCb29rIDEu
MCIsIk1vemlsbGEvNS4wIChQbGF5Qm9vazsgVTsgUklNIFRhYmxldCBPUyAxLjAuMDsgZW4tVVMp
IEFwcGxlV2ViS2l0LzUzNC4xMSsgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzcuMS4wLjcg
U2FmYXJpLzUzNC4xMSsiLCAiMTAyNHg2MDB4MSJdLAorICAgICAgICAgICAgWyJCbGFja0JlcnJ5
IFx1MjAxNCBQbGF5Qm9vayAyLjAiLCAiTW96aWxsYS81LjAgKFBsYXlCb29rOyBVOyBSSU0gVGFi
bGV0IE9TIDIuMC4wOyBlbi1VUykgQXBwbGVXZWJLaXQvNTM1LjgrIChLSFRNTCwgbGlrZSBHZWNr
bykgVmVyc2lvbi83LjIuMC4wIFNhZmFyaS81MzUuOCsiLCAiMTAyNHg2MDB4MSJdLAorICAgICAg
ICAgICAgWyJCbGFja0JlcnJ5IFx1MjAxNCA5OTAwIiwgIk1vemlsbGEvNS4wIChCbGFja0JlcnJ5
OyBVOyBCbGFja0JlcnJ5IDk5MDA7IGVuLVVTKSBBcHBsZVdlYktpdC81MzQuMTErIChLSFRNTCwg
bGlrZSBHZWNrbykgVmVyc2lvbi83LjAuMC4xODcgTW9iaWxlIFNhZmFyaS81MzQuMTErIiwgIjY0
MHg0ODB4MSJdLAogCi0gICAgICAgICAgICBbIk1lZUdvIFx1MjAxNCBOb2tpYSBOOSIsICJNb3pp
bGxhLzUuMCAoTWVlR287IE5va2lhTjkpIEFwcGxlV2ViS2l0LzUzNC4xMyAoS0hUTUwsIGxpa2Ug
R2Vja28pIE5va2lhQnJvd3Nlci84LjUuMCBNb2JpbGUgU2FmYXJpLzUzNC4xMyJdLAorICAgICAg
ICAgICAgWyJNZWVHbyBcdTIwMTQgTm9raWEgTjkiLCAiTW96aWxsYS81LjAgKE1lZUdvOyBOb2tp
YU45KSBBcHBsZVdlYktpdC81MzQuMTMgKEtIVE1MLCBsaWtlIEdlY2tvKSBOb2tpYUJyb3dzZXIv
OC41LjAgTW9iaWxlIFNhZmFyaS81MzQuMTMiLCAiNDgweDg1NHgxIl0sCiAKICAgICAgICAgICAg
IFtXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk90aGVyLi4uIiksICJPdGhlciJdCiAgICAgICAgIF07
CkBAIC0zMzEsNyArNDM4LDkgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIHNlbGVjdGlvblJlc3RvcmVkID0gZmFsc2U7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdXNlckFnZW50cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAg
dmFyIGFnZW50ID0gdXNlckFnZW50c1tpXTsKLSAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQuYWRk
KG5ldyBPcHRpb24oYWdlbnRbMF0sIGFnZW50WzFdKSk7CisgICAgICAgICAgICB2YXIgb3B0aW9u
ID0gbmV3IE9wdGlvbihhZ2VudFswXSwgYWdlbnRbMV0pOworICAgICAgICAgICAgb3B0aW9uLl9t
ZXRyaWNzID0gYWdlbnRbMl0gPyBhZ2VudFsyXSA6ICIiOworICAgICAgICAgICAgc2VsZWN0RWxl
bWVudC5hZGQob3B0aW9uKTsKICAgICAgICAgICAgIGlmICh1c2VyQWdlbnQgPT09IGFnZW50WzFd
KSB7CiAgICAgICAgICAgICAgICAgc2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gaTsKICAg
ICAgICAgICAgICAgICBzZWxlY3Rpb25SZXN0b3JlZCA9IHRydWU7CkBAIC0zNDUsOSArNDU0LDEy
IEBAIFdlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgc2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gdXNlckFnZW50cy5sZW5ndGggLSAx
OwogICAgICAgICB9CiAKLSAgICAgICAgc2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJj
aGFuZ2UiLCBzZWxlY3Rpb25DaGFuZ2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgc2Vs
ZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCBzZWxlY3Rpb25DaGFuZ2VkLmJp
bmQodGhpcywgdHJ1ZSksIGZhbHNlKTsKIAotICAgICAgICBmdW5jdGlvbiBzZWxlY3Rpb25DaGFu
Z2VkKCkKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGlzVXNlckdl
c3R1cmUKKyAgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIHNlbGVjdGlvbkNoYW5nZWQoaXNV
c2VyR2VzdHVyZSkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHZhbHVlID0gc2VsZWN0RWxl
bWVudC5vcHRpb25zW3NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0udmFsdWU7CiAgICAgICAg
ICAgICBpZiAodmFsdWUgIT09ICJPdGhlciIpIHsKQEAgLTM1OSw2ICs0NzEsMTEgQEAgV2ViSW5z
cGVjdG9yLlNldHRpbmdzU2NyZWVuLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBvdGhl
clVzZXJBZ2VudEVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICBvdGhl
clVzZXJBZ2VudEVsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKGlzVXNlckdlc3R1cmUgJiYgUHJlZmVyZW5jZXMuZXhwb3NlRGV2aWNlTWV0cmljc0VtdWxh
dGlvbikgeworICAgICAgICAgICAgICAgIHZhciBtZXRyaWNzID0gc2VsZWN0RWxlbWVudC5vcHRp
b25zW3NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0uX21ldHJpY3M7CisgICAgICAgICAgICAg
ICAgdGhpcy5fc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlKFdlYkluc3BlY3Rvci5TZXR0aW5nc1Nj
cmVlbi5EZXZpY2VNZXRyaWNzLnBhcnNlRnJvbVNldHRpbmdzKG1ldHJpY3MpLCBmYWxzZSwgdHJ1
ZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBmaWVsZHNldEVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0ZXh0RG91YmxlQ2xpY2tlZC5iaW5kKHRoaXMp
LCBmYWxzZSk7CkBAIC0zODIsNiArNDk5LDEyMSBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3Jl
ZW4ucHJvdG90eXBlID0gewogICAgIF9zaG93UGFpbnRSZWN0c0NoYW5nZWQ6IGZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIFBhZ2VBZ2VudC5zZXRTaG93UGFpbnRSZWN0cyhXZWJJbnNwZWN0b3Iu
c2V0dGluZ3Muc2hvd1BhaW50UmVjdHMuZ2V0KCkpOworICAgIH0sCisKKyAgICBfY3JlYXRlRGV2
aWNlTWV0cmljc0NvbnRyb2w6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGNvbnN0IG1ldHJp
Y3NTZXR0aW5nID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmRldmljZU1ldHJpY3MuZ2V0KCk7Cisg
ICAgICAgIHZhciBtZXRyaWNzID0gV2ViSW5zcGVjdG9yLlNldHRpbmdzU2NyZWVuLkRldmljZU1l
dHJpY3MucGFyc2VGcm9tU2V0dGluZ3MobWV0cmljc1NldHRpbmcpOworCisgICAgICAgIGNvbnN0
IHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIik7CisgICAgICAgIGNvbnN0IGxhYmVsRWxl
bWVudCA9IHAuY3JlYXRlQ2hpbGQoImxhYmVsIik7CisgICAgICAgIGNvbnN0IGNoZWNrYm94RWxl
bWVudCA9IGxhYmVsRWxlbWVudC5jcmVhdGVDaGlsZCgiaW5wdXQiKTsKKyAgICAgICAgY2hlY2ti
b3hFbGVtZW50LmlkID0gIm1ldHJpY3Mtb3ZlcnJpZGUtY2hlY2tib3giOworICAgICAgICBjaGVj
a2JveEVsZW1lbnQudHlwZSA9ICJjaGVja2JveCI7CisgICAgICAgIGNoZWNrYm94RWxlbWVudC5j
aGVja2VkID0gIW1ldHJpY3MgfHwgKG1ldHJpY3Mud2lkdGggJiYgbWV0cmljcy5oZWlnaHQgJiYg
bWV0cmljcy5mb250U2NhbGVGYWN0b3IpOworICAgICAgICBjaGVja2JveEVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vbk1ldHJpY3NDaGVja2JveENsaWNrZWQuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLl9tZXRyaWNzQ2hlY2tib3hFbGVtZW50ID0gY2hl
Y2tib3hFbGVtZW50OworICAgICAgICBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdmVycmlkZSBEZXZpY2UgTWV0
cmljcyIpKSk7CisKKyAgICAgICAgY29uc3QgbWV0cmljc1NlY3Rpb25FbGVtZW50ID0gdGhpcy5f
Y3JlYXRlRGV2aWNlTWV0cmljc0VsZW1lbnQobWV0cmljcyk7CisgICAgICAgIHAuYXBwZW5kQ2hp
bGQobWV0cmljc1NlY3Rpb25FbGVtZW50KTsKKyAgICAgICAgdGhpcy5fbWV0cmljc1NlY3Rpb25F
bGVtZW50ID0gbWV0cmljc1NlY3Rpb25FbGVtZW50OworCisgICAgICAgIHRoaXMuX3NldERldmlj
ZU1ldHJpY3NPdmVycmlkZShtZXRyaWNzLCBmYWxzZSwgdHJ1ZSk7CisKKyAgICAgICAgcmV0dXJu
IHA7CisgICAgfSwKKworICAgIF9vbk1ldHJpY3NDaGVja2JveENsaWNrZWQ6IGZ1bmN0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9tZXRyaWNzQ2hlY2tib3hFbGVtZW50LmNoZWNrZWQp
IHsKKyAgICAgICAgICAgIHRoaXMuX21ldHJpY3NTZWN0aW9uRWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHZhciBtZXRyaWNzID0gV2ViSW5zcGVjdG9yLlNl
dHRpbmdzU2NyZWVuLkRldmljZU1ldHJpY3MucGFyc2VGcm9tVXNlcklucHV0KHRoaXMuX3dpZHRo
T3ZlcnJpZGVFbGVtZW50LnZhbHVlLCB0aGlzLl9oZWlnaHRPdmVycmlkZUVsZW1lbnQudmFsdWUs
IHRoaXMuX2ZvbnRTY2FsZUZhY3Rvck92ZXJyaWRlRWxlbWVudC52YWx1ZSk7CisgICAgICAgICAg
ICBpZiAobWV0cmljcyAmJiBtZXRyaWNzLmlzVmFsaWQgJiYgbWV0cmljcy53aWR0aCAmJiBtZXRy
aWNzLmhlaWdodCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXREZXZpY2VNZXRyaWNzT3ZlcnJp
ZGUobWV0cmljcywgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghdGhpcy5fd2lkdGhP
dmVycmlkZUVsZW1lbnQudmFsdWUpCisgICAgICAgICAgICAgICAgdGhpcy5fd2lkdGhPdmVycmlk
ZUVsZW1lbnQuZm9jdXMoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX21l
dHJpY3NTZWN0aW9uRWxlbWVudC5hZGRTdHlsZUNsYXNzKCJoaWRkZW4iKTsKKyAgICAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZGV2aWNlTWV0cmljcy5nZXQoKSkKKyAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZGV2aWNlTWV0cmljcy5zZXQoIiIpOworICAg
ICAgICB9CisgICAgfSwKKworICAgIF9hcHBseURldmljZU1ldHJpY3NVc2VySW5wdXQ6IGZ1bmN0
aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX3NldERldmljZU1ldHJpY3NPdmVycmlkZShXZWJJ
bnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uRGV2aWNlTWV0cmljcy5wYXJzZUZyb21Vc2VySW5wdXQo
dGhpcy5fd2lkdGhPdmVycmlkZUVsZW1lbnQudmFsdWUudHJpbSgpLCB0aGlzLl9oZWlnaHRPdmVy
cmlkZUVsZW1lbnQudmFsdWUudHJpbSgpLCB0aGlzLl9mb250U2NhbGVGYWN0b3JPdmVycmlkZUVs
ZW1lbnQudmFsdWUudHJpbSgpKSwgdHJ1ZSwgZmFsc2UpOworICAgIH0sCisKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0gez9XZWJJbnNwZWN0b3IuU2V0dGluZ3NTY3JlZW4uRGV2aWNlTWV0cmljc30g
bWV0cmljcworICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gdXNlcklucHV0TW9kaWZpZWQKKyAgICAg
Ki8KKyAgICBfc2V0RGV2aWNlTWV0cmljc092ZXJyaWRlOiBmdW5jdGlvbihtZXRyaWNzLCB1c2Vy
SW5wdXRNb2RpZmllZCwgdXBkYXRlQ2hlY2tib3gpCisgICAgeworICAgICAgICBjb25zdCBpbnZh
bGlkQmFja2dyb3VuZFZhbHVlID0gInJnYigyMjAsIDEzMCwgMTMwKSI7CisKKyAgICAgICAgdGhp
cy5fd2lkdGhPdmVycmlkZUVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZCA9IG1ldHJpY3MgJiYgbWV0
cmljcy5pc1dpZHRoVmFsaWQoKSA/ICIiIDogaW52YWxpZEJhY2tncm91bmRWYWx1ZTsKKyAgICAg
ICAgdGhpcy5faGVpZ2h0T3ZlcnJpZGVFbGVtZW50LnN0eWxlLmJhY2tncm91bmQgPSBtZXRyaWNz
ICYmIG1ldHJpY3MuaXNIZWlnaHRWYWxpZCgpID8gIiIgOiBpbnZhbGlkQmFja2dyb3VuZFZhbHVl
OworICAgICAgICB0aGlzLl9mb250U2NhbGVGYWN0b3JPdmVycmlkZUVsZW1lbnQuc3R5bGUuYmFj
a2dyb3VuZCA9IG1ldHJpY3MgJiYgbWV0cmljcy5pc0ZvbnRTY2FsZUZhY3RvclZhbGlkKCkgPyAi
IiA6IGludmFsaWRCYWNrZ3JvdW5kVmFsdWU7CisKKyAgICAgICAgaWYgKCFtZXRyaWNzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICghdXNlcklucHV0TW9kaWZpZWQpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3dpZHRoT3ZlcnJpZGVFbGVtZW50LnZhbHVlID0gbWV0cmljcy53aWR0
aFRvSW5wdXQoKTsKKyAgICAgICAgICAgIHRoaXMuX2hlaWdodE92ZXJyaWRlRWxlbWVudC52YWx1
ZSA9IG1ldHJpY3MuaGVpZ2h0VG9JbnB1dCgpOworICAgICAgICAgICAgdGhpcy5fZm9udFNjYWxl
RmFjdG9yT3ZlcnJpZGVFbGVtZW50LnZhbHVlID0gbWV0cmljcy5mb250U2NhbGVGYWN0b3JUb0lu
cHV0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWV0cmljcy5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgICAgIHZhciB2YWx1ZSA9IG1ldHJpY3MudG9TZXR0aW5ncygpOworICAgICAgICAgICAg
aWYgKHZhbHVlICE9PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZGV2aWNlTWV0cmljcy5nZXQoKSkK
KyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuZGV2aWNlTWV0cmljcy5zZXQo
dmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX21ldHJpY3NDaGVja2JveEVs
ZW1lbnQgJiYgdXBkYXRlQ2hlY2tib3gpIHsKKyAgICAgICAgICAgIHRoaXMuX21ldHJpY3NDaGVj
a2JveEVsZW1lbnQuY2hlY2tlZCA9ICEhbWV0cmljcy50b1NldHRpbmdzKCk7CisgICAgICAgICAg
ICB0aGlzLl9vbk1ldHJpY3NDaGVja2JveENsaWNrZWQoKTsKKyAgICAgICAgfQorICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5TZXR0aW5nc1NjcmVlbi5EZXZp
Y2VNZXRyaWNzfSBtZXRyaWNzCisgICAgICovCisgICAgX2NyZWF0ZURldmljZU1ldHJpY3NFbGVt
ZW50OiBmdW5jdGlvbihtZXRyaWNzKQorICAgIHsKKyAgICAgICAgdmFyIGZpZWxkc2V0RWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZpZWxkc2V0Iik7CisgICAgICAgIGZpZWxkc2V0
RWxlbWVudC5pZCA9ICJtZXRyaWNzLW92ZXJyaWRlLXNlY3Rpb24iOworCisgICAgICAgIGZ1bmN0
aW9uIGNyZWF0ZUlucHV0KHBhcmVudEVsZW1lbnQsIGlkLCBkZWZhdWx0VGV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJp
bnB1dCIpOworICAgICAgICAgICAgZWxlbWVudC5pZCA9IGlkOworICAgICAgICAgICAgZWxlbWVu
dC5tYXhMZW5ndGggPSA2OworICAgICAgICAgICAgZWxlbWVudC5zdHlsZS53aWR0aCA9ICI0OHB4
IjsKKyAgICAgICAgICAgIGVsZW1lbnQudmFsdWUgPSBkZWZhdWx0VGV4dDsKKyAgICAgICAgICAg
IGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2FwcGx5RGV2aWNlTWV0cmlj
c1VzZXJJbnB1dC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dDsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB0YWJsZUVsZW1lbnQgPSBmaWVsZHNldEVsZW1l
bnQuY3JlYXRlQ2hpbGQoInRhYmxlIik7CisKKyAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSB0YWJs
ZUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7CisgICAgICAgIHZhciBjZWxsRWxlbWVudCA9IHJv
d0VsZW1lbnQuY3JlYXRlQ2hpbGQoInRkIik7CisgICAgICAgIGNlbGxFbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJTY3JlZW4gcmVzb2x1dGlvbjoiKSk7CisgICAg
ICAgIGNlbGxFbGVtZW50ID0gcm93RWxlbWVudC5jcmVhdGVDaGlsZCgidGQiKTsKKyAgICAgICAg
dGhpcy5fd2lkdGhPdmVycmlkZUVsZW1lbnQgPSBjcmVhdGVJbnB1dC5jYWxsKHRoaXMsIGNlbGxF
bGVtZW50LCAibWV0cmljcy1vdmVycmlkZS13aWR0aCIsIFN0cmluZyhtZXRyaWNzLndpZHRoIHx8
IHNjcmVlbi53aWR0aCkpOworICAgICAgICBjZWxsRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgiIFx1MDBENyAiKSk7CisgICAgICAgIHRoaXMuX2hlaWdodE92ZXJy
aWRlRWxlbWVudCA9IGNyZWF0ZUlucHV0LmNhbGwodGhpcywgY2VsbEVsZW1lbnQsICJtZXRyaWNz
LW92ZXJyaWRlLWhlaWdodCIsIFN0cmluZyhtZXRyaWNzLmhlaWdodCB8fCBzY3JlZW4uaGVpZ2h0
KSk7CisKKyAgICAgICAgcm93RWxlbWVudCA9IHRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgidHIi
KTsKKyAgICAgICAgY2VsbEVsZW1lbnQgPSByb3dFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ZCIpOwor
ICAgICAgICBjZWxsRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvbnQgc2NhbGUgZmFjdG9yOiIpKSk7CisgICAgICAgIGNl
bGxFbGVtZW50ID0gcm93RWxlbWVudC5jcmVhdGVDaGlsZCgidGQiKTsKKyAgICAgICAgdGhpcy5f
Zm9udFNjYWxlRmFjdG9yT3ZlcnJpZGVFbGVtZW50ID0gY3JlYXRlSW5wdXQuY2FsbCh0aGlzLCBj
ZWxsRWxlbWVudCwgIm1ldHJpY3Mtb3ZlcnJpZGUtZm9udC1zY2FsZSIsIFN0cmluZyhtZXRyaWNz
LmZvbnRTY2FsZUZhY3RvciB8fCAxKSk7CisgICAgICAgIHJldHVybiBmaWVsZHNldEVsZW1lbnQ7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2hlbHBTY3JlZW4uY3NzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9o
ZWxwU2NyZWVuLmNzcwppbmRleCA3ODE2Njk2ODA4Yjk4NTczZDgyNDdmNWIzYmU2ZmQ5NTQ0OGNm
MDg5Li5lYzBjYmVmNDRmNDRjNTk5MTI3ZGY1NWEyMTE1M2ZjZTU2YWY2YTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2hlbHBTY3JlZW4uY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaGVscFNjcmVlbi5jc3MKQEAgLTEy
MSwxMyArMTIxLDEzIEBAIGJvZHk6bm90KC5wbGF0Zm9ybS1tYWMpIC5oZWxwLWNsb3NlLWJ1dHRv
biB7CiAgICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0bzsKIH0KIAotLmhlbHAtdGFibGUgdGgg
eworLmhlbHAtdGFibGUgPiB0ciA+IHRoIHsKICAgICBwYWRkaW5nLXRvcDogNnB4OwogICAgIHRl
eHQtYWxpZ246IGxlZnQ7CiAgICAgY29sb3I6IHllbGxvdzsKIH0KIAotLmhlbHAtdGFibGUgdGQg
eworLmhlbHAtdGFibGUgPiB0ciA+IHRkIHsKICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAg
IHZlcnRpY2FsLWFsaWduOiB0b3A7CiAgICAgd2lkdGg6IDUwJTsKQEAgLTE5Niw2ICsxOTYsMTAg
QEAgYm9keS5wbGF0Zm9ybS1tYWMgLmhlbHAta2V5IHsKICAgICBjb2xvcjogcmdiKDE1MCwgMTUw
LCAxNTApOwogfQogCisjcmVzb2x1dGlvbi1vdmVycmlkZS1zZWN0aW9uIHsKKyAgICBtYXJnaW4t
bGVmdDogMTNweDsKK30KKwogLmhlbHAtY29udGVudCBpbnB1dFt0eXBlPWNoZWNrYm94XSB7CiAg
ICAgaGVpZ2h0OiAxM3B4OwogICAgIHdpZHRoOiAxM3B4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCmluZGV4IDYyOGE5N2MyOGMyYWQ3YWYw
OGZlNDQ2OTYxOWU5MThkYjQ0ODRjMWIuLjI2MzU2ZWRlZDI3N2FjNzJmMjg1YzJjM2E3Mjc0MWEz
ZmQ1YTdjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5jc3MKQEAgLTM5LDYgKzM5LDEwIEBAIGlucHV0W3R5cGU9InNlYXJjaCJdOmZvY3Vz
LCBpbnB1dFt0eXBlPSJ0ZXh0Il06Zm9jdXMgewogICAgIGJvdHRvbTogMDsKIH0KIAorLmhpZGRl
biB7CisgICAgZGlzcGxheTogbm9uZTsKK30KKwogI3Rvb2xiYXIgewogICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKICAgICB0b3A6IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGQ1YzE3NmQyMWUy
YjYxNmE1MDFlZTE0NDlkYjJlMDU2YjJiOGRhODUuLmIxOTM2MDU4Nzg5M2UxNTI3ZWY1NmEyNTkx
ZDA2Y2MzZWE1NDZiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03OTUsMTMgKzc5NSwzOSBA
QCB2b2lkIEZyYW1lOjpjcmVhdGVWaWV3KGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwKIAog
ICAgIFJlZlB0cjxGcmFtZVZpZXc+IGZyYW1lVmlldzsKICAgICBpZiAoaXNNYWluRnJhbWUpIHsK
LSAgICAgICAgZnJhbWVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUodGhpcywgdmlld3BvcnRTaXpl
KTsKKyAgICAgICAgbG9uZyBvdmVycmlkZVdpZHRoID0gMDsKKyAgICAgICAgbG9uZyBvdmVycmlk
ZUhlaWdodCA9IDA7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YXBwbHlTY3Jl
ZW5XaWR0aE92ZXJyaWRlKHRoaXMsICZvdmVycmlkZVdpZHRoKTsKKyAgICAgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjphcHBseVNjcmVlbkhlaWdodE92ZXJyaWRlKHRoaXMsICZvdmVycmlk
ZUhlaWdodCk7CisgICAgICAgIGJvb2wgaXNTaXplRW11bGF0ZWQgPSBvdmVycmlkZVdpZHRoICYm
IG92ZXJyaWRlSGVpZ2h0OworCisgICAgICAgIEludFNpemUgZWZmZWN0aXZlU2l6ZTsKKyAgICAg
ICAgaWYgKGlzU2l6ZUVtdWxhdGVkKSB7CisgICAgICAgICAgICBlZmZlY3RpdmVTaXplID0gSW50
U2l6ZShvdmVycmlkZVdpZHRoLCBvdmVycmlkZUhlaWdodCk7CisgICAgICAgICAgICBob3Jpem9u
dGFsU2Nyb2xsYmFyTW9kZSA9IFNjcm9sbGJhckFsd2F5c09uOworICAgICAgICAgICAgdmVydGlj
YWxTY3JvbGxiYXJNb2RlID0gU2Nyb2xsYmFyQWx3YXlzT247CisgICAgICAgICAgICBob3Jpem9u
dGFsTG9jayA9IHRydWU7CisgICAgICAgICAgICB2ZXJ0aWNhbExvY2sgPSB0cnVlOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGVmZmVjdGl2ZVNpemUgPSB2aWV3cG9ydFNpemU7CisKKyAg
ICAgICAgZnJhbWVWaWV3ID0gRnJhbWVWaWV3OjpjcmVhdGUodGhpcywgZWZmZWN0aXZlU2l6ZSk7
CiAgICAgICAgIGZyYW1lVmlldy0+c2V0Rml4ZWRMYXlvdXRTaXplKGZpeGVkTGF5b3V0U2l6ZSk7
CiAgICAgICAgIGZyYW1lVmlldy0+c2V0VXNlRml4ZWRMYXlvdXQodXNlRml4ZWRMYXlvdXQpOwot
ICAgIH0gZWxzZQorICAgICAgICBpZiAoaXNTaXplRW11bGF0ZWQpIHsKKyAgICAgICAgICAgIGZy
YW1lVmlldy0+c2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyQWx3YXlzT24sIFNjcm9sbGJhckFs
d2F5c09uLCB0cnVlLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChTY3JvbGxiYXIqIHZlcnRpY2Fs
QmFyID0gZnJhbWVWaWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpKQorICAgICAgICAgICAgICAgIG92
ZXJyaWRlV2lkdGggKz0gIXZlcnRpY2FsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IHZlcnRp
Y2FsQmFyLT53aWR0aCgpIDogMDsKKyAgICAgICAgICAgIGlmIChTY3JvbGxiYXIqIGhvcml6b250
YWxCYXIgPSBmcmFtZVZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgICAg
ICBvdmVycmlkZUhlaWdodCArPSAhaG9yaXpvbnRhbEJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkg
PyBob3Jpem9udGFsQmFyLT5oZWlnaHQoKSA6IDA7CisKKyAgICAgICAgICAgIC8vIFdlIG5lZWQg
dG8gbWVhc3VyZSB0aGUgc2Nyb2xsYmFyIHRoaWNrbmVzcyBmaXJzdCwgc28gd2UgY291bGQgbm90
IGNyZWF0ZSB0aGUgZnJhbWUgdmlldyB3aXRoIHRoZSBjb3JyZWN0IHNpemUgdXAtZnJvbnQuCisg
ICAgICAgICAgICBmcmFtZVZpZXctPnJlc2l6ZShvdmVycmlkZVdpZHRoLCBvdmVycmlkZUhlaWdo
dCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgewogICAgICAgICBmcmFtZVZpZXcgPSBGcmFtZVZp
ZXc6OmNyZWF0ZSh0aGlzKTsKLQotICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsYmFyTW9kZXMoaG9y
aXpvbnRhbFNjcm9sbGJhck1vZGUsIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgaG9yaXpvbnRhbExv
Y2ssIHZlcnRpY2FsTG9jayk7CisgICAgICAgIGZyYW1lVmlldy0+c2V0U2Nyb2xsYmFyTW9kZXMo
aG9yaXpvbnRhbFNjcm9sbGJhck1vZGUsIHZlcnRpY2FsU2Nyb2xsYmFyTW9kZSwgaG9yaXpvbnRh
bExvY2ssIHZlcnRpY2FsTG9jayk7CisgICAgfQogCiAgICAgc2V0VmlldyhmcmFtZVZpZXcpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwu
Y3BwCmluZGV4IDMxN2I1NzY5MzRhOWM4ZWRiNTdjNTJlMGY2MWI2OGNiMzJhNTYzMTEuLjhkNGM4
YzMxZDA5Yjk2OGMzYWVkNjdjZWRlYzYwN2U4ODAwYTdhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudEltcGwuY3BwCkBAIC0zMyw2ICszMyw3
IEBACiAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCkBAIC0xMjgsNiArMTI5
LDE1IEBAIHZvaWQgSW5zcGVjdG9yQ2xpZW50SW1wbDo6Y2xlYXJCcm93c2VyQ29va2llcygpCiAg
ICAgICAgIGFnZW50LT5jbGVhckJyb3dzZXJDb29raWVzKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9y
Q2xpZW50SW1wbDo6ZW11bGF0ZURldmljZU1ldHJpY3MoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBm
bG9hdCBmb250U2NhbGVGYWN0b3IpCit7CisgICAgRnJhbWUqIGZyYW1lID0gbV9pbnNwZWN0ZWRX
ZWJWaWV3LT5wYWdlKCkgPyBtX2luc3BlY3RlZFdlYlZpZXctPnBhZ2UoKS0+bWFpbkZyYW1lKCkg
OiAwOworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT52aWV3KCkpCisgICAgICAgIHJldHVybjsK
KworICAgIG1faW5zcGVjdGVkV2ViVmlldy0+ZW11bGF0ZURldmljZU1ldHJpY3Mod2lkdGgsIGhl
aWdodCwgZm9udFNjYWxlRmFjdG9yKTsKK30KKwogV2ViRGV2VG9vbHNBZ2VudEltcGwqIEluc3Bl
Y3RvckNsaWVudEltcGw6OmRldlRvb2xzQWdlbnQoKQogewogICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxXZWJEZXZUb29sc0FnZW50SW1wbCo+KG1faW5zcGVjdGVkV2ViVmlldy0+ZGV2VG9vbHNBZ2Vu
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckNsaWVudElt
cGwuaAppbmRleCBiMTZiNmY0NjgxOGMzM2NlNDI5NWU1ZjgzYTZhNzVjOWI1ZTIxZDJjLi42MDhh
MTZkMzZmNTE2OTc0ZGMyNjgxNGQzMGZiNGI2M2Y5MzYzNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yQ2xpZW50SW1wbC5oCkBAIC02Myw2ICs2Myw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoKTsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ2xlYXJCcm93c2VyQ29va2llcygpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckJyb3dzZXJDb29raWVzKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW11bGF0ZURldmljZU1ldHJp
Y3MoaW50LCBpbnQsIGZsb2F0KTsKKwogcHJpdmF0ZToKICAgICBXZWJEZXZUb29sc0FnZW50SW1w
bCogZGV2VG9vbHNBZ2VudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKaW5kZXggYzA2MjFhODA2MTA0MTAyZDkwMmU3NjVmNGJkNGVkYjE4YjQwY2U3OS4u
N2M1MGYzYjgzYmZiM2EwZTlhNWNmNDA1MDc0NzFmZWRkMzcxZTQ0YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTQ1LDYgKzE0NSw3IEBACiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgog
I2luY2x1ZGUgIldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJwYWludGluZy9HcmFwaGljc0NvbnRl
eHRCdWlsZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0J5dGVBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0yMzMsNiArMjM0
LDc5IEBAIHN0YXRpYyBjb25zdCBQb3B1cENvbnRhaW5lclNldHRpbmdzIGF1dG9maWxsUG9wdXBT
ZXR0aW5ncyA9IHsKIAogc3RhdGljIGJvb2wgc2hvdWxkVXNlRXh0ZXJuYWxQb3B1cE1lbnVzID0g
ZmFsc2U7CiAKKworV2ViVmlld0ltcGw6OldpZGdldEZyYW1lTWV0cmljczo6V2lkZ2V0RnJhbWVN
ZXRyaWNzKFdlYlZpZXdJbXBsKiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCit7
CisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWVWaWV3KCk7CisgICAgaWYgKCF2
aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ZyYW1lU2l6ZSA9IHZpZXctPnNpemUoKTsK
K30KKworaW5saW5lIFdlYkNvcmU6OkZyYW1lVmlldyogV2ViVmlld0ltcGw6OldpZGdldEZyYW1l
TWV0cmljczo6ZnJhbWVWaWV3KCkKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3LT5tYWluRnJhbWVJ
bXBsKCkgPyBtX3dlYlZpZXctPm1haW5GcmFtZUltcGwoKS0+ZnJhbWVWaWV3KCkgOiAwOworfQor
Citib29sIFdlYlZpZXdJbXBsOjpXaWRnZXRGcmFtZU1ldHJpY3M6OnNldEVtdWxhdGVkU2l6ZShj
b25zdCBXZWJTaXplJiBzaXplKQoreworICAgIGludCB3aWR0aCA9IHNpemUud2lkdGg7CisgICAg
aW50IGhlaWdodCA9IHNpemUuaGVpZ2h0OworCisgICAgV2ViQ29yZTo6RnJhbWVWaWV3KiB2aWV3
ID0gZnJhbWVWaWV3KCk7CisgICAgaWYgKCF2aWV3KSB7CisgICAgICAgIG1fZW11bGF0ZWRGcmFt
ZVNpemUgPSBzaXplOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKCF3
aWR0aCAmJiAhaGVpZ2h0KSB7CisgICAgICAgIGlmIChpc1NpemVFbXVsYXRlZCgpKSB7CisgICAg
ICAgICAgICB2aWV3LT5zZXRIb3Jpem9udGFsU2Nyb2xsYmFyTG9jayhmYWxzZSk7CisgICAgICAg
ICAgICB2aWV3LT5zZXRWZXJ0aWNhbFNjcm9sbGJhckxvY2soZmFsc2UpOworICAgICAgICAgICAg
dmlldy0+c2V0U2Nyb2xsYmFyTW9kZXMoU2Nyb2xsYmFyQXV0bywgU2Nyb2xsYmFyQXV0bywgZmFs
c2UsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghaXNTaXpl
RW11bGF0ZWQoKSkKKyAgICAgICAgICAgIHZpZXctPnNldFNjcm9sbGJhck1vZGVzKFNjcm9sbGJh
ckFsd2F5c09uLCBTY3JvbGxiYXJBbHdheXNPbiwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAgICAgaWYg
KFNjcm9sbGJhciogdmVydGljYWxCYXIgPSB2aWV3LT52ZXJ0aWNhbFNjcm9sbGJhcigpKQorICAg
ICAgICAgICAgd2lkdGggKz0gIXZlcnRpY2FsQmFyLT5pc092ZXJsYXlTY3JvbGxiYXIoKSA/IHZl
cnRpY2FsQmFyLT53aWR0aCgpIDogMDsKKyAgICAgICAgaWYgKFNjcm9sbGJhciogaG9yaXpvbnRh
bEJhciA9IHZpZXctPmhvcml6b250YWxTY3JvbGxiYXIoKSkKKyAgICAgICAgICAgIGhlaWdodCAr
PSAhaG9yaXpvbnRhbEJhci0+aXNPdmVybGF5U2Nyb2xsYmFyKCkgPyBob3Jpem9udGFsQmFyLT5o
ZWlnaHQoKSA6IDA7CisgICAgfQorCisgICAgY29uc3QgV2ViU2l6ZSBmaW5hbFNpemUod2lkdGgs
IGhlaWdodCk7CisKKyAgICBpZiAoZmluYWxTaXplID09IG1fZW11bGF0ZWRGcmFtZVNpemUpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fZW11bGF0ZWRGcmFtZVNpemUgPSBmaW5hbFNp
emU7CisKKyAgICBpZiAoIWlzU2l6ZUVtdWxhdGVkKCkgfHwgSW50U2l6ZShtX2VtdWxhdGVkRnJh
bWVTaXplLndpZHRoLCBtX2VtdWxhdGVkRnJhbWVTaXplLmhlaWdodCkgPT0gdmlldy0+c2l6ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2aWV3LT5yZXNpemUobV9lbXVsYXRlZEZy
YW1lU2l6ZS53aWR0aCwgbV9lbXVsYXRlZEZyYW1lU2l6ZS5oZWlnaHQpOworICAgIHJldHVybiB0
cnVlOworfQorCisKK2Jvb2wgV2ViVmlld0ltcGw6OldpZGdldEZyYW1lTWV0cmljczo6c2V0U2l6
ZShjb25zdCBXZWJTaXplJiBzaXplKQoreworICAgIFdlYkNvcmU6OkZyYW1lVmlldyogdmlldyA9
IGZyYW1lVmlldygpOworICAgIEludFNpemUgbmV3U2l6ZSA9IEludFNpemUoc2l6ZS53aWR0aCwg
c2l6ZS5oZWlnaHQpOworICAgIGlmICghdmlldyB8fCB2aWV3LT5zaXplKCkgPT0gbmV3U2l6ZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGlzU2l6ZUVtdWxhdGVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHZpZXctPnJlc2l6ZShuZXdTaXplKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCiAvLyBXZWJWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlldyogV2ViVmlldzo6
Y3JlYXRlKFdlYlZpZXdDbGllbnQqIGNsaWVudCkKQEAgLTM2Myw2ICs0MzcsOSBAQCBXZWJWaWV3
SW1wbDo6V2ViVmlld0ltcGwoV2ViVmlld0NsaWVudCogY2xpZW50KQogI2VuZGlmCiAgICAgLCBt
X2RldmljZU9yaWVudGF0aW9uQ2xpZW50UHJveHkoYWRvcHRQdHIobmV3IERldmljZU9yaWVudGF0
aW9uQ2xpZW50UHJveHkoY2xpZW50ID8gY2xpZW50LT5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCgp
IDogMCkpKQogICAgICwgbV9nZW9sb2NhdGlvbkNsaWVudFByb3h5KGFkb3B0UHRyKG5ldyBHZW9s
b2NhdGlvbkNsaWVudFByb3h5KGNsaWVudCA/IGNsaWVudC0+Z2VvbG9jYXRpb25DbGllbnQoKSA6
IDApKSkKKyAgICAsIG1fZnJhbWVNZXRyaWNzKHRoaXMpCisgICAgLCBtX2lzRW11bGF0ZWRTaXpl
VXBkYXRlKGZhbHNlKQorICAgICwgbV9mb250U2NhbGVGYWN0b3IoMSkKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogICAgICwgbV91c2VyTWVkaWFDbGllbnRJbXBsKHRoaXMpCiAjZW5kaWYKQEAg
LTEyNDIsMTIgKzEzMTksMzcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2lsbFN0YXJ0TGl2ZVJlc2l6
ZSgpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnJlc2l6ZShjb25zdCBXZWJTaXplJiBuZXdTaXplKQog
ewotICAgIGlmIChtX3Nob3VsZEF1dG9SZXNpemUgfHwgbV9zaXplID09IG5ld1NpemUpCisgICAg
aWYgKG1fc2hvdWxkQXV0b1Jlc2l6ZSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fc2l6ZSA9IG5l
d1NpemU7CiAKLSAgICBpZiAobWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKSkKLSAgICAgICAg
bWFpbkZyYW1lSW1wbCgpLT5mcmFtZVZpZXcoKS0+cmVzaXplKG1fc2l6ZS53aWR0aCwgbV9zaXpl
LmhlaWdodCk7CisgICAgaWYgKCFtX2lzRW11bGF0ZWRTaXplVXBkYXRlKSB7CisgICAgICAgIC8v
IEp1c3QgcmVtZW1iZXIgdGhlIG5ldyByZXF1ZXN0ZWQgZnJhbWUgc2l6ZS4KKyAgICAgICAgbV9m
cmFtZU1ldHJpY3Muc2V0U2l6ZShuZXdTaXplKTsKKworICAgICAgICBpZiAobV9zaXplID09IG5l
d1NpemUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9zaXplID0gbmV3U2l6ZTsK
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBuZXdTaXplIGlzIHRoZSBuZXcgdGFyZ2V0IGZyYW1l
IHNpemUuCisgICAgICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lSW1wbCgpLT5m
cmFtZVZpZXcoKTsKKyAgICAgICAgaWYgKGZyYW1lVmlldykgeworICAgICAgICAgICAgYm9vbCBk
aWRGcmFtZVNpemVDaGFuZ2UgPSBtX2ZyYW1lTWV0cmljcy5zZXRFbXVsYXRlZFNpemUobmV3U2l6
ZSk7CisgICAgICAgICAgICBib29sIGNhbmNlbEVtdWxhdGlvbiA9IG5ld1NpemUuaXNFbXB0eSgp
OworICAgICAgICAgICAgaWYgKGNhbmNlbEVtdWxhdGlvbikgeworICAgICAgICAgICAgICAgIGRp
ZEZyYW1lU2l6ZUNoYW5nZSB8PSBtX2ZyYW1lTWV0cmljcy5zZXRTaXplKG1fc2l6ZSk7CisgICAg
ICAgICAgICAgICAgcmVtb3ZlUGFnZU92ZXJsYXkobV92aWV3cG9ydE92ZXJsYXkuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIG1fdmlld3BvcnRPdmVybGF5LmNsZWFyKCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICghbV92aWV3cG9ydE92ZXJsYXkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV92aWV3cG9ydE92ZXJsYXkgPSBhZG9wdFB0cihuZXcgVmlld3BvcnRH
dXR0ZXJPdmVybGF5KHRoaXMpKTsKKyAgICAgICAgICAgICAgICAgICAgYWRkUGFnZU92ZXJsYXko
bV92aWV3cG9ydE92ZXJsYXkuZ2V0KCksIDk4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIWRpZEZyYW1lU2l6ZUNoYW5nZSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CiAKICAgICBzZW5kUmVzaXplRXZlbnRBbmRS
ZXBhaW50KCk7CiB9CkBAIC0xNTUxLDYgKzE2NTMsMTggQEAgYm9vbCBXZWJWaWV3SW1wbDo6aGFz
VmVydGljYWxTY3JvbGxiYXIoKQogICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCktPmZyYW1lVmll
dygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjplbXVsYXRl
RGV2aWNlTWV0cmljcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIGZsb2F0IGZvbnRTY2FsZUZhY3Rv
cikKK3sKKyAgICBtX2lzRW11bGF0ZWRTaXplVXBkYXRlID0gdHJ1ZTsKKyAgICBpZiAoZm9udFNj
YWxlRmFjdG9yICE9IG1fZm9udFNjYWxlRmFjdG9yKSB7CisgICAgICAgIG1fZm9udFNjYWxlRmFj
dG9yID0gZm9udFNjYWxlRmFjdG9yOworICAgICAgICBmbG9hdCB6b29tRmFjdG9yID0gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KHpvb21MZXZlbFRvWm9vbUZhY3RvcihtX3pvb21MZXZlbCkpOworICAgICAg
ICBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoem9v
bUZhY3RvciwgbV9mb250U2NhbGVGYWN0b3IpOworICAgIH0KKyAgICByZXNpemUoV2ViU2l6ZSh3
aWR0aCwgaGVpZ2h0KSk7CisgICAgbV9pc0VtdWxhdGVkU2l6ZVVwZGF0ZSA9IGZhbHNlOworfQor
CiBjb25zdCBXZWJJbnB1dEV2ZW50KiBXZWJWaWV3SW1wbDo6bV9jdXJyZW50SW5wdXRFdmVudCA9
IDA7CiAKIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRF
dmVudCYgaW5wdXRFdmVudCkKQEAgLTIyMDgsNyArMjMyMiw3IEBAIGRvdWJsZSBXZWJWaWV3SW1w
bDo6c2V0Wm9vbUxldmVsKGJvb2wgdGV4dE9ubHksIGRvdWJsZSB6b29tTGV2ZWwpCiAgICAgICAg
IGlmICh0ZXh0T25seSkKICAgICAgICAgICAgIGZyYW1lLT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0
b3JzKDEsIHpvb21GYWN0b3IpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBmcmFtZS0+c2V0
UGFnZUFuZFRleHRab29tRmFjdG9ycyh6b29tRmFjdG9yLCAxKTsKKyAgICAgICAgICAgIGZyYW1l
LT5zZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKHpvb21GYWN0b3IsIG1fZm9udFNjYWxlRmFjdG9y
KTsKICAgICB9CiAgICAgcmV0dXJuIG1fem9vbUxldmVsOwogfQpAQCAtMjM2Niw2ICsyNDgwLDIz
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmRpc2FibGVBdXRvUmVzaXplTW9kZSgpCiAgICAgY29uZmln
dXJlQXV0b1Jlc2l6ZU1vZGUoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cGFpbnRWaWV3cG9y
dEd1dHRlcihXZWJDYW52YXMqIGNhbnZhcykKK3sKKyAgICBpZiAoIW1fZnJhbWVNZXRyaWNzLmlz
U2l6ZUVtdWxhdGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZyYW1lKiBmcmFtZSA9IHBh
Z2UoKS0+bWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPnZpZXcoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgSW50U2l6ZSBmcmFtZVNpemUgPSBmcmFtZS0+dmlldygpLT5z
aXplKCk7CisgICAgR3JhcGhpY3NDb250ZXh0QnVpbGRlciBidWlsZGVyKGNhbnZhcyk7CisgICAg
R3JhcGhpY3NDb250ZXh0JiBnYyA9IGJ1aWxkZXIuY29udGV4dCgpOworICAgIGdjLmNsaXBPdXQo
SW50UmVjdChJbnRQb2ludCgpLCBmcmFtZVNpemUpKTsKKyAgICBnYy5zZXRGaWxsQ29sb3IoQ29s
b3I6OmRhcmtHcmF5LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICBnYy5kcmF3UmVjdChJbnRS
ZWN0KEludFBvaW50KCksIHNpemUoKSkpOworfQorCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRQYWdl
U2NhbGVGYWN0b3JMaW1pdHMoZmxvYXQgbWluUGFnZVNjYWxlLCBmbG9hdCBtYXhQYWdlU2NhbGUp
CiB7CiAgICAgbV9wYWdlRGVmaW5lZE1pbmltdW1QYWdlU2NhbGVGYWN0b3IgPSBtaW5QYWdlU2Nh
bGU7CkBAIC0zNDE5LDcgKzM1NTAsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp1cGRhdGVMYXllclRy
ZWVWaWV3cG9ydCgpCiAgICAgICAgIGxheWVyQWRqdXN0WCA9IC12aWV3LT5jb250ZW50c1NpemUo
KS53aWR0aCgpICsgdmlldy0+dmlzaWJsZUNvbnRlbnRSZWN0KGZhbHNlKS53aWR0aCgpOwogICAg
IH0KICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC0+c2V0Vmlld3BvcnQodmlzaWJsZVJl
Y3Quc2l6ZSgpLCB2aWV3LT5jb250ZW50c1NpemUoKSwgc2Nyb2xsLCBwYWdlU2NhbGVGYWN0b3Io
KSwgbGF5ZXJBZGp1c3RYKTsKLSAgICBtX2xheWVyVHJlZVZpZXcuc2V0Vmlld3BvcnRTaXplKHZp
c2libGVSZWN0LnNpemUoKSk7CisgICAgbV9sYXllclRyZWVWaWV3LnNldFZpZXdwb3J0U2l6ZShz
aXplKCkpOwogICAgIG1fbGF5ZXJUcmVlVmlldy5zZXRQYWdlU2NhbGVGYWN0b3JBbmRMaW1pdHMo
cGFnZVNjYWxlRmFjdG9yKCksIG1fbWluaW11bVBhZ2VTY2FsZUZhY3RvciwgbV9tYXhpbXVtUGFn
ZVNjYWxlRmFjdG9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmgKaW5kZXggMzhiZTZhZGMzMzVkZDI1NzczZjY4M2ZlNDlhYmU1ZmY0ZTBlYzY2Ni4uN2IzNGZl
ZTgwNjcwNWZlNDkzM2E3ZGJmOThhODUzNWZjNDdkZjBiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC00NSwxNSArNDUsMTkgQEAKICNpbmNsdWRlICJDb250
ZXh0TWVudUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50SW1wbC5oIgogI2luY2x1
ZGUgIkVkaXRvckNsaWVudEltcGwuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiSW50UG9pbnQuaCIKICNpbmNs
dWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk5vdGlmaWNh
dGlvblByZXNlbnRlckltcGwuaCIKICNpbmNsdWRlICJQYWdlT3ZlcmxheUxpc3QuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUdlc3R1cmVDdXJ2ZVRhcmdldC5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVz
LmgiCiAjaW5jbHVkZSAiVXNlck1lZGlhQ2xpZW50SW1wbC5oIgorI2luY2x1ZGUgIldlYlBhZ2VP
dmVybGF5LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKQEAgLTQ5NSw2ICs0OTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNIb3Jpem9u
dGFsU2Nyb2xsYmFyKCk7CiAgICAgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcigpOwogCisgICAg
Ly8gWmVybyB3aWR0aC9oZWlnaHQgY2FuY2VsIHRoZSBzY3JlZW4gc2l6ZSBlbXVsYXRpb24uCisg
ICAgdm9pZCBlbXVsYXRlRGV2aWNlTWV0cmljcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIGZsb2F0
IGZvbnRTY2FsZUZhY3Rvcik7CisKICAgICAvLyBQb2ludGVyIExvY2sgY2FsbHMgYWxsb3cgYSBw
YWdlIHRvIGNhcHR1cmUgYWxsIG1vdXNlIGV2ZW50cyBhbmQKICAgICAvLyBkaXNhYmxlIHRoZSBz
eXN0ZW0gY3Vyc29yLgogI2lmIEVOQUJMRShQT0lOVEVSX0xPQ0spCkBAIC01MDQsNiArNTExLDQy
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAgIHN0cnVjdCBXaWRnZXRGcmFtZU1l
dHJpY3MgeworICAgICAgICBXaWRnZXRGcmFtZU1ldHJpY3MoV2ViVmlld0ltcGwqKTsKKyAgICAg
ICAgYm9vbCBpc1NpemVFbXVsYXRlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiAh
bV9lbXVsYXRlZEZyYW1lU2l6ZS5pc0VtcHR5KCk7CisgICAgICAgIH0KKworICAgICAgICBXZWJD
b3JlOjpGcmFtZVZpZXcqIGZyYW1lVmlldygpOworCisgICAgICAgIGJvb2wgc2V0RW11bGF0ZWRT
aXplKGNvbnN0IFdlYlNpemUmKTsKKyAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IFdlYlNpemUm
KTsKKworICAgICAgICBXZWJWaWV3SW1wbCogbV93ZWJWaWV3OworICAgICAgICBXZWJTaXplIG1f
ZnJhbWVTaXplOworICAgICAgICBXZWJTaXplIG1fZW11bGF0ZWRGcmFtZVNpemU7CisgICAgfTsK
KworICAgIGNsYXNzIFZpZXdwb3J0R3V0dGVyT3ZlcmxheSA6IHB1YmxpYyBXZWJQYWdlT3Zlcmxh
eSB7CisgICAgcHVibGljOgorICAgICAgICBWaWV3cG9ydEd1dHRlck92ZXJsYXkoV2ViVmlld0lt
cGwqIHdlYlZpZXcpCisgICAgICAgICAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICAgICB7
CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQYWdlT3ZlcmxheShXZWJD
YW52YXMqIGNhbnZhcykKKyAgICAgICAgeworICAgICAgICAgICAgbV93ZWJWaWV3LT5wYWludFZp
ZXdwb3J0R3V0dGVyKGNhbnZhcyk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IFdlYlZpZXdJbXBsKiBtX3dlYlZpZXc7CisgICAgfTsKKworICAgIGZyaWVuZCBjbGFzcyBWaWV3
cG9ydEd1dHRlck92ZXJsYXk7CisgICAgdm9pZCBwYWludFZpZXdwb3J0R3V0dGVyKFdlYkNhbnZh
cyopOworCiAgICAgYm9vbCBjb21wdXRlUGFnZVNjYWxlRmFjdG9yTGltaXRzKCk7CiAgICAgZmxv
YXQgY2xhbXBQYWdlU2NhbGVGYWN0b3JUb0xpbWl0cyhmbG9hdCBzY2FsZSk7CiAgICAgV2ViUG9p
bnQgY2xhbXBPZmZzZXRBdFNjYWxlKGNvbnN0IFdlYlBvaW50JiBvZmZzZXQsIGZsb2F0IHNjYWxl
KTsKQEAgLTcyNCw2ICs3NjcsMTEgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8RGV2aWNlT3JpZW50
YXRpb25DbGllbnRQcm94eT4gbV9kZXZpY2VPcmllbnRhdGlvbkNsaWVudFByb3h5OwogICAgIE93
blB0cjxHZW9sb2NhdGlvbkNsaWVudFByb3h5PiBtX2dlb2xvY2F0aW9uQ2xpZW50UHJveHk7CiAK
KyAgICBXaWRnZXRGcmFtZU1ldHJpY3MgbV9mcmFtZU1ldHJpY3M7CisgICAgT3duUHRyPFZpZXdw
b3J0R3V0dGVyT3ZlcmxheT4gbV92aWV3cG9ydE92ZXJsYXk7CisgICAgYm9vbCBtX2lzRW11bGF0
ZWRTaXplVXBkYXRlOworICAgIGZsb2F0IG1fZm9udFNjYWxlRmFjdG9yOworCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKICAgICBVc2VyTWVkaWFDbGllbnRJbXBsIG1fdXNlck1lZGlhQ2xpZW50
SW1wbDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvanMv
RGV2VG9vbHMuanMgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcwpp
bmRleCA0OTliNjA0N2QyOWI4OTkwZTM0YWZkYTJkNzhmNDEwNDQyZThiNzI0Li4xOWVmOGJhZGI4
YmY5MjE3MjQ0MDA0N2JjMTgzZGM2M2FhMTJlNWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9qcy9EZXZUb29scy5qcworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9qcy9EZXZUb29scy5qcwpAQCAtNDEsNiArNDEsNyBAQAogICAgIFByZWZlcmVuY2VzLmV4
cG9zZURpc2FibGVDYWNoZSA9IHRydWU7CiAgICAgUHJlZmVyZW5jZXMuZXhwb3NlV29ya2Vyc0lu
c3BlY3Rpb24gPSB0cnVlOwogICAgIFByZWZlcmVuY2VzLnNob3dEb2NrVG9SaWdodCA9IHRydWU7
CisgICAgUHJlZmVyZW5jZXMuZXhwb3NlRGV2aWNlTWV0cmljc0VtdWxhdGlvbiA9IHRydWU7CiB9
KSgpO30KIAogZnVuY3Rpb24gYnVpbGRQbGF0Zm9ybUV4dGVuc2lvbkFQSShleHRlbnNpb25JbmZv
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDc2MmYwNDY1NTNiM2U4NWRlNjAyYjcyOWE2NGFmMDA2ZDYxZDliMmQuLjNkODE0
YjY3NGM1NzU0NjQ4ZmE0MjhiNmIyNThmYWNhMmNhODM4NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBA
QAorMjAxMi0wMy0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0gQWxsb3cgZW11bGF0aW9uIG9mIGFy
Yml0cmFyeSAobW9iaWxlKSBkZXZpY2UgcmVzb2x1dGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL292ZXJyaWRlLXNj
cmVlbi1zaXplLmh0bWw6CisKIDIwMTItMDMtMjcgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZpeCBtaXNzaW5nIG9iamVj
dHMgaW4gdGhlIGRvbWluYXRvcnMgdmlldy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvb3ZlcnJpZGUtc2NyZWVuLXNpemUuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvb3ZlcnJpZGUtc2NyZWVuLXNpemUuaHRtbAppbmRleCAyMjQ4MDBmYjFkN2Zi
NDM0MWI1MGVlMjQ3ZTIwMWJmMmExZmQwYmU4Li43MWMyYjU5NzVkZjkxMjAzNDJjMmFkOWNiMmM2
MjQ3MzAxZTQ4ZDc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL292
ZXJyaWRlLXNjcmVlbi1zaXplLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9vdmVycmlkZS1zY3JlZW4tc2l6ZS5odG1sCkBAIC03Nyw3ICs3Nyw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICB9CiAKICAgICAgICAgLy8gRGlzYWJsZSBvdmVycmlkZXMuCi0gICAgICAg
IFBhZ2VBZ2VudC5zZXRTY3JlZW5TaXplT3ZlcnJpZGUoMCwgMCwgb3ZlcnJpZGVDYWxsYmFjayk7
CisgICAgICAgIFBhZ2VBZ2VudC5zZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUoMCwgMCwgMSwgb3Zl
cnJpZGVDYWxsYmFjayk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQpAQCAtMTUzLDcg
KzE1Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJPdmVycmlkZTogIiArIHdpZHRoICsgIngiICsgaGVpZ2h0ICsgIiA9PiBFUlJP
UiIpOwogICAgICAgICAgICAgdXNlckNhbGxiYWNrKCk7CiAgICAgICAgIH0KLSAgICAgICAgUGFn
ZUFnZW50LnNldFNjcmVlblNpemVPdmVycmlkZSh3aWR0aCwgaGVpZ2h0LCBjYWxsYmFjayk7Cisg
ICAgICAgIFBhZ2VBZ2VudC5zZXREZXZpY2VNZXRyaWNzT3ZlcnJpZGUod2lkdGgsIGhlaWdodCwg
MSwgY2FsbGJhY2spOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIG92ZXJyaWRlQW5kRHVtcERhdGEo
d2lkdGgsIGhlaWdodCwgY2FsbGJhY2spCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>