<?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>169991</bug_id>
          
          <creation_ts>2017-03-22 21:02:01 -0700</creation_ts>
          <short_desc>[Cocoa] Add an option to exclude overflow when snapshotting a WKWebProcessPlugInNodeHandle</short_desc>
          <delta_ts>2017-03-23 12:15:54 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>bdakin</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1290340</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-03-22 21:02:01 -0700</bug_when>
    <thetext>[Cocoa] Add an option to exclude overflow when snapshotting a WKWebProcessPlugInNodeHandle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290341</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-03-22 21:02:50 -0700</bug_when>
    <thetext>rdar://problem/30141083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290344</commentid>
    <comment_count>2</comment_count>
      <attachid>305160</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-03-22 21:17:13 -0700</bug_when>
    <thetext>Created attachment 305160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290345</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-22 21:18:28 -0700</bug_when>
    <thetext>Attachment 305160 did not pass style-queue:


ERROR: Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:29:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290349</commentid>
    <comment_count>4</comment_count>
      <attachid>305160</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-22 21:24:50 -0700</bug_when>
    <thetext>Comment on attachment 305160
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:71
&gt; -    RefPtr&lt;WebImage&gt; image = _nodeHandle-&gt;renderedImage(options);
&gt; +    RefPtr&lt;WebImage&gt; image = _nodeHandle-&gt;renderedImage(toSnapshotOptions(options), options &amp; kWKSnapshotOptionsExcludeOverflow);

Maybe it&apos;s obvious and I&apos;m missing it, but why not add a SnapshotOptions bit for this?

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/rendered-image-excluding-overflow.html:20
&gt; +    &lt;div class=container&gt;
&gt; +        &lt;div class=inner&gt;

Missing quotes, eww :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290360</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-03-22 22:17:50 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; Comment on attachment 305160 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=305160&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:71
&gt; &gt; -    RefPtr&lt;WebImage&gt; image = _nodeHandle-&gt;renderedImage(options);
&gt; &gt; +    RefPtr&lt;WebImage&gt; image = _nodeHandle-&gt;renderedImage(toSnapshotOptions(options), options &amp; kWKSnapshotOptionsExcludeOverflow);
&gt; 
&gt; Maybe it&apos;s obvious and I&apos;m missing it, but why not add a SnapshotOptions bit
&gt; for this?

I didn&apos;t do this because SnapshotOptions is used in a bunch of other places (for drag images, text indicators, etc), but kWKSnapshotOptionsExcludeOverflow is only meaningful in this context.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290367</commentid>
    <comment_count>6</comment_count>
      <attachid>305160</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-22 23:21:29 -0700</bug_when>
    <thetext>Comment on attachment 305160
Patch

Clearing flags on attachment: 305160

Committed r214297: &lt;http://trac.webkit.org/changeset/214297&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290368</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-22 23:21:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290529</commentid>
    <comment_count>8</comment_count>
      <attachid>305160</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-03-23 12:11:10 -0700</bug_when>
    <thetext>Comment on attachment 305160
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:186
&gt; +        paintingRect = renderer-&gt;absoluteBoundingBoxRectIgnoringTransforms();

Did you test this on a transformed box?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290534</commentid>
    <comment_count>9</comment_count>
      <attachid>305160</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-03-23 12:15:54 -0700</bug_when>
    <thetext>Comment on attachment 305160
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:186
&gt;&gt; +        paintingRect = renderer-&gt;absoluteBoundingBoxRectIgnoringTransforms();
&gt; 
&gt; Did you test this on a transformed box?

It surely doesn&apos;t work, but it&apos;s not a regression because paintingRootRect does the same thing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305160</attachid>
            <date>2017-03-22 21:17:13 -0700</date>
            <delta_ts>2017-03-22 23:21:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-169991-20170322211713.patch</filename>
            <type>text/plain</type>
            <size>25389</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGE5Zjc5ZmIxOTAxMzQ1
YjgwNTI5ZjE2YmJlNDU5ZGY2NzkzZWJjZi4uNmU2MjI0NzJhMzFlMzQxMjMwYzNjMjQyYzQxMmIz
YWYyMWYzZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTAzLTIyICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBhbiBvcHRp
b24gdG8gZXhjbHVkZSBvdmVyZmxvdyB3aGVuIHNuYXBzaG90dGluZyBhIFdLV2ViUHJvY2Vzc1Bs
dWdJbk5vZGVIYW5kbGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2OTk5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAxNDEwODM+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBzbmFwc2hvdHRp
bmcgYW4gZWxlbWVudCB1c2luZyAtW1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVy
ZWRJbWFnZVdpdGhPcHRpb25zOl0sCisgICAgICAgIHRoZSBpbWFnZSBpcyBzaXplZCB0byBlbmNv
bXBhc3MgYWxsIGRlc2NlbmRhbnRzLCBldmVuIGlmIHRoZSBlbGVtZW50IGlzIHN0eWxlZCB3aXRo
CisgICAgICAgIG92ZXJmbG93OmhpZGRlbi4gVGhpcyBwYXRjaCBhZGRzIGEgV0tTbmFwc2hvdE9w
dGlvbiB0byBleGNsdWRlIG92ZXJmbG93LCByZXN1bHRpbmcgaW4gYW4KKyAgICAgICAgaW1hZ2Ug
dGhhdCdzIGFsd2F5cyBzaXplZCB0byB0aGUgbm9kZSdzIGJvdW5kaW5nIGJveC4KKworICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS0ltYWdlLmg6IERlZmluZWQga1dLU25hcHNob3RPcHRpb25zRXhj
bHVkZU92ZXJmbG93LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0Nv
Y29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUubW06CisgICAgICAgICgtW1dLV2ViUHJv
Y2Vzc1BsdWdJbk5vZGVIYW5kbGUgcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOl0pOiBDb252ZXJ0
ZWQgdGhlCisgICAgICAgIFdLU25hcHNob3RPcHRpb25zIGFyZ3VtZW50IHRvIGEgU25hcHNob3RP
cHRpb25zIHVzaW5nIHRvU25hcHNob3RPcHRpb25zKCksIGFuZCBjYWxsZWQKKyAgICAgICAgSW5q
ZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKCkgd2l0aCBzaG91bGRFeGNsdWRl
T3ZlcmZsb3cgc2V0IHRvIHRydWUgaWYgdGhlCisgICAgICAgIFdLU25hcHNob3RPcHRpb25zIGlu
Y2x1ZGVkIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvdy4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHA6CisgICAg
ICAgIChXS0J1bmRsZU5vZGVIYW5kbGVDb3B5U25hcHNob3RXaXRoT3B0aW9ucyk6IERpdHRvLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6
cmVuZGVyZWRJbWFnZSk6IElmIHNob3VsZEV4Y2x1ZGVPdmVyZmxvdyBpcyB0cnVlLCB1c2UKKyAg
ICAgICAgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNm
b3JtcygpIGFzIHRoZSBwYWludGluZ1JlY3QgZm9yCisgICAgICAgIGltYWdlRm9yUmVjdCgpLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZS5oOgorCiAyMDE3LTAzLTIyICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlc291cmNlIExvYWQgU3RhdGlzdGljczogRml4IHBhcnRpdGlvbmlu
ZyBidWcgZm9yIGNsaWVudC1zaWRlIGNvb2tpZSBhY2Nlc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tJbWFnZS5oCmluZGV4IDI3YTM0NTQ0ZTU5ZWYxMjkyNTgwZjU0ODRjZWFjNzUwMmIzNTA3
ODQuLjk4NTNhZTY3Nzc1MTNiZTc3NzM2MDQzZDdiYTc3YzczYzE5NzFlY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0ltYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuaApAQCAtNDYsNiArNDYsNyBAQCBlbnVtIHsKICAgICBr
V0tTbmFwc2hvdE9wdGlvbnNGb3JjZUJsYWNrVGV4dCA9IDEgPDwgNCwKICAgICBrV0tTbmFwc2hv
dE9wdGlvbnNGb3JjZVdoaXRlVGV4dCA9IDEgPDwgNSwKICAgICBrV0tTbmFwc2hvdE9wdGlvbnNQ
cmludGluZyA9IDEgPDwgNiwKKyAgICBrV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3cg
PSAxIDw8IDcsCiB9OwogdHlwZWRlZiB1aW50MzJfdCBXS1NuYXBzaG90T3B0aW9uczsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29j
b2EvV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL0NvY29hL1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5k
bGUubW0KaW5kZXggODFiMDJjNmZmMDVmNjExM2VjYTBkNjE5OGFhMzAxZDU4ZWJjMjFlMC4uNTM0
ZmRmODkxMGQyNWEwNGRmMDNjZGM3M2Y3NjRhNWE3NDkxYWRjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvQ29jb2EvV0tXZWJQcm9jZXNz
UGx1Z0luTm9kZUhhbmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9Db2NvYS9XS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlLm1tCkBAIC0y
Niw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldLV2ViUHJvY2Vzc1Bs
dWdJbk5vZGVIYW5kbGVJbnRlcm5hbC5oIgogCisjaW1wb3J0ICJXS1NoYXJlZEFQSUNhc3QuaCIK
ICNpbXBvcnQgIldLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdl
YkNvcmUvSW50UmVjdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYkltYWdlLmg+CkBAIC02Nyw3ICs2
OCw3IEBAIC0gKFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopaHRtbElGcmFtZUVsZW1lbnRDb250
ZW50RnJhbWUKICNpZiBQTEFURk9STShJT1MpCiAtIChVSUltYWdlICopcmVuZGVyZWRJbWFnZVdp
dGhPcHRpb25zOihXS1NuYXBzaG90T3B0aW9ucylvcHRpb25zCiB7Ci0gICAgUmVmUHRyPFdlYklt
YWdlPiBpbWFnZSA9IF9ub2RlSGFuZGxlLT5yZW5kZXJlZEltYWdlKG9wdGlvbnMpOworICAgIFJl
ZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBfbm9kZUhhbmRsZS0+cmVuZGVyZWRJbWFnZSh0b1NuYXBz
aG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVP
dmVyZmxvdyk7CiAgICAgaWYgKCFpbWFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtNzgs
NyArNzksNyBAQCAtIChVSUltYWdlICopcmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zOihXS1NuYXBz
aG90T3B0aW9ucylvcHRpb25zCiAjaWYgUExBVEZPUk0oTUFDKQogLSAoTlNJbWFnZSAqKXJlbmRl
cmVkSW1hZ2VXaXRoT3B0aW9uczooV0tTbmFwc2hvdE9wdGlvbnMpb3B0aW9ucwogewotICAgIFJl
ZlB0cjxXZWJJbWFnZT4gaW1hZ2UgPSBfbm9kZUhhbmRsZS0+cmVuZGVyZWRJbWFnZShvcHRpb25z
KTsKKyAgICBSZWZQdHI8V2ViSW1hZ2U+IGltYWdlID0gX25vZGVIYW5kbGUtPnJlbmRlcmVkSW1h
Z2UodG9TbmFwc2hvdE9wdGlvbnMob3B0aW9ucyksIG9wdGlvbnMgJiBrV0tTbmFwc2hvdE9wdGlv
bnNFeGNsdWRlT3ZlcmZsb3cpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBuaWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAppbmRleCA0NmNmYTM0
YTA4MGVlNWFmNGVlMDg4NzNlYjRjMzg4NzczMjQzYjNhLi4zYmNlM2VlYzJkYjM1MzYzYWI3NzUz
ZmVmN2M3MmM2OTVmZDM4ZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZU5vZGVIYW5k
bGUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFdLUmVjdCBXS0J1bmRsZU5vZGVIYW5kbGVHZXRSZW5k
ZXJSZWN0KFdLQnVuZGxlTm9kZUhhbmRsZVJlZiBub2RlSGFuZGxlUmVmLCBib29sCiAKIFdLSW1h
Z2VSZWYgV0tCdW5kbGVOb2RlSGFuZGxlQ29weVNuYXBzaG90V2l0aE9wdGlvbnMoV0tCdW5kbGVO
b2RlSGFuZGxlUmVmIG5vZGVIYW5kbGVSZWYsIFdLU25hcHNob3RPcHRpb25zIG9wdGlvbnMpCiB7
Ci0gICAgUmVmUHRyPFdlYkltYWdlPiBpbWFnZSA9IHRvSW1wbChub2RlSGFuZGxlUmVmKS0+cmVu
ZGVyZWRJbWFnZSh0b1NuYXBzaG90T3B0aW9ucyhvcHRpb25zKSk7CisgICAgUmVmUHRyPFdlYklt
YWdlPiBpbWFnZSA9IHRvSW1wbChub2RlSGFuZGxlUmVmKS0+cmVuZGVyZWRJbWFnZSh0b1NuYXBz
aG90T3B0aW9ucyhvcHRpb25zKSwgb3B0aW9ucyAmIGtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVP
dmVyZmxvdyk7CiAgICAgcmV0dXJuIHRvQVBJKGltYWdlLmxlYWtSZWYoKSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3BwCmluZGV4IGM5MWFmOGVh
Zjc5YmZjZmExMWU3OTczNDUxNDgwY2E3OGRkOTRhMTguLjgyNWE4OGQzNWE1OTViOWM5YzczYjg0
Y2YwYzg0OGFiZTA1ZGRmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyBSZWZQdHI8V2ViSW1hZ2U+
IGltYWdlRm9yUmVjdChGcmFtZVZpZXcqIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgcmVjdCwK
ICAgICByZXR1cm4gc25hcHNob3Q7CiB9CiAKLVJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5k
bGVOb2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zKQorUmVm
UHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6OnJlbmRlcmVkSW1hZ2UoU25h
cHNob3RPcHRpb25zIG9wdGlvbnMsIGJvb2wgc2hvdWxkRXhjbHVkZU92ZXJmbG93KQogewogICAg
IEZyYW1lKiBmcmFtZSA9IG1fbm9kZS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCkBAIC0xODEsOCArMTgxLDEzIEBAIFJlZlB0cjxXZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVO
b2RlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9ucyBvcHRpb25zCiAgICAgaWYg
KCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBMYXlvdXRSZWN0IHRv
cExldmVsUmVjdDsKLSAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IHNuYXBwZWRJbnRSZWN0KHJl
bmRlcmVyLT5wYWludGluZ1Jvb3RSZWN0KHRvcExldmVsUmVjdCkpOworICAgIEludFJlY3QgcGFp
bnRpbmdSZWN0OworICAgIGlmIChzaG91bGRFeGNsdWRlT3ZlcmZsb3cpCisgICAgICAgIHBhaW50
aW5nUmVjdCA9IHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNm
b3JtcygpOworICAgIGVsc2UgeworICAgICAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKKyAg
ICAgICAgcGFpbnRpbmdSZWN0ID0gc25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9v
dFJlY3QodG9wTGV2ZWxSZWN0KSk7CisgICAgfQogCiAgICAgZnJhbWVWaWV3LT5zZXROb2RlVG9E
cmF3KG1fbm9kZS5wdHIoKSk7CiAgICAgYXV0byBpbWFnZSA9IGltYWdlRm9yUmVjdChmcmFtZVZp
ZXcsIHBhaW50aW5nUmVjdCwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZS5oCmluZGV4IDZkNDg1MDA5NDU0ZjhmZTRiZjgyZDI0YjIyN2U2YTMwNDkw
ODBhMjcuLjQyZWU5NWYyY2I3YWM3MjBiMWJjY2YzZWFhMGQ4OTdkMTZjNjg0YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlTm9kZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5oCkBAIC02MSw3ICs2MSw3IEBA
IHB1YmxpYzoKICAgICAvLyBOb3RlOiBUaGVzZSBzaG91bGQgb25seSBiZSBvcGVyYXRpb25zIHRo
YXQgYXJlIG5vdCBleHBvc2VkIHRvIEphdmFTY3JpcHQuCiAgICAgV2ViQ29yZTo6SW50UmVjdCBl
bGVtZW50Qm91bmRzKCk7CiAgICAgV2ViQ29yZTo6SW50UmVjdCByZW5kZXJSZWN0KGJvb2wqKTsK
LSAgICBSZWZQdHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zKTsKKyAg
ICBSZWZQdHI8V2ViSW1hZ2U+IHJlbmRlcmVkSW1hZ2UoU25hcHNob3RPcHRpb25zLCBib29sIHNo
b3VsZEV4Y2x1ZGVPdmVyZmxvdyk7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU+IHZpc2libGVSYW5nZSgpOwogICAgIHZvaWQgc2V0SFRNTElucHV0RWxlbWVudFZhbHVlRm9y
VXNlcihjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEhUTUxJbnB1dEVsZW1lbnRTcGVsbGNo
ZWNrRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCA5NmY0MTJiNzBiNjE0YWFjM2NiMTg2YmI0ODI3NGRkNmVjYmM5MWNmLi4z
NGQyMzI4NjhmZWJlNWFiMjNkMTY3ODJhNmQ5YWNkMDg4ZmMxMjkxIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTct
MDMtMjIgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
QWRkIGFuIG9wdGlvbiB0byBleGNsdWRlIG92ZXJmbG93IHdoZW4gc25hcHNob3R0aW5nIGEgV0tX
ZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY5OTkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDE0MTA4
Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlbmRlcmVkSW1hZ2VXaXRo
T3B0aW9ucy5tbTogQWRkZWQuCisgICAgICAgICgtW1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc09i
amVjdCBkaWRSZW5kZXJJbWFnZVdpdGhTaXplOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVuZGVyZWRJbWFnZVdpdGhPcHRp
b25zUGx1Z0luLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25z
UGx1Z0luIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVy
Ol0pOgorICAgICAgICAoLVtSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4gd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVuZGVyZWRJbWFn
ZVdpdGhPcHRpb25zUHJvdG9jb2wuaDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyQ29jb2EvcmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWw6
IEFkZGVkLgorCiAyMDE3LTAzLTIyICBNYXR0IFJhamNhICA8bXJhamNhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBPbmx5IHJ1biB2b2x1bWUtcmVsYXRlZCBhdXRvcGxheSBwb2xpY3kgdGVzdHMgb24g
TWFjLgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlZDEwOGVhYTc5Y2VkODliYmE2ZWU0NDZi
YWQxM2JiY2VhODA3YTc1Li4yYzJiNGIwNmM3MWRjNzU4YzBmYTZlMDZhYmY4ZDliNDI4OTFmMDc4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDc4LDYgKzQ3OCw5IEBACiAJCUExMEYwNDdF
MUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTEwRjA0N0MxRTNBRDI5QzAwQzk1RTE5
IC8qIE5TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87IH07CiAJCUExMTQ2QThEMUQyRDcxMTUwMDBG
RTcxMCAvKiBDb250ZW50RmlsdGVyaW5nLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTExNDZBOEExRDJENzA0RjAwMEZFNzEwIC8qIENvbnRlbnRGaWx0
ZXJpbmcubW0gKi87IH07CiAJCUExMjU0NzhGMURCMThCOTQwMDM1ODU2NCAvKiBMb2FkRGF0YVdp
dGhOaWxNSU1FVHlwZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExMjU0NzhEMURCMThCOTQwMDM1ODU2NCAvKiBMb2FkRGF0YVdpdGhOaWxNSU1FVHlw
ZS5tbSAqLzsgfTsKKwkJQTEyRERCRkIxRTgzNkYwNzAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VX
aXRoT3B0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMkREQkY5MUU4MzZGMDcwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnMu
bW0gKi87IH07CisJCUExMkREQzAwMUU4MzczRTcwMENGNkNBRSAvKiByZW5kZXJlZC1pbWFnZS1l
eGNsdWRpbmctb3ZlcmZsb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJEREJGRjFFODM3M0MxMDBDRjZDQUUgLyogcmVuZGVyZWQt
aW1hZ2UtZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwgKi87IH07CisJCUExMkREQzAyMUU4MzdDMjQw
MENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTJEREJGQzFFODM2RkYxMDBDRjZD
QUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tICovOyB9OwogCQlBMTNFQkJB
QTFCODc0MjhEMDAwOTcxMTAgLyogV2ViUHJvY2Vzc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExM0VCQkE5MUI4NzQyOEQwMDA5NzExMCAv
KiBXZWJQcm9jZXNzUGx1Z0luLm1tICovOyB9OwogCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAg
LyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTM5RTcyMUE0MjNBMkIwMEY1OTBGNSAvKiBQbGF0Zm9ybVV0
aWxpdGllc0NvY29hLm1tICovOyB9OwogCQlBMTNFQkJCMDFCODc0MzZGMDAwOTcxMTAgLyogQnVu
ZGxlUGFyYW1ldGVyc1BsdWdJbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExM0VCQkFFMUI4NzQzNkYwMDA5NzExMCAvKiBCdW5kbGVQYXJhbWV0ZXJz
UGx1Z0luLm1tICovOyB9OwpAQCAtNjU0LDYgKzY1Nyw3IEBACiAJCQlkc3RQYXRoID0gVGVzdFdl
YktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xkZXJTcGVjID0gNzsKIAkJCWZpbGVzID0g
KAorCQkJCUExMkREQzAwMUU4MzczRTcwMENGNkNBRSAvKiByZW5kZXJlZC1pbWFnZS1leGNsdWRp
bmctb3ZlcmZsb3cuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDOTlCREY4OTFFODA5
ODA0MDBDNzE3MEUgLyogYXV0b3BsYXktemVyby12b2x1bWUtY2hlY2suaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQlBMTRBQUI2NTFFNzhEQzU0MDBDMUFEQzIgLyogZW5jcnlwdGVkLnBk
ZiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlBMTQwOUFEOTFFNzI1NEQ0MDA0OTQ5RDkgLyog
cGFzc3dvcmQtcHJvdGVjdGVkLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTIzNSw2
ICsxMjM5LDEwIEBACiAJCUExMEYwNDdDMUUzQUQyOUMwMEM5NUUxOSAvKiBOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTlNGaWxl
TWFuYWdlckV4dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExNDZBOEEx
RDJENzA0RjAwMEZFNzEwIC8qIENvbnRlbnRGaWx0ZXJpbmcubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb250ZW50RmlsdGVyaW5nLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBMTI1NDc4RDFEQjE4Qjk0MDAzNTg1NjQgLyogTG9hZERhdGFXaXRo
TmlsTUlNRVR5cGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBM
b2FkRGF0YVdpdGhOaWxNSU1FVHlwZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QTEyRERCRjkxRTgzNkYwNzAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9ucy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRlcmVkSW1hZ2VXaXRo
T3B0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyRERCRkMxRTgzNkZG
MTAwQ0Y2Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1BsdWdJbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Bs
dWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyRERCRkYxRTgzNzNDMTAw
Q0Y2Q0FFIC8qIHJlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1vdmVyZmxvdy5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gInJlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1vdmVyZmxvdy5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTEyRERDMDExRTgzNzRGNTAwQ0Y2
Q0FFIC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExM0VCQjQ5MUI4NzMzOUUwMDA5NzExMCAvKiBU
ZXN0V2ViS2l0QVBJLndrYnVuZGxlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSB3cmFwcGVyLmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBUZXN0V2ViS2l0QVBJLndrYnVuZGxlOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQlBMTNFQkI1MjFCODczNDY2MDAwOTcxMTAgLyogV2ViUHJvY2Vzc1BsdWdJbi54Y2Nv
bmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQcm9jZXNzUGx1Z0luLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTNFQkI1NDFCODczNEUwMDAw
OTcxMTAgLyogSW5mby5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3QueG1sOyBwYXRoID0gSW5m
by5wbGlzdDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NTAsNiArMTY1OCw5IEBA
CiAJCQkJMUE0RjgxQzgxQkRGRkQxODAwNEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1t
ICovLAogCQkJCTFBNEY4MUNEMUJERkZENTMwMDRFNjcyRSAvKiBSZW1vdGVPYmplY3RSZWdpc3Ry
eVBsdWdJbi5tbSAqLywKIAkJCQlDRDlFMjkyQjFDOTBBNzFGMDAwQkI4MDAgLyogUmVxdWlyZXNV
c2VyQWN0aW9uRm9yUGxheWJhY2subW0gKi8sCisJCQkJQTEyRERCRjkxRTgzNkYwNzAwQ0Y2Q0FF
IC8qIFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9ucy5tbSAqLywKKwkJCQlBMTJEREJGQzFFODM2RkYx
MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tICovLAorCQkJCUEx
MkREQzAxMUU4Mzc0RjUwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQcm90b2Nv
bC5oICovLAogCQkJCTM3QkNBNjFCMUI1OTZCQTkwMDIwMTJDQSAvKiBTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzSW5OZXdXaW5kb3dBY3Rpb25zLm1tICovLAogCQkJCTJEOUE1M0FFMUIzMUZBOEQwMDc0
RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLywKIAkJCQkyREZGN0I2QzFEQTQ4N0FGMDA4MTQ2MTQg
LyogU25hcHNob3RTdG9yZS5tbSAqLywKQEAgLTE4NTcsNiArMTg2OCw3IEBACiAJCQkJQ0VCQ0Ex
MzcxRTNBODAzNDAwQzczMjkzIC8qIHBhZ2Utd2l0aG91dC1jc3AuaHRtbCAqLywKIAkJCQlDRUJD
QTEzNjFFM0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRob3V0LWNzcC1pZnJhbWUuaHRtbCAqLywK
IAkJCQlBMTQwOUFEODFFNzI1NEFDMDA0OTQ5RDkgLyogcGFzc3dvcmQtcHJvdGVjdGVkLnBhZ2Vz
ICovLAorCQkJCUExMkREQkZGMUU4MzczQzEwMENGNkNBRSAvKiByZW5kZXJlZC1pbWFnZS1leGNs
dWRpbmctb3ZlcmZsb3cuaHRtbCAqLywKIAkJCQlGNEY0MDVCQjFENEMwQ0Y4MDA3QTk3MDcgLyog
c2tpbm55LWF1dG9wbGF5aW5nLXZpZGVvLXdpdGgtYXVkaW8uaHRtbCAqLywKIAkJCQk1MTVCRTE2
RTFENDI4OEZGMDBERDdDNjggLyogU3RvcmVCbG9iVG9CZURlbGV0ZWQuaHRtbCAqLywKIAkJCQk1
MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRt
bCAqLywKQEAgLTI3NDEsNiArMjc1Myw3IEBACiAJCQkJN0E5MDlBODMxRDg3NzQ4MDAwN0UxMEY4
IC8qIEludFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRUYxQTQxMUFFNjAwNDQ3
QzRDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VGMDFBNDExQUU2MDA0NDdDNEMgLyogRXZhbHVhdGVKYXZh
U2NyaXB0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExMkREQkZCMUU4MzZGMDcwMENGNkNBRSAv
KiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNEQ0RjNC
OTFFNEUzNkU0MDBCQjI3NjcgLyogRGF0YUludGVyYWN0aW9uVGVzdHMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3Q0NFN0VGMTFBNDExQUU2MDA0NDdDNEMgLyogRmFpbGVkTG9hZC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzRTA0RjFEMEE2NDE4MDBGRUJDRjMgLyogRmlsZVN5c3RlbS5jcHAg
aW4gU291cmNlcyAqLywKQEAgLTI5NzgsNiArMjk5MSw3IEBACiAJCQkJMUE0RjgxQ0YxQkRGRkQ1
MzAwNEU2NzJFIC8qIFJlbW90ZU9iamVjdFJlZ2lzdHJ5UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0M4ODJFMDkxQzgwQzYzMDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGRQbHVnSW4u
bW0gaW4gU291cmNlcyAqLywKIAkJCQkzN0E3MDlBRjFFM0VBOTdFMDBDQTU5NjkgLyogQnVuZGxl
UmFuZ2VIYW5kbGVQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKKwkJCQlBMTJEREMwMjFFODM3QzI0
MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzc0QjdBNjExREYzNzFDRjAwQUNDQjZDIC8qIEJ1bmRsZUVkaXRpbmdEZWxlZ2F0
ZVBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDNEMUQwQTYwRDYwMEZFQkNGMyAv
KiBVdGlsaXRpZXNDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExM0VCQkFBMUI4NzQyOEQw
MDA5NzExMCAvKiBXZWJQcm9jZXNzUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZW5kZXJlZEltYWdlV2l0
aE9wdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9SZW5k
ZXJlZEltYWdlV2l0aE9wdGlvbnMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGNiMTAwM2Y1YTcyOGU2MjU1OTZh
YzQ4ZWEwNzIzZGJlMGUyYmNkNQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9ucy5tbQpAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBXS19BUElf
RU5BQkxFRAorCisjaW1wb3J0ICJSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQcm90b2NvbC5oIgor
I2ltcG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0
cmFzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5o
PgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJOworCitzdGF0
aWMgYm9vbCB0ZXN0RmluaXNoZWQ7CisKK0BpbnRlcmZhY2UgUmVuZGVyZWRJbWFnZVdpdGhPcHRp
b25zT2JqZWN0IDogTlNPYmplY3QgPFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sPgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zT2JqZWN0CisK
Ky0gKHZvaWQpZGlkUmVuZGVySW1hZ2VXaXRoU2l6ZTooQ0dTaXplKXNpemUKK3sKKyNpZiBQTEFU
Rk9STShJT1MpCisgICAgQ0dGbG9hdCBzY2FsZSA9IFtVSVNjcmVlbiBtYWluU2NyZWVuXS5zY2Fs
ZTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBDR0Zsb2F0IHNjYWxlID0gW05TU2NyZWVuIG1h
aW5TY3JlZW5dLmJhY2tpbmdTY2FsZUZhY3RvcjsKKyNlbmRpZgorICAgIEVYUEVDVF9FUSg3MjAs
IHNpemUud2lkdGggLyBzY2FsZSk7CisgICAgRVhQRUNUX0VRKDU0MCwgc2l6ZS5oZWlnaHQgLyBz
Y2FsZSk7CisgICAgdGVzdEZpbmlzaGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdlYktp
dDIsIFJlbmRlcmVkSW1hZ2VFeGNsdWRpbmdPdmVyZmxvdykKK3sKKyAgICBXS1dlYlZpZXdDb25m
aWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gdGVzdHdl
YmtpdGFwaV9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJSZW5kZXJlZElt
YWdlV2l0aE9wdGlvbnNQbHVnSW4iXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CisKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0TlMoW1tSZW5kZXJlZEltYWdl
V2l0aE9wdGlvbnNPYmplY3QgYWxsb2NdIGluaXRdKTsKKyAgICBfV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UgKmludGVyZmFjZSA9IFtfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0
SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQ
cm90b2NvbCldOworICAgIFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlZ2lzdGVy
RXhwb3J0ZWRPYmplY3Q6b2JqZWN0LmdldCgpIGludGVyZmFjZTppbnRlcmZhY2VdOworCisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAicmVuZGVyZWQtaW1hZ2UtZXhjbHVkaW5n
LW92ZXJmbG93IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktp
dEFQSS5yZXNvdXJjZXMiXV1dOworCisgICAgVXRpbDo6cnVuKCZ0ZXN0RmluaXNoZWQpOworfQor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1BsdWdJbi5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlbmRlcmVkSW1hZ2VXaXRo
T3B0aW9uc1BsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODYwMzAwMWVhYWYxNWFhMjgyYTI5NDg4YmFi
ZmQwZDY4ODFhMWY3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tCkBAIC0wLDAg
KzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9F
TkFCTEVECisKKyNpbXBvcnQgIlJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sLmgiCisj
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViUHJvY2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YlByb2Nlc3NQbHVnSW5GcmFtZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJ
bkxvYWREZWxlZ2F0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbk5vZGVI
YW5kbGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5TY3JpcHRXb3JsZC5o
PgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisKK0BpbnRlcmZhY2UgUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luIDogTlNPYmpl
Y3QgPFdLV2ViUHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlPgor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0luIHsK
KyAgICBSZXRhaW5QdHI8aWQgPFJlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sPj4gX3Jl
bW90ZU9iamVjdDsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlByb2Nlc3NQ
bHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIGJyb3dzZXJDb250ZXh0Q29udHJvbGxl
ci5sb2FkRGVsZWdhdGUgPSBzZWxmOworCisgICAgX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlICpp
bnRlcmZhY2UgPSBbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFj
ZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUHJvdG9jb2wp
XTsKKyAgICBfcmVtb3RlT2JqZWN0ID0gW2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3Rl
T2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOmludGVyZmFjZV07
Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjoo
V0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBk
aWRGaW5pc2hMb2FkRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUKK3sK
KyAgICBKU0NvbnRleHQgKmNvbnRleHQgPSBbZnJhbWUganNDb250ZXh0Rm9yV29ybGQ6W1dLV2Vi
UHJvY2Vzc1BsdWdJblNjcmlwdFdvcmxkIG5vcm1hbFdvcmxkXV07CisgICAgSlNWYWx1ZSAqY29u
dGFpbmVyVmFsdWUgPSBbY29udGV4dCBldmFsdWF0ZVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3IoJy5jb250YWluZXInKSJdOworICAgIFdLV2ViUHJvY2Vzc1BsdWdJbk5vZGVIYW5kbGUg
KmNvbnRhaW5lck5vZGUgPSBbV0tXZWJQcm9jZXNzUGx1Z0luTm9kZUhhbmRsZSBub2RlSGFuZGxl
V2l0aEpTVmFsdWU6Y29udGFpbmVyVmFsdWUgaW5Db250ZXh0OmNvbnRleHRdOworI2lmIFBMQVRG
T1JNKElPUykKKyAgICBVSUltYWdlICppbWFnZSA9IFtjb250YWluZXJOb2RlIHJlbmRlcmVkSW1h
Z2VXaXRoT3B0aW9uczprV0tTbmFwc2hvdE9wdGlvbnNFeGNsdWRlT3ZlcmZsb3ddOworI2VsaWYg
UExBVEZPUk0oTUFDKQorICAgIE5TSW1hZ2UgKmltYWdlID0gW2NvbnRhaW5lck5vZGUgcmVuZGVy
ZWRJbWFnZVdpdGhPcHRpb25zOmtXS1NuYXBzaG90T3B0aW9uc0V4Y2x1ZGVPdmVyZmxvd107Cisj
ZW5kaWYKKyAgICBbX3JlbW90ZU9iamVjdCBkaWRSZW5kZXJJbWFnZVdpdGhTaXplOmltYWdlLnNp
emVdOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvUmVuZGVyZWRJbWFnZVdpdGhP
cHRpb25zUHJvdG9jb2wuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29h
L1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9uc1Byb3RvY29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU1ODNiZmJm
NDMyNWZlNmFlNThhOWNhZDI3YTFlOGM0ZjE3OWIxMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlbmRlcmVkSW1hZ2VXaXRoT3B0aW9u
c1Byb3RvY29sLmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK0Bwcm90b2NvbCBSZW5k
ZXJlZEltYWdlV2l0aE9wdGlvbnNQcm90b2NvbAorLSAodm9pZClkaWRSZW5kZXJJbWFnZVdpdGhT
aXplOihDR1NpemUpc2l6ZTsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0MkNvY29hL3JlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1vdmVyZmxvdy5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvcmVuZGVyZWQtaW1hZ2Ut
ZXhjbHVkaW5nLW92ZXJmbG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk5MWUxY2ZkNzFkMTllYzJkMTRi
NzQ4MjBiYmViNTE1Y2MyNzg2ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL3JlbmRlcmVkLWltYWdlLWV4Y2x1ZGluZy1vdmVyZmxvdy5o
dG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgICAgPHN0eWxl
PgorICAgICAgICAuY29udGFpbmVyIHsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgICAgICB3aWR0aDogNzIwcHg7
CisgICAgICAgICAgICBoZWlnaHQ6IDU0MHB4OworICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xv
cjogZ3JlZW47CisgICAgICAgIH0KKyAgICAgICAgLmlubmVyIHsKKyAgICAgICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgICAgIHdpZHRoOiAzNjBweDsKKyAgICAgICAgICAgIGhl
aWdodDogMTA1NDBweDsKKyAgICAgICAgICAgIHRvcDogLTEwMDAwcHg7CisgICAgICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxkaXYg
Y2xhc3M9Y29udGFpbmVyPgorICAgICAgICA8ZGl2IGNsYXNzPWlubmVyPgorICAgICAgICA8L2Rp
dj4KKyAgICA8L2Rpdj4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>