<?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>117998</bug_id>
          
          <creation_ts>2013-06-25 10:52:40 -0700</creation_ts>
          <short_desc>need mechanism to detect (partially) hidden blocked plugins</short_desc>
          <delta_ts>2013-07-03 16:57:11 -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>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>OS X 10.8</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="Gordon Sheridan">gordon_sheridan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>903375</commentid>
    <comment_count>0</comment_count>
      <attachid>205411</attachid>
    <who name="Gordon Sheridan">gordon_sheridan</who>
    <bug_when>2013-06-25 10:52:40 -0700</bug_when>
    <thetext>Created attachment 205411
Patch to provide indication of (partially) hidden blocked plugin replacement elements

We&apos;d like to be able to detect when the replacement elements for a blocked plugin are hidden or partially obscured, making it difficult for the user to identify why the page might not be working as expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903376</commentid>
    <comment_count>1</comment_count>
      <attachid>205411</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-25 10:52:46 -0700</bug_when>
    <thetext>Comment on attachment 205411
Patch to provide indication of (partially) hidden blocked plugin replacement elements

Rejecting attachment 205411 from review queue.

gordon_sheridan@apple.com does not have reviewer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have reviewer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have reviewer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your reviewer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903377</commentid>
    <comment_count>2</comment_count>
      <attachid>205411</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-25 10:53:20 -0700</bug_when>
    <thetext>Comment on attachment 205411
Patch to provide indication of (partially) hidden blocked plugin replacement elements

Rejecting attachment 205411 from commit-queue.

gordon_sheridan@apple.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.

- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.

- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed).  The commit-queue restarts itself every 2 hours.  After restart the commit-queue will correctly respect your committer rights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>903380</commentid>
    <comment_count>3</comment_count>
      <attachid>205411</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-06-25 11:05:45 -0700</bug_when>
    <thetext>Comment on attachment 205411
Patch to provide indication of (partially) hidden blocked plugin replacement elements

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

&gt; Source/WebCore/rendering/RenderEmbeddedObject.cpp:286
&gt; +    TextRun run(&quot;&quot;);

Does this have to be initialized with an empty string?

&gt; Source/WebCore/rendering/RenderEmbeddedObject.h:54
&gt; +    bool replacementFitsInContentBoxRect() const;

It&apos;s not clear from the interface what &quot;replacement&quot; means. Is there a better term to use?

&gt; Source/WebKit2/Shared/Plugins/Netscape/PluginInformation.cpp:123
&gt; +PassRefPtr&lt;ImmutableDictionary&gt; createPluginInformationDictionary(const PluginModuleInfo&amp; plugin, const String&amp; frameURLString, const String&amp; mimeType, const String&amp; pageURLString, const String&amp; pluginspageAttributeURLString, const String&amp; pluginURLString, bool replacementMayBePartiallyHidden)

You could provide a default value of false for replacementMayBePartiallyHidden to avoid mysterious &apos;false&apos; at call sites.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:556
&gt; +            replacementMayBePartiallyHidden = renderObject-&gt;style()-&gt;visibility() != VISIBLE || !renderObject-&gt;replacementFitsInContentBoxRect();

It&apos;s a bit odd to have this visibility check here. It&apos;s one of many reasons why the plug-in may not be visible, and, if we were to make this check more complex, putting more code here would not make sense. We could add a new function to RenderEmbeddedObject, or even something more general on, say, RenderBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905494</commentid>
    <comment_count>4</comment_count>
      <attachid>205926</attachid>
    <who name="Gordon Sheridan">gordon_sheridan</who>
    <bug_when>2013-07-02 10:52:48 -0700</bug_when>
    <thetext>Created attachment 205926
Patch to provide indication of (partially) hidden blocked plugin replacement elements

I’ve tested the following scenarios:
	normal size/placement/visibility blocked plugin
	off the right side of the screen
	off the bottom of the screen
        off the top of the screen
        off the left of the screen
	covered by another element
	too small to display the replacement text
	low opacity (&lt; 0.1)
	visibility: hidden

I set a conditional breakpoint that correctly triggers in all but the first three scenarios.  In scenarios #2 and #3, I’m able to scroll the element on screen where it can then be clicked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905610</commentid>
    <comment_count>5</comment_count>
      <attachid>205926</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-02 15:47:16 -0700</bug_when>
    <thetext>Comment on attachment 205926
Patch to provide indication of (partially) hidden blocked plugin replacement elements

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

In general I think this is ok - I can&apos;t really think of many better ways to do it. I worry about a lot of edge cases though: like an element animating over the plugin, pointer-events, an overlay that completely obscures the element but itself is invisible to pointer events (and thus will not hit test in your algorithm), etc.

&gt; Source/WebCore/rendering/RenderEmbeddedObject.cpp:304
&gt; +        if (style-&gt;opacity() &lt; 0.1)
&gt; +            return true;

I&apos;m confused by this: if any of the ancestors have less than 10% opacity, then this element is obscured?

I assume you&apos;re trying to find if something up the parent chain is making this object mostly transparent. Maybe you should accumulate (multiply) the opacity as you go? 0.5 * 0.5 * 0.5 * 0.5 * 0.5 is getting pretty hard to see.

&gt; Source/WebCore/rendering/RenderEmbeddedObject.cpp:332
&gt; +    hit = docRenderer-&gt;hitTest(request, location, result);

I think this will fail if something up the chain has set pointer-events to none.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905612</commentid>
    <comment_count>6</comment_count>
      <attachid>205926</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-02 15:48:43 -0700</bug_when>
    <thetext>Comment on attachment 205926
Patch to provide indication of (partially) hidden blocked plugin replacement elements

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

&gt; Source/WebCore/rendering/RenderEmbeddedObject.cpp:295
&gt; +bool RenderEmbeddedObject::isReplacementObscured() const

I think WebKit uses the term &quot;replaced content&quot; or &quot;fallback content&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905673</commentid>
    <comment_count>7</comment_count>
    <who name="Gordon Sheridan">gordon_sheridan</who>
    <bug_when>2013-07-02 19:51:22 -0700</bug_when>
    <thetext>I&apos;ll add the check for accumulated opacity, and try checking for &apos;pointer-events: none&apos; as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905676</commentid>
    <comment_count>8</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-07-02 20:04:48 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/rendering/RenderEmbeddedObject.cpp:332
&gt; &gt; +    hit = docRenderer-&gt;hitTest(request, location, result);
&gt; 
&gt; I think this will fail if something up the chain has set pointer-events to none.

But that&apos;s the behavior you want.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905719</commentid>
    <comment_count>9</comment_count>
      <attachid>205972</attachid>
    <who name="Gordon Sheridan">gordon_sheridan</who>
    <bug_when>2013-07-03 00:48:25 -0700</bug_when>
    <thetext>Created attachment 205972
Patch to provide indication of (partially) hidden blocked plugin replacement elements #3

The check for &apos;pointer-events: none&apos; turned out to be redundant with hitTest(), so I didn&apos;t incorporate it.  I also tested that specific scenario to be sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905734</commentid>
    <comment_count>10</comment_count>
      <attachid>205972</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2013-07-03 01:17:25 -0700</bug_when>
    <thetext>Comment on attachment 205972
Patch to provide indication of (partially) hidden blocked plugin replacement elements #3

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

Sorry for the red herring on pointer events. Although it still could be the case that something obscures the plugin visually that has pointer-events: none. That should be rare though.

&gt; Source/WebCore/ChangeLog:15
&gt; +        Added public method to determine if the EMBED element used for a blocked plugin is inaccessible to the user.

Technically it could be embed or object, but not worth revving for that change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905735</commentid>
    <comment_count>11</comment_count>
      <attachid>205972</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-03 01:18:19 -0700</bug_when>
    <thetext>Comment on attachment 205972
Patch to provide indication of (partially) hidden blocked plugin replacement elements #3

Rejecting attachment 205972 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 205972, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
out of 1 hunk FAILED -- saving rejects to file Source/WebKit2/Shared/Plugins/Netscape/PluginInformation.h.rej
patching file Source/WebKit2/UIProcess/WebPageProxy.cpp
patching file Source/WebKit2/UIProcess/WebPageProxy.h
patching file Source/WebKit2/UIProcess/WebPageProxy.messages.in
patching file Source/WebKit2/WebProcess/WebPage/WebPage.cpp

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Dean Jackson&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/1016568</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905985</commentid>
    <comment_count>12</comment_count>
      <attachid>206029</attachid>
    <who name="Gordon Sheridan">gordon_sheridan</who>
    <bug_when>2013-07-03 15:28:29 -0700</bug_when>
    <thetext>Created attachment 206029
Patch to provide indication of (partially) hidden blocked plugin replacement elements #4 (resolving conflicts)

This patch resolves the ChangeLog conflicts, and reverts to Jessie&apos;s original spelling of PlugIn for the the key and wrapper functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>905986</commentid>
    <comment_count>13</comment_count>
      <attachid>206030</attachid>
    <who name="Gordon Sheridan">gordon_sheridan</who>
    <bug_when>2013-07-03 15:34:00 -0700</bug_when>
    <thetext>Created attachment 206030
Patch to provide indication of (partially) hidden blocked plugin replacement elements #4 (content type=patch)

Mark check box &quot;patch&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906005</commentid>
    <comment_count>14</comment_count>
      <attachid>206030</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-03 16:57:08 -0700</bug_when>
    <thetext>Comment on attachment 206030
Patch to provide indication of (partially) hidden blocked plugin replacement elements #4 (content type=patch)

Clearing flags on attachment: 206030

Committed r152382: &lt;http://trac.webkit.org/changeset/152382&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906006</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-03 16:57:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205411</attachid>
            <date>2013-06-25 10:52:40 -0700</date>
            <delta_ts>2013-07-02 10:52:48 -0700</delta_ts>
            <desc>Patch to provide indication of (partially) hidden blocked plugin replacement elements</desc>
            <filename>wk-83906.patch</filename>
            <type>text/plain</type>
            <size>13418</size>
            <attacher name="Gordon Sheridan">gordon_sheridan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggZTBkZWJhNS4uMDI2M2JjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4KQEAgLTY2OCw2ICs2NjgsNyBAQCBfX1pON1dlYkNvcmUyMERpc3BsYXlTbGVlcERpc2Fi
bGVyRDFFdgogX19aTjdXZWJDb3JlMjBOb2RlUmVuZGVyaW5nQ29udGV4dEMxRVBOU180Tm9kZUUK
IF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHREMUV2CiBfX1pON1dlYkNvcmUyMFJl
bmRlckVtYmVkZGVkT2JqZWN0MjlzZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkVOUzBfMjZQ
bHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbkUKK19fWk5LN1dlYkNvcmUyMFJlbmRlckVtYmVkZGVk
T2JqZWN0MzFyZXBsYWNlbWVudEZpdHNJbkNvbnRlbnRCb3hSZWN0RXYKIF9fWk43V2ViQ29yZTIw
UmVzb3VyY2VIYW5kbGVDbGllbnQxNmRpZFJlY2VpdmVCdWZmZXJFUE5TXzE0UmVzb3VyY2VIYW5k
bGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVpCiBfX1pON1dlYkNvcmUy
MFJlc291cmNlSGFuZGxlQ2xpZW50MjB3aWxsU2VuZFJlcXVlc3RBc3luY0VQTlNfMTRSZXNvdXJj
ZUhhbmRsZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQog
X19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3lu
Y0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVQMTlOU0NhY2hlZFVSTFJlc3BvbnNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBlOWYw
ZjdlLi5kNTU1NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
RW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bWJlZGRlZE9iamVjdC5jcHAKQEAgLTI3Nyw2ICsyNzcsMjAgQEAgYm9vbCBSZW5kZXJFbWJlZGRl
ZE9iamVjdDo6Z2V0UmVwbGFjZW1lbnRUZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFj
Y3VtdWwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6
cmVwbGFjZW1lbnRGaXRzSW5Db250ZW50Qm94UmVjdCgpIGNvbnN0Cit7CisgICAgRmxvYXRSZWN0
IGNvbnRlbnRSZWN0OworICAgIFBhdGggcGF0aDsKKyAgICBGbG9hdFJlY3QgcmVwbGFjZW1lbnRU
ZXh0UmVjdDsKKyAgICBGb250IGZvbnQ7CisgICAgVGV4dFJ1biBydW4oIiIpOworICAgIGZsb2F0
IHRleHRXaWR0aDsKKyAgICBpZiAoIWdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KExheW91dFBv
aW50KCksIGNvbnRlbnRSZWN0LCBwYXRoLCByZXBsYWNlbWVudFRleHRSZWN0LCBmb250LCBydW4s
IHRleHRXaWR0aCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByZXBsYWNl
bWVudFRleHRSZWN0LndpZHRoKCkgPD0gY29udGVudFJlY3Qud2lkdGgoKSAmJiByZXBsYWNlbWVu
dFRleHRSZWN0LmhlaWdodCgpIDw9IGNvbnRlbnRSZWN0LmhlaWdodCgpOworfQorCiB2b2lkIFJl
bmRlckVtYmVkZGVkT2JqZWN0OjpsYXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENo
ZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggOTFlNDRkNS4uY2M3ZGVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTUxLDYg
KzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGFzRmFsbGJhY2tDb250ZW50KGJvb2wgaGFz
RmFsbGJhY2tDb250ZW50KSB7IG1faGFzRmFsbGJhY2tDb250ZW50ID0gaGFzRmFsbGJhY2tDb250
ZW50OyB9CiAKICAgICB2b2lkIGhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQo
RXZlbnQqKTsKKyAgICBib29sIHJlcGxhY2VtZW50Rml0c0luQ29udGVudEJveFJlY3QoKSBjb25z
dDsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2aXJ0dWFsIGJvb2wg
YWxsb3dzQWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCmluZGV4IGJhNjdlNGQu
LjFiODgzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdp
bkluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVn
aW5JbmZvcm1hdGlvbi5jcHAKQEAgLTEwMywzICsxMDMsOSBAQCBXS1N0cmluZ1JlZiBXS1BsdWdp
bkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkKICAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBX
ZWJTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpKS5sZWFrUmVm
KCk7CiAgICAgcmV0dXJuIHRvQVBJKGtleSk7CiB9CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5m
b3JtYXRpb25SZXBsYWNlbWVudE1heUJlUGFydGlhbGx5SGlkZGVuS2V5KCkKK3sKKyAgICBzdGF0
aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVnSW5JbmZvcm1hdGlvblJl
cGxhY2VtZW50TWF5QmVQYXJ0aWFsbHlIaWRkZW5LZXkoKSkubGVha1JlZigpOworICAgIHJldHVy
biB0b0FQSShrZXkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLUGx1Z2luSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1Bs
dWdpbkluZm9ybWF0aW9uLmgKaW5kZXggMjliMDVlZi4uZTZlMzc3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5oCkBAIC03Myw2ICs3
Myw5IEBAIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3Bh
Z2VBdHRyaWJ1dGVVUkxLZXkoKTsKIC8qIFZhbHVlIHR5cGU6IFdLVVJMUmVmICovCiBXS19FWFBP
UlQgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpOwogCisvKiBW
YWx1ZSB0eXBlOiBXS0Jvb2xlYW5SZWYgKi8KK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BsdWdp
bkluZm9ybWF0aW9uUmVwbGFjZW1lbnRNYXlCZVBhcnRpYWxseUhpZGRlbktleSgpOworCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCmluZGV4IDBl
YjQ0MjIuLjAzOWUxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKQEAgLTk2LDYgKzk2LDEx
IEBAIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpCiAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkwiKTsKIH0KIAorU3RyaW5nIHBs
dWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRNYXlCZVBhcnRpYWxseUhpZGRlbktleSgpCit7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z2luSW5mb3JtYXRpb25SZXBsYWNlbWVudE1heUJl
UGFydGlhbGx5SGlkZGVuIik7Cit9CisKIHZvaWQgZ2V0UGx1Z2luTW9kdWxlSW5mb3JtYXRpb24o
Y29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBU
eXBlJiBtYXApCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMTUsNyAr
MTIwLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZv
cm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW8KICAgICByZXR1cm4gSW1tdXRhYmxlRGlj
dGlvbmFyeTo6YWRvcHQobWFwKTsKIH0KIAotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5
PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5m
byYgcGx1Z2luLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
c3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nKQor
UGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRp
Y3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBjb25zdCBTdHJpbmcmIGZy
YW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50TWF5QmVQYXJ0aWFs
bHlIaWRkZW4pCiB7CiAgICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAg
Z2V0UGx1Z2luTW9kdWxlSW5mb3JtYXRpb24ocGx1Z2luLCBtYXApOwpAQCAtMTMwLDYgKzEzNSw3
IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRp
b25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vCiAgICAgICAgIG1hcC5zZXQocGx1Z2luSW5mb3Jt
YXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShwbHVnaW5z
cGFnZUF0dHJpYnV0ZVVSTFN0cmluZykpOwogICAgIGlmICghcGx1Z2luVVJMU3RyaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpLCBX
ZWJVUkw6OmNyZWF0ZShwbHVnaW5VUkxTdHJpbmcpKTsKKyAgICBtYXAuc2V0KHBsdWdJbkluZm9y
bWF0aW9uUmVwbGFjZW1lbnRNYXlCZVBhcnRpYWxseUhpZGRlbktleSgpLCBXZWJCb29sZWFuOjpj
cmVhdGUocmVwbGFjZW1lbnRNYXlCZVBhcnRpYWxseUhpZGRlbikpOwogCiAgICAgcmV0dXJuIElt
bXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaAppbmRl
eCA3NGIwMjg4Li41MjBkY2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKQEAgLTQ4LDkgKzQ4LDEw
IEBAIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCk7CiBTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25QYWdlVVJMS2V5KCk7CiBTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QbHVnaW5z
cGFnZUF0dHJpYnV0ZVVSTEtleSgpOwogU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJM
S2V5KCk7CitTdHJpbmcgcGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE1heUJlUGFydGlhbGx5
SGlkZGVuS2V5KCk7CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mKTsKLVBhc3NS
ZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9u
YXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5n
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cGx1Z2luVVJMU3RyaW5nKTsKK1Bhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRl
UGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBjb25z
dCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50
TWF5QmVQYXJ0aWFsbHlIaWRkZW4pOwogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBj
cmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5n
KTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDRk
MjIxZDQuLjU3NzUyNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0xNDIxLDcgKzE0MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCB1aW50MzJfdCBwcm9jZXNzVHlwZSwgY29ucwogICAgIHBs
dWdpbkxvYWRQb2xpY3kgPSBQbHVnaW5JbmZvU3RvcmU6OmRlZmF1bHRMb2FkUG9saWN5Rm9yUGx1
Z2luKHBsdWdpbik7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgUmVmUHRyPEltbXV0YWJsZURp
Y3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KHBsdWdpbiwgZnJhbWVVUkxTdHJpbmcsIFN0cmluZygpLCBwYWdlVVJMU3RyaW5nLCBT
dHJpbmcoKSwgU3RyaW5nKCkpOworICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBwbHVn
aW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4s
IGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcoKSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmlu
ZygpLCBmYWxzZSk7CiAgICAgcGx1Z2luTG9hZFBvbGljeSA9IG1fbG9hZGVyQ2xpZW50LnBsdWdp
bkxvYWRQb2xpY3kodGhpcywgc3RhdGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1
Z2luTG9hZFBvbGljeSksIHBsdWdpbkluZm9ybWF0aW9uLmdldCgpKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lVVJMU3RyaW5nKTsKQEAgLTI3NDUsNyArMjc0NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVl
UGx1Z2luVW5hdmFpbGFiCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAgICAgU3Ry
aW5nIG5ld01pbWVUeXBlID0gbWltZVR5cGU7CiAgICAgUGx1Z2luTW9kdWxlSW5mbyBwbHVnaW4g
PSBtX3Byb2Nlc3MtPmNvbnRleHQoKS0+cGx1Z2luSW5mb1N0b3JlKCkuZmluZFBsdWdpbihuZXdN
aW1lVHlwZSwgS1VSTChLVVJMKCksIHBsdWdpblVSTFN0cmluZykpOwotICAgIHBsdWdpbkluZm9y
bWF0aW9uID0gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KHBsdWdpbiwgZnJhbWVV
UkxTdHJpbmcsIG1pbWVUeXBlLCBwYWdlVVJMU3RyaW5nLCBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVS
TFN0cmluZywgcGx1Z2luVVJMU3RyaW5nKTsKKyAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0
ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1l
VHlwZSwgcGFnZVVSTFN0cmluZywgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIHBsdWdp
blVSTFN0cmluZywgZmFsc2UpOwogI2VuZGlmCiAKICAgICBXS1BsdWdpblVuYXZhaWxhYmlsaXR5
UmVhc29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uID0ga1dLUGx1Z2luVW5hdmFpbGFiaWxp
dHlSZWFzb25QbHVnaW5NaXNzaW5nOwpAQCAtNDE5OSwxNCArNDE5OSwxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBTdHJpbgogICAgIG1fbG9hZGVyQ2xpZW50LmRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4odGhpcywgY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KG1pbWVUeXBlLCBmcmFt
ZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRC
bG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBT
dHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50TWF5QmVQYXJ0aWFsbHlI
aWRkZW4pCiB7CiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBsdWdpbkluZm9ybWF0
aW9uOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
ICAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICBQbHVnaW5Nb2R1bGVJbmZv
IHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUoKS5maW5kUGx1
Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7Ci0gICAgcGx1
Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkocGx1Z2lu
LCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIFN0cmluZygpLCBTdHJp
bmcoKSk7CisgICAgcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRp
Y3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcs
IFN0cmluZygpLCBTdHJpbmcoKSwgcmVwbGFjZW1lbnRNYXlCZVBhcnRpYWxseUhpZGRlbik7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNGRiNjJlOS4uZGVkMWU3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODY4LDcgKzg2OCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXRQaW5uaW5nRm9yTWFpbkZy
YW1lKGJvb2wgcGlubmVkVG9MZWZ0U2lkZSwgYm9vbCBwaW5uZWRUb1JpZ2h0U2lkZSwgYm9vbCBw
aW5uZWRUb1RvcFNpZGUsIGJvb2wgcGlubmVkVG9Cb3R0b21TaWRlKTsKICAgICB2b2lkIGRpZENo
YW5nZVBhZ2VDb3VudCh1bnNpZ25lZCk7CiAgICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7Ci0gICAgdm9pZCBkaWRCbG9ja0luc2VjdXJl
UGx1Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdp
blVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBw
YWdlVVJMU3RyaW5nKTsKKyAgICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJv
b2wgcmVwbGFjZW1lbnRNYXlCZVBhcnRpYWxseUhpZGRlbik7CiAgICAgdm9pZCBzZXRDYW5TaG9y
dENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENpcmN1aXRIb3Jpem9u
dGFsV2hlZWxFdmVudHMpIHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMg
PSBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7IH0KIAogICAgIHZvaWQgcmVh
dHRhY2hUb1dlYlByb2Nlc3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDhjMWRlOTAuLmJhMDlkZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjYs
NyArNjYsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENoYW5nZVNjcm9s
bE9mZnNldFBpbm5pbmdGb3JNYWluRnJhbWUoYm9vbCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBp
bm5lZFRvUmlnaHRTaWRlLCBib29sIHBpbm5lZFRvVG9wU2lkZSwgYm9vbCBwaW5uZWRUb0JvdHRv
bVNpZGUpCiAgICAgRGlkQ2hhbmdlUGFnZUNvdW50KHVuc2lnbmVkIHBhZ2VDb3VudCk7CiAgICAg
RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJp
bmcgZnJhbWVVUkxTdHJpbmcsIFdURjo6U3RyaW5nIHBhZ2VVUkxTdHJpbmcpCi0gICAgRGlkQmxv
Y2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5n
IHBsdWdpblVSTFN0cmluZywgV1RGOjpTdHJpbmcgZnJhbWVVUkxTdHJpbmcsIFdURjo6U3RyaW5n
IHBhZ2VVUkxTdHJpbmcpCisgICAgRGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV1RGOjpT
dHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHBsdWdpblVSTFN0cmluZywgV1RGOjpTdHJpbmcg
ZnJhbWVVUkxTdHJpbmcsIFdURjo6U3RyaW5nIHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVwbGFjZW1l
bnRNYXlCZVBhcnRpYWxseUhpZGRlbikKICAgICBTZXRDYW5TaG9ydENpcmN1aXRIb3Jpem9udGFs
V2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMpCiAK
ICNpZiBQTEFURk9STShFRkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggNjdlNjgyZi4uYTM5MzhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTQ5LDEwICs1NDksMTQgQEAgUGFz
c1JlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhU
TUxQbHVnSW5FbGVtZW50KiBwbHUKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFBsdWdpbk1v
ZHVsZUJsb2NrZWQ6Ci0gICAgICAgIGlmIChwbHVnaW5FbGVtZW50LT5yZW5kZXJlcigpLT5pc0Vt
YmVkZGVkT2JqZWN0KCkpCi0gICAgICAgICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHBsdWdp
bkVsZW1lbnQtPnJlbmRlcmVyKCkpLT5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihSZW5k
ZXJFbWJlZGRlZE9iamVjdDo6SW5zZWN1cmVQbHVnaW5WZXJzaW9uKTsKKyAgICAgICAgYm9vbCBy
ZXBsYWNlbWVudE1heUJlUGFydGlhbGx5SGlkZGVuID0gZmFsc2U7CisgICAgICAgIGlmIChwbHVn
aW5FbGVtZW50LT5yZW5kZXJlcigpLT5pc0VtYmVkZGVkT2JqZWN0KCkpIHsKKyAgICAgICAgICAg
IFJlbmRlckVtYmVkZGVkT2JqZWN0KiByZW5kZXJPYmplY3QgPSB0b1JlbmRlckVtYmVkZGVkT2Jq
ZWN0KHBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAgICAgICAgICAgcmVuZGVyT2JqZWN0
LT5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihSZW5kZXJFbWJlZGRlZE9iamVjdDo6SW5z
ZWN1cmVQbHVnaW5WZXJzaW9uKTsKKyAgICAgICAgICAgIHJlcGxhY2VtZW50TWF5QmVQYXJ0aWFs
bHlIaWRkZW4gPSByZW5kZXJPYmplY3QtPnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJQkxF
IHx8ICFyZW5kZXJPYmplY3QtPnJlcGxhY2VtZW50Rml0c0luQ29udGVudEJveFJlY3QoKTsKKyAg
ICAgICAgfQogCi0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQmxvY2tJ
bnNlY3VyZVBsdWdpblZlcnNpb24ocGFyYW1ldGVycy5taW1lVHlwZSwgcGFyYW1ldGVycy51cmwu
c3RyaW5nKCksIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nKSk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24ocGFy
YW1ldGVycy5taW1lVHlwZSwgcGFyYW1ldGVycy51cmwuc3RyaW5nKCksIGZyYW1lVVJMU3RyaW5n
LCBwYWdlVVJMU3RyaW5nLCByZXBsYWNlbWVudE1heUJlUGFydGlhbGx5SGlkZGVuKSk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAo=
</data>
<flag name="review"
          id="226945"
          type_id="1"
          status="-"
          setter="commit-queue"
    />
    <flag name="commit-queue"
          id="226946"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205926</attachid>
            <date>2013-07-02 10:52:48 -0700</date>
            <delta_ts>2013-07-03 00:48:25 -0700</delta_ts>
            <desc>Patch to provide indication of (partially) hidden blocked plugin replacement elements</desc>
            <filename>blocked-plugin2.patch</filename>
            <type>text/plain</type>
            <size>17628</size>
            <attacher name="Gordon Sheridan">gordon_sheridan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMjhhMjc2Li4xMmVhNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDctMDEgIEdvcmRvbiBTaGVyaWRhbiAgPGdvcmRvbl9zaGVyaWRhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IG1lY2hhbmlzbSB0byBkZXRlY3QgKHBhcnRpYWxseSkg
aGlkZGVuIGJsb2NrZWQgcGx1Z2lucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVt
YmVkZGVkT2JqZWN0OjpyZXBsYWNlbWVudFRleHRSZWN0KToKKyAgICAgICAgQWRkZWQgcHJpdmF0
ZSBtZXRob2QgZm9yIGNhbGN1bGF0aW5nIHRoZSBzaXplIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0
IGZvciBibG9ja2VkIHBsdWdpbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVk
T2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQpOgorICAgICAgICBBZGRlZCBwdWJsaWMgbWV0
aG9kIHRvIGRldGVybWluZSBpZiB0aGUgRU1CRUQgZWxlbWVudCB1c2VkIGZvciBhIGJsb2NrZWQg
cGx1Z2luIGlzIGluYWNjZXNzaWJsZSB0byB0aGUgdXNlci4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgRGVjbGFyZSB0aGUgdHdvIG5ldyBtZXRo
b2RzIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICBFeHBvcnQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpLgor
CiAyMDEzLTA3LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4K
IAogICAgICAgICBEcmF3aW5nQnVmZmVyIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIHdlcmUg
bm90IGRlZmluZWQgZm9yIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDk1YzZlZjYu
LmNkNjA4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02NjYsNiArNjY2LDcgQEAgX19aTjdX
ZWJDb3JlMjBEaXNwbGF5U2xlZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRl
cmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250
ZXh0RDFFdgogX19aTjdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI5c2V0UGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb25FTlMwXzI2UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25FCitfX1pO
SzdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDIxaXNSZXBsYWNlbWVudE9ic2N1cmVkRXYK
IF9fWk43V2ViQ29yZTIwUmVzb3VyY2VIYW5kbGVDbGllbnQxNmRpZFJlY2VpdmVCdWZmZXJFUE5T
XzE0UmVzb3VyY2VIYW5kbGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVp
CiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50MjB3aWxsU2VuZFJlcXVlc3RBc3lu
Y0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTZSZXNv
dXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENh
Y2hlUmVzcG9uc2VBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVQMTlOU0NhY2hlZFVSTFJlc3Bv
bnNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAppbmRleCBlOWYwZjdlLi5hMDY0OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNs
dWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UGx1Z2luVmlld0Jhc2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldp
ZGdldFByb3RlY3Rvci5oIgpAQCAtMjc3LDYgKzI3OCw4NCBAQCBib29sIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bAogICAgIHJldHVybiB0cnVlOwogfQogCitMYXlvdXRSZWN0IFJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpyZXBsYWNlbWVudFRleHRSZWN0KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3QKK3sKKyAgICBGbG9hdFJlY3QgY29udGVudFJlY3Q7CisgICAgUGF0aCBwYXRo
OworICAgIEZsb2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OworICAgIEZvbnQgZm9udDsKKyAg
ICBUZXh0UnVuIHJ1bigiIiwgMCk7CisgICAgZmxvYXQgdGV4dFdpZHRoOworICAgIGlmIChnZXRS
ZXBsYWNlbWVudFRleHRHZW9tZXRyeShhY2N1bXVsYXRlZE9mZnNldCwgY29udGVudFJlY3QsIHBh
dGgsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKKyAgICAgICAg
cmV0dXJuIExheW91dFJlY3QocmVwbGFjZW1lbnRUZXh0UmVjdCk7CisgICAgCisgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKK30KKworYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aXNSZXBsYWNl
bWVudE9ic2N1cmVkKCkgY29uc3QKK3sKKyAgICAvLyBSZXR1cm4gd2hldGhlciBvciBub3QgdGhl
IHJlcGxhY2VtZW50IGNvbnRlbnQgZm9yIGJsb2NrZWQgcGx1Z2lucyBpcyBhY2Nlc3NpYmxlIHRv
IHRoZSB1c2VyLgorICAgIAorICAgIC8vIENoZWNrIHRoZSBvcGFjaXR5IG9mIGVhY2ggbGF5ZXIg
Y29udGFpbmluZyB0aGUgZWxlbWVudCBvciBpdHMgYW5jZXN0b3JzLgorICAgIGZvciAoUmVuZGVy
TGF5ZXIqIGxheWVyID0gZW5jbG9zaW5nTGF5ZXIoKTsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPnBh
cmVudCgpKSB7CisgICAgICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlbmRlcmVyID0gbGF5
ZXItPnJlbmRlcmVyKCk7CisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5z
dHlsZSgpOworICAgICAgICBpZiAoc3R5bGUtPm9wYWNpdHkoKSA8IDAuMSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIENhbGN1bGF0ZSB0aGUgYWJzb2x1dGUgcmVj
dCBmb3IgdGhlIGJsb2NrZWQgcGx1Z2luIHJlcGxhY2VtZW50IHRleHQuCisgICAgSW50UmVjdCBh
YnNvbHV0ZUJvdW5kaW5nQm94ID0gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoKTsKKyAgICBMYXlv
dXRQb2ludCBhYnNvbHV0ZUxvY2F0aW9uKGFic29sdXRlQm91bmRpbmdCb3gubG9jYXRpb24oKSk7
CisgICAgTGF5b3V0UmVjdCByZWN0ID0gcmVwbGFjZW1lbnRUZXh0UmVjdChhYnNvbHV0ZUxvY2F0
aW9uKTsKKyAgICBpZiAocmVjdC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgUmVuZGVyVmlldyogZG9jUmVuZGVyZXIgPSBkb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7Cisg
ICAgQVNTRVJUKGRvY1JlbmRlcmVyKTsKKyAgICBpZiAoIWRvY1JlbmRlcmVyKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUgfCBIaXRUZXN0UmVxdWVzdDo6
SWdub3JlQ2xpcHBpbmcgfCBIaXRUZXN0UmVxdWVzdDo6RGlzYWxsb3dTaGFkb3dDb250ZW50KTsK
KyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdDsKKyAgICBIaXRUZXN0TG9jYXRpb24gbG9jYXRpb247
CisgICAgCisgICAgTGF5b3V0VW5pdCB4ID0gcmVjdC54KCk7CisgICAgTGF5b3V0VW5pdCB5ID0g
cmVjdC55KCk7CisgICAgTGF5b3V0VW5pdCB3aWR0aCA9IHJlY3Qud2lkdGgoKTsKKyAgICBMYXlv
dXRVbml0IGhlaWdodCA9IHJlY3QuaGVpZ2h0KCk7CisgICAgCisgICAgLy8gSGl0IHRlc3QgdGhl
IGNlbnRlciBhbmQgbmVhciB0aGUgY29ybmVycyBvZiB0aGUgcmVwbGFjZW1lbnQgdGV4dCB0byBl
bnN1cmUKKyAgICAvLyBpdCBpcyB2aXNpYmxlIGFuZCBpcyBub3QgbWFza2VkIGJ5IG90aGVyIGVs
ZW1lbnRzLgorICAgIGJvb2wgaGl0ID0gZmFsc2U7CisgICAgbG9jYXRpb24gPSBMYXlvdXRQb2lu
dCh4ICsgd2lkdGggLyAyLCB5ICsgaGVpZ2h0IC8gMik7CisgICAgaGl0ID0gZG9jUmVuZGVyZXIt
PmhpdFRlc3QocmVxdWVzdCwgbG9jYXRpb24sIHJlc3VsdCk7CisgICAgaWYgKCFoaXQgfHwgcmVz
dWx0LmlubmVyTm9kZSgpICE9IG5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisg
ICAgbG9jYXRpb24gPSBMYXlvdXRQb2ludCh4LCB5KTsKKyAgICBoaXQgPSBkb2NSZW5kZXJlci0+
aGl0VGVzdChyZXF1ZXN0LCBsb2NhdGlvbiwgcmVzdWx0KTsKKyAgICBpZiAoIWhpdCB8fCByZXN1
bHQuaW5uZXJOb2RlKCkgIT0gbm9kZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKKyAg
ICBsb2NhdGlvbiA9IExheW91dFBvaW50KHggKyB3aWR0aCwgeSk7CisgICAgaGl0ID0gZG9jUmVu
ZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgbG9jYXRpb24sIHJlc3VsdCk7CisgICAgaWYgKCFoaXQg
fHwgcmVzdWx0LmlubmVyTm9kZSgpICE9IG5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgCisgICAgbG9jYXRpb24gPSBMYXlvdXRQb2ludCh4ICsgd2lkdGgsIHkgKyBoZWlnaHQpOwor
ICAgIGhpdCA9IGRvY1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIGxvY2F0aW9uLCByZXN1bHQp
OworICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAhPSBub2RlKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIAorICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCwgeSArIGhl
aWdodCk7CisgICAgaGl0ID0gZG9jUmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgbG9jYXRpb24s
IHJlc3VsdCk7CisgICAgaWYgKCFoaXQgfHwgcmVzdWx0LmlubmVyTm9kZSgpICE9IG5vZGUoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgUmVu
ZGVyRW1iZWRkZWRPYmplY3Q6OmxheW91dCgpCiB7CiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hl
Y2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuaAppbmRleCA5MWU0NGQ1Li4xNThhM2QwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaApAQCAtNTIsNiAr
NTIsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNh
dG9yRXZlbnQoRXZlbnQqKTsKIAorICAgIGJvb2wgaXNSZXBsYWNlbWVudE9ic2N1cmVkKCkgY29u
c3Q7CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVhbCBib29s
IGFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdDsKICNlbmRpZgpAQCAtOTAsNiAr
OTIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNJblVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9y
KE1vdXNlRXZlbnQqKSBjb25zdDsKICAgICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGlj
YXRvcihjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogICAgIGJvb2wgZ2V0UmVwbGFjZW1lbnRU
ZXh0R2VvbWV0cnkoY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBGbG9hdFJl
Y3QmIGNvbnRlbnRSZWN0LCBQYXRoJiwgRmxvYXRSZWN0JiByZXBsYWNlbWVudFRleHRSZWN0LCBG
b250JiwgVGV4dFJ1biYsIGZsb2F0JiB0ZXh0V2lkdGgpIGNvbnN0OworICAgIExheW91dFJlY3Qg
cmVwbGFjZW1lbnRUZXh0UmVjdChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OwogCiAgICAgdmly
dHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigpIGNvbnN0OwogICAgIHZpcnR1YWwgUmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7IHJldHVybiBjaGlsZHJlbigpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMGE2ZjFhZi4uNjIwNTIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBA
CisyMDEzLTA3LTAxICBHb3Jkb24gU2hlcmlkYW4gIDxnb3Jkb25fc2hlcmlkYW5AYXBwbGUuY29t
PgorCisgICAgICAgIEltcGxlbWVudCBtZWNoYW5pc20gdG8gZGV0ZWN0IChwYXJ0aWFsbHkpIGhp
ZGRlbiBibG9ja2VkIHBsdWdpbnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMTc5OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9u
Lmg6CisgICAgICAgICogU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnSW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3Vy
ZWRLZXkpOgorICAgICAgICBBZGQga2V5IGZvciBwbHVnSW5JbmZvcm1hdGlvbiBkaWN0aW9uYXJp
ZXMuCisKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5
KToKKyAgICAgICAgQWRkIGJvb2xlYW4gcGFyYW1ldGVyIGlkZW50aWZ5aW5nIHdoZXRoZXIgdGhl
IHJlcGxhY2VtZW50IGZvciBhIGJsb2NrZWQgcGx1Z2luIGlzIG9ic2N1cmVkLCBhbmQgYWRkIGl0
IHRvIHRoZSBkaWN0aW9uYXJ5LgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5m
b3JtYXRpb24uaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHA6CisgICAgICAgIChXS1BsdWdpbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSk6
CisgICAgICAgIFByb3ZpZGUgdGhlIEMgQVBJIGZvciB0aGUgcGx1Z0luSW5mb3JtYXRpb25SZXBs
YWNlbWVudE9ic2N1cmVkS2V5KCkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24pOgorICAgICAg
ICBBZGQgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkIHBhcmFtZXRlciB0byBwYXNzIG9uIGFyZ3Vt
ZW50IHRvIGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeSgpLgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgQWRkIGJvb2wgcmVw
bGFjZW1lbnRPYnNjdXJlZCBwYXJhbWV0ZXIgdG8gRGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNp
b24oKSBtZXNzYWdlLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjcmVhdGVQbHVnaW4pOgorICAgICAgICBJbnZv
a2UgaXNSZXBsYWNlbWVudE9ic2N1cmVkKCkgbWV0aG9kIGZvciBibG9ja2VkIHBsdWdpbnMuCisK
IDIwMTMtMDctMDEgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAg
ICAgIExpbmsgdG8gV2ViSW5zcGVjdG9yVUkuZnJhbWV3b3JrIGF0IGJ1aWxkIHRpbWUgaW5zdGVh
ZCBvZiBzb2Z0IGxpbmtpbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJ
L2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
V0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAKaW5kZXggNWM0OTBiZS4uZjBjNGM2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmNwcApA
QCAtMTA5LDMgKzEwOSw5IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5V
UkxLZXkoKQogICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKHBs
dWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9B
UEkoa2V5KTsKIH0KKworV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblJlcGxhY2VtZW50
T2JzY3VyZWRLZXkoKQoreworICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6
Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIHRvQVBJKGtleSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uaAppbmRleCBjZmJmZjUyLi44ZTYxNzQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9u
LmgKQEAgLTc2LDYgKzc2LDkgQEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3Jt
YXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpOwogLyogVmFsdWUgdHlwZTogV0tVUkxS
ZWYgKi8KIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJM
S2V5KCk7CiAKKy8qIFZhbHVlIHR5cGU6IFdLQm9vbGVhblJlZiAqLworV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCk7CisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKaW5kZXgg
ZmM4MTVkZS4uMmMyZWQ1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcApAQCAtMTAxLDYgKzEw
MSwxMSBAQCBTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKQogICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIlBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMIik7CiB9CiAKK1N0cmlu
ZyBwbHVnaW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKQoreworICAgIHJldHVy
biBBU0NJSUxpdGVyYWwoIlBsdWdpbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZCIpOwor
fQorCiB2b2lkIGdldFBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKGNvbnN0IFBsdWdpbk1vZHVsZUlu
Zm8mIHBsdWdpbiwgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSYgbWFwKQogewogI2lmIEVO
QUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTIwLDcgKzEyNSw3IEBAIFBhc3NSZWZQdHI8
SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNv
bnN0IFBsdWdpbk1vCiAgICAgcmV0dXJuIEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7
CiB9CiAKLVBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3Jt
YXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgU3Ry
aW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5n
JiBwYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZykKK1Bhc3NSZWZQdHI8SW1tdXRhYmxl
RGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mIHBsdWdpbiwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpblVS
TFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkKQogewogICAgIEltbXV0YWJsZURpY3Rp
b25hcnk6Ok1hcFR5cGUgbWFwOwogICAgIGdldFBsdWdpbk1vZHVsZUluZm9ybWF0aW9uKHBsdWdp
biwgbWFwKTsKQEAgLTEzNSw2ICsxNDAsNyBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25h
cnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5NbwogICAg
ICAgICBtYXAuc2V0KHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXko
KSwgV2ViVVJMOjpjcmVhdGUocGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcpKTsKICAgICBp
ZiAoIXBsdWdpblVSTFN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIG1hcC5zZXQocGx1Z2luSW5m
b3JtYXRpb25QbHVnaW5VUkxLZXkoKSwgV2ViVVJMOjpjcmVhdGUocGx1Z2luVVJMU3RyaW5nKSk7
CisgICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKSwg
V2ViQm9vbGVhbjo6Y3JlYXRlKHJlcGxhY2VtZW50T2JzY3VyZWQpKTsKIAogICAgIHJldHVybiBJ
bW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtYXApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKaW5k
ZXggNmI4YjZjMy4uZGZjYjJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oCkBAIC00OSw5ICs0OSwx
MCBAQCBTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpOwogU3RyaW5nIHBsdWdp
bkluZm9ybWF0aW9uUGFnZVVSTEtleSgpOwogU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2lu
c3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKTsKIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVS
TEtleSgpOworU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgp
OwogCiBQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0
aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJik7Ci1QYXNzUmVmUHRyPEltbXV0
YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBQ
bHVnaW5Nb2R1bGVJbmZvJiwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0
cmluZyk7CitQYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiwgY29uc3QgU3RyaW5nJiBm
cmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwYWdl
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkID0g
ZmFsc2UpOwogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZv
cm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBm
cmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDFjNzUyZDMuLjgxZWMxYWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjAxLDE0
ICs0MjAxLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2lu
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluCiAgICAgbV9sb2FkZXJDbGllbnQu
ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbih0aGlzLCBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRp
Y3Rpb25hcnkobWltZVR5cGUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nKS5nZXQoKSk7
CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQor
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVw
bGFjZW1lbnRPYnNjdXJlZCkKIHsKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1
Z2luSW5mb3JtYXRpb247CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIFBsdWdp
bk1vZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9y
ZSgpLmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIEtVUkwoS1VSTCgpLCBwbHVnaW5VUkxTdHJpbmcp
KTsKLSAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlv
bmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3Ry
aW5nKCksIFN0cmluZygpKTsKKyAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbklu
Zm9ybWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFn
ZVVSTFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNlbWVudE9ic2N1cmVkKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpblVSTFN0cmluZyk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNjY2YWZiLi43MGNiYzQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04NjgsNyArODY4LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdGb3JNYWluRnJh
bWUoYm9vbCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBpbm5lZFRvUmlnaHRTaWRlLCBib29sIHBp
bm5lZFRvVG9wU2lkZSwgYm9vbCBwaW5uZWRUb0JvdHRvbVNpZGUpOwogICAgIHZvaWQgZGlkQ2hh
bmdlUGFnZUNvdW50KHVuc2lnbmVkKTsKICAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVn
aW4oY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKLSAgICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVQ
bHVnaW5WZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBh
Z2VVUkxTdHJpbmcpOworICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9v
bCByZXBsYWNlbWVudE9ic2N1cmVkKTsKICAgICB2b2lkIHNldENhblNob3J0Q2lyY3VpdEhvcml6
b250YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50
cykgeyBtX2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyA9IGNhblNob3J0Q2ly
Y3VpdEhvcml6b250YWxXaGVlbEV2ZW50czsgfQogCiAgICAgdm9pZCByZWF0dGFjaFRvV2ViUHJv
Y2VzcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggOGMxZGU5MC4uOTZkZTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC02Niw3ICs2Niw3IEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0UGlubmlu
Z0Zvck1haW5GcmFtZShib29sIHBpbm5lZFRvTGVmdFNpZGUsIGJvb2wgcGlubmVkVG9SaWdodFNp
ZGUsIGJvb2wgcGlubmVkVG9Ub3BTaWRlLCBib29sIHBpbm5lZFRvQm90dG9tU2lkZSkKICAgICBE
aWRDaGFuZ2VQYWdlQ291bnQodW5zaWduZWQgcGFnZUNvdW50KTsKICAgICBEaWRGYWlsVG9Jbml0
aWFsaXplUGx1Z2luKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0
cmluZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZykKLSAgICBEaWRCbG9ja0luc2VjdXJlUGx1
Z2luVmVyc2lvbihXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgcGx1Z2luVVJMU3Ry
aW5nLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmluZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmlu
ZykKKyAgICBEaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXVEY6OlN0cmluZyBtaW1lVHlw
ZSwgV1RGOjpTdHJpbmcgcGx1Z2luVVJMU3RyaW5nLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmlu
ZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkKQog
ICAgIFNldENhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0
Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cykKIAogI2lmIFBMQVRGT1JNKEVGTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA3MWNkNjY3
Li5jZmU5NWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC01NDksMTAgKzU0OSwxNCBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6
Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAg
ICAgICBicmVhazsKIAogICAgIGNhc2UgUGx1Z2luTW9kdWxlQmxvY2tlZDoKLSAgICAgICAgaWYg
KHBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmplY3QoKSkKLSAgICAgICAg
ICAgIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSktPnNl
dFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFJlbmRlckVtYmVkZGVkT2JqZWN0OjpJbnNlY3Vy
ZVBsdWdpblZlcnNpb24pOworICAgICAgICBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmpl
Y3QoKSkgeworICAgICAgICAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QqIHJlbmRlck9iamVjdCA9
IHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAg
ICAgICAgICByZW5kZXJPYmplY3QtPnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBsdWdpblZlcnNpb24pOworICAgICAgICAgICAgcmVw
bGFjZW1lbnRPYnNjdXJlZCA9IHJlbmRlck9iamVjdC0+aXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7
CisgICAgICAgIH0KIAotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEJs
b2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKHBhcmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMu
dXJsLnN0cmluZygpLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykpOworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9u
KHBhcmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpLCBmcmFtZVVSTFN0
cmluZywgcGFnZVVSTFN0cmluZywgcmVwbGFjZW1lbnRPYnNjdXJlZCkpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAK
</data>
<flag name="review"
          id="227565"
          type_id="1"
          status="-"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205972</attachid>
            <date>2013-07-03 00:48:25 -0700</date>
            <delta_ts>2013-07-03 15:28:29 -0700</delta_ts>
            <desc>Patch to provide indication of (partially) hidden blocked plugin replacement elements #3</desc>
            <filename>blocked-plugin3.patch</filename>
            <type>text/plain</type>
            <size>17683</size>
            <attacher name="Gordon Sheridan">gordon_sheridan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMjhhMjc2Li4xMmVhNTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMDctMDEgIEdvcmRvbiBTaGVyaWRhbiAgPGdvcmRvbl9zaGVyaWRhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IG1lY2hhbmlzbSB0byBkZXRlY3QgKHBhcnRpYWxseSkg
aGlkZGVuIGJsb2NrZWQgcGx1Z2lucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVt
YmVkZGVkT2JqZWN0OjpyZXBsYWNlbWVudFRleHRSZWN0KToKKyAgICAgICAgQWRkZWQgcHJpdmF0
ZSBtZXRob2QgZm9yIGNhbGN1bGF0aW5nIHRoZSBzaXplIG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0
IGZvciBibG9ja2VkIHBsdWdpbnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVk
T2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQpOgorICAgICAgICBBZGRlZCBwdWJsaWMgbWV0
aG9kIHRvIGRldGVybWluZSBpZiB0aGUgRU1CRUQgZWxlbWVudCB1c2VkIGZvciBhIGJsb2NrZWQg
cGx1Z2luIGlzIGluYWNjZXNzaWJsZSB0byB0aGUgdXNlci4KKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAgRGVjbGFyZSB0aGUgdHdvIG5ldyBtZXRo
b2RzIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAg
ICBFeHBvcnQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6OmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpLgor
CiAyMDEzLTA3LTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4K
IAogICAgICAgICBEcmF3aW5nQnVmZmVyIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIHdlcmUg
bm90IGRlZmluZWQgZm9yIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDk1YzZlZjYu
LmNkNjA4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02NjYsNiArNjY2LDcgQEAgX19aTjdX
ZWJDb3JlMjBEaXNwbGF5U2xlZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRl
cmluZ0NvbnRleHRDMUVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250
ZXh0RDFFdgogX19aTjdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI5c2V0UGx1Z2luVW5h
dmFpbGFiaWxpdHlSZWFzb25FTlMwXzI2UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25FCitfX1pO
SzdXZWJDb3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDIxaXNSZXBsYWNlbWVudE9ic2N1cmVkRXYK
IF9fWk43V2ViQ29yZTIwUmVzb3VyY2VIYW5kbGVDbGllbnQxNmRpZFJlY2VpdmVCdWZmZXJFUE5T
XzE0UmVzb3VyY2VIYW5kbGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVp
CiBfX1pON1dlYkNvcmUyMFJlc291cmNlSGFuZGxlQ2xpZW50MjB3aWxsU2VuZFJlcXVlc3RBc3lu
Y0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTZSZXNv
dXJjZVJlc3BvbnNlRQogX19aTjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENh
Y2hlUmVzcG9uc2VBc3luY0VQTlNfMTRSZXNvdXJjZUhhbmRsZUVQMTlOU0NhY2hlZFVSTFJlc3Bv
bnNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmNwcAppbmRleCBlOWYwZjdlLi41MjhlNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNs
dWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAi
UGx1Z2luVmlld0Jhc2UuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJl
bmRlclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldp
ZGdldFByb3RlY3Rvci5oIgpAQCAtMjc3LDYgKzI3OCw4NiBAQCBib29sIFJlbmRlckVtYmVkZGVk
T2JqZWN0OjpnZXRSZXBsYWNlbWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNj
dW11bAogICAgIHJldHVybiB0cnVlOwogfQogCitMYXlvdXRSZWN0IFJlbmRlckVtYmVkZGVkT2Jq
ZWN0OjpyZXBsYWNlbWVudFRleHRSZWN0KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9m
ZnNldCkgY29uc3QKK3sKKyAgICBGbG9hdFJlY3QgY29udGVudFJlY3Q7CisgICAgUGF0aCBwYXRo
OworICAgIEZsb2F0UmVjdCByZXBsYWNlbWVudFRleHRSZWN0OworICAgIEZvbnQgZm9udDsKKyAg
ICBUZXh0UnVuIHJ1bigiIiwgMCk7CisgICAgZmxvYXQgdGV4dFdpZHRoOworICAgIGlmIChnZXRS
ZXBsYWNlbWVudFRleHRHZW9tZXRyeShhY2N1bXVsYXRlZE9mZnNldCwgY29udGVudFJlY3QsIHBh
dGgsIHJlcGxhY2VtZW50VGV4dFJlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKKyAgICAgICAg
cmV0dXJuIExheW91dFJlY3QocmVwbGFjZW1lbnRUZXh0UmVjdCk7CisgICAgCisgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKK30KKworYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aXNSZXBsYWNl
bWVudE9ic2N1cmVkKCkgY29uc3QKK3sKKyAgICAvLyBSZXR1cm4gd2hldGhlciBvciBub3QgdGhl
IHJlcGxhY2VtZW50IGNvbnRlbnQgZm9yIGJsb2NrZWQgcGx1Z2lucyBpcyBhY2Nlc3NpYmxlIHRv
IHRoZSB1c2VyLgorICAgIAorICAgIC8vIENoZWNrIHRoZSBvcGFjaXR5IG9mIGVhY2ggbGF5ZXIg
Y29udGFpbmluZyB0aGUgZWxlbWVudCBvciBpdHMgYW5jZXN0b3JzLgorICAgIGZsb2F0IG9wYWNp
dHkgPSAxLjA7CisgICAgZm9yIChSZW5kZXJMYXllciogbGF5ZXIgPSBlbmNsb3NpbmdMYXllcigp
OyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogcmVuZGVyZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVy
U3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisgICAgICAgIG9wYWNpdHkgKj0gc3R5
bGUtPm9wYWNpdHkoKTsKKyAgICAgICAgaWYgKG9wYWNpdHkgPCAwLjEpCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIGFic29sdXRlIHJlY3Qg
Zm9yIHRoZSBibG9ja2VkIHBsdWdpbiByZXBsYWNlbWVudCB0ZXh0LgorICAgIEludFJlY3QgYWJz
b2x1dGVCb3VuZGluZ0JveCA9IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0
UG9pbnQgYWJzb2x1dGVMb2NhdGlvbihhYnNvbHV0ZUJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOwor
ICAgIExheW91dFJlY3QgcmVjdCA9IHJlcGxhY2VtZW50VGV4dFJlY3QoYWJzb2x1dGVMb2NhdGlv
bik7CisgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IFJlbmRlclZpZXcqIGRvY1JlbmRlcmVyID0gZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAg
IEFTU0VSVChkb2NSZW5kZXJlcik7CisgICAgaWYgKCFkb2NSZW5kZXJlcikKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgCisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Okln
bm9yZUNsaXBwaW5nIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7Cisg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQ7CisgICAgSGl0VGVzdExvY2F0aW9uIGxvY2F0aW9uOwor
ICAgIAorICAgIExheW91dFVuaXQgeCA9IHJlY3QueCgpOworICAgIExheW91dFVuaXQgeSA9IHJl
Y3QueSgpOworICAgIExheW91dFVuaXQgd2lkdGggPSByZWN0LndpZHRoKCk7CisgICAgTGF5b3V0
VW5pdCBoZWlnaHQgPSByZWN0LmhlaWdodCgpOworICAgIAorICAgIC8vIEhpdCB0ZXN0IHRoZSBj
ZW50ZXIgYW5kIG5lYXIgdGhlIGNvcm5lcnMgb2YgdGhlIHJlcGxhY2VtZW50IHRleHQgdG8gZW5z
dXJlCisgICAgLy8gaXQgaXMgdmlzaWJsZSBhbmQgaXMgbm90IG1hc2tlZCBieSBvdGhlciBlbGVt
ZW50cy4KKyAgICBib29sIGhpdCA9IGZhbHNlOworICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQo
eCArIHdpZHRoIC8gMiwgeSArIGhlaWdodCAvIDIpOworICAgIGhpdCA9IGRvY1JlbmRlcmVyLT5o
aXRUZXN0KHJlcXVlc3QsIGxvY2F0aW9uLCByZXN1bHQpOworICAgIGlmICghaGl0IHx8IHJlc3Vs
dC5pbm5lck5vZGUoKSAhPSBub2RlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAg
IGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCwgeSk7CisgICAgaGl0ID0gZG9jUmVuZGVyZXItPmhp
dFRlc3QocmVxdWVzdCwgbG9jYXRpb24sIHJlc3VsdCk7CisgICAgaWYgKCFoaXQgfHwgcmVzdWx0
LmlubmVyTm9kZSgpICE9IG5vZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAg
bG9jYXRpb24gPSBMYXlvdXRQb2ludCh4ICsgd2lkdGgsIHkpOworICAgIGhpdCA9IGRvY1JlbmRl
cmVyLT5oaXRUZXN0KHJlcXVlc3QsIGxvY2F0aW9uLCByZXN1bHQpOworICAgIGlmICghaGl0IHx8
IHJlc3VsdC5pbm5lck5vZGUoKSAhPSBub2RlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IAorICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KTsKKyAg
ICBoaXQgPSBkb2NSZW5kZXJlci0+aGl0VGVzdChyZXF1ZXN0LCBsb2NhdGlvbiwgcmVzdWx0KTsK
KyAgICBpZiAoIWhpdCB8fCByZXN1bHQuaW5uZXJOb2RlKCkgIT0gbm9kZSgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBsb2NhdGlvbiA9IExheW91dFBvaW50KHgsIHkgKyBoZWln
aHQpOworICAgIGhpdCA9IGRvY1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIGxvY2F0aW9uLCBy
ZXN1bHQpOworICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAhPSBub2RlKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRl
ckVtYmVkZGVkT2JqZWN0OjpsYXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNr
UG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVtYmVkZGVkT2JqZWN0LmgKaW5kZXggOTFlNDRkNS4uMTU4YTNkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTUyLDYgKzUy
LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBoYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRv
ckV2ZW50KEV2ZW50Kik7CiAKKyAgICBib29sIGlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpIGNvbnN0
OworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgYm9vbCBh
bGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTkwLDYgKzky
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihN
b3VzZUV2ZW50KikgY29uc3Q7CiAgICAgYm9vbCBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0
b3IoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKICAgICBib29sIGdldFJlcGxhY2VtZW50VGV4
dEdlb21ldHJ5KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgRmxvYXRSZWN0
JiBjb250ZW50UmVjdCwgUGF0aCYsIEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRm9u
dCYsIFRleHRSdW4mLCBmbG9hdCYgdGV4dFdpZHRoKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IHJl
cGxhY2VtZW50VGV4dFJlY3QoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAogICAgIHZpcnR1
YWwgYm9vbCBjYW5IYXZlQ2hpbGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVj
dENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCmluZGV4IDBhNmYxYWYuLjYyMDUyMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAor
MjAxMy0wNy0wMSAgR29yZG9uIFNoZXJpZGFuICA8Z29yZG9uX3NoZXJpZGFuQGFwcGxlLmNvbT4K
KworICAgICAgICBJbXBsZW1lbnQgbWVjaGFuaXNtIHRvIGRldGVjdCAocGFydGlhbGx5KSBoaWRk
ZW4gYmxvY2tlZCBwbHVnaW5zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE3OTk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5o
OgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6cGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVk
S2V5KToKKyAgICAgICAgQWRkIGtleSBmb3IgcGx1Z0luSW5mb3JtYXRpb24gZGljdGlvbmFyaWVz
LgorCisgICAgICAgIChXZWJLaXQ6OmNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeSk6
CisgICAgICAgIEFkZCBib29sZWFuIHBhcmFtZXRlciBpZGVudGlmeWluZyB3aGV0aGVyIHRoZSBy
ZXBsYWNlbWVudCBmb3IgYSBibG9ja2VkIHBsdWdpbiBpcyBvYnNjdXJlZCwgYW5kIGFkZCBpdCB0
byB0aGUgZGljdGlvbmFyeS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9y
bWF0aW9uLmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3Bw
OgorICAgICAgICAoV0tQbHVnaW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkpOgor
ICAgICAgICBQcm92aWRlIHRoZSBDIEFQSSBmb3IgdGhlIHBsdWdJbkluZm9ybWF0aW9uUmVwbGFj
ZW1lbnRPYnNjdXJlZEtleSgpLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKToKKyAgICAgICAg
QWRkIGJvb2wgcmVwbGFjZW1lbnRPYnNjdXJlZCBwYXJhbWV0ZXIgdG8gcGFzcyBvbiBhcmd1bWVu
dCB0byBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCBib29sIHJlcGxh
Y2VtZW50T2JzY3VyZWQgcGFyYW1ldGVyIHRvIERpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9u
KCkgbWVzc2FnZS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgSW52b2tl
IGlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpIG1ldGhvZCBmb3IgYmxvY2tlZCBwbHVnaW5zLgorCiAy
MDEzLTA3LTAxICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBMaW5rIHRvIFdlYkluc3BlY3RvclVJLmZyYW1ld29yayBhdCBidWlsZCB0aW1lIGluc3RlYWQg
b2Ygc29mdCBsaW5raW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9j
L1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
UGx1Z2luSW5mb3JtYXRpb24uY3BwCmluZGV4IDVjNDkwYmUuLmYwYzRjNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAKQEAg
LTEwOSwzICsxMDksOSBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJM
S2V5KCkKICAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNyZWF0ZShwbHVn
aW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuIHRvQVBJ
KGtleSk7CiB9CisKK1dLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9i
c2N1cmVkS2V5KCkKK3sKKyAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6OmNy
ZWF0ZShwbHVnaW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKSkubGVha1JlZigp
OworICAgIHJldHVybiB0b0FQSShrZXkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmgKaW5kZXggY2ZiZmY1Mi4uOGU2MTc0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5o
CkBAIC03Niw2ICs3Niw5IEBAIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0
aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKTsKIC8qIFZhbHVlIHR5cGU6IFdLVVJMUmVm
ICovCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtl
eSgpOwogCisvKiBWYWx1ZSB0eXBlOiBXS0Jvb2xlYW5SZWYgKi8KK1dLX0VYUE9SVCBXS1N0cmlu
Z1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpOworCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCmluZGV4IGZj
ODE1ZGUuLjJjMmVkNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKQEAgLTEwMSw2ICsxMDEs
MTEgQEAgU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkKICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTCIpOwogfQogCitTdHJpbmcg
cGx1Z2luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCkKK3sKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsKCJQbHVnaW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWQiKTsKK30K
Kwogdm9pZCBnZXRQbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbihjb25zdCBQbHVnaW5Nb2R1bGVJbmZv
JiBwbHVnaW4sIEltbXV0YWJsZURpY3Rpb25hcnk6Ok1hcFR5cGUmIG1hcCkKIHsKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTEyMCw3ICsxMjUsNyBAQCBQYXNzUmVmUHRyPElt
bXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25z
dCBQbHVnaW5NbwogICAgIHJldHVybiBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdChtYXApOwog
fQogCi1QYXNzUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0
aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4sIGNvbnN0IFN0cmlu
ZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
cGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcpCitQYXNzUmVmUHRyPEltbXV0YWJsZURp
Y3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBQbHVnaW5N
b2R1bGVJbmZvJiBwbHVnaW4sIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxT
dHJpbmcsIGJvb2wgcmVwbGFjZW1lbnRPYnNjdXJlZCkKIHsKICAgICBJbW11dGFibGVEaWN0aW9u
YXJ5OjpNYXBUeXBlIG1hcDsKICAgICBnZXRQbHVnaW5Nb2R1bGVJbmZvcm1hdGlvbihwbHVnaW4s
IG1hcCk7CkBAIC0xMzUsNiArMTQwLDcgQEAgUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5
PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW8KICAgICAg
ICAgbWFwLnNldChwbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCks
IFdlYlVSTDo6Y3JlYXRlKHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nKSk7CiAgICAgaWYg
KCFwbHVnaW5VUkxTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICBtYXAuc2V0KHBsdWdpbkluZm9y
bWF0aW9uUGx1Z2luVVJMS2V5KCksIFdlYlVSTDo6Y3JlYXRlKHBsdWdpblVSTFN0cmluZykpOwor
ICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCksIFdl
YkJvb2xlYW46OmNyZWF0ZShyZXBsYWNlbWVudE9ic2N1cmVkKSk7CiAKICAgICByZXR1cm4gSW1t
dXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWFwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oCmluZGV4
IDZiOGI2YzMuLmRmY2IyYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaApAQCAtNDksOSArNDksMTAg
QEAgU3RyaW5nIHBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKTsKIFN0cmluZyBwbHVnaW5J
bmZvcm1hdGlvblBhZ2VVUkxLZXkoKTsKIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNw
YWdlQXR0cmlidXRlVVJMS2V5KCk7CiBTdHJpbmcgcGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxL
ZXkoKTsKK1N0cmluZyBwbHVnaW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKTsK
IAogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlv
bkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYpOwotUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1
Z2luTW9kdWxlSW5mbyYsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBw
bHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJp
bmcpOworUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1h
dGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGNvbnN0IFN0cmluZyYgZnJh
bWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGFnZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGJvb2wgcmVwbGFjZW1lbnRPYnNjdXJlZCA9IGZh
bHNlKTsKIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3Jt
YXRpb25EaWN0aW9uYXJ5KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxYzc1MmQzLi44MWVjMWFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDIwMSwxNCAr
NDIwMSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihj
b25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbgogICAgIG1fbG9hZGVyQ2xpZW50LmRp
ZEZhaWxUb0luaXRpYWxpemVQbHVnaW4odGhpcywgY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0
aW9uYXJ5KG1pbWVUeXBlLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykuZ2V0KCkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3QgU3RyaW5n
JiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nLCBib29sIHJlcGxh
Y2VtZW50T2JzY3VyZWQpCiB7CiAgICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IHBsdWdp
bkluZm9ybWF0aW9uOwogCiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKICAgICBTdHJpbmcgbmV3TWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICBQbHVnaW5N
b2R1bGVJbmZvIHBsdWdpbiA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLT5wbHVnaW5JbmZvU3RvcmUo
KS5maW5kUGx1Z2luKG5ld01pbWVUeXBlLCBLVVJMKEtVUkwoKSwgcGx1Z2luVVJMU3RyaW5nKSk7
Ci0gICAgcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25h
cnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VVUkxTdHJpbmcsIFN0cmlu
ZygpLCBTdHJpbmcoKSk7CisgICAgcGx1Z2luSW5mb3JtYXRpb24gPSBjcmVhdGVQbHVnaW5JbmZv
cm1hdGlvbkRpY3Rpb25hcnkocGx1Z2luLCBmcmFtZVVSTFN0cmluZywgbWltZVR5cGUsIHBhZ2VV
UkxTdHJpbmcsIFN0cmluZygpLCBTdHJpbmcoKSwgcmVwbGFjZW1lbnRPYnNjdXJlZCk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShwbHVnaW5VUkxTdHJpbmcpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYTY2NmFmYi4uNzBjYmM0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODY4LDcgKzg2OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRDaGFuZ2VTY3JvbGxPZmZzZXRQaW5uaW5nRm9yTWFpbkZyYW1l
KGJvb2wgcGlubmVkVG9MZWZ0U2lkZSwgYm9vbCBwaW5uZWRUb1JpZ2h0U2lkZSwgYm9vbCBwaW5u
ZWRUb1RvcFNpZGUsIGJvb2wgcGlubmVkVG9Cb3R0b21TaWRlKTsKICAgICB2b2lkIGRpZENoYW5n
ZVBhZ2VDb3VudCh1bnNpZ25lZCk7CiAgICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2lu
KGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7Ci0gICAgdm9pZCBkaWRCbG9ja0luc2VjdXJlUGx1
Z2luVmVyc2lvbihjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdl
VVJMU3RyaW5nKTsKKyAgICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wg
cmVwbGFjZW1lbnRPYnNjdXJlZCk7CiAgICAgdm9pZCBzZXRDYW5TaG9ydENpcmN1aXRIb3Jpem9u
dGFsV2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMp
IHsgbV9jYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMgPSBjYW5TaG9ydENpcmN1
aXRIb3Jpem9udGFsV2hlZWxFdmVudHM7IH0KIAogICAgIHZvaWQgcmVhdHRhY2hUb1dlYlByb2Nl
c3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDhjMWRlOTAuLjk2ZGU5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNjYsNyArNjYsNyBAQCBtZXNz
YWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIERpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdG
b3JNYWluRnJhbWUoYm9vbCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBpbm5lZFRvUmlnaHRTaWRl
LCBib29sIHBpbm5lZFRvVG9wU2lkZSwgYm9vbCBwaW5uZWRUb0JvdHRvbVNpZGUpCiAgICAgRGlk
Q2hhbmdlUGFnZUNvdW50KHVuc2lnbmVkIHBhZ2VDb3VudCk7CiAgICAgRGlkRmFpbFRvSW5pdGlh
bGl6ZVBsdWdpbihXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgZnJhbWVVUkxTdHJp
bmcsIFdURjo6U3RyaW5nIHBhZ2VVUkxTdHJpbmcpCi0gICAgRGlkQmxvY2tJbnNlY3VyZVBsdWdp
blZlcnNpb24oV1RGOjpTdHJpbmcgbWltZVR5cGUsIFdURjo6U3RyaW5nIHBsdWdpblVSTFN0cmlu
ZywgV1RGOjpTdHJpbmcgZnJhbWVVUkxTdHJpbmcsIFdURjo6U3RyaW5nIHBhZ2VVUkxTdHJpbmcp
CisgICAgRGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV1RGOjpTdHJpbmcgbWltZVR5cGUs
IFdURjo6U3RyaW5nIHBsdWdpblVSTFN0cmluZywgV1RGOjpTdHJpbmcgZnJhbWVVUkxTdHJpbmcs
IFdURjo6U3RyaW5nIHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVwbGFjZW1lbnRPYnNjdXJlZCkKICAg
ICBTZXRDYW5TaG9ydENpcmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMoYm9vbCBjYW5TaG9ydENp
cmN1aXRIb3Jpem9udGFsV2hlZWxFdmVudHMpCiAKICNpZiBQTEFURk9STShFRkwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzFjZDY2Ny4u
Y2ZlOTViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNTQ5LDEwICs1NDksMTQgQEAgUGFzc1JlZlB0cjxQbHVnaW4+IFdlYlBhZ2U6OmNy
ZWF0ZVBsdWdpbihXZWJGcmFtZSogZnJhbWUsIEhUTUxQbHVnSW5FbGVtZW50KiBwbHUKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIFBsdWdpbk1vZHVsZUJsb2NrZWQ6Ci0gICAgICAgIGlmIChw
bHVnaW5FbGVtZW50LT5yZW5kZXJlcigpLT5pc0VtYmVkZGVkT2JqZWN0KCkpCi0gICAgICAgICAg
ICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCkpLT5zZXRQ
bHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihSZW5kZXJFbWJlZGRlZE9iamVjdDo6SW5zZWN1cmVQ
bHVnaW5WZXJzaW9uKTsKKyAgICAgICAgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkID0gZmFsc2U7
CisgICAgICAgIGlmIChwbHVnaW5FbGVtZW50LT5yZW5kZXJlcigpLT5pc0VtYmVkZGVkT2JqZWN0
KCkpIHsKKyAgICAgICAgICAgIFJlbmRlckVtYmVkZGVkT2JqZWN0KiByZW5kZXJPYmplY3QgPSB0
b1JlbmRlckVtYmVkZGVkT2JqZWN0KHBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCkpOworICAgICAg
ICAgICAgcmVuZGVyT2JqZWN0LT5zZXRQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbihSZW5kZXJF
bWJlZGRlZE9iamVjdDo6SW5zZWN1cmVQbHVnaW5WZXJzaW9uKTsKKyAgICAgICAgICAgIHJlcGxh
Y2VtZW50T2JzY3VyZWQgPSByZW5kZXJPYmplY3QtPmlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpOwor
ICAgICAgICB9CiAKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRCbG9j
a0luc2VjdXJlUGx1Z2luVmVyc2lvbihwYXJhbWV0ZXJzLm1pbWVUeXBlLCBwYXJhbWV0ZXJzLnVy
bC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJpbmcsIHBhZ2VVUkxTdHJpbmcpKTsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihw
YXJhbWV0ZXJzLm1pbWVUeXBlLCBwYXJhbWV0ZXJzLnVybC5zdHJpbmcoKSwgZnJhbWVVUkxTdHJp
bmcsIHBhZ2VVUkxTdHJpbmcsIHJlcGxhY2VtZW50T2JzY3VyZWQpKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="227617"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="227618"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>206029</attachid>
            <date>2013-07-03 15:28:29 -0700</date>
            <delta_ts>2013-07-03 15:34:00 -0700</delta_ts>
            <desc>Patch to provide indication of (partially) hidden blocked plugin replacement elements #4 (resolving conflicts)</desc>
            <filename>blocked-plugin4.patch</filename>
            <type>application/octet-stream</type>
            <size>18195</size>
            <attacher name="Gordon Sheridan">gordon_sheridan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTU5NWNmLi5jZGJkZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTMtMDctMDEgIEdvcmRvbiBTaGVyaWRhbiAgPGdvcmRvbl9zaGVyaWRhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IG1lY2hhbmlzbSB0byBkZXRlY3QgKHBhcnRpYWxseSkg
aGlkZGVuIGJsb2NrZWQgcGx1Z2lucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpyZXBsYWNlbWVudFRleHRSZWN0
KToKKyAgICAgICAgQWRkZWQgcHJpdmF0ZSBtZXRob2QgZm9yIGNhbGN1bGF0aW5nIHRoZSBzaXpl
IG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGZvciBibG9ja2VkIHBsdWdpbnMuCisKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQpOgor
ICAgICAgICBBZGRlZCBwdWJsaWMgbWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgRU1CRUQgZWxl
bWVudCB1c2VkIGZvciBhIGJsb2NrZWQgcGx1Z2luIGlzIGluYWNjZXNzaWJsZSB0byB0aGUgdXNl
ci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAg
RGVjbGFyZSB0aGUgdHdvIG5ldyBtZXRob2RzIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICBFeHBvcnQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6Omlz
UmVwbGFjZW1lbnRPYnNjdXJlZCgpLgorCiAyMDEzLTA3LTAzICBKZXNzaWUgQmVybGluICA8amJl
cmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpdmUgYnVpbGQgZml4IGFmdGVyIHIx
NTIzNDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDhjODI5MzIuLjMzNTg2YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC02NjYsNiArNjY2LDcgQEAgX19aTjdXZWJDb3JlMjBEaXNwbGF5U2xl
ZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlNf
NE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdgogX19aTjdXZWJD
b3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI5c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25F
TlMwXzI2UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25FCitfX1pOSzdXZWJDb3JlMjBSZW5kZXJF
bWJlZGRlZE9iamVjdDIxaXNSZXBsYWNlbWVudE9ic2N1cmVkRXYKIF9fWk43V2ViQ29yZTIwUmVz
b3VyY2VIYW5kbGVDbGllbnQxNmRpZFJlY2VpdmVCdWZmZXJFUE5TXzE0UmVzb3VyY2VIYW5kbGVF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVpCiBfX1pON1dlYkNvcmUyMFJl
c291cmNlSGFuZGxlQ2xpZW50MjB3aWxsU2VuZFJlcXVlc3RBc3luY0VQTlNfMTRSZXNvdXJjZUhh
bmRsZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19a
TjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3luY0VQ
TlNfMTRSZXNvdXJjZUhhbmRsZUVQMTlOU0NhY2hlZFVSTFJlc3BvbnNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBlOWYwZjdl
Li41MjhlNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIK
KyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldFByb3RlY3Rvci5oIgpA
QCAtMjc3LDYgKzI3OCw4NiBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNl
bWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bAogICAgIHJldHVybiB0
cnVlOwogfQogCitMYXlvdXRSZWN0IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpyZXBsYWNlbWVudFRl
eHRSZWN0KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKK3sKKyAg
ICBGbG9hdFJlY3QgY29udGVudFJlY3Q7CisgICAgUGF0aCBwYXRoOworICAgIEZsb2F0UmVjdCBy
ZXBsYWNlbWVudFRleHRSZWN0OworICAgIEZvbnQgZm9udDsKKyAgICBUZXh0UnVuIHJ1bigiIiwg
MCk7CisgICAgZmxvYXQgdGV4dFdpZHRoOworICAgIGlmIChnZXRSZXBsYWNlbWVudFRleHRHZW9t
ZXRyeShhY2N1bXVsYXRlZE9mZnNldCwgY29udGVudFJlY3QsIHBhdGgsIHJlcGxhY2VtZW50VGV4
dFJlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3Qo
cmVwbGFjZW1lbnRUZXh0UmVjdCk7CisgICAgCisgICAgcmV0dXJuIExheW91dFJlY3QoKTsKK30K
KworYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKCkgY29u
c3QKK3sKKyAgICAvLyBSZXR1cm4gd2hldGhlciBvciBub3QgdGhlIHJlcGxhY2VtZW50IGNvbnRl
bnQgZm9yIGJsb2NrZWQgcGx1Z2lucyBpcyBhY2Nlc3NpYmxlIHRvIHRoZSB1c2VyLgorICAgIAor
ICAgIC8vIENoZWNrIHRoZSBvcGFjaXR5IG9mIGVhY2ggbGF5ZXIgY29udGFpbmluZyB0aGUgZWxl
bWVudCBvciBpdHMgYW5jZXN0b3JzLgorICAgIGZsb2F0IG9wYWNpdHkgPSAxLjA7CisgICAgZm9y
IChSZW5kZXJMYXllciogbGF5ZXIgPSBlbmNsb3NpbmdMYXllcigpOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+cGFyZW50KCkpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVuZGVy
ZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7CisgICAgICAgIG9wYWNpdHkgKj0gc3R5bGUtPm9wYWNpdHkoKTsKKyAg
ICAgICAgaWYgKG9wYWNpdHkgPCAwLjEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIGFic29sdXRlIHJlY3QgZm9yIHRoZSBibG9ja2VkIHBs
dWdpbiByZXBsYWNlbWVudCB0ZXh0LgorICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCA9
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVMb2Nh
dGlvbihhYnNvbHV0ZUJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOworICAgIExheW91dFJlY3QgcmVj
dCA9IHJlcGxhY2VtZW50VGV4dFJlY3QoYWJzb2x1dGVMb2NhdGlvbik7CisgICAgaWYgKHJlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlbmRlclZpZXcqIGRvY1Jl
bmRlcmVyID0gZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAgIEFTU0VSVChkb2NSZW5kZXJl
cik7CisgICAgaWYgKCFkb2NSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CisgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQ7CisgICAgSGl0VGVzdExvY2F0aW9uIGxvY2F0aW9uOworICAgIAorICAgIExheW91dFVu
aXQgeCA9IHJlY3QueCgpOworICAgIExheW91dFVuaXQgeSA9IHJlY3QueSgpOworICAgIExheW91
dFVuaXQgd2lkdGggPSByZWN0LndpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSByZWN0
LmhlaWdodCgpOworICAgIAorICAgIC8vIEhpdCB0ZXN0IHRoZSBjZW50ZXIgYW5kIG5lYXIgdGhl
IGNvcm5lcnMgb2YgdGhlIHJlcGxhY2VtZW50IHRleHQgdG8gZW5zdXJlCisgICAgLy8gaXQgaXMg
dmlzaWJsZSBhbmQgaXMgbm90IG1hc2tlZCBieSBvdGhlciBlbGVtZW50cy4KKyAgICBib29sIGhp
dCA9IGZhbHNlOworICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRoIC8gMiwgeSAr
IGhlaWdodCAvIDIpOworICAgIGhpdCA9IGRvY1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIGxv
Y2F0aW9uLCByZXN1bHQpOworICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAhPSBu
b2RlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGxvY2F0aW9uID0gTGF5b3V0
UG9pbnQoeCwgeSk7CisgICAgaGl0ID0gZG9jUmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgbG9j
YXRpb24sIHJlc3VsdCk7CisgICAgaWYgKCFoaXQgfHwgcmVzdWx0LmlubmVyTm9kZSgpICE9IG5v
ZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgbG9jYXRpb24gPSBMYXlvdXRQ
b2ludCh4ICsgd2lkdGgsIHkpOworICAgIGhpdCA9IGRvY1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVl
c3QsIGxvY2F0aW9uLCByZXN1bHQpOworICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUo
KSAhPSBub2RlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGxvY2F0aW9uID0g
TGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KTsKKyAgICBoaXQgPSBkb2NSZW5kZXJl
ci0+aGl0VGVzdChyZXF1ZXN0LCBsb2NhdGlvbiwgcmVzdWx0KTsKKyAgICBpZiAoIWhpdCB8fCBy
ZXN1bHQuaW5uZXJOb2RlKCkgIT0gbm9kZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAK
KyAgICBsb2NhdGlvbiA9IExheW91dFBvaW50KHgsIHkgKyBoZWlnaHQpOworICAgIGhpdCA9IGRv
Y1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIGxvY2F0aW9uLCByZXN1bHQpOworICAgIGlmICgh
aGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAhPSBub2RlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojps
YXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQ
b2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmgKaW5kZXggOTFlNDRkNS4uMTU4YTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBoYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KEV2ZW50Kik7CiAK
KyAgICBib29sIGlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpIGNvbnN0OworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihNb3VzZUV2ZW50KikgY29uc3Q7
CiAgICAgYm9vbCBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoY29uc3QgTGF5b3V0UG9p
bnQmKSBjb25zdDsKICAgICBib29sIGdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgRmxvYXRSZWN0JiBjb250ZW50UmVjdCwgUGF0
aCYsIEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRm9udCYsIFRleHRSdW4mLCBmbG9h
dCYgdGV4dFdpZHRoKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Qo
Y29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hp
bGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVh
bENoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmYjhkYWQu
LjgyMzA4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMy0wNy0wMSAgR29yZG9u
IFNoZXJpZGFuICA8Z29yZG9uX3NoZXJpZGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgbWVjaGFuaXNtIHRvIGRldGVjdCAocGFydGlhbGx5KSBoaWRkZW4gYmxvY2tlZCBwbHVnaW5z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3OTk4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KToKKyAgICAgICAgQWRk
IGtleSBmb3IgcGx1Z0luSW5mb3JtYXRpb24gZGljdGlvbmFyaWVzLgorCisgICAgICAgIChXZWJL
aXQ6OmNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeSk6CisgICAgICAgIEFkZCBib29s
ZWFuIHBhcmFtZXRlciBpZGVudGlmeWluZyB3aGV0aGVyIHRoZSByZXBsYWNlbWVudCBmb3IgYSBi
bG9ja2VkIHBsdWdpbiBpcyBvYnNjdXJlZCwgYW5kIGFkZCBpdCB0byB0aGUgZGljdGlvbmFyeS4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV0tQbHVn
aW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkpOgorICAgICAgICBQcm92aWRlIHRo
ZSBDIEFQSSBmb3IgdGhlIHBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgp
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKToKKyAgICAgICAgQWRkIGJvb2wgcmVwbGFjZW1l
bnRPYnNjdXJlZCBwYXJhbWV0ZXIgdG8gcGFzcyBvbiBhcmd1bWVudCB0byBjcmVhdGVQbHVnaW5J
bmZvcm1hdGlvbkRpY3Rpb25hcnkoKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQgcGFy
YW1ldGVyIHRvIERpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKCkgbWVzc2FnZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgSW52b2tlIGlzUmVwbGFjZW1lbnRPYnNj
dXJlZCgpIG1ldGhvZCBmb3IgYmxvY2tlZCBwbHVnaW5zLgorCiAyMDEzLTA3LTAzICBTaW1vbiBQ
ZW5hICA8c2ltb24ucGVuYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBXZWJUZXh0Q2hlY2tlckNs
aWVudCBkb2Vzbid0IGluaXRpYWxpemUgb3V0cHV0IGFyZ3VtZW50cy4KQEAgLTI2LDYgKzU4LDcg
QEAKICAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyk6CiAgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja0dy
YW1tYXJPZlN0cmluZyk6CiAKKwogMjAxMy0wNy0wMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2
aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXSzJdIFNJR1NFViBpbiBXZWJLaXQ6
OldlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9u
LmNwcAppbmRleCA0OGI4NDU2Li5kNGNjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCkBAIC0xMTUsMyArMTE1LDkgQEAg
V0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvcm1hdGlvblBhZ2VDb250YWluc05vblBsYXlpbmdJbnN0
YW5jZU9mUGx1Z0luS2V5KCkKICAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6
OmNyZWF0ZShwbHVnSW5JbmZvcm1hdGlvblBhZ2VDb250YWluc05vblBsYXlpbmdJbnN0YW5jZU9m
UGx1Z0luS2V5KCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9BUEkoa2V5KTsKIH0KKworV0tT
dHJpbmdSZWYgV0tQbHVnSW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKQorewor
ICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdJbkluZm9y
bWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRv
QVBJKGtleSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQ
bHVnaW5JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2lu
SW5mb3JtYXRpb24uaAppbmRleCAyYjNmODc5Li40N2E0MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmgKQEAgLTc5LDYgKzc5LDkg
QEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXko
KTsKIC8qIFZhbHVlIHR5cGU6IFdLQm9vbGVhblJlZiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLUGx1Z0luSW5mb3JtYXRpb25QYWdlQ29udGFpbnNOb25QbGF5aW5nSW5zdGFuY2VPZlBsdWdJ
bktleSgpOwogCisvKiBWYWx1ZSB0eXBlOiBXS0Jvb2xlYW5SZWYgKi8KK1dLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1BsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpOworCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCmluZGV4
IDI1M2Y4MjguLmVjYzhjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKQEAgLTEwNiw2ICsx
MDYsMTEgQEAgU3RyaW5nIHBsdWdJbkluZm9ybWF0aW9uUGFnZUNvbnRhaW5zTm9uUGxheWluZ0lu
c3RhbmNlT2ZQbHVnSW5LZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBsdWdJbkluZm9y
bWF0aW9uUGFnZUNvbnRhaW5zTm9uUGxheWluZ0luc3RhbmNlT2ZQbHVnSW4iKTsKIH0KIAorU3Ry
aW5nIHBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpCit7CisgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkIik7
Cit9CisKIHZvaWQgZ2V0UGx1Z2luTW9kdWxlSW5mb3JtYXRpb24oY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luLCBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlJiBtYXApCiB7CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMzUsNyArMTQwLDcgQEAgUGFzc1JlZlB0
cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnSW5JbmZvcm1hdGlvbkRpY3Rpb25hcnko
Y29uc3QgUGx1Z2luTW8KICAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWFw
KTsKIH0KIAotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZv
cm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nKQorUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1
Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
VVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQpCiB7CiAgICAgSW1tdXRhYmxlRGlj
dGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAgZ2V0UGx1Z2luTW9kdWxlSW5mb3JtYXRpb24ocGx1
Z2luLCBtYXApOwpAQCAtMTUwLDYgKzE1NSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlv
bmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vCiAg
ICAgICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtl
eSgpLCBXZWJVUkw6OmNyZWF0ZShwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZykpOwogICAg
IGlmICghcGx1Z2luVVJMU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgbWFwLnNldChwbHVnaW5J
bmZvcm1hdGlvblBsdWdpblVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShwbHVnaW5VUkxTdHJpbmcp
KTsKKyAgICBtYXAuc2V0KHBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgp
LCBXZWJCb29sZWFuOjpjcmVhdGUocmVwbGFjZW1lbnRPYnNjdXJlZCkpOwogCiAgICAgcmV0dXJu
IEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaApp
bmRleCAwYzEyOWQxLi45YmFjM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKQEAgLTUwLDkgKzUw
LDEwIEBAIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKTsKIFN0cmluZyBwbHVn
aW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCk7CiBTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKTsKIFN0cmluZyBwbHVnSW5JbmZvcm1hdGlvblBhZ2VD
b250YWluc05vblBsYXlpbmdJbnN0YW5jZU9mUGx1Z0luS2V5KCk7CitTdHJpbmcgcGx1Z0luSW5m
b3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCk7CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxl
RGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mKTsKLVBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nKTsKK1Bhc3NSZWZQdHI8SW1tdXRh
YmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3Ry
aW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQgPSBmYWxzZSk7CiBQYXNzUmVmUHRyPEltbXV0
YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcpOwogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVh
dGVQbHVnSW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJv
b2wgcGFnZUNvbnRhaW5zTm9uUGxheWluZ0luc3RhbmNlT2ZQbHVnSW4pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQyODBkYmMuLjdiNmYxOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjA3LDE0ICs0
MjA3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluCiAgICAgbV9sb2FkZXJDbGllbnQuZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbih0aGlzLCBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rp
b25hcnkobWltZVR5cGUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nKS5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVwbGFj
ZW1lbnRPYnNjdXJlZCkKIHsKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2lu
SW5mb3JtYXRpb247CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIFBsdWdpbk1v
ZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgp
LmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIEtVUkwoS1VSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsK
LSAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFy
eShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5n
KCksIFN0cmluZygpKTsKKyAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVS
TFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNlbWVudE9ic2N1cmVkKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpblVSTFN0cmluZyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNmZlMjI0Li5hODY2MTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04NjgsNyArODY4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdGb3JNYWluRnJhbWUo
Ym9vbCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBpbm5lZFRvUmlnaHRTaWRlLCBib29sIHBpbm5l
ZFRvVG9wU2lkZSwgYm9vbCBwaW5uZWRUb0JvdHRvbVNpZGUpOwogICAgIHZvaWQgZGlkQ2hhbmdl
UGFnZUNvdW50KHVuc2lnbmVkKTsKICAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4o
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKLSAgICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVQbHVn
aW5WZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkxTdHJpbmcpOworICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBy
ZXBsYWNlbWVudE9ic2N1cmVkKTsKICAgICB2b2lkIHNldENhblNob3J0Q2lyY3VpdEhvcml6b250
YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cykg
eyBtX2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyA9IGNhblNob3J0Q2lyY3Vp
dEhvcml6b250YWxXaGVlbEV2ZW50czsgfQogCiAgICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2Vz
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggY2Y4NzQ4NS4uZmMyZmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC02Niw3ICs2Niw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0UGlubmluZ0Zv
ck1haW5GcmFtZShib29sIHBpbm5lZFRvTGVmdFNpZGUsIGJvb2wgcGlubmVkVG9SaWdodFNpZGUs
IGJvb2wgcGlubmVkVG9Ub3BTaWRlLCBib29sIHBpbm5lZFRvQm90dG9tU2lkZSkKICAgICBEaWRD
aGFuZ2VQYWdlQ291bnQodW5zaWduZWQgcGFnZUNvdW50KTsKICAgICBEaWRGYWlsVG9Jbml0aWFs
aXplUGx1Z2luKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmlu
ZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZykKLSAgICBEaWRCbG9ja0luc2VjdXJlUGx1Z2lu
VmVyc2lvbihXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgcGx1Z2luVVJMU3RyaW5n
LCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmluZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZykK
KyAgICBEaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXVEY6OlN0cmluZyBtaW1lVHlwZSwg
V1RGOjpTdHJpbmcgcGx1Z2luVVJMU3RyaW5nLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmluZywg
V1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkKQogICAg
IFNldENhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0Q2ly
Y3VpdEhvcml6b250YWxXaGVlbEV2ZW50cykKIAogI2lmIFBMQVRGT1JNKEVGTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYjFkYjc4Li5h
ZmI2YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01NDksMTAgKzU0OSwxNCBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3Jl
YXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgUGx1Z2luTW9kdWxlQmxvY2tlZDoKLSAgICAgICAgaWYgKHBs
dWdpbkVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmplY3QoKSkKLSAgICAgICAgICAg
IHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSktPnNldFBs
dWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFJlbmRlckVtYmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBs
dWdpblZlcnNpb24pOworICAgICAgICBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQgPSBmYWxzZTsK
KyAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmplY3Qo
KSkgeworICAgICAgICAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QqIHJlbmRlck9iamVjdCA9IHRv
UmVuZGVyRW1iZWRkZWRPYmplY3QocGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgICAg
ICAgICByZW5kZXJPYmplY3QtPnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFJlbmRlckVt
YmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBsdWdpblZlcnNpb24pOworICAgICAgICAgICAgcmVwbGFj
ZW1lbnRPYnNjdXJlZCA9IHJlbmRlck9iamVjdC0+aXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7Cisg
ICAgICAgIH0KIAotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEJsb2Nr
SW5zZWN1cmVQbHVnaW5WZXJzaW9uKHBhcmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJs
LnN0cmluZygpLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKHBh
cmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpLCBmcmFtZVVSTFN0cmlu
ZywgcGFnZVVSTFN0cmluZywgcmVwbGFjZW1lbnRPYnNjdXJlZCkpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206030</attachid>
            <date>2013-07-03 15:34:00 -0700</date>
            <delta_ts>2013-07-03 16:57:08 -0700</delta_ts>
            <desc>Patch to provide indication of (partially) hidden blocked plugin replacement elements #4 (content type=patch)</desc>
            <filename>blocked-plugin4.patch</filename>
            <type>text/plain</type>
            <size>18195</size>
            <attacher name="Gordon Sheridan">gordon_sheridan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMTU5NWNmLi5jZGJkZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTMtMDctMDEgIEdvcmRvbiBTaGVyaWRhbiAgPGdvcmRvbl9zaGVyaWRhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IG1lY2hhbmlzbSB0byBkZXRlY3QgKHBhcnRpYWxseSkg
aGlkZGVuIGJsb2NrZWQgcGx1Z2lucy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNzk5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0OjpyZXBsYWNlbWVudFRleHRSZWN0
KToKKyAgICAgICAgQWRkZWQgcHJpdmF0ZSBtZXRob2QgZm9yIGNhbGN1bGF0aW5nIHRoZSBzaXpl
IG9mIHRoZSByZXBsYWNlbWVudCB0ZXh0IGZvciBibG9ja2VkIHBsdWdpbnMuCisKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckVtYmVkZGVkT2JqZWN0Ojppc1JlcGxhY2VtZW50T2JzY3VyZWQpOgor
ICAgICAgICBBZGRlZCBwdWJsaWMgbWV0aG9kIHRvIGRldGVybWluZSBpZiB0aGUgRU1CRUQgZWxl
bWVudCB1c2VkIGZvciBhIGJsb2NrZWQgcGx1Z2luIGlzIGluYWNjZXNzaWJsZSB0byB0aGUgdXNl
ci4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuaDoKKyAgICAgICAg
RGVjbGFyZSB0aGUgdHdvIG5ldyBtZXRob2RzIG1lbnRpb25lZCBhYm92ZS4KKworICAgICAgICAq
IFdlYkNvcmUuZXhwLmluOgorICAgICAgICBFeHBvcnQgUmVuZGVyRW1iZWRkZWRPYmplY3Q6Omlz
UmVwbGFjZW1lbnRPYnNjdXJlZCgpLgorCiAyMDEzLTA3LTAzICBKZXNzaWUgQmVybGluICA8amJl
cmxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpdmUgYnVpbGQgZml4IGFmdGVyIHIx
NTIzNDAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDhjODI5MzIuLjMzNTg2YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCkBAIC02NjYsNiArNjY2LDcgQEAgX19aTjdXZWJDb3JlMjBEaXNwbGF5U2xl
ZXBEaXNhYmxlckQxRXYKIF9fWk43V2ViQ29yZTIwTm9kZVJlbmRlcmluZ0NvbnRleHRDMUVQTlNf
NE5vZGVFCiBfX1pON1dlYkNvcmUyME5vZGVSZW5kZXJpbmdDb250ZXh0RDFFdgogX19aTjdXZWJD
b3JlMjBSZW5kZXJFbWJlZGRlZE9iamVjdDI5c2V0UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25F
TlMwXzI2UGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25FCitfX1pOSzdXZWJDb3JlMjBSZW5kZXJF
bWJlZGRlZE9iamVjdDIxaXNSZXBsYWNlbWVudE9ic2N1cmVkRXYKIF9fWk43V2ViQ29yZTIwUmVz
b3VyY2VIYW5kbGVDbGllbnQxNmRpZFJlY2VpdmVCdWZmZXJFUE5TXzE0UmVzb3VyY2VIYW5kbGVF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfMTJTaGFyZWRCdWZmZXJFRUVpCiBfX1pON1dlYkNvcmUyMFJl
c291cmNlSGFuZGxlQ2xpZW50MjB3aWxsU2VuZFJlcXVlc3RBc3luY0VQTlNfMTRSZXNvdXJjZUhh
bmRsZUVSS05TXzE1UmVzb3VyY2VSZXF1ZXN0RVJLTlNfMTZSZXNvdXJjZVJlc3BvbnNlRQogX19a
TjdXZWJDb3JlMjBSZXNvdXJjZUhhbmRsZUNsaWVudDIyd2lsbENhY2hlUmVzcG9uc2VBc3luY0VQ
TlNfMTRSZXNvdXJjZUhhbmRsZUVQMTlOU0NhY2hlZFVSTFJlc3BvbnNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmNwcAppbmRleCBlOWYwZjdl
Li41MjhlNWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1i
ZWRkZWRPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIK
KyNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldFByb3RlY3Rvci5oIgpA
QCAtMjc3LDYgKzI3OCw4NiBAQCBib29sIFJlbmRlckVtYmVkZGVkT2JqZWN0OjpnZXRSZXBsYWNl
bWVudFRleHRHZW9tZXRyeShjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bAogICAgIHJldHVybiB0
cnVlOwogfQogCitMYXlvdXRSZWN0IFJlbmRlckVtYmVkZGVkT2JqZWN0OjpyZXBsYWNlbWVudFRl
eHRSZWN0KGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCkgY29uc3QKK3sKKyAg
ICBGbG9hdFJlY3QgY29udGVudFJlY3Q7CisgICAgUGF0aCBwYXRoOworICAgIEZsb2F0UmVjdCBy
ZXBsYWNlbWVudFRleHRSZWN0OworICAgIEZvbnQgZm9udDsKKyAgICBUZXh0UnVuIHJ1bigiIiwg
MCk7CisgICAgZmxvYXQgdGV4dFdpZHRoOworICAgIGlmIChnZXRSZXBsYWNlbWVudFRleHRHZW9t
ZXRyeShhY2N1bXVsYXRlZE9mZnNldCwgY29udGVudFJlY3QsIHBhdGgsIHJlcGxhY2VtZW50VGV4
dFJlY3QsIGZvbnQsIHJ1biwgdGV4dFdpZHRoKSkKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3Qo
cmVwbGFjZW1lbnRUZXh0UmVjdCk7CisgICAgCisgICAgcmV0dXJuIExheW91dFJlY3QoKTsKK30K
KworYm9vbCBSZW5kZXJFbWJlZGRlZE9iamVjdDo6aXNSZXBsYWNlbWVudE9ic2N1cmVkKCkgY29u
c3QKK3sKKyAgICAvLyBSZXR1cm4gd2hldGhlciBvciBub3QgdGhlIHJlcGxhY2VtZW50IGNvbnRl
bnQgZm9yIGJsb2NrZWQgcGx1Z2lucyBpcyBhY2Nlc3NpYmxlIHRvIHRoZSB1c2VyLgorICAgIAor
ICAgIC8vIENoZWNrIHRoZSBvcGFjaXR5IG9mIGVhY2ggbGF5ZXIgY29udGFpbmluZyB0aGUgZWxl
bWVudCBvciBpdHMgYW5jZXN0b3JzLgorICAgIGZsb2F0IG9wYWNpdHkgPSAxLjA7CisgICAgZm9y
IChSZW5kZXJMYXllciogbGF5ZXIgPSBlbmNsb3NpbmdMYXllcigpOyBsYXllcjsgbGF5ZXIgPSBs
YXllci0+cGFyZW50KCkpIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVuZGVy
ZXIgPSBsYXllci0+cmVuZGVyZXIoKTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVu
ZGVyZXItPnN0eWxlKCk7CisgICAgICAgIG9wYWNpdHkgKj0gc3R5bGUtPm9wYWNpdHkoKTsKKyAg
ICAgICAgaWYgKG9wYWNpdHkgPCAwLjEpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisKKyAgICAvLyBDYWxjdWxhdGUgdGhlIGFic29sdXRlIHJlY3QgZm9yIHRoZSBibG9ja2VkIHBs
dWdpbiByZXBsYWNlbWVudCB0ZXh0LgorICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveCA9
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KCk7CisgICAgTGF5b3V0UG9pbnQgYWJzb2x1dGVMb2Nh
dGlvbihhYnNvbHV0ZUJvdW5kaW5nQm94LmxvY2F0aW9uKCkpOworICAgIExheW91dFJlY3QgcmVj
dCA9IHJlcGxhY2VtZW50VGV4dFJlY3QoYWJzb2x1dGVMb2NhdGlvbik7CisgICAgaWYgKHJlY3Qu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFJlbmRlclZpZXcqIGRvY1Jl
bmRlcmVyID0gZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAgIEFTU0VSVChkb2NSZW5kZXJl
cik7CisgICAgaWYgKCFkb2NSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisg
ICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRU
ZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6Oklnbm9yZUNsaXBwaW5nIHwgSGl0
VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CisgICAgSGl0VGVzdFJlc3VsdCBy
ZXN1bHQ7CisgICAgSGl0VGVzdExvY2F0aW9uIGxvY2F0aW9uOworICAgIAorICAgIExheW91dFVu
aXQgeCA9IHJlY3QueCgpOworICAgIExheW91dFVuaXQgeSA9IHJlY3QueSgpOworICAgIExheW91
dFVuaXQgd2lkdGggPSByZWN0LndpZHRoKCk7CisgICAgTGF5b3V0VW5pdCBoZWlnaHQgPSByZWN0
LmhlaWdodCgpOworICAgIAorICAgIC8vIEhpdCB0ZXN0IHRoZSBjZW50ZXIgYW5kIG5lYXIgdGhl
IGNvcm5lcnMgb2YgdGhlIHJlcGxhY2VtZW50IHRleHQgdG8gZW5zdXJlCisgICAgLy8gaXQgaXMg
dmlzaWJsZSBhbmQgaXMgbm90IG1hc2tlZCBieSBvdGhlciBlbGVtZW50cy4KKyAgICBib29sIGhp
dCA9IGZhbHNlOworICAgIGxvY2F0aW9uID0gTGF5b3V0UG9pbnQoeCArIHdpZHRoIC8gMiwgeSAr
IGhlaWdodCAvIDIpOworICAgIGhpdCA9IGRvY1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIGxv
Y2F0aW9uLCByZXN1bHQpOworICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAhPSBu
b2RlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGxvY2F0aW9uID0gTGF5b3V0
UG9pbnQoeCwgeSk7CisgICAgaGl0ID0gZG9jUmVuZGVyZXItPmhpdFRlc3QocmVxdWVzdCwgbG9j
YXRpb24sIHJlc3VsdCk7CisgICAgaWYgKCFoaXQgfHwgcmVzdWx0LmlubmVyTm9kZSgpICE9IG5v
ZGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCisgICAgbG9jYXRpb24gPSBMYXlvdXRQ
b2ludCh4ICsgd2lkdGgsIHkpOworICAgIGhpdCA9IGRvY1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVl
c3QsIGxvY2F0aW9uLCByZXN1bHQpOworICAgIGlmICghaGl0IHx8IHJlc3VsdC5pbm5lck5vZGUo
KSAhPSBub2RlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAgIGxvY2F0aW9uID0g
TGF5b3V0UG9pbnQoeCArIHdpZHRoLCB5ICsgaGVpZ2h0KTsKKyAgICBoaXQgPSBkb2NSZW5kZXJl
ci0+aGl0VGVzdChyZXF1ZXN0LCBsb2NhdGlvbiwgcmVzdWx0KTsKKyAgICBpZiAoIWhpdCB8fCBy
ZXN1bHQuaW5uZXJOb2RlKCkgIT0gbm9kZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAK
KyAgICBsb2NhdGlvbiA9IExheW91dFBvaW50KHgsIHkgKyBoZWlnaHQpOworICAgIGhpdCA9IGRv
Y1JlbmRlcmVyLT5oaXRUZXN0KHJlcXVlc3QsIGxvY2F0aW9uLCByZXN1bHQpOworICAgIGlmICgh
aGl0IHx8IHJlc3VsdC5pbm5lck5vZGUoKSAhPSBub2RlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIFJlbmRlckVtYmVkZGVkT2JqZWN0Ojps
YXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQ
b2ludDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJlZGRl
ZE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0
LmgKaW5kZXggOTFlNDRkNS4uMTU4YTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVtYmVkZGVkT2JqZWN0LmgKQEAgLTUyLDYgKzUyLDggQEAgcHVibGljOgogCiAg
ICAgdm9pZCBoYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KEV2ZW50Kik7CiAK
KyAgICBib29sIGlzUmVwbGFjZW1lbnRPYnNjdXJlZCgpIGNvbnN0OworCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBY2NlbGVyYXRlZENv
bXBvc2l0aW5nKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTkwLDYgKzkyLDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIGlzSW5VbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvcihNb3VzZUV2ZW50KikgY29uc3Q7
CiAgICAgYm9vbCBpc0luVW5hdmFpbGFibGVQbHVnaW5JbmRpY2F0b3IoY29uc3QgTGF5b3V0UG9p
bnQmKSBjb25zdDsKICAgICBib29sIGdldFJlcGxhY2VtZW50VGV4dEdlb21ldHJ5KGNvbnN0IExh
eW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgRmxvYXRSZWN0JiBjb250ZW50UmVjdCwgUGF0
aCYsIEZsb2F0UmVjdCYgcmVwbGFjZW1lbnRUZXh0UmVjdCwgRm9udCYsIFRleHRSdW4mLCBmbG9h
dCYgdGV4dFdpZHRoKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IHJlcGxhY2VtZW50VGV4dFJlY3Qo
Y29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlQ2hp
bGRyZW4oKSBjb25zdDsKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVh
bENoaWxkcmVuKCkgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDhmYjhkYWQu
LjgyMzA4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMy0wNy0wMSAgR29yZG9u
IFNoZXJpZGFuICA8Z29yZG9uX3NoZXJpZGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1l
bnQgbWVjaGFuaXNtIHRvIGRldGVjdCAocGFydGlhbGx5KSBoaWRkZW4gYmxvY2tlZCBwbHVnaW5z
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE3OTk4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oOgorICAgICAgICAqIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6cGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KToKKyAgICAgICAgQWRk
IGtleSBmb3IgcGx1Z0luSW5mb3JtYXRpb24gZGljdGlvbmFyaWVzLgorCisgICAgICAgIChXZWJL
aXQ6OmNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeSk6CisgICAgICAgIEFkZCBib29s
ZWFuIHBhcmFtZXRlciBpZGVudGlmeWluZyB3aGV0aGVyIHRoZSByZXBsYWNlbWVudCBmb3IgYSBi
bG9ja2VkIHBsdWdpbiBpcyBvYnNjdXJlZCwgYW5kIGFkZCBpdCB0byB0aGUgZGljdGlvbmFyeS4K
KworICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmg6CisgICAgICAg
ICogU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAoV0tQbHVn
aW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkpOgorICAgICAgICBQcm92aWRlIHRo
ZSBDIEFQSSBmb3IgdGhlIHBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgp
LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKToKKyAgICAgICAgQWRkIGJvb2wgcmVwbGFjZW1l
bnRPYnNjdXJlZCBwYXJhbWV0ZXIgdG8gcGFzcyBvbiBhcmd1bWVudCB0byBjcmVhdGVQbHVnaW5J
bmZvcm1hdGlvbkRpY3Rpb25hcnkoKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQgcGFy
YW1ldGVyIHRvIERpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKCkgbWVzc2FnZS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgSW52b2tlIGlzUmVwbGFjZW1lbnRPYnNj
dXJlZCgpIG1ldGhvZCBmb3IgYmxvY2tlZCBwbHVnaW5zLgorCiAyMDEzLTA3LTAzICBTaW1vbiBQ
ZW5hICA8c2ltb24ucGVuYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBXZWJUZXh0Q2hlY2tlckNs
aWVudCBkb2Vzbid0IGluaXRpYWxpemUgb3V0cHV0IGFyZ3VtZW50cy4KQEAgLTI2LDYgKzU4LDcg
QEAKICAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNrZXJDbGllbnQ6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyk6CiAgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2VyQ2xpZW50OjpjaGVja0dy
YW1tYXJPZlN0cmluZyk6CiAKKwogMjAxMy0wNy0wMyAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2
aWxsYXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXSzJdIFNJR1NFViBpbiBXZWJLaXQ6
OldlYlBhZ2VDb250ZXh0TWVudUNsaWVudDo6Y3VzdG9tQ29udGV4dE1lbnVJdGVtU2VsZWN0ZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9u
LmNwcAppbmRleCA0OGI4NDU2Li5kNGNjMzljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCkBAIC0xMTUsMyArMTE1LDkgQEAg
V0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZvcm1hdGlvblBhZ2VDb250YWluc05vblBsYXlpbmdJbnN0
YW5jZU9mUGx1Z0luS2V5KCkKICAgICBzdGF0aWMgV2ViU3RyaW5nKiBrZXkgPSBXZWJTdHJpbmc6
OmNyZWF0ZShwbHVnSW5JbmZvcm1hdGlvblBhZ2VDb250YWluc05vblBsYXlpbmdJbnN0YW5jZU9m
UGx1Z0luS2V5KCkpLmxlYWtSZWYoKTsKICAgICByZXR1cm4gdG9BUEkoa2V5KTsKIH0KKworV0tT
dHJpbmdSZWYgV0tQbHVnSW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKQorewor
ICAgIHN0YXRpYyBXZWJTdHJpbmcqIGtleSA9IFdlYlN0cmluZzo6Y3JlYXRlKHBsdWdJbkluZm9y
bWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIHRv
QVBJKGtleSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQ
bHVnaW5JbmZvcm1hdGlvbi5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLUGx1Z2lu
SW5mb3JtYXRpb24uaAppbmRleCAyYjNmODc5Li40N2E0MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0aW9uLmgKQEAgLTc5LDYgKzc5LDkg
QEAgV0tfRVhQT1JUIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXko
KTsKIC8qIFZhbHVlIHR5cGU6IFdLQm9vbGVhblJlZiAqLwogV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLUGx1Z0luSW5mb3JtYXRpb25QYWdlQ29udGFpbnNOb25QbGF5aW5nSW5zdGFuY2VPZlBsdWdJ
bktleSgpOwogCisvKiBWYWx1ZSB0eXBlOiBXS0Jvb2xlYW5SZWYgKi8KK1dLX0VYUE9SVCBXS1N0
cmluZ1JlZiBXS1BsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpOworCiAj
aWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uY3BwCmluZGV4
IDI1M2Y4MjguLmVjYzhjYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVn
aW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5jcHAKQEAgLTEwNiw2ICsx
MDYsMTEgQEAgU3RyaW5nIHBsdWdJbkluZm9ybWF0aW9uUGFnZUNvbnRhaW5zTm9uUGxheWluZ0lu
c3RhbmNlT2ZQbHVnSW5LZXkoKQogICAgIHJldHVybiBBU0NJSUxpdGVyYWwoIlBsdWdJbkluZm9y
bWF0aW9uUGFnZUNvbnRhaW5zTm9uUGxheWluZ0luc3RhbmNlT2ZQbHVnSW4iKTsKIH0KIAorU3Ry
aW5nIHBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpCit7CisgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbCgiUGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkIik7
Cit9CisKIHZvaWQgZ2V0UGx1Z2luTW9kdWxlSW5mb3JtYXRpb24oY29uc3QgUGx1Z2luTW9kdWxl
SW5mbyYgcGx1Z2luLCBJbW11dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlJiBtYXApCiB7CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMzUsNyArMTQwLDcgQEAgUGFzc1JlZlB0
cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnSW5JbmZvcm1hdGlvbkRpY3Rpb25hcnko
Y29uc3QgUGx1Z2luTW8KICAgICByZXR1cm4gSW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWFw
KTsKIH0KIAotUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZv
cm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nKQorUGFzc1JlZlB0cjxJbW11dGFi
bGVEaWN0aW9uYXJ5PiBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1
Z2luTW9kdWxlSW5mbyYgcGx1Z2luLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
VVJMU3RyaW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQpCiB7CiAgICAgSW1tdXRhYmxlRGlj
dGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAgZ2V0UGx1Z2luTW9kdWxlSW5mb3JtYXRpb24ocGx1
Z2luLCBtYXApOwpAQCAtMTUwLDYgKzE1NSw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlv
bmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vCiAg
ICAgICAgIG1hcC5zZXQocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtl
eSgpLCBXZWJVUkw6OmNyZWF0ZShwbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTFN0cmluZykpOwogICAg
IGlmICghcGx1Z2luVVJMU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgbWFwLnNldChwbHVnaW5J
bmZvcm1hdGlvblBsdWdpblVSTEtleSgpLCBXZWJVUkw6OmNyZWF0ZShwbHVnaW5VUkxTdHJpbmcp
KTsKKyAgICBtYXAuc2V0KHBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgp
LCBXZWJCb29sZWFuOjpjcmVhdGUocmVwbGFjZW1lbnRPYnNjdXJlZCkpOwogCiAgICAgcmV0dXJu
IEltbXV0YWJsZURpY3Rpb25hcnk6OmFkb3B0KG1hcCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvUGx1Z2luSW5mb3JtYXRpb24uaApp
bmRleCAwYzEyOWQxLi45YmFjM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9QbHVnaW5JbmZvcm1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL1BsdWdpbkluZm9ybWF0aW9uLmgKQEAgLTUwLDkgKzUw
LDEwIEBAIFN0cmluZyBwbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKTsKIFN0cmluZyBwbHVn
aW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCk7CiBTdHJpbmcgcGx1Z2lu
SW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKTsKIFN0cmluZyBwbHVnSW5JbmZvcm1hdGlvblBhZ2VD
b250YWluc05vblBsYXlpbmdJbnN0YW5jZU9mUGx1Z0luS2V5KCk7CitTdHJpbmcgcGx1Z0luSW5m
b3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCk7CiAKIFBhc3NSZWZQdHI8SW1tdXRhYmxl
RGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdp
bk1vZHVsZUluZm8mKTsKLVBhc3NSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1
Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBsdWdpbk1vZHVsZUluZm8mLCBjb25zdCBT
dHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nKTsKK1Bhc3NSZWZQdHI8SW1tdXRh
YmxlRGljdGlvbmFyeT4gY3JlYXRlUGx1Z2luSW5mb3JtYXRpb25EaWN0aW9uYXJ5KGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
cGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3Ry
aW5nLCBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQgPSBmYWxzZSk7CiBQYXNzUmVmUHRyPEltbXV0
YWJsZURpY3Rpb25hcnk+IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcpOwogUGFzc1JlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBjcmVh
dGVQbHVnSW5JbmZvcm1hdGlvbkRpY3Rpb25hcnkoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYsIGJv
b2wgcGFnZUNvbnRhaW5zTm9uUGxheWluZ0luc3RhbmNlT2ZQbHVnSW4pOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGQyODBkYmMuLjdiNmYxOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC00MjA3LDE0ICs0
MjA3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluCiAgICAgbV9sb2FkZXJDbGllbnQuZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbih0aGlzLCBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rp
b25hcnkobWltZVR5cGUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nKS5nZXQoKSk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKQordm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVwbGFj
ZW1lbnRPYnNjdXJlZCkKIHsKICAgICBSZWZQdHI8SW1tdXRhYmxlRGljdGlvbmFyeT4gcGx1Z2lu
SW5mb3JtYXRpb247CiAKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQogICAgIFN0cmluZyBuZXdNaW1lVHlwZSA9IG1pbWVUeXBlOwogICAgIFBsdWdpbk1v
ZHVsZUluZm8gcGx1Z2luID0gbV9wcm9jZXNzLT5jb250ZXh0KCktPnBsdWdpbkluZm9TdG9yZSgp
LmZpbmRQbHVnaW4obmV3TWltZVR5cGUsIEtVUkwoS1VSTCgpLCBwbHVnaW5VUkxTdHJpbmcpKTsK
LSAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFy
eShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVSTFN0cmluZywgU3RyaW5n
KCksIFN0cmluZygpKTsKKyAgICBwbHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9y
bWF0aW9uRGljdGlvbmFyeShwbHVnaW4sIGZyYW1lVVJMU3RyaW5nLCBtaW1lVHlwZSwgcGFnZVVS
TFN0cmluZywgU3RyaW5nKCksIFN0cmluZygpLCByZXBsYWNlbWVudE9ic2N1cmVkKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHBsdWdpblVSTFN0cmluZyk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBhNmZlMjI0Li5hODY2MTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04NjgsNyArODY4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbE9mZnNldFBpbm5pbmdGb3JNYWluRnJhbWUo
Ym9vbCBwaW5uZWRUb0xlZnRTaWRlLCBib29sIHBpbm5lZFRvUmlnaHRTaWRlLCBib29sIHBpbm5l
ZFRvVG9wU2lkZSwgYm9vbCBwaW5uZWRUb0JvdHRvbVNpZGUpOwogICAgIHZvaWQgZGlkQ2hhbmdl
UGFnZUNvdW50KHVuc2lnbmVkKTsKICAgICB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4o
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKLSAgICB2b2lkIGRpZEJsb2NrSW5zZWN1cmVQbHVn
aW5WZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgcGx1Z2luVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHBhZ2VV
UkxTdHJpbmcpOworICAgIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnJhbWVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZywgYm9vbCBy
ZXBsYWNlbWVudE9ic2N1cmVkKTsKICAgICB2b2lkIHNldENhblNob3J0Q2lyY3VpdEhvcml6b250
YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cykg
eyBtX2NhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyA9IGNhblNob3J0Q2lyY3Vp
dEhvcml6b250YWxXaGVlbEV2ZW50czsgfQogCiAgICAgdm9pZCByZWF0dGFjaFRvV2ViUHJvY2Vz
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW4KaW5kZXggY2Y4NzQ4NS4uZmMyZmMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC02Niw3ICs2Niw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0UGlubmluZ0Zv
ck1haW5GcmFtZShib29sIHBpbm5lZFRvTGVmdFNpZGUsIGJvb2wgcGlubmVkVG9SaWdodFNpZGUs
IGJvb2wgcGlubmVkVG9Ub3BTaWRlLCBib29sIHBpbm5lZFRvQm90dG9tU2lkZSkKICAgICBEaWRD
aGFuZ2VQYWdlQ291bnQodW5zaWduZWQgcGFnZUNvdW50KTsKICAgICBEaWRGYWlsVG9Jbml0aWFs
aXplUGx1Z2luKFdURjo6U3RyaW5nIG1pbWVUeXBlLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmlu
ZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZykKLSAgICBEaWRCbG9ja0luc2VjdXJlUGx1Z2lu
VmVyc2lvbihXVEY6OlN0cmluZyBtaW1lVHlwZSwgV1RGOjpTdHJpbmcgcGx1Z2luVVJMU3RyaW5n
LCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmluZywgV1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZykK
KyAgICBEaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbihXVEY6OlN0cmluZyBtaW1lVHlwZSwg
V1RGOjpTdHJpbmcgcGx1Z2luVVJMU3RyaW5nLCBXVEY6OlN0cmluZyBmcmFtZVVSTFN0cmluZywg
V1RGOjpTdHJpbmcgcGFnZVVSTFN0cmluZywgYm9vbCByZXBsYWNlbWVudE9ic2N1cmVkKQogICAg
IFNldENhblNob3J0Q2lyY3VpdEhvcml6b250YWxXaGVlbEV2ZW50cyhib29sIGNhblNob3J0Q2ly
Y3VpdEhvcml6b250YWxXaGVlbEV2ZW50cykKIAogI2lmIFBMQVRGT1JNKEVGTCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYjFkYjc4Li5h
ZmI2YTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC01NDksMTAgKzU0OSwxNCBAQCBQYXNzUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3Jl
YXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgSFRNTFBsdWdJbkVsZW1lbnQqIHBsdQogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgUGx1Z2luTW9kdWxlQmxvY2tlZDoKLSAgICAgICAgaWYgKHBs
dWdpbkVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmplY3QoKSkKLSAgICAgICAgICAg
IHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSktPnNldFBs
dWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFJlbmRlckVtYmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBs
dWdpblZlcnNpb24pOworICAgICAgICBib29sIHJlcGxhY2VtZW50T2JzY3VyZWQgPSBmYWxzZTsK
KyAgICAgICAgaWYgKHBsdWdpbkVsZW1lbnQtPnJlbmRlcmVyKCktPmlzRW1iZWRkZWRPYmplY3Qo
KSkgeworICAgICAgICAgICAgUmVuZGVyRW1iZWRkZWRPYmplY3QqIHJlbmRlck9iamVjdCA9IHRv
UmVuZGVyRW1iZWRkZWRPYmplY3QocGx1Z2luRWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgICAg
ICAgICByZW5kZXJPYmplY3QtPnNldFBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uKFJlbmRlckVt
YmVkZGVkT2JqZWN0OjpJbnNlY3VyZVBsdWdpblZlcnNpb24pOworICAgICAgICAgICAgcmVwbGFj
ZW1lbnRPYnNjdXJlZCA9IHJlbmRlck9iamVjdC0+aXNSZXBsYWNlbWVudE9ic2N1cmVkKCk7Cisg
ICAgICAgIH0KIAotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEJsb2Nr
SW5zZWN1cmVQbHVnaW5WZXJzaW9uKHBhcmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJs
LnN0cmluZygpLCBmcmFtZVVSTFN0cmluZywgcGFnZVVSTFN0cmluZykpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKHBh
cmFtZXRlcnMubWltZVR5cGUsIHBhcmFtZXRlcnMudXJsLnN0cmluZygpLCBmcmFtZVVSTFN0cmlu
ZywgcGFnZVVSTFN0cmluZywgcmVwbGFjZW1lbnRPYnNjdXJlZCkpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>