<?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>123818</bug_id>
          
          <creation_ts>2013-11-05 12:59:28 -0800</creation_ts>
          <short_desc>Remote Layer Tree: Apply layer changes to LayerTypeCustom layers to the custom layer in the Web process, not to the CALayerHost</short_desc>
          <delta_ts>2013-11-05 14:02:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>947292</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-05 12:59:28 -0800</bug_when>
    <thetext>Given the implementation of the remote layer tree at the moment, changes to properties of a LayerTypeCustom PlatformCALayerRemote will get bundled up, shipped to the UI process, and applied to the CALayerHost that is hosting the Web-process-owned custom layer tree.

This is not the intent of code that sets properties on this layer.

It instead intends to affect the platformLayer owned by the aforementioned PlatformCALayerRemote, which in our case happens to live in the Web process.

So, we have to apply these property changes to the correct layer.

I&apos;m going to do this by sharing the code to apply a LayerProperties struct to a CALayer with both processes, and using it when doing a Web process side commit to push the LayerTypeCustom&apos;s layer changes onto its PlatformLayer instead of including them in the transaction.

This means that changes to LayerTypeCustom layers will happen before (and unpredictably out of sync with) the UI process commit, but it&apos;s the best solution I can come up with for now.

This is the last patch required to get &lt;video&gt; working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947297</commentid>
    <comment_count>1</comment_count>
      <attachid>216062</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-05 13:08:55 -0800</bug_when>
    <thetext>Created attachment 216062
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947339</commentid>
    <comment_count>2</comment_count>
      <attachid>216062</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-11-05 13:54:05 -0800</bug_when>
    <thetext>Comment on attachment 216062
patch

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

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.h:39
&gt; +    typedef HashMap&lt;RemoteLayerTreeTransaction::LayerID, PlatformLayer *&gt; RelatedLayerMap;
&gt; +    static void applyPropertiesToLayer(PlatformLayer *, RemoteLayerTreeTransaction::LayerProperties, RelatedLayerMap);
&gt; +    static void disableActionsForLayer(PlatformLayer *);

Please use CALayer instead of PlatformLayer.

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm:43
&gt; +    RetainPtr&lt;CGColorRef&gt; cgColor = adoptCF(CGColorCreate(colorSpace.get(), components));
&gt; +    return cgColor;

Can just return adoptCF

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm:158
&gt; +void RemoteLayerTreePropertyApplier::disableActionsForLayer(PlatformLayer *layer)

Again, CALayer!

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm:162
&gt; +    [layer setStyle:@{ @&quot;actions&quot; : @{
&gt; +        @&quot;anchorPoint&quot; : nullValue,

Please put @“actions” on a new line. Can also use layr.style = here I think.

&gt; Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm:173
&gt; +        @&quot;zPosition&quot; : nullValue } }];

} should be on a separate line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>947350</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-11-05 14:02:48 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/158691</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>216062</attachid>
            <date>2013-11-05 13:08:55 -0800</date>
            <delta_ts>2013-11-05 13:54:04 -0800</delta_ts>
            <desc>patch</desc>
            <filename>video.diff</filename>
            <type>text/plain</type>
            <size>28039</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAwZDhiZGUwLi41ZGUxODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUg
QEAKKzIwMTMtMTEtMDUgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IEFwcGx5IGxheWVyIGNoYW5nZXMgdG8gTGF5ZXJU
eXBlQ3VzdG9tIGxheWVycyB0byB0aGUgY3VzdG9tIGxheWVyIGluIHRoZSBXZWIgcHJvY2Vzcywg
bm90IHRvIHRoZSBDQUxheWVySG9zdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTIzODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlcyB0byB0aGUgcHJvcGVydGllcyBvZiBhIFBsYXRmb3JtQ0FM
YXllciBvZiB0eXBlIExheWVyVHlwZUN1c3RvbSBhcmUgaW50ZW5kZWQKKyAgICAgICAgdG8gYWZm
ZWN0IHRoZSBjdXN0b20gUGxhdGZvcm1MYXllcjsgaG93ZXZlciwgd2Ugd2VyZSBidW5kbGluZyB0
aGVtIHVwIHdpdGggdGhlIHRyYW5zYWN0aW9uCisgICAgICAgIGFuZCBhcHBseWluZyB0aGVtIHRv
IHRoZSBDQUxheWVySG9zdCwgbGVhZGluZyB0byBpbXBvcnRhbnQgcHJvcGVydGllcyBiZWluZyBs
b3N0LgorCisgICAgICAgIEluc3RlYWQsIGFwcGx5IHRoZW0gdG8gdGhlIFdlYi1wcm9jZXNzLXNp
ZGUgUGxhdGZvcm1MYXllciB3aGVuIGJ1aWxkaW5nIHRoZSB0cmFuc2FjdGlvbi4KKworICAgICAg
ICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmg6IEFkZGVkLgor
ICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6Y2dDb2xvckZyb21Db2xvcik6CisgICAgICAgIChXZWJL
aXQ6OnRvQ0FGaWx0ZXJUeXBlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyOjphcHBseVByb3BlcnRpZXNUb0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjpkaXNhYmxlQWN0aW9uc0ZvckxheWVyKToK
KyAgICAgICAgTW92ZSBjb2RlIHRvIGFwcGx5IExheWVyUHJvcGVydGllcyB0byBhIENBTGF5ZXIg
ZnJvbSBSZW1vdGVMYXllclRyZWVIb3N0LgorICAgICAgICBNb3ZlIGNvZGUgdG8gZGlzYWJsZSBh
Y3Rpb25zIG9uIGEgQ0FMYXllciBmcm9tIFJlbW90ZUxheWVyVHJlZUhvc3QuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW06CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNvbW1pdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxh
eWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVyKToKKyAgICAgICAgVXNlIFJlbW90ZUxheWVyVHJlZVBy
b3BlcnR5QXBwbGllci4KKyAgICAgICAgSGFuZCBpdCBhIG1hcCBvZiBMYXllcklELT5QbGF0Zm9y
bUxheWVyIHNvIHRoYXQgaXQgY2FuIGxvb2sgdXAgcmVsYXRlZCBsYXllcnMKKyAgICAgICAgZm9y
IGNoaWxkcmVuIGFuZCBtYXNrIGxheWVycy4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllci57aCxtbX0KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6cmVjdXJz
aXZlQnVpbGRUcmFuc2FjdGlvbik6CisgICAgICAgIFVwb24gY29tbWl0LCBhcHBseSBjaGFuZ2Vz
IHRvIExheWVyVHlwZUN1c3RvbSBsYXllcnMgdG8gdGhlIHBsYXRmb3JtIGxheWVyLgorICAgICAg
ICBTZXR0aW5nIGNoaWxkcmVuIG9yIG1hc2tMYXllciB3b24ndCB3b3JrLCBzaW5jZSB3ZSBkb24n
dCBrbm93IGFib3V0IG90aGVyIHJhdyBDQUxheWVycy4KKyAgICAgICAgVGhpcyBpcyBPSywgc2lu
Y2Ugbm90aGluZyB1c2VzIHRob3NlIHByb3BlcnRpZXMgb24gY3VzdG9tIGxheWVycy4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbTo6UGxhdGZvcm1DQUxh
eWVyUmVtb3RlQ3VzdG9tKToKKyAgICAgICAgRGlzYWJsZSBhY3Rpb25zIG9uIHRoZSByb290IGN1
c3RvbSBsYXllci4KKwogMjAxMy0xMS0wNCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgSURCOiBTcGxpdCBiYWNrZW5kIEN1cnNvcnMgYW5kIFRyYW5zYWN0aW9u
cyBpbnRvIHRoZWlyIG93biBmaWxlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOTg4ODYwNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLmgKQEAgLTAs
MCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlB
cHBsaWVyX2gKKyNkZWZpbmUgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyX2gKKworI2lu
Y2x1ZGUgIlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybUxheWVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK2NsYXNzIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllciB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllcklE
LCBQbGF0Zm9ybUxheWVyICo+IFJlbGF0ZWRMYXllck1hcDsKKyAgICBzdGF0aWMgdm9pZCBhcHBs
eVByb3BlcnRpZXNUb0xheWVyKFBsYXRmb3JtTGF5ZXIgKiwgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkxheWVyUHJvcGVydGllcywgUmVsYXRlZExheWVyTWFwKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaXNhYmxlQWN0aW9uc0ZvckxheWVyKFBsYXRmb3JtTGF5ZXIgKik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGll
cl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJl
ZVByb3BlcnR5QXBwbGllci5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5
ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQyZTkxMjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFj
L1JlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbQpAQCAtMCwwICsxLDE3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtQ0FMYXllclJlbW90ZS5oIgorI2lt
cG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBRmlsdGVycy5oPgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBSZXRhaW5QdHI8Q0dDb2xvclJl
Zj4gY2dDb2xvckZyb21Db2xvcihDb2xvciBjb2xvcikKK3sKKyAgICBDR0Zsb2F0IGNvbXBvbmVu
dHNbNF07CisgICAgY29sb3IuZ2V0UkdCQShjb21wb25lbnRzWzBdLCBjb21wb25lbnRzWzFdLCBj
b21wb25lbnRzWzJdLCBjb21wb25lbnRzWzNdKTsKKworICAgIFJldGFpblB0cjxDR0NvbG9yU3Bh
Y2VSZWY+IGNvbG9yU3BhY2UgPSBhZG9wdENGKENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
KTsKKyAgICBSZXRhaW5QdHI8Q0dDb2xvclJlZj4gY2dDb2xvciA9IGFkb3B0Q0YoQ0dDb2xvckNy
ZWF0ZShjb2xvclNwYWNlLmdldCgpLCBjb21wb25lbnRzKSk7CisgICAgcmV0dXJuIGNnQ29sb3I7
Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqdG9DQUZpbHRlclR5cGUoUGxhdGZvcm1DQUxheWVyOjpG
aWx0ZXJUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxpbmVhcjoKKyAgICAgICAgcmV0dXJuIGtDQUZpbHRlckxpbmVhcjsKKyAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TmVhcmVzdDoKKyAgICAgICAgcmV0dXJuIGtDQUZpbHRlck5l
YXJlc3Q7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OlRyaWxpbmVhcjoKKyAgICAgICAgcmV0
dXJuIGtDQUZpbHRlclRyaWxpbmVhcjsKKyAgICB9OworICAgIAorICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworfQorCit2b2lkIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzVG9MYXllcihQbGF0Zm9ybUxheWVyICpsYXllciwgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllcyBwcm9wZXJ0aWVzLCBSZWxh
dGVkTGF5ZXJNYXAgcmVsYXRlZExheWVycykKK3sKKyAgICBpZiAocHJvcGVydGllcy5jaGFuZ2Vk
UHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpOYW1lQ2hhbmdlZCkKKyAg
ICAgICAgbGF5ZXIubmFtZSA9IHByb3BlcnRpZXMubmFtZTsKKworICAgIGlmIChwcm9wZXJ0aWVz
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlBvc2l0aW9u
Q2hhbmdlZCkgeworICAgICAgICBsYXllci5wb3NpdGlvbiA9IENHUG9pbnRNYWtlKHByb3BlcnRp
ZXMucG9zaXRpb24ueCgpLCBwcm9wZXJ0aWVzLnBvc2l0aW9uLnkoKSk7CisgICAgICAgIGxheWVy
LnpQb3NpdGlvbiA9IHByb3BlcnRpZXMucG9zaXRpb24ueigpOworICAgIH0KKworICAgIGlmIChw
cm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkFuY2hvclBvaW50Q2hhbmdlZCkgeworICAgICAgICBsYXllci5hbmNob3JQb2ludCA9IENHUG9p
bnRNYWtlKHByb3BlcnRpZXMuYW5jaG9yUG9pbnQueCgpLCBwcm9wZXJ0aWVzLmFuY2hvclBvaW50
LnkoKSk7CisgICAgICAgIGxheWVyLmFuY2hvclBvaW50WiA9IHByb3BlcnRpZXMuYW5jaG9yUG9p
bnQueigpOworICAgIH0KKworICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYg
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNpemVDaGFuZ2VkKQorICAgICAgICBsYXllci5i
b3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBwcm9wZXJ0aWVzLnNpemUpOworCisgICAg
aWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6QmFja2dyb3VuZENvbG9yQ2hhbmdlZCkKKyAgICAgICAgbGF5ZXIuYmFja2dyb3VuZENv
bG9yID0gY2dDb2xvckZyb21Db2xvcihwcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvcikuZ2V0KCk7
CisKKyAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKKyAgICAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBjaGlsZHJlbiA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTpwcm9wZXJ0aWVzLmNoaWxkcmVuLnNpemUoKV0pOworICAgICAgICBmb3Ig
KGF1dG8gY2hpbGQgOiBwcm9wZXJ0aWVzLmNoaWxkcmVuKQorICAgICAgICAgICAgW2NoaWxkcmVu
IGFkZE9iamVjdDpyZWxhdGVkTGF5ZXJzLmdldChjaGlsZCldOworICAgICAgICBsYXllci5zdWJs
YXllcnMgPSBjaGlsZHJlbi5nZXQoKTsKKyAgICB9CisKKyAgICBpZiAocHJvcGVydGllcy5jaGFu
Z2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJDb2xvckNo
YW5nZWQpCisgICAgICAgIGxheWVyLmJvcmRlckNvbG9yID0gY2dDb2xvckZyb21Db2xvcihwcm9w
ZXJ0aWVzLmJvcmRlckNvbG9yKS5nZXQoKTsKKworICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQ
cm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJvcmRlcldpZHRoQ2hhbmdl
ZCkKKyAgICAgICAgbGF5ZXIuYm9yZGVyV2lkdGggPSBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoOwor
CisgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6T3BhY2l0eUNoYW5nZWQpCisgICAgICAgIGxheWVyLm9wYWNpdHkgPSBwcm9w
ZXJ0aWVzLm9wYWNpdHk7CisKKyAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAm
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKQorICAgICAgICBs
YXllci50cmFuc2Zvcm0gPSBwcm9wZXJ0aWVzLnRyYW5zZm9ybTsKKworICAgIGlmIChwcm9wZXJ0
aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlN1Ymxh
eWVyVHJhbnNmb3JtQ2hhbmdlZCkKKyAgICAgICAgbGF5ZXIuc3VibGF5ZXJUcmFuc2Zvcm0gPSBw
cm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtOworCisgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6SGlkZGVuQ2hhbmdlZCkK
KyAgICAgICAgbGF5ZXIuaGlkZGVuID0gcHJvcGVydGllcy5oaWRkZW47CisKKyAgICBpZiAocHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpH
ZW9tZXRyeUZsaXBwZWRDaGFuZ2VkKQorICAgICAgICBsYXllci5nZW9tZXRyeUZsaXBwZWQgPSBw
cm9wZXJ0aWVzLmdlb21ldHJ5RmxpcHBlZDsKKworICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQ
cm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkRvdWJsZVNpZGVkQ2hhbmdl
ZCkKKyAgICAgICAgbGF5ZXIuZG91YmxlU2lkZWQgPSBwcm9wZXJ0aWVzLmRvdWJsZVNpZGVkOwor
CisgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TWFza3NUb0JvdW5kc0NoYW5nZWQpCisgICAgICAgIGxheWVyLm1hc2tzVG9C
b3VuZHMgPSBwcm9wZXJ0aWVzLm1hc2tzVG9Cb3VuZHM7CisKKyAgICBpZiAocHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpPcGFxdWVDaGFu
Z2VkKQorICAgICAgICBsYXllci5vcGFxdWUgPSBwcm9wZXJ0aWVzLm9wYXF1ZTsKKworICAgIGlm
IChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246Ok1hc2tMYXllckNoYW5nZWQpIHsKKyAgICAgICAgUGxhdGZvcm1MYXllciAqbWFza0xheWVy
ID0gcmVsYXRlZExheWVycy5nZXQocHJvcGVydGllcy5tYXNrTGF5ZXIpOworICAgICAgICBBU1NF
UlQoIW1hc2tMYXllci5zdXBlcmxheWVyKTsKKyAgICAgICAgaWYgKCFtYXNrTGF5ZXIuc3VwZXJs
YXllcikKKyAgICAgICAgICAgIGxheWVyLm1hc2sgPSBtYXNrTGF5ZXI7CisgICAgfQorCisgICAg
aWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6Q29udGVudHNSZWN0Q2hhbmdlZCkKKyAgICAgICAgbGF5ZXIuY29udGVudHNSZWN0ID0g
cHJvcGVydGllcy5jb250ZW50c1JlY3Q7CisKKyAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJv
cGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDb250ZW50c1NjYWxlQ2hhbmdl
ZCkKKyAgICAgICAgbGF5ZXIuY29udGVudHNTY2FsZSA9IHByb3BlcnRpZXMuY29udGVudHNTY2Fs
ZTsKKworICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb246Ok1pbmlmaWNhdGlvbkZpbHRlckNoYW5nZWQpCisgICAgICAgIGxheWVy
Lm1pbmlmaWNhdGlvbkZpbHRlciA9IHRvQ0FGaWx0ZXJUeXBlKHByb3BlcnRpZXMubWluaWZpY2F0
aW9uRmlsdGVyKTsKKworICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hZ25pZmljYXRpb25GaWx0ZXJDaGFuZ2VkKQorICAg
ICAgICBsYXllci5tYWduaWZpY2F0aW9uRmlsdGVyID0gdG9DQUZpbHRlclR5cGUocHJvcGVydGll
cy5tYWduaWZpY2F0aW9uRmlsdGVyKTsKKworICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9w
ZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlNwZWVkQ2hhbmdlZCkKKyAgICAg
ICAgbGF5ZXIuc3BlZWQgPSBwcm9wZXJ0aWVzLnNwZWVkOworCisgICAgaWYgKHByb3BlcnRpZXMu
Y2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6VGltZU9mZnNl
dENoYW5nZWQpCisgICAgICAgIGxheWVyLnRpbWVPZmZzZXQgPSBwcm9wZXJ0aWVzLnRpbWVPZmZz
ZXQ7CisKKyAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKSB7CisgICAgICAgIGlmIChwcm9w
ZXJ0aWVzLmJhY2tpbmdTdG9yZS5hY2NlbGVyYXRlc0RyYXdpbmcoKSkKKyAgICAgICAgICAgIGxh
eWVyLmNvbnRlbnRzID0gKGlkKXByb3BlcnRpZXMuYmFja2luZ1N0b3JlLnN1cmZhY2UoKS5nZXQo
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoaWQpcHJvcGVy
dGllcy5iYWNraW5nU3RvcmUuaW1hZ2UoKS5nZXQoKTsKKyAgICB9CisKKyAgICBpZiAocHJvcGVy
dGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpGaWx0
ZXJzQ2hhbmdlZCkKKyAgICAgICAgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxheWVy
KGxheWVyLCBwcm9wZXJ0aWVzLmZpbHRlcnMpOworCisgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RWRnZUFudGlhbGlhc2lu
Z01hc2tDaGFuZ2VkKQorICAgICAgICBsYXllci5lZGdlQW50aWFsaWFzaW5nTWFzayA9IHByb3Bl
cnRpZXMuZWRnZUFudGlhbGlhc2luZ01hc2s7Cit9CisKK3ZvaWQgUmVtb3RlTGF5ZXJUcmVlUHJv
cGVydHlBcHBsaWVyOjpkaXNhYmxlQWN0aW9uc0ZvckxheWVyKFBsYXRmb3JtTGF5ZXIgKmxheWVy
KQoreworICAgIE5TTnVsbCogbnVsbFZhbHVlID0gW05TTnVsbCBudWxsXTsKKyAgICBbbGF5ZXIg
c2V0U3R5bGU6QHsgQCJhY3Rpb25zIiA6IEB7CisgICAgICAgIEAiYW5jaG9yUG9pbnQiIDogbnVs
bFZhbHVlLAorICAgICAgICBAImFuY2hvclBvaW50WiIgOiBudWxsVmFsdWUsCisgICAgICAgIEAi
Ym91bmRzIiA6IG51bGxWYWx1ZSwKKyAgICAgICAgQCJjb250ZW50cyIgOiBudWxsVmFsdWUsCisg
ICAgICAgIEAiY29udGVudHNSZWN0IiA6IG51bGxWYWx1ZSwKKyAgICAgICAgQCJvcGFjaXR5IiA6
IG51bGxWYWx1ZSwKKyAgICAgICAgQCJwb3NpdGlvbiIgOiBudWxsVmFsdWUsCisgICAgICAgIEAi
c2hhZG93Q29sb3IiIDogbnVsbFZhbHVlLAorICAgICAgICBAInN1YmxheWVyVHJhbnNmb3JtIiA6
IG51bGxWYWx1ZSwKKyAgICAgICAgQCJzdWJsYXllcnMiIDogbnVsbFZhbHVlLAorICAgICAgICBA
InRyYW5zZm9ybSIgOiBudWxsVmFsdWUsCisgICAgICAgIEAielBvc2l0aW9uIiA6IG51bGxWYWx1
ZSB9IH1dOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbQppbmRleCBhMWNiYTA1Li4y
MWQ4NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxh
eWVyVHJlZUhvc3QubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1vdGVM
YXllclRyZWVIb3N0Lm1tCkBAIC0yNywxMSArMjcsMTEgQEAKICNpbXBvcnQgIlJlbW90ZUxheWVy
VHJlZUhvc3QuaCIKIAogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlSG9zdE1lc3NhZ2VzLmgiCisj
aW1wb3J0ICJSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCIKICNpbXBvcnQgIlJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uLmgiCiAjaW1wb3J0ICJTaGFyZWFibGVCaXRtYXAuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW1w
b3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FGaWx0ZXJzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtTGF5ZXIuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgogCkBAIC0zOSwy
NCArMzksNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIE5TRGljdGlv
bmFyeSAqbnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkKLXsKLSAgICBOU051bGwqIG51bGxWYWx1ZSA9
IFtOU051bGwgbnVsbF07Ci0gICAgcmV0dXJuIEB7Ci0gICAgICAgIEAiYW5jaG9yUG9pbnQiIDog
bnVsbFZhbHVlLAotICAgICAgICBAImFuY2hvclBvaW50WiIgOiBudWxsVmFsdWUsCi0gICAgICAg
IEAiYm91bmRzIiA6IG51bGxWYWx1ZSwKLSAgICAgICAgQCJjb250ZW50cyIgOiBudWxsVmFsdWUs
Ci0gICAgICAgIEAiY29udGVudHNSZWN0IiA6IG51bGxWYWx1ZSwKLSAgICAgICAgQCJvcGFjaXR5
IiA6IG51bGxWYWx1ZSwKLSAgICAgICAgQCJwb3NpdGlvbiIgOiBudWxsVmFsdWUsCi0gICAgICAg
IEAic2hhZG93Q29sb3IiIDogbnVsbFZhbHVlLAotICAgICAgICBAInN1YmxheWVyVHJhbnNmb3Jt
IiA6IG51bGxWYWx1ZSwKLSAgICAgICAgQCJzdWJsYXllcnMiIDogbnVsbFZhbHVlLAotICAgICAg
ICBAInRyYW5zZm9ybSIgOiBudWxsVmFsdWUsCi0gICAgICAgIEAielBvc2l0aW9uIiA6IG51bGxW
YWx1ZSB9OwotfQotCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUmVtb3RlTGF5ZXJUcmVlSG9zdDo6
UmVtb3RlTGF5ZXJUcmVlSG9zdChXZWJQYWdlUHJveHkqIHdlYlBhZ2VQcm94eSkKQEAgLTcxLDMy
ICs1Myw2IEBAIFJlbW90ZUxheWVyVHJlZUhvc3Q6On5SZW1vdGVMYXllclRyZWVIb3N0KCkKICAg
ICBtX3dlYlBhZ2VQcm94eS0+cHJvY2VzcygpLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZUhvc3Q6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdl
UHJveHktPnBhZ2VJRCgpKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDR0NvbG9yUmVmPiBjZ0Nv
bG9yRnJvbUNvbG9yKENvbG9yIGNvbG9yKQotewotICAgIENHRmxvYXQgY29tcG9uZW50c1s0XTsK
LSAgICBjb2xvci5nZXRSR0JBKGNvbXBvbmVudHNbMF0sIGNvbXBvbmVudHNbMV0sIGNvbXBvbmVu
dHNbMl0sIGNvbXBvbmVudHNbM10pOwotCi0gICAgUmV0YWluUHRyPENHQ29sb3JTcGFjZVJlZj4g
Y29sb3JTcGFjZSA9IGFkb3B0Q0YoQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCkpOwotICAg
IFJldGFpblB0cjxDR0NvbG9yUmVmPiBjZ0NvbG9yID0gYWRvcHRDRihDR0NvbG9yQ3JlYXRlKGNv
bG9yU3BhY2UuZ2V0KCksIGNvbXBvbmVudHMpKTsKLSAgICByZXR1cm4gY2dDb2xvcjsKLX0KLQot
c3RhdGljIE5TU3RyaW5nICp0b0NBRmlsdGVyVHlwZShQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5
cGUgdHlwZSkKLXsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGluZWFyOgotICAgICAgICByZXR1cm4ga0NBRmlsdGVyTGluZWFyOwotICAgIGNhc2UgUGxh
dGZvcm1DQUxheWVyOjpOZWFyZXN0OgotICAgICAgICByZXR1cm4ga0NBRmlsdGVyTmVhcmVzdDsK
LSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyOgotICAgICAgICByZXR1cm4ga0NB
RmlsdGVyVHJpbGluZWFyOwotICAgIH07Ci0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICByZXR1cm4gMDsKLX0KLQotCiB2b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6OmNvbW1pdChjb25z
dCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiB7CiAjaWYgIWRlZmlu
ZWQoTkRFQlVHKQpAQCAtMTE5LDk5ICs3NSwxNiBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZUhvc3Q6
OmNvbW1pdChjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24pCiAg
ICAgICAgIENBTGF5ZXIgKmxheWVyID0gZ2V0TGF5ZXIobGF5ZXJJRCk7CiAgICAgICAgIEFTU0VS
VChsYXllcik7CiAKLSAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TmFtZUNoYW5nZWQpCi0gICAgICAgICAgICBsYXll
ci5uYW1lID0gcHJvcGVydGllcy5uYW1lOwotCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5n
ZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OlBvc2l0aW9uQ2hhbmdl
ZCkgewotICAgICAgICAgICAgbGF5ZXIucG9zaXRpb24gPSBDR1BvaW50TWFrZShwcm9wZXJ0aWVz
LnBvc2l0aW9uLngoKSwgcHJvcGVydGllcy5wb3NpdGlvbi55KCkpOwotICAgICAgICAgICAgbGF5
ZXIuelBvc2l0aW9uID0gcHJvcGVydGllcy5wb3NpdGlvbi56KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpBbmNob3JQb2ludENoYW5nZWQpIHsKLSAgICAgICAgICAgIGxheWVyLmFuY2hv
clBvaW50ID0gQ0dQb2ludE1ha2UocHJvcGVydGllcy5hbmNob3JQb2ludC54KCksIHByb3BlcnRp
ZXMuYW5jaG9yUG9pbnQueSgpKTsKLSAgICAgICAgICAgIGxheWVyLmFuY2hvclBvaW50WiA9IHBy
b3BlcnRpZXMuYW5jaG9yUG9pbnQueigpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHByb3Bl
cnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2l6
ZUNoYW5nZWQpCi0gICAgICAgICAgICBsYXllci5ib3VuZHMgPSBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBwcm9wZXJ0aWVzLnNpemUpOwotCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQ
cm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tncm91bmRDb2xvckNo
YW5nZWQpCi0gICAgICAgICAgICBsYXllci5iYWNrZ3JvdW5kQ29sb3IgPSBjZ0NvbG9yRnJvbUNv
bG9yKHByb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yKS5nZXQoKTsKLQorICAgICAgICBSZW1vdGVM
YXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OlJlbGF0ZWRMYXllck1hcCByZWxhdGVkTGF5ZXJzOwog
ICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpDaGlsZHJlbkNoYW5nZWQpIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxO
U011dGFibGVBcnJheT4gY2hpbGRyZW4gPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6cHJvcGVydGllcy5jaGlsZHJlbi5zaXplKCldKTsKICAgICAgICAg
ICAgIGZvciAoYXV0byBjaGlsZCA6IHByb3BlcnRpZXMuY2hpbGRyZW4pCi0gICAgICAgICAgICAg
ICAgW2NoaWxkcmVuIGFkZE9iamVjdDpnZXRMYXllcihjaGlsZCldOwotICAgICAgICAgICAgbGF5
ZXIuc3VibGF5ZXJzID0gY2hpbGRyZW4uZ2V0KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
cHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpCb3JkZXJDb2xvckNoYW5nZWQpCi0gICAgICAgICAgICBsYXllci5ib3JkZXJDb2xvciA9IGNn
Q29sb3JGcm9tQ29sb3IocHJvcGVydGllcy5ib3JkZXJDb2xvcikuZ2V0KCk7Ci0KLSAgICAgICAg
aWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6Qm9yZGVyV2lkdGhDaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIuYm9yZGVyV2lkdGgg
PSBwcm9wZXJ0aWVzLmJvcmRlcldpZHRoOwotCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5n
ZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok9wYWNpdHlDaGFuZ2Vk
KQotICAgICAgICAgICAgbGF5ZXIub3BhY2l0eSA9IHByb3BlcnRpZXMub3BhY2l0eTsKLQotICAg
ICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpUcmFuc2Zvcm1DaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIudHJhbnNmb3Jt
ID0gcHJvcGVydGllcy50cmFuc2Zvcm07Ci0KLSAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5ZXJUcmFuc2Zv
cm1DaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIuc3VibGF5ZXJUcmFuc2Zvcm0gPSBwcm9wZXJ0
aWVzLnN1YmxheWVyVHJhbnNmb3JtOwotCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQ
cm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkhpZGRlbkNoYW5nZWQpCi0g
ICAgICAgICAgICBsYXllci5oaWRkZW4gPSBwcm9wZXJ0aWVzLmhpZGRlbjsKLQotICAgICAgICBp
ZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpHZW9tZXRyeUZsaXBwZWRDaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIuZ2VvbWV0cnlG
bGlwcGVkID0gcHJvcGVydGllcy5nZW9tZXRyeUZsaXBwZWQ7Ci0KLSAgICAgICAgaWYgKHByb3Bl
cnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RG91
YmxlU2lkZWRDaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIuZG91YmxlU2lkZWQgPSBwcm9wZXJ0
aWVzLmRvdWJsZVNpZGVkOwotCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tzVG9Cb3VuZHNDaGFuZ2VkKQot
ICAgICAgICAgICAgbGF5ZXIubWFza3NUb0JvdW5kcyA9IHByb3BlcnRpZXMubWFza3NUb0JvdW5k
czsKLQotICAgICAgICBpZiAocHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpPcGFxdWVDaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIub3Bh
cXVlID0gcHJvcGVydGllcy5vcGFxdWU7Ci0KLSAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdl
ZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TWFza0xheWVyQ2hhbmdl
ZCkgewotICAgICAgICAgICAgQ0FMYXllciAqbWFza0xheWVyID0gZ2V0TGF5ZXIocHJvcGVydGll
cy5tYXNrTGF5ZXIpOwotICAgICAgICAgICAgQVNTRVJUKCFtYXNrTGF5ZXIuc3VwZXJsYXllcik7
Ci0gICAgICAgICAgICBpZiAoIW1hc2tMYXllci5zdXBlcmxheWVyKQotICAgICAgICAgICAgICAg
IGxheWVyLm1hc2sgPSBtYXNrTGF5ZXI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJvcGVy
dGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDb250
ZW50c1JlY3RDaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIuY29udGVudHNSZWN0ID0gcHJvcGVy
dGllcy5jb250ZW50c1JlY3Q7Ci0KLSAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3Bl
cnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q29udGVudHNTY2FsZUNoYW5nZWQp
Ci0gICAgICAgICAgICBsYXllci5jb250ZW50c1NjYWxlID0gcHJvcGVydGllcy5jb250ZW50c1Nj
YWxlOwotCi0gICAgICAgIGlmIChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1pbmlmaWNhdGlvbkZpbHRlckNoYW5nZWQpCi0gICAgICAg
ICAgICBsYXllci5taW5pZmljYXRpb25GaWx0ZXIgPSB0b0NBRmlsdGVyVHlwZShwcm9wZXJ0aWVz
Lm1pbmlmaWNhdGlvbkZpbHRlcik7Ci0KLSAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFBy
b3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TWFnbmlmaWNhdGlvbkZpbHRl
ckNoYW5nZWQpCi0gICAgICAgICAgICBsYXllci5tYWduaWZpY2F0aW9uRmlsdGVyID0gdG9DQUZp
bHRlclR5cGUocHJvcGVydGllcy5tYWduaWZpY2F0aW9uRmlsdGVyKTsKLQotICAgICAgICBpZiAo
cHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpTcGVlZENoYW5nZWQpCi0gICAgICAgICAgICBsYXllci5zcGVlZCA9IHByb3BlcnRpZXMuc3Bl
ZWQ7Ci0KLSAgICAgICAgaWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6VGltZU9mZnNldENoYW5nZWQpCi0gICAgICAgICAgICBsYXll
ci50aW1lT2Zmc2V0ID0gcHJvcGVydGllcy50aW1lT2Zmc2V0OwotCi0gICAgICAgIGlmIChwcm9w
ZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJh
Y2tpbmdTdG9yZUNoYW5nZWQpIHsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0aWVzLmJhY2tpbmdT
dG9yZS5hY2NlbGVyYXRlc0RyYXdpbmcoKSkKLSAgICAgICAgICAgICAgICBsYXllci5jb250ZW50
cyA9IChpZClwcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5zdXJmYWNlKCkuZ2V0KCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbGF5ZXIuY29udGVudHMgPSAoaWQpcHJvcGVydGll
cy5iYWNraW5nU3RvcmUuaW1hZ2UoKS5nZXQoKTsKKyAgICAgICAgICAgICAgICByZWxhdGVkTGF5
ZXJzLnNldChjaGlsZCwgZ2V0TGF5ZXIoY2hpbGQpKTsKICAgICAgICAgfQogCi0gICAgICAgIGlm
IChwcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkZpbHRlcnNDaGFuZ2VkKQotICAgICAgICAgICAgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZp
bHRlcnNPbkxheWVyKGxheWVyLCBwcm9wZXJ0aWVzLmZpbHRlcnMpOworICAgICAgICBpZiAocHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpN
YXNrTGF5ZXJDaGFuZ2VkKQorICAgICAgICAgICAgcmVsYXRlZExheWVycy5zZXQocHJvcGVydGll
cy5tYXNrTGF5ZXIsIGdldExheWVyKHByb3BlcnRpZXMubWFza0xheWVyKSk7CiAKLSAgICAgICAg
aWYgKHByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2Fj
dGlvbjo6RWRnZUFudGlhbGlhc2luZ01hc2tDaGFuZ2VkKQotICAgICAgICAgICAgbGF5ZXIuZWRn
ZUFudGlhbGlhc2luZ01hc2sgPSBwcm9wZXJ0aWVzLmVkZ2VBbnRpYWxpYXNpbmdNYXNrOworICAg
ICAgICBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXI6OmFwcGx5UHJvcGVydGllc1RvTGF5
ZXIobGF5ZXIsIHByb3BlcnRpZXMsIHJlbGF0ZWRMYXllcnMpOwogICAgIH0KIAogICAgIGZvciAo
YXV0byBkZXN0cm95ZWRMYXllciA6IHRyYW5zYWN0aW9uLmRlc3Ryb3llZExheWVycygpKQpAQCAt
MjQ5LDcgKzEyMiw3IEBAIENBTGF5ZXIgKlJlbW90ZUxheWVyVHJlZUhvc3Q6OmNyZWF0ZUxheWVy
KFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllckNyZWF0CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAgIFtsYXllciBzZXRTdHlsZTpAeyBAImFjdGlvbnMi
IDogbnVsbEFjdGlvbnNEaWN0aW9uYXJ5KCkgfV07CisgICAgUmVtb3RlTGF5ZXJUcmVlUHJvcGVy
dHlBcHBsaWVyOjpkaXNhYmxlQWN0aW9uc0ZvckxheWVyKGxheWVyLmdldCgpKTsKIAogICAgIHJl
dHVybiBsYXllci5nZXQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxM2I2ZWJlLi42NmFkYmE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMzMsNiAr
MzMzLDggQEAKIAkJMkRBMDQ5QjQxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJl
bW90ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRB
MDQ5QjIxODBDQ0NEMzAwQUFGQTlFIC8qIFBsYXRmb3JtQ0FMYXllclJlbW90ZS5oICovOyB9Owog
CQkyREEwNDlCNzE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTA0OUI1MTgw
Q0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FSZW1vdGUuY3BwICovOyB9OwogCQkyREEw
NDlCODE4MENDRDBBMDBBQUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEwNDlCNjE4MENDRDBBMDBB
QUZBOUUgLyogR3JhcGhpY3NMYXllckNBUmVtb3RlLmggKi87IH07CisJCTJEREUwQUZBMTgyOThD
QzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUwQUY4MTgyOThDQzkwMEY5
N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAqLzsgfTsKKwkJMkRERTBB
RkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEREUwQUY5MTgy
OThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gKi87IH07
CiAJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEwOTk5NzEx
NDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgKi87IH07CiAJCTMx
MDk5OUM3MTQ2QzlFM0QwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMDk5OTY4MTQ2QzcxRjUw
MDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLzsgfTsKIAkJMzEyQzBDNEExNDZE
REM4QTAwMTZDOTExIC8qIFdLTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkMwQzQ5MTQ2RERDOEEwMDE2QzkxMSAv
KiBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE4MjAsNiArMTgyMiw4IEBACiAJCTJEQTA0OUIyMTgwQ0ND
RDMwMEFBRkE5RSAvKiBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1DQUxheWVyUmVtb3RlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTJEQTA0OUI1MTgwQ0NEMEEwMEFBRkE5RSAvKiBHcmFwaGljc0xheWVyQ0FS
ZW1vdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NM
YXllckNBUmVtb3RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBMDQ5QjYx
ODBDQ0QwQTAwQUFGQTlFIC8qIEdyYXBoaWNzTGF5ZXJDQVJlbW90ZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHcmFwaGljc0xheWVyQ0FSZW1vdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMkRERTBBRjgxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVy
VHJlZVByb3BlcnR5QXBwbGllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkRERTBBRjkxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5
QXBwbGllci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMzEwOTk5NjgxNDZDNzFGNTAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRpb25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMzEwOTk5NzExNDZDNzU5QjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNs
aWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJOb3RpZmlj
YXRpb25DbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTJDMEM0OTE0
NkREQzhBMDAxNkM5MTEgLyogV0tOb3RpZmljYXRpb25Qcm92aWRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXS05vdGlmaWNhdGlvblByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC00NjA2LDYgKzQ2MTAsOCBAQAogCQkJCUUxQ0MxQjhGMTJEN0VB
REYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMubW0gKi8sCiAJCQkJMkQ0N0I1NkExODEwNzE0RTAw
M0EzQUVFIC8qIFJlbW90ZUxheWVyQmFja2luZ1N0b3JlLm1tICovLAogCQkJCTJENDdCNTZCMTgx
MDcxNEUwMDNBM0FFRSAvKiBSZW1vdGVMYXllckJhY2tpbmdTdG9yZS5oICovLAorCQkJCTJEREUw
QUY4MTgyOThDQzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCAq
LywKKwkJCQkyRERFMEFGOTE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVy
dHlBcHBsaWVyLm1tICovLAogCQkJCTFBRjFBQzZBMTY1MTc1OUUwMEMxN0Q3RiAvKiBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5oICovLAogCQkJCTFBRjFBQzY5MTY1MTc1OUUwMEMxN0Q3RiAv
KiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSAqLywKIAkJCQkxQUFCNEFBOTEyOTZGMTU0
MDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbk1hYy5tbSAqLywKQEAgLTU5NDMsNiArNTk0OSw3
IEBACiAJCQkJMzEyQzBDNEExNDZEREM4QTAwMTZDOTExIC8qIFdLTm90aWZpY2F0aW9uUHJvdmlk
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRDA5RjJDMTc0M0Y4RTYwMEE5NUU1MCAvKiBXS05Q
QVBJUGx1Z0luQ29udGFpbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzYwMjEyNEZGMDI3
MDA2OEYyMEEgLyogV0tOdW1iZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEREUwQUZBMTgyOThD
QzkwMEY5N0VBQSAvKiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdDRDVFQkI5MTc0NkExNUIwMDBDMUM0NSAvKiBXS09iakNUeXBlV3JhcHBlclJl
Zi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc4RTFBNDAxODFFREEwMTAwMzEwMDdBIC8qIFdLT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzg1N0ZFNjEyQjg0M0Q4MDBFREVCMkUgLyogV0tP
cGVuUGFuZWxQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKQEAgLTcxMDAsNiArNzEwNyw3IEBA
CiAJCQkJQkNGNjlGQTMxMTc2RDAxNDAwNDcxQTUyIC8qIFdlYk5hdmlnYXRpb25EYXRhLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTMxQTJFQzQ4MTQ4OTk3QzIwMDgxMEQ3MSAvKiBXZWJOb3RpZmlj
YXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8q
IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRERFMEFGQjE4
Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMzEzMTI2MjAxNDhGRjgyQzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFCQTkyNEQxNDg4MzEyNjAwNjJFREI1
IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzFBMkVDNEExNDg5OTdDMjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApp
bmRleCA4MGJmMjg4Li5mMjBhODNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVUaWxlZEJhY2tp
bmcuaCIKICNpbXBvcnQgIlJlbW90ZUxheWVyQmFja2luZ1N0b3JlLmgiCiAjaW1wb3J0ICJSZW1v
dGVMYXllclRyZWVDb250ZXh0LmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFw
cGxpZXIuaCIKICNpbXBvcnQgPFdlYkNvcmUvQW5pbWF0aW9uVXRpbGl0aWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xh
eWVyQ0EuaD4KQEAgLTExNiw2ICsxMTcsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6
OnJlY3Vyc2l2ZUJ1aWxkVHJhbnNhY3Rpb24oUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24KICAg
ICAgICAgICAgICAgICBtX3Byb3BlcnRpZXMuY2hpbGRyZW4uYXBwZW5kKHRvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlKGxheWVyLmdldCgpKS0+bGF5ZXJJRCgpKTsKICAgICAgICAgfQogCisgICAgICAg
IGlmIChtX2xheWVyVHlwZSA9PSBMYXllclR5cGVDdXN0b20pIHsKKyAgICAgICAgICAgIFJlbW90
ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllcjo6YXBwbHlQcm9wZXJ0aWVzVG9MYXllcihwbGF0Zm9y
bUxheWVyKCksIG1fcHJvcGVydGllcywgUmVtb3RlTGF5ZXJUcmVlUHJvcGVydHlBcHBsaWVyOjpS
ZWxhdGVkTGF5ZXJNYXAoKSk7CisgICAgICAgICAgICBtX3Byb3BlcnRpZXMuY2hhbmdlZFByb3Bl
cnRpZXMgPSBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Tm9DaGFuZ2U7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICB0cmFuc2FjdGlvbi5sYXllclByb3BlcnRp
ZXNDaGFuZ2VkKHRoaXMsIG1fcHJvcGVydGllcyk7CiAgICAgICAgIG1fcHJvcGVydGllcy5jaGFu
Z2VkUHJvcGVydGllcyA9IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpOb0NoYW5nZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbS5jcHAKaW5kZXggMzJiYzVl
Yi4uMDM5ZTliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlQ3VzdG9tLmNwcApA
QCAtMzEsNiArMzEsNyBAQAogCiAjaW1wb3J0ICJMYXllckhvc3RpbmdDb250ZXh0LmgiCiAjaW1w
b3J0ICJSZW1vdGVMYXllclRyZWVDb250ZXh0LmgiCisjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVQ
cm9wZXJ0eUFwcGxpZXIuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNv
cmUvR3JhcGhpY3NMYXllckNBLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FMYXllck1h
Yy5oPgpAQCAtNTcsNiArNTgsNyBAQCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGVDdXN0b206OlBsYXRm
b3JtQ0FMYXllclJlbW90ZUN1c3RvbShQbGF0Zm9ybUxheWVyKiBjdXN0b21MYQogICAgIG1fbGF5
ZXJIb3N0aW5nQ29udGV4dC0+c2V0Um9vdExheWVyKGN1c3RvbUxheWVyKTsKIAogICAgIG1fcGxh
dGZvcm1MYXllciA9IGN1c3RvbUxheWVyOworICAgIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBw
bGllcjo6ZGlzYWJsZUFjdGlvbnNGb3JMYXllcihjdXN0b21MYXllcik7CiB9CiAKIFBsYXRmb3Jt
Q0FMYXllclJlbW90ZUN1c3RvbTo6flBsYXRmb3JtQ0FMYXllclJlbW90ZUN1c3RvbSgpCg==
</data>
<flag name="review"
          id="238956"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>