<?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>122906</bug_id>
          
          <creation_ts>2013-10-16 10:41:21 -0700</creation_ts>
          <short_desc>RemoteLayerTree: Add support for more layer properties and transform layers</short_desc>
          <delta_ts>2013-10-16 12:05:37 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940424</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-16 10:41:21 -0700</bug_when>
    <thetext>Add support for name, border width, border color, opacity, transform, sublayer transform, hidden, geometry flipped, double sided, masks to bounds, and opaque layer properties.

Factor layer creation out from layer changes, so that we can create layers of the correct type. Use this mechanism to create CATransformLayers when handed a LayerTypeTransformLayer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940427</commentid>
    <comment_count>1</comment_count>
      <attachid>214373</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-16 10:42:19 -0700</bug_when>
    <thetext>Created attachment 214373
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940463</commentid>
    <comment_count>2</comment_count>
      <attachid>214373</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-16 11:35:52 -0700</bug_when>
    <thetext>Comment on attachment 214373
patch

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

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm:283
&gt; +static void dumpProperty(StringBuilder&amp; builder, String name, const TransformationMatrix&amp; transform)

In the future I think we should just make dumpProperty take a TextStream&amp; instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940477</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-16 12:05:37 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/157523</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214373</attachid>
            <date>2013-10-16 10:42:19 -0700</date>
            <delta_ts>2013-10-16 11:35:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>ui.diff</filename>
            <type>text/plain</type>
            <size>42110</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkYmY0ZTk4Li42ZWE5NDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMTAtMTYgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlTGF5ZXJUcmVlOiBBZGQgc3VwcG9ydCBmb3IgbW9yZSBsYXllciBwcm9w
ZXJ0aWVzIGFuZCB0cmFuc2Zvcm0gbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjI5MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHRoaXMgY29kZSBpcyBub3QgeWV0IHRl
c3RhYmxlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgIEV4cG9ydCBzb21l
IFRleHRTdHJlYW0gYW5kIFRyYW5zZm9ybWF0aW9uTWF0cml4IHN0dWZmLgorCiAyMDEzLTEwLTE1
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
IFBsYXRmb3JtQ0FMYXllciBzdWJjbGFzcyB0aGF0IHByb3hpZXMgaXRzIHByb3BlcnR5IGNoYW5n
ZXMgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdW5kYXJ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDI3
NWZmZGQuLmMxNTk2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMDIsNiArMTAyLDkgQEAg
X19aTjdXZWJDb3JlMTBkZWxldGVGaWxlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTBm
aWxlRXhpc3RzRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTBzZXRDb29raWVzRVBOU184
RG9jdW1lbnRFUktOU18zVVJMRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTB0b0RvY3Vt
ZW50RU4zSlNDN0pTVmFsdWVFCitfX1pON1dlYkNvcmUxMFRleHRTdHJlYW1sc0VQS2MKK19fWk43
V2ViQ29yZTEwVGV4dFN0cmVhbTdyZWxlYXNlRXYKK19fWk43V2ViQ29yZTEwVGV4dFN0cmVhbWxz
RWQKIF9fWk43V2ViQ29yZTExQml0bWFwSW1hZ2UxM2dldENHSW1hZ2VSZWZFdgogX19aTjdXZWJD
b3JlMTFCaXRtYXBJbWFnZUMxRVA3Q0dJbWFnZVBOU18xM0ltYWdlT2JzZXJ2ZXJFCiBfX1pON1dl
YkNvcmUxMUJpdG1hcEltYWdlQzFFUE5TXzEzSW1hZ2VPYnNlcnZlckUKQEAgLTE2MDksNiArMTYx
Miw3IEBAIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlMjFleHBlY3RlZENvbnRl
bnRMZW5ndGhFdgogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2UzdXJsRXYKIF9f
Wk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlNmlzSFRUUEV2CiBfX1pOSzdXZWJDb3Jl
MjBSZXNvdXJjZVJlc3BvbnNlQmFzZThtaW1lVHlwZUV2CitfX1pOSzdXZWJDb3JlMjBUcmFuc2Zv
cm1hdGlvbk1hdHJpeGN2MTNDQVRyYW5zZm9ybTNERXYKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3
YXJkQ29udHJvbGxlcjEyZm9yd2FyZENvdW50RXYKIF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3YXJk
Q29udHJvbGxlcjliYWNrQ291bnRFdgogX19aTks3V2ViQ29yZTIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uMTNjb29raWVTdG9yYWdlRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBmMTcyYzNlLi4wOTE2ZGIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIzIEBACisyMDEzLTEwLTE2ICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW90ZUxheWVyVHJlZTogQWRkIHN1cHBv
cnQgZm9yIG1vcmUgbGF5ZXIgcHJvcGVydGllcyBhbmQgdHJhbnNmb3JtIGxheWVycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyOTA2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9y
IG5hbWUsIGJvcmRlciB3aWR0aCwgYm9yZGVyIGNvbG9yLCBvcGFjaXR5LCB0cmFuc2Zvcm0sIHN1
YmxheWVyIHRyYW5zZm9ybSwKKyAgICAgICAgaGlkZGVuLCBnZW9tZXRyeSBmbGlwcGVkLCBkb3Vi
bGUgc2lkZWQsIG1hc2tzIHRvIGJvdW5kcywgYW5kIG9wYXF1ZSBsYXllciBwcm9wZXJ0aWVzLgor
CisgICAgICAgIEZhY3RvciBsYXllciBjcmVhdGlvbiBvdXQgZnJvbSBsYXllciBjaGFuZ2VzLCBz
byB0aGF0IHdlIGNhbiBjcmVhdGUgbGF5ZXJzIG9mIHRoZSBjb3JyZWN0CisgICAgICAgIHR5cGUu
IFVzZSB0aGlzIG1lY2hhbmlzbSB0byBjcmVhdGUgQ0FUcmFuc2Zvcm1MYXllcnMgd2hlbiBoYW5k
ZWQgYSBMYXllclR5cGVUcmFuc2Zvcm1MYXllci4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAg
ICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuaDoKKyAgICAgICAgQWRkIGNvZGVycyBmb3IgVHJhbnNmb3JtYXRpb25NYXRyaXguCisK
KyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmg6CisgICAg
ICAgIEFkZCB0aGUgbmV3IExheWVyQ2hhbmdlIHZhbHVlcy4KKworICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpub3RlUHJvcGVydGll
c0NoYW5nZWQpOgorICAgICAgICBMYXllclByb3BlcnRpZXM6OmxheWVyQ2hhbmdlcyBzaG91bGQg
YmUgYSBMYXllckNoYW5nZS4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6Y3JlYXRlZExheWVycyk6CisgICAgICAgIEV4cG9zZSB0aGUgbGlzdCBvZiBuZXds
eSBjcmVhdGVkIGxheWVycyAoZm9yIFJlbW90ZUxheWVyVHJlZUhvc3QncyBjb25zdW1wdGlvbiku
CisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlv
blByb3BlcnRpZXM6OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJD
cmVhdGlvblByb3BlcnRpZXM6OmRlY29kZSk6CisgICAgICAgIEFkZCAoYW5kIHN1cHBvcnQgY29k
aW5nKSBhIG5ldyBMYXllckNyZWF0aW9uUHJvcGVydGllcyBzdHJ1Y3QsIHdoaWNoIGlzIGN1cnJl
bnRseQorICAgICAgICBqdXN0IGEgcGFpciBvZiBMYXllcklEIGFuZCBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZS4gQWRkaXRpb25hbCBwcm9wZXJ0aWVzIG1heSBmb2xsb3cuCisKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5j
b2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKToKKyAgICAgICAgRW5jb2RlIGFuZCBkZWNvZGUgYWxsIG9mIHRo
ZSBuZXcgbGF5ZXIgcHJvcGVydGllcy4KKyAgICAgICAgRW5jb2RlIGNoYW5nZWRQcm9wZXJ0aWVz
IGFzIGFuIGVudW0sIG5vdCBhbiB1bnNpZ25lZC4KKworICAgICAgICAoV2ViS2l0OjpSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OmRlY29kZSk6CisgICAgICAgIEVuY29kZSBhbmQgZGVjb2RlIHRo
ZSBsaXN0IG9mIG5ld2x5IGNyZWF0ZWQgbGF5ZXJzLgorCisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXRDcmVhdGVkTGF5ZXJzKToKKyAgICAgICAgU2V0dGVy
IGZvciB0aGUgbGlzdCBvZiBuZXdseSBjcmVhdGVkIGxheWVycywgd2hpY2ggY29tZXMgZnJvbSB0
aGUKKyAgICAgICAgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCBhdCBjb21taXQgdGltZS4KKworICAg
ICAgICAoV2ViS2l0OjpkdW1wUHJvcGVydHkpOgorICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8g
ZHVtcCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnN0YW5jZXMuCisKKyAgICAgICAgKFdlYktpdDo6
ZHVtcENoYW5nZWRMYXllcnMpOgorICAgICAgICBEdW1wIGFsbCBvZiB0aGUgbmV3IGxheWVyIHBy
b3BlcnRpZXMuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OmR1bXApOgorICAgICAgICBEdW1wIHRoZSBsaXN0IG9mIG5ld2x5IGNyZWF0ZWQgbGF5ZXJzLgor
CisgICAgICAgICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0Lm1tOgorICAgICAgICAoV2ViS2l0
OjpjZ0NvbG9yRnJvbUNvbG9yKToKKyAgICAgICAgRmFjdG9yIG91dCB0aGUgY29kZSB0byBtYWtl
IGEgQ0dDb2xvciBmcm9tIGEgV2ViQ29yZTo6Q29sb3IsIGFzIHdlIG5lZWQgaXQKKyAgICAgICAg
Zm9yIGJvdGggYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIGNvbG9yLgorCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNvbW1pdCk6CisgICAgICAgIENyZWF0ZSBsYXllcnMgYmVm
b3JlIGFwcGx5aW5nIGNoYW5nZXMsIHVzaW5nIHRoZSBuZXcgbGlzdCBvZiBuZXdseSBjcmVhdGVk
IGxheWVycy4KKyAgICAgICAgV2hlbiBhcHBseWluZyBjaGFuZ2VzLCBlbnN1cmUgdGhhdCB0aGUg
bGF5ZXIgd2UncmUgaW50ZXJlc3RlZCBpbiB3YXMgYWxyZWFkeSBjcmVhdGVkLgorICAgICAgICBS
ZW5hbWUgInN1YmxheWVyIiB0byAibGF5ZXIiLCBhbmQgdXNlIGRvdCBub3RhdGlvbiBldmVyeXdo
ZXJlLgorICAgICAgICBBcHBseSBhbGwgdGhlIG5ldyBsYXllciBwcm9wZXJ0aWVzIHRvIHRoZSBs
YXllcnMuCisKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6Z2V0TGF5ZXIp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVIb3N0OjpjcmVhdGVMYXllcik6Cisg
ICAgICAgIFNlcGFyYXRlIGNyZWF0aW5nIGEgbmV3IGxheWVyIGZyb20gcmV0cmlldmluZyBpdCBi
eSBJRC4KKyAgICAgICAgRW5zdXJlIHRoYXQgYSBsYXllciBkb2Vzbid0IGFscmVhZHkgZXhpc3Qg
d2hlbiBjcmVhdGluZyBpdC4KKyAgICAgICAgU3VwcG9ydCBjcmVhdGluZyBDQVRyYW5zZm9ybUxh
eWVycy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhpY3NMYXllckNB
UmVtb3RlLmg6CisgICAgICAgIERpc2FibGUgYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucywgYXMgd2Ug
ZG9uJ3Qgc3VwcG9ydCBwcm94eWluZyBhbmltYXRpb25zIHlldC4KKyAgICAgICAgVGhpcyBtYWtl
cyBHcmFwaGljc0xheWVyIGZhbGwgYmFjayB0byBzb2Z0d2FyZSBhbmltYXRpb25zLCB3aGljaCBh
bHJlYWR5IHdvcmsgd29uZGVyZnVsbHkgcmVtb3RlbHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChQbGF0Zm9y
bUNBTGF5ZXJSZW1vdGU6OlBsYXRmb3JtQ0FMYXllclJlbW90ZSk6CisgICAgICAgIEluZm9ybSB0
aGUgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dCBvZiB0aGUgY3JlYXRpb24gb2YgZXZlcnkgUGxhdGZv
cm1DQUxheWVyUmVtb3RlLgorCisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnJlbW92
ZUZyb21TdXBlcmxheWVyKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVwbGFj
ZVN1YmxheWVyKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YWRvcHRTdWJsYXll
cnMpOgorICAgICAgICBBc3NlcnQgd2hlbiB3ZSBoaXQgYSBmZXcgY3JpdGljYWwgdW5pbXBsZW1l
bnRlZCBtZXRob2RzIHRoYXQgd291bGQKKyAgICAgICAgbGVhdmUgdGhlIGxheWVyIHRyZWUgaW4g
YSBicm9rZW4gc3RhdGUuCisKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6aXNPcGFx
dWUpOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFxdWUpOgorICAgICAg
ICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjp0cmFuc2Zvcm0pOgorICAgICAgICAoUGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjpzdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldFN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
c2V0SGlkZGVuKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0R2VvbWV0cnlG
bGlwcGVkKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6aXNEb3VibGVTaWRlZCk6
CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldERvdWJsZVNpZGVkKToKKyAgICAg
ICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6bWFza3NUb0JvdW5kcyk6CisgICAgICAgIChQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE1hc2tzVG9Cb3VuZHMpOgorICAgICAgICAoUGxhdGZvcm1D
QUxheWVyUmVtb3RlOjpzZXRCb3JkZXJXaWR0aCk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OnNldEJvcmRlckNvbG9yKToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6
b3BhY2l0eSk6CisgICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE9wYWNpdHkpOgor
ICAgICAgICAoUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXROYW1lKToKKyAgICAgICAgUHJveHkg
YWxsIG9mIHRoZXNlIHByb3BlcnRpZXMgdmlhIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXllclRyZWVDb250ZXh0
Lmg6CisgICAgICAgIEFkZCBzdG9yYWdlIGZvciB0aGUgbGlzdCBvZiBuZXdseSBjcmVhdGVkIGxh
eWVycy4KKyAgICAgICAgVXNlIExheWVySUQgZm9yIHRoZSBsaXN0IG9mIGRlc3Ryb3llZCBsYXll
cnMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmxheWVy
V2FzQ3JlYXRlZCk6CisgICAgICAgIFN0b3JlIHRoZSBJRCBhbmQgdHlwZSBvZiB0aGUgbmV3bHkg
Y3JlYXRlZCBsYXllciB0byBiZSBwdXNoZWQgdG8gdGhlIFVJIHByb2Nlc3MgbGF0ZXIuCisKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6Zmx1c2hMYXllcnMpOgorICAg
ICAgICBQdXNoIHRoZSBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgbGF5ZXJzIHRvIHRoZSB0cmFuc2Fj
dGlvbiAqYWZ0ZXIqIGZsdXNoaW5nCisgICAgICAgIEdyYXBoaWNzTGF5ZXJzLCBzbyB0aGF0IGFu
eSBjaGFuZ2VzIHRvIGUuZy4gc3RydWN0dXJhbCBsYXllcnMgd2lsbCBub3QgYmUgbWlzc2VkLgor
CiAyMDEzLTEwLTE1ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBhIFBsYXRmb3JtQ0FMYXllciBzdWJjbGFzcyB0aGF0IHByb3hpZXMgaXRzIHBy
b3BlcnR5IGNoYW5nZXMgYWNyb3NzIHRoZSBwcm9jZXNzIGJvdW5kYXJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGI3MjE0MTEuLmQ4
Yjg5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwCkBAIC03MCw2ICs3MCwxNyBAQCBib29sIEFyZ3VtZW50Q29kZXI8QWZmaW5lVHJhbnNm
b3JtPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgQWZmaW5lVHJhbgogfQogCiAK
K3ZvaWQgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShBcmd1bWVu
dEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1h
dGlvbk1hdHJpeCkKK3sKKyAgICBTaW1wbGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHRyYW5zZm9ybWF0aW9uTWF0cml4KTsKK30KKworYm9vbCBB
cmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciYgZGVjb2RlciwgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybWF0aW9uTWF0cml4KQor
eworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6
ZGVjb2RlKGRlY29kZXIsIHRyYW5zZm9ybWF0aW9uTWF0cml4KTsKK30KKworCiB2b2lkIEFyZ3Vt
ZW50Q29kZXI8RmxvYXRQb2ludD46OmVuY29kZShBcmd1bWVudEVuY29kZXImIGVuY29kZXIsIGNv
bnN0IEZsb2F0UG9pbnQmIGZsb2F0UG9pbnQpCiB7CiAgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxG
bG9hdFBvaW50Pjo6ZW5jb2RlKGVuY29kZXIsIGZsb2F0UG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IGU3MmQxYmQuLmI5M2VlODEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAg
LTUyLDYgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKICAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogICAgIGNsYXNzIFRleHRDaGVja2lu
Z1JlcXVlc3REYXRhOworICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogICAgIGNsYXNz
IFVzZXJTdHlsZVNoZWV0OwogICAgIGNsYXNzIFVzZXJTY3JpcHQ7CiAgICAgc3RydWN0IENvbXBv
c2l0aW9uVW5kZXJsaW5lOwpAQCAtODIsNiArODMsMTEgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyJiwgV2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtJik7CiB9Owog
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Cit9Owor
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0UG9pbnQ+IHsK
ICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYpOwogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgKaW5kZXggZDg1MWE5Ni4uMzdjMGUwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24uaApAQCAtMjksNiArMjksOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQzRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
RmxvYXRTaXplLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTMsNiArNTUsMjYg
QEAgcHVibGljOgogICAgICAgICBTaXplQ2hhbmdlZCA9IDEgPDwgNCwKICAgICAgICAgQmFja2dy
b3VuZENvbG9yQ2hhbmdlZCA9IDEgPDwgNSwKICAgICAgICAgQW5jaG9yUG9pbnRDaGFuZ2VkID0g
MSA8PCA2LAorICAgICAgICBCb3JkZXJXaWR0aENoYW5nZWQgPSAxIDw8IDcsCisgICAgICAgIEJv
cmRlckNvbG9yQ2hhbmdlZCA9IDEgPDwgOCwKKyAgICAgICAgT3BhY2l0eUNoYW5nZWQgPSAxIDw8
IDksCisgICAgICAgIFRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDEwLAorICAgICAgICBTdWJsYXll
clRyYW5zZm9ybUNoYW5nZWQgPSAxIDw8IDExLAorICAgICAgICBIaWRkZW5DaGFuZ2VkID0gMSA8
PCAxMiwKKyAgICAgICAgR2VvbWV0cnlGbGlwcGVkQ2hhbmdlZCA9IDEgPDwgMTMsCisgICAgICAg
IERvdWJsZVNpZGVkQ2hhbmdlZCA9IDEgPDwgMTQsCisgICAgICAgIE1hc2tzVG9Cb3VuZHNDaGFu
Z2VkID0gMSA8PCAxNSwKKyAgICAgICAgT3BhcXVlQ2hhbmdlZCA9IDEgPDwgMTYKKyAgICB9Owor
CisgICAgc3RydWN0IExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzIHsKKyAgICAgICAgTGF5ZXJDcmVh
dGlvblByb3BlcnRpZXMoKTsKKworICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVu
dEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciYsIExheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzJik7CisKKyAgICAgICAgTGF5
ZXJJRCBsYXllcklEOworICAgICAgICBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlw
ZSB0eXBlOwogICAgIH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJQcm9wZXJ0aWVzIHsKQEAgLTYxLDkg
KzgzLDkgQEAgcHVibGljOgogICAgICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXImKSBjb25zdDsKICAgICAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciYsIExheWVyUHJvcGVydGllcyYpOwogCi0gICAgICAgIHZvaWQgbm90ZVByb3Bl
cnRpZXNDaGFuZ2VkKExheWVyQ2hhbmdlIGxheWVyQ2hhbmdlcykgeyBjaGFuZ2VkUHJvcGVydGll
cyB8PSBsYXllckNoYW5nZXM7IH0KKyAgICAgICAgdm9pZCBub3RlUHJvcGVydGllc0NoYW5nZWQo
TGF5ZXJDaGFuZ2UgbGF5ZXJDaGFuZ2VzKSB7IGNoYW5nZWRQcm9wZXJ0aWVzID0gc3RhdGljX2Nh
c3Q8TGF5ZXJDaGFuZ2U+KGNoYW5nZWRQcm9wZXJ0aWVzIHwgbGF5ZXJDaGFuZ2VzKTsgfQogCi0g
ICAgICAgIHVuc2lnbmVkIGNoYW5nZWRQcm9wZXJ0aWVzOworICAgICAgICBMYXllckNoYW5nZSBj
aGFuZ2VkUHJvcGVydGllczsKIAogICAgICAgICBTdHJpbmcgbmFtZTsKICAgICAgICAgVmVjdG9y
PExheWVySUQ+IGNoaWxkcmVuOwpAQCAtNzEsNiArOTMsMTYgQEAgcHVibGljOgogICAgICAgICBX
ZWJDb3JlOjpGbG9hdFNpemUgc2l6ZTsKICAgICAgICAgV2ViQ29yZTo6Q29sb3IgYmFja2dyb3Vu
ZENvbG9yOwogICAgICAgICBXZWJDb3JlOjpGbG9hdFBvaW50M0QgYW5jaG9yUG9pbnQ7CisgICAg
ICAgIGZsb2F0IGJvcmRlcldpZHRoOworICAgICAgICBXZWJDb3JlOjpDb2xvciBib3JkZXJDb2xv
cjsKKyAgICAgICAgZmxvYXQgb3BhY2l0eTsKKyAgICAgICAgV2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtOworICAgICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBzdWJsYXllclRyYW5zZm9ybTsKKyAgICAgICAgYm9vbCBoaWRkZW47CisgICAgICAgIGJvb2wg
Z2VvbWV0cnlGbGlwcGVkOworICAgICAgICBib29sIGRvdWJsZVNpZGVkOworICAgICAgICBib29s
IG1hc2tzVG9Cb3VuZHM7CisgICAgICAgIGJvb2wgb3BhcXVlOwogICAgIH07CiAKICAgICBleHBs
aWNpdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbigpOwpAQCAtODIsMTggKzExNCwyMSBAQCBw
dWJsaWM6CiAgICAgTGF5ZXJJRCByb290TGF5ZXJJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExh
eWVySUQ7IH0KICAgICB2b2lkIHNldFJvb3RMYXllcklEKExheWVySUQgcm9vdExheWVySUQpOwog
ICAgIHZvaWQgbGF5ZXJQcm9wZXJ0aWVzQ2hhbmdlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqLCBM
YXllclByb3BlcnRpZXMmKTsKKyAgICB2b2lkIHNldENyZWF0ZWRMYXllcnMoVmVjdG9yPExheWVy
Q3JlYXRpb25Qcm9wZXJ0aWVzPik7CiAgICAgdm9pZCBzZXREZXN0cm95ZWRMYXllcklEcyhWZWN0
b3I8TGF5ZXJJRD4pOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcCgpIGNvbnN0Owog
I2VuZGlmCiAKKyAgICBWZWN0b3I8TGF5ZXJDcmVhdGlvblByb3BlcnRpZXM+IGNyZWF0ZWRMYXll
cnMoKSBjb25zdCB7IHJldHVybiBtX2NyZWF0ZWRMYXllcnM7IH0KICAgICBIYXNoTWFwPExheWVy
SUQsIExheWVyUHJvcGVydGllcz4gY2hhbmdlZExheWVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hh
bmdlZExheWVyUHJvcGVydGllczsgfQogICAgIFZlY3RvcjxMYXllcklEPiBkZXN0cm95ZWRMYXll
cnMoKSBjb25zdCB7IHJldHVybiBtX2Rlc3Ryb3llZExheWVySURzOyB9CiAKIHByaXZhdGU6CiAg
ICAgTGF5ZXJJRCBtX3Jvb3RMYXllcklEOwogICAgIEhhc2hNYXA8TGF5ZXJJRCwgTGF5ZXJQcm9w
ZXJ0aWVzPiBtX2NoYW5nZWRMYXllclByb3BlcnRpZXM7CisgICAgVmVjdG9yPExheWVyQ3JlYXRp
b25Qcm9wZXJ0aWVzPiBtX2NyZWF0ZWRMYXllcnM7CiAgICAgVmVjdG9yPExheWVySUQ+IG1fZGVz
dHJveWVkTGF5ZXJJRHM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
bWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQppbmRleCAwODQ2MTIxLi4xMDk1MGVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIk1lc3NhZ2VFbmNv
ZGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCIKICNpbXBvcnQgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0U3RyZWFtLmg+CiAjaW1w
b3J0IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAKQEAgLTM4LDYgKzM5LDI3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAorUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRp
b25Qcm9wZXJ0aWVzOjpMYXllckNyZWF0aW9uUHJvcGVydGllcygpCit7Cit9CisKK3ZvaWQgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIg
PDwgbGF5ZXJJRDsKKyAgICBlbmNvZGVyLmVuY29kZUVudW0odHlwZSk7Cit9CisKK2Jvb2wgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyQ3JlYXRpb25Qcm9wZXJ0aWVzOjpkZWNvZGUo
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBMYXllckNyZWF0aW9uUHJvcGVydGll
cyYgcmVzdWx0KQoreworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmxheWVySUQpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1
bHQudHlwZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQor
CiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpMYXllclByb3Bl
cnRpZXMoKQogICAgIDogY2hhbmdlZFByb3BlcnRpZXMoTm9DaGFuZ2UpCiB7CkBAIC00NSw3ICs2
Nyw3IEBAIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVy
UHJvcGVydGllcygpCiAKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IHsKLSAgICBlbmNvZGVyIDw8IGNoYW5nZWRQcm9wZXJ0aWVzOworICAgIGVuY29kZXIuZW5jb2Rl
RW51bShjaGFuZ2VkUHJvcGVydGllcyk7CiAKICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBO
YW1lQ2hhbmdlZCkKICAgICAgICAgZW5jb2RlciA8PCBuYW1lOwpAQCAtNjQsMTEgKzg2LDQxIEBA
IHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2Rl
KENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlCiAKICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBB
bmNob3JQb2ludENoYW5nZWQpCiAgICAgICAgIGVuY29kZXIgPDwgYW5jaG9yUG9pbnQ7CisKKyAg
ICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBCb3JkZXJXaWR0aENoYW5nZWQpCisgICAgICAgIGVu
Y29kZXIgPDwgYm9yZGVyV2lkdGg7CisKKyAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBCb3Jk
ZXJDb2xvckNoYW5nZWQpCisgICAgICAgIGVuY29kZXIgPDwgYm9yZGVyQ29sb3I7CisKKyAgICBp
ZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBPcGFjaXR5Q2hhbmdlZCkKKyAgICAgICAgZW5jb2RlciA8
PCBvcGFjaXR5OworCisgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzICYgVHJhbnNmb3JtQ2hhbmdl
ZCkKKyAgICAgICAgZW5jb2RlciA8PCB0cmFuc2Zvcm07CisKKyAgICBpZiAoY2hhbmdlZFByb3Bl
cnRpZXMgJiBTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpCisgICAgICAgIGVuY29kZXIgPDwgc3Vi
bGF5ZXJUcmFuc2Zvcm07CisKKyAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBIaWRkZW5DaGFu
Z2VkKQorICAgICAgICBlbmNvZGVyIDw8IGhpZGRlbjsKKworICAgIGlmIChjaGFuZ2VkUHJvcGVy
dGllcyAmIEdlb21ldHJ5RmxpcHBlZENoYW5nZWQpCisgICAgICAgIGVuY29kZXIgPDwgZ2VvbWV0
cnlGbGlwcGVkOworCisgICAgaWYgKGNoYW5nZWRQcm9wZXJ0aWVzICYgRG91YmxlU2lkZWRDaGFu
Z2VkKQorICAgICAgICBlbmNvZGVyIDw8IGRvdWJsZVNpZGVkOworCisgICAgaWYgKGNoYW5nZWRQ
cm9wZXJ0aWVzICYgTWFza3NUb0JvdW5kc0NoYW5nZWQpCisgICAgICAgIGVuY29kZXIgPDwgbWFz
a3NUb0JvdW5kczsKKworICAgIGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIE9wYXF1ZUNoYW5nZWQp
CisgICAgICAgIGVuY29kZXIgPDwgb3BhcXVlOwogfQogCiBib29sIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXImIGRlY29kZXIsIExheWVyUHJvcGVydGllcyYgcmVzdWx0KQogewotICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzKSkKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlRW51bShyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgTmFtZUNoYW5nZWQpIHsKQEAg
LTgwLDcgKzEzMiw3IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlCiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmNoaWxkcmVuKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgICAgICBmb3IgKGF1dG8gbGF5ZXJJRDogcmVzdWx0LmNoaWxkcmVuKSB7CisgICAgICAg
IGZvciAoYXV0byBsYXllcklEIDogcmVzdWx0LmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAo
IWxheWVySUQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0x
MDYsNiArMTU4LDU2IEBAIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJv
cGVydGllczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEJv
cmRlcldpZHRoQ2hhbmdlZCkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5i
b3JkZXJXaWR0aCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYg
KHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEJvcmRlckNvbG9yQ2hhbmdlZCkgeworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5ib3JkZXJDb2xvcikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAm
IE9wYWNpdHlDaGFuZ2VkKSB7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm9w
YWNpdHkpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChyZXN1
bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBUcmFuc2Zvcm1DaGFuZ2VkKSB7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRyYW5zZm9ybSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIFN1YmxheWVy
VHJhbnNmb3JtQ2hhbmdlZCkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5z
dWJsYXllclRyYW5zZm9ybSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKHJlc3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEhpZGRlbkNoYW5nZWQpIHsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaGlkZGVuKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgR2Vv
bWV0cnlGbGlwcGVkQ2hhbmdlZCkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5nZW9tZXRyeUZsaXBwZWQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3BlcnRpZXMgJiBEb3VibGVTaWRlZENoYW5nZWQpIHsK
KyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZG91YmxlU2lkZWQpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmIChyZXN1bHQuY2hhbmdlZFByb3Bl
cnRpZXMgJiBNYXNrc1RvQm91bmRzQ2hhbmdlZCkgeworICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5tYXNrc1RvQm91bmRzKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAocmVzdWx0LmNoYW5nZWRQcm9wZXJ0aWVzICYgT3BhcXVlQ2hhbmdlZCkg
eworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5vcGFxdWUpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMjAs
NiArMjIyLDcgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246On5SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbigpCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjplbmNvZGUoQ29y
ZUlQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXIgPDwg
bV9yb290TGF5ZXJJRDsKKyAgICBlbmNvZGVyIDw8IG1fY3JlYXRlZExheWVyczsKICAgICBlbmNv
ZGVyIDw8IG1fY2hhbmdlZExheWVyUHJvcGVydGllczsKICAgICBlbmNvZGVyIDw8IG1fZGVzdHJv
eWVkTGF5ZXJJRHM7CiB9CkBAIC0xMzEsNiArMjM0LDkgQEAgYm9vbCBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgUmVt
b3QKICAgICBpZiAoIXJlc3VsdC5tX3Jvb3RMYXllcklEKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2NyZWF0ZWRMYXllcnMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2No
YW5nZWRMYXllclByb3BlcnRpZXMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1Niw2
ICsyNjIsMTEgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6bGF5ZXJQcm9wZXJ0
aWVzQ2hhbmdlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIHIKICAgICBtX2NoYW5nZWRMYXllclBy
b3BlcnRpZXMuc2V0KHJlbW90ZUxheWVyLT5sYXllcklEKCksIHByb3BlcnRpZXMpOwogfQogCit2
b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpzZXRDcmVhdGVkTGF5ZXJzKFZlY3RvcjxM
YXllckNyZWF0aW9uUHJvcGVydGllcz4gY3JlYXRlZExheWVycykKK3sKKyAgICBtX2NyZWF0ZWRM
YXllcnMgPSBzdGQ6Om1vdmUoY3JlYXRlZExheWVycyk7Cit9CisKIHZvaWQgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246OnNldERlc3Ryb3llZExheWVySURzKFZlY3RvcjxMYXllcklEPiBkZXN0
cm95ZWRMYXllcklEcykKIHsKICAgICBtX2Rlc3Ryb3llZExheWVySURzID0gc3RkOjptb3ZlKGRl
c3Ryb3llZExheWVySURzKTsKQEAgLTE2OSw2ICsyODAsMjYgQEAgc3RhdGljIHZvaWQgd3JpdGVJ
bmRlbnQoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgaW50IGluZGVudCkKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKIH0KIAorc3RhdGljIHZvaWQgZHVtcFByb3BlcnR5KFN0cmluZ0J1aWxk
ZXImIGJ1aWxkZXIsIFN0cmluZyBuYW1lLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtKQoreworICAgIGlmICh0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICB3cml0ZUluZGVudChidWlsZGVy
LCAzKTsKKyAgICBidWlsZGVyLmFwcGVuZCgiKCIpOworICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUp
OworICAgIGJ1aWxkZXIuYXBwZW5kKCJcbiIpOworCisgICAgVGV4dFN0cmVhbSB0czsKKyAgICB0
cyA8PCAiICAgIFsiIDw8IHRyYW5zZm9ybS5tMTEoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0xMigp
IDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTEzKCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMTQoKSA8PCAi
XVxuIjsKKyAgICB0cyA8PCAiICAgIFsiIDw8IHRyYW5zZm9ybS5tMjEoKSA8PCAiICIgPDwgdHJh
bnNmb3JtLm0yMigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTIzKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tMjQoKSA8PCAiXVxuIjsKKyAgICB0cyA8PCAiICAgIFsiIDw8IHRyYW5zZm9ybS5tMzEoKSA8
PCAiICIgPDwgdHJhbnNmb3JtLm0zMigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTMzKCkgPDwgIiAi
IDw8IHRyYW5zZm9ybS5tMzQoKSA8PCAiXVxuIjsKKyAgICB0cyA8PCAiICAgIFsiIDw8IHRyYW5z
Zm9ybS5tNDEoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm00MigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0u
bTQzKCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tNDQoKSA8PCAiXSkiOworCisgICAgYnVpbGRlci5h
cHBlbmQodHMucmVsZWFzZSgpKTsKK30KKwogc3RhdGljIHZvaWQgZHVtcENoYW5nZWRMYXllcnMo
U3RyaW5nQnVpbGRlciYgYnVpbGRlciwgY29uc3QgSGFzaE1hcDxSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TGF5ZXJJRCwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVy
dGllcz4mIGNoYW5nZWRMYXllclByb3BlcnRpZXMpCiB7CiAgICAgaWYgKGNoYW5nZWRMYXllclBy
b3BlcnRpZXMuaXNFbXB0eSgpKQpAQCAtMTgyLDcgKzMxMyw3IEBAIHN0YXRpYyB2b2lkIGR1bXBD
aGFuZ2VkTGF5ZXJzKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIGNvbnN0IEhhc2hNYXA8UmVtb3Rl
TGF5ZXJUCiAgICAgY29weUtleXNUb1ZlY3RvcihjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzLCBsYXll
cklEcyk7CiAgICAgc3RkOjpzb3J0KGxheWVySURzLmJlZ2luKCksIGxheWVySURzLmVuZCgpKTsK
IAotICAgIGZvciAoYXV0byBsYXllcklEOiBsYXllcklEcykgeworICAgIGZvciAoYXV0byBsYXll
cklEIDogbGF5ZXJJRHMpIHsKICAgICAgICAgY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVyUHJvcGVydGllcyYgbGF5ZXJQcm9wZXJ0aWVzID0gY2hhbmdlZExheWVyUHJvcGVy
dGllcy5nZXQobGF5ZXJJRCk7CiAKICAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMik7CkBA
IC0yNTIsNiArMzgzLDc2IEBAIHN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIGNvbnN0IEhhc2hNYXA8UmVtb3RlTGF5ZXJUCiAgICAgICAgICAgICBi
dWlsZGVyLmFwcGVuZCgnKScpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGxheWVyUHJvcGVy
dGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3Jk
ZXJDb2xvckNoYW5nZWQpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAg
ICAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMyk7CisgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgiKGJvcmRlckNvbG9yICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGF5ZXJQ
cm9wZXJ0aWVzLmJvcmRlckNvbG9yLnNlcmlhbGl6ZWQoKSk7CisgICAgICAgICAgICBidWlsZGVy
LmFwcGVuZCgnKScpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJXaWR0
aENoYW5nZWQpIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAg
ICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgi
KGJvcmRlcldpZHRoICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobGF5ZXJQ
cm9wZXJ0aWVzLmJvcmRlcldpZHRoKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok9wYWNpdHlDaGFuZ2VkKSB7CisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgICAgIHdyaXRlSW5kZW50KGJ1
aWxkZXIsIDMpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihvcGFjaXR5ICIpOworICAg
ICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIobGF5ZXJQcm9wZXJ0aWVzLm9wYWNpdHkpOwor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6VHJhbnNmb3JtQ2hhbmdlZCkKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eShidWls
ZGVyLCAidHJhbnNmb3JtIiwgbGF5ZXJQcm9wZXJ0aWVzLnRyYW5zZm9ybSk7CisKKyAgICAgICAg
aWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpCisgICAgICAgICAgICBkdW1wUHJv
cGVydHkoYnVpbGRlciwgInN1YmxheWVyVHJhbnNmb3JtIiwgbGF5ZXJQcm9wZXJ0aWVzLnN1Ymxh
eWVyVHJhbnNmb3JtKTsKKworICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9w
ZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkhpZGRlbkNoYW5nZWQpIHsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgd3JpdGVJbmRlbnQo
YnVpbGRlciwgMyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGhpZGRlbiAiKTsKKyAg
ICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxheWVyUHJvcGVydGllcy5oaWRkZW4gPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246Okdlb21ldHJ5RmxpcHBlZENoYW5nZWQpIHsKKyAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRl
ciwgMyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKGdlb21ldHJ5RmxpcHBlZCAiKTsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxheWVyUHJvcGVydGllcy5nZW9tZXRyeUZsaXBw
ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkRvdWJsZVNpZGVkQ2hhbmdlZCkgewor
ICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJ1xuJyk7CisgICAgICAgICAgICB3cml0ZUluZGVu
dChidWlsZGVyLCAzKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIoZG91YmxlU2lkZWQg
Iik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChsYXllclByb3BlcnRpZXMuZG91YmxlU2lk
ZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tzVG9Cb3VuZHNDaGFuZ2VkKSB7
CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnXG4nKTsKKyAgICAgICAgICAgIHdyaXRlSW5k
ZW50KGJ1aWxkZXIsIDMpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoIihtYXNrc1RvQm91
bmRzICIpOworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQobGF5ZXJQcm9wZXJ0aWVzLm1hc2tz
VG9Cb3VuZHMgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQ
cm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok9wYXF1ZUNoYW5nZWQpIHsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgICAgICAgICAgd3JpdGVJbmRl
bnQoYnVpbGRlciwgMyk7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKG9wYXF1ZSAiKTsK
KyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxheWVyUHJvcGVydGllcy5vcGFxdWUgPyAidHJ1
ZSIgOiAiZmFsc2UiKTsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CisgICAgICAg
IH0KKwogICAgICAgICBidWlsZGVyLmFwcGVuZCgiKVxuIik7CiAgICAgfQogfQpAQCAtMjY3LDYg
KzQ2OCw0NiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkdW1wKCkgY29uc3QK
ICAgICBidWlsZGVyLmFwcGVuZE51bWJlcihtX3Jvb3RMYXllcklEKTsKICAgICBidWlsZGVyLmFw
cGVuZCgiKVxuIik7CiAKKyAgICBpZiAoIW1fY3JlYXRlZExheWVycy5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwgMSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIo
Y3JlYXRlZC1sYXllcnNcbiIpOworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGNyZWF0ZWRMYXll
ciA6IG1fY3JlYXRlZExheWVycykgeworICAgICAgICAgICAgd3JpdGVJbmRlbnQoYnVpbGRlciwg
Mik7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgiKCIpOworICAgICAgICAgICAgc3dpdGNo
IChjcmVhdGVkTGF5ZXIudHlwZSkgeworICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZUxheWVyOgorICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVdlYkxheWVyOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJsYXllciIpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCJ0cmFuc2Zvcm0tbGF5ZXIiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJUaWxlZExheWVyOgorICAgICAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ0aWxlZC1sYXllciIpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ0xheWVyOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJ0aWxlZC1iYWNraW5n
LWxheWVyIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBsYXRm
b3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVkQmFja2luZ0xheWVyOgorICAgICAgICAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKCJwYWdlLXRpbGVkLWJhY2tpbmctbGF5ZXIiKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5
cGVSb290TGF5ZXI6CisgICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoInJvb3QtbGF5ZXIi
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVBVlBsYXllckxheWVyOgorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJhdi1wbGF5ZXItbGF5ZXIiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206CisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoImN1c3RvbS1sYXllciIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kTnVtYmVyKGNyZWF0ZWRMYXllci5sYXllcklEKTsKKyAgICAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKCIpXG4iKTsKKyAgICAgICAgfQorICAgICAgICBidWlsZGVy
LmFwcGVuZCgiKVxuIik7CisgICAgfQorCiAgICAgZHVtcENoYW5nZWRMYXllcnMoYnVpbGRlciwg
bV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKTsKIAogICAgIGlmICghbV9kZXN0cm95ZWRMYXllcklE
cy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
UmVtb3RlTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1v
dGVMYXllclRyZWVIb3N0LmgKaW5kZXggZTBmMDUwNC4uNmU2ZGI2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVIb3N0LmgKQEAgLTI4LDYg
KzI4LDcgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNBTGF5
ZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KIApAQCAtNDksNyArNTAsOCBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMu
CiAgICAgdm9pZCBjb21taXQoY29uc3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24mKTsKIAot
ICAgIENBTGF5ZXIgKmdldE9yQ3JlYXRlTGF5ZXIoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVySUQgbGF5ZXJJRCk7CisgICAgQ0FMYXllciAqZ2V0TGF5ZXIoUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb246OkxheWVySUQpOworICAgIENBTGF5ZXIgKmNyZWF0ZUxheWVyKFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyk7CiAKICAgICBXZWJQ
YWdlUHJveHkqIG1fd2ViUGFnZVByb3h5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggNzI4OTkyNC4uYjEwY2U1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVMYXllclRyZWVI
b3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVl
SG9zdC5tbQpAQCAtNjgsNzAgKzY4LDEyNiBAQCBSZW1vdGVMYXllclRyZWVIb3N0Ojp+UmVtb3Rl
TGF5ZXJUcmVlSG9zdCgpCiAgICAgbV93ZWJQYWdlUHJveHktPnByb2Nlc3MoKS0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVIb3N0OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CiB9CiAKK3N0YXRpYyBSZXRhaW5Q
dHI8Q0dDb2xvclJlZj4gY2dDb2xvckZyb21Db2xvcihDb2xvciBjb2xvcikKK3sKKyAgICBDR0Zs
b2F0IGNvbXBvbmVudHNbNF07CisgICAgY29sb3IuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21w
b25lbnRzWzFdLCBjb21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKKworICAgIFJldGFpblB0
cjxDR0NvbG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0
ZURldmljZVJHQigpKTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY2dDb2xvciA9IGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb21wb25lbnRzKSk7CisgICAgcmV0
dXJuIGNnQ29sb3I7Cit9CisKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y29tbWl0KGNvbnN0
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKIHsKLSAgICBDQUxheWVy
ICpyb290TGF5ZXIgPSBnZXRPckNyZWF0ZUxheWVyKHRyYW5zYWN0aW9uLnJvb3RMYXllcklEKCkp
OworI2lmbmRlZiBOREVCVUcKKyAgICB0cmFuc2FjdGlvbi5kdW1wKCk7CisjZW5kaWYKKworICAg
IGZvciAoYXV0byBjcmVhdGVkTGF5ZXIgOiB0cmFuc2FjdGlvbi5jcmVhdGVkTGF5ZXJzKCkpCisg
ICAgICAgIGNyZWF0ZUxheWVyKGNyZWF0ZWRMYXllcik7CisKKyAgICBDQUxheWVyICpyb290TGF5
ZXIgPSBnZXRMYXllcih0cmFuc2FjdGlvbi5yb290TGF5ZXJJRCgpKTsKICAgICBpZiAobV9yb290
TGF5ZXIgIT0gcm9vdExheWVyKSB7CiAgICAgICAgIG1fcm9vdExheWVyID0gcm9vdExheWVyOwog
ICAgICAgICBtX3dlYlBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXll
cihtX3Jvb3RMYXllcik7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwotICAgIHRyYW5zYWN0aW9u
LmR1bXAoKTsKLSNlbmRpZgotCiAgICAgZm9yIChhdXRvIGNoYW5nZWRMYXllciA6IHRyYW5zYWN0
aW9uLmNoYW5nZWRMYXllcnMoKSkgewogICAgICAgICBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6TGF5ZXJJRCBsYXllcklEID0gY2hhbmdlZExheWVyLmtleTsKICAgICAgICAgY29uc3QgYXV0
byYgcHJvcGVydGllcyA9IGNoYW5nZWRMYXllci52YWx1ZTsKIAotICAgICAgICBDQUxheWVyICpz
dWJsYXllciA9IGdldE9yQ3JlYXRlTGF5ZXIobGF5ZXJJRCk7CisgICAgICAgIENBTGF5ZXIgKmxh
eWVyID0gZ2V0TGF5ZXIobGF5ZXJJRCk7CisgICAgICAgIEFTU0VSVChsYXllcik7CiAKICAgICAg
ICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6TmFtZUNoYW5nZWQpCi0gICAgICAgICAgICBbc3VibGF5ZXIgc2V0TmFtZTpwcm9w
ZXJ0aWVzLm5hbWVdOworICAgICAgICAgICAgbGF5ZXIubmFtZSA9IHByb3BlcnRpZXMubmFtZTsK
IAogICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpQb3NpdGlvbkNoYW5nZWQpIHsKLSAgICAgICAgICAgIFtzdWJsYXll
ciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZShwcm9wZXJ0aWVzLnBvc2l0aW9uLngoKSwgcHJvcGVy
dGllcy5wb3NpdGlvbi55KCkpXTsKLSAgICAgICAgICAgIFtzdWJsYXllciBzZXRaUG9zaXRpb246
cHJvcGVydGllcy5wb3NpdGlvbi56KCldOworICAgICAgICAgICAgbGF5ZXIucG9zaXRpb24gPSBD
R1BvaW50TWFrZShwcm9wZXJ0aWVzLnBvc2l0aW9uLngoKSwgcHJvcGVydGllcy5wb3NpdGlvbi55
KCkpOworICAgICAgICAgICAgbGF5ZXIuelBvc2l0aW9uID0gcHJvcGVydGllcy5wb3NpdGlvbi56
KCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGll
cyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpBbmNob3JQb2ludENoYW5nZWQpIHsKLSAg
ICAgICAgICAgIFtzdWJsYXllciBzZXRBbmNob3JQb2ludDpDR1BvaW50TWFrZShwcm9wZXJ0aWVz
LmFuY2hvclBvaW50LngoKSwgcHJvcGVydGllcy5hbmNob3JQb2ludC55KCkpXTsKLSAgICAgICAg
ICAgIFtzdWJsYXllciBzZXRBbmNob3JQb2ludFo6cHJvcGVydGllcy5hbmNob3JQb2ludC56KCld
OworICAgICAgICAgICAgbGF5ZXIuYW5jaG9yUG9pbnQgPSBDR1BvaW50TWFrZShwcm9wZXJ0aWVz
LmFuY2hvclBvaW50LngoKSwgcHJvcGVydGllcy5hbmNob3JQb2ludC55KCkpOworICAgICAgICAg
ICAgbGF5ZXIuYW5jaG9yUG9pbnRaID0gcHJvcGVydGllcy5hbmNob3JQb2ludC56KCk7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaXplQ2hhbmdlZCkKLSAgICAgICAgICAgIFtzdWJsYXll
ciBzZXRCb3VuZHM6RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgcHJvcGVydGllcy5zaXplKV07Cisg
ICAgICAgICAgICBsYXllci5ib3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBwcm9wZXJ0
aWVzLnNpemUpOwogCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tncm91bmRDb2xvckNoYW5nZWQpIHsKLSAg
ICAgICAgICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsKLSAgICAgICAgICAgIHByb3BlcnRpZXMu
YmFja2dyb3VuZENvbG9yLmdldFJHQkEoY29tcG9uZW50c1swXSwgY29tcG9uZW50c1sxXSwgY29t
cG9uZW50c1syXSwgY29tcG9uZW50c1szXSk7Ci0KLSAgICAgICAgICAgIFJldGFpblB0cjxDR0Nv
bG9yU3BhY2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmlj
ZVJHQigpKTsKLSAgICAgICAgICAgIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjb2xvciA9IGFkb3B0
Q0YoQ0dDb2xvckNyZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb21wb25lbnRzKSk7Ci0KLSAgICAg
ICAgICAgIFtzdWJsYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y29sb3IuZ2V0KCldOwotICAgICAg
ICB9CisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tncm91bmRDb2xvckNoYW5nZWQpCisgICAgICAgICAgICBs
YXllci5iYWNrZ3JvdW5kQ29sb3IgPSBjZ0NvbG9yRnJvbUNvbG9yKHByb3BlcnRpZXMuYmFja2dy
b3VuZENvbG9yKS5nZXQoKTsKIAogICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVy
dGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKICAg
ICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gY2hpbGRyZW4gPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6cHJvcGVydGllcy5jaGlsZHJl
bi5zaXplKCldKTsKICAgICAgICAgICAgIGZvciAoYXV0byBjaGlsZCA6IHByb3BlcnRpZXMuY2hp
bGRyZW4pCi0gICAgICAgICAgICAgICAgW2NoaWxkcmVuIGFkZE9iamVjdDpnZXRPckNyZWF0ZUxh
eWVyKGNoaWxkKV07Ci0gICAgICAgICAgICBbc3VibGF5ZXIgc2V0U3VibGF5ZXJzOmNoaWxkcmVu
LmdldCgpXTsKKyAgICAgICAgICAgICAgICBbY2hpbGRyZW4gYWRkT2JqZWN0OmdldExheWVyKGNo
aWxkKV07CisgICAgICAgICAgICBsYXllci5zdWJsYXllcnMgPSBjaGlsZHJlbi5nZXQoKTsKICAg
ICAgICAgfQorCisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRlckNvbG9yQ2hhbmdlZCkKKyAgICAgICAgICAg
IGxheWVyLmJvcmRlckNvbG9yID0gY2dDb2xvckZyb21Db2xvcihwcm9wZXJ0aWVzLmJvcmRlckNv
bG9yKS5nZXQoKTsKKworICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAm
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJXaWR0aENoYW5nZWQpCisgICAgICAg
ICAgICBsYXllci5ib3JkZXJXaWR0aCA9IHByb3BlcnRpZXMuYm9yZGVyV2lkdGg7CisKKyAgICAg
ICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6T3BhY2l0eUNoYW5nZWQpCisgICAgICAgICAgICBsYXllci5vcGFjaXR5ID0gcHJv
cGVydGllcy5vcGFjaXR5OworCisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRyYW5zZm9ybUNoYW5nZWQpCisgICAg
ICAgICAgICBsYXllci50cmFuc2Zvcm0gPSBwcm9wZXJ0aWVzLnRyYW5zZm9ybTsKKworICAgICAg
ICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5z
YWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpCisgICAgICAgICAgICBsYXllci5zdWJs
YXllclRyYW5zZm9ybSA9IHByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm07CisKKyAgICAgICAg
aWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6SGlkZGVuQ2hhbmdlZCkKKyAgICAgICAgICAgIGxheWVyLmhpZGRlbiA9IHByb3BlcnRp
ZXMuaGlkZGVuOworCisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okdlb21ldHJ5RmxpcHBlZENoYW5nZWQpCisgICAg
ICAgICAgICBsYXllci5nZW9tZXRyeUZsaXBwZWQgPSBwcm9wZXJ0aWVzLmdlb21ldHJ5RmxpcHBl
ZDsKKworICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpEb3VibGVTaWRlZENoYW5nZWQpCisgICAgICAgICAgICBsYXll
ci5kb3VibGVTaWRlZCA9IHByb3BlcnRpZXMuZG91YmxlU2lkZWQ7CisKKyAgICAgICAgaWYgKHBy
b3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
TWFza3NUb0JvdW5kc0NoYW5nZWQpCisgICAgICAgICAgICBsYXllci5tYXNrc1RvQm91bmRzID0g
cHJvcGVydGllcy5tYXNrc1RvQm91bmRzOworCisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5n
ZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok9wYXF1ZUNoYW5nZWQp
CisgICAgICAgICAgICBsYXllci5vcGFxdWUgPSBwcm9wZXJ0aWVzLm9wYXF1ZTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8gZGVzdHJveWVkTGF5ZXIgOiB0cmFuc2FjdGlvbi5kZXN0cm95ZWRMYXll
cnMoKSkKICAgICAgICAgbV9sYXllcnMucmVtb3ZlKGRlc3Ryb3llZExheWVyKTsKIH0KIAotQ0FM
YXllciAqUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Z2V0T3JDcmVhdGVMYXllcihSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TGF5ZXJJRCBsYXllcklEKQorQ0FMYXllciAqUmVtb3RlTGF5ZXJUcmVl
SG9zdDo6Z2V0TGF5ZXIoUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVySUQgbGF5ZXJJ
RCkKK3sKKyAgICByZXR1cm4gbV9sYXllcnMuZ2V0KGxheWVySUQpLmdldCgpOworfQorCisKK0NB
TGF5ZXIgKlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllckNyZWF0aW9uUHJvcGVydGllcyBwcm9wZXJ0aWVzKQogewotICAgIFJl
dGFpblB0cjxDQUxheWVyPiYgbGF5ZXIgPSBtX2xheWVycy5hZGQobGF5ZXJJRCwgbnVsbHB0ciku
aXRlcmF0b3ItPnZhbHVlOwotICAgIGlmICghbGF5ZXIpIHsKKyAgICBSZXRhaW5QdHI8Q0FMYXll
cj4mIGxheWVyID0gbV9sYXllcnMuYWRkKHByb3BlcnRpZXMubGF5ZXJJRCwgbnVsbHB0cikuaXRl
cmF0b3ItPnZhbHVlOworCisgICAgQVNTRVJUKCFsYXllcik7CisKKyAgICBzd2l0Y2ggKHByb3Bl
cnRpZXMudHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoK
KyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViTGF5ZXI6CisgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXllcjoKICAgICAgICAgbGF5ZXIgPSBhZG9w
dE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pOwotICAgICAgICBbbGF5ZXIgc2V0U3R5bGU6QHsg
QCJhY3Rpb25zIiA6IG51bGxBY3Rpb25zRGljdGlvbmFyeSgpIH1dOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CisgICAg
ICAgIGxheWVyID0gYWRvcHROUyhbW0NBVHJhbnNmb3JtTGF5ZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogCisgICAgW2xheWVyIHNldFN0eWxlOkB7IEAiYWN0aW9ucyIgOiBudWxsQWN0aW9u
c0RpY3Rpb25hcnkoKSB9XTsKKwogICAgIHJldHVybiBsYXllci5nZXQoKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVy
Q0FSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvR3JhcGhp
Y3NMYXllckNBUmVtb3RlLmgKaW5kZXggZDc5YzhmNi4uNzZlOTkzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9HcmFwaGljc0xheWVyQ0FSZW1vdGUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL0dyYXBoaWNzTGF5
ZXJDQVJlbW90ZS5oCkBAIC01Myw2ICs1Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllcj4gY3JlYXRlUGxhdGZvcm1DQUxheWVyKFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlLCBXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5
ZXJDbGllbnQqIG93bmVyKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6UGxhdGZvcm1DQUxheWVyPiBjcmVhdGVQbGF0Zm9ybUNBTGF5ZXIoUGxhdGZvcm1MYXllcios
IFdlYkNvcmU6OlBsYXRmb3JtQ0FMYXllckNsaWVudCogb3duZXIpIE9WRVJSSURFOwogCisgICAg
Ly8gTm8gYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBmb3Igbm93LgorICAgIHZpcnR1YWwgYm9vbCBh
ZGRBbmltYXRpb24oY29uc3QgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgY29uc3QgV2ViQ29yZTo6QW5pbWF0aW9uKiwgY29uc3QgU3RyaW5nJiwg
ZG91YmxlKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgUmVtb3RlTGF5ZXJUcmVl
Q29udGV4dCogbV9jb250ZXh0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCmlu
ZGV4IDgxNDc2OTUuLmIxMmI5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKQEAg
LTU5LDYgKzU5LDggQEAgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGUoTGF5ZXJUeXBlIGxheWVyVHlwZSwgUGxhdGZvcm1DQUxheWUKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQogewogICAgIG1fbGF5ZXJUeXBlID0gbGF5ZXJUeXBlOworCisgICAgbV9jb250ZXh0
LT5sYXllcldhc0NyZWF0ZWQodGhpcywgbGF5ZXJUeXBlKTsKIH0KIAogUGFzc1JlZlB0cjxQbGF0
Zm9ybUNBTGF5ZXI+IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y2xvbmUoUGxhdGZvcm1DQUxheWVy
Q2xpZW50KiBvd25lcikgY29uc3QKQEAgLTEwOSw2ICsxMTEsNyBAQCBQbGF0Zm9ybUNBTGF5ZXIq
IFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c3VwZXJsYXllcigpIGNvbnN0CiAKIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjpyZW1vdmVGcm9tU3VwZXJsYXllcigpCiB7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXll
cnMoY29uc3QgUGxhdGZvcm1DQUxheWVyTGlzdCYgbGlzdCkKQEAgLTEzNywxMCArMTQwLDEyIEBA
IHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjppbnNlcnRTdWJsYXllcihQbGF0Zm9ybUNBTGF5
ZXIqIGxheWVyLCBzaXplX3QgaW5kZXgpCiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpy
ZXBsYWNlU3VibGF5ZXIoUGxhdGZvcm1DQUxheWVyKiByZWZlcmVuY2UsIFBsYXRmb3JtQ0FMYXll
ciogbGF5ZXIpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgUGxhdGZv
cm1DQUxheWVyUmVtb3RlOjphZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXIqIHNvdXJjZSkK
IHsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJS
ZW1vdGU6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFu
aW1hdGlvbiogYW5pbWF0aW9uKQpAQCAtMTYyLDExICsxNjcsMTMgQEAgdm9pZCBQbGF0Zm9ybUNB
TGF5ZXJSZW1vdGU6OnNldE1hc2soUGxhdGZvcm1DQUxheWVyKiBsYXllcikKIAogYm9vbCBQbGF0
Zm9ybUNBTGF5ZXJSZW1vdGU6OmlzT3BhcXVlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZmFsc2U7
CisgICAgcmV0dXJuIG1fcHJvcGVydGllcy5vcGFxdWU7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXRPcGFxdWUoYm9vbCB2YWx1ZSkKIHsKKyAgICBtX3Byb3BlcnRpZXMub3Bh
cXVlID0gdmFsdWU7CisgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6T3BhcXVlQ2hhbmdlZCk7CiB9CiAKIEZsb2F0UmVjdCBQ
bGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmJvdW5kcygpIGNvbnN0CkBAIC0yMDQsNDYgKzIxMSw1OCBA
QCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0QW5jaG9yUG9pbnQoY29uc3QgRmxvYXRQ
b2ludDNEJiB2YWx1ZSkKIAogVHJhbnNmb3JtYXRpb25NYXRyaXggUGxhdGZvcm1DQUxheWVyUmVt
b3RlOjp0cmFuc2Zvcm0oKSBjb25zdAogewotICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpOworICAgIHJldHVybiBtX3Byb3BlcnRpZXMudHJhbnNmb3JtOwogfQogCiB2b2lkIFBsYXRm
b3JtQ0FMYXllclJlbW90ZTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB2YWx1ZSkKIHsKKyAgICBtX3Byb3BlcnRpZXMudHJhbnNmb3JtID0gdmFsdWU7CisgICAgbV9w
cm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6VHJhbnNmb3JtQ2hhbmdlZCk7CiB9CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IFBsYXRmb3Jt
Q0FMYXllclJlbW90ZTo6c3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdAogewotICAgIHJldHVybiBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworICAgIHJldHVybiBtX3Byb3BlcnRpZXMuc3VibGF5ZXJU
cmFuc2Zvcm07CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRTdWJsYXllclRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdmFsdWUpCiB7CisgICAgbV9wcm9w
ZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID0gdmFsdWU7CisgICAgbV9wcm9wZXJ0aWVzLm5vdGVQ
cm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5ZXJUcmFu
c2Zvcm1DaGFuZ2VkKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldEhpZGRl
bihib29sIHZhbHVlKQogeworICAgIG1fcHJvcGVydGllcy5oaWRkZW4gPSB2YWx1ZTsKKyAgICBt
X3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpIaWRkZW5DaGFuZ2VkKTsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNl
dEdlb21ldHJ5RmxpcHBlZChib29sIHZhbHVlKQogeworICAgIG1fcHJvcGVydGllcy5nZW9tZXRy
eUZsaXBwZWQgPSB2YWx1ZTsKKyAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2Vk
KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpHZW9tZXRyeUZsaXBwZWRDaGFuZ2VkKTsKIH0K
IAogYm9vbCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmlzRG91YmxlU2lkZWQoKSBjb25zdAogewot
ICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVzLmRvdWJsZVNpZGVkOwog
fQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0RG91YmxlU2lkZWQoYm9vbCB2YWx1
ZSkKIHsKKyAgICBtX3Byb3BlcnRpZXMuZG91YmxlU2lkZWQgPSB2YWx1ZTsKKyAgICBtX3Byb3Bl
cnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2VkKFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpE
b3VibGVTaWRlZENoYW5nZWQpOwogfQogCiBib29sIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6bWFz
a3NUb0JvdW5kcygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBtX3By
b3BlcnRpZXMubWFza3NUb0JvdW5kczsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnNldE1hc2tzVG9Cb3VuZHMoYm9vbCB2YWx1ZSkKIHsKKyAgICBtX3Byb3BlcnRpZXMubWFza3NU
b0JvdW5kcyA9IHZhbHVlOworICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQo
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tzVG9Cb3VuZHNDaGFuZ2VkKTsKIH0KIAog
Ym9vbCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFjY2VsZXJhdGVzRHJhd2luZygpIGNvbnN0CkBA
IC0yODksMTkgKzMwOCwyNSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6c2V0QmFja2dy
b3VuZENvbG9yKGNvbnN0IENvbG9yJiB2YWx1ZSkKIAogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldEJvcmRlcldpZHRoKGZsb2F0IHZhbHVlKQogeworICAgIG1fcHJvcGVydGllcy5ib3Jk
ZXJXaWR0aCA9IHZhbHVlOworICAgIG1fcHJvcGVydGllcy5ub3RlUHJvcGVydGllc0NoYW5nZWQo
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRlcldpZHRoQ2hhbmdlZCk7CiB9CiAKIHZv
aWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRCb3JkZXJDb2xvcihjb25zdCBDb2xvciYgdmFs
dWUpCiB7CisgICAgbV9wcm9wZXJ0aWVzLmJvcmRlckNvbG9yID0gdmFsdWU7CisgICAgbV9wcm9w
ZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
Qm9yZGVyQ29sb3JDaGFuZ2VkKTsKIH0KIAogZmxvYXQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpv
cGFjaXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9wcm9wZXJ0aWVz
Lm9wYWNpdHk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpzZXRPcGFjaXR5KGZs
b2F0IHZhbHVlKQogeworICAgIG1fcHJvcGVydGllcy5vcGFjaXR5ID0gdmFsdWU7CisgICAgbV9w
cm9wZXJ0aWVzLm5vdGVQcm9wZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bjo6T3BhY2l0eUNoYW5nZWQpOwogfQogCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQpAQCAtMzIx
LDYgKzM0Niw4IEBAIGJvb2wgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpmaWx0ZXJzQ2FuQmVDb21w
b3NpdGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlCiAKIHZvaWQgUGxhdGZvcm1DQUxh
eWVyUmVtb3RlOjpzZXROYW1lKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CisgICAgbV9wcm9wZXJ0
aWVzLm5hbWUgPSB2YWx1ZTsKKyAgICBtX3Byb3BlcnRpZXMubm90ZVByb3BlcnRpZXNDaGFuZ2Vk
KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpOYW1lQ2hhbmdlZCk7CiB9CiAKIHZvaWQgUGxh
dGZvcm1DQUxheWVyUmVtb3RlOjpzZXRGcmFtZShjb25zdCBGbG9hdFJlY3QmIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVMYXll
clRyZWVDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZUNvbnRleHQuaAppbmRleCBmMjRhYzQ0Li43ZjE5ZTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90ZUxheWVyVHJlZUNv
bnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1JlbW90
ZUxheWVyVHJlZUNvbnRleHQuaApAQCAtMjYsNyArMjYsOSBAQAogI2lmbmRlZiBSZW1vdGVMYXll
clRyZWVDb250ZXh0X2gKICNkZWZpbmUgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dF9oCiAKKyNpbmNs
dWRlICJSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3Jh
cGhpY3NMYXllckZhY3RvcnkuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvVGltZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTQ0LDYgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2go
KTsKIAorICAgIHZvaWQgbGF5ZXJXYXNDcmVhdGVkKFBsYXRmb3JtQ0FMYXllclJlbW90ZSosIFdl
YkNvcmU6OlBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlKTsKICAgICB2b2lkIGxheWVyV2lsbEJl
RGVzdHJveWVkKFBsYXRmb3JtQ0FMYXllclJlbW90ZSopOwogCiBwcml2YXRlOgpAQCAtNTgsNyAr
NjEsOCBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FMYXllclJlbW90ZT4gbV9y
b290TGF5ZXI7CiAKLSAgICBWZWN0b3I8dWludDY0X3Q+IG1fZGVzdHJveWVkTGF5ZXJzOworICAg
IFZlY3RvcjxSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJDcmVhdGlvblByb3BlcnRp
ZXM+IG1fY3JlYXRlZExheWVyczsKKyAgICBWZWN0b3I8UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkxheWVySUQ+IG1fZGVzdHJveWVkTGF5ZXJzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Jl
bW90ZUxheWVyVHJlZUNvbnRleHQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1JlbW90ZUxheWVyVHJlZUNvbnRleHQubW0KaW5kZXggMmI0MGYzYi4uNjA3OGQ3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9SZW1vdGVM
YXllclRyZWVDb250ZXh0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5tbQpAQCAtNjAsNiArNjAsMTQgQEAgdm9pZCBS
ZW1vdGVMYXllclRyZWVDb250ZXh0OjpzZXRSb290TGF5ZXIoR3JhcGhpY3NMYXllciogcm9vdExh
eWVyKQogICAgIG1fcm9vdExheWVyID0gc3RhdGljX2Nhc3Q8UGxhdGZvcm1DQUxheWVyUmVtb3Rl
Kj4oc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNBUmVtb3RlKj4ocm9vdExheWVyKS0+cGxhdGZv
cm1DQUxheWVyKCkpOwogfQogCit2b2lkIFJlbW90ZUxheWVyVHJlZUNvbnRleHQ6OmxheWVyV2Fz
Q3JlYXRlZChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUqIGxheWVyLCBQbGF0Zm9ybUNBTGF5ZXI6Okxh
eWVyVHlwZSB0eXBlKQoreworICAgIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNy
ZWF0aW9uUHJvcGVydGllcyBjcmVhdGlvblByb3BlcnRpZXM7CisgICAgY3JlYXRpb25Qcm9wZXJ0
aWVzLmxheWVySUQgPSBsYXllci0+bGF5ZXJJRCgpOworICAgIGNyZWF0aW9uUHJvcGVydGllcy50
eXBlID0gdHlwZTsKKyAgICBtX2NyZWF0ZWRMYXllcnMuYXBwZW5kKGNyZWF0aW9uUHJvcGVydGll
cyk7Cit9CisKIHZvaWQgUmVtb3RlTGF5ZXJUcmVlQ29udGV4dDo6bGF5ZXJXaWxsQmVEZXN0cm95
ZWQoUGxhdGZvcm1DQUxheWVyUmVtb3RlKiBsYXllcikKIHsKICAgICBBU1NFUlQoIW1fZGVzdHJv
eWVkTGF5ZXJzLmNvbnRhaW5zKGxheWVyLT5sYXllcklEKCkpKTsKQEAgLTkyLDExICsxMDAsMTIg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVDb250ZXh0OjpmbHVzaExheWVycygpCiAgICAgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb247CiAKICAgICB0cmFuc2FjdGlvbi5zZXRS
b290TGF5ZXJJRChtX3Jvb3RMYXllci0+bGF5ZXJJRCgpKTsKLSAgICB0cmFuc2FjdGlvbi5zZXRE
ZXN0cm95ZWRMYXllcklEcyhzdGQ6Om1vdmUobV9kZXN0cm95ZWRMYXllcnMpKTsKIAogICAgIG1f
d2ViUGFnZS0+bGF5b3V0SWZOZWVkZWQoKTsKICAgICBtX3dlYlBhZ2UtPmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVz
KCk7CiAKKyAgICB0cmFuc2FjdGlvbi5zZXRDcmVhdGVkTGF5ZXJzKHN0ZDo6bW92ZShtX2NyZWF0
ZWRMYXllcnMpKTsKKyAgICB0cmFuc2FjdGlvbi5zZXREZXN0cm95ZWRMYXllcklEcyhzdGQ6Om1v
dmUobV9kZXN0cm95ZWRMYXllcnMpKTsKICAgICBtX3Jvb3RMYXllci0+cmVjdXJzaXZlQnVpbGRU
cmFuc2FjdGlvbih0cmFuc2FjdGlvbik7CiAKICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6OkNvbW1pdCh0cmFuc2FjdGlvbikpOwo=
</data>
<flag name="review"
          id="236911"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>